3.3. SRTP Packet Processing (SRTP パケット処理)
3.3. SRTP Packet Processing (SRTP パケット処理)
以下は SRTP に適用されます。SRTCP は Section 3.4 で説明されています。
暗号コンテキストの初期化が鍵管理を通じて行われたと仮定して, 送信者は SRTP パケットを構築するために以下を実行しなければなりません (SHALL):
-
Section 3.2.3 で説明されているように, 使用する暗号コンテキストを決定します。
-
Section 3.3.1 で説明されているように, ロールオーバーカウンタ (rollover counter), 暗号コンテキスト内の最高シーケンス番号 (highest sequence number), および RTP パケット内のシーケンス番号を使用して, SRTP パケットのインデックス (index) を決定します。
-
マスター鍵 (master key) とマスターソルト (master salt) を決定します。これは, Section 8.1 に従って, 前のステップで決定されたインデックスまたは暗号コンテキスト内の現在の MKI を使用して行われます。
-
Section 4.3 で説明されているように, セッション鍵 (session keys) とセッションソルト (session salt) (変換で使用される場合) を決定します。これには, ステップ 2 および 3 で決定されたインデックスを持つ暗号コンテキスト内のマスター鍵, マスターソルト, key_derivation_rate, およびセッション鍵長を使用します。
-
RTP ペイロードを暗号化して, パケットの暗号化部分 (Encrypted Portion) を生成します (定義された暗号については Section 4.1 を参照)。このステップでは, 暗号コンテキストで示される暗号化アルゴリズム, ステップ 4 で見つかったセッション暗号化鍵とセッションソルト (使用される場合), およびステップ 2 で見つかったインデックスを使用します。
-
MKI インジケータが 1 に設定されている場合, MKI をパケットに追加します。
-
メッセージ認証 (message authentication) のために, Section 4.2 で説明されているように, パケットの認証部分 (Authenticated Portion) の認証タグ (authentication tag) を計算します。このステップでは, 現在のロールオーバーカウンタ, 暗号コンテキストで示される認証アルゴリズム, およびステップ 4 で見つかったセッション認証鍵を使用します。認証タグをパケットに追加します。
-
必要に応じて, ステップ 2 で決定されたパケットインデックスを使用して, Section 3.3.1 のように ROC を更新します。
SRTP パケットを認証および復号化するために, 受信者は以下を実行しなければなりません (SHALL):
-
Section 3.2.3 で説明されているように, 使用する暗号コンテキストを決定します。
-
Section 3.3.1 のアルゴリズムを実行して, SRTP パケットのインデックスを取得します。このアルゴリズムは, Section 3.3.1 で説明されているように, 暗号コンテキスト内のロールオーバーカウンタと最高シーケンス番号, および SRTP パケット内のシーケンス番号を使用します。
-
マスター鍵とマスターソルトを決定します。コンテキスト内の MKI インジケータが 1 に設定されている場合は SRTP パケット内の MKI を使用し, それ以外の場合は Section 8.1 に従って前のステップのインデックスを使用します。
-
Section 4.3 で説明されているように, セッション鍵とセッションソルト (変換で使用される場合) を決定します。これには, ステップ 2 および 3 で決定されたインデックスを持つ暗号コンテキスト内のマスター鍵, マスターソルト, key_derivation_rate, およびセッション鍵長を使用します。
-
メッセージ認証とリプレイ保護 (replay protection) のために, まず, リプレイリスト (Replay List) とステップ 2 で決定されたインデックスを使用して, パケットがリプレイされているかどうかを確認します (Section 3.3.2)。パケットがリプレイされていると判断された場合, そのパケットは破棄されなければならず (MUST), イベントはログに記録されるべきです (SHOULD)。
次に, ステップ 2 のロールオーバーカウンタ, 暗号コンテキストで示される認証アルゴリズム, およびステップ 4 のセッション認証鍵を使用して, 認証タグの検証を実行します。結果が "AUTHENTICATION FAILURE" (認証失敗) の場合 (Section 4.2 を参照), パケットはさらなる処理から破棄されなければならず (MUST), イベントはログに記録されるべきです (SHOULD)。
-
暗号コンテキストで示される復号化アルゴリズム, ステップ 4 で見つかったセッション暗号化鍵とソルト (使用される場合), およびステップ 2 のインデックスを使用して, パケットの暗号化部分を復号化します (定義された暗号については Section 4.1 を参照)。
-
ステップ 2 で推定されたパケットインデックスを使用して, Section 3.3.1 のように, 暗号コンテキスト内のロールオーバーカウンタと最高シーケンス番号 s_l を更新します。リプレイ保護が提供されている場合は, Section 3.3.2 で説明されているように, リプレイリストも更新します。
-
存在する場合, パケットから MKI と認証タグフィールドを削除します。