Praktische Kryptographie
Kryptographie für Softwareentwickler
Description
Dieser Kurs ist für alle, die Kryptographie verstehen wollen: was das ist, wozu verwendet man das, wie verwendet man das. Was sind die Unterschiede zwischen verschiedenen kryptographischen Algorithmen, was für Algorithmen gibt es überhaupt, welche Algorithmen soll man verwenden und warum. Was für Angriffe gibt es, und worauf muss man achten, um sich gegen die Angriffe zu schützen.
In diesem Kurs werde ich Ihnen über die folgenden Themen erzählen:
Überblick über die Terminologie, verschiedene kryptographische Primitive, verschiedene kryptographische Protokolle
Hash-Funktionen (z.B. SHA-256); Motivation, Merkmale und Anwendung
Message Authentication Code (MAC); Motivation und Verwendung
Schlüsselableitungsfunktionen (KDF), bcrypt, Salt
Symmetrische Kryptographieverfahren: AES-128, AES-256, ChaCha20, AEAD; Betriebsmodi z.B. CBC, GCM
Asymmetrische Kryptographieverfahren: RSA, ECC (EdDSA), ECIES; Verwendung verschiedener elliptischen Kurven z.B. NIST P-256, Curve25519
Angriffsszenarien: MITM, Kollisionsangriffe, Wörterbuchangriffe, Regenbogentabellen, Plaintext-Angriffe, Ciphertext-Angriffe, Replay-Angriffe, Padding-Orakel-Angriffe, Seitenkanalangriffe
One-Time Passwords
Shamir's Secret Sharing
JavaScript Crypto.Subtle-API
TLS/HTTPS, X.509-Zertifikate, Verwendung von OpenSSL
Verschiedene kryptographische Protokolle: SSH, PGP/GPG, Bitcoin, Signal
Hauptsächlich wird die Information mit Hilfe von Slides übermittelt, jedoch gibt es viele Code-Beispiele U.a. werden die folgenden Bibliotheken exemplarisch verwendet:
PyCryptodome (mehrere Vorlesungen)
Cryptography in Python (mehrere Vorlesungen)
Javax.Crypto-API (Eine Vorlesung)
JavaScript Crypto.Subtle-API (Eine Vorlesung)
Zusätzlich beinhalten einige Vorlesungen Beispiele über Kommandozeile, z.B. zur Verwendung von OpenSSL.
Das Ziel des Kurses ist, dem Studierenden die Prinzipien der verschiedenen kryptographischen Algorithmen, Verfahren und Protokolle beizubringen, damit der Studierende in der Lage ist, mit der Programmiersprache und Softwarebibliothek seiner Wahl die verschiedenen Algorithmen und Protokolle anwenden zu können.
Willkommen!
What You Will Learn!
- Unterschiede zwischen verschiedenen kryptographischen Algorithmen verstehen
- Verwendungszwecke zwischen verschiedenen kryptographischen Algorithmen und Protokollen verstehen
- Prinzipien hinter der Verwendung der verschiedenen kryptographischen Algorithmen verstehen
- Implementierungen kryptographischer Algorithmen verwenden können
Who Should Attend!
- Für Softwareentwickler, die Kryptographie verwenden wollen
- Für die, die über die Grundlagen von Kryptographie lernen wollen