2 Stimmen

lua aes-verschlüsselung

Ich habe vor einiger Zeit eine "lua aes"-Lösung im Internet gefunden. Und haben einige Bedenken über seine Sicherheit.

Sie besagt Folgendes:

-- Nicht für echte Verschlüsselung verwenden, da das Passwort beim Verschlüsseln leicht einsehbar ist.

Das steht in dem Skript "Dateiverschlüsselungstest".

Meine Fragen sind:

Warum ist das so, und worin besteht der Unterschied zum Verschlüsseln einer Zeichenkette und deren Speicherung in einer Datei?

Wie kann sie während der Verschlüsselung sichtbar sein? Ist sie auch nach der Verschlüsselung einsehbar?

Grundsätzlich: Ist die Verwendung sicher oder nicht?

Kann jemand, der es benutzt hat, dies bestätigen? Ich habe den ursprünglichen Entwickler angeschrieben, aber die E-Mail Adresse war ungültig.

Sollte ich es überhaupt verwenden?

7voto

Peter O. Punkte 30542

Ich nehme an, dass diese Empfehlung aus zwei Gründen ausgesprochen wurde:

  1. Strings sind in Lua unveränderlich, es gibt also keine Möglichkeit, einen String mit anderen Daten zu überschreiben überschreiben, sobald sie erstellt wurde.
  2. In Lua werden Objekte garbage collected. Der Garbage Collector läuft nur an bestimmten Stellen im Programm und die Anwendung hat keine Möglichkeit festzustellen, wann der Garbage Collector ausgeführt wird, nachdem es keine Verweise mehr auf das Objekt gibt. Bis dahin verbleibt die Kennwortzeichenkette im Speicher bei Punkt 1.

Siehe den Fall von Java, der ähnlich wie bei Lua ist:

Warum wird char[] gegenüber String für Kennwörter bevorzugt?

Wie Sie dort sehen können, ist die Verwendung von char Arrays anstelle von Strings ist ein besserer Weg, um Passwörter zu speichern, da Arrays veränderbar sind und auf Null initialisiert werden können, wenn sie fertig sind.

Das nächstliegende Lua-Äquivalent zu einer char array ist eine Tabelle, die mit Zahlen gefüllt ist. Hier wird das Kennwort als Tabelle und nicht als Zeichenfolge gespeichert, wobei jedes Element der Tabelle aus der ganzzahligen Darstellung jedes Zeichens besteht. Zum Beispiel, "pass" wird {0x70,0x61,0x73,0x73} . Nachdem die Tabelle, die das Kennwort enthält, zum Ver- oder Entschlüsseln verwendet wurde, wird sie mit Nullen gefüllt, bevor sie für das Programm unerreichbar wird und schließlich in den Müll wandert.


Nach Ihrem Kommentar habe ich das vielleicht falsch verstanden. Vielleicht speichert der "Dateiverschlüsselungstest" das Kennwort im Klartext zusammen mit der verschlüsselten Datei, so dass jeder, der Zugriff auf die Datei hat, auch ein Angreifer, die Möglichkeit hat, sie auf triviale Weise zu entschlüsseln. Die oben genannten Punkte gelten jedoch weiterhin. Dies ist jedoch nur eine Vermutung; ich kann nicht genau wissen, was Sie meinen, wenn Sie nicht einen Link zu der von Ihnen erwähnten Verschlüsselungsbibliothek angeben.


Ich habe mir die AES-Bibliothek angesehen, und die Sorge, dass das Kennwort "leicht einsehbar" ist, kommt daher, dass der Benutzer das Kennwort im Klartext über die Befehlszeile oder das Terminal eingibt, um das Lua-Programm zu starten, obwohl die Ausgabe des Programms nur verschlüsselten Text enthält. Eine etwas sicherere Methode, das Kennwort zu übermitteln, wäre, die Eingabe nicht anzuzeigen (wie es in sudo ) oder die Eingabe mit Punkten oder Sternen zu maskieren (wie es auf vielen Webseiten der Fall ist).

Entweder das oder die oben genannten Punkte sind vielleicht die einzige logische Erklärung.

1voto

Michal Kottman Punkte 15817

Sie können auch alternative Methoden ausprobieren, wie LuaCrypto das eine Anbindung an OpenSSL ist und Daten mit dem AES-Standard verschlüsseln kann.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X