Javascript-Implementierung der Verschlüsselung einschließlich plausiblen Abstreitbarkeit

9

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:

  1. Alice ist die Ehefrau von Bob, der vermutet, dass seine Frau Ehebruch begangen hat. Sie möchte mit ihrem heimlichen Liebhaber Carl kommunizieren. Sie erschafft zwei Schlüssel, von denen der eine geheim gehalten werden soll und der andere geopfert werden soll. Sie übergibt den geheimen Schlüssel (oder beide) an Carl.
  2. Alice konstruiert eine harmlose Nachricht M1 für Carl (die Bob im Falle einer Entdeckung enthüllte) und einen belastenden Liebesbrief M2 an Carl. Sie konstruiert einen Chiffre-Text C aus beiden Nachrichten M1, M2 und sendet ihn an Carl.
  3. Carl benutzt seinen Schlüssel um M2 zu entschlüsseln (und möglicherweise M1, um auch die falsche Nachricht zu lesen).
  4. Bob erfährt von der E-Mail an Carl, wird verdächtig und zwingt Alice, die Nachricht zu entschlüsseln.
  5. Alice benutzt den Opferschlüssel und enthüllt die harmlose Nachricht M1 an Bob. Da Bob den anderen Schlüssel nicht kennt, muss er annehmen, dass es keine andere Nachricht M2 gibt.
Billy Moon 11.09.2012, 18:38
quelle

2 Antworten

0

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.

    
Norill Tempest 27.04.2014 18:08
quelle
-1

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.

    
John Wu 24.09.2013 00:18
quelle

Tags und Links