2012-05-15 2 views

Antwort

6

Derzeit jede PrivateKey und SecretKey Eintrag in einem Schlüsselspeicher JCEKS verschlüsselt ist mit 3-Key-Triple-DES im CBC-Modus mit PKCS # 5 padding. Dies hat eine effektive kryptographische Stärke von 112 Bits, obwohl der Schlüssel 168 Bits plus 24 Paritätsbits für insgesamt 192 Bits ist.

Dieser Schlüssel (und der Initialisierungsvektor) werden von einem Kennwort mithilfe eines proprietären MD5-basierten Algorithmus abgeleitet. Normalerweise würde das Ableiten des Initialisierungsvektors von dem Schlüssel den Zweck besiegen, aber jeder Eintrag hat auch ein eindeutiges Salz für die Schlüsselableitung. Dies bedeutet, dass der abgeleitete Schlüssel und der Initialisierungsvektor für jeden Eintrag eindeutig sind.

Sie können the use of the cipher und the cipher itself im Quellcode studieren.

+0

Kennen Sie den Algorithmus verwendet, um den Schlüssel und iv aus dem Passwort abzuleiten ? Der Code zeigt nur Kommentare, die mehrdeutig sind, "Verkette Passwort mit jeder der Hälften" - ist das Passwort + die Hälfte oder die Hälfte + Passwort? Ich kann diesen Algorithmus nicht neu erstellen, indem ich alle möglichen Kombinationen basierend auf den Kommentaren ausprobiere. –

+0

Ich kann @erickson auf dem obigen Kommentar nicht scheinen ^^^ –

+0

@JimFlood [Hier ist die Schlüsselableitung.] (Http://www.docjar.com/html/api/com/sun/crypto/provider/ PBECipherCore.java.html # 261) Es ist die Hälfte + Passwort; das Salz ist 8 Bytes, also ist die Hälfte 4 Bytes. – erickson

1

JCEKS ist ein weiteres proprietäres Keystore-Format, das vom Anbieter "SunJCE" im JCE (Java Cryptography Extension) erhältlich ist.

Wenn Sie das JCE nicht verwenden, verwenden Sie JKS-Keystore. Wenn Sie jedoch den JCE installiert haben und die JCE-Funktionalität verwenden, ist der JCEKS-Schlüsselspeicher die beste Wahl. Dieser Schlüsselspeicher bietet einen viel stärkeren Schutz für gespeicherte private Schlüssel durch Verwendung der Triple-DES-Verschlüsselung.

Verwandte Themen