DH (DIFFEE-HELLMAN KEYEXCHANGE)
• 正確には暗号ではなく、鍵共有プロトコルと呼ばれるもののひとつ
• ざっくりいうと
• 素数 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