AWS CloudHSM における AES Key Wrap 用非準拠長 カスタム IV - AWS CloudHSM

AWS CloudHSM における AES Key Wrap 用非準拠長 カスタム IV

このトラブルシューティングトピックは、アプリケーションが回復不可能なラップされたキーを生成するかの判断に役立ちます。この問題の影響を受けている場合、このトピックを活用して問題に対処してください。

コードが回復不可能なラップされたキーを生成する可能性の判断

以下の すべて の条件に当てはまる場合、影響を受けます。

条件 確認方法

PKCS #11 ライブラリをアプリケーションで使用します

PKCS #11 ライブラリは、libpkcs11.so フォルダ内の /opt/cloudhsm/lib ファイルとしてインストールされます。C 言語で書かれたアプリケーションは、通常 PKCS #11 ライブラリを直接使用しますが、Java で書かれたアプリケーションは Java 抽象化レイヤーを介して間接的にライブラリを使用する場合があります。Windows を使用している場合、PKCS #11 ライブラリは現在 Windows では利用できないため、影響を受けません。

アプリケーションでは PKCS #11 ライブラリのバージョン 3.0.0 を特に使用します

AWS CloudHSM チームからメールが届いた場合、PKCS #11 ライブラリのバージョン 3.0.0 を使用している可能性があります。

アプリケーションインスタンスのソフトウェアバージョンを確認するには、次のコマンドを使用します。

rpm -qa | grep ^cloudhsm

AES キーラッピングを使用してキーをラップします

AES キーラップとは、AES キーを使用して他のキーをラップすることを意味します。対応するメカニズム名は CKM_AES_KEY_WRAP です。これは、関数 C_WrapKey とともに使用されます。CKM_AES_GCM CKM_CLOUDHSM_AES_GCM などの初期化ベクトル (IV) を使用する他の AES ベースのラッピングメカニズムはこの問題の影響を受けません。関数とメカニズムの詳細情報

AES キーラッピングを呼び出すときにカスタム IV を指定し、この IV の長さは 8 より短くなります。

AES キーラップは通常、CK_MECHANISM の構造を使用して以下の通り初期化されます。

CK_MECHANISM mech = {CKM_AES_KEY_WRAP, IV_POINTER, IV_LENGTH};

これは、次の場合にのみ適用されます。

  • IV_POINTER は NULL ではありません

  • IV_LENGTH が 8 バイト未満です

上記の条件をすべて満たさない場合は、今すぐ読み取りを停止することができます。ラップされたキーは適切にアンラップでき、この問題は影響しません。それ以外の場合は、「コードが回復不可能なラップされたキーを生成する場合に実行が必要なアクション」を参照してください。

コードが回復不可能なラップされたキーを生成する場合に実行が必要なアクション

次の 3 つの手順を実行する必要があります。

  1. PKCS #11 ライブラリを新しいバージョンにすぐにアップグレードします

  2. 標準に準拠した IV を使用するためソフトウェアを更新します

    サンプルコードに従い、 NULL IV のみを指定することを強くお勧めします。これにより、HSM は標準準拠のデフォルト IV を使用します。または、IV を 0xA6A6A6A6A6A6A6A6 の対応する IV 長さを持つ 8 として明示的に指定することもできます。AES キーラッピングに他の IV を使用することはお勧めしません。将来のバージョンの PKCS #11 ライブラリでは AES キーラッピングのカスタム IV を明示的に無効にします。

    IV を適切に指定するサンプルコードは、GitHub の aes_wrapping.c に表示されます。

  3. 既存のラップされたキーを特定して復元します

    PKCS #11 ライブラリのバージョン 3.0.0 を使用してラップしたキーを特定し、キーを回復する場合、サポート (https://aws.amazon.com/support) へお問い合わせください。

重要

この問題は、PKCS #11 ライブラリのバージョン 3.0.0 でラップされたキーにのみ影響します。PKCS #11 ライブラリの以前のバージョン ( 2.0.4 および番号の小さいパッケージ ) またはそれ以降のバージョン ( 3.0.1 以上の番号のパッケージ ) を使用してキーをラップできます。