Zum Hauptinhalt springen

A.2. PBKDF2

A.2. PBKDF2

Der Object Identifier id-PBKDF2 identifiziert die PBKDF2-Schlüsselableitungsfunktion (Abschnitt 5.2).

id-PBKDF2 OBJECT IDENTIFIER ::= {pkcs-5 12}

Das Parameterfeld, das mit dieser OID in einem AlgorithmIdentifier assoziiert ist, MUSS den Typ PBKDF2-params haben:

PBKDF2-params ::= SEQUENCE {
salt CHOICE {
specified OCTET STRING,
otherSource AlgorithmIdentifier {{PBKDF2-SaltSources}}
},
iterationCount INTEGER (1..MAX),
keyLength INTEGER (1..MAX) OPTIONAL,
prf AlgorithmIdentifier {{PBKDF2-PRFs}} DEFAULT
algid-hmacWithSHA1 }

Die Felder vom Typ PBKDF2-params haben die folgenden Bedeutungen:

  • salt spezifiziert den Salt-Wert oder die Quelle des Salt-Werts. Es MUSS entweder eine Oktettzeichenkette oder ein Algorithm-ID mit einer OID in der Menge PBKDF2-SaltSources sein, die für zukünftige Versionen von PKCS #5 reserviert ist.

    Der Salt-Source-Ansatz ist dazu gedacht anzuzeigen, wie der Salt-Wert als Funktion von Parametern in der Algorithm-ID, Anwendungsdaten oder beidem generiert werden soll. Zum Beispiel kann er anzeigen, dass der Salt-Wert aus der Kodierung einer Struktur erzeugt wird, die detaillierte Informationen über den abgeleiteten Schlüssel spezifiziert, wie in Abschnitt 4.1 vorgeschlagen. Einige der Informationen können an anderer Stelle getragen werden, z.B. in der Encryption Algorithm ID. Solche Einrichtungen werden jedoch auf eine zukünftige Version von PKCS #5 verschoben.

    In dieser Version kann eine Anwendung die in Abschnitt 4.1 erwähnten Vorteile erreichen, indem sie eine bestimmte Interpretation des Salt-Werts in der spezifizierten Alternative wählt.

PBKDF2-SaltSources ALGORITHM-IDENTIFIER ::= { ... }
  • iterationCount spezifiziert den Iterationszähler. Der maximal zulässige Iterationszähler hängt von der Implementierung ab. Es wird erwartet, dass Implementierungsprofile die Grenzen weiter einschränken können.

  • keyLength, ein optionales Feld, ist die Länge in Oktetten des abgeleiteten Schlüssels. Die maximal zulässige Schlüssellänge hängt von der Implementierung ab; es wird erwartet, dass Implementierungsprofile die Grenzen weiter einschränken können. Das Feld wird nur der Bequemlichkeit halber bereitgestellt; die Schlüssellänge ist kryptographisch nicht geschützt. Wenn Bedenken hinsichtlich Interaktionen zwischen Operationen mit verschiedenen Schlüssellängen für ein gegebenes Salt bestehen (siehe Abschnitt 4.1), sollte das Salt zwischen den verschiedenen Schlüssellängen unterscheiden.

  • prf identifiziert die zugrunde liegende Pseudozufallsfunktion. Es MUSS eine Algorithm-ID mit einer OID in der Menge PBKDF2-PRFs sein, die für diese Version von PKCS #5 aus id-hmacWithSHA1 (siehe Anhang B.1.1) und allen anderen von der Anwendung definierten OIDs bestehen MUSS.

PBKDF2-PRFs ALGORITHM-IDENTIFIER ::= {
{NULL IDENTIFIED BY id-hmacWithSHA1},
{NULL IDENTIFIED BY id-hmacWithSHA224},
{NULL IDENTIFIED BY id-hmacWithSHA256},
{NULL IDENTIFIED BY id-hmacWithSHA384},
{NULL IDENTIFIED BY id-hmacWithSHA512},
{NULL IDENTIFIED BY id-hmacWithSHA512-224},
{NULL IDENTIFIED BY id-hmacWithSHA512-256},
...
}

Die Standard-Pseudozufallsfunktion ist HMAC-SHA-1:

algid-hmacWithSHA1 AlgorithmIdentifier {{PBKDF2-PRFs}} ::=
{algorithm id-hmacWithSHA1, parameters NULL : NULL}