2022-09-04 (日)
なんだかとても身体がだるい.
WebRTCで信頼できないシグナリングサーバ経由で安全なE2EEを使いたい.
WebRTC P2PのE2EEの安全性はシグナリングサーバに依存してしまっているので,サーバに変更を加えられると簡単に中間者攻撃できてしまう.使っているサーバやプラットフォームは信頼してしまう手もあるけど,なんとなく落ち着かない..できれば,自分の管理下にないサーバを使っているときも安全に通信したい.
とりあえず,DTLSの通信に使われている証明書が本来の通信相手のものかどうか確認できれば良いので,SDPからfingerprintを抜き出して,このfingerprintを事前に共有したパスワードでHMACに通した上でRTCDataChannel上で認証することにする.証明書が固定なら初回接続時に人間が確認するのでも良いのだけど,更新タイミングはブラウザの実装依存ぽい?別の経路でパスワードを共有する必要が出てくるけど仕方ない.
あまり自分で実装したくないので,WebRTCにもHTTPのAuthorizationヘッダみたいな標準的な認証手段がほしい.