Overview
データ暗号化(Data Encryption)とは、平文(読み取り可能なデータ)を暗号化アルゴリズムと暗号鍵を使用して暗号文(読み取り不可能なデータ)に変換する技術です。正しい復号鍵を持つ者のみが暗号文を元の平文に戻すことができ、データの機密性を保護します。暗号化はデータセキュリティの最も基本的かつ重要な防御手段であり、あらゆる情報保護の基盤です。
データ暗号化は、データの状態に応じて3つのカテゴリに分類されます。保存時の暗号化(Encryption at Rest)はディスクやデータベースに格納されたデータを保護し、転送時の暗号化(Encryption in Transit)はネットワーク上を流れるデータを保護します。そして近年注目されている使用時の暗号化(Encryption in Use)は、メモリ上で処理中のデータを保護する機密計算(Confidential Computing)技術です。
GDPR、PCI DSS、HIPAA、日本の個人情報保護法など主要な規制・基準では、機密データの暗号化が明示的または実質的に要求されています。暗号化を適切に実装することで、データ侵害が発生した場合でも、暗号化されたデータは攻撃者にとって無価値となり、被害を最小限に抑えることができます。GDPRでは暗号化されたデータの漏洩は通知義務の免除要件にもなり得ます。
Details
保存時の暗号化(Encryption at Rest)
保存時の暗号化は、ハードディスク、SSD、データベース、バックアップメディアなどに格納されたデータを保護します。代表的な実装方式として、ディスク全体を暗号化するフルディスク暗号化(FDE)、ファイル単位で暗号化するファイルレベル暗号化、データベースのカラムやテーブル単位で暗号化するデータベース暗号化(TDE:Transparent Data Encryption)があります。
暗号化アルゴリズムとしては、AES(Advanced Encryption Standard)の256ビット鍵が事実上の標準であり、NIST(米国標準技術研究所)により承認された暗号方式です。クラウド環境では、AWS KMS、Azure Key Vault、Google Cloud KMSなどのマネージド鍵管理サービスと連携した暗号化が広く利用されています。
転送時の暗号化(Encryption in Transit)
転送時の暗号化は、ネットワーク上でデータが送受信される際に盗聴や改ざんからデータを保護します。最も広く使用されるプロトコルはTLS(Transport Layer Security)であり、WebブラウザとサーバーのHTTPS通信、メール転送(SMTPS/IMAPS)、VPN接続など、さまざまな通信に使用されています。
TLS 1.3では、より強力な暗号スイートの強制、0-RTTハンドシェイクによる高速化、前方秘匿性(Forward Secrecy)の必須化など、セキュリティとパフォーマンスの両方が大幅に改善されました。内部ネットワーク通信においても、mTLS(相互TLS認証)を採用し、サーバーとクライアント双方の認証を行うことが推奨されます。
使用時の暗号化(Encryption in Use)
使用時の暗号化は、データがメモリ上で処理される際に保護する技術であり、機密計算(Confidential Computing)とも呼ばれます。従来の暗号化はデータの保存時と転送時のみを保護し、処理時には復号された平文がメモリ上に存在するため、メモリダンプ攻撃やサイドチャネル攻撃に対して脆弱でした。
Intel SGX(Software Guard Extensions)、AMD SEV(Secure Encrypted Virtualization)、ARM TrustZoneなどのハードウェアベースのTEE(Trusted Execution Environment:信頼実行環境)技術により、暗号化されたメモリ領域(エンクレーブ)内でデータを処理できるようになりました。クラウドプロバイダーも、AWS Nitro Enclaves、Azure Confidential Computing、Google Confidential VMなどのサービスを提供しています。
暗号鍵管理(Key Management)
暗号化の安全性は暗号鍵の管理に大きく依存します。暗号鍵管理には、鍵の生成、配布、保存、ローテーション、失効、廃棄のライフサイクル全体が含まれます。鍵の生成には暗号学的に安全な乱数生成器(CSPRNG)を使用し、十分なエントロピーを確保する必要があります。
HSM(Hardware Security Module)は、暗号鍵を物理的に保護された専用ハードウェア内で管理する装置であり、鍵が外部に漏洩するリスクを最小化します。エンベロープ暗号化(鍵を別の鍵で暗号化する階層的鍵管理)を採用することで、大量のデータ暗号鍵を効率的かつ安全に管理できます。
暗号アルゴリズムの種類と選択
- 共通鍵暗号(対称暗号):AES-256、ChaCha20-Poly1305。暗号化と復号に同一の鍵を使用。高速で大量データの暗号化に適する
- 公開鍵暗号(非対称暗号):RSA-2048/4096、ECDSA。暗号化と復号に異なる鍵ペアを使用。鍵交換やデジタル署名に使用
- ハッシュ関数:SHA-256、SHA-3、BLAKE3。一方向関数でデータの完全性検証やパスワード保管に使用
- ポスト量子暗号:CRYSTALS-Kyber、CRYSTALS-Dilithium。量子コンピュータによる解読に耐性を持つ次世代暗号
ポスト量子暗号への移行
量子コンピュータの発展により、RSAやECCなどの現行の公開鍵暗号が将来的に解読されるリスク(「Harvest Now, Decrypt Later」攻撃)が指摘されています。NISTは2024年にポスト量子暗号標準(PQC)としてCRYSTALS-KyberやCRYSTALS-Dilithiumなどのアルゴリズムを標準化しました。
組織は暗号化アルゴリズムの暗号アジリティ(Crypto Agility)を確保し、新しいアルゴリズムへの移行をスムーズに行える体制を整えることが重要です。現在使用している暗号アルゴリズムのインベントリを作成し、ポスト量子暗号への移行計画を策定することが推奨されます。
Security Measures
- 01強力な暗号アルゴリズムと十分な鍵長の使用:NIST承認の暗号アルゴリズム(AES-256、RSA-2048以上、ECDSA P-256以上)を使用し、十分な鍵長を確保してください。脆弱な暗号(DES、3DES、RC4、MD5、SHA-1)や独自の暗号アルゴリズムは絶対に使用しないでください。
- 02暗号鍵の厳格なライフサイクル管理:暗号鍵の生成、保管、使用、ローテーション、失効、廃棄のすべての段階で適切な管理を行ってください。鍵のローテーション周期(推奨:1年以内)を定め、HSMまたはマネージドKMSを使用して鍵を保護しましょう。鍵と暗号化データを同じ場所に保管しないでください。
- 03保存・転送・使用のすべての段階での暗号化:データの保存時(AES-256によるディスク/DB暗号化)、転送時(TLS 1.2以上、推奨TLS 1.3)、使用時(TEEの活用)のすべての段階で暗号化を実装してください。特に機密データについては、エンドツーエンドの暗号化を検討しましょう。
- 04暗号化の実装における正しいプラクティス:暗号化の実装では、十分な長さの初期化ベクトル(IV)をランダムに生成し、再利用しないでください。認証付き暗号化モード(AES-GCM、ChaCha20-Poly1305)を使用し、暗号文の改ざんを検出できるようにしましょう。ECBモードは使用しないでください。
- 05暗号アジリティの確保:暗号アルゴリズムの変更に柔軟に対応できるアーキテクチャを構築してください。暗号化コンポーネントを抽象化し、設定変更のみでアルゴリズムを切り替えられるようにしましょう。ポスト量子暗号への移行に備え、現在のアルゴリズム使用状況のインベントリを作成しましょう。
- 06暗号化設定の定期的な監査と脆弱性評価:TLS設定、暗号スイート、証明書の有効期限、鍵の強度などを定期的に監査してください。SSL Labsなどのツールを活用してTLS設定を評価し、暗号化に関する脆弱性情報を継続的に監視して、必要に応じてアルゴリズムや設定を更新しましょう。
Incidents
📋 Adobe Systems 暗号化不備による大規模情報漏洩(2013年)
2013年、Adobe Systemsから約1億5,300万件のユーザーアカウント情報が漏洩しました。パスワードはECBモードの3DESで暗号化されていましたが、ECBモードでは同一の平文が同一の暗号文になるため、パスワードの推測が容易でした。さらに、パスワードヒントが平文で保存されていたため、暗号化されたパスワードの解読がさらに容易になりました。
この事件は、暗号化アルゴリズムの選択と暗号化モードの重要性を示す教科書的な事例です。パスワードの保管には暗号化ではなく、bcryptやArgon2などの適切なハッシュ関数を使用すべきであることが改めて認識されました。
📋 Equifax データ侵害と暗号化の不備(2017年)
2017年、米国の大手信用情報機関Equifaxで約1億4,700万人の個人情報(社会保障番号、生年月日、住所、一部のクレジットカード番号)が流出しました。Apache Strutsの既知の脆弱性が攻撃の入口となりましたが、流出したデータの多くが暗号化されていなかったことが被害を拡大させました。
特に社会保障番号などの高度に機密性の高いデータが平文で保存されていたことは、データ暗号化ポリシーの不備を如実に示しています。この事件を受けて、信用情報業界全体でデータの保存時暗号化が強化され、規制当局による暗号化要件の厳格化が進みました。
📋 SolarWinds サプライチェーン攻撃と転送時暗号化の限界(2020年)
2020年に発覚したSolarWindsサプライチェーン攻撃では、正規のソフトウェアアップデートにバックドア(SUNBURST)が埋め込まれ、約18,000の組織に配布されました。攻撃者はTLS暗号化された正規の通信チャネルを利用してC2(コマンド&コントロール)通信を行い、ネットワーク監視をすり抜けました。
この事件は、転送時の暗号化だけではセキュリティが十分でないことを示しています。暗号化は正当な通信だけでなく悪意のある通信も保護するため、TLSインスペクション、エンドポイント検知、ゼロトラストアーキテクチャなど、暗号化を補完する多層的なセキュリティ対策が不可欠です。