27. BIG BROTHER MIGHT BE
WATCHING YOU?
• RSAで鍵共有を行い、AESでデータを暗号化して送っていたとする
• もし誰かが過去の通信データを全部保存していたら?
• そのままでは暗号化されているので、当然読めない
• もしその誰かにRSA秘密鍵を盗まれたら?
• 鍵共有で交換していた共通鍵が全部ばれる
• 過去の通信データが全部復号される
27
28. DH (DIFFEE-HELLMAN KEY EXCHANGE)
• 正確には暗号ではなく、鍵共有プロトコルと呼ばれるもののひとつ
• ざっくりいうと
• 素数 p とちょうどいい整数 g を互いに交換する
• 適当な数 a を作って、A = g^a mod p を相手に送る
• 同様に、B = g^b mod p を相手からもらう(b 自体はもらわない)
• B^a mod p = g^(a*b) mod p を計算する
• 相手が計算した A^b mod p も同じ値になる ⇒ 共通鍵として使える
• p, g, A, B しか第三者からは見えない
• A = g^a mod p から a が逆算されない限り、共通鍵 B^a mod p はわからない
28
29. PERFECT FORWARD SECRECY
• A = g^a mod p から a を逆算することは、離散対数問題と呼ばれる
• 多項式時間で解けるアルゴリズムが見つかっていない
• 通信のセッションごとに違う共通鍵を作って暗号化
• ある時点での a が盗まれたとしても過去の共通鍵はわからない
• 誰かが過去の通信を全部保存してても安心
• セッションごとに鍵を変える場合をとくに DHE (Ephemeral) と呼ぶ
29