暗号技術:誰でも盗聴できる場所で秘密の通話をする方法

インターネットは本来、誰でも盗聴・改ざんできるオープンな空間です。それでも私たちがパスワード送信・クレジットカード決済・VPN通信・電子署名を安全に使えているのは、暗号技術(Cryptography)のおかげです。

現代のセキュリティエンジニアに求められるのは、独自の暗号を発明することではありません。「用途に適した標準アルゴリズムの組み合わせを選ぶこと」と「鍵のライフサイクル管理(KMS)を正しく設計すること」です。既存の標準を適切に使い、鍵管理を怠らない——それだけで多くのインシデントは防げます。

暗号の分類(用途)現代の代表的アルゴリズムビジネス上の解決課題
対称暗号(共通鍵)AES-GCM, ChaCha20ペタバイト級のDBや大容量通信を高速に暗号化する。
非対称暗号(公開鍵)RSA, ECDSA, X25519初対面の相手と「安全に共通鍵を交換」し、デジタル署名で本人証明を行う。
ハッシュ関数SHA-256, SHA-3, Argon2idパスワードの安全な保管や、データの完全性(改ざんされていないこと)の検証。

対称暗号(共通鍵暗号)の課題と実践

高速だが「鍵の配送」がネック

対称暗号は暗号化と復号に同じ鍵を使用します。

平文 ──[共通鍵K で暗号化]──→ 暗号文 ──[共通鍵K で復号]──→ 平文

非対称暗号の数百倍以上高速に処理できるため、実際のデータの暗号化には必ず対称暗号が使われます。しかし、「この共通鍵を、どうやって遠く離れた相手に盗まれずに届けるか?」という鍵配送問題が存在します(後述の非対称暗号でこの問題を解決します)。

現代の標準:AES(Advanced Encryption Standard)

現在最も利用されているのがAESです。特に AES-256-GCM(Galois/Counter Mode)が強く推奨されます。 古い CBCモード(Cipher Block Chaining)は単なる暗号化しか行わず、改ざんを検知できないためパディングオラクル攻撃などの標的になります。一方、GCMモードは暗号化と同時に「認証タグ(MAC)」を生成する**認証付き暗号(AEAD)**であり、途中で1ビットでも改ざんされると復号時にエラーを即座に返します。

[Hands-on] OpenSSLでAES暗号化

# パスワードベースでPBKDF2を利用し、Saltを付与して暗号化

openssl enc -aes-256-cbc -salt -in plaintext.txt -out encrypted.bin -pbkdf2

# 復号

openssl enc -d -aes-256-cbc -in encrypted.bin -out decrypted.txt -pbkdf2


非対称暗号(公開鍵暗号):鍵配送問題のブレイクスルー

1970年代に発明された公開鍵暗号は、現代インターネットの奇跡と言える数学的ブレイクスルーです。 誰に知られても良い**「公開鍵」と、絶対に自分しか知らない「秘密鍵」**のペアを作成します。

送信者: (受信者の公開鍵)でメッセージを暗号化 ──→ 暗号文
受信者: (自分だけの秘密鍵)でしか復号できない   ←── 暗号文

この「逆算は事実上不可能」という一方向関数(素因数分解問題など)の性質を利用し、初めての相手とも安全に通信を開始できます。

RSAから楕円曲線暗号(ECC)への移行

古くから使われる RSA は鍵長が 2048〜4096ビットと非常に大きく、計算コストが高いのが難点です。現在では、より少ないビット数(例えば256ビット)で同等以上の強度を持つ**楕円曲線暗号(ECC)**が主流となっています。スマートフォンのセキュアエンクレーブ(FIDO2等)でもECCが標準的に採用されています。

プロの実務:前方秘匿性(Forward Secrecy)

RSAの公開鍵を「鍵交換」に用いることは現在推奨されていません。万一、将来サーバーのRSA秘密鍵が漏洩した場合、過去にさかのぼって暗号通信が全て復号されてしまう設定だからです。TLS 1.3 では、通信セッションごとに使い捨ての鍵を作る X25519(楕円曲線ディフィー・ヘルマン)による鍵交換のみが許可されています。


ハッシュ関数:改ざん検知とパスワード保護

ハッシュ関数は、任意のデータを固定長の文字列(ダイジェスト)に一方向に変換する関数です。

  1. 原像計算困難性: 出力値から入力データを逆算できない。
  2. 衝突耐性: 同じ出力値になる異なる入力データ(衝突)を見つけられない。
"CyberLens2026" → SHA-256 → 185f8db32921bd46d3...
"Cyberlens2026" (大文字小文字数ビットの違い) → 全く異なる出力値(雪崩効果)
非推奨・禁止ハッシュアルゴリズム

MD5やSHA-1は衝突耐性が弱く、現代の計算力では意図的に衝突(同じハッシュとなる別のファイルを作る攻撃)を起こすことが実証されています。これらを利用し続けるシステムは直ちに SHA-256 以上(またはSHA-3)へ移行する必要があります。


ポスト量子暗号(PQC):来るべき脅威への備え

現在のRSAやECCは「素因数分解や離散対数を多項式時間で解くのは不可能」という前提で成り立っています。しかし大規模な量子コンピュータ上でShorのアルゴリズムを実行できるようになると、現代の非対称暗号はすべて崩壊します。

攻撃者の戦略:HNDL(今収穫し、後で解読する)

「量子コンピュータの完成は数年先だから今は大丈夫」という考えは危険です。国家支援型ハッカー(APT)は現在、解読できない暗号化トラフィックを大量に保存し続けています。将来量子コンピュータが完成した瞬間に復号して国家機密や知的財産を手に入れる「HNDL(Harvest Now, Decrypt Later)」戦略です。医療データのようにデータライフサイクルが長い情報は、実質的に今すでに危険にさらされています。

NISTの標準化と「暗号アジリティ(Crypto Agility)」

2024年8月にNIST(米国国立標準技術研究所)が世界初のポスト量子暗号(PQC)標準を決定しました。

新標準 (FIPS)役割元アルゴリズム(格子暗号など)
FIPS 203 (ML-KEM)鍵交換メカニズムCRYSTALS-Kyber
FIPS 204 (ML-DSA)デジタル署名CRYSTALS-Dilithium

エンタープライズの防御アーキテクチャでは現在、特定の暗号アルゴリズム(RSA等)にソースコードが密結合している状態を解消し、NISTのPQCアルゴリズムへいつでもシームレスに切り替えられる**「暗号アジリティ(Crypto Agility: 暗号の俊敏性)」**を備えたシステムへの改修が至上命令となっています。


理解度チェック

【確認問題】高度なサイバー攻撃対策において、データベースにユーザーの「パスワード」を保存する際、セキュリティプロフェッショナルとして絶対に採用しては「ならない」手法は次のうちどれですか?