鍵をインポート用にフォーマットする

このトピックでは、Cloud KMS で新しい鍵バージョンとしてインポートできるように鍵をフォーマットする方法について説明します。

鍵マテリアルの正しい形式は、鍵マテリアルを対称鍵にインポートするのか、非対称鍵にインポートするかによって異なります。対称鍵と非対称鍵の違いについては、鍵の目的とアルゴリズムをご覧ください。

サポートされている鍵の形式

  • 暗号化の対称鍵は 16 バイト(未加工の対称暗号化の場合のみ)または 32 バイトのバイナリデータである必要があり、エンコードはできません。鍵が 16 進数または Base-64 でエンコードされている場合、インポートを試みる前にデコードする必要があります。

  • 署名用の対称鍵(MAC 鍵)は、使用する暗号ハッシュ関数の出力の長さと等しくする必要があり(HMAC-SHA256 鍵の長さは 32 バイトでなければなりません)、エンコードする必要はありません。鍵が 16 進数または Base-64 でエンコードされている場合、インポートを試みる前にデコードする必要があります。

  • 暗号化または署名用の非対称鍵は、PKCS #8 形式であり、DER エンコードされている必要があります。PCKS #8 形式は、RFC 5208 で定義されています。DER エンコードは、国際電気通信連合 X.680で定義されています。非対称鍵では、Cloud KMS でサポートされている長さとアルゴリズムの組み合わせのいずれかを使用する必要があります。

鍵の長さなど、鍵の一部の要素は鍵の作成後に変更できません。この場合、鍵を Cloud KMS にインポートすることはできません。

対称鍵のチェック

wc コマンドを使用して、対称鍵の長さを確認します。

wc -c /path/to/unwrapped-key
  • 32 以外の長さの対称鍵をインポートすることはできません。

  • 対称署名鍵(MAC 鍵)の長さは、使用する暗号ハッシュ関数の出力の長さと等しくする必要があります(たとえば、HMAC-SHA256 鍵の長さは 32 バイト)。

file コマンドを使用して鍵の形式を確認します。

file /path/to/unwrapped-key
  • 出力が data の場合は、鍵は正しい形式でインポートされます。

  • 出力が ASCII text の場合は、cat コマンドを使用してファイルの内容を表示します。

    • 末尾が = 符号の文字と数字の文字列の場合は、Base64 でエンコードされている可能性があります。base64 コマンド(Windows では Base64.exe)を使用してデコードします。Base64 でエンコードされた鍵の例を次に示します。

      THzArjassB+giKeNeT1Zr74OgV24t+Ep+37Ec6ojB3Y=
      
    • 1 行または複数行の 16 進数が含まれる場合、16 進数でエンコードされている可能性があります。xxd コマンド(Windows では PowerShell コマンドの Format-Hex)を使用してデコードします。16 進エンコードされた鍵の例を次に示します。

      00000000: 4c7c c0ae 36ac b01f a088 a78d 793d 59af  L|..6.......y=Y.
      00000010: be0e 815d b8b7 e129 fb7e c473 aa23 0776  ...]...).~.s.#.v
      
    • 他のテキストが含まれている場合、有効な対称鍵ではない可能性があります。

非対称鍵の書式設定

サポートされているアルゴリズムのいずれかを使用した非対称鍵をインポートできます。現実的には、非対称鍵の作成に使用されるアルゴリズムを過去にさかのぼって判別することは困難です。そのため、非対称鍵を Cloud KMS にインポートする前に、次のコマンドを実行することをおすすめします。

  1. file コマンドを使用して鍵の形式を確認します。

    file /path/to/unwrapped-key
    
    • 出力が PEM の場合は、鍵は PEM 形式です。出力が ASCII text の場合は、鍵はおそらく PEM 形式です。いずれの場合も、次のコマンドを実行して鍵を PCKS #8 DER 形式に変換します。

      openssl pkcs8 -topk8 -nocrypt -inform PEM -outform DER \
          -in /path/to/asymmetric-key-pem \
          -out /path/to/formatted-key
      
    • 出力が data の場合は、鍵は DER 形式である可能性がありますが、PKCS #8 形式ではない可能性があります。次のコマンドを実行して、鍵が正しい形式であることを確認します。鍵がすでに正しい形式になっている場合、コマンドによる影響はありません。その場合は、diff コマンドを使用して、入力ファイルと出力ファイルが同一であることを確認できます。

      openssl pkcs8 -topk8 -nocrypt -inform DER -outform DER \
          -in /path/to/asymmetric-key-der \
          -out /path/to/formatted-key
      

トラブルシューティング

上記のコマンドを実行し、鍵が適切な形式であるにもかかわらず、インポートが失敗する場合は、Google Cloud コンソールでエラーを確認して、失敗したインポートのトラブルシューティングをご覧ください。

次のステップ