Syncscript.sh

From Elch-Wiki
Jump to navigationJump to search

Grundidee

Seit Version 1.5 beherrscht Encfs die sog. Reverse-Encryption. Dabei wird ein Klartext-Verzeichniss als Chiffrat gemountet (normal wäre ja umgekehrt: Die Daten liegen als Chiffrat auf der Platte und werden dann zum Klartext gemountet). Mit dieser Reverse-Encryption lässt sich folgendes erreichen:

  • Auf dem Quell-System werden die Klartext-Verzeichnisse mittels Reverse-Encryption in ein temporäres Verzeichnis gemountet
  • Das temporäre Verzeichnis wird per rsync auf das Ziel-System synchronisiert
  • Auf dem Ziel-System muss zu keiner Zeit der Verschlüsselungs-Schlüssel vorliegen!

Auf diese Art kann die grösstmögliche "plausable deniability" erreicht werden: Der Eigner des Ziel-Systems kann nicht wissen, was für Daten abgelegt werden. Er kann auch den entsprechenden Verschlüsselungs-Schlüssel weder mitsniffen noch sonst wie erhalten.


In- und Exclusions

Knifflig war die Umsetzung von In- und Exclusions: Damit wie bei rsync üblich mit include- und exclude-files verwendet werden können, muss syncshript.sh die verschlüsselten Namen der In- und Excluded Files und Directories ermitteln. Dies wird durch ein temporär erzeugtes Encfs-Volume erreicht. Dieses wird kurz erzeugt, mittels der In- und Exclude-Files werden die verschlüsselten Namen darin erzeugt und diese dann für die effektiven In- und Exclude-Files für den rsync verwendet.


Implementierung

Hier ein paar Details zur Implementierung auf fish-serv:

  • syncscript.sh und die dazugehörigen Dateien liegen im Home von root und werden als root ausgeführt
  • Die nicht-sensitiven Bereiche des Offsite-Backup (wwwrun, mp3) werden unverschlüsselt übertragen und gespeichert.
  • Das Script syncall.sh synct zuerst wwwrun, dann mp3 und schliesslich home mittels syncscript.sh
  • Damit das temporäre Ecnfs-Volume angelegt werden kann, braucht es ein encfsctl mit einem Patch. Der Patch sorgt dafür, dass man das Passwort für das Encfs über einen File-Handle zur Verfügung stellen kann (ohne Patch geht nur Eingabe über Tastatur). Da wir die Sourcen von Encfs auf fish-serv nicht kompilieren konnten, haben wir die nötigen Binaries (und versch. dazugehörige 32-bittige Libraries) von marcos.dyndns.org einfach kopiert.
  • Ebenso kopiert wurde /usr/bin/filetemp da dies offenbar bei Suse nicht dabei ist.

Weiteres zum Handling des Offsite Backup

  • Verschlüsseltes volume manuell auf Efan's System mounten: encfs ~/backupdisk/new_enc/LxjIsYEwDQROhmjFYh1REj9b/ ~/clear/
  • unmount: fusermount -u clear
  • Grosse Files finden: find . -type f -size +500000k -ls