完璧な暗号化
PFS(Perfect Forward Secrity)という言葉みなさんはご存知でしょうか?
暗号化技術の一つで「Perfect」なんて格好良い言葉を使っていますが、確かに完璧な暗号化を行うためのもののようなので、調べてみました!
先ず、PFSとは暗号文とその暗号文を複合するための秘密鍵が両方漏洩しても、暗号文を複合できない、というカギ交換に関する概念だそうです。
公開鍵暗号方式の場合、通信を行っている際に通信が盗聴されたとしても、その時に秘密鍵を持っている人間しか複合はできないので、この方式は安全に思えます。
しかし、後々(将来的に)秘密鍵が漏洩してしまった場合は、過去の通信も全て複合できてしまうのですね。「今は良くとも、未来は知らない」だと困っちゃいますよね。
それを解決するためにPFSという概念があるようです。
PFSのための暗号化アルゴリズム
PFSを実現可能にするためのアルゴリズムとして「DHE、ECDHE」があります。
- DHE:ディフィー・ヘルマン鍵共有
- ECDHE:楕円曲線ディフィー・ヘルマン鍵共有
ディフィーさんとヘルマンさんが考えたアルゴリズムのようですね。
データを暗号化する際にサーバーの秘密鍵・公開鍵を利用するのではなくクライアントとサーバーそれぞれに秘密鍵を持たせるようにします。
公開されている二つのデータとクライアントとサーバーそれぞれの秘密鍵から作成したデータ(ここ重要です!)をもとに、相手の秘密鍵を知ることなく暗号化した通信が可能です。
第三者がこの方式で暗号化されたデータの復号を行うためにはクライアントとサーバー両方の秘密鍵を知る必要があるため、仮に一方の秘密鍵が露呈したとしてもデータの安全性は守られます。勿論両方とも盗まれてしまったらダメですよ!
更にDHEとECDHEでは秘密鍵は固定ではなく随時変更(ここ重要です!)されるので、事実上、第三者による解読は不可能とされています。
そして、暗号化だけでは通信相手を検証することができないため通信途中の中間者攻撃が可能になってしまいますのでSSLを使います。
このSSLでは、証明書と組み合わせた以下どれかの方式を使います。
- DHE-RSA----------DHEとRSA証明書の組み合わせ
- DHE-DSA----------DHEとDSA証明書の組み合わせ
- ECDHE-RSA--------ECDHEとRSA証明書の組み合わせ
- ECDHE-ECDSA------ECDHEと楕円曲線DSA証明書の組み合わせ
まとめ
今回は暗号化アルゴリズムの一つである「PFS」に関して調べてみました。
大事なデータの秘密鍵が何年か後に盗まれてしまい、そのデータが悪用されることが無いように対策を打つことは大事なのですね。
以上です!
参考URL)