Mittwoch, 2025-12-17_Betriebssysteme_WED¶
SSH, Kryptographie und schlüsselbasierte Authentifizierung¶
Thema: SSH, Verschlüsselung, Schlüsselpaare
Kontext: Sicherheit, Authentifizierung, Praxis (Windows ↔ Linux)
1. SSH – Secure Shell¶
SSH ist ein Netzwerkprotokoll zur verschlüsselten und authentifizierten Kommunikation zwischen Client und Server.
SSH gewährleistet:
- Vertraulichkeit – Verschlüsselung der Daten
- Integrität – Schutz vor unbemerkter Manipulation
- Authentizität – Identitätsprüfung von Server und ggf. Client
Typische Einsatzgebiete:
- Remote-Administration
- Sichere Dateiübertragung
- Automatisierung
- Serverwartung
2. Kryptographische Grundprinzipien in SSH¶
SSH kombiniert mehrere Verfahren mit unterschiedlichen Aufgaben.
2.1 Symmetrische Verschlüsselung¶
- Ein gemeinsamer Schlüssel
- Schnell
- Geeignet für große Datenmengen
Problem:
Der Schlüssel muss zuvor sicher ausgetauscht werden.
2.2 Asymmetrische Verschlüsselung¶
- Zwei Schlüssel:
- Public Key
- Private Key
- Mathematisch verknüpft
- Private Key verlässt niemals den Client
Verwendung:
- Authentifizierung
- Schlüsselaustausch
3. Signatur vs. Schlüsselaustausch¶
Ed25519¶
- Elliptische-Kurven-Signatur
- Wird für Authentifizierung verwendet
- Dient der Identitätsprüfung
(EC)Diffie-Hellman¶
- Dient zur Session-Key-Aushandlung
- Beispiel:
curve25519-sha256
Merksatz
- Ed25519 → Identität
- (EC)DH → Session-Key
4. Kryptographischer Hintergrund¶
- RSA → Primfaktorzerlegung
- Diffie-Hellman → diskreter Logarithmus
- Ed25519 → elliptische Kurven
Für Prüfungen zählt das Prinzip, nicht die Mathematik.
5. Vereinfachtes RSA-Beispiel (didaktisch)¶
Nicht sicher – nur zur Veranschaulichung.
- p = 5
- q = 11
- n = 55
- e = 3
- d = 27
Verschlüsselung:
c = 7³ mod 55 = 13
Entschlüsselung:
m = 13²⁷ mod 55 = 7
Prinzip:
- Public Key verschlüsselt
- Private Key entschlüsselt
6. Aufbau einer SSH-Verbindung¶
Ablauf:
- Client verbindet sich
- Server präsentiert Host Key
- Session-Key wird ausgehandelt
- Kommunikation erfolgt symmetrisch
sequenceDiagram
participant Client
participant Server
Client->>Server: Verbindungsanfrage
Server->>Client: Host Key
Client->>Server: Key Exchange
Server->>Client: Bestätigung
Client->>Server: Verschlüsselte Kommunikation
7. Praxis – Windows ↔ Ubuntu (VirtualBox)¶
Ubuntu vorbereiten¶
sudo apt update
sudo apt install -y openssh-server
sudo systemctl enable --now ssh
ip a
Windows – Schlüssel erzeugen¶
ssh-keygen -t ed25519 -a 64 -f $env:USERPROFILE\.ssh\id_ed25519 -C "Sean@BS-WED"
Public Key übertragen¶
Automatisch:
ssh-copy-id -i $env:USERPROFILE\.ssh\id_ed25519.pub sean@192.168.56.101
Manuell:
type $env:USERPROFILE\.ssh\id_ed25519.pub
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
Verbindung testen¶
ssh sean@192.168.56.101
SSH-Config (optional)¶
Host ubuntu-vm
HostName 192.168.56.101
User sean
IdentityFile ~/.ssh/id_ed25519
Passwort-Login deaktivieren¶
sudo nano /etc/ssh/sshd_config
PasswordAuthentication no
PubkeyAuthentication yes
sudo systemctl restart ssh
Kernaussage¶
Der Transportweg des Public Keys kann variieren,
aber das kryptographische Prinzip bleibt identisch:
Der Server prüft den Besitz des Private Keys –
ohne dass dieser jemals übertragen wird.