Gibt es eine JavaScript-Implementierung der Verschlüsselung einschließlich plausible Abstreitbarkeit?
Ich möchte etwas mit den hier beschriebenen Funktionen: Ссылка
Deniable-Verschlüsselung ermöglicht es dem Absender einer verschlüsselten Nachricht, das Senden dieser Nachricht zu verweigern. Dies erfordert eine vertrauenswürdige dritte Partei. Ein mögliches Szenario funktioniert folgendermaßen:
Es gibt viele Javascript-Bibliotheken, die kryptografische Primitive bieten, aber ich habe noch nie von solchen gehört, die eine plausible Deniierbarkeit beinhalten.
Sie könnten ein Verschlüsselungsschema implementieren, das dem von TrueCrypt ähnelt. Es ist auf nur 2 Sätze verschlüsselter Daten beschränkt: die Lockvogel-Daten und wirklich geheime Daten. Aber das Design ist ziemlich einfach. Wenn Sie also nicht mehr als zwei Datensätze benötigen, sollten Sie es tun. Sie können es ändern, um mehr als 2 Sets zu erlauben, aber es kann nicht 'dynamisch' sein.
Es wird ausführlich auf TrueCrypt-Dokumentation erläutert, aber das Grundprinzip ist das verschlüsselte Daten enthalten Header mit fester Breite für jeden Datensatz. Header enthält Informationen über seinen Datensatz. Im grundlegendsten Szenario würde dies nur den Beginn des Datensatzes im gesamten verschlüsselten Block, die Länge dieses Datensatzes und einen gewissen Kanarienwert zur Überprüfung, ob der Header erfolgreich entschlüsselt wurde, kompensieren. Wenn der Benutzer ein Passwort angibt, versucht das System, den ersten Header zu entschlüsseln. Wenn es fehlschlägt, versucht es mit dem nächsten Header, bis es erfolgreich ist oder keine Header übrig sind. Wenn es erfolgreich ist, entschlüsselt es Bytes, die in der Kopfzeile angegeben sind.
Dieses Schema wurde für die Dateisystemverschlüsselung entwickelt, es hätte also einen großen Fehler, wenn es in Ihrem System verwendet wird. Wenn ein Angreifer Sie zwingt, den Schlüssel zu den Lockvogeldaten zu enthüllen, wird er fragen, warum seine Größe kleiner ist als die Größe des Ganzen verschlüsselter Block.
Interessante Frage. Es gibt Javascript-Verschlüsselungsbibliotheken hier und hier , aber Ihr Anwendungsfall erfordert nicht, dass Sie dies in Javascript implementieren, und Sie wären wahrscheinlich besser dran, eine andere Sprache zu verwenden.
Warum? Deniable Encryption ist eine Art von Sicherheit, die Sicherheit per definitionem erfordert. Daher ist es wahrscheinlich nicht die beste Art, sie zu implementieren (jeder und jeder kann Ihre Implementierungsdetails sehen) ). Schreiben Sie es in eine starke, rechenstarke Sprache und sperren Sie es irgendwo auf einem Server.
Tags und Links javascript