対称鍵(共通鍵)暗号とは:仕組み・種類と代表例(AES・Twofish等)
対称鍵(共通鍵)暗号の仕組み、ストリーム/ブロック暗号の違いと代表例(AES・Twofish等)を分かりやすく解説。用途・安全性・攻撃手法も網羅。
対称鍵アルゴリズムとは、暗号技術における手法の一つである。復号化と暗号化のための鍵が全く同じ共有秘密である場合のことである。鍵(共有秘密)は安全な乱数生成器でランダムに生成することも、パスワードから鍵導出関数(KDF)を使って生成することも、あるいはDiffie-Hellmanのような秘密鍵交換手順を用いて共有することもできる。対称鍵暗号は、同一の鍵で暗号化と復号を行うため、鍵の配布と管理(鍵管理)が安全性の要となる。
特徴と利用場面
対称鍵アルゴリズムは、公開鍵暗号に比べて一般に計算が速く、データ量の多い通信やストレージ暗号化に適している。このため実際の通信では、次のようなハイブリッド方式が多く使われる:まず公開鍵暗号で一時的なセッション鍵(対称鍵)を安全に送受信し、その後その対称鍵で大量データを高速に暗号化する。公開鍵暗号(鍵暗号、非対称鍵暗号)は鍵配布や認証に便利だが、処理が重いのでセッション鍵の配送など限られた用途で使われることが多い。
種類:ストリーム暗号とブロック暗号
対称鍵アルゴリズムは大きく分けて二つある:ストリーム暗号とブロック暗号の2種類がある。ストリーム暗号は、メッセージを連続したビットやバイトの流れと見なし、流れに合わせて逐次的に疑似乱数列(鍵ストリーム)とXORすることで暗号化する。ブロック暗号は固定長のビット列(ブロック)を一単位として処理する。古くは64ビットブロックが一般的だったが、高度な暗号化の標準のような現代の暗号では128ビットブロックを採用していることが多い。
ブロック暗号は単体で用いると安全性に問題が生じるため、実運用ではモード(例:ECB, CBC, CTR, GCM など)を使う。モードによりIV(初期化ベクトル)やノンス(nonce)の取り扱い、パディング、並列処理性、認証付加の可否が異なるため、用途に応じたモード選択とIV/nonce管理が重要である。
代表的な対称暗号(例)
- AES (aka Rijndael) — 128ビットのブロックサイズ、鍵長は128/192/256ビット。現在の標準として広く使われ、ハードウェア/ソフトウェア双方向で効率的。
- Twofish — AES選定の最終候補の一つ。変化性が高く高い柔軟性を持つ設計。
- Serpent — AES選定の最終候補で、安全性重視の設計。理論的な安全余裕を大きく取っている。
- Blowfish — 64ビットブロック、可変長鍵(最大448ビット)。軽量で広く用いられたが、64ビットブロックのため現代的用途では制約がある。
- CAST5 — かつて広く使われたブロック暗号(64ビットブロック)。
- RC4 — ストリーム暗号。かつては広く利用されたが、初期のバイアスや実運用での脆弱性が見つかり、現在は推奨されない。
- TDES(3DES) — DESを3回適用することで安全性を高めたものだが、鍵長の実効性や性能の面で現在は非推奨・退役対象。
- IDEA — PGPなどで使われた歴史的な暗号。独自の構造を持つ。
攻撃手法と注意点
歴史的に、多くの暗号解析手法は対称鍵暗号の特性(対称性や既知の構造)を悪用してきた。代表的な攻撃には、既知の平文攻撃、選択された平文攻撃、差分暗号解読、線形暗号解読と呼ばれる手法がある。これらは暗号の設計やラウンド数、サブ鍵の生成方法に依存して成功率が変わる。
その他の実用上の脅威としては、総当たり攻撃(鍵長が短いと危険)、サイドチャネル攻撃(電力解析やタイミング攻撃など)、運用ミス(IVの再利用、同じ鍵・ノンスの再使用、パディングオラクル)などがある。特にストリーム暗号やCTR/GCMモードでの鍵+ノンスの再利用は暗号文から平文が漏れる深刻な失敗を招く。
安全に使うための技術と推奨事項
- 認証付き暗号(AEAD)を使う:GCM、CCM、EAX、ChaCha20-Poly1305のように暗号化と同時に完全性(認証)を提供するモードを用いることで改ざん検知が可能になる。
- IV/nonceの管理:IVはランダムにする、もしくは単調増加するカウンタを用いるなど適切に扱う。CTR/GCMなどでは同じIV/nonceと鍵の組み合わせを二度使ってはならない。
- 鍵長の選択:AES-128は多くの用途で十分だが、長期保護や高い安全余裕が必要ならAES-256を選ぶ。DESやRC4、2DESは避ける。
- 鍵導出とパスワード処理:ユーザのパスワードから鍵を得る場合は、パスワードを直接鍵にしない。PBKDF2、scrypt、Argon2などのKDFを用い、適切なソルトと反復回数(コストパラメータ)を設定する。
- 鍵管理:鍵の生成は信頼できる乱数源を使い、鍵の保存や配布は暗号化・アクセス制御を行う。鍵の周期的な更新と漏洩時の迅速な無効化手順を整備する。
- 実装とライブラリの選定:暗号は自前実装が危険な分野。信頼された暗号ライブラリ(例:OpenSSL、libsodium、BoringSSL 等)やプロトコルを利用し、最新の推奨設定を用いること。
まとめ
対称鍵(共通鍵)暗号は、高速で大量データの保護に適しており、公開鍵暗号と組み合わせたハイブリッド方式で広く使われている。ストリーム暗号とブロック暗号があり、モードやIV/nonce、認証の付加、鍵管理が安全性を左右する。AESのような現代的なアルゴリズムとAEADモード、適切なKDFやライブラリを組み合わせることで、安全で実用的な暗号化が可能になる。歴史的な攻撃手法(既知の平文攻撃、選択された平文攻撃、差分暗号解読、線形暗号解読となど)や運用ミスに対する対策を常に意識することが重要である。

対称鍵アルゴリズムでは、暗号化に使用される鍵は復号化に使用される鍵と同じです。このため、秘密にしておく必要があります。
対称的アルゴリズムと非対称アルゴリズム
対称的アルゴリズムとは異なり、非対称鍵アルゴリズムは暗号化には復号化とは異なる鍵を使用します。つまり、非対称アルゴリズムの暗号化キーを知っているユーザはメッセージを暗号化することはできますが、復号キーを計算することはできず、そのキーで暗号化されたメッセージを復号することはできません。これら2種類のアルゴリズムの簡単な比較を以下に示します。
スピード
対称鍵アルゴリズムは一般的に非対称鍵アルゴリズムよりも計算量がはるかに少ないです。実際には、非対称鍵アルゴリズムは一般的に対称鍵アルゴリズムの数百倍から数千倍の速度で動作します。
キーマネジメント
対称鍵アルゴリズムの欠点の1つは、共有秘密鍵が必要なことであり、両当事者がそれぞれの末端で同じコピーを保持していることです。n 人のグループの全員の間で安全な通信を保証するためには、合計 n(n - 1)/2 個の鍵が必要であり、これは可能な通信チャネルの総数である。暗号攻撃者による潜在的な発見の影響を制限するために、鍵は定期的に変更され、配布中およびサービス中は安全な状態に保たれなければならない。鍵を選択し、配布し、保管するプロセスは、鍵管理として知られており、確実かつ安全に実現することは困難である。
ハイブリッド暗号システム
最近の暗号システムの設計では、非対称(公開鍵)アルゴリズムと対称アルゴリズムの両方を使用して、両方の利点を利用しています。非対称アルゴリズムは、セッションの開始時に対称鍵を配布するために使用されます。対称鍵がセッションのすべての関係者に知られると、その鍵を使用するより高速な対称鍵アルゴリズムを使用して、セッションの残りの部分を暗号化することができます。これにより、鍵の配布問題が単純化される。なぜなら、非対称鍵は真正な方法でのみ配布される必要があるのに対し、対称鍵は真正な方法と秘密の方法の両方で配布される必要があるからである。
このようなハイブリッドアプローチを採用したシステムとしては、SSL、PGP、GPGなどがあります。
関連ページ
- 非対称鍵アルゴリズム
質問と回答
Q: 対称鍵アルゴリズムとは何ですか?
A:対称鍵アルゴリズムとは、暗号技術において、復号化と暗号化のための鍵が全く同じ共有秘密である方式です。
Q:シークレットはどのように生成するのか?
A:秘密はランダムに生成するか、パスワードから生成するか、Diffie-Hellmanのような秘密鍵交換手続きによって生成することができます。
Q: なぜ共通鍵アルゴリズムが重要なのですか?
A: 共通鍵アルゴリズムは、公開鍵アルゴリズムよりもコンピュータの処理速度が速いため、非常に重要です。
Q:公開鍵暗号(非対称鍵暗号)とは何ですか?
A:公開鍵暗号(非対称鍵暗号)は、暗号化のための鍵を問題なく公開することができ、誰でも秘密のメッセージを送ることができる。暗号化のための鍵は、実際には、復号化のための鍵を得るために使用することはできないので、「オープン」である。
Q:2種類の対称型サイファーとは何ですか?
A:対称型サイファーには、ストリーム暗号とブロック暗号の2種類があります。ストリーム暗号は、メッセージをビットのストリームとして一度に暗号化し、ブロック暗号は、ビットのブロックを受け取り、一つのユニットとして暗号化し、後でその答えも使うことがあります。
Q: 最近の暗号はどのようなサイズのブロックを使っているのですか?
A: Advanced Encryption Standardのような最新の暗号は、128ビットブロックを使用しています。
Q:歴史上、対称性を利用した攻撃にはどのようなものがあるのか?
A:歴史上、対称性を悪用した暗号解読法があり、対称型システムの安全性は低くなっていました。既知平文攻撃、選択平文攻撃、差分暗号解析、線形暗号解析などがあります。
百科事典を検索する