クラス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
    修飾子と型
    メソッド
    説明
    protected Object
    このオブジェクトのコピーを作成して、返します。
    boolean
    このオブジェクトと他のオブジェクトが等しいかどうかを示します。
    protected void
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    最終決定は非推奨であり、将来のリリースで削除される可能性があります。
    final Class<?>
    このObjectの実行時クラスを返します。
    int
    このオブジェクトに対するハッシュ・コード値を返します。
    final void
    このオブジェクトのモニターで待機中のスレッドを1つ再開します。
    final void
    このオブジェクトのモニターで待機中のすべてのスレッドを再開します。
    オブジェクトの文字列表現を返します。
    final void
    現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。
    final void
    wait(long timeoutMillis)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
    final void
    wait(long timeoutMillis, int nanos)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。