DrbgParameters クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
このクラスは、DRBG (決定論的ランダム ビット ジェネレーター) によって使用されるパラメーターを指定します。
[Android.Runtime.Register("java/security/DrbgParameters", ApiSince=35, DoNotGenerateAcw=true)]
public class DrbgParameters : Java.Lang.Object
[<Android.Runtime.Register("java/security/DrbgParameters", ApiSince=35, DoNotGenerateAcw=true)>]
type DrbgParameters = class
inherit Object
- 継承
- 属性
注釈
このクラスは、DRBG (決定論的ランダム ビット ジェネレーター) によって使用されるパラメーターを指定します。
NIST 特別出版物 800-90A リビジョン 1 によると、決定論的ランダム ビット ジェネレーター (800- 90Ar1) を使用した乱数生成の推奨事項<ブロッククォート> DRBG は、この推奨事項で指定された DRBG メカニズムに基づいており、ランダム性のソースが含まれています。 DRBG メカニズムは、ランダム性ソースの出力から決定されるシードによって決定される初期値からビットのシーケンスを生成するアルゴリズム (つまり、DRBG アルゴリズム) を使用します。" </blockquote>
800-90Ar1 仕様では、<ul><li>エントロピ ソース、<li> DRBG メカニズム (例: Hash_DRBG)、<li> DRBG アルゴリズム (Hash_DRBG の場合は SHA-256、CTR_DRBG の場合は AES-256 など) など、さまざまな DRBG 実装の選択肢が可能です。SecureRandom#getInstanceで使用されるアルゴリズムではないことに注意してください。これは、<em>SecureRandom アルゴリズム</em>以下)、<li>予測抵抗や再シードサポートを含む省略可能な機能、<li>最高のセキュリティ強度を呼び出します。
</ul>
これらの選択肢は各実装で設定され、 SecureRandom API によって直接管理されるわけではありません。 状況に適した実装を見つけるには、DRBG プロバイダーのドキュメントを確認してください。
一方、800-90Ar1 仕様には、 <ul><li> 必要なセキュリティ強度、 <li> 予測抵抗が必要な場合、 <li> パーソナル化文字列、追加入力など、いくつかの構成可能なオプションがあります。 </ul>
DRBG インスタンスは、 DrbgParameters.Instantiation オブジェクトのパラメーターとその他の情報 (たとえば、この API で管理されていない nonce) を使用してインスタンス化できます。 これは、NIST SP 800-90Ar1 で定義されている Instantiate_function にマップされます。
DRBG インスタンスは、 DrbgParameters.Reseed オブジェクトのパラメーターを使用して再シードできます。 これは、NIST SP 800-90Ar1 で定義されている Reseed_function にマップされます。
SecureRandom#reseed()の呼び出しは、(SecureRandom#reseed(SecureRandomParameters)によって返される) 効果的なインスタンス化された予測抵抗フラグを使用してSecureRandom#getParameters()を追加入力なしで呼び出すことと同じです。
DRBG インスタンスは、 DrbgParameters.NextBytes オブジェクトから追加のパラメーターを持つデータを生成します。 これは、NIST SP 800-90Ar1 で定義されている Generate_function にマップされます。
SecureRandom#nextBytes(byte[])の呼び出しは、追加の入力なしで有効なインスタンス化された強度と予測抵抗フラグ (SecureRandom#nextBytes(byte[], SecureRandomParameters) によって返される) を使用してSecureRandom#getParameters()を呼び出すことと同じです。
DRBG は、 SecureRandomSpiのサブクラスとして実装する必要があります。 この実装には、 DrbgParameters.Instantiation 引数を受け取る 1-arg SecureRandomSpi#SecureRandomSpi(SecureRandomParameters) コンストラクターが含まれていることをお勧めします。 この方法で実装した場合、この実装は任意の SecureRandom.getInstance() メソッドで選択できます。
SecureRandom.getInstance() パラメーターを持つSecureRandomParametersによって選択された場合、パラメーターはこのコンストラクターに渡されます。
SecureRandom.getInstance() パラメーターを指定せずにSecureRandomParametersによって選択された場合、コンストラクターは null 引数を使用して呼び出され、実装は独自のパラメーターを選択する必要があります。 その SecureRandom#getParameters() は、DRBG の実際のインスタンス化方法を反映する null 以外の有効な DrbgParameters.Instantiation オブジェクトを常に返す必要があります。 呼び出し元は、この情報を使用して、 SecureRandom オブジェクトが DRBG であるかどうか、およびサポートされている機能を判断できます。 戻り値が、DrbgParameters.Instantiation呼び出しに渡されるSecureRandom.getInstance() オブジェクトと必ずしも等しいとは限らないことに注意してください。 たとえば、要求された機能は DrbgParameters.Capability#NONE できますが、実装で再シードがサポートされている場合は、有効な値を DrbgParameters.Capability#RESEED_ONLY できます。 実装では、SecureRandomSpi#engineNextBytes(byte[], SecureRandomParameters) パラメーターを受け取るDrbgParameters.NextBytes メソッドを実装する必要があります。
SecureRandom#getParameters()の結果に DrbgParameters.Instantiation#getCapability() 機能がCapability#NONE NONEされていない限り、SecureRandomSpi#engineReseed(SecureRandomParameters) パラメーターを受け取るDrbgParameters.Reseedを実装する必要があります。
一方、DRBG 実装にDrbgParameters.Instantiation引数を持つコンストラクターが含まれていない場合 (推奨されません)、SecureRandom.getInstance() パラメーターのないSecureRandomParametersでのみ選択できますが、getInstance パラメーターを持つSecureRandomParameters メソッドが呼び出された場合は選択されません。 このように実装した場合、 SecureRandom#getParameters() は nullを返す必要があり、 SecureRandomSpi#engineNextBytes(byte[], SecureRandomParameters) または SecureRandomSpi#engineReseed(SecureRandomParameters)を実装する必要はありません。
DRBG は、シード期間が DRBG メカニズムによって定義された最大シード寿命より大きい場合、自動的に再シードされる可能性があります。
DRBG の実装では、構成と有効なパラメーターを保持してシリアル化と逆シリアル化をサポートする必要がありますが、内部状態をシリアル化せず、逆シリアル化されたオブジェクトを再インスタンス化する必要があります。
例: <blockquote>
SecureRandom drbg;
byte[] buffer = new byte[32];
// Any DRBG is OK
drbg = SecureRandom.getInstance("DRBG");
drbg.nextBytes(buffer);
SecureRandomParameters params = drbg.getParameters();
if (params instanceof DrbgParameters.Instantiation) {
DrbgParameters.Instantiation ins = (DrbgParameters.Instantiation) params;
if (ins.getCapability().supportsReseeding()) {
drbg.reseed();
}
}
// The following call requests a weak DRBG instance. It is only
// guaranteed to support 112 bits of security strength.
drbg = SecureRandom.getInstance("DRBG",
DrbgParameters.instantiation(112, NONE, null));
// Both the next two calls will likely fail, because drbg could be
// instantiated with a smaller strength with no prediction resistance
// support.
drbg.nextBytes(buffer,
DrbgParameters.nextBytes(256, false, "more".getBytes()));
drbg.nextBytes(buffer,
DrbgParameters.nextBytes(112, true, "more".getBytes()));
// The following call requests a strong DRBG instance, with a
// personalization string. If it successfully returns an instance,
// that instance is guaranteed to support 256 bits of security strength
// with prediction resistance available.
drbg = SecureRandom.getInstance("DRBG", DrbgParameters.instantiation(
256, PR_AND_RESEED, "hello".getBytes()));
// Prediction resistance is not requested in this single call,
// but an additional input is used.
drbg.nextBytes(buffer,
DrbgParameters.nextBytes(-1, false, "more".getBytes()));
// Same for this call.
drbg.reseed(DrbgParameters.reseed(false, "extra".getBytes()));
</blockquote>
9 に追加されました。
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。
コンストラクター
| 名前 | 説明 |
|---|---|
| DrbgParameters(IntPtr, JniHandleOwnership) |
このクラスは、DRBG (決定論的ランダム ビット ジェネレーター) によって使用されるパラメーターを指定します。 |
プロパティ
| 名前 | 説明 |
|---|---|
| Class |
この |
| Handle |
基になる Android インスタンスへのハンドル。 (継承元 Object) |
| JniIdentityHashCode |
相互運用ランタイムによってこのJava ピアに割り当てられた ID ハッシュ コードを取得します。 (継承元 Object) |
| JniManagedPeerState |
このクラスは、DRBG (決定論的ランダム ビット ジェネレーター) によって使用されるパラメーターを指定します。 (継承元 JavaObject) |
| JniPeerMembers |
このクラスは、DRBG (決定論的ランダム ビット ジェネレーター) によって使用されるパラメーターを指定します。 |
| PeerReference |
このJava ピアの JNI オブジェクト参照を取得します。 (継承元 Object) |
| ThresholdClass |
このクラスは、DRBG (決定論的ランダム ビット ジェネレーター) によって使用されるパラメーターを指定します。 |
| ThresholdType |
このクラスは、DRBG (決定論的ランダム ビット ジェネレーター) によって使用されるパラメーターを指定します。 |
メソッド
| 名前 | 説明 |
|---|---|
| Clone() |
このオブジェクトのコピーを作成して返します。 (継承元 Object) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
このクラスは、DRBG (決定論的ランダム ビット ジェネレーター) によって使用されるパラメーターを指定します。 (継承元 JavaObject) |
| Dispose() |
このJava ピアによって保持されているリソースを解放します。 (継承元 Object) |
| Dispose(Boolean) |
このJava ピアによって保持されているリソースを解放します。 (継承元 Object) |
| DisposeUnlessReferenced() |
このクラスは、DRBG (決定論的ランダム ビット ジェネレーター) によって使用されるパラメーターを指定します。 (継承元 JavaObject) |
| Equals(Object) |
このクラスは、DRBG (決定論的ランダム ビット ジェネレーター) によって使用されるパラメーターを指定します。 (継承元 JavaObject) |
| Equals(Object) |
他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。 (継承元 Object) |
| GetHashCode() |
オブジェクトのハッシュ コード値を返します。 (継承元 Object) |
| InvokeInstantiation(Int32, DrbgParameters+Capability, Byte[]) |
このクラスは、DRBG (決定論的ランダム ビット ジェネレーター) によって使用されるパラメーターを指定します。 |
| InvokeNextBytes(Int32, Boolean, Byte[]) |
このクラスは、DRBG (決定論的ランダム ビット ジェネレーター) によって使用されるパラメーターを指定します。 |
| InvokeReseed(Boolean, Byte[]) |
このクラスは、DRBG (決定論的ランダム ビット ジェネレーター) によって使用されるパラメーターを指定します。 |
| JavaFinalize() |
オブジェクトへの参照がなくなったとガベージ コレクションによって判断されたときに、オブジェクトのガベージ コレクターによって呼び出されます。 (継承元 Object) |
| Notify() |
このオブジェクトのモニターで待機している 1 つのスレッドを起動します。 (継承元 Object) |
| NotifyAll() |
このオブジェクトのモニターで待機しているすべてのスレッドを起動します。 (継承元 Object) |
| SetHandle(IntPtr, JniHandleOwnership) |
Handle プロパティを設定します。 (継承元 Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
このクラスは、DRBG (決定論的ランダム ビット ジェネレーター) によって使用されるパラメーターを指定します。 (継承元 JavaObject) |
| ToArray<T>() |
このJava配列ラッパーからマネージド配列を作成します。 (継承元 Object) |
| ToString() |
オブジェクトの文字列形式を返します。 (継承元 Object) |
| UnregisterFromRuntime() |
相互運用ランタイムからこのJava ピアの登録を解除します。 (継承元 Object) |
| Wait() |
現在のスレッドが起動するまで待機します。通常は、 <em>notified</em> または <em>interrupted</em>。 (継承元 Object) |
| Wait(Int64, Int32) |
現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。 (継承元 Object) |
| Wait(Int64) |
現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。 (継承元 Object) |
明示的なインターフェイスの実装
| 名前 | 説明 |
|---|---|
| IJavaPeerable.Disposed() |
このクラスは、DRBG (決定論的ランダム ビット ジェネレーター) によって使用されるパラメーターを指定します。 (継承元 JavaObject) |
| IJavaPeerable.Finalized() |
このクラスは、DRBG (決定論的ランダム ビット ジェネレーター) によって使用されるパラメーターを指定します。 (継承元 JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
このクラスは、DRBG (決定論的ランダム ビット ジェネレーター) によって使用されるパラメーターを指定します。 (継承元 JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
このクラスは、DRBG (決定論的ランダム ビット ジェネレーター) によって使用されるパラメーターを指定します。 (継承元 JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
このクラスは、DRBG (決定論的ランダム ビット ジェネレーター) によって使用されるパラメーターを指定します。 (継承元 JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
このクラスは、DRBG (決定論的ランダム ビット ジェネレーター) によって使用されるパラメーターを指定します。 (継承元 JavaObject) |
拡張メソッド
| 名前 | 説明 |
|---|---|
| GetJniTypeName(IJavaPeerable) |
インスタンス |
| JavaAs<TResult>(IJavaPeerable) |
|
| JavaCast<TResult>(IJavaObject) |
Android ランタイムチェック型変換を実行します。 |
| JavaCast<TResult>(IJavaObject) |
このクラスは、DRBG (決定論的ランダム ビット ジェネレーター) によって使用されるパラメーターを指定します。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
|