KMFCryptoOperation - スコープ指定、グローバル

  • リリースバージョン: Washingtondc
  • 更新日 2024年02月01日
  • 読む21読むのに数分
  • KMFCryptoOperation クラスは、KMF 暗号化モジュールまたは CLE 暗号化モジュールを使用して暗号化操作を実行するためのメソッドを提供します。

    この API を使用するには、Key Management Framework (KMF) 暗号化モジュールまたは Column Level Encryption (CLE) 暗号化モジュールをすでに作成している必要があります。モジュールには 1 つ以上の暗号化仕様が必要で、その関連キーを作成またはインポートする必要があります。詳細については、「 暗号化モジュール」を参照してください。

    この API を使用して生成された KMFCryptoOperation オブジェクトは、対称暗号化などの暗号化の操作を表します。KMFCryptoOperations() メソッドを使用してこのオブジェクトを作成し、ビルダーメソッドを使用してオブジェクトのプロパティを設定し、doOperation() メソッドを使用して操作を実行します。

    この API は、スコープ対象のアプリケーションでもグローバルのアプリケーションでも使用できます。この API を呼び出すときは、常に sn_kmf_ns 名前空間を指定する必要があります。

    KMFCryptoOperation - KMFCryptoOperation(文字列 cryptoModuleName, 文字列 operationName)

    指定したモジュールと操作の KMFCryptoOperation オブジェクトを作成します。

    この API ではビルダーメソッドを利用します。ビルダーメソッドによって、目的のデータの出力形式の変更など、KMFCryptoOperation オブジェクトのプロパティが更新されます。ビルダーメソッドによっては、一部の操作で有効でないものがあります。各操作に使用できるビルダーメソッドは、以下のパラメーターテーブルに記載されています。

    次のビルダーメソッドはすべての操作タイプに有効です。
    表 : 1. パラメーター
    名前 タイプ 説明
    cryptoModuleName 文字列 使用する Key Management Framework (KMF) 暗号化モジュールまたは Column Level Encryption (CLE) 暗号化モジュールの名前。このメソッドを呼び出す前に、モジュールを作成する必要があります。詳細については、「 暗号化モジュールの概要」を参照してください。
    operationName 文字列 実行する操作の名前。
    有効な値 (値の大文字と小文字を区別しない):
    • ASYMMETRIC_DECRYPTION:非対称キーアルゴリズムを使用したデータの復号化。暗号化の目的が非対称データ復号化になっている KMF 暗号化モジュールが必要です。
      • 追加のビルダーメソッド:withAdditionalInput()
      • デフォルトの入力形式:書式設定済み - KMF 仕様に書式設定
      • デフォルトの出力形式:KMFBase64 - Base64 エンコード
      • デフォルトの出力タイプ :文字列
    • ASYMMETRIC_ENCRYPTION:非対称キーアルゴリズムを使用したデータの暗号化。暗号化の目的が非対称データ暗号化になっている KMF 暗号化モジュールが必要です。
      • 追加のビルダーメソッド:withAdditionalInput()
      • デフォルトの入力形式:KMFBase64 - Base64 エンコード
      • デフォルトの出力形式:書式設定済み - KMF 仕様に書式設定
      • デフォルトの出力タイプ :文字列 。 出力は KMFEncryptionPayload オブジェクトにすることもできます。RSA と EC-IES にはどちらとも互換性があります。KMFEncryptionPayload オブジェクトの詳細については、withAdditionalInput() を参照してください。
    • ASYMMETRIC_UNWRAPPING:非対称キーアルゴリズムを使用したキーのラップ解除。暗号化の目的が非対称キーのラップ解除になっている KMF 暗号化モジュールが必要です。
      • 追加のビルダーメソッド:withAlgorithm()
      • デフォルトの入力形式:書式設定済み - KMF 仕様に書式設定
      • デフォルトの出力形式:KMFBase64 - Base64 エンコード
      • デフォルトの出力タイプ :文字列
    • ASYMMETRIC_WRAPPING:非対称キーアルゴリズムを使用したキーのラッピング。暗号化の目的が非対称キーのラッピングになっている KMF 暗号化モジュールが必要です。
      • 追加のビルダーメソッド:withAlgorithm()withSysId()
      • デフォルトの入力形式:KMFBase64 - Base64 エンコード
      • デフォルトの出力形式:書式設定済み - KMF 仕様に書式設定
      • デフォルトの出力タイプ :文字列
    • MAC_GENERATION:メッセージ認証コード (MAC) の生成。データの完全性と認証を提供するためのベースとなる対称キーアルゴリズム。暗号化の目的が対称認証になっている KMF 暗号化モジュールが必要です。
      • 追加のビルダーメソッド:なし
      • デフォルトの入力形式:KMFBase64 - Base64 エンコード
      • デフォルトの出力形式:書式設定済み - KMF 仕様に書式設定
      • デフォルトの出力タイプ :文字列
    • MAC_VERIFICATION:MAC の検証。データの完全性と認証を提供するためのベースとなる対称キーアルゴリズム。暗号化の目的が対称認証になっている KMF 暗号化モジュールが必要です。
      • 追加のビルダーメソッド:withAdditionalInput()
      • デフォルトの入力形式:KMFBase64 - Base64 エンコード
      • デフォルトの出力形式:KMFNone - デコードなし
      • デフォルトの出力タイプ :ブール
    • SIGNATURE_GENERATION:デジタル署名の生成。データの完全性と認証を提供するためのベースとなる非対称キーアルゴリズム。暗号化の目的が署名生成になっている KMF 暗号化モジュールが必要です。
      • 追加のビルダーメソッド:なし
      • デフォルトの入力形式:KMFBase64 - Base64 エンコード
      • デフォルトの出力形式:書式設定済み - KMF 仕様に書式設定
      • デフォルトの出力タイプ :文字列
    • SIGNATURE_VERIFICATION:デジタル署名の検証。データの完全性と認証を提供するためのベースとなる非対称キーアルゴリズム。暗号化の目的が署名検証になっている KMF 暗号化モジュールが必要です。
      • 追加のビルダーメソッド:withAdditionalInput()
      • デフォルトの入力形式:KMFBase64 - Base64 エンコード
      • デフォルトの出力形式:KMFNone - デコードなし
      • デフォルトの出力タイプ :ブール
    • SYMMETRIC_ENCRYPTION:対称キーアルゴリズムを使用したデータの暗号化。アルゴリズムが等価性保存でない場合は、フォーマットされた出力のみが許可されます。暗号化の目的が対称データの暗号化/復号化になっている KMF 暗号化モジュールが必要です。
      • 追加のビルダーメソッド:なし
      • デフォルトの入力形式:KMFBase64 - Base64 エンコード
      • デフォルトの出力形式:書式設定済み - KMF 仕様に書式設定
      • デフォルトの出力タイプ :文字列
    • SYMMETRIC_DECRYPTION:対称キーアルゴリズムを使用したデータの復号化。アルゴリズムが等価性保存でない場合は、KMFBase64 入力が許可されます。暗号化の目的が対称データの暗号化/復号化になっている KMF 暗号化モジュールが必要です。
      • 追加のビルダーメソッド:なし
      • デフォルトの入力形式:書式設定済み - KMF 仕様に書式設定
      • デフォルトの出力形式:KMFBase64 - Base64 エンコード
      • デフォルトの出力タイプ :文字列
    • SYMMETRIC_WRAPPING:対称キーアルゴリズムを使用したキーのラッピング。アルゴリズムが等価性保存でない場合は、フォーマットされた出力のみが許可されます。暗号化の目的が対称キーのラッピング/アンラッピングになっている KMF 暗号化モジュールが必要です。
      • 追加のビルダーメソッド:withAlgorithm() および withSysId()
      • デフォルトの入力形式:KMFBase64 - Base64 エンコード
      • デフォルトの出力形式:書式設定済み - KMF 仕様に書式設定
      • デフォルトの出力タイプ :文字列
    • SYMMETRIC_UNWRAPPING:対称キーアルゴリズムを使用したキーのラップ解除。アルゴリズムが等価性保存でない場合は、KMFBase64 入力が許可されます。暗号化の目的が対称キーのラッピング/アンラッピングになっている KMF 暗号化モジュールが必要です。
      • 追加のビルダーメソッド:withAlgorithm()
      • デフォルトの入力形式:書式設定済み - KMF 仕様に書式設定
      • デフォルトの出力形式:KMFBase64 - Base64 エンコード
      • デフォルトの出力タイプ :文字列

    この例では、global.sj_cm というモジュールの KMFCryptoOperation オブジェクトをインスタンス化して、対称暗号化の操作を実行します。グローバルアプリケーションとスコープ対象アプリケーションの両方の名前空間を含める必要があります。

    var op = new sn_kmf_ns.KMFCryptoOperation("global.sj_cm","SYMMETRIC_ENCRYPTION"); 

    この例では、デフォルトの出力タイプと出力形式を更新するオプションを指定する方法を示します。

    var op = new sn_kmf_ns.KMFCryptoOperation("global.sj_cm","SYMMETRIC_ENCRYPTION")
      .withOutputType("STRING").withOutputFormat("FORMATTED");
    
    var cipherText=op.doOperation("hi");

    この例では、EC-IES という統合暗号化スキームを使用して非対称暗号化の操作を実行する方法を示します。signature などの長い値は、読みやすくするために一部 … に置き換えて短縮されています。

    var op = new sn_kmf_ns.KMFCryptoOperation("global.sj_cm","ASYMMETRIC_ENCRYPTION")
    .withInputFormat("KMFNONE")
    .withOutputType("PAYLOAD");
    
    var cipherText = op.doOperation("hi");
    
    /*
    cipherText contains an object similar to this JSON: {
      "signature": "pkg…",
      "ephemeral_key": "BDi…",
      "ciphertext": "afFS…"
    }
    */
    

    この例では、EC-IES を使用して非対称復号化の操作を実行する方法を示します。

    var op = new 
    sn_kmf_ns.KMFCryptoOperation("global.sj_cm","ASYMMETRIC_DECRYPTION")
      .withAdditionalInput({
      "signature": "pkg… ",
      "ephemeral_key": "BDi…"
    })
    .withOutputFormat("KMFNONE");
    
    var clearText = op.doOperation("afFS…");
    

    KMFCryptoOperation - doOperation (オブジェクト data)

    指定されたデータに対して、現在の KMFCryptoOperation オブジェクトによって定義された暗号化操作を実行し、結果を返します。

    表 : 2. パラメーター
    名前 タイプ 説明
    data オブジェクト 関連する KMFCryptoOperation オブジェクトで withSysId() ビルダーメソッドが以前に呼び出されている場合を除き、このパラメーターは必須です。暗号化操作を実行するデータを入力します。
    表 : 3. 返される内容
    タイプ 説明
    操作タイプによって異なります。
    • MAC_VERIFICATION および SIGNATURE_VERIFICATION:ブーリアン
    • その他すべて:文字列
    関連する KMFCryptoOperation オブジェクトで指定の操作を実行した後のデータの結果。

    この例では、doOperation() を使用して MAC を作成します。

    var op = new sn_kmf_ns.KMFCryptoOperation("global.sj_cm","MAC_GENERATION"); 
    var data = "aGk="; 
    var mac = op.doOperation(data);

    KMFCryptoOperation - withAdditionalInput(オブジェクト additionalInput)

    暗号化操作を実行するために必要な追加の入力を設定します。

    たとえば、メッセージ認証コード (MAC) の検証中に、生成された MAC タグをこのメソッドで渡します。同様に、署名検証中にこのメソッドを使用して署名を渡します。また、Elliptic Curve Integrated Encryption Scheme (EC-IES) などの統合された暗号で非対称操作を実行するときに、追加のデータである KMFEncryptionPayload オブジェクトをこのメソッドを使用して渡すこともできます。

    注:
    追加の入力は、KFMCryptoOperation オブジェクトに現在設定されているものと同じ形式でなくてもかまいません。
    表 : 4. パラメーター
    名前 タイプ 説明
    additionalInput 文字列またはオブジェクト オプション。ただし、EC-IES を使用する場合の非対称復号化の操作を除きます。KMFCryptoOperation オブジェクトで指定された暗号化操作を実行するために必要な追加の入力データ。
    サポートされている文字列の形式:
    • FORMATTED:Key Management Framework (KMF) 仕様にフォーマットされます。
    • KMFBASE64:Base64 でエンコードされます。

    KMFEncryptionPayload オブジェクトの形式:

    {
      "ciphertext": String,
      "derivation_secret": String,
      "ephemeral_key": String,
      "ephemeral_key_format": String,
      "signature": String
    }
    additionalInput.ciphertext 文字列 (Base64) 非対称復号化の場合は必須、その他の操作の場合はオプション。
    有効な値:
    • RSA アルゴリズムを使用する場合:RSA 暗号テキスト
    • EC-IES アルゴリズムを使用する場合:統合 AES 暗号テキスト

    出力タイプが payload に設定されている場合は、非対称暗号化の操作から使用できます。

    additionalInput.derivation_secret 文字列 (Base64) オプション。EC-IES を使用した非対称暗号化または非対称復号化の操作にのみ使用します。統合スキームのキー導出処理中に使用する共有シークレット。
    additionalInput.ephemeral_key 文字列 (Base64) EC-IES を使用した非対称復号化の操作の場合は必須、その他すべての操作の場合はオプション。統合スキームの基本的な同意プロセス中に使用する一時公開キー。

    出力タイプが payload に設定されている場合は、非対称暗号化の操作から使用できます。

    additionalInput.ephemeral_key_format 文字列 オプション。EC-IES を使用した非対称暗号化または非対称復号化の操作にのみ使用します。ephemeral_key パラメーターで表される公開キーの形式を上書きします。
    有効な値:
    • x962
    • der
    additionalInput.signature 文字列 (Base64) EC-IES を使用した非対称復号化の操作の場合は必須、その他すべての操作の場合はオプション。統合スキームの署名検証プロセスを使用して検証する暗号テキストの署名。

    出力タイプが payload に設定されている場合は、非対称暗号化の操作から使用できます。

    表 : 5. 返される内容
    タイプ 説明
    なし

    この例では、withAdditionalInput() を使用して文字列ベースの署名を KMFCryptoOperation オブジェクトに追加します。

    var signature = "John Doe";
    var op = new sn_kmf_ns.KMFCryptoOperation("global.sj_cm","SIGNATURE_VERIFICATION")
      .withAdditionalInput(signature);
    
    var value = GlideStringUtil.base64Encode("Text to encode"); // Default input format is KMFBase64
    var result = op.doOperation(String(value));

    この例では、withAdditionalInput() を使用して署名と一時キーを KMFCryptoOperation オブジェクトに追加します。doOperation() の呼び出しや payload の説明などにあるような長い値は、読みやすくするために一部 … に置き換えて短縮されています。

    var payload = new sn_kmf_ns.KMFEncryptionPayload();
    payload.signature = "pkg...";
    payload.ephemeral_key = " BDi...";
    payload.ephemeral_key_format = "x962";
    
    var op = new sn_kmf_ns.KMFCryptoOperation("global.sj_cm","ASYMMETRIC_DECRYPTION")
      .withAdditionalInput(payload)
      .doOperation("afFS...";
    

    KMFCryptoOperation - withAlgorithm (文字列 algorithm)

    ラップするキーマテリアルに関連付けるアルゴリズムを設定します。

    表 : 6. パラメーター
    名前 タイプ 説明
    algorithm 文字列 使用するアルゴリズムです。
    有効な値:
    • AES:対称キータイプ
    • EC:非対称キータイプ
    • HMAC:対称キータイプ
    • RSA:非対称キータイプ
    表 : 7. 返される内容
    タイプ 説明
    なし

    この例では、withAlgorithm() を使用して、使用する暗号化アルゴリズムを EC に変更します。

    var op = new sn_kmf_ns.KMFCryptoOperation("global.sj_cm","ASYMMETRIC_WRAPPING").withAlgorithm("EC");
    var value = GlideStringUtil.base64Encode("Sample key"); // Default input format is KMFBase64
    var result = op.doOperation(String(value));

    KMFCryptoOperation - withInputFormat(文字列 inputFormat)

    暗号化操作が実行される入力データのデータ形式を設定します。データのデコードの際に、ここで指定した形式を使用します。

    表 : 8. パラメーター
    名前 タイプ 説明
    inputFormat 文字列 入力データの形式。
    有効な値:
    • FORMATTED:Key Management Framework (KMF) 仕様にフォーマットされます。
    • KMFBASE64:Base64 でエンコードされます。
    • KMFNONE:エンコードなし。

    デフォルト:KMFCryptoOperation オブジェクトがインスタンス化されたときに指定された操作によって決定される値。詳細については、「KMFCryptoOperation - KMFCryptoOperation(文字列 cryptoModuleName, 文字列 operationName)」を参照してください。

    表 : 9. 返される内容
    タイプ 説明
    なし

    この例では、withInputFormat() を使用して、入力形式をエンコードなしに変更します。

    var op = new sn_kmf_ns.KMFCryptoOperation("global.sj_cm","SYMMETRIC_ENCRYPTION").withInputFormat("KMFNone");
    var result = op.doOperation("Text with no encoding"); // Pass in unencrypted String

    KMFCryptoOperation - withOutputFormat(文字列 outputFormat)

    暗号化操作によって返される出力データのデータ形式を設定します。データのエンコードの際に、ここで指定した形式を使用します。

    表 : 10. パラメーター
    名前 タイプ 説明
    outputFormat 文字列 出力データの形式。
    有効な値:
    • FORMATTED:Key Management Framework (KMF) 仕様にフォーマットされます。
    • KMFBASE64:Base64 でエンコードされます。
    • KMFNONE:デコードなし。MAC_VERIFICATION と SIGNATURE_VERIFICATION でのみサポートされています。

    このメソッドが呼び出されない場合のデフォルト:KMFCryptoOperation オブジェクトがインスタンス化されたときに指定された操作によって決定される値。詳細については、「KMFCryptoOperation - KMFCryptoOperation(文字列 cryptoModuleName, 文字列 operationName)」を参照してください。

    表 : 11. 返される内容
    タイプ 説明
    なし

    この例では、withOutputFormat() を使用して、復号化の出力形式を KMFNone (デフォルトは KMFBase64) に設定します。

    var op = new sn_kmf_ns.KMFCryptoOperation("global.sj_cm","SYMMETRIC_DECRYPTION").withOutputFormat("KMFNone");
    var clear_data = op.doOperation(<FORMATTED_data>); // Pass in default of FORMATTED data

    KMFCryptoOperation - withOutputType(文字列 outputType)

    暗号化操作の実行後に返される出力データのデータタイプを設定します。

    注:
    MAC_VERIFICATION または SIGNATURE_VERIFICATION 操作の KMFCryptoOperation オブジェクトをインスタンス化する場合は、このメソッドを呼び出してブーリアン値を渡し、正しい出力タイプを設定する必要があります。そうでないと、操作の実行時に例外がスローされます。
    表 : 12. パラメーター
    名前 タイプ 説明
    outputType 文字列 出力データのタイプ。

    出力タイプによっては、一部の操作に適用されないものがあります。サポートされていないタイプの場合は、例外がスローされます。

    有効な値 (値の大文字と小文字を区別しない):
    • 文字列:MAC_VERIFICATION または SIGNATURE_VERIFICATION 操作には有効ではありません。
    • ブーリアン:MAC_VERIFICATION または SIGNATURE_VERIFICATION 操作に対してのみ有効です。
    • ペイロード:ASYMMETRIC_ENCRYPTION 操作に対してのみ有効です。この出力タイプは EC-IES に使用します。
    注:
    ペイロードの出力を指定する際の、doOperation() メソッドの出力は KMFEncryptionPayload オブジェクトです。このオブジェクトの構造の詳細については、withAdditionalInput() を参照してください。

    デフォルト:KMFCryptoOperation オブジェクトがインスタンス化されたときに指定された操作によって決定される値。詳細については、「KMFCryptoOperation - KMFCryptoOperation(文字列 cryptoModuleName, 文字列 operationName)」を参照してください。

    表 : 13. 返される内容
    タイプ 説明
    なし

    この例では、withOutputType() を使用して MAC_VERIFICATION の出力タイプをブーリアンに設定します。

    var op = new sn_kmf_ns.KMFCryptoOperation("global.sj_cm","MAC_VERIFICATION")
      .withOutputType("Boolean").withAdditionalInput(<MAC>);
    var value = GlideStringUtil.base64Encode("Text to sign"); // Default input type is KMFBase64
    var result = op.doOperation(String(value));

    KMFCryptoOperation - withSysId(文字列 sysId)

    KMFCryptoOperation オブジェクトでラップするキーの sys_id を設定します。キーの対称および非対称ラッピングに適用できます。

    表 : 14. パラメーター
    名前 タイプ 説明
    sysId 文字列 ラップするキーの sys_id。モジュールキー [sys_kmf_module_key] テーブルにあります。
    表 : 15. 返される内容
    タイプ 説明
    なし

    この例では、withSysId() を使用して、ラップするキーを定義します。

    var op = new sn_kmf_ns.KMFCryptoOperation("global.sj_cm","SYMMETRIC_WRAPPING").withSysId("0d06ce525b231010f86d1b341d81c777");
    var wrappedKey = operation.doOperation(); // No need to pass data when using withSysId()