6 暗号コマンド

暗号コマンドを使用すると、Oracle Key Vault管理対象セキュリティ・オブジェクトを使用して、提供されたデータを暗号化および復号化できます。

6.1 okv crypto data decryptコマンド

okv crypto data decryptコマンドは、Oracle Key Vaultサーバー内のOracle Key Vault管理対象セキュリティ・オブジェクトを使用して、指定された暗号文データに対して復号化操作を実行し、復号化されたデータを返します。

必要な権限

エンドポイントには、復号化に使用されるキーに対する読取り権限が必要です。

構文

okv crypto data decrypt --uuid UUID --data file_path 
--block-cipher-mode block_cipher_mode --padding padding --iv file_path 
--authenticated-encryption-additional-data file_path 
--authenticated-encryption-tag file_path --data-format data_format 
--decrypted-data output_file_path 

JSON入力ファイル・テンプレート

{
  "service": {
    "category": "crypto",
    "resource": "data",
    "action": "decrypt",
    "options": {
      "uuid": "#VALUE",
      "data" : "#VALUE",
      "blockCipherMode" : "#CBC|ECB|CFB|OFB|GCM",
      "padding" : "#NONE|ZEROS|PKCS5",
      "iv" : "#VALUE",
      "authenticatedEncryptionAdditionalData" : "#VALUE",
      "authenticatedEncryptionTag" : "#VALUE"
      "dataFormat": "#HEX|BASE64",
      "decryptedData": "#VALUE"
    }
  }
}

パラメータ

パラメータ/テンプレート・パラメータ 必須かどうか 説明

--uuid / uuid

必須

復号化に使用するキーのUUID (Universally Unique ID)。

オブジェクトの一意識別子を調べるには、Oracle Key Vault管理コンソールで、「Keys & Wallets」タブをクリックして、左側のナビゲーション・ウィンドウで「Keys & Secrets」をクリックします。「Keys & Secrets」表で、「Unique Identifier」列を確認します。

--data / data

必須

復号化する必要がある暗号文データへのファイル・パス

--block-cipher-mode / blockCipherMode

オプション

ブロック暗号モード。値は次のとおりです。

  • CBC (暗号ブロック・チェーンの場合)
  • CFB (暗号フィードバックの場合)
  • ECB (電子コードブックの場合)
  • GCM (ガロア/カウンタの場合)
  • OFB (出力フィードバックの場合)

この設定を省略すると、Oracle Key Vaultではキーに関連付けられた暗号化パラメータを使用します。

--padding / padding

オプション

パディング。値は次のとおりです。

  • NONE
  • ZEROS
  • PKCS5

この設定を省略すると、Oracle Key Vaultではキーに関連付けられた暗号化パラメータを使用します。

--iv / iv

オプション

復号化操作に使用する初期化ベクトル(IV)のファイル・パス。暗号化中に使用されたものと同じ初期化ベクトルを使用する必要があります。

--authenticated-encryption-additional-data / authenticatedEncryptionAdditionalData

オプション

復号化操作に使用する認証済暗号化追加データのファイル・パス。暗号化中に使用されたものと同じ認証済暗号化追加データを指定する必要があります。

--authenticated-encryption-tag / authenticatedEncryptionTag

オプション

復号化操作に使用する認証済暗号化タグのファイル・パス。暗号化中に生成されたものと同じ認証済暗号化タグを指定する必要があります。

--data-format / dataFormat

オプション

データ形式。入力および出力ファイルのデータの形式。指定しない場合、データはバイナリ・データとして読み取られ、書き込まれます。値は次のとおりです。

  • HEX
  • BASE64

--decrypted-data / decryptedData

必須

復号化されたデータが書き込まれるファイル・パス。指定された出力ファイルが存在しない場合は、エラーになります。ファイルが存在する場合は、復号化されたデータで上書きされます。

JSONの例

  1. okv crypto data decryptコマンドのJSON入力を生成します。
    okv crypto data decrypt --generate-json-input

    次のような入力が生成されます。

    {
      "service": {
        "category": "crypto",
        "resource": "data",
        "action": "decrypt",
        "options": {
          "uuid": "#VALUE",
          "data" : "#VALUE",
          "blockCipherMode" : "#CBC|ECB|CFB|OFB|GCM",
          "padding" : "#NONE|ZEROS|PKCS5",
          "iv" : "#VALUE",
          "authenticatedEncryptionAdditionalData" : "#VALUE",
          "authenticatedEncryptionTag" : "#VALUE"
          "dataFormat": "#HEX|BASE64",
          "decryptedData": "#VALUE"
        }
      }
    }
  2. 生成された入力をファイル(たとえば、key_decrypt.json)に保存し、それを編集して必要な復号化設定を含めます。たとえば:
    { 
      "service": {
        "category": "crypto",
        "resource": "data",
        "action": "decrypt",
        "options": {
          "uuid": "2359E04F-DA61-4F7C-BF9F-913D3369A93A",
          "data" : "/okv/opt/data",
          "blockCipherMode" : "GCM",
          "padding" : "ZEROS",
          "iv" : "/okv/opt/iv",
          "authenticatedEncryptionAdditionalData" : "/okv/opt/keys/authenticatedEncryptionAdditionalData",
          "authenticatedEncryptionTag" : "/okv/opt/keys/authenticatedEncryptionTag",
          "dataFormat": "HEX",
          "decryptedData": "/okv/opt/keys/decrypted_data"
        }
      }
    }
  3. 生成されたJSONファイルを使用してokv crypto data decryptコマンドを実行します。
    okv crypto data decrypt --from-json key_decrypt.json

    出力は、次のようになります。

    {
      "result" : "Success",
      "value" : {
        "decryptedData" : "/okv/opt/keys/decrypted_data"
      }
    } 

6.2 okv crypto data encryptコマンド

okv crypto data encryptコマンドは、Oracle Key Vaultサーバー内のOracle Key Vault管理対象セキュリティ・オブジェクトを使用して、指定された平文データに対して暗号化操作を実行し、暗号化データを返します。

必要な権限

エンドポイントには、暗号化に使用されるキーに対する読取り権限が必要です。

構文

okv crypto data encrypt --uuid UUID --data file_path 
--block-cipher-mode block_cipher_mode --padding padding 
--random-iv random_iv --iv file_path 
--authenticated-encryption-additional-data file_path --data-format data_format 
--encrypted-data output_file_path --iv-out output_file_path 
--authenticated-encryption-tag output_file_path

JSON入力ファイル・テンプレート

{
  "service": {
    "category": "crypto",
    "resource": "data",
    "action": "encrypt",
    "options": {
      "uuid": "#VALUE",
      "data" : "#VALUE",
      "blockCipherMode" : "#CBC|ECB|CFB|OFB|GCM",
      "padding" : "#NONE|ZEROS|PKCS5",
      "randomIV" : "#TRUE|FALSE",
      "iv" : "#VALUE",
      "authenticatedEncryptionAdditionalData" : "#VALUE",
      "dataFormat": "#HEX|BASE64",
      "encryptedData": "#VALUE",
      "ivOut": "#VALUE",
      "authenticatedEncryptionTag" : "#VALUE"
    }
  }
}

パラメータ

パラメータ/テンプレート・パラメータ 必須かどうか 説明

--uuid / uuid

必須

暗号化に使用するキーのUUID (Universally Unique ID)。

オブジェクトの一意識別子を調べるには、Oracle Key Vault管理コンソールで、「Keys & Wallets」タブをクリックして、左側のナビゲーション・ウィンドウで「Keys & Secrets」をクリックします。「Keys & Secrets」表で、「Unique Identifier」列を確認します。

--data / data

必須

暗号化する必要がある平文データへのファイル・パス

--block-cipher-mode / blockCipherMode

オプション

ブロック暗号モード。値は次のとおりです。

  • CBC (暗号ブロック・チェーンの場合)
  • CFB (暗号フィードバックの場合)
  • ECB (電子コードブックの場合)
  • GCM (ガロア/カウンタの場合)
  • OFB (出力フィードバックの場合)

この設定を省略すると、Oracle Key Vaultではキーに関連付けられた暗号化パラメータを使用します。

ノート:

block-cipher-modeGCMとして使用している場合は、--authenticated-encryption-tagをパラメータとともに設定します。

--padding / padding

オプション

パディング。値は次のとおりです。

  • NONE
  • ZEROS
  • PKCS5

この設定を省略すると、Oracle Key Vaultではキーに関連付けられた暗号化パラメータを使用します。

--random-iv / randomIV

オプション

Oracle Key Vaultサーバーでランダム初期化ベクトル(IV)を使用する必要があるかどうかを示します。値は次のとおりです。

  • TRUE
  • FALSE (デフォルト)

Oracle Key Vaultは、このコマンドの入力でIVが指定されていない場合にのみrandomIV値を使用します。IVを省略し、入力でrandomIVTRUEに設定した場合、Oracle Key Vaultは暗号化操作にランダムIVを使用します。

--iv / iv

オプション

暗号化操作に使用するIVのファイル・パス。

okv crypto data encryptコマンドにIVファイル・パスを含めた場合は、okv crypto data decryptの実行時にこのIVファイル・パスを使用します。

--authenticated-encryption-additional-data / authenticatedEncryptionAdditionalData

オプション

暗号化操作に使用する認証済暗号化追加データのファイル・パス。

okv crypto data encryptコマンドに認証済暗号化追加データのファイル・パスを含めた場合は、okv crypto data decryptの実行時にこの認証済暗号化ファイル・パスを使用します。

--data-format / dataFormat

オプション

データ形式。入力および出力ファイルのデータの形式。指定しない場合、データはバイナリ・データとして読み取られ、書き込まれます。値は次のとおりです。

  • HEX
  • BASE64

--encrypted-data / encryptedData

必須

暗号化されたデータが書き込まれるファイル・パス。指定された出力ファイルが存在しない場合は、エラーになります。ファイルが存在する場合は、暗号化されたデータで上書きされます。

--iv-out / ivOut

オプション

応答のIVが書き込まれるファイル・パス。指定された出力ファイルが存在しない場合は、エラーになります。ファイルが存在する場合は、応答のIVで上書きされます。IVは、ivが指定されてなく、入力でrandomIVがtrueに設定されている場合にのみ、ivOutで返されます。入力でivが指定されている場合、Oracle Key VaultはivOutパラメータを無視します。

okv crypto data encryptコマンドに応答のIVのファイル・パスを含めた場合は、okv crypto data decryptの実行時にこの応答のIVのファイル・パスを使用します。

--authenticated-encryption-tag / authenticatedEncryptionTag

オプション

応答の認証済暗号化タグが書き込まれるファイル・パス。指定された出力ファイルが存在しない場合は、エラーになります。ファイルが存在する場合は、応答の認証済暗号化タグで上書きされます。返される認証済暗号化タグを暗号文の復号化に使用する必要があります。

okv crypto data encryptコマンドに応答の認証済暗号化タグのファイル・パスを含めた場合は、okv crypto data decryptの実行時にこの応答の認証済暗号化タグのファイル・パスを使用します。

JSONの例

  1. okv crypto data encryptコマンドのJSON入力を生成します。
    okv crypto data encrypt --generate-json-input

    次のような入力が生成されます。

    {
      "service": {
        "category": "crypto",
        "resource": "data",
        "action": "encrypt",
        "options": {
          "uuid": "#VALUE",
          "data" : "#VALUE",
          "blockCipherMode" : "#CBC|ECB|CFB|OFB|GCM",
          "padding" : "#NONE|ZEROS|PKCS5",
          "randomIV" : "#TRUE|FALSE",
          "iv" : "#VALUE",
          "authenticatedEncryptionAdditionalData" : "#VALUE",
          "dataFormat": "#HEX|BASE64",
          "encryptedData": "#VALUE",
          "ivOut": "#VALUE",
          "authenticatedEncryptionTag" : "#VALUE"
        }
      }
    }
  2. 生成された入力をファイル(たとえば、key_encrypt.json)に保存し、それを編集して必要な暗号化設定を含めます。暗号化時に使用する値と、生成されたivOutおよびauthenticatedEncryptionTag (ある場合)を記録しておきます。暗号文を復号化する場合は、同じ値を指定する必要があります。たとえば:
    { 
      "service": {
        "category": "crypto",
        "resource": "data",
        "action": "encrypt",
        "options": {
          "uuid": "2359E04F-DA61-4F7C-BF9F-913D3369A93A",
          "data" : "/okv/opt/data",
          "blockCipherMode" : "GCM",
          "padding" : "ZEROS",
          "iv" : "/okv/opt/iv",
          "authenticatedEncryptionAdditionalData" : "/okv/opt/keys/authenticatedEncryptionAdditionalData",
          "dataFormat": "HEX",
          "encryptedData": "/okv/opt/keys/encrypted_data",
          "authenticatedEncryptionTag" : "/okv/opt/keys/authenticatedEncryptionTag"
        }
      }
    }
  3. 生成されたJSONファイルを使用してokv crypto data encryptコマンドを実行します。
    okv crypto data encrypt --from-json key_encrypt.json

    出力は、次のようになります。

    {
      "result" : "Success",
      "value" : {
        "encryptedData" : "/okv/opt/keys/encrypted_data"
        "authenticatedEncryptionTag" : "/okv/opt/keys/authenticatedEncryptionTag"
      }
    } 

ノート:

Oracle Key Vaultでは、最大32KBのデータを暗号化できます。

6.3 okv crypto data signコマンド

okv crypto data signコマンドは、Oracle Key Vaultサーバー内のOracle Key Vault管理対象セキュリティ・オブジェクトを使用して、指定されたメッセージ・ファイルに対して署名操作を実行し、署名データを返します。

必要な権限

エンドポイントに、署名に使用する秘密キーに対する読取り権限が必要です。

構文

okv crypto data sign --uuid <UUID> --message-file <filePath> --message <message> --message-type <messageType> --digital-signature-algorithm <digitalSignatureAlgoritm> --signature-data <output file path> --output_format TEXT 

JSON入力ファイル・テンプレート

{
  "service": {
    "category": "crypto",
    "resource": "data",
    "action": "sign",
    "options": {
      "uuid": "#VALUE",
      "message" : "#VALUE",
      "messageFile" : "#VALUE",
      "messageType" : "#RAW|DIGEST",
      "digitalSignatureAlgorithm" : #RSASSA_PKCS1_v1_5_SHA256|RSASSA_PKCS1_v1_5_SHA384|RSASSA_PKCS1_v1_5_SHA512|RSASSA_PSS_SHA256|RSASSA_PSS_SHA384|RSASSA_PSS_SHA512",
      "signatureData": "#VALUE"
    }
  }
}

パラメータ

パラメータ/テンプレート・パラメータ 必須かどうか 説明

--uuid / uuid

必須

署名操作に使用するキーの一意識別子。

オブジェクトの一意識別子を調べるには、Oracle Key Vault管理コンソールで、「Keys & Wallets」タブをクリックして、左側のナビゲーション・ウィンドウで「Keys & Secrets」をクリックします。「Keys & Secrets」表で、「Unique Identifier」列を確認します。

--message/message

オプション

署名する必要があるデータ。
  • メッセージ・タイプがDIGESTの場合、これはHEXである必要があります。
  • メッセージ・タイプがRAWの場合、これはどのタイプでもかまいません。
  • --message/messageまたは--message-file/messageFileオプションのいずれかが必要です。

--message-file/messageFile

オプション

署名する必要があるデータへのファイル・パスを示します。message-fileまたはmessageFile引数で指定します。--message/messageまたは--message-file/messageFileオプションのいずれかが必要です

--message-type/messageType

オプション

messageまたはmessage-file/messageFile引数で指定したデータのタイプ(RAWまたはDIGEST)を示します。デフォルト値はRAWです

--digital-signature-algorithm / digitalSignatureAlgorithm

オプション

デジタル署名アルゴリズム

サポートされているアルゴリズム
  • * RSASSA_PKCS1_v1_5_SHA256
  • * RSASSA_PKCS1_v1_5_SHA384
  • * RSASSA_PKCS1_v1_5_SHA512
  • * RSASSA_PSS_SHA256
  • * RSASSA_PSS_SHA384
  • * RSASSA_PSS_SHA512

デフォルト: RSASSA_PKCS1_v1_5_SHA256

--signature-data / /signatureData

オプション

受信した署名付きデータを書き込むファイルへのパス。

このオプションが指定されている場合、出力は次のようになります:
{
   "result" : "Success"
}
このオプションが指定されていない場合、出力は次のようになります:
{
  "result" : "Success",
  "value" : {
    "signatureData" : "3258D33DFB12F97....86419A35F32BA903ADDEB3" 
  }
} 

JSONの例

  1. okv crypto data signコマンド用のJSON入力を生成します。
    okv crypto data sign --generate-json-input

    次のような入力が生成されます。

    {
      "service": {
        "category": "crypto",
        "resource": "data",
        "action": "sign",
        "options": {
          "uuid": "#VALUE",
          "message" : "#VALUE",
          "messageFile" : "#VALUE",
          "messageType" : "#RAW|DIGEST",
          "digitalSignatureAlgorithm" : "#RSASSA_PKCS1_v1_5_SHA256|RSASSA_PKCS1_v1_5_SHA384|RSASSA_PKCS1_v1_5_SHA512",
          "signatureData": "#VALUE"
        }
      }
    }
  2. 生成された入力内容をファイル(たとえば、key_sign.json)に保存してから、それを編集して必要な署名設定を含めます。たとえば:
     {
      "service": {
        "category": "crypto",
        "resource": "data",
        "action": "sign",
        "options": {
          "uuid": "2359E04F-DA61-4F7C-BF9F-913D3369A93A",
          "message" : "Example message to sign",
          "messageType" : "RAW",
          "digitalSignatureAlgorithm" : "RSASSA_PKCS1_v1_5_SHA256"
        }
      }
    }
  3. 生成されたJSONファイルを使用してokv crypto data signコマンドを実行します。
    okv crypto data sign --from-json key_sign.json

    "--signature-data/signatureData"が指定されている場合、出力は次のようになります:

    {
      "result" : "Success",
      "value" : {
        "signatureData" : "12634F979551C19ADAEB69733853ADB41405FF108E479393AF8B82140186F7244A41F7E36BA1129E67453B36297BB91115C4B10B02101AA8068E251B74B7374E975E1E9C1EEACDCB73BAACF4E05359563A8806B49AA9263ECF61A0D4A0769F1CA5C3CEC0B0B8B4F4F470C5E78F01549C04A491CE346916ECC55E5AA6E2EEA42A3909A38A8090C341FAFEE7C1547D7BC4509CDC65728729011F4301DFB105CF2A0F6B1799D4B9B29667789E6EA1A4319D14E7B92BBC2E68F3DB20CA8B8270FC20C272F638202F3D68248B7AF12750C2A22DF159886AC2456DBAA4CC94A90A064D771106619C103DCCC66C0815FA9FF3349A03E0E3D9696984E6A826EAA507C32F"
      }
    }

6.4 okv crypto data sign-verifyコマンド

okv crypto data sign-verifyコマンドは、Oracle Key Vaultサーバー内のOracle Key Vault管理対象セキュリティ・オブジェクトを使用して、指定された署名データおよびメッセージ・ファイルに対して署名検証操作を実行し、その署名が有効かどうかを返します。

必要な権限

エンドポイントに、署名検証に使用する公開キーに対する読取り権限が必要です。

構文

okv crypto data sign-verify --uuid <UUID> --message-file <filePath> --message <message> --signature-data <filePath> --digital-signature-algorithm <digitalSignAlgoritm> --text_output TEXT 

JSON入力ファイル・テンプレート

{
  "service": {
    "category": "crypto",
    "resource": "data",
    "action": "sign-verify",
    "options": {
      "uuid": "#VALUE",
      "message" : "#VALUE",
      "messageFile" : "#VALUE",
      "messageType" : "#RAW|DIGEST",
      "signatureData" : "#VALUE",
      "digitalSignatureAlgorithm" : "#RSASSA_PKCS1_v1_5_SHA256|RSASSA_PKCS1_v1_5_SHA384|RSASSA_PKCS1_v1_5_SHA512|RSASSA_PSS_SHA256|RSASSA_PSS_SHA384|RSASSA_PSS_SHA512"
    }
  }
}

パラメータ

パラメータ/テンプレート・パラメータ 必須かどうか 説明

--uuid / uuid

必須

署名検証に使用するキーのUniversally Unique ID (UUID)。

オブジェクトの一意識別子を調べるには、Oracle Key Vault管理コンソールで、「Keys & Wallets」タブをクリックして、左側のナビゲーション・ウィンドウで「Keys & Secrets」をクリックします。「Keys & Secrets」表で、「Unique Identifier」列を確認します。

--message / message

オプション

署名操作に渡されているデータ(アルゴリズムで、署名を検証するために元のデータが必要になるため)。--message/messageまたは--message-file/messageFileオプションのいずれかが必要です

--message-file / --messageFile

オプション

署名操作に渡されているデータへのファイル・パスを指定します(アルゴリズムで、署名を検証するために元のデータが必要になるため)。署名する必要があるデータへのファイル・パスを示します。message-fileまたはmessageFile引数で指定します。

--message-type / messageType

オプション

messageまたはmessage-file/messageFile引数で指定したデータのタイプ(RAWまたはDIGEST)を示します。

--signature-data / signatureData

必須

検証する必要がある署名へのファイル・パスを示します。

--digital-signature-algorithm / digitalSignatureAlgorithm

オプション

アルゴリズムのデジタル署名。

--output_format

オプション

出力形式を指定します。

JSONの例

  1. okv crypto data sign-verifyコマンド用のJSON入力を生成します。
    okv crypto data sign-verify --generate-json-input

    次のような入力が生成されます。

    {
      "service": {
        "category": "crypto",
        "resource": "data",
        "action": "sign-verify",
        "options": {
          "uuid": "#VALUE",
          "message" : "#VALUE",
          "messageFile" : "#VALUE",
          "messageType" : "#RAW|DIGEST",
          "signatureData" : "#VALUE",
          "digitalSignatureAlgorithm" : "#RSASSA_PKCS1_v1_5_SHA256|RSASSA_PKCS1_v1_5_SHA384|RSASSA_PKCS1_v1_5_SHA512"
        }
      }
    }
    
  2. 生成された入力内容をファイル(たとえば、key_sign-verify.json)に保存してから、それを編集して必要な復号化設定を含めます。たとえば:
    {
      {
      "service": {
        "category": "crypto",
        "resource": "data",
        "action": "sign-verify",
        "options": {
          "uuid": "2359E04F-DA61-4F7C-BF9F-913D3369A93A",
          "message" : "Example message to sign",
          "messageType" : "RAW",
          "signatureData": "/tmp/signature_data",
          "digitalSignatureAlgorithm" : "RSASSA_PKCS1_v1_5_SHA256"
        }
      }
    }
  3. 生成されたJSONファイルを使用してokv crypto data sign-verifyコマンドを実行します。
    okv crypto data sign-verify --from-json key_sign-verify.json

    出力は、次のようになります。

    {
      "result" : "Success",
      "value" : {
        "validityIndicator" : "VALID"
      }
    } 

次の例では、okvutil signコマンドで生成された署名をopensslを使用して検証する方法を示します。

  1. opensslでは、HEX形式の署名の検証はサポートされていません。okvutil signコマンドで生成される署名はHEX形式であるため、xxdまたは他のユーティリティを使用してその署名をバイナリ形式に変換できます。
    xxd -r -p /tmp/signature_data >
          /tmp/signature_data.bin
  2. /tmp/signature_data.binに格納されているバイナリ形式の署名と、ファイルkey.pubに格納されている公開キーを使用して、ファイルmessage.txtに格納されているメッセージの署名を検証します。
    openssl dgst -sha256 -verify key.pub -signature /tmp/signature_data.bin message.txt
    Verified OK