クラスKDF
java.lang.Object
javax.crypto.KDF
public final class KDF extends Object
KDF
は、JavaプラットフォームのプレビューAPIです。
プレビュー機能は、今後のリリースで削除するか、Javaプラットフォームの永続機能にアップグレードすることができます。
このクラスは、キー導出ファンクション(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
メソッドをコールしないことをお薦めします。 一度プロバイダを選択すると、そのプロバイダは変更できません。
- 導入されたバージョン:
- 24
- 関連項目:
-
メソッドのサマリー
修飾子と型メソッド説明byte[]
deriveData
(AlgorithmParameterSpec derivationSpec) キーを導出して、RAWデータをバイト配列として返します。deriveKey
(String alg, AlgorithmParameterSpec derivationSpec) SecretKey
オブジェクトとして返されるキーを導出します。このKDF
オブジェクトのアルゴリズム名を返します。getInstance
(String algorithm) 指定されたアルゴリズムを実装するKDF
オブジェクトを返します。getInstance
(String algorithm, String provider) 指定されたセキュリティ・プロバイダから指定されたアルゴリズムを実装するKDF
オブジェクトを返します。getInstance
(String algorithm, Provider provider) 指定されたセキュリティ・プロバイダから指定されたアルゴリズムを実装するKDF
オブジェクトを返します。getInstance
(String algorithm, KDFParametersPREVIEW kdfParameters) 指定されたアルゴリズムを実装し、指定されたパラメータで初期化されるKDF
オブジェクトを返します。getInstance
(String algorithm, KDFParametersPREVIEW kdfParameters, String provider) 指定されたプロバイダから指定されたアルゴリズムを実装し、指定されたパラメータで初期化されるKDF
オブジェクトを返します。getInstance
(String algorithm, KDFParametersPREVIEW kdfParameters, Provider provider) 指定されたプロバイダから指定されたアルゴリズムを実装し、指定されたパラメータで初期化されるKDF
オブジェクトを返します。このKDF
オブジェクトで使用されるKDFParameters
を返します。プロバイダの名前を返します。
-
メソッドの詳細
-
getAlgorithm
-
getProviderName
-
getParameters
public KDFParametersPREVIEW getParameters()このKDF
オブジェクトで使用されるKDFParameters
を返します。返されるパラメータは、この
KDF
オブジェクトの初期化に使用したものと同じか、基礎となるKDFアルゴリズムで使用される追加のデフォルトまたはランダム・パラメータ値を含む場合があります。 必須パラメータが指定されておらず、KDF
オブジェクトで生成できる場合は、生成されたパラメータが返されます。それ以外の場合は、null
が返されます。- 戻り値:
- この
KDF
オブジェクトまたはnull
で使用されるパラメータ - 関連項目:
-
getInstance
public static KDFPREVIEW getInstance(String algorithm) throws NoSuchAlgorithmException 指定されたアルゴリズムを実装するKDF
オブジェクトを返します。- 実装上のノート:
- JDKリファレンス実装では、さらに
jdk.security.provider.preferred
Security
プロパティを使用して、指定したアルゴリズムの優先プロバイダ順序を決定します。 これは、Security.getProviders()
によって返されるプロバイダの順序とは異なる場合があります。 - パラメータ:
algorithm
- 使用するキー導出アルゴリズム。 標準のKDFアルゴリズム名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」のKDF
セクションを参照してください。- 戻り値:
KDF
オブジェクト- スロー:
NoSuchAlgorithmException
-Provider
が、指定されたアルゴリズムのKDF
実装をサポートしていない場合NullPointerException
-algorithm
がnull
である場合- 関連項目:
-
getInstance
public static KDFPREVIEW getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException 指定されたセキュリティ・プロバイダから指定されたアルゴリズムを実装するKDF
オブジェクトを返します。 指定したプロバイダは、セキュリティ・プロバイダ・リストに登録する必要があります。- パラメータ:
algorithm
- 使用するキー導出アルゴリズム。 標準のKDFアルゴリズム名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」のKDF
セクションを参照してください。provider
- このキー導出に使用するプロバイダ- 戻り値:
KDF
オブジェクト- スロー:
NoSuchAlgorithmException
- 指定されたプロバイダが、指定されたKDF
アルゴリズムをサポートしていない場合NoSuchProviderException
- 指定されたプロバイダがセキュリティ・プロバイダ・リストに登録されていない場合NullPointerException
-algorithm
またはprovider
がnull
の場合
-
getInstance
public static KDFPREVIEW getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException 指定されたセキュリティ・プロバイダから指定されたアルゴリズムを実装するKDF
オブジェクトを返します。- パラメータ:
algorithm
- 使用するキー導出アルゴリズム。 標準のKDFアルゴリズム名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」のKDF
セクションを参照してください。provider
- このキー導出に使用するプロバイダ- 戻り値:
KDF
オブジェクト- スロー:
NoSuchAlgorithmException
- 指定されたプロバイダが、指定されたKDF
アルゴリズムをサポートしていない場合NullPointerException
-algorithm
またはprovider
がnull
の場合
-
getInstance
public static KDFPREVIEW getInstance(String algorithm, KDFParametersPREVIEW kdfParameters) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException 指定されたアルゴリズムを実装し、指定されたパラメータで初期化されるKDF
オブジェクトを返します。- 実装上のノート:
- JDKリファレンス実装では、さらに
jdk.security.provider.preferred
Security
プロパティを使用して、指定したアルゴリズムの優先プロバイダ順序を決定します。 これは、Security.getProviders()
によって返されるプロバイダの順序とは異なる場合があります。 - パラメータ:
algorithm
- 使用するキー導出アルゴリズム。 標準のKDFアルゴリズム名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」のKDF
セクションを参照してください。kdfParameters
- 導出アルゴリズムの構成に使用されるKDFParameters
、またはパラメータが指定されていない場合はnull
- 戻り値:
KDF
オブジェクト- スロー:
NoSuchAlgorithmException
-Provider
が、指定されたアルゴリズムのKDF
実装をサポートしていない場合InvalidAlgorithmParameterException
- 少なくとも1つのProvider
が、指定されたアルゴリズムに対してKDF
実装をサポートしているが、いずれも指定されたパラメータをサポートしていない場合NullPointerException
-algorithm
がnull
である場合- 関連項目:
-
getInstance
public static KDFPREVIEW getInstance(String algorithm, KDFParametersPREVIEW kdfParameters, String provider) throws NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException 指定されたプロバイダから指定されたアルゴリズムを実装し、指定されたパラメータで初期化されるKDF
オブジェクトを返します。 指定したプロバイダは、セキュリティ・プロバイダ・リストに登録する必要があります。- パラメータ:
algorithm
- 使用するキー導出アルゴリズム。 標準のKDFアルゴリズム名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」のKDF
セクションを参照してください。kdfParameters
- 導出アルゴリズムの構成に使用されるKDFParameters
、またはパラメータが指定されていない場合はnull
provider
- このキー導出に使用するプロバイダ- 戻り値:
KDF
オブジェクト- スロー:
NoSuchAlgorithmException
- 指定されたプロバイダが、指定されたKDF
アルゴリズムをサポートしていない場合NoSuchProviderException
- 指定されたプロバイダがセキュリティ・プロバイダ・リストに登録されていない場合InvalidAlgorithmParameterException
- 指定されたプロバイダが、指定されたKDF
アルゴリズムをサポートしているが、指定されたパラメータをサポートしていない場合NullPointerException
-algorithm
またはprovider
がnull
の場合
-
getInstance
public static KDFPREVIEW getInstance(String algorithm, KDFParametersPREVIEW kdfParameters, Provider provider) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException 指定されたプロバイダから指定されたアルゴリズムを実装し、指定されたパラメータで初期化されるKDF
オブジェクトを返します。- パラメータ:
algorithm
- 使用するキー導出アルゴリズム。 標準のKDFアルゴリズム名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」のKDF
セクションを参照してください。kdfParameters
- 導出アルゴリズムの構成に使用されるKDFParameters
、またはパラメータが指定されていない場合はnull
provider
- このキー導出に使用するプロバイダ- 戻り値:
KDF
オブジェクト- スロー:
NoSuchAlgorithmException
- 指定されたプロバイダが、指定されたKDF
アルゴリズムをサポートしていない場合InvalidAlgorithmParameterException
- 指定されたプロバイダが、指定されたKDF
アルゴリズムをサポートしているが、指定されたパラメータをサポートしていない場合NullPointerException
-algorithm
またはprovider
がnull
の場合
-
deriveKey
public SecretKey deriveKey(String alg, AlgorithmParameterSpec derivationSpec) throws InvalidAlgorithmParameterException, NoSuchAlgorithmException SecretKey
オブジェクトとして返されるキーを導出します。- パラメータ:
alg
- 結果のSecretKey
オブジェクトのアルゴリズムderivationSpec
- 導出関数への入力を記述するオブジェクト- 戻り値:
- 導出キー
- スロー:
InvalidAlgorithmParameterException
-derivationSpec
に含まれる情報が無効な場合、またはalg
とderivationSpec
の組合せが無効な場合NoSuchAlgorithmException
-alg
が空または無効の場合NullPointerException
-alg
またはderivationSpec
がnullの場合- 関連項目:
-
deriveData
public byte[] deriveData(AlgorithmParameterSpec derivationSpec) throws InvalidAlgorithmParameterException キーを導出して、RAWデータをバイト配列として返します。- パラメータ:
derivationSpec
- 導出関数への入力を記述するオブジェクト- 戻り値:
- rawバイト内の派生キー
- スロー:
InvalidAlgorithmParameterException
-derivationSpec
に含まれる情報が無効な場合UnsupportedOperationException
- 導出されたキーイング材料が抽出可能でない場合NullPointerException
-derivationSpec
がnullの場合- 関連項目:
-
KDF
を使用できます。