PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Daten mit Schlüsseldatei in der shell verschlüsseln



yankeeCGN
13.03.10, 11:17
Hi @ll,

ich suche gerade eine simple Methode Daten mit Hilfe einer Schlüsseldatei zu verschlüsseln. Das stelle ich mir ungefähr so vor:

echo "verschluessel mich" | encrypt -keyFile my.key > encryptet.txt
Und natürlich brauche ich noch einen Weg diese Schlüsseldatei zu generieren.

(Google beschreibt mir auf hunderten Blogs, wie ich dies mit gpg tue in dem ich einen Benutzer anlege, Schlüsseldatei hochlade oder wie ich mit openssl eine Datei mit Passwort verschlüssele oder gleich meine ganze Festplatte verschlüssele, nur leider nirgends etwas dermaßen simples, wie das, was ich brauche)

Das ganze soll mit irgend einem starken Verschlüsselungsverfahren laufen und möglichst nur mit Software, die man erwarten kann auf den meisten Linuxsystemen (oder zumindest in den meisten Standardrepositories der großen Distributionen) zu finden.

derRichard
13.03.10, 12:11
hi!

mit gpg geht das ohne probeme.
auch ohne zusätzliche user.

zb:


echo "foo" | gpg --symmetric > foo.txt


hth,
//richard

yankeeCGN
13.03.10, 12:52
mit gpg geht das ohne probeme.
auch ohne zusätzliche user.

zb:


echo "foo" | gpg --symmetric > foo.txt

Bei der Methode fragt mich gpg allerdings nach einem Passwort. Ich würde allerdings gerne, dass 1. der Schlüssel nicht einfach ein 8-stelliges Passwort ist, sondern ein langes, großes, komplexes und zufälliges Etwas, was in einer Datei gespeichert ist und 2. will ich den Aufruf später aus einem Skript heraus machen und damit sollte das Programm möglichst nicht interaktiv sein.

derRichard
13.03.10, 12:57
du solltest wirklich die manpage vpn gpg lesen.
das geht alles.

//richard

yankeeCGN
13.03.10, 13:38
du solltest wirklich die manpage vpn gpg lesen.
das geht alles.
Nun gut, ich habe die manpage von gpg nicht komplett gelesen, die ist schließlich ganz schön lang. Aber ich habe schon gelesen und gezielt gesucht. Ich bin da bei openssl zu dem Ergebnis gekommen, dass dies der Sache am nächsten kommt:

pwgen 100 1 > enc.key
echo "encrypt me" | openssl enc -salt -aes-256-cbc -pass file:enc.key | openssl enc -d -aes-256-cbc -pass file:enc.key
In der manpage von gpg habe ich bei den "key related options" leider garnichts gefunden. Ich habe dann noch die "Doing things one usually don’t want to do."-Category zufällig gefunden, so dass ich jetzt weiß, dass man bei gpg mit --passphrase-file auch eine Datei mit Passwort verwenden kann und ich habe auch geschafft mit der option und symmetric daten zu verschlüsseln (Nur entschlüsseln habe ich noch nicht geschafft).

Theoretisch kann ich damit natürlich glücklich sein und fertig. Allerdings frage ich mich dann wie das passwort optimalerweise aussehen soll. `pwgen -s -y 999999 1`? Irgendwann macht es wohl keinen Sinn mehr das Passwort länger zu machen. Leider bin ich nicht so der Kryptologieprofi, aber ich würde jetzt intuitiv sagen, dass es am besten wäre den Schlüssel sich nicht aus einem Passwort herleiten zu lassen, sondern direkt eine binäre Schlüsseldatei zu verwenden. Ich lasse mich aber auch gerne eines besseren belehren.

oziris
14.03.10, 00:12
Mit openssl habe ich das zwar noch nicht gemacht, aber für AES kann man i.d.R. Daten aus /dev/random oder /dev/urandom mit dd in eine Datei schreiben und als Schlüssel benutzen.
urandom ist wohl schneller aber unsicherer. random sollte bei Deiner geringen Menge an nötigen Daten, aber kein Problem sein. Sieh "man 4 random".

PS: Wenn Du den Schlüssel verschlampst hast du geloosed und bedenke, dass Du den Schlüssel oft nichtmal mit shred richtig von einem modernen Dateisystem entfernen kannst usw..

yankeeCGN
14.03.10, 07:56
Mit openssl habe ich das zwar noch nicht gemacht, aber für AES kann man i.d.R. Daten aus /dev/random oder /dev/urandom mit dd in eine Datei schreiben und als Schlüssel benutzen.
In der manpage von openssl steht, dass von der Datei mit dem Passwort nur die erste Zeile eingelesen wird. Wenn die Daten komplett zufällig wären, könnten auch Zeilenumbrüche vorkommen, also kann das eigentlich schonmal nicht gehen.

PS: Wenn Du den Schlüssel verschlampst hast du geloosed
Jo, ich glaube das ist Sinn der Sache :-).

und bedenke, dass Du den Schlüssel oft nichtmal mit shred richtig von einem modernen Dateisystem entfernen kannst usw.. danke für den Hinweis. In meinem Anwendungsfall (Daten auf einem entfernten Dateisystem dem ich nicht voll vertraue einlagern) ist dies jedoch egal.

derRichard
14.03.10, 08:02
In der manpage von openssl steht, dass von der Datei mit dem Passwort nur die erste Zeile eingelesen wird. Wenn die Daten komplett zufällig wären, könnten auch Zeilenumbrüche vorkommen, also kann das eigentlich schonmal nicht gehen.


du kannst die daten vorher ja codieren.
zb:

dd if=/dev/urandom count=512 bs=1 2>/dev/null | uuencode -m -|tail -n 3|head -1


hth,
//richard

oziris
14.03.10, 11:36
du kannst die daten vorher ja codieren.
... aber dann muss man ein Verfahren nehmen, dass möglichst zufällige Daten übrig lässt. Das von Dir gewählte Beispiel tut das ja nicht, weil nur druckbare Zeichen übrig bleiben und es kommen auch mehrere Zeilen mit fester länge raus, die müsste man erst wieder zu einer zusammenführen, sonst ist es relativ kurz.
Ich würde erstmal versuchen mit "tr" die Zeilenumrüche zu entfernen, dann bleibt ein möglichst breites Spektrum an Daten erhalten.
dd if=/dev/urandom count=1 bs=1024 |tr -d '\n' >about_1k_random_data_fileIch hoffe, dass openssh das so verwenden kann.