Hallo Oliver, On Sat, Dec 04, 2004 at 12:49:01PM +0100, Tim Oliver Wagner wrote:
manche sensible Daten speichere auf meiner Platte im ASCII-Format und verschlüssle dieses File dann mit meinem gpg. Das orginal-File lösche ich dann natürlich!
Ab und an muss ich natürlich an diese Informationen aus diesem gpg-Verschlüsselten File. Dazu entschlüssle ich die Datei in eine ASCII-Datei und diese editiere ich. Anschliessend verschlüssle ich wieder die editierte Datei und lösche das Plain-file.
Während ich auf die entschlüsselte Datei zugreife liegt diese auf meiner Platte ungeschützt herum.
Dieses von mir hier gezeigte Vorgehen macht mir jedoch sorgen. Lieber wäre mir ein kleines Programm (vielleicht geht es mit einem gewöhnlichen Texteditor???) der beim öffnen der verschlüsselten Datei das Passwort abfragt und im Hauptspeicher die Datei entschlüsselt. Hier im Hauptspeicher sollte es möglich sein den Inhalt zu ändern. Anschliessend sollte es möglich sein diese Änderungen verschlüsselt auf der Platte zu hinterlegen (also die Datei zu ersetzen).
Ohne Garantie etc. unten mal ein Skript, dass dir beim Aufruf mit dem richtigen Passwort (> 20 Zeichen (z.B. $prog "`cat /etc/fstab`")) ein Dateisystem in einer Ramdisk anlegt und dort deine GPG Daten entpackt. Du musst jetzt beim booten oder beim Kernelbauen noch angeben, wie groß deine Ramdisk sein soll. Außerdem musst du die Variablen anpassen. Dort vor allem USER und MD5SUM über echo "tolles langes ... passwort" | md5sum bekommst du den String. ... an die History denken ... Die Daten auf der Ramdisk sind solange verfügbar, bis du das xterm schließt. Danach wird alles getared und mit gpg verschlüsselt. Mountpoints und Ramdisk werden gelöscht. Statt xterm kannst du bei nur einer Datei natürlich auch gleich den vim starten xterm -e vim $DATEINAME. Wenn du die bash als Shell nutzt solltest du noch ein export HISTIGNORE=$PROGRAMMNAME machen. Viel Spass damit. Wer Fehler findet bitte Lösung hier posten. Und wer noch Zeit und Lust hat ordentliches Errorhandling zu implementieren bitte auch ;) Greetings Daniel <script> #!/bin/bash if [ "$#" -ne "1" ] then echo "usage: $0 PASSWD" exit fi if [ x"$UID" != x"0" ] then sudo $0 "$1" exit fi # Variablen RAM0="/dev/ram0" RAM1="/dev/ram1" MPOINT0="/mnt/rd0" MPOINT1="/mnt/rd1" USER="deinbenutzername" GPGDATEI="/data/disk" DATEITAR="$MPOINT1/alles.tar" MD5SUM="11111111111111111111111111111111 -" # Internet aus... ifconfig eth0 down echo $1 | md5sum if test x"$MD5SUM" != x"`echo $1 | md5sum`" then echo "falsches Passwort" exit fi if test -e "$MPOINT0" then echo "Fehler $MPOINT0 existiert" exit else mkdir -p "$MPOINT0" fi if test -e "$MPOINT1" then echo "Fehler $MPOINT1 existiert" exit else mkdir -p "$MPOINT1" fi # Dateisystem anlegen /sbin/mkfs.minix "$RAM0" /sbin/mkfs.minix "$RAM1" # Einhängen mount -o uid="$USER" "$RAM0" "$MPOINT0" mount -o uid="$USER" "$RAM1" "$MPOINT1" chown "$USER" "$MPOINT0" "$MPOINT1" DATEIGPG="$GPGDATEI.0" # Dateisystem mit Inhalt füllen cd $MPOINT0 echo "$1" | gpg --batch --quiet --no-secmem-warning --passphrase-fd\ 0 --decrypt "$DATEIGPG" | tar xf - # Shell öffnen sudo -u "$USER" xterm # 3 Backups anlegen if test -e "$GPGDATEI.2" then mv "$GPGDATEI.2" "$DATEIGPG.3" fi if test -e "$GPGDATEI.1" then mv "$GPGDATEI.1" "$DATEIGPG.2" fi if test -e "$GPGDATEI.0" then mv "$GPGDATEI.0" "$DATEIGPG.1" fi # Inhalt zurücksichern tar -cvf "$DATEITAR" ./ echo "$1" | gpg --quiet --no-tty --passphrase-fd 0 --pgp8 --batch\ --charset utf-8 --force-mdc --no-secmem-warning --symmetric\ --output "$DATEIGPG" "$DATEITAR" # Um Aushängen zu können und als Sicherheit für das folgende rmdir cd /tmp # Aushängen umount "$MPOINT0" umount "$MPOINT1" # Mountpoint löschen rmdir "$MPOINT0" rmdir "$MPOINT1" # Löschen # evtl. shred benutzen?! dd if=/dev/zero of="$RAM0" bs=40960k count=1 > /dev/null 2>&1 dd if=/dev/zero of="$RAM1" bs=40960k count=1 > /dev/null 2>&1 # Internet an ifconfig eth0 up # route add default gw 192.XX.X.XXX </script> -- nur weil ihr paranoid seid heisst das noch lange nicht, dass sie nicht hinter euch her sind ;)