メインコンテンツまでスキップ

3. SRTP Extension for DTLS (DTLS の SRTP 拡張)

3. SRTP Extension for DTLS (DTLS の SRTP 拡張)

このセクションでは、SRTP の鍵マテリアル、アルゴリズム、およびパラメータを確立するための DTLS 拡張について説明します。

3.1 The use_srtp Extension (use_srtp 拡張)

SRTP データ保護の使用をネゴシエートするために、クライアントは DTLS 拡張クライアント Hello に "use_srtp" タイプの拡張を含めます。この拡張は、転送されるデータが RTP または RTCP である場合にのみ使用しなければなりません。この拡張の "extension_data" フィールドには、受け入れ可能な SRTP 保護プロファイルのリストが含まれます。use_srtp 拡張は、クライアントが SRTP パケットで使用する、または受信する SRTP パケットに対して使用する MKI (Master Key Identifier, マスター鍵識別子) も示します。

拡張フォーマットは次のとおりです:

uint8 SRTPProtectionProfile[2];

struct {
SRTPProtectionProfiles SRTPProtectionProfiles;
opaque srtp_mki<0..255>;
} UseSRTPData;

SRTPProtectionProfile SRTPProtectionProfiles<2..2^16-1>;

SRTPProtectionProfile 値はセクション 3.1 で定義されています。サーバーが use_srtp 拡張を受け入れる場合、DTLS 拡張サーバー Hello で独自の use_srtp 拡張を使用して応答しなければなりません。サーバーのリストには、クライアントが提供した値の 1 つでなければならない SRTPProtectionProfile 値が正確に 1 つ含まれていなければなりません。

3.2 Certificate Choice (証明書の選択)

DTLS では、サーバーは certificate_request メッセージを送信できます。クライアントに適切な証明書がない場合、クライアントは応答として空の証明書メッセージを送信しなければなりません。DTLS-SRTP を使用する場合、クライアントは DTLS での使用に適した証明書を使用すべきです。メディアパス DTLS はシグナリングチャネルのセキュリティコンテキストを使用しないため、DTLS に使用される証明書は、シグナリングプロトコルが使用する証明書とは異なる必要があります。

3.3 Key Derivation (鍵の導出)

DTLS-SRTP を使用する場合、DTLS は SRTP の鍵導出関数として機能します。TLS PRF は、次のように必要な鍵マテリアルを導出するために使用されます:

keying material = PRF(master_secret, "EXTRACTOR-dtls_srtp",
client_random + server_random)

その後、選択された SRTP 保護プロファイルで定義されているように、鍵マテリアルは両方向 (クライアントからサーバー、およびサーバーからクライアント) に必要な SRTP 暗号化鍵、認証鍵、およびソルト鍵に分割されます。

3.4 Key Scope (鍵のスコープ)

各 DTLS-SRTP セッションは、単一の RTP/RTCP ソースを保護します。すべてのメディアが同じ SSRC を共有している限り、単一の DTLS-SRTP セッションを使用して、2 つのエンドポイント間で一方向に送信される複数の RTP ストリームまたは RTCP パケットを保護できます。ただし、会議通話に異なる SSRC を持つ複数のソースが含まれる場合、SSRC ごとに個別の DTLS セッションを使用しなければなりません。

3.5 Key Usage Limitations (鍵使用の制限)

DTLS から導出された鍵は、同じ 5 タプル (送信元 IP、送信元 UDP ポート、宛先 IP、宛先 UDP ポート、およびプロトコル) を介して転送される RTP および RTCP トラフィックの保護にのみ使用しなければなりません。異なる 5 タプルを介してトラフィックを送信する場合は、新しい DTLS ハンドシェイクを実行しなければなりません。