Dateien verschlüsseln ohne Passwort

Beitragsdatum 20.11.2023
Letzte Aktualisierung -
Betrifft openssl 3.x

Achtung: nicht für große Dateien geeignet

Dieses Verfahren eignet sich nur für kleine Dateien, da die maximale Größe der zu verschlüsselnden Datei von der Größe des Schlüssels abhängt. Sie können also bspw. nur kurze Textdateien austauschen.

Problem

Sie möchten Dateien verschlüsseln, ohne ein Passwort eingeben zu müssen.
Dies macht immer dann Sinn, wenn die Verschlüsselung automatisch passieren soll, beispielsweise über ein Script.

Diese Art der Verschlüsselung nennt man auch asymmetrisch, weil die Ver- und Entschlüsselung mit unterschiedlichen „Geheimnissen“ stattfindet. Der Wikipedia-Artikel erklärt das ausführlich.

Im Gegensatz dazu steht die symmetrische Verschlüsselung, die das selbe Passwort für die Ver- und Entschlüsselung nutzt. Bei einem Script nicht so praktisch, weil dort das Passwort eingetragen werden müsste.

Das Problem hier soll also sein: wie kann man Dateien in einem Script verschlüsseln, ohne ein Passwort eingeben zu müssen?


Lösung

Basis für eine Lösung sind sogenannte Schlüssel, die über [https://de.wikipedia.org/wiki/OpenSSL|openssl]] erzeugt werden können.

Das Prinzip

Es werden ein privater und ein öffentlicher Schlüssel erzeugt. Der private Schlüssel bleibt streng geheim und dient zum Entschlüsseln.

Der öffentliche Schlüssel dient zum Verschlüsseln und darf bekannt sein - soll es sogar. Jeder soll ihn nutzen können, um Ihnen verschlüsselte Daten zukommen lassen zu können.

Privaten Schlüssel erzeugen

Zunächst wird ein privater Schlüssel erzeugt:

openssl genrsa -out private_key.pem 4096

Dies erzeugt den privaten Schlüssel private_key.pem. Legen Sie diesen sicher und gut ab.

Öffentlichen Schlüssel erzeugen

Nun wird auf Basis des privaten Schlüssels ein öffentlicher Schlüssel erzeugt:

openssl rsa -in private_key.pem -out public_key.pem -outform PEM -pubout

Dies erzeugt den öffentlichen Schlüssel public_key.pem. Diesen können Sie veröffentlichen.

Dateien verschlüsseln

Verschlüsseln Sie nun mit dem öffentlichen Schlüssel eine beliebige Datei - hier im Beispiel die Datei test.txt:

openssl pkeyutl -encrypt -inkey public_key.pem -pubin -in test.txt -out test.dat

test.dat ist dann die verschlüsselte Datei, die Sie versenden können.

Dateien entschlüsseln

Die verschlüsselte Datei kann nun mit dem privaten Schlüssel entschlüsselt werden:

openssl pkeyutl -decrypt -inkey private_key.pem -in test.dat -out new_test.txt

Die entschlüsselte Datei ist nun new_test.txt.

Hinweise

Es gibt mit gpg eine ganze Infrastruktur drum herum, so dass Sie Ihren öffentlichen Schlüssel auch richtig bekannt geben können.

Dies ist nicht Teil dieser Erklärung.

Mit openssl ist die Verschlüsselung auf Basis der Schlüsseldateien sehr einfach und für Scripte gut geeignet.


Quellen:


Ähnliche Themen im blog:
ssl, gpg


zurück