SRTP / SRTCP

最終更新日

2019-11-10

SRTP について

WebRTC の MediaChannel に利用されている暗号化方式は DTLS-SRTP と呼ばれる仕組みです。DTLS-SRTP の DTLS の部分は :doc:`DTLS </DTLS>`_ を御覧ください。

SRTP は新しいプロトコルではなく 2004 年に RFC になったかなり歴史のあるプロトコルです。

RFC 3711 - The Secure Real-time Transport Protocol (SRTP)

AES-CTR

Chrome や Safari でデフォルトで利用されている SRTP の暗号方式は AES-CTR です。ビット数は 128 が採用されています。

ただし Chrome では chrome://flags/#enable-webrtc-srtp-aes-gcm で AES-GCM を有効にすることが可能です。

AES-CTR 256 を使うというドラフトが出たりもしましたが、結局 AES-GCM に移行する流れのようです。

draft-lennox-avtcore-dtls-srtp-bigaes-01 - DTLS/SRTP Protection Profiles for 256-bit AES-CTR Encryption

AES-GCM

Firefox ではデフォルトが AES-GCM になっています。AES-GCM に対応していない場合は AES-CTR が利用されます。

AES-GCM は鍵の長さは 128/256 ビットが用意されています。

RFC 7714 - AES-GCM Authenticated Encryption in the Secure Real-time Transport Protocol (SRTP)

AES-GCM を利用する場合は SRTP の AuthTag が不要になります。

パフォーマンスについて

AES-GCM では AES-CTR で利用していた HMAC を呼ばなくなるため高速化されるという話が出ています。Chrome では chrome://flags/#enable-webrtc-srtp-aes-gcm を有効にすることで SRTP/SRTCP で AES-GCM が利用可能になります。