{"id":26095345,"url":"https://github.com/thenativeweb/tlwe2021-krypto-2","last_synced_at":"2026-02-03T08:02:34.555Z","repository":{"id":66053612,"uuid":"433726938","full_name":"thenativeweb/tlwe2021-krypto-2","owner":"thenativeweb","description":"tech:lounge Winter Edition 2021 // Verschlüsselung: RSA, digitale Signaturen \u0026 Co. einsetzen","archived":false,"fork":false,"pushed_at":"2021-12-01T11:59:07.000Z","size":3,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-07-07T02:47:06.901Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thenativeweb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-12-01T07:31:15.000Z","updated_at":"2021-12-01T11:59:10.000Z","dependencies_parsed_at":null,"dependency_job_id":"e0bc0424-ca22-49d5-a2ec-a0b6945087f1","html_url":"https://github.com/thenativeweb/tlwe2021-krypto-2","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/thenativeweb/tlwe2021-krypto-2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thenativeweb%2Ftlwe2021-krypto-2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thenativeweb%2Ftlwe2021-krypto-2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thenativeweb%2Ftlwe2021-krypto-2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thenativeweb%2Ftlwe2021-krypto-2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thenativeweb","download_url":"https://codeload.github.com/thenativeweb/tlwe2021-krypto-2/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thenativeweb%2Ftlwe2021-krypto-2/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29037744,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-03T06:39:36.383Z","status":"ssl_error","status_checked_at":"2026-02-03T06:39:32.787Z","response_time":96,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-09T13:15:48.983Z","updated_at":"2026-02-03T08:02:34.538Z","avatar_url":"https://github.com/thenativeweb.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# tlwe2021-krypto-2\n\ntech:lounge Winter Edition 2021 // Verschlüsselung: RSA, digitale Signaturen \u0026 Co. einsetzen\n\n## Primzahlen\n\nPrimzahl = natürliche Zahl \u003e 1, die nur durch 1 und sich selbst teilbar ist\n2, 3, 5, 7, 11, 13, 17, 19, 23, 29, …\n\nBehauptung: Es gibt unendlich viele Primzahlen\nVorgehen  : Beweis durch Widerspruch\nBeweis    : Angenommen, es gäbe endlich viele Primzahlen\n            =\u003e Es gibt eine größte Primzahl p\n            =\u003e Wir konstruieren eine Zahl q = (2 * 3 * 5 * ... * p) + 1\n            =\u003e q \u003e p =\u003e q kann keine Primzahl sein\n            =\u003e Es muss eine Primfaktorzerlegung von q geben\n            =\u003e Man findet keine =\u003e q muss eine Primzahl sein\n            =\u003e Das ist ein Widerspruch zur Annahme, dass p die größte Primzahl ist\n            =\u003e Es muss unendlich viele Primzahlen geben =\u003e Behauptung bewiesen\n\nIst p eine Primzahl?\n=\u003e Naiver Ansatz: Alle Zahlen von 2 bis (p-1) als Teiler ausprobieren\n\n## Eulersche Phi-Funktion\n\nphi(n) = Wie viele Zahlen gibt es zwischen 1 und n, die keinen gemeinsamen Teiler mit n haben\n\n1  =\u003e phi(1)  =\u003e 1\n6  =\u003e phi(6)  =\u003e 1 und 5 =\u003e 2\n13 =\u003e phi(13) =\u003e 12\n\nphi(15) = phi(5 * 3) = phi(5) * phi(3) = 8\n\n## Primfaktorzerlegung\n\n 8 = 2 * 2 * 2\n 9 = 3 * 3\n10 = 2 * 5\n12 = 2 * 2 * 3\n\n61 * 79 = ?\n=\u003e 4819\n\n6787 = ? * ?\n=\u003e 11 * 617 (durch ausprobieren)\n\n\"Falltürfunktion\"\n\n## Restklassen\n\nN = { 1, 2, 3, 4, 5, 6, ... }\nZ = { ..., -3, -2, -1, 0, 1, 2, 3, ... }\nZ/12 = { 0, 1, 2, ..., 10, 11 }\nZ/n = { 0, 1, 2, ..., n-2, n-1 }\n\n7 + 9 mod 12 = 16 mod 12 = 4\n\nx^a^b = x^b^a\n2^3^4 = 4096 = 2^4^3\n\n((x^a mod y)^b mod y) = ((x^b mod y)^a mod y)\n\n## RSA (Rivest, Shamir, Adleman)\n\n0b1100101 = 64 + 32 + 4 + 1 = 101\n\n1. Schritt: Zwei geheime Primzahlen suchen, p und q\n2. Schritt: Den Modul N = p * q berechnen\n3. Schritt: phi(N) = phi(p * q) = phi(p) * phi(q) = (p - 1) * (q - 1)\n4. Schritt: e (zufällig gewählt, 1 \u003c e \u003c phi(N), e teilerfremd zu phi(N))\n5. Schritt: d = e * d mod phi(N) = 1\n\nM: Message\nC: Encrypted Message\ne: Verschlüsselungsschlüssel\nd: Entschlüsselungsschlüssel\nN: Modul\n\nC = M ^ e mod N\nM = C ^ d mod N\n\n=\u003e M = (M ^ e mod N) ^ d mod N\n   M = (M ^ d mod N) ^ e mod N\n\n^e^d =\u003e muss sich gegenseitig aufheben in mod N\n\nAlice möchte eine Nachricht M an Bob schicken\nZum Verschlüsseln braucht Alice N und e\nZum Entschlüsseln braucht Bob N und d\n\nAblauf:\n- Alice möchte Nachricht an Bob schicken\n- Bob erzeugt N, e und d\n  - (N, e) =\u003e öffentlich (public key)\n  - (N, d) =\u003e privat (private key)\n\nRechenbeispiel:\n\np = 3, q = 5\nN = 3 * 5 = 15\nphi(N) = 2 * 4 = 8\ne = 3\n\nd * e mod phi(N) = 1\nd * 3 mod 8 = 1\n=\u003e d = 3\n\nM = 7\nVerschlüsseln: C = M ^ e mod N = 7 ^ 3 mod 15 = 343 mod 15 = 13\nEntschlüsseln: M = C ^ d mod N = 13 ^ 3 mod 15 = 2197 mod 15 = 7\n\n## Vor- und Nachteile\n\n- Vorteile\n  - Kein geheimer Schlüsselaustausch mehr erforderlich\n  - Viel geringere Anzahl an Schlüsseln als bei symmetrischen Verfahren\n  - Mathematisch vermutlich sicher (hängt von der Sicherheit der Falltürfunktion ab)\n- Nachteile\n  - Relativ langsam\n  - Nachrichtenlänge begrenzt\n\n## In der Praxis: Hybridverfahren\n\nAlice will eine Nachricht M an Bob versenden\nAlice denkt sich einen Zufallsschlüssel r aus\nAlice verschlüsselt M mit r (256 Bit) mit AES-256-CBC =\u003e C\nAlice verschlüsselt r mit dem öffentlichen Schlüssel (N, e) von Bob =\u003e r'\nAlice sendet C und r' an Bob\nBob entschlüsselt r' mit seinem privaten Schlüssel (N, d) =\u003e r\nBob entschlüsselt C mit r =\u003e M\n\n## Elliptische Kurve (ECC = Elliptic Curve Cryptography)\n\nLineare Gleichung     : y = mx + n\nQuadratische Gleichung: y = x^2 + ax + b\n\ny^2 = x^3 + ax + b\n\n## Digitale Signaturen\n\nAlice sendet eine Nachricht an Bob:\n\n- verschlüsseln(Nachricht, pubKey(Bob))) \u003c--- kann jede:r machen\n- entschlüsseln(Nachricht, privKey(Bob)) \u003c--- kann nur Bob machen\n\nAlice möchte eine Nachricht an Bob signieren:\n\n- verschlüsseln(Nachricht, privKey(Alice)) \u003c--- kann nur Alice machen\n- entschlüsseln(Nachricht, pubKey(Alice))  \u003c--- kann jeder machen\n\nBeides zusammen:\n\nAlice möchte eine Nachricht an Bob senden und signieren:\n\n- verschlüsseln(verschlüsseln(Nachricht, privKey(Alice)), pubKey(Bob))\n- entschlüsseln(entschlüsseln(Nachricht, privKey(Bob)), pubKey(Alice))\n\n## Integrität von Nachrichten\n\n- Einwegfunktionen\n  - `'Hallo Welt'.length` =\u003e 10\n\n- Hashfunktionen\n  - f(input) =\u003e hash\n  - Einwegfunktionen\n  - Hashes haben eine feste Länge\n  - Kollisionsfrei: f(a) != f(b) =\u003e a != b\n\n- MD (Message Digest)\n  - MD1 (veraltet)\n  - MD4 (veraltet)\n  - MD5 (veraltet)\n- SHA (Secure Hash Algorithm)\n  - SHA1 (veraltet)\n  - SHA2\n    - SHA256 \u003c---\n    - SHA384\n    - SHA512 \u003c---\n  - SHA3 (Zukunft)\n\nAlice:\n- Hallo Welt, 2d2da19605a34e037dbe82173f98a992a530a5fdd53dad882f570d4ba204ef30\n- 2d2da19605a34e037dbe82173f98a992a530a5fdd53dad882f570d4ba204ef30 =\u003e OK\n\n## Message Authentication Codes (MAC)\n\nAlice und Bob: Gemeinsamen geheimen Schlüssel S\nAlice sendet:\n- Hallo Welt, hash(S + 'Hallo Welt')\n\n=\u003e Hash-basierte MACs =\u003e HMACs\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthenativeweb%2Ftlwe2021-krypto-2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthenativeweb%2Ftlwe2021-krypto-2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthenativeweb%2Ftlwe2021-krypto-2/lists"}