Benutzer-Werkzeuge

Webseiten-Werkzeuge


openssl-verschluesselung_von_zeichenketten

Dies ist eine alte Version des Dokuments!


OpenSSL-Verschlüsselung von Zeichenketten

Leider musste ich Anfang des Jahres 2024 (mit FreeBSD 14.0) feststellen, dass OpenSSL die hier genannten Beispiele mit BlowFish (bf-cbc) nicht mehr ausführt. Um diese Kommandos weiterhin ausführen zu können, muß man stattdessen den schwächeren AES (aes-256-cbc) verwenden.

Alle Cipher, die von dem Kommando openssl list -cipher-commands ausgegeben werden, können für die hier genannten Beispiel verwendet werden.

Bei symetrischer Verschlüsselung (z.B. nur mit Passwort), sollte immer die Option -salt verwendet werden!

Symetrische Verschlüsselung

> echo "Hallo Welt!" | openssl enc -aes-256-cbc -pbkdf2 -nosalt -a -kfile passwort.txt -e
QvccGfCKCYHw7WHsnGbZow==

> echo "QvccGfCKCYHw7WHsnGbZow==" | openssl enc -aes-256-cbc -pbkdf2 -nosalt -a -kfile passwort.txt -d
Hallo Welt!

eine Zeichenkette verschlüsseln:

> echo "Hallo Welt!" | openssl enc -aes-256-cbc -nosalt -a -e -K '2222233333232323' -iv '5a04ec902686fb05a6b7a338b6e07760'
hex string is too short, padding with zero bytes to length
QZ8W91RPs0K10JhdpvwJMA==

eine Zeichenkette entschlüsseln:

> echo "QZ8W91RPs0K10JhdpvwJMA==" | openssl enc -aes-256-cbc -nosalt -a -d -K '2222233333232323' -iv '5a04ec902686fb05a6b7a338b6e07760'
hex string is too short, padding with zero bytes to length
Hallo Welt!

Asymetrische Verschlüsselung mit S/MIME (E-Mail-Format)

mit RSA-Schlüssel/Zertifikat

zur Vorbereitung müssen wir einen privaten Schlüssel mit dazugehörigem Zertifikat erzeugen:

> openssl req -rand /dev/urandom -new -x509 -newkey rsa:4096 -sha3-512 -nodes -keyout openssl_private_key.pem -keyform PEM -out openssl_public_zertifikat.pem -outform PEM -days 7000 -subj /emailAddress=email@adresse.de/C=DE/ST=Hessen/L=Frankfurt/O=Firma/OU=Abteilung/CN=Hostname
> ls -1 *.pem
openssl_private_key.pem
openssl_public_zertifikat.pem

Das Zertifikat schicke ich meinem Kommunikationspartner, damit er mir verschlüsselte Nachrichten schicken kann. Der private Schlüssel darf niemals den Rechner verlassen, auf dem er erzeugt wurde, weil jede Art der Datenübertragung, Angriffsflächen für eine kompromittierung bietet.

eine Zeichenkette mit einem Zertifikat verschlüsseln:

> echo "Hallo Welt!" | openssl smime -encrypt -aes256 openssl_public_zertifikat.pem > message_verschluesselt.txt

die verschlüsselte Zeichenkette mit dem privaten Schlüssel entschlüsseln:

> cat message_verschluesselt.txt | openssl smime -decrypt -inkey openssl_private_key.pem
Hallo Welt!

mit ED26619-Schlüssel/Zertifikat

einen privaten SSL-Schlüssel mit Zertifikat erzeugen:

> openssl req -rand /dev/urandom -new -x509 -newkey ED25519 -sha3-512 -nodes -keyout openssl_private_key.pem -keyform PEM -out openssl_public_zertifikat.pem -outform PEM -days 7000 -subj "/emailAddress=email@adresse.de/C=DE/ST=Hessen/L=Frankfurt/O=Firma/OU=Abteilung/CN=Hostname"
> ls -1 *.pem
openssl_private_key.pem
openssl_public_zertifikat.pem

einen dazugehörigen öffentlichen SSL-Schlüssel erzeugen (den brauchen wir hierfür aber nicht):

> openssl pkey -in openssl_private_key.pem -out openssl_public_key.pem -outform PEM -pubout

Eine Zeichenkette mit einem ED26619-Zertifikat zu verschlüsseln, funktionierte bei mir leider nicht.

FIXME

/home/http/wiki/data/attic/openssl-verschluesselung_von_zeichenketten.1709425339.txt · Zuletzt geändert: von manfred