(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-10-16
(54)【発明の名称】セルラーネットワークの動作方法
(51)【国際特許分類】
H04L 9/08 20060101AFI20241008BHJP
H04L 9/14 20060101ALI20241008BHJP
H04W 12/03 20210101ALI20241008BHJP
H04W 12/041 20210101ALI20241008BHJP
【FI】
H04L9/08 C
H04L9/14
H04W12/03
H04W12/041
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024518795
(86)(22)【出願日】2022-09-26
(85)【翻訳文提出日】2024-04-11
(86)【国際出願番号】 EP2022076630
(87)【国際公開番号】W WO2023046944
(87)【国際公開日】2023-03-30
(32)【優先日】2021-09-27
(33)【優先権主張国・地域又は機関】EP
(32)【優先日】2021-10-07
(33)【優先権主張国・地域又は機関】EP
(32)【優先日】2021-10-28
(33)【優先権主張国・地域又は機関】EP
(32)【優先日】2021-11-17
(33)【優先権主張国・地域又は機関】EP
(32)【優先日】2021-11-18
(33)【優先権主張国・地域又は機関】EP
(32)【優先日】2021-11-23
(33)【優先権主張国・地域又は機関】EP
(32)【優先日】2022-02-03
(33)【優先権主張国・地域又は機関】EP
(32)【優先日】2022-02-11
(33)【優先権主張国・地域又は機関】EP
(32)【優先日】2022-02-20
(33)【優先権主張国・地域又は機関】EP
(32)【優先日】2022-02-23
(33)【優先権主張国・地域又は機関】EP
(32)【優先日】2022-08-22
(33)【優先権主張国・地域又は機関】EP
(81)【指定国・地域】
(71)【出願人】
【識別番号】590000248
【氏名又は名称】コーニンクレッカ フィリップス エヌ ヴェ
【氏名又は名称原語表記】Koninklijke Philips N.V.
【住所又は居所原語表記】High Tech Campus 52, 5656 AG Eindhoven,Netherlands
(74)【代理人】
【識別番号】110001690
【氏名又は名称】弁理士法人M&Sパートナーズ
(72)【発明者】
【氏名】ガルシア モーション オスカー
【テーマコード(参考)】
5K067
【Fターム(参考)】
5K067AA21
5K067DD11
5K067EE02
5K067EE25
5K067HH22
5K067HH36
(57)【要約】
本発明は、通信システムを動作させる方法に関し、方法は、a.ユーザが中継に必要とするサービスのタイプを示す中継サービスコードと、中継局との通信に使用されるべき通信鍵または通信鍵の指標との組み合わせを含むメッセージを第1の局が準備するステップと、b.少なくとも機密性鍵およびフレッシュネス値に鍵導出関数を適用することによって、第1の局が鍵ストリームを生成するステップと、c.第1の局が鍵ストリームを使用してメッセージを暗号化するステップとを含む。
【特許請求の範囲】
【請求項1】
第1の局および第2の局を含む通信システム内の前記第1の局を動作させる方法であって、前記方法は、
a.サービスのタイプを示すパラメータと、前記第2の局との通信に使用されるべき通信鍵または通信鍵の指標との組み合わせを少なくとも含むメッセージを前記第1の局が準備するステップと、
b.少なくとも機密性鍵およびフレッシュネス値に鍵導出関数を適用することによって鍵ストリームを生成するためのアルゴリズムを前記第1の局が実行するステップと、
c.前記第1の局が前記鍵ストリームを使用して前記メッセージを暗号化するステップとを含む、方法。
【請求項2】
ステップb.は、少なくとも機密性鍵、フレッシュネス値、および前記メッセージに、鍵導出関数を適用することによって、前記鍵ストリームを生成するステップを含む、請求項1に記載の方法。
【請求項3】
ステップc.は、前記メッセージおよび前記鍵ストリームに排他的論理和(XOR)演算を適用するステップを含む、請求項1または2に記載の方法。
【請求項4】
前記フレッシュネス値は、UTCに基づく時間値である、請求項1から3のいずれか一項に記載の方法。
【請求項5】
前記第1の局が、前記メッセージのためのメッセージ完全性チェックを計算するステップをさらに含む、請求項1から4のいずれか一項に記載の方法。
【請求項6】
前記メッセージ完全性チェックは、ステップc.の前に前記メッセージに含められる、請求項5に記載の方法。
【請求項7】
ステップb.は、少なくとも機密性鍵、フレッシュネス値、前記メッセージ、および前記メッセージのMICに、鍵導出関数を適用することによって、前記鍵ストリームを生成するステップを含む、請求項5または6に記載の方法。
【請求項8】
ステップb.は、所定のポリシーに従って、複数の利用可能な鍵から機密性鍵を選択するステップを含む、請求項1から7のいずれか一項に記載の方法。
【請求項9】
DUCKが設定される場合、前記機密鍵はDUCKであり、さもなければ、DUSKが設定されている場合、前記機密鍵はDUSKである、請求項8に記載の方法。
【請求項10】
前記DUCKが設定される場合、前記鍵ストリームは暗号化アルゴリズムを適用することによって取得され、前記DUCKが設定されていないが、前記DUSKが設定されている場合、前記鍵ストリームはスクランブルアルゴリズムを適用することによって取得される、請求項9に記載の方法。
【請求項11】
前記機密性鍵が設定されていない場合、ステップa.の前記メッセージはステップc.において暗号化されない、請求項9または10に記載の方法。
【請求項12】
前記鍵ストリームは、設定されている前記機密鍵に関係なく、単一のアルゴリズムを適用することによって取得される、請求項1から9のいずれか一項に記載の方法。
【請求項13】
前記第1の局が、完全性鍵を使用して前記メッセージのためのメッセージ完全性チェックを計算するステップをさらに含み、前記完全性鍵は、前記選択された機密性鍵と同じである、請求項8、9、または10に記載の方法。
【請求項14】
ステップb.は、鍵導出関数を適用して第2の機密性鍵を取得するステップを含み、前記鍵ストリームは、対称暗号化アルゴリズムに前記第2の機密性鍵を適用することによって取得される、請求項1から13のいずれか一項に記載の方法。
【請求項15】
前記対称暗号化アルゴリズムは、前記コアネットワークによって選択されるか、以前の動作フェーズ中にネゴシエーションされたか、または前記メッセージ内で通知されるNEAアルゴリズムである、請求項14に記載の方法。
【請求項16】
前記サービスのタイプを示す前記パラメータは、リレーサービスコードである、請求項1から15のいずれか一項に記載の方法。
【請求項17】
第2の局をさらに含む通信システム内で動作する第1の局であって、前記第1の局は、
送信機と、
受信機と、
命令を含むメモリに結合されたプロセッサとを備え、前記命令は、
前記サービスのタイプを示すパラメータと、前記第2の局との通信に使用されるべき通信鍵または通信鍵の指標との組み合わせを含むメッセージを準備するステップと、
少なくとも機密性鍵およびフレッシュネス値に鍵導出関数を適用することによって鍵ストリームを生成するためのアルゴリズムを実行するステップと、
前記鍵ストリームを用いて前記メッセージを暗号化するステップとを実行するための命令である、第1の局。
【請求項18】
第1の局をさらに含む通信システム内で動作する第2の局であって、前記第2の局は、
送信機と、
受信機と、
命令を含むメモリに結合されたプロセッサとを備え、前記命令は、
暗号化されたメッセージを受信するステップと、
少なくとも機密性鍵およびフレッシュネス値に鍵導出関数を適用することによって鍵ストリームを生成するためのアルゴリズムを実行するステップと、
前記鍵ストリームを用いて前記メッセージを復号するステップとを実行するための命令である、第2の局。
【請求項19】
請求項17に記載の第1の局と、請求項18に記載の第2の局とを含む、システム。
【請求項20】
通信システムにおいて、第1の局が第2の局にメッセージを送信するための方法であって、前記方法は、
a.前記第1の局が、メッセージに基づいてMIC(メッセージ完全性チェック)を計算するステップと、
b.前記第1の局が、前記MICを前記メッセージと組み合わせるステップと、
c.少なくとも前記MICに基づいて鍵ストリームを計算するステップと、
d.前記第1の局が、前記鍵ストリームに基づくキーワードを使用して前記メッセージを暗号化し、暗号を取得するステップとを含む、方法。
【請求項21】
ステップd.から得られた前記暗号の一部をスクランブルするステップeをさらに含む、請求項20に記載の方法。
【請求項22】
前記MICは、前記鍵ストリームの前記計算において前記メッセージのフィンガープリントとして使用される、請求項20に記載の方法。
【請求項23】
前記キーワードは、前記鍵ストリームと暗号化鍵マスクとの組み合わせである、請求項20、21、または22に記載の方法。
【請求項24】
前記組み合わせはAND演算である、請求項23に記載の方法。
【請求項25】
通信システムにおいて第1の局を動作させる方法であって、前記方法は、
a.前記第1の局が、長さLバイトのディスカバリメッセージを準備するステップと、
b.前記第1の局が、サイズBバイトの鍵導出関数をCeiling(L/B)回適用するか、またはNEAアルゴリズムを適用することによって、出力サイズがLバイトの疑似乱数列を生成するステップであって、前記疑似乱数列は、少なくとも機密性鍵、フレッシュネス値、およびカウンタ値に依存する、ステップと、
c.前記第1の局が前記疑似乱数列を使用して前記メッセージを暗号化するステップとを含む、方法。
【請求項26】
前記鍵導出関数への入力は、マスクと、前記メッセージおよびMICの連結とにビットごとの「AND」関数を適用した結果を含む、請求項25に記載の方法。
【請求項27】
前記鍵導出関数または前記NEAアルゴリズムへの入力は、マスクの関数、メッセージの関数、またはMICの関数を少なくとも含む、請求項25または26に記載の方法。
【請求項28】
前記メッセージは、メッセージ長を示すか、または、暗号化動作を調整するための任意選択のフィールドの存在を示すマスクを示す、請求項25、26、または27に記載の方法。
【請求項29】
請求項26から28のいずれか一項に記載の方法に従って動作する第1の局と、第2の局とを含むシステムを動作させるための方法であって、前記第2の局は、
a.ディスカバリメッセージを受信するステップと、
b.生成された前記疑似乱数列の最初の部分を使用することによって、前記ディスカバリメッセージの最初の部分をスクランブル解除および/または復号するステップと、
c.前記ディスカバリメッセージの前記最初の部分のMICを用いて前記ディスカバリメッセージの前記最初の部分の完全性を検証するステップと、
d.前記ディスカバリメッセージの前記最初の部分の完全性チェックが成功した場合、および/または前記ディスカバリメッセージの前記最初の部分のフィールドが前記ディスカバリメッセージの2番目の部分の存在を示す場合、生成された前記疑似乱数列の第2の部分を使用して、前記ディスカバリメッセージの前記2番目の部分をスクランブル解除および/または復号するステップとを実行する、方法。
【請求項30】
受信した前記メッセージのスクランブル/暗号化された前記2番目の部分のハッシュが、前記ディスカバリメッセージの前記最初の部分内に含まれ、かつ前記最初の部分内で検証されるハッシュ値と一致する場合、受信した前記ディスカバリメッセージの前記第2の部分がスクランブル解除および/または復号される、請求項29に記載の方法。
【請求項31】
ステップaは、前記メッセージ、および利用可能な場合はDUIK(完全性鍵)に基づいてMICを計算するステップを含み、ステップaは、前記DUIKが設定されていない場合、前記MICをランダムな値に設定するステップを含む、請求項20または27に記載の方法。
【請求項32】
前記鍵ストリームは、NEAアルゴリズムを用いて計算される、請求項20、23、24、26、27、29、31に記載の方法。
【請求項33】
前記NEAアルゴリズムにおける32ビットカウントが、前記UTCベースのカウンタ値に設定され、BEARERフィールド値がBEARER=0000に設定され、DIRECTIONフィールド値が0に設定される、請求項32に記載の方法。
【請求項34】
前記ディスカバリメッセージの保護は、まず前記メッセージの最初の部分に適用され、その後、前記メッセージの前記2番目の部分に適用され、前記メッセージの前記最初の部分および前記メッセージの前記2番目の部分の保護は互いに異なる、請求項20、23、24、25、26、28、31、32、および33に記載の方法。
【請求項35】
通信システム内で動作する第1の局であって、前記第1の局は、
送信機と、
受信機と、
命令を含むメモリに結合されたプロセッサとを備え、前記命令は、
a.前記第1の局が、メッセージに基づいてMIC(メッセージ完全性チェック)を計算するステップと、
b.前記第1の局が、前記MICを前記メッセージと組み合わせるステップと、
c.少なくとも前記MICに基づいて鍵ストリームを計算するステップと、
d.前記第1の局が、前記鍵ストリームに基づくキーワードを使用して前記メッセージを暗号化し、暗号を取得するステップとを実行するための命令である、第1の局。
【請求項36】
通信システム内で動作する第1の局であって、前記第1の局は、
送信機と、
受信機と、
命令を含むメモリに結合されたプロセッサとを備え、前記命令は、
長さLバイトのディスカバリメッセージを準備するステップと、
サイズBバイトの鍵導出関数をCeiling(L/B)回適用するか、またはNEAアルゴリズムを適用することによって、出力サイズがLバイトの疑似乱数列を生成するステップであって、前記疑似乱数列は、少なくとも機密性鍵、フレッシュネス値、およびカウンタ値に依存する、ステップと、
前記疑似乱数列を用いて前記メッセージを暗号化するステップとを実行するための命令である、第1の局。
【請求項37】
通信システム内で動作する第2の局であって、前記第2の局は、
送信機と、
受信機と、
命令を含むメモリに結合されたプロセッサとを備え、前記命令は、
第2の局が、暗号化されたメッセージ、MIC(メッセージ完全性チェック)を受信するステップと、
前記第2の局が、前記MICに基づくキーワードを取得するステップと、
前記第2の局が、取得した前記キーワードを使用して、前記暗号化されたメッセージを復号するステップと、
前記第2の局が、受信した前記MICが有効であるか否かをチェックすることで、前記メッセージの完全性をチェックするステップとを実行するための命令である、第2の局。
【請求項38】
請求項35に記載の第1の局と、請求項37に記載の第2の局とを備えた、システム。
【請求項39】
無線デバイス上にロードされたとき、前記無線デバイスに請求項1から16、または20から34に記載の方法のステップを実行させるコードを備えた、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は無線通信の分野に関し、特に、UMTS LTE(Long Term Evolution)もしくはLTE Advanced(両方とも4Gに含まれる)、NR(New Radio)(5G)、または他のセルラーネットワークもしくは移動通信ネットワークのようなセルラーネットワークの環境におけるセキュリティ側面に関する。
【背景技術】
【0002】
従来のセルラーネットワークでは、一次局は、自身がサービスを提供するセル内に位置する複数の二次局にサービスを提供する。一次局から各二次局への無線通信はダウンリンクチャネル上で行われる。逆に、各二次局から一次局への無線通信はアップリンクチャネル上で行われる。無線通信は、データトラフィック(ユーザデータとも呼ばれる)および制御情報(シグナリングとも呼ばれる)を含むことができる。この制御情報は通常、一次局および/または二次局がデータトラフィックを交換するのを補助する情報(例えば、リソース割り当て/リクエスト、物理的伝送パラメータ、各局の状態に関する情報)を含む。
【0003】
3GPP(登録商標)によって標準化されたセルラーネットワークの環境では、一次局は基地局と呼ばれるか、または5G(NR)ではgNodeB(またはgNB)もしくは4G(LTE)ではeNodeB(またはeNB)と呼ばれる。eNB/gNBは、コアネットワーク(CN)の機能とのインターフェースである無線アクセスネットワークRANの一部である。同じ環境において、二次局は移動局、または4G/5Gのユーザ機器(またはUE)に対応する。UEは、無線クライアントデバイスまたはそのようなデバイスが果たす特定のロール(役割)である。UEまたはgNB/eNBを表すのに「ノード」という用語も使用される。
【0004】
さらに、例えば、PC5インターフェースまたはサイドリンク通信の場合、二次局、ここではUE間で直接通信を行うことができる。また、その場合、UEがリレーとして動作して、例えばカバレッジ外のUEがeNBまたはgNBへの中間 (または間接的)接続を得ることができるようにすることも可能である。リレーとして機能できるようにするために、UEは発見(discovery)メッセージを使用して他のUEとの新しい接続を確立する可能性がある。
【0005】
したがって、
図1に示すような中継ノードの役割が3GPP(登録商標)に導入された。この中継ノード120は、一次局100、例えばgNBと二次局110、例えばUEとの間の通信を中継する機能を含む無線通信局120である。この中継機能により、例えば、セル10のカバレッジをカバレッジ外(OoC)二次局110まで拡張することが可能になる。この中継ノード120は、移動局であってもよいし、または異なるタイプのデバイスであってもよい。4G用の仕様では、ProSe(Proximity Services)機能が、とりわけ、TS23.303およびTS24.334で定義されている。これらの機能は、とりわけ、セル10にサービスを提供するセルラーネットワーク基地局(eNB)100のカバレッジ外に一時的にあるセルラーユーザ機器(UE)110の接続を有効にする。この特定の機能は、ProSe UE-to-networkリレー、または略してリレーUEと呼ばれる。リレーUE120は、OoC UE110とeNB100との間の双方向でアプリケーションおよびネットワークトラフィックを中継する。リレーUE120とOoC UE110との間のローカル通信は、TS23.303およびTS24.334では、D2D(device-to-device)通信またはサイドリンク(PC5とも呼ばれる)通信と呼ばれる。リレー関係が確立されると、OoC-UE110は、例えば、リレーUE120を介してIP接続され、「リモートUE」110の役割を果たす。この状況は、通常のケースである、全てのコアネットワーク機能への直接ネットワーク接続とは異なり、リモートUEがコアネットワークの選択された機能への間接ネットワーク接続を有することを意味する。
【0006】
さらに、UE間中継ノード、すなわち、2つのUEデバイス間の通信を中継する中継ノードの役割が導入されている。これは
図3に示されている通りであり、中継ノード1010がUEデバイス1020とUEデバイス1030との間の通信を中継する。UE1010、1020、1030は、基地局1000を介してコアネットワークに接続することができる。
【0007】
後で詳しく説明するように、技術仕様TS33.303およびこれまでに提案されているソリューションでは、TS33.303の以前のバージョンで既に導入されている方法に変更を加えて、すなわち、スクランブルされるメッセージの部分、メッセージ識別コード(MIC)が計算される方法、どのMIC値が送信されるか、および機密性保護を達成する方法に変更を加えて再利用することにより、PC5インターフェースを介したディスカバリメッセージを保護することが説明されている。しかし、現在提案されているソリューションは攻撃を受けやすく、ディスカバリに関与する様々なノードの完全性が保証されていない。さらに、TS33.303の既存のソリューションは、長いディスカバリメッセージ、例えば32バイトを超えるメッセージを保護することができない。
【0008】
後で詳しく説明するように、技術仕様TS33.303およびこれまでに提案されたソリューションでは、PC5インターフェースを介した直接通信リクエストメッセージの保護について記載されている。しかし、現在提案されているソリューションは相互運用性に欠けており、複雑さが高すぎる。
【発明の概要】
【0009】
本発明の1つの目的は、上記問題を軽減することである。
【0010】
本発明の別の目的は、二次局のためにプロトコルデータユニット(PDU)セッションを確立するための安全なセットアップを可能にするネットワーク内で通信する方法を提案することである。
【0011】
本発明のさらに別の目的は、ディスカバリメッセージの保護を改善することである。
【0012】
本発明のさらに別の目的は、発見通信リクエスト(DCR)メッセージの保護を改善することである。
【0013】
本発明のさらに別の目的は、動作開始後のコアネットワークとのインタラクションを最小限に抑えるネットワーク内で二次局が通信するための方法を提案することである。
【0014】
本発明の様々な態様によれば、セキュリティルーチンを動作可能に機能させるために、並びにセキュリティ/プライバシー保護およびパフォーマンスを向上させるために、セキュリティルーチンにいくつかの変更を加えることが提案される。
【0015】
この目的を達成するために、本発明の第1の態様によれば、請求項1に記載の第1の局を動作させる方法が提案される。より具体的には、第1の局および第2の局を含む通信システム内の第1の局を動作させる方法が提案され、方法は、
a.サービスのタイプを示すパラメータと、第2の局との通信に使用されるべき通信鍵または通信鍵の指標との組み合わせを少なくとも含むメッセージを第1の局が準備するステップと、
b.少なくとも機密性鍵およびフレッシュネス値に鍵導出関数を適用することによって鍵ストリームを生成するためのアルゴリズムを第1の局が実行するステップと、
c.第1の局が鍵ストリームを使用してメッセージを暗号化するステップとを含む、方法。
【0016】
本発明の第1の変形例では、ステップb.は、少なくとも機密性鍵、フレッシュネス値、およびメッセージに鍵導出関数を適用することによって、鍵ストリームを生成するステップを含む。
【0017】
第1の変形例と組み合わせることができる第2の変形例では、ステップc.は、メッセージおよび鍵ストリームに排他的論理和(XOR)演算を適用するステップを含む。
【0018】
上記提案の全てにおいて、フレッシュネス値は、UTC(協定世界時)に基づく時間値であってもよい。
【0019】
さらに、第1の態様またはその変形のいずれかと組み合わせることができる第4の変形では、方法は、第1の局がメッセージのためのメッセージ完全性チェックを計算することを含む。
【0020】
この第4の変形例の一例では、メッセージ完全性チェックは、ステップc.の前にメッセージに含められ得る。また、ステップb.は、少なくとも機密性鍵、フレッシュネス値、メッセージ、およびメッセージのMICに鍵導出関数を適用することによって、鍵ストリームを生成するステップを含み得る。
【0021】
第1の態様の第5の変形例またはその変形例では、ステップb.は、所定のポリシーに従って、複数の利用可能な鍵から機密性鍵を選択するステップを含む。
【0022】
このような変形例では、(暗号化鍵である)DUCKが設定されている場合、機密鍵はDUCKであり、そうでないが、(スクランブル鍵である)DUSKが設定されている場合、機密鍵はDUSKであり得る。したがって、送信機および受信機は、どの鍵が設定され、合意されているかに応じて、どの鍵が使用されるべきかを知る。追加でまたは任意選択で、DUCKが設定されている場合、鍵ストリームは暗号化アルゴリズムを適用することによって取得され得、DUCKが設定されていないが、DUSKが設定されている場合、鍵ストリームはスクランブルアルゴリズムを適用することによって取得される得る。
【0023】
さらなる選択肢では、機密性が設定されていない(DUCKもDUSKも設定されていない)場合、ステップa.のメッセージはステップc.で暗号化されない。
【0024】
上記変形例のうちのいずれかと組み合わせることができる第6の変形例では、鍵ストリームは、設定されている機密鍵に関係なく、単一のアルゴリズムを適用することによって取得され得る。実際、どの鍵が設定されていたとしても、同じアルゴリズムを使用できる。このアルゴリズムは、設定または選択された鍵を区別なく使用する。
【0025】
本発明の第1の態様の第7の変形例では、方法は、第1の局が、完全性鍵を使用してメッセージのためのメッセージ完全性チェックを計算するステップをさらに含み、完全性鍵は、選択された機密性鍵と同じである。
【0026】
本発明の第1の態様の第8の変形例では、ステップb.は、鍵導出関数を適用して第2の機密性鍵を取得するステップを含み、鍵ストリームは、対称暗号化アルゴリズムに第2の機密性鍵を適用することによって取得される。
【0027】
第8の変形例のある選択肢では、対称暗号化アルゴリズムは、コアネットワークによって選択されるか、以前の動作フェーズ中にネゴシエーションされたか、またはメッセージ内で通知されるNEAアルゴリズムである。
【0028】
上記変形例のいずれかと組み合わせることができる第1の態様の第9の変形例では、サービスのタイプを示すパラメータは、リレーサービスコードである。
【0029】
本発明の第2の態様によれば、第2の局をさらに含む通信システムにおいて動作するための請求項17に記載の第1の局が提案され、第1の局は、
送信機と、
受信機と、
命令を含むメモリに結合されたプロセッサとを備え、命令は、
サービスのタイプを示すパラメータと、第2の局との通信に使用されるべき通信鍵または通信鍵の指標との組み合わせを含むメッセージを準備するステップと、
少なくとも機密性鍵およびフレッシュネス値に鍵導出関数を適用することによって鍵ストリームを生成するためのアルゴリズムを実行するステップと、
鍵ストリームを用いてメッセージを暗号化するステップとを実行するための命令である。
【0030】
本発明の第3の態様によれば、第1の局をさらに含む通信システムにおいて動作するための請求項18に記載の第2の局が提案され、第2の局は、
送信機と、
受信機と、
命令を含むメモリに結合されたプロセッサとを備え、命令は、
暗号化されたメッセージを受信するステップと、
少なくとも機密性鍵およびフレッシュネス値に鍵導出関数を適用することによって鍵ストリームを生成するためのアルゴリズムを実行するステップと、
鍵ストリームを用いてメッセージを復号するステップとを実行するための命令である。
【0031】
第1の態様の様々な変形例は、本発明の第2および第3の態様にも等しく適用されることに留意されたい。
【0032】
本発明の第4の態様では、請求項19に記載のシステムが提案される。
【0033】
本発明の第5の態様では、通信システムにおいて、第1の局が第2の局にメッセージを送信するための請求項20に記載の方法が提案され、方法は、
a.第1の局が、メッセージに基づいてMIC(メッセージ完全性チェック)を計算するステップと、
b.第1の局が、MICをメッセージと組み合わせるステップと、
c.少なくともMICに基づいて鍵ストリームを計算するステップと、
d.第1の局が、鍵ストリームに基づくキーワードを使用してメッセージを暗号化し、暗号を取得するステップとを含む。
【0034】
本発明の第5の態様の第1の変形例では、方法は、ステップd.から得られた暗号の一部をスクランブルするステップeをさらに含む。
【0035】
本発明の第5の態様の第2の変形例では、MICは、鍵ストリームの計算においてメッセージのフィンガープリントとして使用される。
【0036】
他の変形例から独立して、または他の変形例と組み合わせて使用され得る、本発明の第5の態様の第3の変形では、キーワードは、鍵ストリームと暗号化鍵マスクとの組み合わせである。任意選択で、組み合わせはAND演算である。
【0037】
本発明の第6の態様では、通信システムにおいて第1の局を動作させる方法が提案され、方法は、
a.第1の局が、長さLバイトのディスカバリメッセージを準備するステップと、
b.第1の局が、サイズBバイトの鍵導出関数をCeiling(L/B)回適用するか、またはNEAアルゴリズムを適用することによって、出力サイズがLバイトの疑似乱数列を生成するステップであって、疑似乱数列は、少なくとも機密性鍵、フレッシュネス値、およびカウンタ値に依存する、ステップと、
c.第1の局が疑似乱数列を使用してメッセージを暗号化するステップとを含む。
【0038】
本発明の第6の態様の第1の変形例では、鍵導出関数への入力は、マスクと、メッセージおよびMICの連結とにビットごとの「AND」関数を適用した結果を含む。
【0039】
第1の変形例と組み合わせることができる第2の変形例では、鍵導出関数またはNEAアルゴリズムの入力は、マスクの関数、メッセージの関数、またはMICの関数を少なくとも含む。
【0040】
第1または第2の変形例と組み合わせることができる第3の変形例では、メッセージは、メッセージ長を示すか、または、暗号化動作を調整するための任意選択のフィールドの存在を示すマスクを示す。
【0041】
本発明の第7の態様では、第6の態様の方法に従って動作する第1の局と、第2の局とを含むシステムを動作させる方法が提案され、第2の局は、
a.ディスカバリメッセージを受信するステップと、
b.生成された疑似乱数列の最初の部分を使用することによって、ディスカバリメッセージの最初の部分をスクランブル解除および/または復号するステップと、
c.ディスカバリメッセージの最初の部分のMICを用いてディスカバリメッセージの最初の部分の完全性を検証するステップと、
d.ディスカバリメッセージの最初の部分の完全性チェックが成功した場合、および/またはディスカバリメッセージの最初の部分のフィールドがディスカバリメッセージの2番目の部分の存在を示す場合、生成された疑似乱数列の第2の部分を使用して、ディスカバリメッセージの2番目の部分をスクランブル解除および/または復号するステップとを実行する。
【0042】
第7の態様の第1の変形例では、受信したメッセージのスクランブル/暗号化された2番目の部分のハッシュが、ディスカバリメッセージの最初の部分内に含まれ、かつ最初の部分内で検証されるハッシュ値と一致する場合、受信したディスカバリメッセージの第2の部分がスクランブル解除および/または復号される。
【0043】
本発明の第5または6の態様の一変形例では、ステップaは、メッセージ、および利用可能な場合はDUIK(完全性鍵)に基づいてMICを計算するステップを含み、ステップaは、DUIKが設定されていない場合、MICをランダムな値に設定するステップを含む。任意選択で、鍵ストリームはNEAアルゴリズムを使用して計算される。
【0044】
追加で、NEAアルゴリズムにおける32ビットカウントが、UTCベースのカウンタ値に設定され得、BEARERフィールド値がBEARER=0000に設定され、DIRECTIONフィールド値が0に設定される。
【0045】
第5または第6の態様の一選択肢では、ディスカバリメッセージの保護は、まずメッセージの最初の部分に適用され、その後、メッセージの2番目の部分に適用され、メッセージの最初の部分およびメッセージの2番目の部分の保護は互いに異なる。
【0046】
本発明の第8の態様では、通信システムにおいて動作する第1の局が提案され、第1の局は、
送信機と、
受信機と、
命令を含むメモリに結合されたプロセッサとを備え、命令は、
a.第1の局が、メッセージに基づいてMIC(メッセージ完全性チェック)を計算するステップと、
b.第1の局が、MICをメッセージと組み合わせるステップと、
c.少なくともMICに基づいて鍵ストリームを計算するステップと、
d.第1の局が、鍵ストリームに基づくキーワードを使用してメッセージを暗号化し、暗号を取得するステップとを実行するための命令である。
【0047】
本発明の第9の態様では、通信システムにおいて動作する第1の局が提案され、第1の局は、
送信機と、
受信機と、
命令を含むメモリに結合されたプロセッサとを備え、命令は、
長さLバイトのディスカバリメッセージを準備するステップと、
サイズBバイトの鍵導出関数をCeiling(L/B)回適用するか、またはNEAアルゴリズムを適用することによって、出力サイズがLバイトの疑似乱数列を生成するステップであって、疑似乱数列は、少なくとも機密性鍵、フレッシュネス値、およびカウンタ値に依存する、ステップと、
疑似乱数列を用いてメッセージを暗号化するステップとを実行するための命令である。
【0048】
本発明の第10の態様では、通信システムにおいて動作する第2の局が提案され、第2の局は、
送信機と、
受信機と、
命令を含むメモリに結合されたプロセッサとを備え、命令は、
第2の局が、暗号化されたメッセージ、MIC(メッセージ完全性チェック)を受信するステップと、
第2の局が、MICに基づくキーワードを取得するステップと、
第2の局が、取得したキーワードを使用して、暗号化されたメッセージを復号するステップと、
第2の局が、受信したMICが有効であるか否かをチェックすることで、メッセージの完全性をチェックするステップとを実行するための命令である。
【0049】
本発明の第11の態様では、システムは、本発明の第8の態様の第1の局と、本発明の第10の態様の第2の局とを備える。
【0050】
本発明の第12の態様では、無線デバイス上にロードされたとき、無線デバイスに第1に記載の方法のステップを実行させるコードを備えたコンピュータプログラム製品が提案される。
【0051】
本発明の第2の態様によれば、中継局を動作させる方法、および中継局が提案される。
【0052】
本発明の第3の態様によれば、二次局を動作させる方法、および二次局が提案される。
【0053】
本発明の第4の態様によれば、コンピュータデバイス上で実行されたとき、本発明の第1、第4、第5、第6、または第7の態様の方法のステップを生成するためのコード手段を含むコンピュータプログラム製品が提案される。
【0054】
上記の各装置は、個別のハードウェアコンポーネント、集積チップ、またはチップモジュール構成を有する個別のハードウェア回路に基づいて実装されるか、または、メモリに格納されているか、コンピュータ可読媒体上に書き込まれているか、もしくはインターネットなどのネットワークからダウンロードされたソフトウェアルーチンもしくはプログラムによって制御される信号処理デバイスもしくはチップに基づいて実装され得ることに留意されたい。
【0055】
無線デバイス、システム、中継局、基地局(cell station)、および方法は、特に従属請求項に記載されているような、類似した、対応する、および/または同一の好ましい実施形態を有し得ることを理解されたい。
【0056】
本発明の好ましい実施形態は、従属請求項又は上記実施形態と独立請求項との任意の組み合わせとすることもできることを理解されたい。
【0057】
本発明の上記および他の態様は、以下に記載される実施形態を参照しながら説明され、明らかになるであろう。
【0058】
上記の各装置は、個別のハードウェアコンポーネント、集積チップ、またはチップモジュール構成を有する個別のハードウェア回路に基づいて実装されるか、または、メモリに格納されているか、コンピュータ可読媒体上に書き込まれているか、もしくはインターネットなどのネットワークからダウンロードされたソフトウェアルーチンもしくはプログラムによって制御される信号処理デバイスもしくはチップに基づいて実装され得ることに留意されたい。
【0059】
局、本発明の様々な態様の方法、コンピュータプログラム製品、およびシステムは、特に従属請求項に記載されているような、類似した、および/または同一の好ましい実施形態を有し得ることを理解されたい。
【0060】
本発明の上記および他の態様は、以下に記載される実施形態を参照しながら説明され、明らかになるであろう。
【図面の簡単な説明】
【0061】
【
図1】
図1は、既に説明したように、本発明が実装されるセルラーシステムを概略的に表す。
【
図2】
図2は、ディスカバリメッセージを概略的に表す。
【
図3】
図3は、本発明が実装される別のセルラーシステムを概略的に表す。
【発明を実施するための形態】
【0062】
以下の実施形態において、本発明の様々な態様を詳細に説明する。上記したように、本発明の実施形態は様々なタイプの無線通信に関連する可能性があり、特に無線ネットワークにアクセスしようとするデバイスの接続セットアップに関連する可能性がある。典型的な例は、おそらくはいくつかの中継ノードを含む、5Gネットワークなどのセルラーネットワークである。これらの中継ノードは、中継ノードとして動作できるサイドリンク対応UEなどのUEによって、または他のタイプのリピータによって実装されてもよい。
【0063】
この種のリレーを介した新しい接続を可能にするには、ディスカバリメッセージがリレーUEに送信されるか、またはリレーUEによって送信されるディスカバリフェーズが必要となる。この特定の例示的実施形態の1つの一般的な目的は、そのようなディスカバリメッセージの保護を強化することである。技術仕様TS33.303 v17.0.0のセクション6.1.3.4.3では、ディスカバリメッセージの保護について説明されている。制限付きディスカバリメッセージを保護するために使用される3つのタイプのセキュリティが列挙されており、詳細は以下の通りである。
【0064】
第一に、Open Discovery(小項6.1.3.3.1を参照)と同様に、MIC(メッセージ識別コード)を追加することによって完全性保護が提供される。MICは、受信されたDUIK(Discovery User Integrity Key)を使用して送信側UEで計算される。MICは、供給されたDUIKを使用して受信側UEでチェックされるか、またはDUIKを使用してProSe 機能(中継ノード)でチェックされ得る。
【0065】
2つ目は、特定のUEによって送信された複数のディスカバリメッセージ間に関連性がないことを保証する、すなわち、時間をかけてUEがトラッキングされるのを防ぐスクランブル保護である。DUSK(Discovery User Scrambling Key)と、ディスカバリスロットに関連付けられたUTCベースのカウンタとから、スクランブル鍵ストリームが計算される(計算の詳細については、6.1.3.4.3.5を参照)。
【0066】
最後に、ディスカバリメッセージの一部の機密性保護を提供するメッセージ固有機密性がある。これは、複数のUEが同じDUSKを使用する場合、またはUE発見が許可されている複数のUEのうちの一部からのディスカバリメッセージの一部を難読化することが望まれる場合に使用される。DUCK(Discovery User Confidentility Key)と、メッセージの内容と、ディスカバリスロットに関連付けられたUTCベースのカウンタとから、鍵ストリームが計算される(計算の詳細については、6.1.3.4.3.6を参照)。
【0067】
送信側UEおよび受信側UEに適用されるセキュリティ手順は、ProSe機能がコード送信セキュリティパラメータおよび/またはコード受信セキュリティパラメータを適切なUEに送信することによって制御される(すなわち、UEは完全性保護、スクランブル、およびメッセージ固有機密性の全てをサポートする必要がある)。ProSe制限付きディスカバリメッセージの完全性保護を実現するには、DUSKまたはDUIKのいずれかを提供する必要がある。DUCKを使用してメッセージ固有機密性が適用される場合、複数のメッセージが保護されるので、完全性保護のためにDUIKが必要である。ユースケースのタイプに応じたディスカバリユーザ鍵の組み合わせの例が、付録Gに記載されている。
【0068】
受信側では、照合を試みる前にスクランブル保護を解除する必要がある。メッセージ固有機密性を解除する演算は大量の計算を必要とするため、その前に行われる照合演算で偽陽性が発生する可能性は極めて最小限に抑えるべきである。この目的を達成するために、ProSe機能は、スクランブル解除後に照合できるディスカバリメッセージ内のビット数が少なくとも16であることを保証する必要がある(これにより、偽陽性の可能性が65,536分の1以下になる)。
【0069】
項6.1.3.4.3.2、Message Processing in the sending UEでは、ディスカバリメッセージを送信するUEは、メッセージを保護する方法を示すために、ProSe機能からコード送信セキュリティパラメータを受信する(セキュリティフローで説明されているように)。コード送信セキュリティパラメータはDUSKを含み得、DUIKを含み得る。コード送信セキュリティパラメータは、DUCKおよびEncrypted_bits_maskの両方を含み得る。
【0070】
ディスカバリメッセージを送信するUEは次のステップを実行する。
1.ディスカバリメッセージを形成する(例えば、プレフィックスのみが割り当てられている場合はサフィックスを追加する)。
2.DUIKが提供された場合はMICを計算し、そうでない場合はMICを全てゼロに設定する。
3.DUCKを受信した場合、メッセージ固有機密性をメッセージに追加する。
4.ステップ3の出力にMICを添付する。
5.DUSKを受信した場合、ステップ4の出力にスクランブルを追加する。
【0071】
項6.1.3.4.3.3、Protected message processing in the receiving UEでは、(セキュリティフローで説明されているように)ProSe機能から受信されるコード受信セキュリティパラメータを使用して、受信したディスカバリメッセージの保護方法がUEに示される。コード受信セキュリティパラメータは、DUSKを含み得、DUIK、またはMICチェックに照合レポートを使用すべきか否かの指示のいずれかを含み得る。ProSeクエリコードでは照合レポートの選択肢は許可されていない。コード受信セキュリティパラメータも、DUCKおよび対応するEncrypted_bits_maskの両方を含み得る。
【0072】
ディスカバリメッセージを受信するUEは次のステップを実行する。
1.DUSKが受信された場合、スクランブルを解除する(送信側UEのステップ5と同様に)。
2.メッセージ固有機密性を使用して暗号化されていないメッセージのビットが一致するか否かをチェックする。一致しない場合は中止する。
ディスカバリフィルタによって一致が示される一部のビットは、この段階でメッセージ固有機密性によって暗号化され得る。UEは、このステップの後に他のビットの一致を検索して、一致を見つける前に実行される処理の量を最小限に抑えてもよい。
3.DUCKが受信された場合、メッセージ固有機密性を解除する(送信側UEのステップ3と同様に)。
4.3で暗号化されていないビットの一致のみが見つかった場合、完全照合を行う。一致しない場合は中止する。
5.MICチェックが必要な場合、MICを直接チェックするか(ディスカバリフィルタセキュリティパラメータ内でDUIKが与えられた場合)、またはディスカバリフィルタセキュリティパラメータ内に示されている場合は照合レポートを介してチェックする。
【0073】
受信側UEが関心のあるメッセージのビットの完全性保護をスクランブル保護が提供する場合にのみ、(UEにおける、または照合レポートを介した)MICのチェックの要求を省略できる。このような完全性保護は、(1)与えられたDUSKが、受信機が一致するちょうど1つのProSeコードを保護する場合か、または(2)メッセージ固有機密性がProSeコードに適用されているが、メッセージ固有機密性を除去するためにDUSKが受信側UEに提供されておらず、全ての非暗号化ビットが、受信機が一致する固定値をとる場合にのみ、提供される。最初のケースでは、攻撃者がメッセージの一部を変更すると、照合が失敗する。2つ目のケースでは、攻撃者が非暗号化ビットを変更すると照合が失敗するが、暗号化ビットを変更しても、受信側UEはどのみちこれらのビットを無視するため、何も起こらない。後者の場合、受信側UEはMICのチェックに失敗した。
【0074】
項6.1.3.4.3.4、Integrity protection descriptionでは、送信側UEは以下を行う。
1.付録A.2のMIC計算関数を通過されるDUIK、メッセージ、および、UTCベースのカウンタから、出力ビットシーケンスを計算する。
2.関数の出力の4バイトを取得し、それをこのメッセージのMICの値として設定する。
【0075】
受信側UEまたはProSe関数は全く同じ手順を実行するが、さらに、計算されたMICと受信したMICとの比較も実行する。
【0076】
項6.1.3.4.3.5、scrambling descriptionでは、送信側UEは以下を行う。
1.このスクランブル計算のみを目的として、UTCベースのカウンタの4つのLSBをゼロに設定する。
2.鍵付きハッシュ関数を通過されるDUSKおよびUTCベースのカウンタ(ステップ1のように変更されたもの)からタイムハッシュビットシーケンスを計算する。
3.タイムハッシュビットシーケンスを、処理中のディスカバリメッセージ全体(MICを含む)とXORする。
【0077】
受信側UEは、処理中の受信メッセージに適用されることを除いて、全く同じ手順を実行する。
【0078】
項6.1.3.4.3.6、message-specific confidentiality descriptionでは、送信側UEは以下を行う。
1.Key_calc_mask=(Encrypted_bits_mask XOR 0xFF・・・FF)||0xFFFFFFFFを計算する
2.鍵ストリーム=KDF(DUCK,UTCベースのカウンタ,(Key_calc_mask AND(メッセージ||MIC)))を計算する。
3.メッセージ内へXOR(鍵ストリーム AND Encrypted_bits_mask)する。
【0079】
受信側UEは、処理中の受信したディスカバリメッセージに適用されることを除いて、全く同じ手順を実行する。
【0080】
後述するように上記手順におけるKDFは鍵導出関数(Key Derivation Function)を指す。
【0081】
また、MICの計算は次のように定義することが提案される。
【表1】
【0082】
この例でのディスカバリ用のスクランブルビットの計算はA.5の通りである。
【表2】
【0083】
この例では、メッセージ固有機密性の計算はTS33.303のA.6と同様である。
【表3】
【0084】
メッセージの長さ||MICは0x1B=16+11=27バイト。これは、E.5.2.2.27で定義されているように、MICが4バイトでKey_calc_maskの長さが23バイトであるという事実に適合する。
【0085】
TS33.303に記載されているように、ディスカバリメッセージの後に交換される直接通信リクエスト(DCR)メッセージ内の内容は保護されない。これらの手順を簡略化するために、およびプライバシー保護を強化するために、DUCKまたはDUSKを再利用して、ディスカバリフェーズ後の直接通信リクエスト内で送信されるPRUK IDおよびRSCを保護することが提案されている。このような場合、コード受信セキュリティパラメータを使用して、DCRメッセージ内のRSCおよびPRUK IDを保護することができる。したがって、この提案では、リモートUEは次のように動作する必要がある。
「- リモートUEにDUCKが提供されている場合、
1.メッセージ=RSC||PRUK IDを形成する
2.Key_calc_mask=(Encrypted_bits_mask XOR 0xFF・・・FF)||0xFFFFFFFFを計算する
3.鍵ストリーム=KDF(DUCK,UTCベースのカウンタ,(Key_calc_mask AND Message))(小項6.Y.2.3を参照)を計算する。
4.メッセージ内へXOR(Keystream AND Encrypted_bits_mask)する。
【0086】
- リモートUEにDUSKが提供されている場合、
1.このスクランブル計算のみを目的として、UTCベースのカウンタの4つのLSBをゼロに設定する。
2.6.Y.2.4に記載されている鍵付きハッシュ関数を通過される、DUSK(Discovery User Scrambling Key)およびUTCベースのカウンタ(ステップ1のように変更されたもの)からタイムハッシュビットシーケンスを計算する。
3.タイムハッシュビットシーケンスを、処理中のRSCおよびPRUK IDとXORする。
【0087】
UEからネットワークへのリレーは、受信したDCRからRSCおよびPRUK IDを回収するために次を行う。
- U2NリレーUEにDUCKが提供されている場合、
1.メッセージ=受信したDCRメッセージ内の保護された(RSC||PRUK ID)の一部、を形成する。
2.Key_calc_mask=(Encrypted_bits_mask XOR 0xFF・・・FF)を計算する
3.鍵ストリーム=KDF(DUCK,UTCベースのカウンタ,(Key_calc_mask AND (Message)))(小項6.Y.2.3を参照)を計算する。
4.メッセージ内へXOR(Keystream AND Encrypted_bits_mask)する。
【0088】
- U2NリレーにDUSKが提供されている場合、
1.このスクランブル計算のみを目的として、UTCベースのカウンタの4つのLSBをゼロに設定する。
2.6.Y.2.4に記載されている鍵付きハッシュ関数を通過される、DUSK(Discovery User Scrambling Key)およびUTCベースのカウンタ(ステップ1のように変更されたもの)からタイムハッシュビットシーケンスを計算する。
3.タイムハッシュビットシーケンスを、受信されたDCR内のRSCおよびPRUK IDのスクランブルされた部分とXORする。
【0089】
ディスカバリ鍵は、TS33.303 v17.0.0A.8で説明されているようにPDSKから生成される。
【0090】
『PSDKからDUSK、DUCK、またはDUIKを計算するとき、TS33.220[5]の付録Bに記載されているKDFへの入力Sを形成するために次のパラメータが使用される。
- FC=0x4F
- P0=DUSKが導出されている場合は0x00、DUCKが導出されている場合は0x01、DUIKが導出されている場合は0x02
- L0=P0の長さ(すなわち、0x00 0x01)
- P1=アルゴリズムID
- L1=アルゴリズムIDの長さ(すなわち、0x00 0x01)
【0091】
アルゴリズムIDは0x00に設定される。今後のリリースでは、他の値が定義される可能性がある。
【0092】
入力鍵は256ビットPSDKである。
【0093】
長さnビットのアルゴリズム鍵(ここで、nは256以下)の場合、KDF出力の256ビットの最下位nビットがアルゴリズム鍵として使用される。」
【0094】
上記実施形態で説明した鍵導出関数(KDF)は、付録B.2のTS33.220 v17.0.0で定義されている。鍵Kを有する入力ビット列SのKDF、すなわちKDF(K,S)はHMAC-SHA-256(K,S)と同等であり、ここで、SHA-256は、HMAC構築において使用されるハッシュ関数である。ビット列Sは、TS33.220で説明されているように、複数のパラメータparam1、param2、・・・、paramNから構築され、これらのパラメータは割り当てられた長さで連結され、KDFの具体的用途のための一意の識別子FCが含まれる。KDF(K,S)と表す代わりに、KDF(K,param1,param2,・・・,paramN)と表される場合もあり、ここで、ビット列Sはフィールドparam1、param2、以下同で構築されることを理解されたい。
【0095】
完全性、機密性、およびスクランブル用の上記の様々な鍵(それぞれ、DUIK、DUCK、およびDUSK)は、TS33.303の付録Gで説明されているように組み合わせて定義することができる。より具体的には、様々な組み合わせを以下の表に示す。この表には、制限付きディスカバリおよびパブリックセーフティディスカバリ用に可能な様々なセキュリティ機構の組み合わせについて、提供されるセキュリティと、サンプルユースケースとが詳細に示されている。この表は、制限付きディスカバリまたはパブリックセーフティディスカバリに関してUEがサポートするセキュリティ機構の組み合わせを制限するものではない。
【表4】
【0096】
「送信側UE」の列は、制限付きディスカバリの場合には、送信側UEが知る必要がある鍵を表し、またはパブリックセーフティディスカバリの場合には、PKMFによる使用のために知らせる必要がある鍵を表す。「受信側」の列は、(ProSe機能MICチェックが必要な場合(DUIKが受信側UEのHPLMN内のProSe機能にて保持されている場合)を除き)制限付きディスカバリのために受信側UEに送信する必要がある鍵、またはPKMFによる使用のために知らせる必要がある鍵を示す。「提供されるセキュリティ」の列では、このセキュリティ機構の組み合わせによって提供されるセキュリティについて詳述されている。最後の列では、このセキュリティ機構の組み合わせが使用可能なユースケース例が示されている。
【0097】
DCR保護に関する問題
TS33.303の方法を再利用することによってPC5インターフェースを介したDCRメッセージの保護を改善するために提案されたソリューションに関して、これらの提案された方式はいくつかの問題を生み、本発明の以下の実施形態はそれらを解決する。
【0098】
まず(問題1.1)、上記したように、暗号化アルゴリズムkey_calc_maskは、Key_calc_mask=(Encrypted_bits_mask XOR 0xFF・・・FF)||0xFFFFFFFFとして計算される。
【0099】
しかし、0xFFFFFFFFの連結は必要ない(TS33.303とは異なり、ディスカバリメッセージの保護においてMICが存在しないため)。なお、0xFF・・・FFの長さは規定されていない。
【0100】
また、(問題1.2)Encrypted_bits_maskが定義されていないため、このマスクを生成する方法を有する必要がある。
【0101】
さらに(問題1.3)、メッセージは完全性が保護されない。実際、リモートUE(すなわち、ディスカバリモードAのモニタリングUEまたはディスカバリモードBの発見者UE)は照合レポートを使用する可能性があるため、リモートUEは適切なDUIKを有さない可能性がある。したがって、現在提案されているルーチン、またはTS33.303の現在のバージョンを使用して完全性保護を適用する方法が存在しない。これらの方式にMICを単純に追加することは非効率的である。
【0102】
さらなる問題は、以前の提案が、異なるアルゴリズムを使用するDUSKまたはDUCKのいずれかを使用してDCRメッセージの機密性を保護できることを示していることである。しかし、これは修正を要するいくつかの問題を伴う。
【0103】
まず、DUSKを使用したスクランブルアルゴリズムは、16秒の粒度で、DUSKとUTCベースのカウンタとに依存する疑似乱数列を計算し、この疑似乱数列とのXOR演算を行うことでメッセージを暗号化する。DUCKを使用する暗号化アルゴリズムは、1秒の粒度で、DUCK、UTCベースのカウンタ、およびRSCに依存する疑似乱数列を計算し、この疑似乱数列とのXOR演算を行うことでメッセージを暗号化する。複数のアルゴリズムを使用できるため、ソリューションの複雑さが増す。
【0104】
第二に、リモートUEおよびリレーUEがDUSKおよびDUCKの両方を有する場合、どの鍵/アルゴリズムが使用されるかが定義されていないため、問題が生じる。
【0105】
さらなる問題は、リモートUEまたはリレーUEが複数組のディスカバリ鍵のセットを有する可能性があることである。なお、各セットは識別子によって、例えばPDSK IDによって識別され得る。なぜなら、DUSK、DUCK、および DUIKはTS33.303またはTR33.847のSolution#37で指定されているように、PDSKから導出されるからである。複数組のディスカバリ鍵セットを有する結果として、リレーUEは、DCRメッセージを復号するためにどのディスカバリ鍵セットのどの鍵を使用すべきかを知らない可能性がある。
【0106】
追加の問題は、暗号化に使用される疑似乱数列の生成における入力に関連しており、DUCKと組み合わせられるのはRSCである。実際には、DUCKが複数のRSCと組み合わせて使用される可能性があるため、リレーUEは、受け取ったメッセージの復号に使用される疑似乱数列の生成にどのRSCを使用すべきかを直接知らない。
【0107】
TS33.303ディスカバリのためのセキュリティルーチンに関連する問題
【0108】
さらに、TS33.303の現行バージョンではさらなる問題が発生する。このバージョンでは、メッセージ送信時の処理は次のように指定されている。「セクション6.1.3.4.3.2には、DUIKが受信された場合、ステップ2でMICが計算されると記載されている(そうでない場合は全て0に設定される)。次にステップ3で、DUCKが受信された場合、メッセージ固有機密性が適用される。次にステップ4でMICが付加される。次に、ステップ5で、DUSKが受信された場合、合計出力がスクランブルされる。」しかし、これにより次のような問題が発生する。
【0109】
ある追加の問題(問題2.1)では、MICが暗号化されていないため、パッシブな攻撃者はメッセージの完全性が保護されているか否か、特にスクランブルが使用されていないかを直接監視することができる。
【0110】
ある追加の問題(問題2.2)では、TS33.303の目標が、DUSKおよびスクランブル機能を使用して、情報(例えば、メッセージの完全性が保護されているか否か)の漏洩を回避することであったとしても、スクランブルシーケンスは16秒ごとにしか変更されない一方、暗号化シーケンスは(UTCベースのカウンタのため)毎秒変化し、MICも(UTCベースのカウンタのため)毎秒変化するので、UEによってブロードキャストされるメッセージの最後の4バイトが1秒ごとに変化するか、または16秒ごとに変化するかを監視することによって、メッセージの完全性が保護されているか否かを観察することができる。
【0111】
ある追加の問題(問題2.3)では、フィールドEncrypted_bits_maskがデバイス(またはデバイスのクラス)ごとに異なる可能性がある。これに該当する場合、encrypted_bits_maskフィールドに基づいてデバイスを識別(および/または追跡)することができる。これは、(新しいカウンタに起因して)新しい暗号化が適用されると、暗号化されたビットのみが1秒に1回「変化」するからである。なお、スクランブルをかけたとしても攻撃者による追跡は可能である。これが実現可能なのは、暗号化シーケンスは毎秒変化する一方で、スクランブルシーケンスは16秒間安定しているためである。この時間の間、攻撃者はデバイスに関連付けられているEncrypted_bits_maskフィールドを特定することができる。新しいスクランブルシーケンスが適用されるたびに、攻撃者は16秒間を使用してencrypted_bits_maskフィールドを取得し、それを使用してデバイスを識別/追跡する。
【0112】
ある追加の問題(問題2.4)では、問題1.2と同様に、Encrypted_bits_maskが何であるかが指定されていない。
【0113】
ある追加の問題(問題2.5)では、スクランブルシーケンスは、DUSKと、16秒ごとにのみ変更されるUTCカウンタとにのみ依存する。DUSKは複数のデバイスで共有される可能性がある。したがって、次のようなことが起こる可能性がある。1)2つの異なるディスカバリメッセージをスクランブルするために、あるデバイスによって、同じ疑似乱数列が使用される、または2)2つ以上の異なるディスカバリメッセージをスクランブルするために、2つ以上のデバイスによって、同じ疑似乱数列が使用される。これが発生した場合、スクランブルされたメッセージのXOR演算を行うことで、平文メッセージのXORを取得することができる。これが発生するとセキュリティ保護が失われる。
【0114】
DCRメッセージの保護を改善する実施形態
したがって、本発明の第1の実施形態の目的は、encrypted_bits_maskを生成する方法を設計することである。第1の実施例では、encrypted_bits_maskは、ビットが暗号化されるべき場合にはビットを1に設定し、ビットが暗号化されるべきではない場合には0に設定されるように定義されてもよい。この定義を使用すると、送信時のメッセージの処理は次のように変更すると機能することができる。
【0115】
TS33.303、セクション6.1.3.4.3.3のステップ1ではスクランブルを解除する必要があり、ステップ2では、暗号化されていないビットが照合され、ステップ3では、DUCKが受信された場合は機密性が解除され、ステップ4では完全照合が実行され、ステップ5では、ディスカバリフィルタセキュリティパラメータに基づきDUIKである場合はMICがチェックされるか、またはディスカバリフィルタセキュリティパラメータ内に示されている場合は照合レポートを介してMICがチェックされる。
【0116】
このような機密性アルゴリズムは次のようなものであってもよい。
1.KCM=(EBM XOR 0xFF・・・FF)||0xFFFFFFFFを計算する
2.KS=KDF(DUCK,UTCベースのカウンタ,(KCM AND (メッセージ||MIC)))を計算する。
3.C=メッセージ XOR (KS AND EBM)
【0117】
例えば、KSが1010 1010 1010 1010であり、EBM1111 1111 0000 0000であると仮定すると、KS AND EBM=1010 1010 0000 0000となる。その場合、メッセージ XOR 1010 1010 0000 0000 if:
メッセージ=1111 1111 1111 1111=:0101 0101 1111 1111
メッセージ=0000 0000 0000 0000=:1010 1010 0000 0000
【0118】
この定義を明示しないと、メッセージの間違った部分が暗号化される可能性があり(これは、セキュリティ上のリスクを生む)、実装が相互運用できなくなる可能性がある。先に紹介した提案は、次のように定義することによって改善され得る。上記暗号化アルゴリズムにおいて、key_calc_maskがKey_calc_mask=(Encrypted_bits_mask XOR 0xFF・・・FF)として計算されるべきであり、ここで、0xFF・・・FFはPRUK_IDとRSCとの連結と同じ長さを有する。
【0119】
さらなる実施形態では、DCRをプライバシー保護するための提案されたソリューションはMICを含まないので、0xFFFFFFFFの連結は必要ない。実際、0xFFFFFFFFが連結される場合、提案されたアルゴリズム内の以下のステップ、
鍵ストリーム=KDF(DUCK,UTCベースのカウンタ,(Key_calc_mask AND メッセージ))
は、key_calc_maskはメッセージより4バイト長いことから、相互運用可能に機能しない可能性がある。
【0120】
あるいは、PRUK_IDおよびRSCの両方を暗号化することを目的としている場合、暗号化ルーチンを次のように定義され得る。
1.メッセージ=RSC(ユーザが中継のために必要としているサービスのリレーサービスコードタイプ)||PRUK ID(PC5インターフェースに使用される鍵識別子)
2.鍵ストリーム=KDF(DUCK,UTCベースのカウンタ,メッセージ)を計算する。
3.暗号文=メッセージ XOR 鍵ストリーム。
【0121】
より一般的には、この実施形態では、通信システムの動作方法が提案され、この通信方法は、
a.ユーザが中継に必要とするサービスのタイプを示す中継サービスコードと、中継局との通信に使用されるべき通信鍵または通信鍵の指標との組み合わせを含むメッセージを第1の局が準備するステップと、
b.少なくとも機密性鍵およびフレッシュネス値に鍵導出関数を適用することによって、第1の局が鍵ストリームを生成するステップと、
c.第1の局が鍵ストリームを使用してメッセージを暗号化するステップと、を含む。
【0122】
別の選択肢では、鍵ストリームがKDF(DUCK、UTCベースのカウンタ)として計算されるが、KDFで使用される文字列Sが次のパラメータの連結である。
FC=0xXX
P0=UTCベースのカウンタ
L0=上記の長さ(すなわち、0x00 0x04)。
P1=メッセージ
L1=PRUK_IDおよびRSCの長さ。
【0123】
鍵ストリームはKDFの出力のL個のLSBであり、ここで、LはL1に等しい。この定義により、Key_calc_maskの計算が回避され、暗号化に使用される鍵ストリーム値の計算が簡略化される。
【0124】
DCRメッセージを送信する際には完全性保護が推奨される。その目的は、(1)攻撃者が暗号化された内容を変更するのを防ぐため、(2)攻撃者が後の時点でDCRメッセージ/PRUK_IDおよびRSC値を再生することを防ぐため、または(3)攻撃者がDCRメッセージ/PRUK_IDおよびRSCの値を別のリレーUEにリプレイすることを防ぐためである。
【0125】
完全性保護が必要な場合は、MICを計算するために完全性鍵が必要である。しかし、DUSKやDUCKとは異なり、DUIKは常に利用できるとは限らない。MICを計算するための適切な完全性鍵を取得し、以前に提案されたスキームを強化するには複数の選択肢が存在する。
【0126】
第1の選択肢A)では、リモートUEおよびリレーUEの両方が利用可能な鍵(例えば、DUCKまたはDUSK)をマスター鍵として、KDFと組み合わせてとして使用し、完全性鍵および機密性鍵の2つの鍵が導出される。
【0127】
第2の選択肢B)では、DCRメッセージの完全性保護に使用される追加の鍵によって、ディスカバリ鍵が強化される。この追加の鍵はDUI_DCR_Kと示される。
【0128】
第3の選択肢C)では、既存のディスカバリ鍵(DUIK、DUCK、DUSK)を生成するために使用されるマスター鍵が、KDFを用いてDUI_DCR_Kを生成する際にも使用される。
【0129】
これらの選択肢では、KDFが適用される場合、TS33.220で定義されている3GPP(登録商標) KDFを使用できる。
【0130】
この定義によれば、KDFは、マスター鍵と、一意のビット列Sとを入力として受け取る。例えば、DUCKがマスター鍵として使用される場合、完全性鍵の生成に使用されるビット列Sは、派生鍵の目的(例えば、PRUK ID|RSCの機密性保護またはPRUK ID|RSCの完全性保護)に関連付けられた一意の識別子FC、鍵の使用法を以前に送信されたディスカバリメッセージにリンクする情報(例えば、DUCK、UTCベースのカウンタとともにディスカバリメッセージを保護するために使用される鍵ストリーム)を含み得る。
【0131】
選択肢C)では、DUI_DCR_Kに関連付けられた新しいP0値、例えば0x03を使用して、TS33.303のA.8のようにDUI_DCR_Kが生成され得る。
【0132】
DCRメッセージのMICが計算される場合、PRUK_IDおよびRSC、並びに、メッセージの送信元または宛先を決定するフィールドなどの他のフィールドを保護することは有意義である。MICの計算では、リプレイ攻撃を回避するためにUTCベースのカウンタを入力とする可能性がある。MICの計算は、時間ベースのカウンタを必要とせずにリプレイ保護を実現するために、ディスカバリフェーズ中にリレーUEが先に送信したノンスも含み得る。
【0133】
DCRメッセージの機密性および完全性が保護されている場合、セキュリティルーチンは次のようになる。
【表5】
【0134】
ステップ2では、TS33.303のA.2と同様のMIC計算ルーチンを使用できるが、ここでは、DUIKの代わりにDUI_DCR_Kが使用される。P0およびP1の値は、PRUK_IDおよびRSCを含むDCRメッセージであることを示す必要がある。なお、MICは、保護する必要があるDCRメッセージの他の部分も含めて計算されてもよい。例えば、アドレス指定されたリレーUEのID。これにより、攻撃者がリレーの近くにある他のUEにメッセージをリプレイすることを防ぐことができる。
【0135】
ステップ3では、メッセージおよびMICの両方が暗号化されていると仮定されている。メッセージのみが暗号化されており、MICは暗号化されていない場合は、マスクまたはビットを連結することでこれが示され得る。
【0136】
ステップ4では、メッセージおよびMICの両方が暗号化されていると仮定されている。MICが暗号化されていない場合、XORはメッセージ部分に対してのみ実行されるべきである。
【0137】
なお、RSCおよびPRUK_IDがMICを用いて完全性保護されていない場合でも、ある種の完全性保護は実現できる可能性があることに留意されたい。なぜなら、攻撃者が暗号化されたメッセージを変更した場合(例えば、暗号化された PRUK_IDまたはRSCフィールド内のビットを反転することによって)、結果として、異なるPRUK_IDおよびRSCになるからである。リレーUEはそのような変更されたRSCに対応できない可能性がある。したがって、以前の提案のようにMICが利用できない/計算されない場合には、リレーUEが暗号化されたフィールドを復号し、受信したフィールドが期待された通りである(例えば、以前のディスカバリフェーズにおいてもネゴシエーションされたRSC値が存在する)か、またはサポートされた通りである(例えば、サポートされているRSC値)かをチェックすることが推奨される。
【0138】
暗号化またはスクランブルアルゴリズムと呼ばれる異なるアルゴリズムの使用に起因したさらなる複雑さの問題に対処するさらなる実施形態では、DUSKもしくはDUCKまたはこれらの組み合わせが、同じアルゴリズムを使用してDCRメッセージの機密性を保護するために使用される。特に、アルゴリズムは、例えば、TR33.847の暗号化アルゴリズムであってもよい。
【0139】
さらなる実施形態は、デバイスが複数の鍵を用いた複数の設定を有する場合に、どの鍵/アルゴリズムを使用すべきかが不明確である問題に対処する。
【0140】
この問題を対象としたさらなる実施形態は、所定の優先順序に従って使用する鍵を選択することからなり、例えば、DUCKが利用可能な場合は最初にDUCKで試し、その後、DUSKが利用可能な場合はDUSKで試す。これは、例えば、TR33.847においてのようにそれぞれの暗号化およびスクランブルアルゴリズムを使用するか、または上記実施形態で提案されているように、選択された鍵を単一のアルゴリズムにおいて使用して実行され得る。
【0141】
別のアプローチは、両方の鍵が使用可能な場合、両方の鍵の組み合わせを適用することにある。これは、例えば、(i)最初に両方の鍵に依存する鍵を導出し、次に結果として得られた鍵を暗号化アルゴリズムで使用することによって、または(ii)両方の鍵をKDFの入力として使用することで、DUSKおよびDUCKの両方を疑似乱数列の生成に使用することによって実行され得る。
【0142】
別のアプローチは、リモートUEがDUCKまたはDUSKを選択し、例えば0(DUSK)または1(DUCK)に設定されたビットを含めることによって、それを中継UEに伝えることにある。
【0143】
別のアプローチは、リレーUEが両方の鍵を使用してDCRメッセージを復号することを試みることにある。
【0144】
複数組のディスカバリ鍵のセットが存在する可能性がある問題に対処する追加の実施形態は次の通りである。
【0145】
第一に、リモートUEは、リレーUEがディスカバリ鍵の正しいセットを識別することを可能にするフィールドをDCRメッセージ内に追加し得る。このフィールドはPDSK IDであってもよい。
【0146】
第二に、上記と同様であるが、PDSK ID全体を交換するとプライバシーの問題が生じる可能性があるため、リモートUEは、PDSK IDのサブセット、例えば、中継UEが正しいセットを取得することを可能にする最下位ビットを送信してもよい。
【0147】
第三に、リレーUEは、最後に配信されたディスカバリメッセージと、それらを保護するために使用された鍵のセットとを追跡してもよい。特に、リレーUEは鍵のリストをFIFOモードで保持することができ、すなわち、鍵の最後の使用に従って挿入および使用することができる。ディスカバリフェーズで異なるディスカバリDUSK鍵またはDUCK鍵が使用されるたびに、その鍵はリストの先頭に配置され、既存の鍵はリスト内で押し下げられる。リレーUEがDCRメッセージを受信すると、リレーUEは、前のリストの先頭にあるディスカバリ鍵から復号を試みる。
【0148】
DUCKが複数のRSCと組み合わせて使用されるという問題は、リモートUEが、リレーUEが正しいRSCを識別することを可能にするフィールドをDCRメッセージに追加できる実施形態によって解決することができる。このフィールドは、RSCのサブセット、例えば、最下位ビット、またはどのRSCが使用されるかを示すインデックスであってもよい。例えば、DUCKが3つのRSC、すなわちRSC1、RSC2、およびRSC3に関連付けられており、RSC1<RSC2<RSC3である場合、RSCiはインデックスiにリンクされ得、i=1、2、3である。
【0149】
DUCKが複数のRSCと組み合わせて使用されるという問題は、最後に配信されたディスカバリメッセージおよび関連付けられたRSCをリレーUEが追跡できる追加の実施形態によって、解決することができる。特に、リレーUEはRSCのリストをFIFOモードで保持することができ、すなわち、RSCの最後の使用に従って挿入および使用することができる。ディスカバリフェーズで異なるRSCがアナウンスされるたびに、そのRSCはリストの先頭に配置され、既存のRSCはリスト内で押し下げられる。リレーUEがDCRメッセージを受信すると、リレーUEは、前のリストの先頭にあるRSCから復号を試みる。
【0150】
TS33.303と同様、復号アルゴリズムは暗号化で行われる演算の逆を実行し、すなわち、同じ疑似乱数列を計算した後、受信した暗号文を、計算された疑似乱数列とXOR演算することによって平文を取得する。
【0151】
上記実施形態に基づいて、リモートUEとリレーUEとの間のDCRメッセージを保護するための手順の具体的な実装は以下の通りであり得る。
【0152】
この例では、リモートUEは以下を実行する。
【表6】
【0153】
その後、リモートUEは、DCRメッセージの一部として暗号文をUEからネットワークへのリレーに送信することができる。
【0154】
受信側では、UEからネットワークへのリレーは、受信したDCRメッセージの保護されたフィールド(例えば、RSCおよびPRUK ID)を取得するために以下を実行し得る。
【表7】
【0155】
MICを計算するとき、TS33.220の付録Bに記載されているKDFへの入力Sを形成するために次のパラメータが使用され得る。
- FC=0xYY。
- P0=メッセージタイプ。
- L0=上記の長さ(すなわち、0x00 0x01)。
- P1=完全性保護が必要なメッセージフィールド。
- L1=上記の長さ。
- P2=UTCベースのカウンタ。
- L2=上記の長さ(すなわち、0x00 0x04)。
【0156】
MIC計算のための入力鍵は、ステップ1で選択された256ビットの鍵であってもよいし、先行する実施形態で説明したようにして導出された完全性鍵であってもよい。MICは、KDFの出力の最下位xビットに設定され、例えば、xは32ビットであってもよい。DCRメッセージ保護のための完全性(および機密性)KDFで使用されるFC値は、ディスカバリメッセージ保護に使用されるFC値とは異なるものでなければならない。メッセージタイプ識別子は、交換されるメッセージを識別する必要がある。例えば、TS24.554の項11.3.1にあるメッセージタイプを伝達するProSe PC5に類似したものであってもよい。完全性保護を必要とするメッセージフィールド(P1)および長さ(L1)は少なくともRSCおよびPRUK IDであるが、他のフィールド(例えば、ProSe識別子、ソースユーザ情報、UEセキュリティ機能)も完全性保護を必要とする可能性がある。DCRメッセージ内で交換されるパラメータは、PROSE DIRECT LINK ESTABLISHMENT REQUESTメッセージID、シーケンス番号、ProSe識別子、ソースユーザ情報、UEセキュリティ機能、UE PC5ユニキャストシグナリングセキュリティポリシー、鍵確立情報コンテナ、Nonce_1、KNRPセッションIDのMSB、ターゲットユーザ情報、KNRP ID、中継サービスコードを含み得る。
【0157】
メッセージ固有機密性を計算するとき、KDFへの入力Sを形成する次のパラメータが使用され得る。
- FC=0xXX
- P0=UTCベースのカウンタ
- L0=上記の長さ(すなわち、0x00 0x04)。
- P1=RSC
- L1=上記の長さ。
【0158】
入力鍵は、ステップ1で選択した256ビットの鍵であってもよい。メッセージ固有機密性鍵ストリームは、KDF出力のL個の最下位ビットに設定され、ここでLは、保護を必要とするフィールド(上記のように、RSCおよびPRUK ID)およびMICの長さである。TS24.554の項10.3.1.1は、PROSE DIRECT LINK ESTABLISHMENT REQUESTについて説明しており、PRUK IDおよびRSCに加えて、保護を必要とする可能性のあるいくつかのフィールド(例えば、ユーザ情報)の交換が要求している。フィールドの長さが32バイトより長い場合、暗号化は、KDFへの複数の呼び出しを必要とする鍵ストリームに依拠する可能性がある。これは、Sビット列の定義内に追加の入力としてカウンタを含め、カウンタを増加させて鍵ストリームの追加バイトを生成することによって実行され得る。
【0159】
なお、場合によっては、RSCが利用できない可能性がある。例えば、この技術が、UEからネットワークへのリレーではないリレーのユースケースに適用される場合である。このような場合、上記手順内の鍵ストリームの計算において、Sの入力パラメータとしてRSCを使用することができない。この場合、このフィールドは省略される可能性があり、すなわち、鍵ストリーム=KDFDCR_Confidentiality(K,UTCベースのカウンタ)。あるいは、例えば、発見されたアプリケーションのタイプを識別する他の入力パラメータによって、RSCが置き換えられてもよい。
【0160】
なお、上記手順1のステップ1は、リモートUEとリレーUEにDUCKとDUSKの両方が設定されている場合にどの鍵/アルゴリズムを使用するかを決定する方法を示している。
【0161】
上記手順は、発見中にどの鍵が設定されたかにかかわらず、同じ機密性アプローチを適用する方法を示している。わずかに異なるフレーバーを有することでコードの複雑さが増す。また、ディスカバリメッセージの保護では、機密性およびスクランブルに異なるルーチンを使用することで様々なアプリケーションのニーズを満たすことができるが、ディスカバリメッセージの保護とは対照的に、DCRメッセージフィールドの保護の場合はこれが必要ない。
【0162】
上記手順では、交換されるメッセージの完全性をチェックするためにMICが使用されることに留意されたい。MICを用いた完全性のチェックが必要ない場合、RSCの完全性のみがチェックされる簡略化されたバージョンは次の通りである。
リモートUEは以下を実行する。
【表8】
【0163】
UEからネットワークへのリレーは、受信したDCRメッセージの保護されたフィールド(例えば、RSCおよびPRUK ID)を取得するために以下を実行する。
【表9】
【0164】
上記アルゴリズムでは、鍵ストリームはNEAアルゴリズムを使用して生成され得、MICはNIAアルゴリズムを使用して生成され得ることに留意されたい。
【0165】
特に、DCRメッセージを保護するために使用されるNEAアルゴリズムおよびNIAアルゴリズムは次の通りであってもよい。
・発見中に合意された、または
・ディスカバリパラメータの設定中、UEの設定中に事前設定された、または
・DCRメッセージ自体の中に示されている。
【0166】
128-NEAアルゴリズムが使用される場合、NEAアルゴリズムは、NEAアルゴリズムの入力鍵としてDUCK(またはDUSK)の128ビットを使用することによって設定されてもよい。NEAアルゴリズムにおける32ビットカウントがUTCベースのカウンタに設定されてもよく、BEARERは、所定のバイナリ値(例えば、BEARER=0000)に設定されてもよく、DIRECTIONは、所定の値(例えば、DIRECTION=0)に設定されてもよい。鍵ストリームが、ディスカバリメッセージの保護、特に、NEAアルゴリズムにも依拠する可能性があるメタデータを用いたディスカバリメッセージの保護に使用される鍵ストリームと異なることを保証するには、上記パラメータの一部が異なる設定を有する必要がある可能性があり、例えば、鍵がディスカバリメッセージの保護に使用される場合は第1のBEARER値を使用する必要があり、鍵がDCRメッセージの保護に使用される場合は第2の異なるBEARER値を使用する必要がある。
【0167】
あるいは、NEAアルゴリズムにおける鍵は、上記手順のステップ1で選択された鍵KにKDFを適用し、ディスカバリメッセージおよびDCRメッセージの保護に異なるFC値を使用することによって生成され得る。これにより、DCRメッセージを保護する場合と、ディスカバリメッセージを保護する場合とで2つの異なる鍵が使用されることが保証される。KDFはまた、追加の入力として、UTCベースのカウンタまたはDCRメッセージ内の他の保護されていないフィールドを有し得る。
【0168】
NIAアルゴリズムも同様に設定されてもよい。別の完全性鍵がKDFを使用して導出される場合、別のFC値も必要となる。
【0169】
上記手順は、UEからネットワークへのリレーにおけるPC5リンクセットアップ中のセキュリティを向上させるためだけでなく、他のタイプのPC5セットアップにも適用され得ることに留意されたい。例えば、UEからUEへのリレー、またはUEからUEへのリレーである。
【0170】
例えば、UEからUEへのリレーシナリオにおける(安全な)PC5通信リンクの確立に関して、発見時に、UE、例えばソースUEは、RSC、PRUK ID、または後続の鍵導出に使用される第1のノンスなどの特定のパラメータを含む直接通信リクエスト(DCR)メッセージを送信する。この情報は、上記実施形態のうちの1つのようなソリューションが適用されない限り、平文で交換される可能性がある。この手順および必要性は、UEからUEへのリレー410を介してターゲットUE430との安全な通信リンクを確立することを望んでいるソースUE420によってさらに示されている。CN、またはCN400内の1つ以上のネットワーク機能が設定を実行する。第1のステップでは、各リモートUE(ソースUEおよびターゲットUE)およびUEからUEへのリレーが、5G DDNMFから発見パラメータおよびPKMF(Prose Key Management Function)アドレスを、PKMFからディスカバリセキュリティマテリアルを取得する。さらに、PKMFによるエンドツーエンドセキュリティセットアップのためのセキュリティマテリアルがリモートUEに提供されてもよい。例えば、エンドツーエンドセキュリティセットアップ用のセキュリティマテリアルは、PSC(Prose Service Code)および関連付けられた鍵を含む。次のステップでは、リモートUE420は、(i)U2Uリレーを発見し、(ii)RSC(Relay Service Code)、PRUK ID、およびNonce1を含む直接通信リクエストを送信し、(iii)リモートUE420とUEからUEへのリレー410との間で認証および鍵合意を実行し、認証が成功した結果、鍵KNRPが導出されることによって、UEからUEへのリレー410と、発見手順およびPC5ユニキャストリンクセットアップ手順とを実行する。その後、UEからUEへのリレー410はNonce2を生成し、KNRP、Nonce1、およびNonce2を使用してKNRP-SESSを導出する。UEからUEへのリレー410は、ナンス2を含む触接セキュリティモードコマンドをリモートUE420に送信する。直接セキュリティモードコマンドは、KNRP-SESSに基づいて完全性が保護される。次に、リモートUE410は、KNRP、Nonce1、およびNonce2を使用してKNRP-SESSを導出し、直接セキュリティモードコマンドの完全性をチェックする。検証が成功した場合、リモートUE420は、直接セキュリティモード完了をUEからUEへのリレー410に送信する。プライバシーセンシティブな特定のフィールド、またはUEからUEへのリレー中のDCRメッセージ交換における全てのフィールドを保護するには、例えば、上記の例示的な手順で詳述したように、発見パラメータ内の鍵のうちの1つは、送信デバイスおよび受信デバイスによって選択される必要があり、例えば、
・DUCKが利用可能な場合、プライバシーセンシティブなフィールドを保護するためにDUCKが使用され、
・DUCKが利用可能でなく、かつDUSKが利用可能な場合、DUSKがそれらを保護するために使用され、そうでなく、
・DUCKもDUSKも利用できない場合、プライバシーセンシティブなフィールド、またはDCRメッセージ内の全てのフィールドを保護してはならない。
【0171】
鍵が選択されると(選択された場合)、送信デバイスはDCRメッセージを保護し、保護されたDCRメッセージを送信できる。鍵が選択されると(選択された場合)、受信デバイスは保護されたDCRメッセージを受信し、それを安全に処理(復号/完全性検証)できる。ソースUEおよびターゲットUEが、リレーに知られていない共通のディスカバリ鍵のセットを有する場合、この鍵のセットの方が好ましい可能性があることに留意されたい。
【0172】
TS33.303のディスカバリメッセージ用のセキュリティルーチンの改善
TS33.303のディスカバリメッセージ用のセキュリティルーチンを改善する実施形態のセットでは、アプローチ1では、暗号化に使用される鍵ストリーム(KS)を取得するロジックが、次の選択肢のうちのいずれかに従って変更される。
【0173】
第1の選択肢1では、KCM=(EBM XOR 0xFF・・・FF)を計算し、ここで、0xFF・・・FFは27オクテットの長さを有する。EBM XOR 0xFF・・・FF=BITWISENOT(EBM)=KCMであることに留意されたい。次に、KS=KDF(DUCK,UTCベースのカウンタ,(KCM AND(メッセージ||MIC)))を計算する。ここで、KSはKDF出力の最後の27オクテットである。ここで、EBMはencryption_bit_maskであり、KCMはkey_calc_maskであり、KSは鍵ストリームである。それでも、この選択肢の問題は、MICがKCMとAND演算されること、および、EBMの最後の4バイトが全て1になるので、KCMの最後の4つのバイトが0に設定されることから、KSの計算においてMICの内容が無視されることである。
【0174】
選択肢1に基づいて構築される第2の選択肢2では、KCMが直接与えられ、すなわち、EBMが必要なくなる。この選択肢は、選択肢1と同じ問題を有する。
【0175】
選択肢1および選択肢2の問題に対処する第3の選択肢3では、KS=KDF(DUCK,UTCベースのカウンタ,EBM,メッセージ||MIC)が計算される。それでも、このアプローチの問題は、KDFへの合計入力サイズが32+4+27+27バイト、すなわち2*32バイトを超えるため、KDFの計算により多くのCPUリソースが必要になることである。
【0176】
第4の選択肢4では、KSがKDF(DUCK,UTCベースのカウンタ,EBM,MIC)として計算される。このアプローチでは、送信されるメッセージのフィンガープリントとして、MICが使用される。EBMはKSの計算に含まれる。これにより、暗号化マスクおよびメッセージの内容自体の両方がKSを決定する。合計メッセージ長さは2*32バイト未満であるため、CPUのニーズが現状より悪化することはない。EMBが既知または固定である場合、EBMは必要ない可能性があることに留意されたい。
【0177】
その場合、メッセージを送信する手順は次のように変更され得る。
ステップ1:メッセージおよびDUIKからMICを計算する。MICは、例えばTS33.303に記載されているように計算される。
ステップ2:送信するメッセージにMICを追加する。M=M||MIC
ステップ3:上記のようにKSを計算する。
ステップ4:C=M XOR (KS AND EBM)として暗号文を作成する。
ステップ5:Cにスクランブルをかける
【0178】
上記は、EBMがMICもカバーしているので、MICを暗号化できることを意味する。これは、TS33.303では許可されていないことである。
【0179】
EBMは0xFF・・・FF(27オクテット)であることが好ましく、すなわち全てのビットが暗号化されることが好ましいことに留意されたい。この場合、DUSKは必要ない。これは、また、Encrypted_bits_maskを監視することによってデバイスが完全性保護使用の有無((MIC)を推測できず)を追跡できないため、プライバシーを向上する。メッセージの機密性を保護するためにKDFを1回呼び出すだけで済むため、パフォーマンスも向上する。この場合、この疑似乱数列は、例えばKS=KDF(DUCK,UTCベースのカウンタ,EBM,MIC)として計算され、暗号文を計算するためのステップ4は、単にC=M XOR KSである。ステップ5は必要ない。
【0180】
TS33.303におけるディスカバリメッセージ用のセキュリティルーチンを改善する実施形態では、スクランブルシーケンスが、16秒に1回よりも頻繁に変化するUTCベースのカウンタを使用して計算される。例えば、8秒ごと、4秒ごと、2秒ごと、1秒である。これにより、スクランブルおよび機密性/完全性において使用されるUTCベースのカウンタの異なる周期によって漏れる情報の量が制限される。
【0181】
TS33.303のディスカバリメッセージのセキュリティルーチンを改善する実施形態では、完全性が適用されない場合(例えば、DUIKが存在しない場合)にMIC=0x00000000を付加する代わりに、乱数に見える値を追加すべきである。この乱数に見える値は、初期乱数値から疑似乱数関数を使用して生成できる。これにより、攻撃者が、ブロードキャストされたディスカバリメッセージを観察することによって、UEが完全性保護を使用しているか否かを判断できないことが保証される。
【0182】
ディスカバリメッセージ用のセキュリティルーチンを改善する実施形態のセットがある。
【0183】
TS33.303では、EBMの長さは、23バイトだけではなく、27バイトである。その場合、TS33.303のようにKSを計算することができるが、KCMは(EBM[0:23] XOR 0xFF・・・FF)||0xFFFFFFFFとして計算される。ここで、EBM[0:23]は、同じく23バイト長の0xFF・・・FFとのXOR演算時に、EBMの最初の23バイトのみが使用されることを示す。KSの出力長は、TS33.303においてよりも4バイト長く、すなわち27バイト長であるため、MICを暗号化することもできる。
【0184】
その場合、メッセージを送信する手順は次のように変更される。
ステップ1:メッセージおよびDUIKからMICを計算する。MICは、例えばTS33.303に記載されているように計算される。
ステップ2:送信するメッセージにMICを追加する。M=M||MIC
ステップ3:上記のようにKSを計算する。
ステップ4:C=M XOR (KS AND(EBM||0xFFFFFFFF))として暗号文を作成する。
ステップ5:Cにスクランブルをかける
【0185】
ステップ4では、TS33.303と同様にEBMの長さが23バイトであり、MICも暗号化するために0xFFFFFFFFが付加されることに留意されたい。ステップ3は、ステップ2の前に実行してもよいことに留意されたい。
【0186】
以前の提案に基づく例示的実施形態の変形例では、DCRメッセージ内のPRUK IDおよびRSCを保護する際に疑似乱数スクランブルシーケンスを生成するために使用されるFC値は、ディスカバリメッセージを保護する疑似乱数スクランブルシーケンスを生成するために使用されるFC値とは異なる可能性があることが示唆され得る。これにより、同じ疑似乱数スクランブルシーケンスによって2つの異なる平文メッセージが保護され得る(XORスクランブルされ得る)ことを防ぐことができる。同じことが暗号化アルゴリズムで使用されるFC値の使用にも当てはまるが、この場合、KDFの他の入力パラメータ、特にメッセージの長さが異なるため、これはそれほど重要ではない。
【0187】
TS33.303において長いディスカバリメッセージを保護するためのセキュリティルーチンの改善
上記実施形態では、保護を必要とするフィールドの長さが、使用されるKDFの出力サイズである32バイトよりも長い場合でも、DCRメッセージの機密性を保護する方法を説明した。これは、単一のKDF呼び出しからではなく、KDFへの複数回の呼び出しから取得された鍵ストリームを使用してメッセージを暗号化(またはスクランブル)することによって行われる。これは、KDFにおける入力として使用されるSビット列の定義内に追加の入力として少なくとも1つのカウンタ(ブロックカウンタ)を含め、カウンタを増加させて鍵ストリームの追加バイトを生成することによって実行され得る。カウンタの代わりにナンスが使用される可能性があることに留意されたい。ナンスは、ランダムに生成され、1回だけ使用される数値である。例えば、メッセージの長さがN*Bバイトで、BがKDFの出力サイズである場合、KDFへのN回の呼び出しが、それぞれ異なるカウンタ値(例えば、0~N-1の範囲)で要求される。このようなソリューションは、32バイトを超える長さを有する可能性があるディスカバリメッセージにも適用可能である。特に、Rel-17 U2Nサイドリンクリレーでは、サイドリンクディスカバリメッセージのためにRLC UMモードが使用される可能性があり、ディスカバリメッセージの最大サイズは、例えば9000バイトであり得る。上記したように、ディスカバリメッセージを保護するためのセキュリティルーチンは、小さい固定サイズのディスカバリメッセージに対してのみ機能することに留意されたい。新しいフィールドまたはアプリケーション層メタデータ情報の交換に起因して、より大きなサイズのディスカバリメッセージが生じる可能性がある。RLCフラグメンテーションは、2976ビット=372バイトで既に発生する可能性がある。この場合、ディスカバリメッセージは32バイトよりも長くなる可能性があり、KDFへの複数回の呼び出しが必要になり得る。この場合、ディスカバリメッセージのサイズは2976ビットよりも長くなる可能性があり、複数のフラグメントが発生する可能性がある。したがって、PDCP層での(DUCKを用いた)暗号化および/または(DUSKを用いた)スクランブルのためにKDFを使用するには、KDFおよびDUCKまたはDUSKから疑似乱数列を取得するために、追加のカウンタであるブロックカウンタを含める必要がある。保護がPDCP層で行われ、ディスカバリメッセージの長さが128バイトである場合、ディスカバリメッセージを暗号化するための鍵ストリームを取得するには、以下のカウンタ値で合計4回のKDF呼び出しが必要になる。
【表10】
【0188】
保護がRLC層で行われる場合、KDFおよびDUCKまたはDUSKから疑似乱数列を取得するために、例えば2つの追加の入力カウンタを含める必要がある。第1の入力カウンタはフラグメントカウンタC_Fであり、第2の入力カウンタはブロックカウンタC_bである。フラグメントカウンタは、ディスカバリメッセージ全体の中のフラグメントを識別する。ブロックカウンタは、フラグメント内のb(例えば、b=32バイト)のブロックを識別する。例えば、フラグメントの長さが64バイトで、ディスカバリメッセージの長さが128バイトで、KDFの出力が32バイトである場合、ディスカバリメッセージの64バイトのフラグメントが2つ存在する。ディスカバリメッセージのフラグメントはフラグメントカウンタを含む。各フラグメントは、ブロックカウンタに(暗示的に)リンクされ得る32バイトのブロックを2つ含む。この例では、フラグメントカウンタ値およびブロックカウンタ値は「0000」および「0001」であり得、16進数表現および2バイト長のカウンタが仮定される。保護がRLC層で行われる場合、ディスカバリメッセージを暗号化するための鍵ストリームを取得するには、以下のカウンタ値で合計2×2回のKDF呼び出しが必要になる。
【表11】
【0189】
この最後のケースでは、次のように両方のカウンタを1つの値に結合できることに留意されたい。
Fragment_counter*Maximum_number_blocks_in_a_fragment+block_counter
【0190】
上記の1つ以上のカウンタを考慮すると、TS33.303と比較して、KDFへの入力を変更する必要がある。
【0191】
DUSKが使用される場合、KDFへの呼び出しは少なくとも1つのカウンタからの情報を含む必要があり、例えば次の通りである。
タイムハッシュビットシーケンス=KDF(DUSK,UTCベースのカウンタ,ブロックカウンタ)
または
タイムハッシュビットシーケンス=KDF(DUSK,UTCベースのカウンタ,フラグメントカウンタ,ブロックカウンタ)
【0192】
上記において、UEは、受信したメッセージからフラグメントカウンタを直接取得する可能性があることに留意されたい。すなわち、各フラグメントはフラグメントカウンタを含む必要があり、この値はスクランブルされてはならない。ブロックカウンタは所定の値で開始し、KDFへの呼び出しが追加されるたびに、例えば1ずつ増加すべきである。
【0193】
フラグメントカウンタおよび/またはブロックカウンタがタイムハッシュビットシーケンスを生成するための入力として使用されない場合、複数のブロックが同じタイムハッシュビットシーケンスでスクランブルされることに留意されたい。したがって、スクランブルされた2つのブロックをXOR演算すると、平文ブロックのXORを取得できる。
【0194】
DUCKが使用される場合、KDFへの呼び出しは次のようになり、すなわち、少なくとも1つのカウンタからの情報を含む。
鍵ストリーム=KDF(DUCK,UTCベースのカウンタ.ブロックカウンタ,(Key_calc_mask AND (Message||MIC)))。
【0195】
上記において、フラグメントカウンタに関する情報がメッセージ自体に含まれていてもよいことに留意されたい。
【0196】
フラグメンテーションはまた、完全性保護の実行方法を示唆する可能性がある。まず、攻撃者が複数の異なるディスカバリメッセージのフラグメントを混合できないようにするために、ディスカバリメッセージごとにMICが要求される可能性がある。この全体的MICは、ディスカバリメッセージのフラグメントのうちの少なくとも1つ、例えば最後のフラグメントに含まれる必要がある。このMICは、TS33.303の6.1.3.4.3.4に記載されるように計算されてもよく、その場合、ビット列Sは、メッセージ内のフラグメントの数も含み得、P1フィールドは、メッセージ全体の内容を指すか、またはメッセージの内容全てに依存する値(例えば、そのハッシュ、またはメッセージの複数の部分の複数のハッシュ/MICの連結)を指す。このようなMICは、ディスカバリメッセージがPDCP層で保護されている場合に取得され得る。第二に、フラグメントが変更されておらず、フラグメントが到着した状態で処理できることを保証するために、やはりフラグメントごとのMICが要求される可能性がある。このMICの計算では、MICが属するフラグメントからの入力情報のみを考慮すべきであり、すなわち、ビット列Sがフラグメントカウンタも含み、P1フィールドがそのフラグメントのみの内容を指す、TS33.303の6.1.3.4.3.4に記載されているように行われるべきである。
【0197】
全体として、5GディスカバリメッセージがLTEよりも長いことを考慮して、TS33.303の項6.1.3.4.3.2のプロセスを更新する必要がある。特に、ステップ3および5では、KDFを少なくとも1回、おそらくは複数回呼び出し、KDFへの呼び出しごとに値が異なるブロックカウンタ(例えば、増加するブロックカウンタ)をKDFへの入力の1つとして使用することによって取得される疑似乱数列を使用して、ディスカバリメッセージを暗号化およびスクランブルする必要がある。ディスカバリメッセージを保護するためのKDF呼び出し回数は、CEIL(message_length/KDF_output size)である。このアプローチは、例えばTS33.503で指定されているような5G運用に適用可能である。CEILは天井関数を指すが、(量子化ステップ>1を使用できる)量子化関数を指してもよい。
【0198】
ディスカバリメッセージ内の一部のフィールド(例えば、メタデータ)をセキュリティ保護する必要がない場合、または一部のフィールドのセキュリティ保護がアプリケーション次第である場合、ディスカバリメッセージの一部のみを、TS33.303または上記実施形態に基づいて保護すればよい。ある選択肢では、ソースレイヤ2 ID、宛先レイヤ2 ID、リレーサービスコード、アナウンサ情報、またはNCGIもしくはTAIなどの追加パラメータなどの既存のフィールドだけでなく、メタデータも含む、ディスカバリメッセージの全ての内容が完全に保護される可能性がある。これは、メッセージ全体をTS33.303の項6.1.3.4.3.2のMIC生成手順に送ることができるため、実現可能となる。しかし、特定のフィールドのみが機密性保護される可能性がある。特に、暗号化が必要なフィールドの長さが32バイト未満である可能性があり、そのため、1回のKDF呼び出しが要求される可能性がある。主な違いは、項6.1.3.4.3.2の3行目では、メッセージの一部にのみ機密性が追加され、機密性の保護が必要なフィールドは、連続した32バイト以内でなければならないことである。
【0199】
32バイト長よりも長い疑似乱数列を取得するために鍵導出関数を使用することに対する代替実施形態は、ディスカバリメッセージの保護において、TS33.401に記載されている標準5G機密性アルゴリズム(例えば、128-NEA1、128-NEA2、128-NEA3)および完全性アルゴリズム(例えば、128-NIA1、128-NIA2、128-NIA3)のうちの1つを適用することである。
【0200】
これを行うための重要な要件は、送信デバイス(例えば、アナウンスを行うUE)が、ディスカバリメッセージの内容の暗号化および/または完全性保護に使用されるセキュリティアルゴリズムを示すフィールドをディスカバリメッセージに含めることである。これにより、受信側UE(例えば、監視を行うUE)は、受信メッセージの復号/完全性検証に使用される適切なアルゴリズムを選択できるようになる。発見モデルBでは、送信側UEがサポートするアルゴリズムが最初のメッセージに含まれ得る。メッセージを受信すると、受信側UEは、受信したサポートされているアルゴリズムを使用して、応答を保護するために使用される暗号化アルゴリズムおよび/または完全性アルゴリズムを決定できる。応答には、受信側UEが復号/完全性検証できるように、選択されたアルゴリズムを含めることができる。サポートされているアルゴリズムを含むフィールドは暗号化すべきではない。なぜなら、暗号化されていると、受信側はどのアルゴリズムを使用すべきかが分からないからである。
【0201】
あるいは、送信側UEによって複数の暗号化および/または完全性アルゴリズムがサポートおよび使用される可能性があり、どの特定の暗号化および/または完全性アルゴリズムが使用されるかを識別するためのフィールドがディスカバリメッセージに追加されない場合、送信側UE(例えば、アナウンスを行うUE)は、適切な暗号化および/または完全性アルゴリズムを選択し、ディスカバリメッセージを暗号化および/または完全性保護し、保護されたディスカバリメッセージを送信する。保護されたディスカバリメッセージを受信すると、受信側UE(例えば、監視を行うUE)は、メッセージを復号し、サポートされている暗号化および/または完全性アルゴリズムの全ての組み合わせについて、完全性を検証する。受信側UEは、最初に復号アルゴリズムを適用してから、サポートされている全ての完全性アルゴリズムを使用して完全性をチェックすることを試みる。例えば、受信側UEは最初に128-NEA1を用いて復号し、次に128-NIA1、128-NIA2、および128-NIA3で完全性をチェックする。それが完了すると、UEは128-NEA2を用いて復号を行い、128-NIA1、128-NIA2、128-NIA3などで完全性をチェックする。MIC検証が成功すると、受信側UEは停止する。
【0202】
長いディスカバリメッセージの処理は、TS33.303の項6.1.3.4.3.2および6.1.3.4.3.3と比較して、送信側UEおよび受信側UEの両方でのメッセージ処理に影響を与える。
【0203】
そのような実装形態では、ディスカバリメッセージを送信するUEは、メッセージを保護する方法を示すために、ProSe機能からコード送信セキュリティパラメータを受信することができる(セキュリティフローで説明されているように)。コード送信セキュリティパラメータはDUSKを含み得、DUIKを含み得る。コード送信セキュリティパラメータは、DUCKおよびEncrypted_bits_maskの両方を含み得る。ディスカバリメッセージを送信するUEは次のステップを実行する。
1.ディスカバリメッセージを形成する(例えば、プレフィックスのみが割り当てられている場合はサフィックスを追加する)。
2.DUIKが提供された場合はMICを計算し、そうでない場合はMICを全てゼロに設定する。
3.DUCKを受信した場合、メッセージ固有機密性をメッセージに追加する。
4.ステップ3の出力にMICを添付する。
5.DUSKを受信した場合、ステップ4の出力にスクランブルを追加する。
【0204】
あるいは、MICが暗号化されていることを保証するために以下が実行される。
1.ディスカバリメッセージを形成する(例えば、プレフィックスのみが割り当てられている場合はサフィックスを追加する)。
2.DUIKが提供された場合はMICを計算し、そうでない場合はMICを全てゼロに設定する。
3.ステップ1の出力にMICを添付する。
4.DUCKを受信した場合、メッセージ固有機密性をメッセージに追加する。
5.DUSKを受信した場合、ステップ4の出力にスクランブルを追加する。
【0205】
ステップ1において、TS33.303からの主な違いは、メッセージの長さが固定されていないことである。したがって、メッセージ長を示すか、または長さがアプリケーションに依存するアプリケーション固有のフィールドが含まれているか否かを示すフィールドをメッセージに含める必要がある可能性がある。
【0206】
これを実現するための選択肢は、ディスカバリメッセージの固定(常に存在する)フィールドと、任意選択のフィールドとの合計に対応するメッセージ長を全てのディスカバリメッセージに常に含めることである。例えば、メッセージが、それぞれ長さが24ビット、24ビット、および48ビットである固定フィールドRSC、ProSeリレーUE ID、およびアナウンサ情報、並びに長さが256ビットであるメタデータを含む場合、42バイトの全長を示すフィールドが存在する。別の選択肢は、固定(常に存在する)フィールドの後に任意選択のフィールドの存在を示すビットマスクを含めることである。例えば、x個の任意選択のフィールドがある場合、それらの存在を示すためにxビットのマスクを含めることができる。例えば、値が1000であるマスクが存在する場合、1である第1のビットは、4の可能な任意選択のフィールドのうちの第1の任意選択のフィールドが存在することを示す。したがって、受信デバイスは、例えばメタデータを有する追加フィールドが存在することを知る。この任意選択のフィールドは、固定フィールドの後に存在し得る。各任意選択のフィールド、例えばメタデータフィールドの最初の方のバイトは、この場合は長さを、例えば上記の例では32バイトの長さを含める必要がある。メッセージ固有の機密性およびスクランブルに関連するステップにおける別の主な違いは、ディスカバリメッセージの保護に、KDFへの複数の呼び出しが要求されることである。
【0207】
受信側UEでの処理に関しては、(セキュリティフローで説明されているように)ProSe機能から受信されるコード受信セキュリティパラメータを使用して、受信したディスカバリメッセージの保護方法がUEに示される。コード受信セキュリティパラメータは、DUSKを含み得、DUIK、またはMICチェックに照合レポートを使用すべきか否かの指示のいずれかを含み得る。一般に、ProSeクエリコードでは照合レポートの選択肢は許可されていない。コード受信セキュリティパラメータも、DUCKおよび対応するEncrypted_bits_maskの両方を含み得る。
【0208】
したがって、ディスカバリメッセージを受信するUEは以下のステップを実行し得る。
1.DUSKが受信された場合、スクランブルを解除する(送信側UEのステップ5と同様に)。
【0209】
合計メッセージ長が含まれる場合、UEはこの入力値を使用して、例えばMICの計算や、スクランブル/暗号化疑似乱数列の長さの決定に必要なバッファを割り当てることができることに留意されたい。長さの値は、長さフィールドが存在する場合、メッセージの最初の部分のスクランブルを解除した後に取得され得る。メッセージ長が直接利用できない場合、MICの計算用の入力の長さ、またはスクランブルに必要な長さは、様々な任意選択のフィールドにアクセスし、各フィールドから各フィールドの長さを取り出すことによって段階的に計算される。
【0210】
2.メッセージ固有機密性を使用して暗号化されていないメッセージのビットが一致するか否かをチェックする。一致しない場合は中止する。
【0211】
ディスカバリフィルタによって一致が示される一部のビットは、この段階でメッセージ固有機密性によって暗号化され得ることに留意されたい。UEは、このステップの後に他のビットの一致を検索して、一致を見つける前に実行される処理の量を最小限に抑えてもよい。
【0212】
一致は、メッセージの最初の部分(例えば、メッセージの最初の32バイト)でのみ必要な可能性があるため、KDFへの1回の呼び出しが要求されることに留意されたい。一致が見つかった場合、受信側UEはディスカバリメッセージの長さを読み取り(長さフィールドが利用可能な場合)、メッセージの残り部分のスクランブルを解除することができる。あるいは、受信側UEは、マスクにおいて、任意選択の追加フィールド、例えばメタデータフィールドの存在をチェックしてもよい。その場合、受信側UEは、任意選択のフィールドの最初のバイトのスクランブルを解除してフィールド長を取り出し、その後、スクランブルの解除を行う。
【0213】
3.DUCKが受信された場合、メッセージ固有機密性を解除する(送信側UEのステップ3と同様に)。
【0214】
4.3で暗号化されていないビットの一致のみが見つかった場合、完全照合を行う。一致しない場合は中止する。
【0215】
5.MICチェックが必要な場合、MICを直接チェックするか(ディスカバリフィルタセキュリティパラメータ内でDUIKが与えられた場合)、またはディスカバリフィルタセキュリティパラメータ内に示されている場合は照合レポートを介してチェックする。
【0216】
完全性保護は、TS33.303の項6.1.3.4.3.4と同様である。
【0217】
したがって、送信側UEは以下を実行し得る。
1.TS33.303の付録A.2のMIC計算関数を通過されるDUIK、メッセージ、および、UTCベースのカウンタから、出力ビットシーケンスを計算する。
2.関数の出力のnバイト(例えば、n=4)を取得し、それをこのメッセージのMICの値として設定する。
【0218】
受信側UEまたはProSe関数は全く同じ手順を実行するが、さらに、計算されたMICと受信したMICとの比較も実行する。
【0219】
スクランブル保護はTS33.303の項6.1.3.4.3.5と同様であるが、より長いメッセージを考慮して変更が加えられている。
【0220】
このような例では、送信側UEは以下を実行する。
1.このスクランブル計算のみを目的として、UTCベースのカウンタの4つのLSBをゼロに設定する。
2.鍵付きハッシュ関数を通過されるDUSKおよびUTCベースのカウンタ(ステップ1のように変更されたもの)からタイムハッシュビットシーケンスを計算する。
a.タイムハッシュビットシーケンス=“”
b.i=a~(a+FLOOR((L+4)/32))について、
タイムハッシュビットシーケンス=タイムハッシュビットシーケンス||KDF(DUSK,UTCベースのカウンタ,i)
c.タイムハッシュビットシーケンス=タイムハッシュビットシーケンス||LSB(KDF(DUSK,UTCベースのカウンタ,i),8*(L+4-32*FLOOR((L+4)/32)))
3.タイムハッシュビットシーケンスを、処理中のディスカバリメッセージ全体(MICを含む)とXORする。
【0221】
受信側UEも、処理中の受信メッセージに適用されることを除いて、全く同じ手順を実行することができる。上記において、値「a」は任意の初期インデックス値であり得、LSBは最下位ビットを意味する。FLOOR(x)は、x以下の最大の整数を返す。
【0222】
この実施形態では、メッセージ固有機密性の保護はTS33.303の項6.1.3.4.3.6と同様であるが、より長いメッセージを考慮して変更が加えられている。
【0223】
送信側UEは以下を実行する。
1.Key_calc_mask=(Encrypted_bits_mask XOR 0xFF・・・FF)||0xFFFFFFFFを計算する
2.KDFを使用して次のように鍵ストリームを取得する
a.鍵ストリーム=“”
b,H=(Key_calc_mask AND (メッセージ||MIC))、またはHash((Key_calc_mask AND (メッセージ||MIC)))
c.i=a~(a+FLOOR(L/32))について、
i.鍵ストリーム=鍵ストリーム||KDF(DUCK,UTCベースのカウンタ,i,H)。
d.鍵ストリーム=鍵ストリーム||LSB(KDF(DUCK,UTCベースのカウンタ,i,H),8*(L-32*FLOOR(L/32)))
3.メッセージ内へXOR(Keystream AND Encrypted_bits_mask)する。
【0224】
受信側UEは、処理中の受信したディスカバリメッセージに適用されるものと同じ対応する手順を実行する。
【0225】
上記において、ステップ2.b.では、Hは、(Key_calc_mask AND (メッセージ||MIC))、またはこの値の関数(例えば、そのハッシュ)、または入力の一部分の関数(例えば、hash(Key_calc_mask||MIC)のいずれかを指し得る。主な目的は、長い可能性があるメッセージを、ステップ2.c.iの各KDF呼び出しで使用できる短いフィンガープリントに圧縮して、効率を高めることである。
【0226】
上記アルゴリズムは、鍵ストリームおよびタイムハッシュビットシーケンスの生成に使用されるKDFへの入力の定義の変更によって補完される。これらの変更は、TS33.303の付録A.5およびA.6に存在する定義において必要となる。
【0227】
(TS33.303のA.5に関連する)ディスカバリ用のスクランブルビットシーケンスを計算するとき、TS33.220の付録Bに記載されている各KDF呼び出しへの入力Sを形成するために次のパラメータが使用される。
- FC=一意の識別子。
- P0=ディスカバリスロットに関連付けられたスクランブル用のUTCベースのカウンタ(小項6.1.3.4.3.5を参照)。
- L0=上記の長さ(すなわち、0x00 0x04)。
- P1=メッセージフラグメントインデックス。
- L1=上記の長さ(すなわち、0x00 0x02)。
【0228】
入力鍵は256ビットDUSK。
【0229】
L1のバイト長は、最大9000バイトを保護するために必要な最小バイト長である2である。P1は、ディスカバリメッセージ内の32バイトのフラグメントまたはブロックを指す。TS33.220の場合と同様に32ビットKDF出力が想定されているため、値32が使用される。別のKDFが使用される場合は長さが調整される。
【0230】
長さLのディスカバリメッセージの場合、合計CEIL((L+LMIC)/32)回のKDF呼び出しが必要となり、それぞれが異なるP1値を有する。ここで、L+LMICが使用され、Lはディスカバリメッセージの長さを指し、LMICはスクランブルされたMICの長さを指す。CEIL(x)は、x以上の最小の整数を返す。
【0231】
スクランブルビットシーケンスは、最初のFLOOR((L+LMIC)/32)回のKDF呼び出しのKDF出力全体と、最後のKDF呼び出しの出力のR=8(L+LMIC-32*FLOOR((L+LMIC)/32))個の最下位ビットとの連結に設定される。LSBの代わりに、R個のビットの任意のサブセットが選択されてもよい。FLOOR(x)は、x以下の最大の整数を返す。
【0232】
(TS33.303のA.6に関連する)ディスカバリ用のメッセージ固有機密性鍵ストリームを計算するとき、TS33.220[5]の付録Bに記載されている各KDF呼び出しへの入力Sを形成するために次のパラメータが使用される。
- FC=0x4D
- P0=ディスカバリスロットに関連付けられたUTCベースのカウンタ(6.1.3.4.3.6項を参照)。
- L0=上記の長さ(すなわち、0x00 0x04)。
- P1=メッセージフラグメントインデックス。
- L1=上記の長さ(すなわち、0x00 0x02)。
- P2=(Key_calc_mask AND (Message||MIC))(小項6.1.3.4.3.6を参照)
- L2=上記の長さ(すなわち、0x00 0x1B)。
【0233】
入力鍵は256ビットDUCK。
【0234】
長さLのディスカバリメッセージの場合、合計CEIL(L/32)回のKDF呼び出しが必要となり、それぞれが異なるP1値を有する。MICを暗号化する必要がある場合は、LMICも含める必要があることに留意されたい。CEIL(x)は、x以上の最小の整数を返す。
【0235】
メッセージ固有機密性鍵ストリームは、最初のFLOOR(L/32)回のKDF呼び出しのKDF出力と、最後のKDF呼び出しの出力のR=8(L-32*FLOOR(L/32))個の最下位ビットとの連結に設定される。R個のLSBの代わりに、Rビットの任意のサブセットであってもよい。FLOOR(x)は、x以下の最大の整数を返す。
【0236】
追加の変更の可能性としては、暗号化および/またはスクランブルの際にKDFではなくNEAアルゴリズムを使用することが挙げられる。
【0237】
これは、(UTCベースのカウンタの計算方法のために)鍵ストリームシーケンスをより頻繁に生成する必要があるので、暗号化をする際に有用であり得る。
【0238】
これは、暗号化がメッセージのごく一部のみ(例えば、ディスカバリメッセージの最後の方のバイトのみ)に対してのみ行われる場合においてスクランブルを行うときに役立つ。
【0239】
この場合、128-NEAアルゴリズムが使用されている場合、NEAアルゴリズムの入力鍵は、DUCK(またはDUSK)の128LSBであってもよい。NEAアルゴリズムの32ビットカウントはUTCベースのカウンタに設定され得、BEARERは所定のバイナリ値(例えば、BEARER=0000)に設定され得、DIRECTIONは所定の値(例えば、モデルAディスカバリメッセージもしくは最初のモデルBディスカバリメッセージである場合はDIRECTION=0、またはモデルBの2番目のディスカバリメッセージの場合はDIRECTION=1)に設定され得る。長さフィールドには、完全性保護を必要とするディスカバリメッセージ(の一部)の長さを含める必要がある。
【表12】
【0240】
追加の変更の可能性としては、KDFベースのMICアプローチの代わりにNIAアルゴリズムを使用することが挙げられる。この場合、128-NIAアルゴリズムが使用されている場合、NIAアルゴリズムの入力鍵はDUIKの128LSBであってもよい。NIAアルゴリズムの32ビットカウントはUTCベースのカウンタに設定され得、BEARERは所定のバイナリ値(例えば、BEARER=0000)に設定され得、DIRECTIONは所定の値(例えば、モデルAディスカバリメッセージもしくは最初のモデルBディスカバリメッセージである場合はDIRECTION=0、またはモデルBの2番目のディスカバリメッセージの場合はDIRECTION=1)に設定され得る。長さフィールドには、完全性保護を必要とするディスカバリメッセージ(の一部)の長さを含める必要がある。
【0241】
追加の変更の可能性としては、暗号化およびスクランブルの並列処理が挙げられる。この場合、TS33.303のセクション6.1.3.4.3.2に記載されており、かつ上記に含まれる、基礎となるアルゴリズムが次のように実現される。
【0242】
上記アルゴリズムでは、既に説明したように、パフォーマンスの目的で、6行目のHが(Key_calc_mask AND (メッセージ||MIC)))のハッシュに送られる。8行目のCTは、複数の32バイトのフラグメントとして計算され、暗号化およびスクランブルが同時に実行される。これは、AVX2などのSIMD(Single Insturction on Multiple pieces of Data)命令を有するコンピュータアーキテクチャで役立つ。上記アルゴリズムではMICも暗号化される。MICも暗号化すると、暗号化およびスクランブルの両方でループ長が同じになるという利点がある。上記アルゴリズムでは、12行目で、メッセージの最後の方のバイト(<32)の暗号化/スクランブルが計算される。
【0243】
別の追加の潜在的な変形例では、ディスカバリメッセージの大部分は暗号化されない。例えば、メタデータなどの任意選択のフィールドの暗号化は、アプリケーション層に任せられるため、実行されない。しかし、追跡を避けるために、ディスカバリメッセージ全体がスクランブルされる。以下のアルゴリズムでは、任意選択のフィールドが固定フィールドの前に配置される。
【表13】
【0244】
上記と類似する別の追加の潜在的な変形例では、ディスカバリメッセージの一部、例えば、固定フィールドのみが完全性/暗号化保護され、ディスカバリメッセージ全体がスクランブルされる。主な理由は、ディスカバリメッセージ内の一部のフィールドのセキュリティはアプリケーションに任せられる可能性があるが(例えば、メタデータ)、セキュリティ機能はそれでも、ディスカバリメッセージを送信するUEを追跡できないようにする必要があるからである。
【0245】
別の追加の潜在的な変形例では、ディスカバリメッセージの保護はまずメッセージの最初の部分(例えば、最初の32バイト)に適用され、その後、メッセージの残りの(または2番目の)部分に適用される。ここでの目標は、ディスカバリセキュリティルーチンによってスクランブル/暗号化/完全性保護される(メッセージの最初の部分に位置する)固定フィールドのサイズをできるだけ短く、例えば32バイト以下に保つことである。これにより、ソースレイヤ2 ID、宛先レイヤ2 ID、リレーサービスコード、アナウンサ情報、または追加パラメータなどのディスカバリメッセージフィールドの処理を、単一のKDF呼び出しを使用して可能な限り効率的に実行することができる。別の理由は、メッセージ長が長い場合、例えば9000バイトに近い場合、攻撃者が実際の短いディスカバリメッセージを変更して、長いメッセージ長を示すおそれがあるという事実に関連している。
【0246】
攻撃者は、長さフィールドの特定のビットを反転することで長さを変更できる。攻撃者がこれをできる理由は、スクランブルがXOR演算によって行われるからである。これにより、受信側UEは、ディスカバリメッセージ全体に関連付けられたMICのスクランブル解除、復号、および最終的なチェックに多大なエネルギーを費やす可能性がある。これにより、例えばサービス拒否攻撃が容易になる可能性がある。したがって、代替案は、初期ステップでディスカバリメッセージの最初の部分(例えば、最初の32バイト)のみを処理(スクランブル解除、復号、および完全性チェック)することにある。メッセージの最初の部分に関連付けられたMIC検証が成功し、メッセージの最初の部分が、2番目の部分(例えば、長さフィールド>32バイト)の存在を示している場合、受信側UEはメッセージの残りの部分の処理(スクランブル解除、復号、完全性チェック)に進むことができる。したがって、ディスカバリメッセージは2つのMIC、すなわち、最初の32-LMICバイト用のMIC(例えば、MICの長さがLMIC=4バイトの場合は28バイト)と、メッセージの残りのバイト用の第2のMICとを含む可能性がある。ディスカバリメッセージはまた、メッセージの最初の部分、例えばメッセージの最初の32バイトの中に、メッセージの残りの部分から計算された(切り捨てられた)ハッシュHと、メッセージの最初の部分の完全性を検証する(Hの完全性を検証することを含む)MICとを含み得る。メッセージの最初の部分の中のMICの検証が成功した場合、受信側UEはメッセージの残りの部分の処理に進むことができる。メッセージの残りの部分の完全性検証は、メッセージの残りの部分から計算されたハッシュ値が、メッセージの最初の部分に含まれ、かつメッセージの最初の部分に含まれるMICを用いて検証される値Hと等しいかをチェックすることによって行われる。Hは、平文形式、暗号化された形式、またはスクランブルされた形式のメッセージの2番目の部分の(切り捨てられた)ハッシュを指す可能性があることに留意されたい。この最後のケース(スクランブルされた形式)では、受信側UEは、メッセージの2番目の部分がまだスクランブルされている状態(すなわち、受信直後)で、2番目の部分の切り捨てられたハッシュを計算し、それをメッセージの最初の部分に含まれていたH値と比較することができる。これが成功した場合、受信側UEはメッセージの2番目の部分のスクランブルの解除に進むことができる。MICは、TS33.303の項6.1.3.4.3.4に従って計算され得る。
【0247】
ディスカバリメッセージを送信するときのメッセージの処理は次の通りである。
1.ディスカバリメッセージを形成する(例えば、プレフィックスのみが割り当てられている場合はサフィックスを追加する)。
2.メッセージの最初の部分用にDUIKが提供された場合はMICを計算し、そうでない場合はMICを全てゼロに設定する。
3.DUCKを受信した場合、メッセージ固有機密性をメッセージの最初の部分に追加する。
4.ステップ3の出力にMICを添付する。
5.DUSKを受信した場合、ステップ4の出力にスクランブルを追加する。
6.DUIK2が提供された場合、および/またはメッセージの2番目の部分が完全性保護を必要とする場合はMICを計算し保護、そうでない場合はMICを全てゼロに設定する。
7.DUCK2が受信された場合、および/またはメッセージの2番目の部分が機密性保護を必要とする場合、メッセージ固有機密性をメッセージの2番目の部分に追加する。
8.ステップ7の出力にMICを添付する。
9.DUSK2が受信された場合、および/またはメッセージの2番目の部分がスクランブル保護を必要とする場合、ステップ8の出力にスクランブルを追加する。
【0248】
このアルゴリズムでは、DUIK2、DUSK2、DUCK2は、DUIK、DUSK、DUCKに対応してもよく、または異なる鍵であってもよい(例えば、アプリケーションに依存するもの)。2番目の部分が保護を必要とするか否かはポリシーに基づいている可能性がある。メッセージを作成するとき、上記ステップのうちの一部が配置変更されてもよく、例えば、ステップ6がステップ2の後に、ステップ7がステップ3の後に、ステップ8がステップ4の後に、ステップ9がステップ5の後に行われてもよい。同様に、ステップ6が、(平文)メッセージの2番目の部分の切り詰められたハッシュHを計算し、この計算をステップ2の前に実行するように変更されてもよい。その場合、ステップ2で、メッセージの最初の部分に含まれるMICが、入力としてHを使用して計算され、Hは、メッセージの最初の部分内のフィールドとして含められる。同様に、ステップ9が、メッセージの2番目の部分のスクランブルされたバージョンから切り捨てられたハッシュH’を追加で計算し、この計算をステップ2の前に実行するように変更されてもよい。その場合、ステップ2で、入力としてH’を使用してMICが計算され、H’は、メッセージの最初の部分のフィールドとして含められる。
【0249】
メッセージの受信時、受信側UEはまずメッセージの最初の部分を処理し、次にメッセージの2番目の部分を処理すべきである。
1.DUSKが受信された場合は、メッセージの最初の部分のスクランブルを解除する。
2.任意選択で、一致のチェックが行われる。一致が存在しない場合は処理が中止される。
3.DUCKが受信された場合は、メッセージの最初の部分を復号する。
4.任意選択で、完全照合を行い、一致しない場合は処理を中止する。
5.DUIKが受信された場合は、メッセージの最初の部分のMICを検証する。MIC検証が失敗した場合は、処理を中止する。
6.メッセージの最初の部分に長さフィールド>32が存在するか、またはメッセージの最初の部分のマスクがさらなるフィールドを示している場合において、DUSK2が受信された場合、および/またはメッセージの2番目の部分にスクランブル保護が必要な場合は、メッセージの2番目の部分のスクランブルを解除する。
7.メッセージの最初の部分に長さフィールド>32が存在するか、またはメッセージの最初の部分のマスクがさらなるフィールドを示している場合において、DUCK2が受信された場合、および/またはメッセージの2番目の部分に暗号化保護が必要な場合は、メッセージの2番目の部分を復号する。
8.メッセージの最初の部分に長さフィールド>32が存在するか、またはメッセージの最初の部分のマスクがさらなるフィールドを示している場合において、DUIK2が受信された場合、および/またはメッセージの2番目の部分に完全性保護が必要な場合は、メッセージの2番目の部分の完全性を検証する。
【0250】
上記したように、メッセージの2番目の部分の完全性保護は、メッセージの2番目の部分に含まれるMICを用いることによって、またはメッセージの2番目の部分のフィンガープリントHをメッセージの最初の部分に含めることによって達成され得る。フィンガープリントHは、メッセージの最初の部分に含まれるMICを用いることによって検証される。メッセージの2番目の部分の暗号化/スクランブルは、KDFを1回以上呼び出すことによって実行される。メッセージ全体の全体的な暗号化/スクランブルは、KDFを複数回呼び出すことによって実行される。例えば、メッセージの最初の部分が、メッセージのスクランブルされた2番目の部分の関数(例えば、切り捨てられたハッシュ)に対応するフィンガープリントH’を含む場合、ステップ5の後、受信側UEは、受信したメッセージのスクランブルされた2番目の部分から取得されたハッシュ値が、受信および検証されたH’値と一致するかをチェックする。一致する場合、受信側UEはスクランブルを解除し(ステップ6)、復号を行う(ステップ7)。完全性検証(ステップ8)は厳密には必須ではない。
【0251】
ディスカバリメッセージは、常に存在し、パフォーマンス上の理由から長さが制限されたフィールドをいくつか有する可能性があるため、最後のアルゴリズムで説明したような処理が適している。さらに、追加の(任意選択の)フィールドは、アプリケーションによって完全性保護/暗号化され得る。しかし、追跡を防ぐために、全てのフィールド、例えばディスカバリメッセージ全体にスクランブルが適用される可能性がある。また、そのような大量のメッセージが変更されていないことを保証することが必要となる可能性がある。例えば、TS24.334の項11.2.5は、ディスカバリメッセージの定義、例えば、オープンProSe直接ディスカバリ用のPC5ディスカバリメッセージの内容を含む。
【表14】
【0252】
さらに、次のことが提案されている。「UEの実装形態に応じて、アプリケーション層ディスカバリメッセージは、PC5上のユーザトラフィックとして、または項6.3.2.1項で指定されているPC5直接ディスカバリメッセージ内のメタデータの一部として交換される。後者の場合、PC5直接ディスカバリメッセージは、アプリケーション層メタデータ情報(例えば、グループディスカバリ用のアプリケーション層ディスカバリメッセージ)を有する追加フィールドを含み得る。この追加フィールドの形式および内容は3GPP(登録商標)の範囲外である。結果として得られるPC5直接ディスカバリメッセージのサイズが大きすぎる場合、アプリケーション層情報を含むPC5直接ディスカバリメッセージのパフォーマンスが影響を受け、例えば、遅延が長くなり、信頼性が低下する。」情報がメタデータの一部として交換される場合、メッセージは、LTEのメッセージサイズ(例えば、23バイト)よりも長くなる可能性がある。したがって、最初の、例えば23バイトまたは28バイト(ディスカバリメッセージの最初の部分)は、上記したように、LTEで行われるのと同様の方法で完全性/暗号化保護され、メタデータを含むディスカバリメッセージ全体がスクランブルされる可能性がある。メッセージの最初の部分は、メッセージのスクランブルされた2番目の部分の切り捨てられたハッシュを含み得る。メッセージの最初の部分が最初に処理(スクランブル解除、復号、完全性チェック)された後、メッセージの2番目の部分の完全性がH値を用いて検証され得、最後にメッセージの2番目の部分のスクランブルが解除され得る。
【0253】
メッセージの最初の部分が最初のステップで処理(スクランブル、暗号化、完全性検証)され、メッセージの2番目の部分が2番目のステップで処理(スクランブル、暗号化、完全性検証)されたとしても、送信側UEによるディスカバリメッセージのスクランブル(または暗号化)、および受信側UEによるディスカバリメッセージのスクランブル解除(または復号)は依然として、複数回のKDF呼び出しを必要とすることに留意されたい。したがって、以前に示したように、スクランブル/暗号化のための疑似乱数列の生成は依然として実行される可能性がある。
【0254】
ある代替的実施形態では、メタデータなどの一部の(任意選択の)フィールドは、アプリケーションの決定に従って暗号化/完全性保護され得る。しかし、ディスカバリメッセージは、アプリケーションがメタデータの暗号化/完全性保護するために使用する対称鍵(例えば、DUIK2、DUSK2、DUCK2の生成に使用されるマスター鍵)を保持するために使用できる新しいフィールドを含むように拡張されている。新しいフィールドであるメタデータ鍵も含めることができ、同様に保護することができる。このような新しいフィールドが存在する場合(例えば、0x000・・・000以外の値)、これはメタデータなどの他のフィールドの復号/完全性検証に使用される。
【0255】
上記実施形態の例示的なインスタンスでは、PC5インターフェースを介してディスカバリメッセージを保護するために3つのタイプのセキュリティアルゴリズム、すなわち、TS33.303[4]の項6.1.3.4.3で定義されている完全性保護、スクランブル保護、およびメッセージ固有機密性が使用される。これらのアルゴリズムは、可変長のディスカバリメッセージを保護するようにTS33.303[4]を拡張するスクランブルアルゴリズムおよび機密性アルゴリズムの以下のように変更された処理とともに適用される。
【0256】
スクランブル保護:送信(受信)時の全体的プロセス
UEがメッセージを送信(または受信)するとき、以下のステップに従ってスクランブル(スクランブル解除)が行われる。
a)このスクランブル計算のみを目的として、UTCベースのカウンタの4つのLSBをゼロに設定する。
b)鍵付きハッシュ関数を通過されるDUSKおよびUTCベースのカウンタ(ステップ1のように変更されたもの)からタイムハッシュビットシーケンスを計算する。
a.タイムハッシュビットシーケンス=“”
b.i=0~FLOOR((L+LMIC)/32))について、
i.タイムハッシュビットシーケンス=タイムハッシュビットシーケンス||KDF(DUSK,UTCベースのカウンタ,i)
c.タイムハッシュビットシーケンス=タイムハッシュビットシーケンス||LSB(KDF(DUSK,UTCベースのカウンタ,FLOOR((L+LMIC)/32))+1),8*(L+LMIC-32*FLOOR((L+LMIC)/32)))
c)タイムハッシュビットシーケンスを、処理中のディスカバリメッセージ全体(MICを含む)とXORする。
【0257】
ここで、Lはディスカバリメッセージの長さであり、LMICはMICの長さ(例えば、4バイト)であり、||は連結を示し、LSB(x,b)は、xのb個の最下位ビットを返し、FLOOR(x)は、x以下の最大の整数を返し、CEIL(x)は、x以上の最小の整数を返し、KDF()は、次のような鍵導出関数を指す。
【0258】
ディスカバリ用のタイムハッシュビットシーケンスを計算するとき、TS33.220[5]の付録Bに記載されているKDFへの入力Sを形成するために次のパラメータが使用される。
- FC=一意の識別子。
- P0=ディスカバリスロットに関連付けられたスクランブル用のUTCベースのカウンタ(小項6.1.3.4.3.5を参照)。
- L0=上記の長さ(すなわち、0x00 0x04)。
- P1=メッセージフラグメントインデックス。
- L1=上記の長さ(すなわち、0x00 0x02)。
【0259】
入力鍵は256ビットDUSK。
【0260】
L1のバイト長は、最大9000バイトを保護するために必要な最小バイト長である2である。P1は、ディスカバリメッセージ内の32バイトのフラグメントまたはブロックを指す。
【0261】
長さLのディスカバリメッセージの場合、合計CEIL((L+LMIC)/32)回のKDF呼び出しが必要となり、それぞれが異なるP1値を有する。
【0262】
スクランブルビットシーケンスは、最初のFLOOR((L+LMIC)/32)回のKDF呼び出しのKDF出力全体と、最後のKDF呼び出しの出力のR=8(L+LMIC-32*FLOOR((L+LMIC)/32))個の最下位ビットとの連結に設定される。
【0263】
機密性保持:送信(受信)時の全体的プロセス
UEがメッセージを送信(または受信)するとき、以下のステップに従って暗号化(復号)が行われる。
a)Key_calc_mask=(Encrypted_bits_mask XOR 0xFF・・・FF)||0xFFFFFFFFを計算する
b)KDFを使用して次のように鍵ストリームを取得する
a.鍵ストリーム=“”
b.HH=(Key_calc_mask AND (メッセージ||MIC))あるいは
HH=Hash((Key_calc_mask AND (メッセージ||MIC)))
c.i=0~FLOOR(L/32)について、
i.鍵ストリーム=鍵ストリーム||KDF(DUCK,UTCベースのカウンタ,i,HH)。
d.鍵ストリーム=鍵ストリーム||LSB(KDF(DUCK,UTCベースのカウンタ,FLOOR(L/32)+1,HH),8*(L-32*FLOOR(L/32)))
a)メッセージ内へXOR(Keystream AND Encrypted_bits_mask)する。
【0264】
ここで、Lはディスカバリメッセージの長さであり、LMICはMICの長さ(例えば、4バイト)であり、||は連結を示し、LSB(x,b)は、xのb個の最下位ビットを返し、FLOOR(x)は、x以下の最大の整数を返し、CEIL(x)は、x以上の最小の整数を返し、KDF()は、次のような鍵導出関数を指す。
【0265】
ディスカバリ用のメッセージ固有機密性を計算するとき、TS33.220[5]の付録Bに記載されているKDFへの入力Sを形成するために次のパラメータが使用される。
【0266】
- FC=一意の識別子
- P0=ディスカバリスロットに関連付けられたUTCベースのカウンタ。
- L0=上記の長さ(すなわち、0x00 0x04)。
- P1=メッセージフラグメントインデックス。
- L1=上記の長さ(すなわち、0x00 0x02)。
- P2=HH。
- L2=HHの長さ。
【0267】
入力鍵は256ビットDUCKとする。
【0268】
長さLのディスカバリメッセージの場合、合計CEIL(L/32)回のKDF呼び出しが必要となり、それぞれが異なるP1値を有する。MICを暗号化する必要がある場合は、LMICも含める必要がある。
【0269】
メッセージ固有機密性鍵ストリームは、最初のFLOOR(L/32)回のKDF呼び出しのKDF出力と、最後のKDF呼び出しの出力のR=8(L-32*FLOOR(L/32))個の最下位ビットとの連結に設定される。
【0270】
上記ソリューションではMICも暗号化され得る。MICが暗号化される場合、長さは(Lのみではなく)L+LMICに設定する必要があり、ここでLMICはMICの長さである。
【0271】
上記実施形態の例示的なインスタンスでは、PC5インターフェースを介してディスカバリメッセージを保護するために3つのタイプのセキュリティアルゴリズム、すなわち、TS33.303[4]の項6.1.3.4.3で定義されている完全性保護、スクランブル保護、およびメッセージ固有機密性が使用される。これらのアルゴリズムは、以下を実行することによってディスカバリメッセージを保護するように拡張される。
【0272】
まず、固定フィールドを含むディスカバリメッセージの短い最初の部分を処理(完全性保護、機密性、スクランブル)し、成功した場合、
その後、メタデータなどの可変長の任意選択のフィールドを含むメッセージの長い2番目の部分を処理(完全性保護、機密性、スクランブル)する。
【0273】
図2は、ディスカバリメッセージの構造を示す。最初の短い部分には、リレーサービスコードなどの固定フィールドが含まれる。これらのフィールドには以下のものが含まれる。
メッセージの2番目の部分に任意選択のフィールドが存在することを示す1ビット長の任意選択のフィールドO、
メッセージの2番目の部分の任意選択のフィールドの長さを示す14ビット長のフィールドL、
メッセージの2番目の部分から取得された25ビット長の切り捨てられたハッシュフィールドH、および
メッセージの最初の部分に含まれるフィールド上で計算された32ビットのメッセージ完全性コード(MIC)。
【0274】
可能なインスタンスとして、フィールドO、L、Hの長さがそれぞれ1ビット、14ビット、および25ビットであるものが挙げられる。合計40ビットなので、メッセージの最初の部分の合計長は32バイトになる。これらのフィールドは暗黙的に送信される可能性もある。例えば、メタデータの最初の3バイトはメタデータIEおよび長さを含む。
【0275】
ディスカバリメッセージを送信するときのメッセージの処理は次の通りである。
1.メッセージの2番目の部分用にDUIKが提供された場合はMIC2を計算し、そうでない場合はMIC2を全てゼロに設定する。
2.DUCKが受信された場合、および/またはメッセージの2番目の部分が機密性保護を必要とする場合、メッセージ固有機密性をメッセージの2番目の部分に追加する。
3.ステップ3の出力にMIC2を添付する。
4.DUSKを受信した場合、ステップ4の出力にスクランブルを追加する。
5.メッセージの2番目の部分(ステップ4の出力)の切り捨てられたハッシュHを計算する。
6.ディスカバリメッセージを形成し(例えば、プレフィックスのみが割り当てられている場合はサフィックスを追加し)、フィールドO、L、およびHを添付する。
7.DUIKが提供された場合はメッセージの最初の部分(最大H)用のMIC1を計算し、そうでない場合はMIC1を全て0に設定する。
8.DUCKを受信した場合、メッセージ固有機密性をメッセージの最初の部分に追加する。
9.ステップ8の出力にMIC1を添付する。
10.DUSKを受信した場合、ステップ9の出力にスクランブルを追加する。
11.ステップ4の出力をステップ10の出力に添付して、完全なディスカバリメッセージを作成する。
【0276】
メッセージの2番目の部分は、独立したメッセージ完全性コードMIC2を含む。メッセージの2番目の部分の完全性保護は、ディスカバリメッセージの最初の部分に含まれるメッセージ完全性コードMIC1を用いて検証されるメッセージの2番目の部分の切り捨てられたハッシュによって常に有効になるため、これは必ずしも必要ではない可能性がある。
【0277】
ステップ2、3、4およびステップ7、8、9はTS33.303と同じ順序に従う。MICが常に保護されるように、ステップ3~4およびステップ8~9を入れ替えて配置変更することが好ましい。
【0278】
ディスカバリメッセージの受信時の処理は次の通りである。受信側UEはまずメッセージの最初の部分を処理し、次にメッセージの2番目の(任意選択の)部分を処理する。特に、後続するステップは以下の通りである。
1.DUSKが受信された場合は、メッセージの最初の部分のスクランブルを解除する。
2.任意選択で、一致のチェックが行われる。一致が存在しない場合は処理が中止される。
3.DUCKが受信された場合は、メッセージの最初の部分を復号する。
4.任意選択で、完全照合を行い、一致しない場合は処理を中止する。
5.DUIKが受信された場合は、メッセージの最初の部分のMIC1を検証する。MIC1検証が失敗した場合は、処理を中止する。
6.長さフィールド>32がメッセージの最初の部分に存在するか、メッセージの最初の部分内のマスクが追加のフィールドまたは任意選択のフィールドを示している場合、
a.メッセージのスクランブル/暗号化/完全性保護された2番目の部分の切り捨てられたハッシュが、メッセージの最初の部分内に含まれ、メッセージの最初の部分内で検証される切り捨てられたハッシュフィールドHに対応する場合。
i.DUSKが受信された場合は、メッセージの2番目の部分のスクランブルを解除する。
ii.DUCKが受信された場合は、メッセージの2番目の部分を復号する。
iii.DUIKが受信された場合は、メッセージの2番目の部分の完全性を検証する。
【0279】
ステップ6.aで完全性チェックが既に実行されているため、ステップ6.a.iiiは必ずしも必要ではない可能性がある。
【0280】
ディスカバリメッセージ(の最初の部分および2番目の部分)をスクランブルするために使用されるスクランブルアルゴリズムは、TS33.303[4]を拡張する以下のステップに従って実行される。
【0281】
1.このスクランブル計算のみを目的として、UTCベースのカウンタの4つのLSBをゼロに設定する。
【0282】
2.鍵付きハッシュ関数を通過されるDUSKおよびUTCベースのカウンタ(ステップ1のように変更されたもの)からタイムハッシュビットシーケンスを計算する。
a.タイムハッシュビットシーケンス=“”
b.i=0~FLOOR((L+2*LMIC)/32)について、
タイムハッシュビットシーケンス=タイムハッシュビットシーケンス||KDF(DUSK,UTCベースのカウンタ,i)
c.タイムハッシュビットシーケンス=タイムハッシュビットシーケンス||LSB(KDF(DUSK,UTCベースのカウンタ,FLOOR((L+2*LMIC)/32)+1),8*(L+2*LMIC-32*FLOOR((L+2*LMIC)/32)))
【0283】
3.タイムハッシュビットシーケンスを、処理中のディスカバリメッセージ全体(MICを含む)とXORする。
【0284】
ここで、Lはディスカバリメッセージの長さであり、LMICはMICの長さ(例えば、4バイト)であり、||は連結を示し、LSB(x,b)は、xのb個の最下位ビットを返し、FLOOR(x)は、x以下の最大の整数を返し、CEIL(x)は、x以上の最小の整数を返し、KDF()は、次のような鍵導出関数を指す。
【0285】
ディスカバリ用のタイムハッシュビットシーケンスを計算するとき、TS33.220[5]の付録Bに記載されているKDFへの入力Sを形成するために次のパラメータが使用される。
- FC=一意の識別子。
- P0=ディスカバリスロットに関連付けられたスクランブル用のUTCベースのカウンタ。
- L0=上記の長さ(すなわち、0x00 0x04)。
- P1=メッセージフラグメントインデックス。
- L1=上記の長さ(すなわち、0x00 0x02)。
【0286】
入力鍵は256ビットDUSKとする。
【0287】
L1のバイト長は、最大9000バイトを保護するために必要な最小バイト長である2である。P1は、ディスカバリメッセージ内の32バイトのフラグメントまたはブロックを指す。
【0288】
長さLのディスカバリメッセージの場合、合計CEIL((L+2*LMIC)/32)回のKDF呼び出しが必要となり、それぞれが異なるP1値を有する。
【0289】
スクランブルビットシーケンスは、最初のFLOOR((L+2*LMIC)/32)回のKDF呼び出しのKDF出力全体と、最後のKDF呼び出しの出力のR=8(L+2*LMIC-32*FLOOR((L+2*LMIC)/32))個の最下位ビットとの連結に設定される。
【0290】
機密性保護は、TS33.303[4]を拡張する以下のステップに従って実行される。
【0291】
1.Key_calc_mask=(Encrypted_bits_mask1 XOR 0xFF・・・FF)||0xFFFFFFFF||(Encrypted_bits_mask2 XOR 0xFF・・・FF)||0xFFFFFFFFを計算する
注:Encrypted_bits_mask1およびEncrypted_bits_mask2は、TS33.303のEncrypted_bits_maskと同様の役割を果たすが、ディスカバリメッセージの最初の部分および2番目の部分に独立して適用される。
【0292】
2.KDFを使用して次のように鍵ストリームを取得する
a.鍵ストリーム=“”
b.HH=(Key_calc_mask AND (Message1||MIC||Message2||MIC2))あるいは
HH=Hash((Key_calc_mask AND (Message1||MIC||Message2||MIC2)))
c.i=0~FLOOR(L/32)について、
i.鍵ストリーム=鍵ストリーム||KDF(DUCK,UTCベースのカウンタ,i,HH)。
d.鍵ストリーム=鍵ストリーム||LSB(KDF(DUCK,UTCベースのカウンタ,FLOOR(L/32)+1,HH),8*(L-32*FLOOR(L/32)))
【0293】
3.メッセージ内へXOR(Keystream AND Encrypted_bits_mask)する。
ディスカバリ用のメッセージ固有機密性を計算するとき、TS33.220[5]の付録Bに記載されているKDFへの入力Sを形成するために次のパラメータが使用される。
- FC=一意の識別子
- P0=ディスカバリスロットに関連付けられたUTCベースのカウンタ。
- L0=上記の長さ(すなわち、0x00 0x04)。
- P1=メッセージフラグメントインデックス。
- L1=上記の長さ(すなわち、0x00 0x02)。
- P2=HH。
- L2=HHの長さ。
【0294】
入力鍵は256ビットDUCKとする。
【0295】
長さLのディスカバリメッセージの場合、合計CEIL((L)/32)回のKDF呼び出しが必要となり、それぞれが異なるP1値を有する。
【0296】
メッセージ固有機密性鍵ストリームは、最初のFLOOR((L)/32)回のKDF呼び出しのKDF出力と、最後のKDF呼び出しの出力のR=8(L-32*FLOOR((L)/32))個の最下位ビットとの連結に設定される。
【0297】
メッセージの最初の部分および2番目の部分の保護も、異なるアルゴリズムを使用して行われてもよい。例えば、メッセージの最初の部分の完全性および機密性の保護は、TS33.303でのようにPRFを使用して上記のように実行され得る。メッセージの2番目の部分の完全性および機密性の保護は、標準5G機密性アルゴリズム(例えば、128-NEA1、128-NEA2、128-NEA3)および完全性アルゴリズム(例えば、128-NIA1、128-NIA2、128-NIA3)のうちの1つを使用して実行され得る。
【0298】
どのNIAまたはNEAアルゴリズムが使用されるかは、ディスカバリメッセージの最初の部分で通知されてもよい。
【0299】
TS33.303に記載されている保護機構を再利用することで256ビットを超える長さのディスカバリメッセージを保護するというTS33.503 v0.2.0の問題に対処する提案されるソリューションは、次の変更を必要とする。(a)TS33.303のA.5では、タイムハッシュビットシーケンス鍵ストリームがKDFの出力のL個の最下位ビットに設定され、ここで、Lは、スクランブルされた後にMin(ディスカバリメッセージの長さ-16,256)に設定されるディスカバリメッセージのビット長である。注:スクランブルされるディスカバリメッセージの最大長は256ビットに制限され、(b)TS33.303の項6.1.3.4.3.2では、DUIKが提供されなかった場合はMICが32ビットのランダム文字列に設定され、(c)メッセージ固有機密性は、TS33.501[3]の付録Dに規定されている128-NEAアルゴリズムによって実現される。TS33.501の付録Dに記載されている128-NEAアルゴリズムへの入力パラメータは次の通りである。DUCKの出力の最下位128ビットに設定されるKEY。KDF(DUCK,UTCベースのカウンタ,MIC)、UTCベースのカウンタに設定されるCOUNT、0x00に設定されるBEARER AND DIRECTION、ディスカバリメッセージの長さ-メッセージタイプの長さに設定されるLENGTH、UTCベースのカウンタLSBおよびMIC。次に、暗号化アルゴリズムの出力鍵ストリーム(output_keystream)がEncrytped_bits_maskを用いてマスクされ、メッセージ固有機密性保護用の最終的な鍵ストリーム(KEYSTREAM)が生成される。ここで、KEYSTREAM=output_keystream AND (Encrypted_bits_mask||0xFF・・・FF)であり、Encrypted_bits_maskの長さはMin(ディスカバリメッセージの長さ-48,224)に設定される。KEYSTREAMは、メッセージ固有機密性保護のためにディスカバリメッセージとXOR演算され、(d)メッセージ固有機密性のための暗号化アルゴリズムは、ディスカバリリクエスト手順中にUEで設定される。
【0300】
しかし、この提案されるソリューションには多くの問題がある。
【0301】
まず、KEYがKDF(DUCK,UTCベースのカウンタ,MIC)として計算される。この理由は、DUCKからセッション鍵を生成するためである。しかし、(i)MICを含めるには、MICを平文で交換する必要があり、(ii)メッセージを暗号化する前にKDFを計算する必要があるため、CPU負荷が増加し、(iii)同じディスカバリメッセージが使用される場合、カウンタがラップアラウンドすると同じKEYが生成されるので、この方法でセッション鍵を導出するとDUCKの寿命が伸びない。この問題を克服するための一実施形態は、DUCKもしくはその一部、またはDUCKから(KDFによって)直接導出された鍵を使用することにある。一方、このアプローチには、上記実施形態で説明したように、メッセージ全体をKDFに送る必要なく、(MICがKDFへの入力として使用されるため)メッセージ依存の鍵ストリームを生成できるという利点がある。NEAアルゴリズムを用いて生成される後続の鍵ストリームは、この特性を継承する。
【0302】
セッション鍵が生成される場合にこの問題を克服するための一実施形態は、KEY=KDF(DUCK,UTC-time-in-seconds/rotation_rate)を生成することにあり、ここで、rotation_rateは、KEYをローテーションする必要がある頻度を示す。例えば、rotation_rateは86400秒(1日)であってもよく、これは、1日に1回新しいKEYが生成されることを意味する。これにより、CPU負荷が軽減され、DUCKの寿命が長くなる。
【0303】
第二に、メッセージ固有機密性のための暗号化アルゴリズムが、ディスカバリリクエスト手順中にUEで設定される。例えば、モデルAの制限付きディスカバリでは、リモートUE(またはリレーUE)が、そのUEがサポートする暗号化アルゴリズムのリストを含む、自身のPC5 UEセキュリティ機能を通知する。応答では、コアネットワーク(例えば、アナウンスを行うUEのHPLMN内の5G DDNMF)が、選択されたPC5暗号化アルゴリズムをディスカバリ応答メッセージ内に含める必要がある。この問題は、複数のアナウンスするUEおよび複数の監視するUEが存在する可能性があり、ある選択されたアルゴリズムをサポートする全てのUEに対して、セキュリティ機能が対応できない可能性があるために生じる。
【0304】
この問題を克服する一実施形態は、コアネットワークによって選択されたアルゴリズムを含まない、サポートしている暗号アルゴリズムのリストをUEが送信した場合、コアネットワークが、サポートされていないアルゴリズムの指標を与えることにある。
【0305】
この問題を克服する一実施形態では、サポートされていないアルゴリズムの表示、または自身がサポートしていないアルゴリズムの選択を受信したUEに大して、そのサービスに関連付けられたディスカバリメッセージを送信または処理しないことを要求する。
【0306】
DUCKが提供されない可能性があるため、メッセージの一部がスクランブル/暗号化されない可能性があり、これはプライバシーリスクにつながる。この問題を克服する一実施形態は、UEにDUCKを設定することをコアネットワークに要求し、また、UEによって送信されるディスカバリメッセージの長さが256ビットを超える場合、DUCKを適用することをUEに要求する。あるいは、UEは、256ビットより長いメッセージを保護するようにTS33.303のスクランブルアルゴリズムを更新可能な上記実施形態のうちの1つを適用しなければならない。
【0307】
TS33.303の項6.1.3.4.3.2は、MICを計算し、メッセージに機密性を適用し、MICを付加し、メッセージ全体をスクランブルする。これらのステップは、KEYSTREAMをoutput_keystream AND (Encrypted_bits_mask||0xFF・・・FF)として計算する関連する提案では変更されていない(ここで、Encrypted_bits_maskの長さはMin(ディスカバリメッセージの長さ-48,224)に設定される)。MICはメッセージの最後にあるため、そのような提案によれば、MICは常に暗号化される。したがって、そのような提案において提案されているソリューションでは、MICを取り出して、NEAアルゴリズムとともに使用されるKEYを計算することができないため、このような提案で提案されているソリューションは運用上機能することができない。この状況を解決するために、一実施形態では、以下のステップを実行するように、TS33.303の項6.1.3.4.3.2を変更することが提案される。(1)MICまたは別の完全性コンポーネントを計算し、(2)メッセージに機密性を適用し、(3)(機密性が保護された)メッセージをMICおよびその他の保護されていないフィールド(例えば、メッセージタイプ、UTCベースのカウンタLSB)に付加し、(4)メッセージ(の少なくとも最初の部分)をスクランブルする。項6.1.3.4.3.3は、メッセージの復号には、この実施形態に対応する逆の変更を要求する。
【0308】
代替的実施形態は、KEYSTREAMの計算を、output_keystream AND (0x00・・・00||Encrypted_bits_mask||0xFF・・・FF)と変更し、ここで、Encrypted_bits_maskの長さがMin(ディスカバリメッセージの長さ-48,224)に設定され、0x00・・・00の長さは48ビットであり、メッセージが272ビットより長い場合、0xFF・・・FFの長さは、ディスカバリメッセージの長さからEncrypted_bits_maskの長さを差し引いたものに等しく、それ以外の場合は0である。これが行われる場合、TS33.303の項6.1.3.4.3.2は、(1)MICまたは別の完全性コンポーネントを計算し、(2)MIC(および他の保護されていないフィールド)にメッセージを付加し、(3)メッセージに機密性を適用し、(4)メッセージをスクランブルする。ステップ(3)および(4)は入れ替えることができる。項6.1.3.4.3.3は、この実施形態に対応する逆の変更を要求する。
【0309】
代替的実施形態では、以下のステップを実行するように、TS33.303の項6.1.3.4.3.2が変更される。(1)MICまたは別の完全性コンポーネントを計算し、(2)メタデータまたはグループIDなどの任意選択のフィールドの前にMICを挿入し、(3)メッセージに機密性を適用し、(4)メッセージの(少なくとも最初の部分)をスクランブルする。ステップ(3)および(4)は入れ替えることができる。この場合、KEYSTREAMは、output_keystream AND (0x0000||Encrypted_bits_mask||0x00000000||0xFF・・・FF)として計算され、ここで、0x00000000はMICの位置に対応し、0x0000はメッセージタイプ、UTCベースのカウンタLSBの位置に対応する。項6.1.3.4.3.3は、この実施形態に対応する逆の変更を要求する。
【0310】
代替的実施形態では、以下のステップを実行するように、TS33.303の項6.1.3.4.3.2が変更される。(1)MICまたは別の完全性コンポーネントを計算し、(2)メッセージに機密性を適用し、(3)MICを挿入し、(4)メッセージ、特にメッセージの最初の部分およびメッセージの最後の4バイトをスクランブルする。ステップ(3)および(4)は入れ替えることができる。この場合、KEYSTREAMはoutput_keystream AND (0x0000||Encrypted_bits_mask||0xFF・・・FF)として計算され、ここで、0x0000は、メッセージタイプ、UTCベースのカウンタLSBの位置に対応する。項6.1.3.4.3.3は、この実施形態に対応する逆の変更を要求する。
【0311】
先述の実施形態を通じて説明したように、提案される本発明の変形例は、
図3に示すように、ネットワーク、例えば5Gネットワークとしてのセルラーネットワークに実装することができる。一次局1000が、ネットワークのあるセルにサービスを提供する。一次局1000(例えば、gNB)のカバレッジ内では、複数の二次局が一次局に接続することができる。一部の二次局は、中継局1010として動作するように適合されてもよい。このような中継局は、送信アンテナに結合された送信機1011と、受信アンテナに結合された受信機1012とを含み得る。通常、受信アンテナと送信アンテナは同じアンテナである。さらに、技術に応じて、アンテナは、MIMO、送信ダイバーシティ、および異なる周波数セットでの動作など、異なる送信/受信モードを可能にするアンテナアレイによって形成されてもよい。
【0312】
コントローラ1013、例えば、内部メモリ(例えば、ROM、EEPROM、SSD)に格納されたソフトウェアとともに動作するCPUまたはマイクロコントローラ(例えば、通信専用のマイクロプロセッサ(ベースバンドプロセッサ)、またはUEを含むデバイスのメインマイクロプロセッサ)は、送信機および受信機、並びにアンテナを制御するように適合されている。送信機、受信機、およびコントローラの一部または全てが単一のベースバンドプロセッサの一部であってもよいことに留意されたい。上記実施形態に関して、コントローラは、中継局1010と一次局1000との間の接続を確立するように適合されている。より具体的には、コントローラ1013は、一次局1000からの少なくとも1つの第1の安全なメッセージにおいて、属性またはサービスコードを含む第1の設定パラメータセットを受信するように受信機1012を設定することができる。
【0313】
コントローラ1013は、送信機1011を制御し、送信機1011に、第1の設定パラメータセットから少なくとも1つの送信される属性またはサービスコードを送信させることができる。この属性またはサービスコードは、他の局、例えば二次局1020または1030などによる受信のためにブロードキャストされてもよい。
【0314】
通常、中継局は、サイドリンク対応UEなどのUEであり得、したがって、中継局として設定された場合には中継局として動作することができる。あるいは、中継局は、アクセスポイント、gNB、フェムトセルgNBなどの別の一次局であってもよい。
【0315】
二次局1020(または同様に1030)は、典型的にはUEであり、送信機1021および受信機1022を含む。送信機1021および受信機1022は、典型的には両方、1つ以上のアンテナまたはアンテナアレイに結合される。さらに、二次局1020は、受信機1021、送信機1022、および場合によってはUEの他の要素を制御するように適合されたコントローラ1023を含む。中継局に関しては、コントローラ1023はプロセッサまたはCPUであってもよく、ソフトウェアによって動作してもよい。
【0316】
コントローラ1023は、受信部1021および送信部1022に、一次局1000との接続を確立させることができる。これは、例えば、これから行われる中継局1010とのデータ交換にリンクされた属性または中継サービスコードを含む第2の設定パラメータセットを、少なくとも1つの第2の安全なメッセージにおいて一次局1000から受信するように受信機1021を設定することを含む。
【0317】
受信機1021は、中継局1010から少なくとも1つの送信された属性またはサービスコードを受信するように構成されてもよく、コントローラは、送信された属性またはサービスコードが第2の設定パラメータセットに含まれるか、またはそれに含まれるポリシーを満たすかを判断し、送信されたサービスコードが第2のセットに含まれると判断された場合、送信機に、中継局1010との直接通信を確立させるように設定され得る。
【0318】
二次局1020および1030は中継局1010を介して相互に通信することも可能であってもよい。
【0319】
単一のユニットまたはデバイスが、請求項に記載される複数のアイテムの機能を果たし得る。複数の手段が互いに異なる従属請求項に記載されているからといって、これらの手段の組み合わせを好適に使用することができないとは限らない。
【0320】
図3および
図4に示される動作などの説明されている動作は、それぞれ、コンピュータプログラムのプログラムコード手段として、および/または関連する通信デバイスまたはアクセスデバイスの専用ハードウェアとして実装され得る。コンピュータプログラムは、他のハードウェアとともにまたは他のハードウェアの一部として、供給される光学記憶媒体またはソリッドステート媒体等の適切な媒体上で記憶および/または分配されてもよいし、インターネットまたは他の有線もしくは無線テレコミュニケーションシステムを介して等の他の形態で分配されてもよい。
【0321】
図面、開示および添付の特許請求の範囲から、開示の実施形態の他の変形例が、クレームされる発明を実施する当業者によって理解および実現され得る。特許請求の範囲において、「備える/含む」という用語は他の要素またはステップを排除するものではなく、単数形の要素は複数を除外しない。単一のプロセッサまたは他のユニットが請求項に記載される複数のアイテムの機能を果たし得る。複数の手段が互いに異なる従属請求項に記載されているからといって、これらの手段の組み合わせを好適に使用することができないとは限らない。上記説明は、本発明の特定の実施形態を詳述したものである。しかし、上記の内容がどれほど詳細に記載されているかにかかわらず、本発明は多くの方法で実施することができ、したがって開示されている実施形態に限定されないことが理解されるであろう。本発明の特定の特徴または態様を説明する際の特定の用語の使用は、その用語が関連付けられている本発明の特徴または態様の具体的特徴を含むように制限されるように再定義されていることを意味するものと解釈されるべきではないことに留意されたい。
【0322】
さらに、「A、B、およびCなどのうちの少なくとも1つ」に類似した慣用表現が使用される場合、一般にそのような構文は、当業者がその慣用表現を理解するであろう意味で意図されており、例えば、「A、B、およびCのうちの少なくとも1つを有するシステム」は、限定はされないが、Aのみ、Bのみ、Cのみ、AおよびBを一緒に、AおよびCを一緒に、BおよびCを一緒に、並びに/またはA、B、およびCを一緒に有するシステムなどを含む。「A、B、またはCなどのうちの少なくとも1つ」に類似した慣用表現が使用される場合、一般にそのような構文は、当業者がその慣用表現を理解するであろう意味で意図されており、例えば、「A、B、またはCのうちの少なくとも1つを有するシステム」は、限定はされないが、Aのみ、Bのみ、Cのみ、AおよびBを一緒に、AおよびCを一緒に、BおよびCを一緒に、並びに/またはA、B、およびCを一緒に有するシステムなどを含む。また、当業者であれば、明細書、特許請求の範囲、または図面のいずれにおいても、2つ以上の択一的な用語を提示する実質的に任意の選言的な単語および/または句は、用語のうちの1つ、いずれかの用語、または両方の用語を含む可能性を企図していると理解するであろう。例えば、「AまたはB」という表現は「A」または「B」または「AおよびB」の可能性を含むと理解されよう。
【国際調査報告】