mirror of
https://github.com/theoleuthardt/hwr-notes.git
synced 2026-06-06 01:21:09 +00:00
docs: add obsidian hwr docs
This commit is contained in:
parent
b2636f4b92
commit
850aa3455d
245 changed files with 30757 additions and 0 deletions
BIN
IT-Sicherheit/Hausaufgaben/Hausaufgabe 1.pdf
Normal file
BIN
IT-Sicherheit/Hausaufgaben/Hausaufgabe 1.pdf
Normal file
Binary file not shown.
2
IT-Sicherheit/Hausaufgaben/me.txt
Normal file
2
IT-Sicherheit/Hausaufgaben/me.txt
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
Theo Leuthardt
|
||||
s_leuthardt23@stud.hwr-berlin.de
|
||||
1
IT-Sicherheit/Hausaufgaben/me.txt.enc
Normal file
1
IT-Sicherheit/Hausaufgaben/me.txt.enc
Normal file
|
|
@ -0,0 +1 @@
|
|||
Salted__ΚφβΧcV‘<56>6i<36>w΅άs°<>»V±¥<C2B1>Σ79ξοτο²<CEBF>½—t<E28094>`³Ι<C2B3>¦βΏΦ½Gς<47>RaΛE€{k>†„»Ϋ•βUλV
|
||||
BIN
IT-Sicherheit/Hausaufgaben/me.txt.sig
Normal file
BIN
IT-Sicherheit/Hausaufgaben/me.txt.sig
Normal file
Binary file not shown.
16
IT-Sicherheit/Hausaufgaben/private_key.pem
Normal file
16
IT-Sicherheit/Hausaufgaben/private_key.pem
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBALlrdX/Aq9Rd0c9r
|
||||
oKCGAYtt0bLHuzgWSorCRg+v5Zr0OQRBBO/yT4s00a1deoVH1UAg25GI5bhDPPzK
|
||||
smmVTgA7eM6LN+u7trANIz0wbfuC8zfMc99d/id8EiZ8M5eTrpHEBAesKvOys5Ds
|
||||
GoWby56jTsjXvU4qBwZ+shSZMIz/AgMBAAECgYBszoxi7XNn6a5HY8ccq8aYRVd6
|
||||
7A4HOb2Ac8SdTAEWzx3uSyFUlQLsk5A/hc1yDNctDJsMaiMz3/EX/vJ3VvAv3fUt
|
||||
jaLuTIAgaR3gvaV6xlu/uX4bSm5NxK/M1nAuji4/+kbetgVtux38JqHkYFB0qxGE
|
||||
fxj32ZbZvNq4yeq8cQJBAO6Nx2z40dRs74HLtdLccpp57xjeX/SVNNAduf4cTu4T
|
||||
gl+1tI2GXxInEvCzJtFPv1u6Ho4M54LkaLIqID7RtAsCQQDG+uaCNldte4mbDLIy
|
||||
gxZPFq+Js6I1fbcaC3IOTmuohBSYAkXhY0fmPtPf9wbNbxJWyH8YfKjURpR0fNcg
|
||||
UI9dAkEAvgd261myXNOCXxTVfGlbaa7kRh0utvj8nyRu+vu17HTiEDgA4hQ+O4mg
|
||||
ztkHfQlX2EwE9wdUjLJCrFpeYWxPTQJAK5fQZHqvUMcd8KApcjOR8aXQs2RthzaR
|
||||
pN0ZEdVQdMzrDhqBYM21dNYS6SBflyZcaDLo1V6KRmdoItUu9F9x6QJBAId8yTCY
|
||||
rOxCMhaGJZjdzhMJbmGuC6hFqlC276ibhuvdTsSFetegJdbQ+E1X6GqilEgTXQah
|
||||
JzjzfdMHwWjDIw0=
|
||||
-----END PRIVATE KEY-----
|
||||
6
IT-Sicherheit/Hausaufgaben/public_key.pem
Normal file
6
IT-Sicherheit/Hausaufgaben/public_key.pem
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
-----BEGIN PUBLIC KEY-----
|
||||
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5a3V/wKvUXdHPa6CghgGLbdGy
|
||||
x7s4FkqKwkYPr+Wa9DkEQQTv8k+LNNGtXXqFR9VAINuRiOW4Qzz8yrJplU4AO3jO
|
||||
izfru7awDSM9MG37gvM3zHPfXf4nfBImfDOXk66RxAQHrCrzsrOQ7BqFm8ueo07I
|
||||
171OKgcGfrIUmTCM/wIDAQAB
|
||||
-----END PUBLIC KEY-----
|
||||
172
IT-Sicherheit/Hausaufgaben/solution.md
Normal file
172
IT-Sicherheit/Hausaufgaben/solution.md
Normal file
|
|
@ -0,0 +1,172 @@
|
|||
# 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
|
||||
```bash
|
||||
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
|
||||
```bash
|
||||
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
|
||||
```bash
|
||||
# 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
|
||||
```bash
|
||||
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 |
|
||||
Loading…
Add table
Add a link
Reference in a new issue