teratail header banner
teratail header banner
質問するログイン新規登録
セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

Q&A

解決済

3回答

2463閲覧

OpenPGPの「なりすまし」対策について(「暗号データ+署名」全体を傍受、コピー送信された場合)

EMADURANDAL

総合スコア41

セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

2グッド

4クリップ

投稿2017/02/13 15:07

2

4

お世話になります。

OpenPGP(もしくは、それに類する暗号通信技術全般に言える事)について質問です。

PGPは電子署名と(フィンガープリント確認などを経て入手した)正当な公開鍵を用いて、「なりすまし」被害を防ぐことが可能、とされています。
私もなんとなく、そのことを疑問もなく受け止めていたのですが、ある日突然疑問が湧いてきました。

最近、ドアセキュリティの一つである「スマートロック」の脆弱性や危険性が叫ばれて久しいです。
一見、安全性を高めてくれるイメージがありますが、セキュリティの実装がお粗末な製品が多いと言われています。

中でも興味深かったのは、無線LAN連携機能をハックされて、電子鍵の持ち主による、「ドア解鍵のための認証情報が含まれた暗号通信データ」を丸々傍受され、それをコピーしたデータをスマートロックに送りつけることにより、ドアを不正に解鍵できてしまった、という事例が報告されています。

私が気になったのは、ここです。

例として、OpenPGPに目を向けてみると、相手に安全にデータを送る場合、
「暗号化した送りたいデータ+署名」という形式で相手に送ることが一般的です。
もし、データや署名などが改竄されていた場合、公開鍵を使った署名検証に引っかかるため、改竄の心配はありません。

しかし「なりすまし」についてはどうでしょうか。確かに、署名によって、一面的には防げます。しかし先のスマートロックの事例を見る限り、完全ではないような気がするのです。

つまり、署名検証をパスすることでわかるのは、この「暗号化されたデータ+署名」の作成者が、受取り手が署名検証に使った公開鍵に対応する秘密鍵を持っている人物である。ということだけです(秘密鍵が流出していない限りは)。

ただ、この「暗号化されたデータ+署名」自体が平文で送信されていた場合はどうでしょう。それ全体を傍受され、その傍受者がそのデータを丸々コピーして、送りつけてきた場合、受取り手は送信者(傍受者)を、自分の知り合いと誤認する恐れがあります(つまり、なりすましです)。

おそらく、この問題がある以上、安全性を完全には担保できない(送信データ自体は信頼できる人間が作ったものだとしても、そのデータの送信者が悪者かもしれない)ので、おそらく頭の良い人たちによって何らかの対策がされていると思うのですが、そこらへんがよくわかりません。
(浅知恵ですが、何らかのワンタイム的な情報を組みあわせると防げる気もしますが…)

この問題について、何かご存知の方がいらっしゃったらご教示をいただけると嬉しいです。
私はセキュリティ専門家では全くないので、上記の疑問点が的外れである可能性もあります。そうした場合も遠慮なくご指摘いただければ幸いです。よろしくお願い致します。

kanbeworks, raccy👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

暗号化したメールの場合、通常の使い方では「送信の直前に暗号化を行う」ので、「暗号化だけしておいておいたものを、第三者が本人の意志と関係なく配送に乗せてしまう」ということは、よほど厳格性を求められるのでない限り気にしなくていいと思います。理屈の上では、第三者が同じメールを再送することもできますが、メッセージIDや送信時間などが一致すれば「同じメール」であるので、ログ管理などで再送だということは判明します。

一方で、スマートロックのように、常に同じ文言を送る場合、暗号化した結果を再送するというリプレイ攻撃が成立します。このような場合は、認証を受け付ける側が一意なID(nonce)をその都度送って、スマートロック側がそのIDをもとに計算した値を返す、という方法でリプレイ攻撃を防ぐことができます。

投稿2017/02/14 01:51

maisumakun

総合スコア146659

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

EMADURANDAL

2017/02/15 15:22

3人の方どなたも非常に親切に答えていただき、おかげさまで理解が深まりました。 ありがとうございます。 どのご回答も大変勉強になり、甲乙つけがたく、迷ったのですが、 実際的な内容の多かったmaisumakunさまのご回答をベストアンサーにさせていただきました。 皆さま、本当にありがとうございました。
guest

0

暗号化の署名は、現実のサインや、印鑑をデジタル化したものと考えるのがよいかと思います。

つまり、サインや、印鑑と同じく、その内容を誰が書いたかという確認ができます。
しかし持ってきた人が、そのサインや、印鑑を押した人である事は現実でも困難で、
これはデジタル署名も同様です。
そのため、署名は本人確認には使えないという事です。

しかしながら、その文書内に差出人、宛先が書いてあれば、誰が誰に充てて
書いたかというのが分かります。
特に、例えばそこにメールアドレスが書いてあれば異なるメールアドレスからだと
分かってしまいます。

このように、現実のサインや、印鑑と同様に、デジタル署名はその人が書いたことを
確認できますが、その送信者が本人であることをデジタル署名のみでは確認できません。

つまり懸念されている事は、現実世界において、他の人が押印した書類を持って、
その人であること、またはその人の知り合いである事を誤認させるのと
同じような事になります。

そのため電子署名は利用される方は原則的に送信するすべてのメールに
電子署名をする必要があります。
そうすることで、あるメッセージに対する返信に電子署名がない場合は、
なりすましを疑う事が可能になります。

投稿2017/02/13 23:49

編集2017/02/13 23:53
takeshi

総合スコア264

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

提示されたケースでは、メッセージ作成者=公開鍵の使用者+その内容が改ざんされていないことしか確認できません。
よっていわゆるリプライ攻撃による「なりすまし」を防ぐには、maisumakunさんも指摘されているように
メッセージ本文に連番を含ませるなどメッセージの交換手順上での対策が必要です。

ちなみに、不特定多数の初対面の人と安全にメッセージ交換できることが求められる仕組み(たとえば電子メール)では、メッセージ交換で使われている公開鍵が、たしかに送信者(メッセージ作成者)本人だということを確認できる仕組みが必要です。これは一般的に「認証局」が担っています。

参考:電子証明書と認証局

また、ちょっと変わった仕組みとして、公開鍵のフィンガープリントを書籍に印刷して著者=公開鍵を紐づけた例もあります。
参考:Winnyの技術 フィンガープリント

投稿2017/02/14 02:55

編集2017/02/14 02:59
can110

総合スコア38352

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問