ZRTP(ZとReal-time Transport Protocolの略)は、リアルタイムトランスポートプロトコルに基づいて、VoIP( Voice over IP)電話通話の2つのエンドポイント間で暗号化用の鍵をネゴシエートするための暗号鍵合意プロトコルです。暗号化にはDiffie-Hellman鍵交換とSecure Real-time Transport Protocol (SRTP)を使用します。ZRTPはPhil ZimmermannがBryce Wilcox-O'Hearn、Colin Plumb、Jon Callas 、Alan Johnstonの協力を得て開発し、2006年3月5日にZimmermann、Callas、Johnstonによってインターネット技術タスクフォース(IETF)に提出され、2011年4月11日にRFC 6189として公開されました。
ZRTP(「Z」は発明者のツィンマーマンにちなみ、「RTP」はリアルタイムトランスポートプロトコルの略)[ 1 ]は、インターネットドラフトで「セッション開始プロトコル(SIP)などの他のシグナリングプロトコルを使用して確立されたリアルタイムトランスポートプロトコル(RTP)メディアストリーム内で、通話設定中にディフィー・ヘルマン鍵交換をインバンドで行う鍵合意プロトコル」と説明されています。これにより共有シークレットが生成され、その後、セキュアRTP(SRTP)セッションの鍵とソルトの生成に使用されます。ZRTPの特徴の1つは、鍵管理にSIPシグナリングやサーバーを一切使用しないことです。また、他のVoIPクライアントがZRTPをサポートしているかどうかを自動検出することで、機会的暗号化をサポートします。
このプロトコルは、事前に共有された秘密鍵を必要とせず、公開鍵基盤(PKI)や認証局にも依存しません。実際、セッション確立のたびに一時的なディフィー・ヘルマン鍵が生成されます。これにより、信頼できる第三者機関の作成と維持に伴う複雑さを回避できます。
これらのキーはセッションシークレットの生成に寄与し、そこからSRTPセッションのセッションキーとパラメータが、以前に共有されたシークレット(存在する場合)とともに導出されます。これにより、攻撃者が2つのエンドポイント間の最初のセッションに存在していなかった限り、中間者攻撃(MiTM)に対する保護が提供されます。
ZRTPは、SIP、 H.323、Jingle、分散ハッシュテーブルシステムなど、あらゆるシグナリングプロトコルで使用できます。ZRTPは、すべての鍵ネゴシエーションがRTPメディアストリームを介して行われるため、シグナリング層に依存しません。
ZRTP/SはZRTPプロトコルの拡張機能であり、狭帯域ビットストリーム指向のプロトコルであるため、2つのエンドポイント間のビットストリーム内で全ての鍵ネゴシエーションを実行するため、GSM、UMTS、ISDN、PSTN、SATCOM、UHF / VHF無線など、あらゆる種類の従来の電話ネットワーク上で動作可能です。
アラン・ジョンストンはこのプロトコルをZRTPと名付けた。初期のインターネット草案では、RTPパケットにヘッダー拡張を追加する方式に基づいていたため、ZRTPはRTPの派生形であった。後の草案では、パケット形式が変更され、構文的にRTPと区別できるようになった。この変更を踏まえると、ZRTPは現在では擬似的な頭字語となっている。
Diffie –Hellman 鍵交換だけでは、中間者攻撃に対する保護は提供されません。最初のセッション (共有シークレットが存在しないとき) に攻撃者が実際に存在しないことを確認するために、Short Authentication String (SAS) 方式が使用されます。通信当事者は、両方のエンドポイントに表示される共有値を口頭で相互チェックします。値が一致しない場合、中間者攻撃が示されます。ZRTP プロトコルに対する特定の攻撃として、両者の合成音声を作成して偽の SAS を読み上げるという「リッチ リトル攻撃」が理論化されていますが、この種の攻撃はプロトコルのセキュリティに対する深刻なリスクとは考えられていません。[ 2 ] SAS は鍵交換の認証に使用され、これは基本的に2 つの Diffie–Hellman 値の暗号学的ハッシュです。SAS 値は両方の ZRTP エンドポイントに表示されます。認証を実行するために、この SAS 値は音声接続を介して通信相手に読み上げられます。両端の値が一致しない場合は、中間者攻撃が疑われます。一致する場合は、中間者攻撃の可能性は非常に低いと考えられます。DH交換におけるハッシュコミットメントの使用により、攻撃者は攻撃時に正しいSASを生成するための推測を1回しか行うことができないため、SASは非常に短くなる可能性があります。例えば、16ビットのSASの場合、攻撃者が検出されない確率は65536分の1しかありません。
ZRTPは、鍵の継続性という仕組みに基づき、中間者攻撃に対する第2の認証層を提供します。これは、ハッシュ化された鍵情報をキャッシュし、次の呼び出しで使用することで実現されます。このキャッシュされた鍵情報は、次の呼び出しのDH共有シークレットと混合され、SSHと同様の鍵継続性特性を持ちます。最初の呼び出しに中間者攻撃者が存在しない場合、その攻撃者は以降の呼び出しから締め出されます。したがって、SASが一度も使用されなくても、中間者攻撃者は最初の呼び出しに存在しなかったため、ほとんどの中間者攻撃は阻止されます。
ZRTPは以下のように実装されています
ZRTPの商用実装は、RokaComのRokaCom [ 13 ]、PrivateWaveのPrivateWave Professional [ 14 ]、そして最近ではZimmermannが設立したSilent CircleのSilent Phone [ 15 ]で利用可能です。AcrobitsのSoftphoneもあります。[ 16 ] Draytekは、一部のVoIPハードウェアとソフトウェアでZRTPをサポートしています。[ 17 ] [ 18 ]
ZRTPをサポートする無料SIPプロバイダーのリストが公開されています。[ 11 ]