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:37:10] – [in Text-Form verschlüsseln - das kann inline per E-Mail verschickt werden] 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 87: Zeile 26:
  
  
-==== in Text-Form verschlüsseln - das kann inline per E-Mail verschickt werden ====+==== Zeichenkette symetrisch verschlüsseln ====
  
 eine Datei mit geheimem Inhalt anlegen: eine Datei mit geheimem Inhalt anlegen:
Zeile 109: Zeile 48:
  
  
-==== in Binär-Form verschlüsseln - das verbraucht am wenigsten Platz ====+==== Dateien symetrisch verschlüsseln ====
  
-die Datei verschlüsseln: + 
-  > cat datei | openssl enc -salt -iter 1234567 -bf-cbc -e > datei.ssl+=== 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:   enter bf-cbc encryption password:
   Verifying - enter bf-cbc encryption password:   Verifying - enter bf-cbc encryption password:
-   
-  > rm -f datei 
-   
-  > cat datei.ssl | openssl enc -salt -iter 1234567 -bf-cbc -d > datei 
  
 +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 298: Zeile 273:
  
  
-=== Test mit Textdatei === 
  
-Die Datei ''/tmp/datei'' verschlüsseln (lesbare Textdatei erzeugen)+===== Asymetrische Verschlüsselung (mit SSL-Schlüssel=====
-  ~/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 
  
-Datei verschlüsseln (AES): +==== mit RSA-Schlüssel ====
-  > 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): +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]]
-  > openssl enc --salt -iter 1234567 -aes-256-cbc -d -in datei.aes -out datei2.txt +
-  oder +
-  > cat datei.aes | openssl enc --salt -iter 1234567 -aes-256-cbc -d > datei2.txt+
  
-einen ganzen Verzeichnisbaum verschlüsseln (AES)+Die übliche Vorgehensweise, für das verschlüsseln von langen Dateien sieht wie folgt aus
-  > tar -cf /Verzeichnis | openssl enc -salt -iter 1234567 -aes-256-cbc -e -out verzeichnis.tar.aes +Große Dateien werden jedes Mal mit einem neuen zufällig generierten, symmetrischen Schlüssel Verschlüsselt. 
-  oder +Der dazu verwendete symmetrische Schlüssel wird mit dem öffentlichen RSA-Schlüssel verschlüsselt. 
-  > tar -cf - /Verzeichnis | openssl enc -salt -iter 1234567 -aes-256-cbc -e > verzeichnis.tar.aes+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).
  
-und wieder entschlüsseln (AES)+Datei verschlüsseln: 
-  > openssl enc -salt -iter 1234567 -aes-256-cbc -d -in verzeichnis.tar.aes | tar -x -f -+  > echo "ganz geheimer Text" > datei.txt 
 +  > openssl pkeyutl -encrypt -inkey cert.pem -certin -in datei.txt -out datei.ssl
   oder   oder
-  > cat verzeichnis.tar.aes | openssl enc -salt -iter 1234567 -aes-256-cbc -d | tar -x -f -+  > openssl pkeyutl -encrypt -inkey public.pem -pubin -in datei.txt -out datei.ssl
  
-Datei verschlüsseln (mit BF und ohne Passwrtabfrage)+Datei entschlüsseln
-  > openssl enc --salt -iter 1234567 -bf-cbc -md sha512 -k "geheimes Passwort" -e -in datei.txt -out datei.ssl +  > openssl pkeyutl -decrypt -inkey private.pem -in datei.ssl -out datei.txt
-  enter bf-cbc encryption password: +
-  Verifying - enter bf-cbc encryption password:+
  
-Datei verschlüsseln (mit BF und ohne Passwrtabfrage)+__Manchmal gibt es Probleme (meist beim entschlüsseln), wenn bestimmte Zeichen in der Datei vorkommenIn soeinem Fall ist es hilfreich, die zu verschlüsselnden Dateien vorher in Base64-Kode umzuwandeln.__
-  > 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+
  
- +  > base64 Datei.txt Datei.txt.b64 
-===== Asymetrische Verschlüsselung (mit SSL-Schlüssel) ===== +  > 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
- +
-==== mit RSA-Schlüssel ==== +
- +
-Datei verschlüsseln: +
-  echo "ganz geheimer Text" > datei.txt +
-  > openssl rsautl -encrypt -inkey public.pem -pubin -in datei.txt -out datei.ssl +
- +
-Datei entschlüsseln: +
-  > openssl rsautl -decrypt -inkey private.pem -in datei.ssl -out datei2.txt+
  
  
Zeile 362: 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.1709440630.txt · Zuletzt geändert: von manfred