6E - arakomiuma/bt GitHub Wiki

1 ENCRYPTION AND AUTHENTICATION OVERVIEW

リンク層は、暗号化及び認証には、暗号ブロックチェーニング-メッセージ認証コード(CCM)モードを用いたカウンタを使用するが、これは、NIST出版物FIPS-197(http://csrc.nist.gov/ publications/fips/fips197/fips-197.pdf)に定義されているAES-128ブロック暗号と併せて、IETF RFC 3610(http://www.ietf.org/rfc/rfc3610.txt)に定義されているアルゴリズムと整合的に実装されなければならない。 CCM アルゴリズムの説明は、NIST Special Publication 800-38C (http://csrc.nist.gov/publications/PubsSPs.html) にもあります。

本仕様では、メディアアクセスコントローラという用語との混同を避けるために、本仕様ではメッセージ認証コード(MAC)をメッセージ整合性チェック(MIC)と呼んでいますが、それ以外はIETF RFCと同じ表記法と用語を使用しています。

CCMにはMとLの2つのサイズパラメータがあります。

  • M = 4:MIC(認証フィールド)が4オクテットであることを示す。

  • L = 2; 長さフィールドが2オクテットであることを示します。

CCM は、暗号化が開始されるたびに新しい一時鍵を要求します。 CCM はまた、与えられた一時鍵で保護された各データ物理チャネル PDU に対して一意の nonce 値を要求する。 CCM nonce は 13 オクテットでなければならない。

リンクレイヤの接続は、暗号化されて認証された接続と、暗号化されておらず認証されていない接続のいずれかであってもよい。 暗号化及び認証された接続では、非ゼロ長のペイロードを持つ全てのデータ物理チャネルPDUは、暗号化及び認証されなければならない。 認証は、ペイロードに MIC フィールドを付加することで行われる。 MIC は、データ物理チャネル PDU の Payload とヘッダの最初のオクテット([Vol 6] Part B, Section 2.4)の NESN, SN, MD ビットがゼロにマスクされた状態で計算される。

暗号化は、データ物理チャネルPDUのペイロード及びMICに適用されるものとする。

ゼロではない長さのペイロードを持つ各新規データ物理チャネル PDU は、ホストに送信される前、またはリンク層によって処理される前に復号化され、認証されなければならない。 認証はリンク層の確認応答方式とは無関係であり、パケットがリンク層によって確認される前に認証を行う必要はない。

万一、認証に失敗した場合には、その接続は失われたものとみなす。 リンク層は、その接続において、それ以上パケットを送受信しないものとする。 リンクレイヤは、接続状態を終了し、待機状態に移行する。 ホストは、認証失敗による接続喪失を通知する。 相手側リンク層は、この接続切れを監視タイムアウト処理により検知する。

2 CCM

このセクションでは、CCM アルゴリズムを使用するための詳細について説明する。 指定されたように、CCMアルゴリズムは、ペイロードといくつかの追加パラメータが、CCMノンス、カウンタモードブロック、および暗号化ブロックにフォーマットされることを必要とする。 CCM nonce は、各パケットに一意性を提供する。 カウンタモードブロックは、MICを計算するために使用されます。 暗号化ブロックは、ペイロードを暗号化するために使用されるキーストリームと、データ物理チャネルPDUのMICを提供する。

ブロックのサンプルデータ(セクション2.2およびセクション2.3参照)は、[Vol 6]パートC、セクション1およびセクション1.2に記載されている。

2.1 CCM NONCE

CCM ノンスは、39 ビットの packetCounter、1 ビットの directionBit、8 オクテットの IV(初期化ベクタ)から構成される。 13 オクテットの nonce のフォーマットは、表 2.1 に示すとおりとする。

リンク層は、各接続に対して、Role 毎に 1 つの packetCounter を保持する。

各接続では、暗号化開始時に送信された最初の暗号化データ物理チャネル PDU に対して packetCounter をゼロに設定する。 その後、暗号化された新しいデータ物理チャネルPDUごとにpacketCounterを1インクリメントする。 packetCounterは、再送のためにインクリメントされてはならない。

DirectionBitは、マスタによって送信されるデータ物理チャネルPDUに対しては1に設定され、スレーブによって送信されるデータ物理チャネルPDUに対しては0に設定されるものとする。

IVは、接続の両ロールに共通である。 暗号化が開始または再起動されるたびに、新しい8オクテットのIVが通信デバイスのペアごとに使用されなければならない。 IV は、[Vol 6]パート B 節 5.1.3.1 に規定されるとおりに決定される。

2.2 COUNTER MODE BLOCKS

MICを計算するために、CCM仕様に従って複数のカウンタモードブロックが生成される。 これらはブロックB0~Bnと呼ばれています。 表 2.2 にブロック B0 のフォーマットを示す。 表 2.3 に、追加の認証データの認証に使用するブロック B1 のフォーマットを示す。 追加の B ブロックは、ペイロードの認証に必要に応じて生成される。

2.3 ENCRYPTION BLOCKS

CCMアルゴリズムは、Aiブロックを使用して、MICとデータ物理チャネルPDUペイロードを暗号化するために使用されるキーストリームを生成します。 ブロックA0は、常にMICの暗号化と復号化に使用される。 ブロックA1は、ペイロードの最初の16オクテットの暗号化と復号化に常に使用される。 それ以降のブロックは、必要に応じてペイロードの残りの部分の暗号化と復号化に使用されます。