セキュリティプロトコルは暗号方式と混同されることが多い。しかし、両者はあくまで異なる概念だ。セキュリティプロトコルは、暗号アルゴリズムをはじめとする様々な暗号関連技術を組み合わせて安全性を確保するための、いわば「枠組み」である。
三つの役割がある
セキュリティプロトコルの役割は「盗聴」「改ざん」「なりすまし」の三つの攻撃を防ぐことだ(図2-1)。それぞれの役割を暗号技術で実現する。
情報を平文でやり取りしていると、その通信を盗聴した攻撃者に内容を知られてしまう。そこで暗号アルゴリズムを利用してやり取りを暗号化することで、盗聴を防ぐ。
改ざんは、相手に送ったデータと相手が受け取ったデータが変わっていないかどうかを確認することで防ぐ。そのために使われるのがハッシュと呼ばれるものだ。ハッシュは任意のデータを一定の長さに変換したデータである。変換にはハッシュ関数▼という特殊な関数を使う。データが改ざんされているとハッシュの値が変わるので、改ざんされていることを検知できる。
通信相手がなりすましていないかどうかは、正しい相手であることを証明する「デジタル証明書」を利用して確認することが多い。
守る対象に応じてこれらを適切に組み合わせる必要がある。
「食材」と「レシピ」がある
セキュリティプロトコルの仕様には、大きく二つのことが決められている(図2-2)。「具体的にどのような暗号技術を使うか」ということと「それらの技術をどういった手順で使って安全性を確保するか」ということである。
料理に例えると、前者が食材、後者がレシピに相当する。レシピは「食材をうまく使っておいしい料理を作る」ためのもの。セキュリティプロトコルの手順は「暗号技術をうまく使って安全性を高める」ことを目的とする。
これらは守る対象によって異なるため、様々なセキュリティプロトコル▼が決められている(表2-1)。Part1で見たように、無線LANを守るのがWPA2、Webサイトへのアクセスを守る▼のがSSLやTLSだ。ほかにもWANの通信を守る「IPsec▼」や「SSL-VPN▼」、リモートアクセスを守る「SSH▼」、メールを守る「S/MIME▼」、ネットワーク管理のための通信を守る「SNMPv3▼」などがある。
手順は前半と後半に分かれる
セキュリティプロトコルの手順をもう少し詳しく説明したのが図2-3だ。大きく前半の「ハンドシェイク▼」と後半の「暗号通信」の二つの部分に分かれる。
ハンドシェイクでは、一般に複数回のやり取りを経て、通信しているのが正しい相手かどうかを確認する。ハンドシェイクの名前は、やり取りの回数で表現されることもある。例えば、4回のやり取りからなるハンドシェイクは「4ウェイハンドシェイク」と呼ぶ。こうしたやり取りの中で、手順の後半の暗号通信で使う鍵を交換する。
ハンドシェイクによって相手を確認できたら、決められた手順に従って、その相手との間で暗号通信を行う。
暗号アルゴリズムには、1種類の鍵を使う「共通鍵暗号方式」と2種類の鍵を使う「公開鍵暗号方式▼」の二つの方式があるが、ここでは共通鍵暗号方式を使うことが多い。共通鍵暗号方式のほうが公開鍵暗号方式よりも処理が軽いためだ。
これらの手順のどこに問題があっても脆弱性になる。例えば、WPA2ではハンドシェイクの手順に問題があった。これを悪用して攻撃を行うのがKRACKsである。一方、SSLでは暗号通信の手順に問題があった。POODLEはこれを悪用することで、攻撃者が暗号を解読できる。
現在、最もよく使われているのが「SHA-2」である。ハッシュ長のビット数に応じて「SHA-256」「SHA-384」「SHA-512」などがある。
この特集では脆弱性が問題になったWPA2とSSL/TLSを取り上げる。
このほかメールを守る「SMTP over SSL」「POP over SSL」などもある。
security architecture for Internet Protocolの略。
Virtual Private Networkの略。
Secure SHellの略。
Secure/Multipurpose Internet Mail Extensionsの略。
Simple Network Management Protocol version 3の略。
二つの機器の間で実際の通信を行う前に、準備として必要なやり取りを行うこと。日本語では握手を意味する。
実際には共通鍵暗号方式で利用する鍵の交換に使われることが多い。