暗号モード(アンゴウモード)とは | 意味や読み方など丁寧でわかりやすい用語解説
暗号モード(アンゴウモード)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。
読み方
日本語表記
あんごうモード (アンゴウモード)
英語表記
Cipher Mode (サイファモード)
用語解説
暗号モードとは、ブロック暗号アルゴリズムを繰り返し利用して、任意の長さのデータを安全に暗号化するための操作手順や利用方法を定めた規則のことである。ブロック暗号は、AESやDESに代表されるように、固定長のデータブロック(例えば128ビット)を単位として暗号化や復号を行う。しかし、私たちが実際に扱うファイルやメッセージといったデータは、この固定長よりもはるかに長い可変長データである。このため、長い平文をブロック単位に分割し、それらをどのように順次処理していくかを定義する必要がある。この手順こそが暗号モードであり、どのモードを選択するかによって、暗号の安全性や処理性能が大きく左右される。もし単純に平文をブロックに分割し、それぞれを同じ鍵で独立して暗号化した場合、元の平文に同じ内容のブロックが存在すると、それらは必ず同じ暗号文ブロックに変換されてしまう。これにより、暗号文から元のデータのパターンや構造が推測される危険性が生じる。このような脆弱性を回避し、より安全な暗号化を実現するために、様々な特性を持つ暗号モードが考案されている。
最も基本的な暗号モードとして、ECB(Electronic Codebook)モードがある。これは平文をブロックに分割し、各ブロックを同じ暗号鍵で独立して暗号化する最も単純な方式である。各ブロックの処理が他のブロックに依存しないため、並列処理が可能で高速という利点があるが、前述の通り、同じ内容の平文ブロックは常に同じ暗号文ブロックに変換されるという深刻な脆弱性を持つ。このため、暗号文に元のデータのパターンが残りやすく、特に画像データなどでは元の画像の輪郭が判別できてしまうことがある。この性質から、ECBモードは現在では特別な理由がない限り使用が推奨されない。
ECBモードの問題点を解決するために広く利用されているのが、CBC(Cipher Block Chaining)モードである。このモードでは、ある平文ブロックを暗号化する際に、その直前の暗号文ブロックとの間でXOR(排他的論理和)演算を行ってから暗号化処理を実行する。最初の平文ブロックには、直前の暗号文ブロックが存在しないため、初期化ベクトル(IV)と呼ばれるランダムなデータを使用する。この「連鎖」の仕組みにより、たとえ同じ内容の平文ブロックが連続しても、直前の暗号文ブロックが異なるため、生成される暗号文ブロックはそれぞれ異なるものになる。これにより、ECBモードのようなパターン漏洩を防ぐことができる。ただし、暗号化処理が直前の結果に依存するため、並列処理ができないという欠点がある。
ブロック暗号をストリーム暗号のように利用するためのモードとして、CFB(Cipher Feedback)モードとOFB(Output Feedback)モードがある。ストリーム暗号とは、データを1ビットや1バイト単位で逐次的に暗号化する方式である。CFBモードは、直前の暗号文ブロックを暗号化し、その結果と現在の平文をXORすることで暗号文を生成する。OFBモードは、初期化ベクトルを暗号化し、その結果を平文とXORする。次のステップでは、暗号化処理の出力結果をさらに暗号化し、次の平文とXORするという処理を繰り返す。これらのモードは、データをブロック単位で待つ必要がなく、リアルタイムな通信などに適している。
現在、高い性能と安全性の両立から広く採用されているのがCTR(Counter)モードである。このモードは、ブロックごとにインクリメントされるカウンタ値を暗号化し、その結果と平文ブロックをXORすることで暗号文を生成する。カウンタ値は各ブロックで一意であればよく、予測可能であるため、各ブロックの暗号化・復号処理を他のブロックから完全に独立して行うことができる。これにより、CBCモードなどでは不可能だった完全な並列処理が実現でき、非常に高速な処理が可能となる。
さらに、近年の暗号技術では、データの機密性に加えて、そのデータが通信途中で改ざんされていないことを保証する「完全性」と、データが正規の送信者から送られたことを確認する「認証」の機能も同時に提供することが重要視されている。これを実現するのが、認証付き暗号(AEAD)と呼ばれるもので、その代表的なモードがGCM(Galois/Counter Mode)である。GCMは、CTRモードによる高速な暗号化と、データの認証コードを生成する機能を組み合わせたものである。これにより、暗号化と改ざん検知を一度の処理で行うことができ、より堅牢なセキュリティを実現する。TLS 1.2以降の通信プロトコルなどで標準的に利用されており、現代のセキュアなシステム構築において中心的な役割を担っている。このように、暗号モードは単なる手順ではなく、システム全体のセキュリティレベルを決定づける重要な要素であり、その特性を正しく理解し、目的に応じて適切なモードを選択することが不可欠である。