前方秘匿性 (ゼンポウヒトクセイ) とは | 意味や読み方など丁寧でわかりやすい用語解説
前方秘匿性 (ゼンポウヒトクセイ) の読み方
日本語表記
前方秘匿性 (ゼンポウヒトクセイ)
英語表記
Forward secrecy (フォワードシークレシー)
前方秘匿性 (ゼンポウヒトクセイ) の意味や用語解説
前方秘匿性とは、暗号化通信において、通信の安全性を確保するために用いる長期的な秘密鍵が将来漏洩した場合でも、過去の通信内容の機密性が保たれるというセキュリティ上の性質である。英語ではForward SecrecyやPerfect Forward Secrecy (PFS) と呼ばれる。この性質は、特に長期間にわたってデータの機密性を維持する必要がある現代のインターネット通信において、極めて重要な役割を担っている。たとえ現時点では安全なシステムであっても、未来永劫その安全性が保証されるわけではない。サーバーへの不正アクセスや内部犯行、あるいは将来的な計算技術の進歩によって、現在は安全と考えられている秘密鍵が漏洩するリスクは常に存在する。前方秘匿性は、そのような万一の事態が発生した際に、被害を過去の通信にまで波及させないための重要な防御機構として機能する。 前方秘匿性の仕組みを理解するためには、暗号化通信で使われる鍵の種類とその役割を把握する必要がある。一般的に、ウェブサイトの閲覧などで利用されるTLS/SSLといったプロトコルを用いた通信では、複数の鍵が用いられる。まず、サーバーの身元を証明し、安全な鍵交換の土台となるのが、サーバー証明書に含まれる公開鍵と、それに対応するサーバーだけが厳重に保管する秘密鍵のペアである。これらは年単位の長期間にわたって使用されるため、長期鍵とも呼ばれる。次に、実際の通信データを暗号化・復号するために、通信セッションが開始されるたびに生成される一時的な鍵がある。これをセッション鍵と呼ぶ。前方秘匿性の有無は、このセッション鍵をクライアントとサーバーの間でいかにして安全に生成し、共有するかの方式(鍵交換アルゴリズム)によって決まる。 前方秘匿性を持たない鍵交換方式、例えば古典的なRSA鍵交換では、セッション鍵の安全性がサーバーの長期的な秘密鍵に完全に依存する。この方式では、まずクライアントがセッション鍵の元となる秘密の情報(プリマスターシークレット)を生成する。次に、その情報をサーバーの公開鍵を使って暗号化し、サーバーへ送信する。サーバーは、自身だけが持つ秘密鍵を用いてこれを復号し、クライアントと同じ秘密の情報を得る。この情報を元に、双方が同一のセッション鍵を生成して通信を開始する。この方式の致命的な弱点は、もし攻撃者がネットワーク上の通信を傍受して暗号化されたデータを記録しておき、後日なんらかの方法でサーバーの秘密鍵を窃取した場合、その秘密鍵を使って過去に保存した全ての通信データを復号できてしまう点にある。つまり、一つの鍵の漏洩が、過去の全ての通信の機密性を破壊する結果につながる。 これに対し、前方秘匿性を持つ鍵交換方式では、セッション鍵の生成にサーバーの長期的な秘密鍵を直接使用しない。代表的な方式として、Ephemeral Diffie-Hellman (DHE) や、その処理をより高速化した楕円曲線暗号版であるElliptic Curve Diffie-Hellman Ephemeral (ECDHE) がある。Ephemeralとは「一時的な」「つかの間の」という意味であり、その名の通り、これらの方式では通信セッションごとに使い捨ての鍵ペアを生成する。通信が開始されると、クライアントとサーバーの両方が、そのセッションのためだけの一時的な鍵ペア(一時的な公開鍵と一時的な秘密鍵)をそれぞれ生成する。そして、お互いの一時的な公開鍵を交換し、各々が「自分の一時的な秘密鍵」と「相手から受け取った一時的な公開鍵」を組み合わせて特定の数学的計算を行う。この計算により、通信を盗聴している第三者には知られることなく、クライアントとサーバーは同一のセッション鍵を導出できる。このプロセスにおいて、サーバーの長期的な秘密鍵が果たす役割は、セッション鍵の計算そのものではなく、鍵交換の途中でサーバーから送られるメッセージ(一時的な公開鍵などを含む)に対してデジタル署名を行うことである。この署名により、クライアントは通信相手が本物のサーバーであることを確認できる。 この方式の最大の利点は、セッション鍵の生成に使用された一時的な鍵ペアが、通信セッションの終了と共に破棄されることにある。したがって、たとえ将来サーバーの長期的な秘密鍵が漏洩したとしても、過去の各通信セッションでセッション鍵の生成に使われた一時的な秘密鍵は既に存在しないため、攻撃者が保存しておいた暗号化通信データからセッション鍵を再計算することは不可能となる。結果として、過去の通信内容の機密性は守られる。これが前方秘匿性の本質である。現代のインターネットでは、HTTPS通信で利用されるTLSプロトコルにおいて、前方秘匿性を持つECDHEなどの暗号スイートが広く標準的に利用されている。システムを設計・構築するエンジニアは、提供するサービスのセキュリティレベルを高め、利用者のプライバシーを長期的に保護するために、前方秘匿性をサポートするプロトコルや暗号方式を適切に選択・設定することが強く求められる。