AWS CloudHSM から JCE を使用したキー抽出
Java 暗号化拡張 (JCE) は、さまざまな暗号実装をプラグインできるアーキテクチャを採用しています。AWS CloudHSM には、暗号化オペレーションを HSM にオフロードする JCE プロバイダーが 1 つ付属しています。他のほとんどの JCE プロバイダーが AWS CloudHSM に保存されているキーを操作するには、HSM のキーバイトをクリアテキストでマシンのメモリに抽出して使用する必要があります。HSM では通常、キーを ラップされたオブジェクト としてのみ抽出でき、クリアテキストとして抽出することはできません。ただし、プロバイダー間の統合ユースケースをサポートするために、AWS CloudHSMキーバイトをクリアで抽出できるようにするオプトイン設定オプションを許可しています。
重要
JCE は、AWS CloudHSM プロバイダーが指定されるか、AWS CloudHSMキーオブジェクトが使用されるたびに、オペレーションを AWS CloudHSM にオフロードします。HSM 内でオペレーションが行われることが予想される場合は、キーを明確に抽出する必要はありません。クリアテキストでのキー抽出が必要なのは、サードパーティのライブラリや JCE プロバイダーの制限により、アプリケーションがキーのラップやラップ解除などの安全なメカニズムを使用できない場合のみです。
AWS CloudHSM JCE プロバイダでは、デフォルトで外部の JCE プロバイダと連携して パブリックキー を抽出できます。以下の方法は常に許可されています。
| Class | 方法 | Format (getEncoded) |
|---|---|---|
| EcPublicKey | getEncoded () | X.509 |
| getW() | 該当なし | |
| RSAPublicKey | getEncoded () | X.509 |
| getPublicExponent() | 該当なし | |
| CloudHsmRsaPrivateCrtKey | getPublicExponent() | 該当なし |
AWS CloudHSM JCE プロバイダは、デフォルトでは プライベート または シークレット キーのキーバイトを消去して抽出するとを許可していません。ユースケースで必要な場合は、以下の条件で プライベート または シークレット キーのキーバイトを消去して抽出できます。
プライベートまたはシークレットキーの
EXTRACTABLE属性は「true」に設定されています。デフォルトでは、プライベートキーとシークレットキーの
EXTRACTABLE属性は「true」に設定されています。EXTRACTABLEキーは HSM からのエクスポートが許可されているキーです。詳細については、「クライアント SDK 5 向けサポートされている Java 属性」を参照してください。
プライベートキーとシークレットキーの
WRAP_WITH_TRUSTED属性は「false」に設定されます。getEncoded、getPrivateExponent、getSおよびクリアでエクスポートできないプライベートキーでは使用できません。WRAP_WITH_TRUSTEDは、プライベートキーを HSM からクリアにエクスポートすることはできません。詳細については、「信頼できるキーを使ったキーのアンラップの制御」を参照してください。