現代の暗号技術
暗号技術とは?
暗号技術とは、情報を解読する鍵を持たない者にとって判読不能な形式に 変換することで情報を保護する科学です。これは情報セキュリティにおいて 最も基本的なツールの一つであり、データの機密性、 完全性、真正性を保証します。
暗号技術の種類
1. 対称暗号
情報の暗号化と復号に同じ鍵を使用します。大量のデータに対して 高速かつ効率的です。
- AES (Advanced Encryption Standard):現在の標準で、128、192、または 256 ビットで使用されます
- ChaCha20:AES の現代的な代替手段で、モバイルデバイス向けに最適化されています
- 3DES:レガシーで、廃止プロセス中です
- Blowfish:AES の前身で、特定のアプリケーションで依然として使用されています
2. 非対称暗号
鍵ペアを使用します:暗号化用の公開鍵と復号用の秘密鍵です。 デジタル署名と安全な鍵交換にとって基本的なものです。
- RSA:広く使用されており、素因数分解に基づくセキュリティを持ちます
- ECC (Elliptic Curve Cryptography):より小さい鍵で RSA より効率的です
- DSA:デジタル署名のための Digital Signature Algorithm
- Ed25519:楕円曲線の現代的な実装
3. ハッシュ関数
任意のサイズのデータを固定サイズの出力に変換します。 完全性とパスワードの安全な保存に使用されます。
- SHA-256/SHA-512:SHA-2 ファミリー、現在の標準
- SHA-3:最新の標準、SHA-2 の代替手段
- BLAKE2/BLAKE3:SHA より高速で、採用が拡大しています
- bcrypt/Argon2:パスワードのハッシュ化に特化しています
公開鍵基盤 (PKI)
PKI はデジタル証明書と公開鍵暗号を管理するフレームワークであり、 安全な認証と暗号化された通信に不可欠です。
PKI のコンポーネント
- 認証局 (CA):デジタル証明書を発行および失効させます
- 登録局 (RA):発行前に身元を検証します
- デジタル証明書:X.509 は公開鍵を身元に結び付けます
- CRL/OCSP:失効リストと証明書のステータス
TLS/SSL
Transport Layer Security (TLS) とその前身である SSL は、 インターネット上の安全な通信を保証する暗号プロトコルです。
TLS のベストプラクティス
- TLS 1.2 または TLS 1.3 のみを使用する
- 脆弱な cipher suites を無効にする(RC4、DES、3DES)
- Perfect Forward Secrecy (PFS) を実装する
- 2048 ビット以上の証明書を使用する
- HSTS (HTTP Strict Transport Security) を有効にする
- 重要なアプリケーションで Certificate Pinning を実装する
鍵管理
暗号システムのセキュリティは、暗号鍵の適切な 管理に決定的に依存します。
鍵のライフサイクル
- 生成:暗号学的に安全な生成器 (CSPRNG) を使用する
- 保存:重要な鍵には HSM、アプリケーションには vault を使用する
- 配布:安全なチャネル、鍵交換プロトコル
- ローテーション:定められた周期、自動化を推奨
- 失効:侵害時の明確な手順
- 破棄:ライフサイクル終了時の安全な廃棄
Hardware Security Modules (HSM)
HSM は、FIPS 140-2/3 認証を取得した暗号鍵を 生成、保存、保護する物理デバイスです。
- 鍵の抽出に対する保護
- ハードウェアによって高速化された暗号演算
- 規制遵守(PCI-DSS、LGPD)
- クラウド環境向けの Cloud HSM
さまざまなコンテキストにおける暗号技術
保存データ
- BitLocker、LUKS による Full Disk Encryption (FDE)
- Database encryption (TDE - Transparent Data Encryption)
- 機密データ向けの File-level encryption
- 必須の Backup encryption
転送中のデータ
- Web 通信向けの TLS/SSL
- サイト間 VPN 向けの IPSec
- リモート管理向けの SSH
- 電子メール (SMTP、IMAP) 向けの STARTTLS
使用中のデータ
- Homomorphic Encryption(まだ実験段階)
- Secure Enclaves (Intel SGX、AMD SEV)
- Confidential Computing
耐量子暗号
量子コンピュータは RSA や ECC などの現在のアルゴリズムを脅かします。NIST は 量子攻撃に耐性のあるアルゴリズムを標準化しています:
- CRYSTALS-Kyber:鍵カプセル化
- CRYSTALS-Dilithium:デジタル署名
- SPHINCS+:ハッシュベースの署名
- FALCON:コンパクトな署名
コンプライアンスと規制
- LGPD/GDPR:個人データに対して暗号化を推奨
- PCI-DSS:カードデータに対して暗号化が必須
- HIPAA:医療記録に対する暗号化
- FIPS 140-2/3:暗号モジュールの標準
一般的な脆弱性と攻撃
- Man-in-the-Middle:保護されていない鍵の傍受
- Padding Oracle:padding エラーの悪用
- Timing Attacks:演算時間の分析
- Side-Channel Attacks:消費電力/電磁波を介した抽出
- Rainbow Tables:脆弱なハッシュの事前計算
ベストプラクティス
- 独自の暗号技術を決して実装せず、検証済みのライブラリを使用する
- 暗号ライブラリを最新の状態に保つ
- パスワードのハッシュ化にランダムな salt を使用する
- key stretching を実装する(PBKDF2、bcrypt、Argon2)
- 暗号学的に安全な乱数を使用する
- 暗号設計の決定を文書化する
- 暗号実装の監査を実施する
- アルゴリズム移行のための crypto-agility を計画する
ツールとライブラリ
- OpenSSL:完全な暗号ツールキット
- libsodium:現代的で使いやすいライブラリ
- Bouncy Castle:Java および C# での実装
- Cryptography.io:Python ライブラリ
- AWS KMS/Azure Key Vault:クラウドでの鍵管理
- HashiCorp Vault:シークレットと鍵の管理
暗号技術は、あらゆる状態のデータを保護するために基本的なものです。堅牢な 戦略は、適切なアルゴリズム、厳格な鍵管理、正しい 実装、標準への準拠を組み合わせます。量子コンピューティングの脅威に直面し、組織は 現在のベストプラクティスを維持しながら、耐量子暗号への移行を 計画し始める必要があります。
