クラスKDF

java.lang.Object
javax.crypto.KDF

public final class KDF extends Object
このクラスは、キー導出ファンクション(KDF)の機能を提供します。これは、入力キーイング・マテリアル(IKM)および他のデータ(optionally)から追加キーを導出するための暗号化アルゴリズムです。

KDF オブジェクトは、getInstanceメソッド・ファミリを使用してインスタンス化されます。

クラスには、deriveKeyおよびderiveDataという2つの導出メソッドがあります。 deriveKeyメソッドは、アルゴリズム名を受け入れ、指定されたアルゴリズムでSecretKeyオブジェクトを返します。 deriveDataメソッドは、RAWデータのバイト配列を返します。

APIの使用方法の例:

    KDF kdfHkdf = KDF.getInstance("HKDF-SHA256");

    AlgorithmParameterSpec derivationSpec =
             HKDFParameterSpec.ofExtract()
                              .addIKM(ikm)
                              .addSalt(salt).thenExpand(info, 32);

    SecretKey sKey = kdfHkdf.deriveKey("AES", derivationSpec);

並行アクセス

実装によって特に文書化されていないかぎり、このクラスで定義されたメソッドはスレッド・セーフではありません。 単一のオブジェクトに並行アクセスする必要のある複数スレッドは、スレッド間で同期をとり、必要に応じてロックする必要があります。 複数のスレッドがそれぞれ個別のオブジェクトを処理する場合、それらのスレッドは同期する必要はありません。

遅延プロバイダ選択

getInstanceメソッドの1つをコールするときにプロバイダを指定しない場合、deriveKeyまたはderiveDataメソッドがコールされるまで、実装によってプロバイダの選択が遅延されます。 これは「プロバイダ選択の遅延」と呼ばれます。 これが行われる主な理由は、選択したプロバイダが、それらのメソッドに渡されるキー・マテリアルを確実に処理できるようにするためです - たとえば、キー・マテリアルは、特定のKDFプロバイダのみが使用できるハードウェア・デバイス上に存在する場合があります。 getInstanceメソッドは、アルゴリズムを実装し、オプションのパラメータをサポートする登録済セキュリティ・プロバイダが少なくとも1つ存在するかぎり、KDFオブジェクトを返します。 遅延プロバイダ選択プロセスは、最も優先されるProviderから開始して、登録済セキュリティ・プロバイダのリストをトラバースします。 指定されたアルゴリズム、オプション・パラメータおよびキー・マテリアルをサポートする最初のプロバイダが選択されます。

deriveKeyまたはderiveDataメソッドの前にgetProviderNameまたはgetParametersメソッドをコールすると、KDFアルゴリズムとオプションのKDFParametersをサポートする最初のプロバイダが選択されます。 このプロバイダは、deriveKeyまたはderiveDataメソッドに渡されるキー・マテリアルをサポートしていない場合があります。 したがって、キー導出操作の後まで、getProviderNameまたはgetParametersメソッドをコールしないことをお薦めします。 一度プロバイダを選択すると、そのプロバイダは変更できません。

導入されたバージョン:
25
関連項目:
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    byte[]
    キーを導出して、RAWデータをバイト配列として返します。
    deriveKey(String alg, AlgorithmParameterSpec derivationSpec)
    SecretKeyオブジェクトとして返されるキーを導出します。
    このKDFオブジェクトのアルゴリズム名を返します。
    static KDF
    getInstance(String algorithm)
    指定されたアルゴリズムを実装するKDFオブジェクトを返します。
    static KDF
    getInstance(String algorithm, String provider)
    指定されたセキュリティ・プロバイダから指定されたアルゴリズムを実装するKDFオブジェクトを返します。
    static KDF
    getInstance(String algorithm, Provider provider)
    指定されたセキュリティ・プロバイダから指定されたアルゴリズムを実装するKDFオブジェクトを返します。
    static KDF
    getInstance(String algorithm, KDFParameters kdfParameters)
    指定されたアルゴリズムを実装し、指定されたパラメータで初期化されるKDFオブジェクトを返します。
    static KDF
    getInstance(String algorithm, KDFParameters kdfParameters, String provider)
    指定されたプロバイダから指定されたアルゴリズムを実装し、指定されたパラメータで初期化されるKDFオブジェクトを返します。
    static KDF
    getInstance(String algorithm, KDFParameters kdfParameters, Provider provider)
    指定されたプロバイダから指定されたアルゴリズムを実装し、指定されたパラメータで初期化されるKDFオブジェクトを返します。
    このKDFオブジェクトで使用されるKDFParametersを返します。
    プロバイダの名前を返します。

    クラスオブジェクトで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait