wolfSSL の Java プロバイダに耐量子暗号(PQC)のサポートを追加しました。組み込み向け SSL/TLS ライブラリ wolfSSL の上に構築した JSSE プロバイダ wolfJSSE と、暗号エンジン wolfCrypt の上に構築した JCE プロバイダ wolfJCE で、NIST(米国国立標準技術研究所)が標準化した耐量子暗号アルゴリズムと、ステートフルなハッシュベース署名方式をご利用いただけるようになりました。
- ML-KEM(FIPS 203)鍵カプセル化。パラメータセットは ML-KEM-512、ML-KEM-768、ML-KEM-1024
- ML-DSA(FIPS 204)署名。パラメータセットは ML-DSA-44、ML-DSA-65、ML-DSA-87
- SLH-DSA(FIPS 205)署名。SHA-2 と SHAKE の全 12 パラメータセットに対応
- LMS/HSS 署名検証(RFC 8554)。SHA-256/256、SHA-256/192、SHAKE256/256、SHAKE256/192 の 4 つのハッシュファミリすべてに対応
- XMSS/XMSS^MT 署名検証(RFC 8391)
wolfJCE では、これらの新しいアルゴリズムを標準の KeyPairGenerator、KeyFactory、Signature の各サービスからご利用いただけます。さらに ML-KEM については、JDK 21 以降で KEM API からも利用できます。LMS と XMSS は検証のみの対応です。これは、ステートフルな方式の署名鍵はハードウェア内に保持するという NIST SP 800-208 のガイダンスに従ったものです。
TLS 側では、wolfJSSE が TLS 1.3 で ML-KEM 鍵交換をネゴシエーションできるようにしました。対応するハイブリッドグループは X25519MLKEM768、SECP256R1MLKEM768、SECP384R1MLKEM1024 です。さらに、ネイティブの wolfSSL を --enable-tls-mlkem-standalone 付きでコンパイルした場合は、単独グループの ML-KEM-512、ML-KEM-768、ML-KEM-1024 にも対応します。また wolfJSSE は ML-DSA 証明書による通信相手の認証にも対応しました。グループの設定には SSLParameters.setNamedGroups() または jdk.tls.namedGroups プロパティをご利用ください。
新しいアルゴリズムをご利用いただくには、ネイティブの wolfSSL を対応するオプション(--enable-mlkem、--enable-mldsa、--enable-slhdsa、--enable-lms、--enable-xmss)付きでコンパイルしてください。SLH-DSA には wolfSSL 5.9.2 以降が必要です。いずれのプロジェクトも下記の GitHub からクローンしていただけます。
- wolfSSL JNI/JSSE:https://github.com/wolfSSL/wolfssljni
- wolfCrypt JNI/JCE:https://github.com/wolfSSL/wolfcrypt-jni
ぜひ新しいアルゴリズムをお試しいただき、Java アプリケーションで耐量子暗号をどのようにご活用いただいているかをお聞かせください。Java での耐量子暗号のサンプルや使い方については、今後のブログでも取り上げる予定です。
もし弊社製品についてご質問があれば、お問い合わせ窓口info@wolfssl.jpまでご連絡をお願い致します。
原文:https://www.wolfssl.com/wolfjsse-and-wolfjce-now-support-post-quantum-cryptography/
