暗号技術の定番本として知られている暗号技術入門 第3版 秘密の国のアリスを読み終えました。暗号周りの基礎知識が身につくので、新人のみならず、その辺をおさえきれていない人にとってもおすすめです。暗号の仕組みの細かい部分を除けば、エンジニアでない人にとっても読む価値はあると思います。
どんな内容か
次の6つの技術を軸に、暗号技術を説明しています。
- 対称暗号
- 公開鍵暗号
- 一方向ハッシュ関数
- メッセージ認証コード
- デジタル署名
- 疑似乱数生成機
対称暗号
暗号化と複合化に同じ鍵を使う形の暗号で、AES、DESがその代表例です。そのため、共通鍵暗号とも呼ばれます。公開鍵暗号に比べて、暗号化にかかる時間や強度は優れているのですが、暗号文をやりとりする双方が同じ鍵を持つ必要があるため、鍵配送問題が生じます。
暗号化に使った鍵が盗聴されてしまうと、暗号文が解読されてしまい、機密にしたい情報を守るには、鍵を安全にやりとりする問題に帰着されるということです。
公開鍵暗号
上述の鍵配送問題を解決策のひとつして、公開鍵暗号がでてきます。これは、暗号化と復号化の鍵を別々に作成し、暗号化用の鍵(公開鍵)のみを公開してやりとりするものです。
公開鍵のみでは、暗号文を解読することは事実上不可能であることと、対応する秘密鍵でないと復号できないことから、公開鍵を渡すことによって鍵配送問題が解決されます。
公開鍵の認証の問題
これで万事解決にはならず、あらたな問題が発生します。それは入手した公開鍵が、自分がやりとりしたい相手のものであるかどうかを判断する必要があるからです。
その問題をついたのが、man-in-the-middle攻撃です。
下記サイトのように、AとBの間に、攻撃者Cが入り込んで、公開鍵のやりとりを仲介してしまうことです。
http://masuipeo.com/tech/mitm.html
こうなると、暗号技術に関係なく、AとBのやりとりを攻撃者は取得できてしまいます。Aとしては、受け取った公開鍵がBのものであることを確かめる仕組み、つまり認証が必要になります。
デジタル署名
認証の仕組みとして、デジタル署名がでてきます。公開鍵暗号の応用で、秘密鍵を使って署名(≒メッセージのハッシュ値を暗号化)し、公開鍵を使って署名の検証(≒ハッシュ値を復号化し、受け取ったメッセージのハッシュ値と比較)と、鍵の役割を逆にすることで実現しています。
公開鍵証明書
man-in-the-middle攻撃の対策として、証明書の仕組みがでてきます。
信頼できる組織、認証局(CA)によってデジタル署名された公開鍵を使うことで、デジタル署名の検証を通信の前に行うことで、これからやりとりする相手が信頼できるものかどうかを判定できるようになります。これがいわゆるSSL証明書になります。
認証局はどうやって、公開鍵が本人のものかを確認しているのか?
証明書のレベルによりますが、メールアドレスが届くかどうかで済むものもあれば、対面と身分証の提示を伴うケースもあるようです。
認証局への信頼は何で担保するのか?
これで万事解決かというと、やはりそうでもないです。例えば、認証局が署名に使っている秘密鍵が漏洩してしまうと、攻撃者にとって都合のよい証明者がつくられてしまいます。あるいは、攻撃者がもっともらしい認証局になるということもできます。 公開鍵の信頼から、認証局への信頼に問題を移し替えたようなものです。
個々人から組織に変わったので、その意味では判断しやすいといえます。会社としてちゃんとしているとか、実績があるとか、そういった別の情報源で信頼できるかどうかを判断することになります。
まとめ
資格試験などでも、https通信やRSA公開鍵についての知識が問われることが多いです。
この本を読むと、そのあたりを大分カバーできると思います。
また、GitHubに公開鍵を登録したり、SSL証明書を更新したり、オレオレ証明書をつくることの意味もわかってきますので、なんとなくやっている人にもあらためて知識を整理するにはうってつけです。
現状の技術では、なにもないところから信頼は生み出せないので、どこかで何かを信頼するということの本質につきあたるようです。