質問: 現在,公開鍵暗号方式について勉強を進めております. 中間者攻撃が存在し, かつ,公開鍵基盤を利用しない, また,信頼境界内でやりとりすることができる機会がある という前提で,安全性を確保できる方法について考えています. 思いつく限りの,以下の3つに強度の違いはあるのでしょうか. また,これ以外に第三者の攻撃に対して強度を上げる手法はあるのでしょうか. 1. 公開鍵暗号方式で通信し,平文に"直接会って合意したパスフレーズ"を追加して暗号化する. 2. 共通鍵暗号方式で通信し,暗号化に"直接会って合意したパスフレーズ"を用いる. 3. 公開鍵暗号方式で通信し,公開鍵を"直接会って渡しておく". 1において,攻撃者はパスフレーズを手に入れた後,中間者攻撃を狙う必要がある. 2において,攻撃者はパスフレーズを手に入れた後,中間者攻撃やその他の攻撃. 3において,攻撃者は公開鍵を手に入れた後,中間者攻撃を狙う. 総当たり攻撃に対しての強度なども気になります.共通鍵暗号の方が強度が高いとどこかで見た記憶がありますが,どうなのでしょうか. 【追記】秘密鍵について--- 秘密鍵は,ローカルストレージに保管します. ローカルストレージに保管する際,個人で決めたパスワードで暗号化します. そのパスワードは,保管せず,その個人で覚えておくものにするつもりです. 【追記終わり】--- 知恵をお貸しいただければ幸いです.
回答: > > 3. 公開鍵暗号方式で通信し,公開鍵を"直接会って渡しておく". > > > 通常こういう方式は行いません。 公開鍵暗号は計算量が非常に大きいため、実用の通信には重すぎるからです。 そこでどうするかというと、通信の本体部分は共通鍵暗号を用いることにして、その共通鍵を伝送するためだけに公開鍵暗号を用いるというやり方が一般的です。 つまり、 2. 「共通鍵暗号方式で通信し,暗号化に"直接会って合意したパスフレーズ"を用いる」の直接会うところを公開鍵暗号で代替しているということ。 もちろんその公開鍵暗号通信にあたって公開鍵がMITMされたら元も子もありませんので、結局直接会って公開鍵を渡すことになります。 えっ、それじゃあ最初から直接会って共通鍵を交換すればいいじゃないって? そう、だから公開鍵暗号に公開鍵基盤が必須になるのです。 2と3の関係はこれでよろしいでしょうか。 1については、どういう通信を想定しておられるのかちょっと読み取れませんでした。