MikroLock Dokumentation
Hinweis: miniLock Chrome extension EOL
Die Original-App ist für Chrome oder andere Browser nicht mehr erhältlich da die Plugin-API entfernt wurde.
MikroLock
MikroLock verbindet moderne Verschlüsselung mit einfacher Bedienung. Es basiert auf dem offenen miniLock Dateiformat (https://github.com/kaepora/miniLock).
Übersicht
MikroLock ist eine schnelle Implementierung der miniLock-Spezifikation.
Trotz des Namens (und im Gegensatz zum Original Chrome-Plugin) kann MikroLock auch mit großen Dateien umgehen.
Hauptziel der Entwicklung ist ein unkomplizierter Austausch verschlüsselter
Daten, z.B. durch E-Mail oder Cloud-Dienste. Die Verschlüsselung basiert auf
modernen Public-Key Verfahren, jedoch ohne aufwändige Konfiguration und
Einarbeitung. Das miniLock-Format kann durch die Chrome Erweiterung auch dann
eingesetzt werden, wenn keine Software wie MikroLock installiert werden kann (Firmen-
Richtlinien o.ä.).
Dreh- und Angelpunkt der Verschlüsselung ist die Lock-ID, die durch Eingabe von Mail-Adresse und Passwort auf jedem PC berechnet werden kann. Diese Lock-ID ist ein kurzer Public-Key der auf Webseiten, in Mailsignaturen, auf Twitter oder sonstwo veröffentlicht wird, damit jedermann in der Lage ist Inhalte für diese ID zu verschlüsseln. Nur ein Empfänger mit der richtigen Passwort/Mail-Kombination zur Erzeugung dieser ID kann die Daten wieder entschlüsseln.
Eine Lock-ID sieht wie folgt aus: jrcY8VJWKihbiLsDnaMaNSoL2fZSTiRmEeJcKGBYxnb83
Da diese IDs sehr bequem zu handhaben sind, ist kein aufwändiger Schlüsseltausch mit Keyservern oder manuellen Dateikopien notwendig.
Beim Verschlüsseln kann eine Liste von Lock-IDs angegeben werden, um mehreren Empfängern zu ermöglichen die Daten zu entschlüsseln. Es muss also nicht eine separate Datei für jeden Empfänger erzeugt werden. MiniLock-Dateien enthalten keine sichtbaren Hinweise auf Ihre Empfänger.
Wie funktioniert's?
Alice möchte etwas für Bob verschlüsseln. Bob gibt seine Mail-Adresse und sein Passwort in MikroLock ein, um seine Lock-ID zu erhalten. Diese ID sendet er an Alice.
Alice verschlüsselt die Datei und gibt die Lock-ID von Bob als Empfänger-ID an. Alice sendet nun die verschlüsselte Datei an Bob, der sie mit seiner Passwort/Mail-Kombination entschlüsseln kann.
Wichtig hierbei ist, dass das Passwort geheim bleibt - es werden nur die Lock-IDs (=public keys) ausgetauscht.
Verwendete Crypto-Funktionen
Die Lock-ID wird wie folgt erzeugt:
secret_key := scrypt(blake2(passphrase), mail, 131072, 1) OR argon2i (blake2(passphrase), generichash(mail), OPSLIMIT_SENSITIVE, MEMLIMIT_SENSITIVE) public_key := crypto_scalarmult_base(secret_key) Lock-ID := base58( public_key + blake2(public_key) )
Zur Berechnung von secret_key kann vom Benutzer scrypt oder Argon2 gewählt werden. Die Parameter für scrypt wurden von miniLock übernommen, die für Argon2 entsprechen der Empfehlung für vertrauliche Daten.
Der JSON-Dateiheader der MiniLock-Dateien enthält die Lock-ID des Senders, die IDs der Empfänger sowie Schlüssel (zufällig erzeugt) und Hashwert der verschlüsselten Eingabedatei.
Diese Informationen werden separat mit jeder angegebenen Empfänger-ID als Public-Key mittels crypto_box_easy verschlüsselt (Schlüsseltausch: Curve25519; Verfahren: XSalsa20 stream cipher; Authentifizierung: Poly1305 MAC).
Die Eingabedatei wird mit crypto_secretbox_easy verschlüsselt (Verfahren: XSalsa20 stream cipher; Authentifizierung: Poly1305 MAC).
Mehr Infos zu den kryptographischen Eigenschaften und dem Dateiformat: https://github.com/kaepora/miniLock.
Anwendung (Kommandozeile)
MikroLock kann in der Kommandozeile oder mit graphischer Oberfläche bedient werden.
USAGE: mikrolock [OPTION]... mikrolock reads and writes encrypted miniLock files (https://github.com/kaepora/miniLock) Available options: -E, --encrypt <file> Encrypt the given file (see -r) -D, --decrypt <file> Decrypt the given miniLock file -o, --output <file> Override the target file name (assumes -D or -E) -k, --kdf <name> Key derivation function to use (name: "scrypt" or "argon2") scrypt is the default, argon2 is experimental -m, --mail <string> Mail address (salt for key derivation) -r, --rcpt <string> Recipient's Lock-ID (may be repeated, assumes -E) -h, --help Print this help screen -l, --list <file> Recipient list text file (contains one Lock-ID per line) ID descriptions may be added using these delimiters: space or one of [,;/|-] -p, --pinentry Use pinentry program to ask for the passphrase -q, --quiet Do not print progress information -R, --random-name Generate random output filename; write to current working directory (assumes -E) -v, --version Print version information -x, --exclude-me Exlude own Lock-ID from recipient list (assumes -E) If neither -E nor -D is given, mikrolock exits after showing your Lock-ID.
File encryption
mikrolock --encrypt secret.dat --mail sendersalt@holygrail.com --rcpt EX9k9VmGzjg7mUBFN9mzc7nkcvhmD6fGZTq3nefEajjxX Please enter your secret passphrase: Unlocking... Your Lock-ID: aUwncs2D48MqB8VFta7RRJ5bjL9PfsmtWF3zYVb3zFLLW Encrypting file secret.dat... Progress 100% Calculating file hash... Progress 100% Destination file: secret.dat.minilock
The encrypted file is secret.dat.minilock
This file can be decrypted by the receiver EX9k9VmGzjg7mUBFN9mzc7nkcvhmD6fGZTq3nefEajjxX
File decryption
mikrolock --decrypt secret.dat.minilock --mail receiver@test.org Please enter your secret passphrase: Unlocking... Your Lock-ID: EX9k9VmGzjg7mUBFN9mzc7nkcvhmD6fGZTq3nefEajjxX Decrypting file secret.dat.minilock... Calculating file hash... Progress 100% Writing to file secret.dat... Progress 100% Destination file: secret.dat
Compatibility with the miniLock browser extension
The miniLock file format was established by the miniLock Chrome browser extension.
While the produced files are interchangeable with each program, the accepted input to obtain a Lock-ID differs:
- miniLock only supports Lock-IDs generated by scrypt
- miniLock accepts only valid mail addresses as salt, MikroLock accepts any value
- miniLock applies a passphrase entropy check, MikroLock may accept passphrases with lower entropy
If you are going to use MikroLock and miniLock in parallel, choose a salt and passphrase which is accepted in both applications.