Ich denke, Ihre Anforderung ist gültig, aber andererseits ist es auch schwierig, weil Sie symmetrische und asymmetrische Verschlüsselung mischen. Bitte korrigieren Sie mich, falls ich falsch liege.
Argumentation:
- Die Passphrase für Ihren privaten Schlüssel dient zum Schutz Ihres privaten Schlüssels und sonst nichts.
- Dies führt zu folgender Situation: Sie möchten Ihren privaten Schlüssel verwenden, um etwas zu verschlüsseln, das nur Sie entschlüsseln können. Ihr privater Schlüssel ist dafür nicht vorgesehen, dafür ist Ihr öffentlicher Schlüssel da. Was immer Sie mit Ihrem privaten Schlüssel verschlüsseln, kann mit Ihrem öffentlichen Schlüssel (Signieren) entschlüsselt werden. Das ist sicherlich nicht das, was Sie wollen. (Was immer mit Ihrem öffentlichen Schlüssel verschlüsselt wird, kann nur mit Ihrem privaten Schlüssel entschlüsselt werden.)
- Sie müssen also Ihren öffentlichen Schlüssel verwenden, um Ihre Daten zu verschlüsseln. Dafür benötigen Sie jedoch keine Passphrase für den privaten Schlüssel. Nur wenn Sie es entschlüsseln möchten, benötigen Sie Ihren privaten Schlüssel und die Passphrase.
Fazit: Grundsätzlich möchten Sie Ihre Passphrase für die symmetrische Verschlüsselung wiederverwenden. Das einzige Programm, das Sie für Ihre Passphrase verwenden möchten, ist ssh-agent. Dieses Programm verschlüsselt / entschlüsselt nicht nur die Passphrase. Die Passphrase dient nur zum Entsperren Ihres privaten Schlüssels und wird dann vergessen.
Empfehlung: Verwenden Sie openssl enc
oder gpg -e --symmetric
mit passphrasengeschützten Schlüsseldateien zur Verschlüsselung. Wenn Sie die Informationen weitergeben müssen, können Sie die Infrastruktur für öffentliche Schlüssel beider Programme verwenden, um eine PKI / ein Web of Trust zu erstellen.
Mit openssl ungefähr so:
$ openssl enc -aes-256-ctr -in my.pdf -out mydata.enc
und Entschlüsselung so etwas wie
$ openssl enc -aes-256-ctr -d -in mydata.enc -out mydecrypted.pdf
Update: Es ist wichtig zu beachten, dass die obigen openssl-Befehle NICHT verhindern, dass Daten manipuliert werden. Ein einfacher Bit-Flip in der enc-Datei führt ebenfalls zu beschädigten entschlüsselten Daten. Die obigen Befehle können dies nicht erkennen, Sie müssen dies beispielsweise mit einer guten Prüfsumme wie SHA-256 überprüfen. Es gibt kryptografische Möglichkeiten, dies auf integrierte Weise zu tun. Dies wird als HMAC (Hash-based Message Authentication Code) bezeichnet.
"gpg -e something"
aber für verschiedene Fälle?$ gpg -e --symmetric
?openssl enc -aes-256-cbc -in my.pdf -out mydata.enc
, zu entschlüsseln mit:openssl enc -aes-256-cbc -d -in mydata.enc -out mydecrypted.pdf
beide Befehle fragen nach dem Passwort. Sieheman enc
(auf RH / Fedora / Centos) für alle Optionen wie Schlüsseldateien, Base64-Codierung usw.Ich würde es vorziehen, das
openssl
Dienstprogramm zu verwenden, da es ziemlich allgegenwärtig zu sein scheint.Konvertieren Sie den öffentlichen und den privaten RSA-Schlüssel in das PEM-Format:
Verschlüsseln einer Datei mit Ihrem öffentlichen Schlüssel:
Entschlüsseln Sie die Datei mit Ihrem privaten Schlüssel:
Wie Gilles bereits erwähnt hat, ist dies jedoch nur zum Verschlüsseln von Dateien geeignet, die kleiner als Ihr öffentlicher Schlüssel sind. Sie können also Folgendes tun:
Generieren Sie ein Passwort, verschlüsseln Sie die Datei symmetrisch und verschlüsseln Sie das Passwort mit Ihrem öffentlichen Schlüssel. Speichern Sie es in der Datei:
Entschlüsseln Sie die Passphrase mit Ihrem privaten Schlüssel und verwenden Sie sie zum Entschlüsseln der Datei:
Sie werden am Ende zwei Dateien haben, Ihre verschlüsselte Datei und Ihre verschlüsselte Passphrase, aber in einem Skript würde es gut funktionieren.
Sie könnten sogar eine hinzufügen,
tar cvf file file.enc file.enc.key
um aufzuräumen.Optimalerweise maximieren Sie die Größe Ihrer Passphrase und ändern sie
rand 64
in die Größe Ihres öffentlichen Schlüssels.quelle
KEYLEN_BYTES=$(ssh-keygen -l -f $PRIV_KEY | awk '{printf("%d", ($1 - 96) / 8)}')
um eine Schlüssellänge automatisch zu generieren. Wenn ssh-keygen eine minimale Schlüssellänge von 768 Bit hat, führt dies immer noch zu einem minimalen symmetrischen Schlüssel von 672 Bit oder 84 Byte.Schau dir luks / dm-crypt an . Sie können Ihren ssh-private-key als Verschlüsselungsschlüssel verwenden, indem Sie die entsprechende Option verwenden.
Update: Beispielverschlüsselung mit LUKS mit einem LV-Block-Gerät (LV-Test im VG-System):
Dies sollte ein Block-Device / dev / mapper / test_crypt erzeugen, auf dem Sie Ihre Daten speichern können (nachdem Sie sie mit einem Dateisystem Ihrer Wahl formatiert haben).
Um es loszuwerden, ummontieren und verwenden
cryptsetup luksClose test_crypt
.quelle
"$ sudo apt-get install cryptmount crypt-setup; cat '...' > bin/myEncrypt.sh; chmod +x bin/myEncrypt.sh; ./bin/myEncrypt.sh; ...; ..."
Wenn ich das richtig verstehe, handelt es sich bei dieser Methode um eine Verschlüsselung auf Dateisystemebene. Es verschlüsselt die benötigten Dateien umount / mount oder verstehe ich das falsch?--key-file
Option cryptsetup verwendet den tatsächlichen Inhalt der Datei als ein großes Passwort. Der openssl-Schlüssel wird nicht aus der Datei gelesen und nur verwendet. Sie können eine Datei mit zufälligen Bytes für die verwenden,--key-file
wenn Sie möchten.--key-file
ist wirklich ein schlecht gewählter Name für die Option, sollte es sein--password-file