Verfügt KeePass über einen permanenten inneren Hauptschlüssel, um Daten zu verschlüsseln?

417
Cryptor

Verfügt KeePass über einen permanenten inneren Schlüssel zum Verschlüsseln von Daten? Oder der Schlüssel für die Verschlüsselung ist ein Passwort (und eine Schlüsseldatei)? Auf einigen Websites habe ich die Diskussion über die Möglichkeiten, KeePass-Basis zu hacken, überprüft. Eine der Annahmen bestand darin, dass es zwei Möglichkeiten gibt: eine, um die Passphrase zu brutieren,  und die andere war dabei, den verschlüsselten Hauptschlüssel zu brutieren  . Gibt es wirklich einen permanenten inneren Hauptschlüssel für die Datenverschlüsselung?

-1
Es ist Open Source, sodass jeder, der sich Sorgen macht, den Quellcode lesen kann. Wenn der Quellcode einen Hauptschlüssel enthält, ist er öffentlich und macht das Ganze unbrauchbar. Aganju vor 8 Jahren 2
Ich meine den Hauptschlüssel, der einmalig bei der Erstellung der Kennwortbasis generiert werden kann und mit dem Benutzerpasswort (und der Schlüsseldatei) verschlüsselt wird. Cryptor vor 8 Jahren 0
Das passiert standardmäßig ... Ramhound vor 8 Jahren 0
Ich verstehe nicht ... Meinen Sie, dass der Hauptschlüssel generiert wird, wenn die Kennwortbasis erstellt wird? Gibt es eine Möglichkeit, den Hauptschlüssel von KeePass zu ändern und die Basis erneut zu verschlüsseln, wenn das Benutzerkennwort geändert wird? Stellen Sie sich die Situation vor, wenn jemand das Kennwort herausfindet und den Hauptschlüssel zurückhält. Aber der Basisbesitzer weiß nichts davon und ändert die Kennwortbasis einfach einmal in einem bestimmten Zeitraum ... Die Dinge sind dann nicht gut ... Cryptor vor 8 Jahren 0

1 Antwort auf die Frage

2
Cryptor

Nach dem Lesen dieses Artikels scheinen einige zufällige Bytes wirklich generiert worden zu sein, jedoch nur mit dem Ziel, den vollständigen 256-Bit-Schlüssel zu vervollständigen:

Um den 256-Bit-Schlüssel für die Blockchiffren zu generieren, wird der Secure-Hash-Algorithmus SHA-256 verwendet. Dieser Algorithmus komprimiert den vom Benutzer bereitgestellten Benutzerschlüssel (bestehend aus Kennwort und / oder Schlüsseldatei) auf einen Schlüssel mit fester Größe von 256 Bit. Diese Transformation ist einseitig, dh es ist rechnerisch nicht möglich, die Hash-Funktion zu invertieren oder eine zweite Nachricht zu finden, die zu demselben Hash komprimiert wird.

Der kürzlich entdeckte Angriff auf SHA-1 [2] hat keinen Einfluss auf die Sicherheit von SHA-256. SHA-256 gilt nach wie vor als sehr sicher [3].

Schlüsselableitung:

Wenn nur ein Kennwort verwendet wird (dh keine Schlüsseldatei), werden das Kennwort und ein zufälliges Salt von 128 Bit mit SHA-256 zum endgültigen Schlüssel gehasht (beachten Sie jedoch, dass einige Vorverarbeitungen vorgenommen werden: Schutz vor Wörterbuchangriffen). Das zufällige Salt verhindert Angriffe, die auf vorberechneten Hashwerten basieren.

Wenn Sie sowohl das Kennwort als auch die Schlüsseldatei verwenden, wird der endgültige Schlüssel wie folgt abgeleitet: SHA-256 (SHA-256 (Kennwort), Inhalt der Schlüsseldatei), dh der Hash des Hauptkennworts wird mit den Schlüsseldateibytes und dem resultierenden Byte verkettet String wird erneut mit SHA-256 gehasht. Wenn die Schlüsseldatei nicht genau 32 Byte (256 Bit) enthält, werden sie ebenfalls mit SHA-256 zu einem 256-Bit-Schlüssel gehasht. Die obige Formel ändert sich dann zu: SHA-256 (SHA-256 (Kennwort), SHA-256 (Schlüsseldatei)).

Ich komme daher zu dem Schluss, dass es keinen inneren Hauptschlüssel gibt. Wenn das Benutzerkennwort (und die Schlüsseldatei) geändert wird, wird die Kennwortbasis mit einem neuen Schlüssel erneut verschlüsselt.