質問: お世話になります。 OpenPGP(もしくは、それに類する暗号通信技術全般に言える事)について質問です。 PGPは電子署名と(フィンガープリント確認などを経て入手した)正当な公開鍵を用いて、「なりすまし」被害を防ぐことが可能、とされています。 私もなんとなく、そのことを疑問もなく受け止めていたのですが、ある日突然疑問が湧いてきました。 最近、ドアセキュリティの一つである「スマートロック」の脆弱性や危険性が叫ばれて久しいです。 一見、安全性を高めてくれるイメージがありますが、セキュリティの実装がお粗末な製品が多いと言われています。 中でも興味深かったのは、無線LAN連携機能をハックされて、電子鍵の持ち主による、「ドア解鍵のための認証情報が含まれた暗号通信データ」を丸々傍受され、それをコピーしたデータをスマートロックに送りつけることにより、ドアを不正に解鍵できてしまった、という事例が報告されています。 私が気になったのは、ここです。 例として、OpenPGPに目を向けてみると、相手に安全にデータを送る場合、 「暗号化した送りたいデータ+署名」という形式で相手に送ることが一般的です。 もし、データや署名などが改竄されていた場合、公開鍵を使った署名検証に引っかかるため、改竄の心配はありません。 しかし「なりすまし」についてはどうでしょうか。確かに、署名によって、一面的には防げます。しかし先のスマートロックの事例を見る限り、完全ではないような気がするのです。 つまり、署名検証をパスすることでわかるのは、この「暗号化されたデータ+署名」の作成者が、受取り手が署名検証に使った公開鍵に対応する秘密鍵を持っている人物である。ということだけです(秘密鍵が流出していない限りは)。 ただ、この「暗号化されたデータ+署名」自体が平文で送信されていた場合はどうでしょう。それ全体を傍受され、その傍受者がそのデータを丸々コピーして、送りつけてきた場合、受取り手は送信者(傍受者)を、自分の知り合いと誤認する恐れがあります(つまり、なりすましです)。 おそらく、この問題がある以上、安全性を完全には担保できない(送信データ自体は信頼できる人間が作ったものだとしても、そのデータの送信者が悪者かもしれない)ので、おそらく頭の良い人たちによって何らかの対策がされていると思うのですが、そこらへんがよくわかりません。 (浅知恵ですが、何らかのワンタイム的な情報を組みあわせると防げる気もしますが...) この問題について、何かご存知の方がいらっしゃったらご教示をいただけると嬉しいです。 私はセキュリティ専門家では全くないので、上記の疑問点が的外れである可能性もあります。そうした場合も遠慮なくご指摘いただければ幸いです。よろしくお願い致します。
回答: 暗号化したメールの場合、通常の使い方では「送信の直前に暗号化を行う」ので、「暗号化だけしておいておいたものを、第三者が本人の意志と関係なく配送に乗せてしまう」ということは、よほど厳格性を求められるのでない限り気にしなくていいと思います。理屈の上では、第三者が同じメールを再送することもできますが、メッセージIDや送信時間などが一致すれば「同じメール」であるので、ログ管理などで再送だということは判明します。 一方で、スマートロックのように、常に同じ文言を送る場合、暗号化した結果を再送するという**リプレイ攻撃**が成立します。このような場合は、認証を受け付ける側が一意なID(nonce)をその都度送って、スマートロック側がそのIDをもとに計算した値を返す、という方法でリプレイ攻撃を防ぐことができます。