SRTP(Secure Real-time Transport Protocol)とは
RTP(Real-time Transport Protocol)のsecure版
音声映像をリアルタイムに送受信するプロトコル
RTPは、トランスポート層のプロトコルにUDPを使うことが特徴。
RTP over UDP
https://gyazo.com/1a4fc5522a0cf075dbe6a7ab9de348b3
データを送ったら一つずつ相手側の受信をチェックしてから次のデータを送るTCPではなく、相手側が受信したことをチェックせずデータを送り続けるUDPを用いている
RTPは、UDPを用いて音声・映像をリアルタイムに送受信するため、実際にはデータを消失したり、ネットワークのゆらぎによって送ったデータの順番が前後してしまったりする
追記:おそらくRTPはパケット喪失の検知や順序を保証できる。SRTPは暗号化を追加しただけ
SRTPはUDP/RTPの欠点を埋めるために作られたプロトコル
☆がないものはRTPでもやっている
解決できるもの
- 順番の前後(タイミングとかも)
解決できないもの
- データの消失
行っていること
- TImestampの追加(タイミングの保証のため)
- Numberの追加(順番の保証のため)
- ☆暗号化(Encrypted Payload?)
実際に送るペイロードの部分がSRTPでは暗号化される。
パケットの形
|一行で32bit|
|V|P|X|CC|M|PT|シーケンス番号|
|timestamp|
|SSRC ID|
ここまでで32bit(4bye)*3で12byte
|CSRC ID(1)|
|CSRC ID(...)|
|CSRC ID(n)|
|RTP Header Extention|
|ペイロード| <=ここが暗号化される
|SRTP MKI|
|認証タグ|
トランスポート層(UDP)とアプリケーション層の間にあってメディア符号化情報をパケット化するRTPの代替プロトコル 。
- RTPおよびRTCPメッセージに対し、暗号化による秘匿、メッセージの認証、リプレイ攻撃(なりすまし行為)に対する保護をする
暗号化の鍵に使用するもの
RTPのセッション制御にはRTCPが使われている