hwr-notes/IT-Sicherheit/Hausaufgaben/solution.md
2026-04-09 11:24:56 +02:00

7.1 KiB

Lösung — Übung 1 IT-Sicherheit

Theo Leuthardt | s_leuthardt23@stud.hwr-berlin.de


Aufgabe 2: Kryptographische Fingerabdrücke

Was wird gemacht?

Aus der Datei me.txt (enthält Name + Email) werden zwei Hashwerte berechnet: MD5 und SHA3-256. Ein Hash ist ein "digitaler Fingerabdruck" — eine feste kurze Zeichenkette, die sich komplett ändert, sobald auch nur ein Zeichen in der Datei verändert wird.

Befehle

openssl dgst -md5 me.txt
openssl dgst -sha3-256 me.txt

Ergebnis

Verfahren Hashwert
MD5 cf48c000237cbfc026fbc9002ab5d3f3
SHA3-256 415e2e9a0fe8e140c0b7db92faa15586b2296520a6fd3cdd93f05bc74e574808

Erklärung

  • openssl dgst berechnet kryptographische Hashwerte
  • MD5 erzeugt einen 128-Bit-Hash (32 Hex-Zeichen). MD5 gilt heute als unsicher (Kollisionen möglich), wird aber noch als Prüfsumme verwendet.
  • SHA3-256 erzeugt einen 256-Bit-Hash (64 Hex-Zeichen). SHA-3 ist der neueste Standard (Keccak-Algorithmus) und gilt als sicher.

Aufgabe 3: Verschlüsselung mit AES-256

Was wird gemacht?

Die Datei me.txt wird symmetrisch mit AES-256 verschlüsselt. Als Schlüssel (Passwort) dient die eigene Email-Adresse.

Befehl

openssl enc -aes-256-cbc -salt -pbkdf2 -in me.txt -out me.txt.enc -pass pass:s_leuthardt23@stud.hwr-berlin.de

Ergebnis

Verschlüsselte Datei: me.txt.enc

Erklärung

Parameter Bedeutung
enc -aes-256-cbc Verschlüsselung mit AES-256 im CBC-Modus (Cipher Block Chaining)
-salt Fügt Zufallsdaten hinzu, damit gleiche Eingaben unterschiedliche Chiffretexte erzeugen
-pbkdf2 Leitet aus dem Passwort einen sicheren Schlüssel ab (Password-Based Key Derivation Function 2)
-pass pass:... Das Passwort (hier: die Email-Adresse)

Zum Entschlüsseln: openssl enc -d -aes-256-cbc -pbkdf2 -in me.txt.enc -out me_decrypted.txt -pass pass:s_leuthardt23@stud.hwr-berlin.de


Aufgabe 4: Krypto-Software für SHA, AES, RSA und TLS

Recherche-Ergebnis

Software SHA AES RSA TLS Windows MacOS Linux
OpenSSL ja ja ja ja ja ja ja
GnuPG (GPG) ja ja ja - ja ja ja
VeraCrypt ja (SHA-512) ja (AES-256) - - ja ja ja
LibreSSL ja ja ja ja ja ja ja
Bouncy Castle ja ja ja ja ja ja ja
wolfSSL ja ja ja ja ja ja ja
GnuTLS ja ja ja ja - ja ja
CryptoSys PKI Pro ja ja ja - ja - ja
mbed TLS ja ja ja ja ja ja ja
Cryptomator ja ja - - ja ja ja
IIS Crypto ja ja ja ja ja (nur) - -
Linux Crypto API ja ja ja - - - ja (nur)

Erklärung

  • OpenSSL ist der De-facto-Standard und auf fast allen Systemen vorinstalliert (macOS, Linux). Unterstützt alle vier Algorithmenklassen.
  • GnuPG ist die freie OpenPGP-Implementierung, primär für Verschlüsselung und Signaturen.
  • VeraCrypt ist für Festplattenverschlüsselung gedacht (Nachfolger von TrueCrypt).
  • LibreSSL ist ein OpenSSL-Fork von OpenBSD mit Fokus auf Sicherheit.
  • Bouncy Castle ist eine Java/C#-Kryptographie-Bibliothek.
  • wolfSSL und mbed TLS sind leichtgewichtige TLS-Bibliotheken, oft für Embedded-Systeme.

Aufgabe 5: RSA-1024 Schlüsselpaar

Was wird gemacht?

Ein RSA-Schlüsselpaar (1024 Bit) wird generiert: ein privater Schlüssel (geheim halten!) und ein öffentlicher Schlüssel (darf geteilt werden).

Befehle

# Privaten Schlüssel generieren
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:1024 -out private_key.pem

# Öffentlichen Schlüssel extrahieren
openssl pkey -in private_key.pem -pubout -out public_key.pem

Ergebnis

Öffentlicher Schlüssel (public_key.pem):

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5a3V/wKvUXdHPa6CghgGLbdGy
x7s4FkqKwkYPr+Wa9DkEQQTv8k+LNNGtXXqFR9VAINuRiOW4Qzz8yrJplU4AO3jO
izfru7awDSM9MG37gvM3zHPfXf4nfBImfDOXk66RxAQHrCrzsrOQ7BqFm8ueo07I
171OKgcGfrIUmTCM/wIDAQAB
-----END PUBLIC KEY-----

Erklärung

  • RSA ist ein asymmetrisches Verschlüsselungsverfahren mit zwei Schlüsseln.
  • Der private Schlüssel wird zum Entschlüsseln und Signieren verwendet — darf niemals weitergegeben werden.
  • Der öffentliche Schlüssel wird zum Verschlüsseln und Verifizieren verwendet — kann frei verteilt werden.
  • 1024 Bit gilt heute als unsicher für produktive Systeme (mindestens 2048 Bit empfohlen), reicht aber für diese Übung.

Aufgabe 6: Datei signieren

Was wird gemacht?

Die Datei me.txt wird mit dem privaten RSA-Schlüssel digital signiert. Damit kann jeder mit dem öffentlichen Schlüssel verifizieren, dass die Datei tatsächlich von dir stammt und nicht verändert wurde.

Befehl

openssl dgst -sha256 -sign private_key.pem -out me.txt.sig me.txt

Ergebnis

Signatur-Datei: me.txt.sig

Signatur (Base64):

hHWGEu44cmgXi9YYGpLYEnuTg4LmArqMB5mCMs9wdVhBlIDPGa0AFVVnp52AD9pG
wAf/i57PwKeT/bCRXpFc+9lOapQFnL6jDWEX/CdNak3yXkLgzIIQVm4BVpKvOlsU
VnHT0cP73+SlT8pCjUq7Ub2bIGvmJVBMcfLrDiVLjXU=

Erklärung

  • openssl dgst -sha256 -sign erstellt zuerst einen SHA-256-Hash der Datei und verschlüsselt diesen dann mit dem privaten Schlüssel.
  • Zur Verifikation: openssl dgst -sha256 -verify public_key.pem -signature me.txt.sig me.txt
  • Eine digitale Signatur gewährleistet Authentizität (Absender ist echt) und Integrität (Datei wurde nicht verändert).

Aufgabe 7: Anbieter für kostenloses Public-Key-Hosting

Anbieter Beschreibung URL
keys.openpgp.org Offizieller OpenPGP-Keyserver, verifiziert Email-Adressen https://keys.openpgp.org
keyserver.ubuntu.com Ubuntus öffentlicher PGP-Keyserver https://keyserver.ubuntu.com
GitHub SSH/GPG Public Keys können im Profil hinterlegt werden https://github.com/settings/keys
GitLab Wie GitHub, unterstützt GPG- und SSH-Keys https://gitlab.com
Keybase Verknüpft Public Keys mit Social-Media-Identitäten https://keybase.io
MIT PGP Keyserver Einer der ältesten öffentlichen Keyserver https://pgp.mit.edu

Erklärung

  • Keyserver sind öffentliche Verzeichnisse, in denen jeder seinen öffentlichen Schlüssel hochladen kann.
  • Andere können den Schlüssel dann herunterladen, um verschlüsselte Nachrichten zu senden oder Signaturen zu verifizieren.
  • keys.openpgp.org ist der modernste Ansatz, da er Email-Verifizierung erfordert (kein Spam möglich).
  • GitHub/GitLab sind praktisch für Entwickler, die ihre GPG-Keys für signierte Commits nutzen.

Zusammenfassung der erstellten Dateien

Datei Beschreibung
me.txt Originaldatei mit Name und Email
me.txt.enc AES-256 verschlüsselte Version
private_key.pem Privater RSA-1024 Schlüssel (NICHT mitschicken!)
public_key.pem Öffentlicher RSA-1024 Schlüssel
me.txt.sig Digitale Signatur der Datei