PKCS #11 ライブラリの既知の問題 - AWS CloudHSM

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

PKCS #11 ライブラリの既知の問題

問題: PKCS #11 ライブラリのバージョン 3.0.0 のAESキーラップが使用IVs前に検証されない

長さが 8 バイトより短い IV を指定すると、使用前に予測不可能なバイトが埋め込まれます。

注記

これは CKM_AES_KEY_WRAP メカニズムがある C_WrapKey にのみ影響します。

  • 影響: PKCS #11 ライブラリのバージョン 3.0.0 で 8 バイト未満の IV を指定すると、キーをアンラップできない場合があります。

  • 回避方法:

    • PKCS #11 ライブラリのバージョン 3.0.1 以降にアップグレードすることを強くお勧めします。これにより、AESキーラップ中に IV の長さが適切に適用されます。IV を渡すようにラッピングコードを変更するかNULL、 のデフォルトの IV を指定します0xA6A6A6A6A6A6A6A6。詳細については、AES「キーラップ の非準拠の長さIVsのカスタム」を参照してください。

    • 8 バイト未満の IV を使用して PKCS #11 ライブラリのバージョン 3.0.0 のキーをラップした場合は、 のサポートについてお問い合わせください。

  • 解決ステータス: この問題はPKCS、#11 ライブラリのバージョン 3.0.1 で解決されています。キーラップを使用してAESキーをラップするには、 NULLまたは 8 バイト長の IV を指定します。

問題: PKCS#11 SDK 2.0.4 以前のバージョンでは、AESキーのラップとアンラップ0xA6A6A6A6A6A6A6A6に常に のデフォルト IV が使用されていました

ユーザー提供の IVsはサイレントに無視されました。

注記

これは CKM_AES_KEY_WRAP メカニズムがある C_WrapKey にのみ影響します。

  • 影響:

    • PKCS#11 2SDK.0.4 以前のバージョンとユーザー提供の IV を使用した場合、キーはデフォルトの IV である でラップされます0xA6A6A6A6A6A6A6A6

    • PKCS#11 3SDK.0.0 以降とユーザー提供の IV を使用した場合、キーはユーザー提供の IV でラップされます。

  • 回避方法:

    • PKCS#11 2.0.4 SDK 以前でラップされたキーをアンラップするには、 のデフォルト IV を使用します0xA6A6A6A6A6A6A6A6

    • PKCS#11 3.0.0 SDK 以降でラップされたキーをアンラップするには、ユーザー提供の IV を使用します。

  • 解決ステータス: NULL IV を渡すようにラップコードとアンラップコードを修正するか、デフォルトの IV を に指定することを強くお勧めします0xA6A6A6A6A6A6A6A6

問題: CKA_DERIVE 属性はサポート外だったため、処理されませんでした

  • 解決策のステータス: FALSE が設定されている場合は、CKA_DERIVE を受け付けるように修正を実装し ます。 AWS CloudHSMにキー取得関数サポートが追加されるまで、TRUE に設定された CKA_DERIVE はサポートされません。修正を利用するには、クライアントと SDK(s) をバージョン 1.1.1 以降に更新する必要があります。

問題: CKA_SENSITIVE 属性はサポート外だったため、処理されませんでした

  • 解決策のステータス: CKA_SENSITIVE 属性を受け入れ、適切に遵守するように修正を実装しました。修正を利用するには、クライアントと SDK(s) をバージョン 1.1.1 以降に更新する必要があります。

問題: マルチパートのハッシュおよび署名がサポートされていません

  • 影響: C_DigestUpdate および C_DigestFinal は実装されません。C_SignFinal も実装されていないため、NULL 以外のバッファでは CKR_ARGUMENTS_BAD でエラーが発生します。

  • 回避策: アプリケーション内でデータをハッシュし、ハッシュの署名 AWS CloudHSM にのみ使用します。

  • 解決ステータス: マルチパートハッシュを正しく実装SDKsするために、クライアントと を修正しています。更新は AWS CloudHSM フォーラムとバージョン履歴ページで告知されます。

問題: C_GenerateKeyPair は、プライベートテンプレートで標準に従った方法で は、CKA_MODULUS_BITSCKA_PUBLIC_EXPONENT を処理しません

  • 影響: プライベートテンプレートに または C_GenerateKeyPair が含まれている場合、CKA_TEMPLATE_INCONSISTENTCKA_MODULUS_BITSCKA_PUBLIC_EXPONENT を返します。代わりに、すべてのフィールドが FALSE に設定されているプライベートキーを生成します。キーは使用できません。

  • 解決策: アプリケーションによって、エラーコードに加えて使用状況フィールドの値をチェックすることをお勧めします。

  • 解決策のステータス: 修正を実装し、間違ったプライベートキーテンプレートが使用されている場合に適切なエラーメッセージを返すようにします。更新された PKCS #11 ライブラリは、バージョン履歴ページで発表されます。

問題: CKM_AES_GCMメカニズムを使用する場合、 C_Encryptおよび C_DecryptAPIオペレーションのバッファは 16 KB を超えることはできません

AWS CloudHSM はマルチパート AES-GCM 暗号化をサポートしていません。

  • 影響: CKM_AES_GCM メカニズムを使用して 16 KB を超えるデータを暗号化することができません。

  • 回避策: CKM_AES_CBCCKM_AES_CBC_PAD などの代替メカニズムを使用するか、データを複数部分に分割し、AES_GCM を使用して各部分を個別に暗号化できます。を使用している場合はAES_GCM、データの分割とその後の暗号化を管理する必要があります。 AWS CloudHSM はマルチパート AES-GCM 暗号化を実行しません。FIPS では、 の初期化ベクトル (IV) を で生成AES-GCMする必要があることに注意してくださいHSM。したがって、 AESGCMで暗号化されたデータの各部分の IV は異なります。

  • 解決ステータス: データバッファが大きすぎる場合、 が明示的に失敗SDKするように修正されています。C_EncryptUpdate および C_DecryptUpdateAPIオペレーションCKR_MECHANISM_INVALIDに対して を返します。マルチパート暗号化を使用しなくても大きいバッファをサポートできる代替方法を評価しています。更新は、 AWS CloudHSM フォーラムとバージョン履歴ページで発表されます。

問題: 楕円曲線 Diffie-Hellman (ECDH) キー取得が 内で部分的に実行される HSM

EC プライベートキーHSMは常に 内に残りますが、キー取得プロセスは複数のステップで実行されます。その結果、各ステップの中間結果がクライアントに存在します。

  • 影響: クライアント SDK3 では、 CKM_ECDH1_DERIVEメカニズムを使用して派生したキーが最初にクライアントで使用でき、次に にインポートされますHSM。その後、キーのハンドルがアプリケーションに返されます。

  • 回避策: で SSL/TLS オフロードを実装している場合 AWS CloudHSM、この制限は問題にならない可能性があります。アプリケーションが常に FIPS境界内にキーを保持する必要がある場合は、ECDHキー取得に依存しない代替プロトコルを使用することを検討してください。

  • 解決ステータス: 内でECDHキー取得を完全に実行するオプションを開発していますHSM。更新の実装は、利用可能になり次第バージョン履歴ページで告知されます。

問題: CentOS6 や 6 などのEL6プラットフォームで secp256k1 RHEL 署名の検証が失敗する

これは、CloudHSM PKCS#11 ライブラリが Open を使用して EC SSL曲線データを検証することで、検証オペレーションの初期化中にネットワーク呼び出しを回避するためです。Secp256k1 はEL6プラットフォームのデフォルトの Open SSLパッケージではサポートされていないため、初期化は失敗します。

  • 影響: EL6プラットフォームでは Secp256k1 署名の検証が失敗します。検証呼び出しは、CKR_HOST_MEMORY エラーで失敗します。

  • 回避策: PKCS#11 アプリケーションが secp256k1 署名を検証する必要がある場合は、Amazon Linux 1 または任意のEL7プラットフォームを使用することをお勧めします。または、secp256k1 曲線をサポートする OpenSSL パッケージのバージョンにアップグレードします。

  • 解決ステータス: HSMローカル曲線検証が利用できない場合に にフォールバックする修正を実装しています。更新された PKCS#11 ライブラリは、バージョン履歴ページで発表されます。

問題 : 関数呼び出しの順序が正しくないと、失敗する代わりに未定義の結果が得られる。

  • 影響 : 誤った一連の関数を呼び出すと、個々の関数呼び出しの返しが成功しても、最終的な結果は正しくありません。例えば、復号化されたデータが元のプレーンテキストと一致しない場合や、署名が検証できない場合があります。この問題は、シングルパートとマルチパートの両方のオペレーションに影響します。

    誤った関数シーケンスの例 :

    • C_EncryptInit / C_EncryptUpdate の後に C_Encrypt が続きます

    • C_DecryptInit / C_DecryptUpdate の後に C_Decrypt が続きます

    • C_SignInit / C_SignUpdate の後に C_Sign が続きます

    • C_VerifyInit / C_VerifyUpdate の後に C_Verify が続きます

    • C_FindObjectsInitC_FindObjectsInit の後に続きます

  • 回避策 : アプリケーションは、PKCS#11 仕様に準拠して、単一およびマルチパートオペレーションの両方に適切な一連の関数呼び出しを使用する必要があります。この状況では、アプリケーションは CloudHSM PKCS #11 ライブラリに依存してエラーを返さないでください。

問題: 読み取り専用セッションが 5 SDK でサポートされていない

  • 問題: SDK 5 は、 での読み取り専用セッションのオープンをサポートしていませんC_OpenSession

  • 影響: C_OpenSession 未対応で CKF_RW_SESSION を呼び出ししようとした場合、呼び出しは失敗し、エラー CKR_FUNCTION_FAILED が返されます。

  • 防止策: セッションを開く際、CKF_SERIAL_SESSION | CKF_RW_SESSION 関数呼び出しに C_OpenSession フラグを渡す必要があります。

問題: cryptoki.hヘッダーファイルは Windows 専用です

  • 問題: Linux SDKの AWS CloudHSM クライアント 5 バージョン 5.0.0 から 5.4.0 では、 ヘッダーファイルは Windows オペレーティングシステムとのみ互換性/opt/cloudhsm/include/pkcs11/cryptoki.hがあります。

  • 影響: Linux ベースのオペレーティングシステム上のアプリケーションにこのヘッダーファイルを含めようとすると、問題が発生する可能性があります。

  • 解決ステータス: このヘッダーファイルの Linux SDK 互換バージョンを含む AWS CloudHSM クライアント 5 バージョン 5.4.1 以降にアップグレードします。