Benutzer-Werkzeuge

Webseiten-Werkzeuge


einzelne_dateien_mit_openssl_verschluesseln

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
einzelne_dateien_mit_openssl_verschluesseln [2024-03-03 04:46:04] – [Test mit Textdatei] manfredeinzelne_dateien_mit_openssl_verschluesseln [2024-10-29 15:44:17] (aktuell) – [mit RSA-Schlüssel] manfred
Zeile 1: Zeile 1:
 ====== einzelne Dateien mit openSSL verschlüsseln ====== ====== einzelne Dateien mit openSSL verschlüsseln ======
  
-[[https://wiki.openssl.org/index.php/Enc]] +  * [[::OpenSSL]] 
 +  * [[::OpenSSL-Verschlüsselung von Zeichenketten]] 
 +  * [[https://wiki.openssl.org/index.php/Enc]]
   * [[http://wiki.ubuntuusers.de/Daten_verschlüsseln#OpenSSL]]   * [[http://wiki.ubuntuusers.de/Daten_verschlüsseln#OpenSSL]]
   * [[http://cb.vu/unixtoolbox_pt.xhtml#crypt]]   * [[http://cb.vu/unixtoolbox_pt.xhtml#crypt]]
Zeile 16: Zeile 17:
  
 __Bei symetrischer Verschlüsselung (z.B. nur mit Passwort), sollte immer die Option ''-salt'' verwendet werden!__ __Bei symetrischer Verschlüsselung (z.B. nur mit Passwort), sollte immer die Option ''-salt'' verwendet werden!__
- 
- 
-===== HASH / Quersummer ===== 
- 
-eine Datei anlegen, die verschlüsselt werden soll: 
-  > echo "Hallo Welt!" > Text.txt 
- 
-  > openssl dgst -sha3-512 Datei.edg 
-  > openssl sha3-512 Datei.edg 
- 
- 
-===== Allgemeines ===== 
- 
-einen privaten RSA-Schlüssel generieren: 
-  > openssl genrsa -out private.pem 4096 
-  > ls *.pem 
-  private.pem 
- 
-aus dem privaten RSA-Schlüssel einen öffentlichen RSA-Schlüssel generieren: 
-  > openssl rsa -in private.pem -out public.pem -outform PEM -pubout 
-  > ls *.pem 
-  private.pem 
-  public.pem 
- 
-einen privaten RSA-Schlüssel mit dazugehörigem (öffentlichen) Zertifikat erzeugen: 
-  > openssl req -rand /dev/urandom -new -x509 -newkey rsa:4096 -sha3-512 -nodes -keyform PEM -keyout private.pem -outform PEM -out cert.pem -days 7000 -subj /emailAddress=email@adresse.de/C=DE/ST=Hessen/L=Frankfurt/O=Firma/OU=Abteilung/CN=Hostname 
-  > ls *.pem 
-  private.pem 
-  cert.pem 
- 
-//Verschlüsselung funktioniert mit einem öffentlichen RSA-Schlüssel und mit einem Zertifikat.// 
- 
- 
-===== mögliche Verschlüsselungsalgorithmen ===== 
- 
-nutzbare Verschlüsselungsalgorithmen anzeigen lassen: 
- 
-__Linux und FreeBSD 14.0:__ 
-  > openssl enc -list 
-  > openssl list -cipher-commands 
-  > openssl list -cipher-algorithms 
- 
-__älteres FreeBSD:__ 
-  > openssl enc -ciphers 
-  > openssl list -cipher-commands 
-  > openssl list -cipher-algorithms 
-  ... 
-  aes-256-cbc 
-  ... 
-  bf-cbc 
-  ... 
- 
-Leider werden die guten Algotithmen (wie __Serpent__, __Twofish__ oder __MARS__) von OpenSSL nicht unterstützt. 
-Die besten verfügbaren sind die folgenden (ich bevorzuge den **BlowFish**, es ist der Vorgänger Twofish, mit genügend Wiederholung -> mind. 1 Mio.): 
-  * AES-256-CBC 
-  * BF-CBC (blowfish) 
- 
-Das sind alles Synonyme für **BlowFish**: 
-  * blowfish 
-  * bf 
-  * bf-cbc 
-  * BF-CBC 
  
  
Zeile 110: Zeile 49:
  
 ==== Dateien symetrisch verschlüsseln ==== ==== Dateien symetrisch verschlüsseln ====
 +
 +
 +=== Datei mit OpenSSL auf der CLI verschlüsseln ===
 +
 +Datei verschlüsseln (AES):
 +  > echo "ganz geheimer Text" > datei.txt
 +  > openssl enc -a -salt -iter 1234567 -aes-256-cbc -e -in datei.txt -out datei.aes
 +  oder
 +  > openssl enc -a -salt -iter 1234567 -aes-256-cbc -e -in datei.txt > datei.aes
 +
 +Datei wieder entschlüsseln (AES):
 +  > openssl enc -a -salt -iter 1234567 -aes-256-cbc -d -in datei.aes -out datei2.txt
 +  oder
 +  > cat datei.aes | openssl enc -a -salt -iter 1234567 -aes-256-cbc -d > datei2.txt
 +
 +einen ganzen Verzeichnisbaum verschlüsseln (AES):
 +  > tar -cf - /Verzeichnis | openssl enc -salt -iter 1234567 -aes-256-cbc -e -out verzeichnis.tar.aes
 +  oder
 +  > tar -cf - /Verzeichnis | openssl enc -salt -iter 1234567 -aes-256-cbc -e > verzeichnis.tar.aes
 +
 +und wieder entschlüsseln (AES):
 +  > openssl enc -salt -iter 1234567 -aes-256-cbc -d -in verzeichnis.tar.aes | tar -x -f -
 +  oder
 +  > cat verzeichnis.tar.aes | openssl enc -salt -iter 1234567 -aes-256-cbc -d | tar -x -f -
 +
 +Datei verschlüsseln (mit BF und ohne Passwrtabfrage):
 +  > openssl enc -a -salt -iter 1234567 -bf-cbc -md sha512 -k "geheimes Passwort" -e -in datei.txt -out datei.ssl
 +  enter bf-cbc encryption password:
 +  Verifying - enter bf-cbc encryption password:
 +
 +Datei verschlüsseln (mit BF und ohne Passwrtabfrage):
 +  > openssl enc -a -salt -iter 1234567 -bf-cbc -md sha512 -k "geheimes Passwort" -d -in datei.ssl
 +  oder
 +  > cat datei.ssl | openssl enc -a -salt -iter 1234567 -bf-cbc -md sha512 -k "geheimes Passwort" -d
  
  
 === Datei mit OpenSSL per Skript verschlüsseln === === Datei mit OpenSSL per Skript verschlüsseln ===
 +
 +Die Datei ''/tmp/datei'' verschlüsseln (lesbare Textdatei erzeugen):
 +  ~/bin/Datei_verschluesseln.sh -w 1234567 -m bf -t -d /tmp/datei
 +  enter bf-cbc encryption password:
 +  Verifying - enter bf-cbc encryption password:
 +  -rw-r--r--  1 fritz  wheel    33B  4 Okt. 17:43 /tmp/datei.ssl
 +
 +Die Datei ''/tmp/datei.ssl'' (lesbare Textdatei) entschlüsseln:
 +  ~/bin/Datei_verschluesseln.sh -w 1234567 -m bf -t -d /tmp/datei.ssl
 +  enter bf-cbc decryption password:
 +  -rw-r--r--  1 fritz  wheel     6B  4 Okt. 17:43 /tmp/datei
  
  
Zeile 294: Zeile 278:
  
 ==== mit RSA-Schlüssel ==== ==== mit RSA-Schlüssel ====
 +
 +Große Dateien können nicht asymetrisch verschlüsselt werden! => [[https://stackoverflow.com/questions/7143514/how-to-encrypt-a-large-file-in-openssl-using-public-key|How to encrypt a large file in openssl using public key]]
 +
 +Die übliche Vorgehensweise, für das verschlüsseln von langen Dateien sieht wie folgt aus:
 +Große Dateien werden jedes Mal mit einem neuen zufällig generierten, symmetrischen Schlüssel Verschlüsselt.
 +Der dazu verwendete symmetrische Schlüssel wird mit dem öffentlichen RSA-Schlüssel verschlüsselt.
 +Dann wird der Chiffre-Text zusammen mit dem verschlüsselten symmetrischen Schlüssel an den Empfänger übertragen.
 +Der Empfänger entschlüsselt den symmetrischen Schlüssel mit seinem privaten Schlüssel und verwendet dann den symmetrischen Schlüssel zum Entschlüsseln der Nachricht (Chiffre-Text).
  
 Datei verschlüsseln: Datei verschlüsseln:
   > echo "ganz geheimer Text" > datei.txt   > echo "ganz geheimer Text" > datei.txt
-  > openssl rsautl -encrypt -inkey public.pem -pubin -in datei.txt -out datei.ssl+  > openssl pkeyutl -encrypt -inkey cert.pem -certin -in datei.txt -out datei.ssl 
 +  oder 
 +  > openssl pkeyutl -encrypt -inkey public.pem -pubin -in datei.txt -out datei.ssl
  
 Datei entschlüsseln: Datei entschlüsseln:
-  > openssl rsautl -decrypt -inkey private.pem -in datei.ssl -out datei2.txt+  > openssl pkeyutl -decrypt -inkey private.pem -in datei.ssl -out datei.txt 
 + 
 +__Manchmal gibt es Probleme (meist beim entschlüsseln), wenn bestimmte Zeichen in der Datei vorkommen. In soeinem Fall ist es hilfreich, die zu verschlüsselnden Dateien vorher in Base64-Kode umzuwandeln.__ 
 + 
 +  > base64 Datei.txt > Datei.txt.b64 
 +  > openssl pkeyutl -encrypt -pubin -inkey public-ssl-key.pem -in Datei.txt.b64 -out Datei.txt.b64.ssl 
 +  > openssl pkeyutl -decrypt -inkey privat-ssl-key.pem -in Datei.txt.b64.ssl -out Datei.txt.b64.txt
  
  
Zeile 309: Zeile 309:
  
 eine Zeichenkette mit einem Zertifikat verschlüsseln: eine Zeichenkette mit einem Zertifikat verschlüsseln:
-  > openssl smime -encrypt -aes256 -out message_verschluesselt.txt cert.pem < message_klartext.txt+  > openssl smime -encrypt -aes256 -in datei.txt -out datei.ssl cert.pem
  
 die verschlüsselte Zeichenkette mit dem privaten Schlüssel entschlüsseln: die verschlüsselte Zeichenkette mit dem privaten Schlüssel entschlüsseln:
-  > openssl smime -decrypt -in message_verschluesselt.txt -inkey private.pem+  > openssl smime -decrypt -inkey private.pem -in datei.ssl -out datei.txt 
 +  > cat datei.txt
   Text   Text
  
/home/http/wiki/data/attic/einzelne_dateien_mit_openssl_verschluesseln.1709441164.txt · Zuletzt geändert: von manfred