暗号技術は、達成すべき3つの属性があります。そして、SSL/TLSには、実装に当たって3つの暗号技術を組み合わせています。ただし、この3つは必ずしも一致するものではありません。ここでは、暗号技術が達成すべき3つの目標と、SSL/TLSの実装で使われる3つの技術について説明します。
暗号技術の目標
暗号と言えば、まず第一に想像するのが、「第三者に文章を読めなくする」ということですが、これだけでは文章の安全性の確保としては不十分です。現代暗号では、安全性確保のために3つの要素が考慮されています。
機密性
上でも触れたように、「正当な受信者以外が通信内容を知ることはできない」という性質です。古代暗号から脈々と受け継がれている機能ですが、現代暗号の中には誰もが「正当な受信者」となる、すなわち機密性を持たない応用も存在しています。
完全性
たとえ正しく機密性が確保された文書であっても、通信途中で(暗号は外さないままで)改竄されてしまうことがありえます。「完全性」は改竄がされた場合には復号自体ができなくなる、あるいは復号時にチェックすれば改竄が判明するような仕組みを取って、改竄されない通信を確保します。
相手の認証
現実に相手と会う場合よりはるかに容易な形で、コンピューター通信では常になりすましの危険が発生します。いくら機密性・完全性を保ったところで、なりすまされた相手と通信するようでは安全性は崩壊してしまいます。技術的に相手を偽れないようにすることも、暗号技術の目指すところの1つです。
SSL/TLSの3要素
ブラウザ上で日常的に使われているSSL/TLSですが、詳しく見れば3つの要素を組み合わせています。
公開鍵暗号
詳細は省略しますが、「公開鍵と秘密鍵を生成する」という、古典暗号とは大幅に違った性質を持つ暗号です。その性質を生かした核種の応用が存在しますが、SSL/TLSでは証明書を利用した「相手の認証」と、公開鍵暗号で直接あるいは応用形のDH鍵共有で暗号鍵を共有することで、「機密性」保証の一部を担います。
共通鍵暗号
これは古典暗号とも共通する、暗号化と復号化に同じ鍵を使う暗号化方式です。公開鍵暗号は数学的に複雑となるため速度が遅く、通信すべてを暗号化するのは実用的ではありません。そこで、鍵だけは上の公開鍵暗号でやり取りして、その鍵を使って共通鍵暗号で本文を暗号化して「機密性」を確保する、という2段構えの構成(ハイブリッド暗号)となっています。
メッセージ認証符号
メッセージの「完全性」を保証するために、メッセージ認証符号が使われます。メッセージ本体と、共有している鍵を使って、鍵を知らない第三者には生成できない認証符号を付けます。
認証付き暗号
メッセージ自体の暗号化とメッセージ認証符号を独立に付けると、組み合わせによってはセキュリティ上の問題が生じることが分かってきました。そういうわけで、「認証付き暗号」として1つのアルゴリズムとしてしまおうという考えが生まれ、策定中のTLS 1.3ではそれが必須となる予定です。
参考文献
結城浩「暗号技術入門 秘密の国のアリス」