Skype の暗号化についてのメモ
機械的にHEADリクエストを送るのを検閲と言えるのかって気はするけど、どういう仕組みなのかは知りたい。
Skype が宣伝してたイメージとちがう。
一番マシな想像だと、チャットのメンバーに、常に見えない MS がいる、って感じだろうか。Aさんとメッセージをやり取りしているつもりで、実は、透明なMSもそこに参加しているっていう。2人とエンドツーエンドで暗号化通信をしている状態。
MS のエンドには機械しかいない&すぐ消す、ということなら、ぎりぎり許容できる、、かなあ、、、。勝手にURLにアクセスされると困ることはある気がする。
通信が常にMSを経由していて、マスターキーみたいなので復号してるとしたら、これはぜんぜん許容できない感じがする。でも、、上と実質同じことなんだろうか、、。
以下、Skypeのサポートページから引用。
Skype同士の音声通話、ビデオ通話、インスタントメッセージ(IM)の会話はすべて暗号化されています。これにより、悪質なユーザによる盗聴の可能性から会話を保護しています。
Skypeは暗号化技術を使用していますか?
Skypeが採用しているAES(Advanced Encryption Standard*)、別名「Rijndael」と呼ばれる暗号規格は、米国政府が機密情報を保護するのに使用している暗号規格で、Skypeでは、最高レベルの256ビットの暗号を使用しています。 ユーザの公開鍵は、ログイン時に1536または2048ビットのRSA認証を使ってSkypeサーバによって認証されます。
Skypeは暗号化技術を使用していますか?
Skypeは、ユーザの通信がハッカーや犯罪者の手に落ちることを防ぐため、よく知られる標準の暗号化アルゴリズムを採用しています。 これにより、ユーザ間でやりとりされるデータの完全性の確保だけでなく、ユーザのプライバシーも保護されるのです。
Skypeセキュリティ - オンラインの安全性、セキュリティ、プライバシーを保護
Skypeは、おそらく可能なかぎり最高のセキュリティを確保しています。 Skype同士の通話は暗号化されていて、お客さまのプライバシーを保護しています。同じことは、共有ファイル、チャット、ビデオにも当てはまります。
P2P通信とは何ですか?
Skypeで送信するファイルはすべて、Skype同士の通話と同様にエンドツーエンドで暗号化して送信されます。 そのため、インターネットを介して情報を転送する場合でも送信者のプライバシーが保護され、送信者とその通信相手だけがファイルを表示できるようになっています。
Skype for Windowsデスクトップで、ファイルを送受信する方法を教えてください。
「送信者とその通信相手だけが」っていうのは、かなり怪しい感じ。
以下、2005年のSkype暗号実装の第三者評価レポートより引用。
Messages transmitted through a Skype session are encrypted from Skype-end to Skype-end. No intermediary node, if any exist, has access to the meaning of these messages.
http://download.skype.com/share/security/2005-031%20security%20evaluation.pdf
3.3 Peer-to-Peer Key Agreement Protocol
Each party contributes 128 random bits toward the 256-bit session key. The contributions are exchanged as RSA cryptograms. The two contributions are then combined in a cryptographically-sound way to form the shared session key.
http://download.skype.com/share/security/2005-031%20security%20evaluation.pdf
2.2 Peer-to-Peer Key Agreement
Suppose now a caller, A, wishes to communicate with callee, B, and there is no pre- existing Skype session between them. In this case a new session is established and provided with its own 256-bit session key, SKAB. This session will exist so long as there is traffic in either direction between A and B, and for some fixed time afterward. After the session is over, the SK is retained in memory until the client is closed, at which time it is zeroed.
Session establishment first requires establishing connectivity between A and B across the Skype cloud. Using this connectivity, A and B now engage in a key-agreement protocol during which, among other things, they check for freshness, verify each other’s identity, and agree on SKAB.
http://download.skype.com/share/security/2005-031%20security%20evaluation.pdf
2.3 Session Cryptography
http://download.skype.com/share/security/2005-031%20security%20evaluation.pdf
All traffic in a session is encrypted by XORing the plaintext with key stream generated by 256-bit AES (also known as Rijndael) running in integer counter mode (ICM). The key used is SKAB. Skype sessions contain multiple streams. The ICM counter depends on the stream, on salt, and the sequency within the stream.
全部理解する技術力も英語力もないけど、AさんとBさんが、お互い 128bit ずつRSAで暗号化したランダムな鍵を送りあい、合わせた鍵をセッションキー(SKAB)としてAESの鍵にする、みたいなことが書いてある気がする。セッションキーはアプリケーションが閉じられるまで有効。
(追記)
あくまで自分の理解だけど、、
- ユーザ登録時(新規端末でのログイン時?)に、RSA で公開鍵・秘密鍵を作成し、Skypeサーバに公開鍵を登録する
- 通信を開始する際、身元の確かな Skype サーバから相手の公開鍵を取得
- 128bit の乱数を生成。相手の公開鍵で暗号化して送信 (Key Agreement)
- 自分の鍵の片割れ (128bit) と相手の鍵の片割れ (128bit) を合わせて、AESの鍵とする
- セッションが終わったら(Skypeを閉じたら)、生成したセッションキーを破棄する
という意味だと思った。
RSAで鍵を交換して、AESで通信を暗号化しているとしたら、スパムフィルタを割り込ませる余地がない (中間者攻撃になってしまう)。なので、通信相手とは別に、MSにも暗号化したメッセージを送信しているのでは、と想像した。