DtlsSrtpKeyAgreement および RtpDataChannel についての記録
この文書 is 何?
- すでに使われていない RtpDataChannel と DtlsSrtpKeyAgreement について忘れ去る前に歴史の経緯を記録しておく文書
- 将来どこかでこのパラメータを見かけて、「なんだったっけ?」と思ったら見返すためのドキュメント
- なお両パラメータとも、すでにobsoleteなのでコーディングで書く必要はない
RtpDataChannel とは?
WebRTCは歴史的に、メディアチャネル側の実装が先に進んだ。データチャネルの思想自体は最初からあったものの、DTLS-SCTPを利用すると最初から決定されているわけではなかった。その当時に、最初に実装されたのがRTPを用いたデータチャネル実装である。この実装を利用するのを明示的に指定するためのオプションが RtpDataChannel
であり、 RTCPeerConnection
のオプションに渡す。オプションは、以下のように指定して用いる:
{
RtpDataChannel: true
}
DtlsSrtpKeyAgreement とは?
WebRTCのP2P間での暗号方式は、SDES/SRTPおよびDTLS/SRTPが候補にあり、IETF87にてDTLS/SRTPが決定された。SDESよりDTLS/SRTPが良い理由を簡単に述べると、DTLS/SRTPは鍵情報がSDPに乗らない点がある。結果として、DTLS-SRTP利用時に仮に、シグナリング情報が暗号化されておらず漏れた場合としても、被害が抑えられるという可能性が高い(*1)。
DTLS/SRTPを優先的に使うか指定するためのオプションが標題の DtlsSrtpKeyAgreement
である。RTCPeerConnection
のオプションであり、以下のように用いる:
{
DtlsSrtpKeyAgreement:true
}
*1: シグナリングサーバでMan in the Middleされた場合は、完全に全て漏れるのでDTLS-SRTPにも限界がある。その課題解決のためにZRTPがある。