Daemotron
Well-Known Member
Ich weiß, der Standard-Ratschlag lautet: Finger weg von Krypto. In dem Fall versuche ich allerdings auch "nur", vorgefertigte Komponenten zu nutzen, um Backup-Dateien vor dem Wegspeichern auf einem potenziell unsicheren System zu verschlüsseln und zu signieren. Ich möchte das ganze nur mit OpenSSL umsetzen, da es nur ein Shell-Skript werden soll (damit fallen NaCl oder Sodium leider aus) und ich möglichst dafür kein Third Party Zeugs (z. B. GnuPG) installieren müssen möchte (Recovery soll aus einem Rettungssystem heraus möglich sein).
Folgendes Vorgehen habe ich mir bei Colin Percival und Daniel Bernstein's NaCl Bibliothek abgeguckt (falls ich das alles richtig verstanden habe):
Vorteil aus meiner Sicht:
Man benötigt immer nur den öffentlichen und privaten RSA Schlüssel zur Backup-Erstellung (verzichtet man auf die Signatur und verlässt sich ausschließlich auf den HMAC, benötigt man sogar nur den öffentlichen Schlüssel für die Backup-Erstellung; der private Schlüssel kann dann schön im Safe bleiben)
Potenzielle Risiken:
Folgendes Vorgehen habe ich mir bei Colin Percival und Daniel Bernstein's NaCl Bibliothek abgeguckt (falls ich das alles richtig verstanden habe):
- Datenstrom komprimieren (ich nutze dazu xz)
- Erzeugen eines Random Schlüssels, eines Random Salts und eines Random IVs plus ein Random HMAC Passwort
- Datenstrom verschlüsseln (in Ermangelung einer Salsa20 Implementierung in OpenSSL würde ich dazu aes265-cbc verwenden, mit dem soeben generierten Schlüssel, Salt & IV)
- Erstellung einer HMAC (in Ermangelung von Salsa20 und Poly1305 mit SHA512)
- Erstellung einer Signatur (in Ermangelung von Curve 25519 mit SHA512 und RSA)
- Verpacken von Schlüsseln, Salt und IV zusammen mit dem HMAC in einer Datei
- Diese Datei mit xz komprimieren
- Das Komprimat mit RSA verschlüsseln
Vorteil aus meiner Sicht:
Man benötigt immer nur den öffentlichen und privaten RSA Schlüssel zur Backup-Erstellung (verzichtet man auf die Signatur und verlässt sich ausschließlich auf den HMAC, benötigt man sogar nur den öffentlichen Schlüssel für die Backup-Erstellung; der private Schlüssel kann dann schön im Safe bleiben)
Potenzielle Risiken:
- Wenn die Schlüsseldatei beschädigt wird, kommt man an das eigentliche Backup nicht mehr ran.
- Jemand könnte die Schlüsseldateien aufmachen (wie wahrscheinlich ist sowas?) und käme dann an alles heran, könnte auch den Inhalt des Backups in bösartiger Weise manipulieren und mit einem veränderten HMAC Integrität vortäuschen... (insb. wenn auf die Signatur verzichtet wird, was aber das Leak-Risiko für den privaten RSA Schlüssel wiederum senkt...)