概要

暗号化アルゴリズム

暗号化アルゴリズムは、データの機密性と完全性を保護するために使用される数学的な手法です。共通鍵暗号方式(対称鍵暗号)、公開鍵暗号方式(非対称鍵暗号)、ハッシュ関数の3つの主要カテゴリに分類されます。AES、RSA、ECC、SHA-256などが代表的なアルゴリズムであり、TLS/SSL通信、電子署名、パスワード保護、ブロックチェーンなど様々な分野で広く利用されています。NISTなどの標準化機関によって推奨されるアルゴリズムは、安全性と性能が検証されています。

暗号化 セキュリティ 暗号技術 AES RSA ECC SHA-256 ハッシュ関数 NIST
コード スラッグ 名称 概要 カテゴリ keyLength nistStatus
SYM-01 aes AES 現行標準の共通鍵暗号方式。高速かつ高い安全性を持つ。 共通鍵暗号(対称鍵暗号) 128/192/256 bit FIPS 197 approved
SYM-02 chacha20 ChaCha20 Google開発のストリーム暗号。高速処理を実現する次世代暗号。 共通鍵暗号(対称鍵・ストリーム暗号) 256 bit RFC 8439
SYM-03 3des Triple DES (3DES) DESを3回適用した暗号方式。段階的に廃止が進められている。 共通鍵暗号(対称鍵暗号) 168 bit (112 bit effective) Deprecated (phase-out by 2030)
SYM-04 des DES 1970年代の古い暗号標準。現在は使用禁止。 共通鍵暗号(対称鍵暗号) 56 bit Withdrawn (insecure)
ASYM-01 rsa RSA 最も広く使用される公開鍵暗号方式。電子署名と暗号化に対応。 公開鍵暗号(非対称鍵暗号) 2048/4096 bit FIPS 186 approved
ASYM-02 ecc ECC(楕円曲線暗号) 短い鍵長で高い安全性を実現する公開鍵暗号。新規システムに推奨。 公開鍵暗号(非対称鍵暗号) 224/256/384 bit FIPS 186 approved
ASYM-03 dsa DSA NISTが標準化したデジタル署名専用のアルゴリズム。 公開鍵暗号(デジタル署名) 1024/2048/3072 bit FIPS 186 approved (legacy)
HASH-01 sha-256 SHA-256 広く使用される安全なハッシュ関数。256ビットのハッシュ値を出力。 ハッシュ関数 256 bit output FIPS 180-4 approved
HASH-02 sha-3 SHA-3 最新のSHAシリーズ。SHA-2とは異なる構造を持つ。 ハッシュ関数 224/256/384/512 bit output FIPS 202 approved
HASH-03 sha-1 SHA-1 2017年に衝突攻撃が成功した脆弱なハッシュ関数。使用禁止。 ハッシュ関数 160 bit output Deprecated (insecure)
HASH-04 md5 MD5 高速だが衝突脆弱性がある古いハッシュ関数。ファイルチェックのみに使用。 ハッシュ関数 128 bit output Deprecated (insecure)
KEX-01 diffie-hellman Diffie-Hellman 安全な鍵交換を可能にするプロトコル。公開鍵暗号の基礎。 鍵交換プロトコル 2048 bit or higher SP 800-56A approved
KDF-01 pbkdf2 PBKDF2 パスワードから安全に鍵を導出する関数。 鍵導出関数 Variable RFC 2898 / SP 800-132
KDF-02 argon2 Argon2 パスワードハッシュ化の最新標準。GPU攻撃に強い。 パスワードハッシュ Variable Recommended (PHC winner)
PQC-01 ml-kem ML-KEM(CRYSTALS-Kyber) NISTが標準化した耐量子暗号。鍵カプセル化メカニズム。 耐量子暗号(PQC) 768/1024/1536 byte FIPS 203 (2024)
PQC-02 ml-dsa ML-DSA(CRYSTALS-Dilithium) NISTが標準化した耐量子デジタル署名アルゴリズム。 耐量子暗号(PQC) 1312/1952/2592 byte signature FIPS 204 (2024)

暗号化アルゴリズムは、現代のデジタル社会においてデータの機密性と完全性を守るための基盤技術です。共通鍵暗号、公開鍵暗号、ハッシュ関数の3つの主要カテゴリに分類され、それぞれ異なる特性と用途を持っています。本記事では、NISTなどの標準化機関が推奨する主要な暗号化アルゴリズムについて解説します。

共通鍵暗号方式(対称鍵暗号)

共通鍵暗号方式は、暗号化と復号化に同じ鍵を使用する方式です。処理速度が高速であるため、大量のデータ暗号化に適しています。現在最も広く使用されているのはAES(Advanced Encryption Standard)で、2001年にNISTによって標準化されました。128ビットブロックに対して128/192/256ビットの鍵長をサポートし、TLS/SSL通信、VPN、Wi-Fi、ディスク暗号化など幅広い用途で利用されています。特にAES-256-GCMは、認証付き暗号として高い安全性を提供します。

一方、ChaCha20はGoogleが広めたストリーム暗号で、モバイルデバイスやARMプロセッサなどAES実装が遅い環境で優位性を発揮します。TLS 1.3ではChaCha20-Poly1305として標準化されています。古いアルゴリズムとしてはDESや3DESがありますが、いずれも安全性の問題から段階的に廃止が進められており、新規システムでは使用しないことが推奨されています。

公開鍵暗号方式(非対称鍵暗号)

公開鍵暗号方式は、数学的に関連する公開鍵と秘密鍵のペアを使用します。公開鍵は誰でも知ることができ、秘密鍵は所有者のみが保持します。最も有名なのはRSAで、素因数分解の困難性を安全性の基盤としています。2048ビット以上の鍵長が推奨され、電子署名や鍵交換に広く使用されています。ただし、処理速度が対称鍵暗号より遅いため、通常はセッション鍵の暗号化などに限定して使用されます。

ECC(楕円曲線暗号)は、RSAと同等の安全性を短い鍵長で実現できるため、新規システムでの採用が推奨されています。224ビットのECCは2048ビットのRSAと同等の安全性を持ち、処理速度と通信効率に優れています。モバイルデバイスやIoT機器などリソース制約のある環境に特に適しています。

ハッシュ関数

ハッシュ関数は、任意長の入力から固定長のハッシュ値を生成する一方向性の関数です。SHA-256は現在の標準的なハッシュ関数で、256ビットの出力を持ち、デジタル署名、証明書、ブロックチェーンなどに広く使用されています。SHA-3は2015年に標準化された最新のハッシュ関数ファミリーで、SHA-2とは異なる構造を持ち、代替手段として位置づけられています。

一方、MD5やSHA-1は衝突攻撃が可能となっており、セキュリティ上の理由から使用が推奨されません。MD5はファイルの整合性チェックなど、セキュリティを要求しない用途でのみ使用可能です。SHA-1は2017年にGoogleが実用的な衝突攻撃を実演し、TLS証明書やデジタル署名での使用が段階的に廃止されています。

耐量子暗号(Post-Quantum Cryptography)

量子コンピュータの発展に伴い、従来の公開鍵暗号(RSA、ECCなど)は量子アルゴリズムによって破解される可能性があります。これに対応するため、NISTは2024年8月に最初の耐量子暗号標準を発表しました。ML-KEM(鍵カプセル化メカニズム)とML-DSA(デジタル署名アルゴリズム)は、格子暗号の困難性を基にしており、量子コンピュータによる攻撃に耐性を持ちます。重要インフラや長期間の機密性が必要なデータを扱うシステムでは、早急な移行計画の検討が推奨されています。

アルゴリズム選定のポイント

暗号化アルゴリズムを選定する際は、以下の点を考慮することが重要です。データ暗号化にはAES-256-GCMまたはChaCha20-Poly1305を、鍵交換や電子署名にはECC P-384またはRSA-4096を推奨します。パスワードの保存にはArgon2やPBKDF2などの専用ハッシュ関数を使用し、単純なハッシュ関数(SHA-256など)を直接使用することは避けるべきです。また、NISTやIETFなどの標準化機関の最新の推奨事項を確認し、脆弱とされたアルゴリズム(DES、3DES、RC4、MD5、SHA-1など)は使用しないことが重要です。