Wie kann ich eine große Datei mit einem öffentlichen Schlüssel verschlüsseln, damit niemand außer dem, der über den privaten Schlüssel verfügt, diese entschlüsseln kann?
Ich kann öffentliche und private RSA-Schlüssel erstellen, aber wenn es darum geht, eine große Datei mit diesem Befehl zu verschlüsseln:
openssl rsautl -encrypt -pubin -inkey public.pem -in myLargeFile.xml -out myLargeFile_encrypted.xml
und wie kann ich die entschlüsselung auch durchführen ....
Ich erstelle meinen privaten und öffentlichen Schlüssel mit den folgenden Befehlen
openssl genrsa -out private.pem 1024
openssl rsa -in private.pem -out public.pem -outform PEM -pubout
Ich erhalte diesen Fehler:
RSA operation error
3020:error:0406D06E:rsa routines:RSA_padding_add_PKCS1_type_2:data too large for key size:.\crypto\rsa\rsa_pk1.c:151:
Ich habe versucht, Schlüssel mit Größen von 1024 bis 1200 Bit herzustellen, kein Glück, der gleiche Fehler
Lösung für die sichere und hochsichere Codierung aller Dateien in OpenSSL und in der Befehlszeile:
Sie sollten ein X.509-Zertifikat zum Verschlüsseln von Dateien im PEM-Format bereit haben.
Datei verschlüsseln:
Was ist was:
Dieser Befehl kann sehr effektiv große Dateien unabhängig von ihrem Format stark verschlüsseln.
Bekanntes Problem: Beim Versuch, eine große Datei (> 600 MB) zu verschlüsseln, tritt ein Fehler auf. Es wird kein Fehler ausgegeben, aber die verschlüsselte Datei wird beschädigt. Überprüfen Sie immer jede Datei! (oder verwenden Sie PGP - das unterstützt die Dateiverschlüsselung mit öffentlichem Schlüssel besser)
Datei entschlüsseln:
Was ist was:
quelle
Usage smime [options] yourSslCertificate.pem ...
ausführe, erhalte ich eine mit allen Smime-Optionen.-aes256
statt-aes-256-cbc
Sie können eine große Datei nicht direkt mit verschlüsseln
rsautl
. Gehen Sie stattdessen wie folgt vor:openssl rand
z.openssl rand 32 -out keyfile
openssl rsautl
openssl enc
dem generierten Schlüssel aus Schritt 1.quelle
Ich fand die Anweisungen unter http://www.czeskis.com/random/openssl-encrypt-file.html nützlich.
So paraphrasieren Sie die verknüpfte Site mit Dateinamen aus Ihrem Beispiel:
Und du bist fertig. Die andere Person hat die entschlüsselte Datei und sie wurde sicher gesendet.
quelle
Das Verschlüsseln einer sehr großen Datei mit smime wird nicht empfohlen, da Sie möglicherweise große Dateien mit der Option -stream verschlüsseln können, die resultierende Datei jedoch aufgrund von Hardwareeinschränkungen nicht entschlüsseln können. Siehe: Problem beim Entschlüsseln großer Dateien
Wie oben erwähnt, dient die Krypto mit öffentlichem Schlüssel nicht zum Verschlüsseln beliebig langer Dateien. Daher generieren die folgenden Befehle eine Passphrase, verschlüsseln die Datei mit symmetrischer Verschlüsselung und verschlüsseln die Passphrase dann mit dem asymmetrischen (öffentlichen Schlüssel). Hinweis: Der Smime umfasst die Verwendung eines öffentlichen Primärschlüssels und eines Sicherungsschlüssels zum Verschlüsseln der Passphrase. Ein öffentliches / privates Backup-Schlüsselpaar wäre umsichtig.
Zufällige Passwortgenerierung
Richten Sie den RANDFILE-Wert für eine Datei ein, auf die der aktuelle Benutzer zugreifen kann, generieren Sie die Datei passwd.txt und bereinigen Sie die Einstellungen
Verschlüsselung
Verwenden Sie die folgenden Befehle, um die Datei mit dem Inhalt von passwd.txt als Kennwort und AES256 in eine base64-Datei (-a Option) zu verschlüsseln. Verschlüsseln Sie die Datei passwd.txt mit asymetrischer Verschlüsselung in die Datei XXLarge.crypt.pass mit einem öffentlichen Primärschlüssel und einem Sicherungsschlüssel.
Entschlüsselung
Die Entschlüsselung entschlüsselt einfach den XXLarge.crypt.pass in passwd.tmp, entschlüsselt den XXLarge.crypt in XXLarge2.data und löscht die passwd.tmp-Datei.
Dies wurde gegen> 5 GB Dateien getestet.
quelle
Um große Dateien (> 600 MB) sicher mit zu verschlüsseln, müssen
openssl smime
Sie jede Datei in kleine Teile aufteilen:Zur Information, hier ist, wie man alle Teile entschlüsselt und zusammenfügt:
quelle
In mehr Erklärung für
n. 'pronouns' m.
die Antwort,Es gibt den Fluss der Verschlüsselung :
Und der Fluss der Entschlüsselung :
Außerdem können Sie diese Befehle verwenden:
quelle
Vielleicht sollten Sie die akzeptierte Antwort auf diese Frage ( Wie verschlüssele ich Daten in PHP mit öffentlichen / privaten Schlüsseln? ) Überprüfen .
Anstatt die Beschränkung der Nachrichtengröße (oder möglicherweise ein Merkmal) von RSA manuell zu umgehen, wird gezeigt, wie Sie die S / MIME-Funktion von OpenSSL verwenden, um dasselbe zu tun, ohne manuell mit dem symmetrischen Schlüssel jonglieren zu müssen.
quelle