セキュアリアルタイムトランスポートプロトコル(SRTP )は、リアルタイムトランスポートプロトコル(RTP)のプロファイルであり、ユニキャストおよびマルチキャストアプリケーションの両方において、RTPデータに対する暗号化、メッセージ認証と完全性、およびリプレイ攻撃からの保護を提供することを目的としています。これは、 CiscoとEricssonのインターネットプロトコルおよび暗号化の専門家からなる小規模なチームによって開発されました。2004年3月にIETFによってRFC 3711として初めて公開されました。
RTPにはRTPセッションを制御するために使用されるRTP制御プロトコル(RTCP)が付属しているため、SRTPにはSecure RTCP(SRTCP )と呼ばれる姉妹プロトコルがあり、RTCPがRTPに提供する機能と同じ機能をSRTPに安全に提供します。
RTPまたはRTCPアプリケーションにおいて、SRTPまたはSRTCPの利用は任意です。ただし、SRTPまたはSRTCPを使用する場合でも、提供されるすべての機能(暗号化や認証など)はオプションであり、個別に有効または無効にすることができます。唯一の例外はメッセージ認証機能で、これはSRTCPを使用する際に不可欠かつ必須です。
SRTPとSRTCPは、デフォルトの暗号としてAdvanced Encryption Standard (AES)を使用します。AESブロック暗号をストリーム暗号として使用できるようにする2つの暗号モードが定義されています。
SRTPはAES暗号に加えて、いわゆるヌル暗号化暗号を使用して暗号化を完全に無効にする機能も備えています。ヌル暗号化暗号は、代替のサポート暗号として考えることができます。実際には、ヌル暗号化暗号は暗号化を一切行いません。暗号化アルゴリズムは恒等関数として機能し、入力ストリームを一切変更せずに出力ストリームにコピーします。この暗号モードは、SRTP互換システムでは必ず実装する必要があります。そのため、SRTPによって保証される機密性が必要ない場合に使用でき、認証やメッセージの完全性といった他のSRTP機能は使用できます。
SRTPは新しい暗号化アルゴリズムを容易に導入できるものの、SRTP規格では、新しい暗号化アルゴリズムは、そのアルゴリズムを明確に定義した新しい関連標準トラックRFCを公開することによってのみ導入できると規定されている。
上記に挙げた暗号化アルゴリズムだけではメッセージの完全性は保証されません。攻撃者はデータを復号化することはできませんが、以前に送信されたデータを偽造したり、リプレイ攻撃を実行したりする可能性があります。そのため、SRTP規格ではデータの完全性とリプレイ攻撃からの安全性を確保するための手段も提供しています。
メッセージの認証と完全性の保護には、HMAC-SHA1アルゴリズム[ 1 ]が使用されます。これにより 160 ビットの結果が生成され、それが 80 ビットまたは 32 ビットに切り詰められて、各パケットに付加される認証タグになります。HMAC は、パケットのペイロードとパケット ヘッダーからの情報 (パケット シーケンス番号を含む) に対して計算されます。リプレイ攻撃から保護するために、受信側は以前に受信したメッセージのシーケンス番号を保持し、新しく受信したメッセージのシーケンス番号と比較し、以前に受信されていない場合にのみ新しいメッセージを受け入れます。このアプローチは、完全性保護によって、検出されずにシーケンス番号を変更することを不可能にしています。
鍵導出関数は、暗号コンテキストで使用されるさまざまな鍵(SRTPおよびSRTCPの暗号化鍵とソルト、SRTPおよびSRTCPの認証鍵)を、単一のマスター鍵から暗号学的に安全な方法で導出するために使用されます。したがって、鍵管理プロトコルではマスター鍵を1つだけ交換すればよく、必要なセッション鍵はすべて鍵導出関数を適用することで生成されます。
鍵導出関数を定期的に適用することで、攻撃者が単一のセッション鍵で暗号化された大量の暗号文を収集することを防ぎます。これにより、大量の暗号文が利用可能な場合に実行しやすい特定の攻撃に対する保護が提供されます。さらに、鍵導出関数を複数回適用することで、侵害されたセッション鍵が同じマスター鍵から派生した他のセッション鍵を侵害しないという意味で、後方および前方セキュリティが確保されます。つまり、攻撃者がセッション鍵を復元できたとしても、同じマスター鍵から派生した以前および以降のセッション鍵で保護されたメッセージを復号することはできません。(もちろん、漏洩したマスター鍵は、そこから派生したすべてのセッション鍵を明らかにします。)
SRTPは、初期マスターキーを設定するために外部の鍵管理プロトコルに依存しています。SRTPで使用するために特別に設計されたプロトコルとして、ZRTPとMIKEYがあります。SRTPキーをネゴシエートするための他の方法も存在します。SDES鍵交換方式を採用した製品を提供しているベンダーも複数あります。
VoIPソフトウェアの比較 § SRTPをサポートする電話機、サーバー、アプリケーション向けのセキュアVoIPソフトウェアを参照してください。
何らかのSRTPサポートを備えた既知のウェブブラウザ
コアレンダリングシステムからメインライン更新ブランチに一定レベルのSRTPを搭載したWebブラウザファミリー
今のところ、テキストベースのウェブブラウザでSRTPをサポートするものは知られていません。