4.1. Encryption (暗号化)
4.1. Encryption (暗号化)
以下のパラメータは, このセクションで指定されている両方の事前定義された非 NULL 暗号化変換に共通です。
- BLOCK_CIPHER-MODE は使用されるブロック暗号とその動作モードを示します
- n_b はブロック暗号のブロックのビットサイズです
- k_e はセッション暗号化鍵です
- n_e は k_e のビット長です
- k_s はセッションソルト鍵 (session salting key) です
- n_s は k_s のビット長です
- SRTP_PREFIX_LENGTH は鍵ストリームプレフィックスのオクテット長であり, 使用中のメッセージ認証コードによって指定される非負整数です。
SRTP/SRTCP の個別のセッション鍵とソルトは, デフォルトでセクション 4.3 で指定されているように導出されます。
SRTP で定義されている暗号化変換は, SRTP パケットインデックスと秘密鍵を疑似ランダム鍵ストリームセグメントにマッピングします。各鍵ストリームセグメントは単一の RTP パケットを暗号化します。パケットを暗号化するプロセスは, パケットに対応する鍵ストリームセグメントを生成し, その鍵ストリームセグメントを RTP パケットのペイロードにビット単位で排他的論理和して, SRTP パケットの暗号化部分を生成することで構成されます。ペイロードサイズが n_b ビットの整数倍でない場合, 鍵ストリームの余剰 (最下位) ビットは単に破棄されます。復号化は同じ方法で行われますが, 平文と暗号文の役割を交換します。
+----+ +------------------+---------------------------------+
| KG |-->| Keystream Prefix | Keystream Suffix |---+
+----+ +------------------+---------------------------------+ |
|
+---------------------------------+ v
| Payload of RTP Packet |->(*)
+---------------------------------+ |
|
+---------------------------------+ |
| Encrypted Portion of SRTP Packet|<--+
+---------------------------------+
図 3: デフォルトの SRTP 暗号化処理。ここで KG は鍵ストリームジェネレータを示し, (*) はビット単位の排他的論理和を示します。
インデックスが与えられた場合の鍵ストリームの生成方法の定義は, 暗号とその動作モードに依存します。以下では, そのような鍵ストリームジェネレータを 2 つ定義します。RTP の暗号化が不要な場合に使用される NULL 暗号も定義されています。
鍵ストリームの SRTP 定義を図 3 に示します。各鍵ストリームセグメントの初期オクテットはメッセージ認証コードでの使用のために予約される場合があり, その場合, 暗号化に使用される鍵ストリームは最後の予約オクテットの直後から始まります。初期の予約オクテットは "鍵ストリームプレフィックス" と呼ばれ ([RFC3550, セクション 6.1] の "暗号化プレフィックス" と混同しないでください), 残りのオクテットは "鍵ストリームサフィックス" と呼ばれます。鍵ストリームプレフィックスは暗号化に使用してはなりません。このプロセスは図 3 に示されています。
鍵ストリームプレフィックスのオクテット数は SRTP_PREFIX_LENGTH として示されます。鍵ストリームプレフィックスは, SRTP_PREFIX_LENGTH の正の非ゼロ値によって示されます。これは, 機密性が提供されない場合でも, パケット認証のために鍵ストリームジェネレータの出力を計算する必要がある可能性があることを意味し, その場合はデフォルトの鍵ストリームジェネレータ (モード) を使用しなければなりません。
デフォルトの暗号は Advanced Encryption Standard (AES) [AES] であり, AES を実行する 2 つのモード, (1) Segmented Integer Counter Mode AES と (2) AES in f8-mode を定義します。このセクションの残りの部分では, E(k,x) を鍵 k と入力ブロック x に適用される AES とします。