Sprache

DrbgParameters Klasse

Definition

Diese Klasse gibt die Parameter an, die von einem DRBG (Deterministic Random Bit Generator) verwendet werden.

[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
Vererbung
DrbgParameters
Attribute

Hinweise

Diese Klasse gibt die Parameter an, die von einem DRBG (Deterministic Random Bit Generator) verwendet werden.

Gemäß NIST Special Publication 800-90A Revision 1 basiert die Empfehlung für die Zufallszahlengenerierung mit deterministischen Zufälligen Bit-Generatoren (800-90Ar1), <blockquote> A DRBG basiert auf einem DRBG-Mechanismus wie in dieser Empfehlung angegeben und enthält eine Quelle der Zufallszahl. Ein DRBG-Mechanismus verwendet einen Algorithmus (d. h. einen DRBG-Algorithmus), der eine Abfolge von Bits aus einem Anfangswert erzeugt, der durch einen Seed bestimmt wird, der aus der Ausgabe der Zufallsquelle bestimmt wird." </blockquote>

Die Spezifikation 800-90Ar1 ermöglicht eine Vielzahl von DRBG-Implementierungsoptionen, z. B.: <ul><li> an Entropiequelle, <li> ein DRBG-Mechanismus (z. B. Hash_DRBG), <li> ein DRBG-Algorithmus (z. B. SHA-256 für Hash_DRBG und AES-256 für CTR_DRBG. Bitte beachten Sie, dass es nicht der Algorithmus ist, in SecureRandom#getInstancedem wir einen <em>SecureRandom-Algorithmus</em> unten nennen), <li> optionale Features, einschließlich Vorhersageresistenz und Reseeding-Unterstützung, <li> höchste Sicherheitsstärke. </ul>

Diese Auswahlmöglichkeiten werden in jeder Implementierung festgelegt und werden nicht direkt von der SecureRandom API verwaltet. Überprüfen Sie die Dokumentation Ihres DRBG-Anbieters, um eine geeignete Implementierung für die Situation zu finden.

Andererseits verfügt die Spezifikation 800-90Ar1 über einige konfigurierbare Optionen, z. B.: <ul><li> erforderliche Sicherheitsstärke, <li>, wenn Vorhersageresistenz erforderlich ist, <Li-Personalisierungszeichenfolge> und zusätzliche Eingabe. </ul>

Eine DRBG-Instanz kann mit Parametern aus einem DrbgParameters.Instantiation Objekt und anderen Informationen instanziiert werden (z. B. die Nonce, die nicht von dieser API verwaltet wird). Dies ist dem Instantiate_function definierten NIST SP 800-90Ar1 zugeordnet.

Eine DRBG-Instanz kann mit Parametern aus einem DrbgParameters.Reseed Objekt erneut eingelöst werden. Dies ist dem Reseed_function definierten NIST SP 800-90Ar1 zugeordnet. Das Aufrufen entspricht dem Aufrufen SecureRandom#reseed()SecureRandom#reseed(SecureRandomParameters) mit dem effektiv instanziierten Vorhersagewiderstandsflagge (wie von SecureRandom#getParameters()) ohne zusätzliche Eingabe zurückgegeben.

Eine DRBG-Instanz generiert Daten mit zusätzlichen Parametern aus einem DrbgParameters.NextBytes Objekt. Dies ist dem Generate_function definierten NIST SP 800-90Ar1 zugeordnet. Das Aufrufen entspricht dem Aufrufen SecureRandom#nextBytes(byte[])SecureRandom#nextBytes(byte[], SecureRandomParameters) mit dem effektiv instanziierten Stärke- und Vorhersagewiderstandsflagge (wie zurückgegeben von SecureRandom#getParameters()) ohne zusätzliche Eingabe.

Ein DRBG sollte als Unterklasse von SecureRandomSpi. Es wird empfohlen, dass die Implementierung den 1-arg SecureRandomSpi#SecureRandomSpi(SecureRandomParameters)-Konstruktor enthält, der ein DrbgParameters.Instantiation Argument verwendet. Wenn diese Implementierung auf diese Weise implementiert wird, kann diese Implementierung von jeder Methode SecureRandom.getInstance() ausgewählt werden. Wenn er von einem SecureRandom.getInstance()SecureRandomParameters Parameter ausgewählt wird, wird der Parameter an diesen Konstruktor übergeben. Wenn sie von einem SecureRandom.getInstance() parameter ohne SecureRandomParameters Parameter ausgewählt wird, wird der Konstruktor mit einem null Argument aufgerufen, und die Implementierung sollte eigene Parameter auswählen. Es SecureRandom#getParameters() muss immer ein nicht null effektives DrbgParameters.Instantiation Objekt zurückgeben, das angibt, wie das DRBG tatsächlich instanziiert wird. Ein Aufrufer kann diese Informationen verwenden, um zu bestimmen, ob ein SecureRandom Objekt ein DRBG ist und welche Features unterstützt werden. Beachten Sie, dass der zurückgegebene Wert nicht unbedingt dem objekt entspricht, das DrbgParameters.Instantiation an den SecureRandom.getInstance() Aufruf übergeben wird. Die angeforderte Funktion kann z. B. aber DrbgParameters.Capability#NONE der effektive Wert sein DrbgParameters.Capability#RESEED_ONLY , wenn die Implementierung das Erneute Senden unterstützt. Die Implementierung muss die Methode implementieren, die SecureRandomSpi#engineNextBytes(byte[], SecureRandomParameters) einen DrbgParameters.NextBytes Parameter verwendet. Sofern das Ergebnis seiner SecureRandom#getParameters() DrbgParameters.Instantiation#getCapability()-Funktion nicht vorhanden ist Capability#NONE NONE, muss sie implementieren SecureRandomSpi#engineReseed(SecureRandomParameters) , die einen DrbgParameters.Reseed Parameter akzeptiert.

Wenn eine DRBG-Implementierung hingegen keinen Konstruktor enthält, der ein DrbgParameters.Instantiation Argument aufweist (nicht empfohlen), kann sie nur ohne SecureRandom.getInstance() Parameter SecureRandomParameters ausgewählt werden, wird aber nicht ausgewählt, wenn eine getInstance Methode mit einem SecureRandomParameters Parameter aufgerufen wird. Wenn sie auf diese Weise implementiert wird, muss sie SecureRandom#getParameters() zurückgegeben werden, und sie muss weder noch nullSecureRandomSpi#engineNextBytes(byte[], SecureRandomParameters)SecureRandomSpi#engineReseed(SecureRandomParameters).

Ein DRBG kann sich automatisch erneut aneigen, wenn die Saatgutperiode größer als die durch den DRBG-Mechanismus definierte maximale Samenlebensdauer ist.

Eine DRBG-Implementierung sollte die Serialisierung und Deserialisierung unterstützen, indem die Konfiguration und effektive Parameter beibehalten werden, der interne Zustand darf jedoch nicht serialisiert werden, und das deserialisierte Objekt muss erneut angegeben werden.

Beispiele: <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>

Hinzugefügt in 9.

Java Dokumentation für java.security.DrbgParameters.

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die vom Android Open Source-Projekt erstellt und freigegeben werden und gemäß den in der Creative Commons 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Konstruktoren

Name Beschreibung
DrbgParameters(IntPtr, JniHandleOwnership)

Diese Klasse gibt die Parameter an, die von einem DRBG (Deterministic Random Bit Generator) verwendet werden.

Eigenschaften

Name Beschreibung
Class

Gibt die Laufzeitklasse dieses Werts Objectzurück.

(Geerbt von Object)
Handle

Das Handle für die zugrunde liegende Android-Instanz.

(Geerbt von Object)
JniIdentityHashCode

Ruft den Identitätshashcode ab, der diesem Java Peer von der Interop-Laufzeit zugewiesen ist.

(Geerbt von Object)
JniManagedPeerState

Diese Klasse gibt die Parameter an, die von einem DRBG (Deterministic Random Bit Generator) verwendet werden.

(Geerbt von JavaObject)
JniPeerMembers

Diese Klasse gibt die Parameter an, die von einem DRBG (Deterministic Random Bit Generator) verwendet werden.

PeerReference

Ruft den JNI-Objektverweis für diesen Java Peer ab.

(Geerbt von Object)
ThresholdClass

Diese Klasse gibt die Parameter an, die von einem DRBG (Deterministic Random Bit Generator) verwendet werden.

ThresholdType

Diese Klasse gibt die Parameter an, die von einem DRBG (Deterministic Random Bit Generator) verwendet werden.

Methoden

Name Beschreibung
Clone()

Erstellt und gibt eine Kopie dieses Objekts zurück.

(Geerbt von Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

Diese Klasse gibt die Parameter an, die von einem DRBG (Deterministic Random Bit Generator) verwendet werden.

(Geerbt von JavaObject)
Dispose()

Veröffentlicht die Ressourcen, die von diesem Java Peer gehalten werden.

(Geerbt von Object)
Dispose(Boolean)

Veröffentlicht die Ressourcen, die von diesem Java Peer gehalten werden.

(Geerbt von Object)
DisposeUnlessReferenced()

Diese Klasse gibt die Parameter an, die von einem DRBG (Deterministic Random Bit Generator) verwendet werden.

(Geerbt von JavaObject)
Equals(Object)

Diese Klasse gibt die Parameter an, die von einem DRBG (Deterministic Random Bit Generator) verwendet werden.

(Geerbt von JavaObject)
Equals(Object)

Gibt an, ob ein anderes Objekt "gleich" diesem Objekt ist.

(Geerbt von Object)
GetHashCode()

Gibt einen Hashcodewert für das Objekt zurück.

(Geerbt von Object)
InvokeInstantiation(Int32, DrbgParameters+Capability, Byte[])

Diese Klasse gibt die Parameter an, die von einem DRBG (Deterministic Random Bit Generator) verwendet werden.

InvokeNextBytes(Int32, Boolean, Byte[])

Diese Klasse gibt die Parameter an, die von einem DRBG (Deterministic Random Bit Generator) verwendet werden.

InvokeReseed(Boolean, Byte[])

Diese Klasse gibt die Parameter an, die von einem DRBG (Deterministic Random Bit Generator) verwendet werden.

JavaFinalize()

Wird vom Garbage Collector für ein Objekt aufgerufen, wenn die Garbage Collection bestimmt, dass keine weiteren Verweise auf das Objekt vorhanden sind.

(Geerbt von Object)
Notify()

Aktiviert einen einzelnen Thread, der auf dem Monitor dieses Objekts wartet.

(Geerbt von Object)
NotifyAll()

Aktiviert alle Threads, die auf dem Monitor dieses Objekts warten.

(Geerbt von Object)
SetHandle(IntPtr, JniHandleOwnership)

Legt die Handle-Eigenschaft fest.

(Geerbt von Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

Diese Klasse gibt die Parameter an, die von einem DRBG (Deterministic Random Bit Generator) verwendet werden.

(Geerbt von JavaObject)
ToArray<T>()

Erstellt ein verwaltetes Array aus diesem Java Arraywrapper.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolgendarstellung des Objekts zurück.

(Geerbt von Object)
UnregisterFromRuntime()

Hebt die Registrierung dieses Java Peers aus der Interop-Laufzeit auf.

(Geerbt von Object)
Wait()

Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch em benachrichtigt/em< oder >em<unterbrochen>/em<.><>

(Geerbt von Object)
Wait(Int64, Int32)

Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist.

(Geerbt von Object)
Wait(Int64)

Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

Name Beschreibung
IJavaPeerable.Disposed()

Diese Klasse gibt die Parameter an, die von einem DRBG (Deterministic Random Bit Generator) verwendet werden.

(Geerbt von JavaObject)
IJavaPeerable.Finalized()

Diese Klasse gibt die Parameter an, die von einem DRBG (Deterministic Random Bit Generator) verwendet werden.

(Geerbt von JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

Diese Klasse gibt die Parameter an, die von einem DRBG (Deterministic Random Bit Generator) verwendet werden.

(Geerbt von JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Diese Klasse gibt die Parameter an, die von einem DRBG (Deterministic Random Bit Generator) verwendet werden.

(Geerbt von JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Diese Klasse gibt die Parameter an, die von einem DRBG (Deterministic Random Bit Generator) verwendet werden.

(Geerbt von JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

Diese Klasse gibt die Parameter an, die von einem DRBG (Deterministic Random Bit Generator) verwendet werden.

(Geerbt von JavaObject)

Erweiterungsmethoden

Name Beschreibung
GetJniTypeName(IJavaPeerable)

Ruft den JNI-Namen des Typs der Instanz selfab.

JavaAs<TResult>(IJavaPeerable)

Versuchen Sie, die Eingabe selfzu TResult erzwingen, und überprüfen Sie, ob die Koersion auf der Java Seite gültig ist.

JavaCast<TResult>(IJavaObject)

Führt eine android-laufzeitgecheckte Typkonvertierung aus.

JavaCast<TResult>(IJavaObject)

Diese Klasse gibt die Parameter an, die von einem DRBG (Deterministic Random Bit Generator) verwendet werden.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Versuchen Sie, die Eingabe selfzu TResult erzwingen, und überprüfen Sie, ob die Koersion auf der Java Seite gültig ist.

Gilt für: