Vorstellung
Hallo Forum,
ich möchte Euch von meinem kleinen Projekt berichten, mit dem Private Keys sowie beliebige Passwörter sicher aufbewahrt werden können.
Die Idee dabei ist, dass das Geheimnis in zwei Schlüssel aufgeteilt wird, welche örtlich getrennt aufbewahrt werden. Dies verhindert, dass ein Angreifer durch Diebstahl eines der beiden Schlüssel Zugriff auf das Geheimnis erhält.
Mit einem zweite Schlüsselpaar wird sichergestellt, dass auch nach dem Verlust eines Schlüssels das Geheimnis wieder hergestellt werden kann. Also gibt es insgesamt vier örtlich getrennte Schlüssel.
Beispiel:
Ich verschlüssele ein Geheimnis. Dabei werden zwei Schlüssel erzeugt
echo "Hund" | apia encode MeinLiebslingstier
1;1;MeinLiebslingstier;q3THT1E=;49407;7393d;9f3d3
1;2;MeinLiebslingstier;4wGpK1s=;7393d;49407;9f3d3
Bedeutung:
Protokollversion;Schlüssel-Teil;Beschreibung des Geheimnis;verschlüsselter Teil Base64 encoded;sha256-Teil des aktuellen Schlüssels;sha256-Teil des anderen Schlüssels;sha256-Teil beider Schlüsselteile = Schlüsselpaar-ID
Zum Entschlüsseln benötige ich beide Schlüssel:
(echo "1;1;MeinLiebslingstier;q3THT1E=;49407;7393d;9f3d3"; echo "1;2;MeinLiebslingstier;4wGpK1s=;7393d;49407;9f3d3") | apia decode
Hund
Damit die Schlüssel nicht kompliziert per Tastatur eingegeben werden müssen, generiert apia pdf-Dateien mit QR-Codes:
echo "Hund" | apia encode MeinLiebslingstier | apia create_pdf_priv
Creating pdf... MeinLiebslingstier_9f3d3_KEY1.pdf
Creating pdf... MeinLiebslingstier_9f3d3_KEY2.pdf
Zum Scannen mit einer Webcam werden dann die zwei Schlüssel in beliebiger Reihenfolge eingelesen:
zbarcam --raw | apia decode
Hund
Eigenschaften:
- Es wird eine hohe Sicherheit dadurch erzielt, dass ein belieber Schlüssel sowohl zerstört als auch kompromittiert werden kann, ohne dass das eigentliche Geheimnis gestohlen wird oder verloren geht.
- Andererseits ist das Projekt nicht so gut für häufige Transaktionen geeignet, da ja bei jeder Transaktion zwei getrennt gelagerte Papiere zusammengeführt werden müssen - Sicherheit vs Bequemlichkeit.
- Das Problem der Vererbung kann dadurch gelöst werden, dass der Erbe im Todesfall seinen 2. Teil des Schlüssels durch eine dritte vertrauenswürdige Person (z.B. Notar) erhält.
- Sicherheit und Bequemlichkeit kann nach eigenem Ermessen variieren. Zum Beispiel:
- Sehr unsicher, aber bequem: Alle vier A4-Zettel liegen auf dem Küchentisch (dann braucht es auch keine Verschlüsselung…)
- Ziemlich sicher: Zettel verteilt 1. im Aktenordner „Wichtige Dokumente“, 2. im Passwortmanager im Internet, 3. in einem Ordner „Wichtige Dokumente“ des Erben und 4. in einem Ordner „Wichtige Dokumente“ eines Bekannten.
- Sehr sicher: Zettel verteilt 1. in Tresor1, 2. in Tresor2 an anderem Ort, 3. in Tresor des Erben und 4. bei einem Notar
- Das Geheimnis ist getrennt von der Hardware. Hier liegt ein Vorteil gegenüber Hardware-Wallets, denn apia läuft auf beliebiger Hardware, die ggf. sogar vernichtet werden kann, wohingegen bei Hardware-Wallets auf die Hardware vertraut werden muss.
- Da sowohl das Erstellen als auch das Entschlüsseln ein sensibler Punkt ist, befindet sich die Software auf einem Live-System ohne Internetzugang.
- Für die Verschlüsselung wird
One Time Pad
benutzt, ein beweisbar sicheres Verfahren: https://de.wikipedia.org/wiki/One-Time-Pad
Ausprobieren
Wer dieses Projekt in seiner Beta-Version ausprobieren möchte, findet hier eine bootbare ISO-Datei. Herunterladen unter https://www.mungomat.de/apia, Benutzer apia
, Passwort: 5k8MwaeabNqkLFs
. Dort befindet sich auch eine README-Datei mit mehr Beispielen.
Ich freue mich auf Fragen und Anmerkungen