diff --git a/.obsidian/plugins/obsidian-completr/scanned_words.txt b/.obsidian/plugins/obsidian-completr/scanned_words.txt index e5e36ea..52dd016 100644 --- a/.obsidian/plugins/obsidian-completr/scanned_words.txt +++ b/.obsidian/plugins/obsidian-completr/scanned_words.txt @@ -4812,6 +4812,7 @@ Lösungsraum Lassen LrZb LUQ +LIy Filter FlateDecode Ff @@ -8458,6 +8459,8 @@ sre sHy speziellen stattdessen +sCav +sQYyv ZKs ZN Zf @@ -10376,6 +10379,10 @@ Zugangsbarriere Zähler Zkp Zustands +ZWXMCg +ZxU +Zqa +ZlX Who We WE @@ -12656,6 +12663,7 @@ Wolfram WPA Wsg WpC +WbBg KI Kt KF @@ -14563,6 +14571,7 @@ Klartext Kern Kerns Kombination +KKUA bq bQ bG @@ -16351,6 +16360,9 @@ befindet betrachtet beeinflusst bedingten +beB +bmO +bVv iZ ig iA @@ -18344,6 +18356,8 @@ impliziert injektiv irreduzible irreduzibles +ieBY +iwmg GJe GAG GJ @@ -20174,6 +20188,7 @@ Gkzk GRa GmfD GTz +GMY AO Aw Az @@ -21678,6 +21693,8 @@ Also AKA Ausführung Addition +ACQB +ACT QV Qom QJ @@ -23508,6 +23525,8 @@ QUi QIY Quantitative Qualitative +QVx +QDTA nQC nq nR @@ -27377,6 +27396,7 @@ YoCk YKf YAE Ymtn +YaY UIQ Ue UH @@ -30052,6 +30072,7 @@ Updates Unsere Unser UaV +UzTa TZ TF TP @@ -32203,6 +32224,7 @@ Target Textform TFMd TZYJ +TbQS gO gHoVo gD @@ -34015,6 +34037,9 @@ gesamte gXQ geschieht genommen +gdDk +gMb +gPzF DMg Dv DLg @@ -37471,6 +37496,9 @@ xpL xTHt xkjB xFF +xlW +xjy +xYOT Hx HV HdH @@ -38584,6 +38612,8 @@ HGq HdF Hhvmz HwI +Howi +HhXQ zo zL zE @@ -43547,6 +43577,7 @@ pjc psU pEEL passt +phM Ic IT Ir @@ -45365,6 +45396,9 @@ Informationstechnologiesicherheitsevaluierung Initialisierungsvektor Ivt IxH +IRfzn +IcY +IXwc ap aE at @@ -46933,6 +46967,7 @@ anders aufspannen anderes addieren +aFH fb fVVvD fh @@ -50036,6 +50071,9 @@ Begriffe Befehls Bitverschiebungen Bitverschiebung +Bda +BykQ +BqZ ek eP eVPm @@ -52255,6 +52293,7 @@ einzige ersetzen ersetzende erstes +eGYJw tj tg tt @@ -54355,6 +54394,9 @@ triviale tvSo tsk tZm +tJV +tZtx +tPzy JFRO JG JL @@ -55909,6 +55951,8 @@ JJUr Jedes Jmc JVlx +JGIz +JfXy kXW kW kp @@ -58131,6 +58175,8 @@ korrekt kurzer komplex kxH +kcrL +kWE EU Evq Er @@ -62379,6 +62425,7 @@ lsxoj lpyU letzte lässt +lXy wG wd ws @@ -66088,6 +66135,9 @@ Raum Rang RLoJ RPG +RnW +RnvOR +RRqBj vJ vS vKDF @@ -68165,6 +68215,7 @@ viel verfügbar vzEv viertes +vUm XE Xd XRb @@ -69608,6 +69659,8 @@ XiH XCof XdiT XaS +XWd +XzU NW Ni Nj @@ -71593,6 +71646,7 @@ Nullraum Nullvektor NkO NEXt +NYM jhpK jb jl @@ -75967,6 +76021,7 @@ Methode Menge MlS MVX +MRs qO qj qG @@ -77667,6 +77722,13 @@ qpA qiy qZk qwO +qyP +qaN +qcgp +qmd +qNC +qlKY +qDC yB yyNs yQU @@ -79552,6 +79614,8 @@ yDV yKyl yil yYD +yKI +yFV ulC uk un @@ -81625,6 +81689,9 @@ umkippt unbrauchbar uns uzb +uwrPKx +uuxK +uau ma ml mB @@ -83843,6 +83910,8 @@ möglichen modulo manuell multiplizierten +mZJ +mUMo dg dw de @@ -86079,6 +86148,9 @@ dTTW dHKC dezimal drittes +dmnn +dpm +deDS VV VA Vsm @@ -88256,6 +88328,9 @@ Volumen VnH VgZ Verschiebung +VXNfa +VMWd +VvvNT SGN Sg SrEHO @@ -90186,6 +90261,7 @@ SJb SzW StD SSD +SWc rn rE rD @@ -92163,6 +92239,9 @@ rotieren rotierte restlichen rcgQ +rOX +rOUPg +rTocS Cu CL Ch @@ -93461,6 +93540,11 @@ Cipher Chaining Cloud Cqx +Crcn +CgY +CkG +CXB +CpB OM OWR Os @@ -97571,6 +97655,7 @@ cBg csU cRKv cYl +cmmfr öUS öG öd @@ -97652,6 +97737,7 @@ cYl ÄC Äp Änderung +ÄeY äz äh äe diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index b4635b0..6b6e943 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -14,7 +14,7 @@ "state": { "type": "markdown", "state": { - "file": "Informationssicherheit/Ueb5/new UEB5.md", + "file": "Informationssicherheit/Ueb6/Ueb 6.md", "mode": "source", "source": false } @@ -28,12 +28,12 @@ "dimension": 43.366425992779774, "children": [ { - "id": "dc9bd541f67f53ab", + "id": "728619bc92a7790a", "type": "leaf", "state": { "type": "pdf", "state": { - "file": "Informationssicherheit/Ueb5/05-ueb_uebungsblatt.pdf" + "file": "Informationssicherheit/Ueb6/06-ueb_uebungsblatt.pdf" } } } @@ -111,7 +111,7 @@ "state": { "type": "backlink", "state": { - "file": "Informationssicherheit/Ueb5/new UEB5.md", + "file": "Informationssicherheit/Ueb6/Ueb 6.md", "collapseAll": false, "extraContext": false, "sortOrder": "alphabetical", @@ -128,7 +128,7 @@ "state": { "type": "outgoing-link", "state": { - "file": "Informationssicherheit/Ueb5/new UEB5.md", + "file": "Informationssicherheit/Ueb6/Ueb 6.md", "linksCollapsed": false, "unlinkedCollapsed": true } @@ -151,7 +151,7 @@ "state": { "type": "outline", "state": { - "file": "Informationssicherheit/Ueb5/new UEB5.md" + "file": "Informationssicherheit/Ueb6/Ueb 6.md" } } }, @@ -214,8 +214,12 @@ }, "active": "803efb657af4bf78", "lastOpenFiles": [ - "Informationssicherheit/Ueb5/Ueb5.md", + "Informationssicherheit/Ueb6/06-ueb_uebungsblatt.pdf", + "Informationssicherheit/Ueb6/Ueb 6.md", "Informationssicherheit/Ueb5/new UEB5.md", + "Informationssicherheit/Ueb6", + "Informationssicherheit/Neuer Ordner", + "Informationssicherheit/Ueb5/Ueb5.md", "Informationssicherheit/Ueb5/05-ueb_uebungsblatt.pdf", "Mathe/KW20/KW20-VekRau_vor.pdf", "Mathe/KW20/KW20-VekRau.pdf", @@ -227,9 +231,6 @@ "Mathe/KW20", "English/Matters Technik - IT Matters 3rd EditionB1B2 - Englisch Für IT-Berufe Schülerbuch (Isobel E. Williams) (Z-Library).pdf", "Algorithmen und Datenstrukturen/VL/VL06/VL07.md", - "Algorithmen und Datenstrukturen/VL/VL06", - "Algorithmen und Datenstrukturen/VL", - "Informationssicherheit/Ueb5", "English/KW18.md", "Mathe/KW17/KW17.md", "Mathe/KW20.md", @@ -252,8 +253,6 @@ "Informationssicherheit/Ueb2/2023-04-17_14-16.png", "Untitled 1.md", "Untitled.md", - "Excalidraw/Drawing 2023-04-17 08.21.36.excalidraw.md", - "Excalidraw/Drawing 2023-04-17 08.21.00.excalidraw.md", "Informationssicherheit/Ueb1/20230330_19h30m31s_grim.png", "Informationssicherheit/Ueb1/20230330_19h34m13s_grim.png", "Informationssicherheit/Ueb1/20230331_07h21m13s_grim.png", diff --git a/Informationssicherheit/Ueb6/06-ueb_uebungsblatt.pdf b/Informationssicherheit/Ueb6/06-ueb_uebungsblatt.pdf new file mode 100644 index 0000000..7c91e70 Binary files /dev/null and b/Informationssicherheit/Ueb6/06-ueb_uebungsblatt.pdf differ diff --git a/Informationssicherheit/Ueb6/Ueb 6.md b/Informationssicherheit/Ueb6/Ueb 6.md new file mode 100644 index 0000000..5a1bafd --- /dev/null +++ b/Informationssicherheit/Ueb6/Ueb 6.md @@ -0,0 +1,133 @@ +# 1 +## a +Kryptographische Hashfunktionen sind spezielle Funktionen mit verschiedenen Eigenschaften, die sie nützlich für Kryptographie machen. Diese sollten folgende Eigenschaften haben: + +1. **Deterministisch**: Für jede Eingabe liefert die Hashfunktion immer den gleichen Hashwert. Wenn Sie die gleiche Nachricht erneut durch die Funktion senden, erhalten Sie immer den gleichen Ausgang. + +2. **Schnelle Berechnung**: Für jede gegebene Eingabe sollte die Berechnung des Hashwerts effizient und schnell sein. + +3. **Preimage-Resistenz**: Es sollte rechnerisch unpraktisch sein, die ursprüngliche Eingabe anhand ihres Hashwerts zu ermitteln. Diese Eigenschaft ist manchmal auch als "Einwegfunktion" bekannt. + +4. **Kleine Änderungen in der Eingabe erzeugen große Änderungen in der Ausgabe**: Eine Änderung, selbst eine sehr kleine, in der Eingabe sollte eine völlig andere Ausgabe erzeugen. + +5. **Kollisionsresistenz**: Es sollte extrem schwierig sein, zwei verschiedene Eingaben zu finden, die den gleichen Hashwert erzeugen. Dies ist wichtig, um die Integrität von Daten in vielen Anwendungen zu gewährleisten. + +6. **Feste Ausgabegröße**: Unabhängig von der Größe der Eingabe sollte die Ausgabe immer eine konstante Länge haben. + +## b + +1. **Digitale Signaturen**: Digitale Signaturen verwenden Hashfunktionen, um die Integrität von Daten in einer Nachricht oder einem Dokument zu gewährleisten. Die Daten werden gehasht und der resultierende Hashwert wird mit einem privaten Schlüssel signiert. Der Empfänger kann dann den gesendeten Hash mit dem öffentlichen Schlüssel des Absenders überprüfen. Wenn die Hashes übereinstimmen, kann sichergestellt werden, dass die Daten seit ihrer Signatur nicht geändert wurden. +2. **Passwort-Speicherung**: Eine der häufigsten Anwendungen für Hashfunktionen ist die Speicherung von Passwörtern. Anstatt ein Passwort direkt in einer Datenbank zu speichern, wird das Passwort durch eine Hashfunktion geleitet und der resultierende Hashwert wird gespeichert. Wenn ein Benutzer sein Passwort eingibt, wird es erneut durch die Hashfunktion geleitet und mit dem gespeicherten Hashwert verglichen. Wenn die Werte übereinstimmen, ist das Passwort korrekt. Dies bietet einen zusätzlichen Sicherheitsschutz, da selbst wenn ein Angreifer Zugriff auf die gespeicherten Hashwerte erhält, es extrem schwierig ist, das ursprüngliche Passwort aus dem Hashwert abzuleiten. + +# 2 +a) **Beweisskizze für das Geburtstagsparadoxon**: + +Das Geburtstagsparadoxon ist weniger intuitiv, weil es nicht um die Wahrscheinlichkeit geht, dass eine bestimmte Person mit einer anderen am selben Tag Geburtstag hat, sondern darum, dass irgendein Paar von Personen am selben Tag Geburtstag hat. + +Angenommen, wir ignorieren Schaltjahre, es gibt also 365 mögliche Geburtstage. Die Wahrscheinlichkeit, dass zwei Personen an unterschiedlichen Tagen Geburtstag haben, beträgt 364/365. + +Wenn eine dritte Person hinzukommt, gibt es 363 Tage übrig, an denen sie Geburtstag haben kann, ohne dass es zu einer Übereinstimmung kommt, also ist die Wahrscheinlichkeit 363/365. + +Dies wird fortgesetzt, bis die 23. Person hinzukommt, bei der die Wahrscheinlichkeit 343/365 beträgt. Die Gesamtwahrscheinlichkeit, dass niemand in einer Gruppe von 23 Personen am selben Tag Geburtstag hat, ist das Produkt dieser Wahrscheinlichkeiten. Wenn man dies berechnet, findet man heraus, dass es knapp unter 0,5 liegt. Daher ist die Wahrscheinlichkeit, dass mindestens zwei Personen am selben Tag Geburtstag haben, knapp über 0,5, d.h. über 50%. + +| Person | Einzigartiger Geburtstag | Kumulative Wahrscheinlichkeit | +| --- | --- | --- | +| 1 | 365/365 = 1.000 | 1.000 | +| 2 | 364/365 = 0.997 | 0.997 | +| 3 | 363/365 = 0.994 | 0.992 | +| 4 | 362/365 = 0.992 | 0.983 | +| 5 | 361/365 = 0.989 | 0.973 | +| 6 | 360/365 = 0.986 | 0.960 | +| 7 | 359/365 = 0.984 | 0.945 | +| 8 | 358/365 = 0.981 | 0.927 | +| 9 | 357/365 = 0.978 | 0.907 | +| 10 | 356/365 = 0.975 | 0.884 | +| 11 | 355/365 = 0.973 | 0.860 | +| 12 | 354/365 = 0.970 | 0.834 | +| 13 | 353/365 = 0.967 | 0.807 | +| 14 | 352/365 = 0.964 | 0.778 | +| 15 | 351/365 = 0.962 | 0.748 | +| 16 | 350/365 = 0.959 | 0.717 | +| 17 | 349/365 = 0.956 | 0.685 | +| 18 | 348/365 = 0.953 | 0.652 | +| 19 | 347/365 = 0.951 | 0.618 | +| 20 | 346/365 = 0.948 | 0.586 | +| 21 | 345/365 = 0.945 | 0.552 | +| 22 | 344/365 = 0.943 | 0.520 | +| 23 | 343/365 = 0.940 | 0.489 | + +b) **Berechnung der Kollision von 96-Bit-Hashwerten**: + +Das Geburtstagsparadoxon lässt sich auch auf das Problem der Kollision von Hashwerten anwenden, das als Geburtstagsproblem bekannt ist. In diesem Kontext ist eine Kollision der Punkt, an dem zwei unterschiedliche Eingaben den gleichen Hashwert erzeugen. + +Die Anzahl der verschiedenen 96-Bit-Hashwerte beträgt 2^96. Um die durchschnittliche Anzahl der Hashwerte zu berechnen, die erzeugt werden müssen, bevor eine Kollision auftritt, verwenden wir die Quadratwurzel aus dieser Anzahl (dies ist eine Anwendung der Geburtstagsattacke), also etwa 2^(96/2) = 2^48. + +Es ist jedoch wichtig zu beachten, dass dies eine durchschnittliche Zahl ist. In der Praxis könnte eine Kollision viel früher oder viel später auftreten. Aber dies gibt uns eine Vorstellung davon, warum größere Hashlängen sicherer sind: Sie machen Kollisionen wesentlich unwahrscheinlicher. + +# 3 + +## a +SHA-2 (Secure Hash Algorithm 2) ist eine Gruppe von kryptographischen Hashfunktionen, die vom National Institute of Standards and Technology (NIST) entwickelt wurden. Die SHA-2-Familie umfasst SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 und SHA-512/256. Die Zahlen beziehen sich auf die Länge des Hashwerts, der produziert wird. + +Das Padding spielt eine wichtige Rolle im SHA-2-Algorithmus. Der Eingabetext muss eine Länge haben, die einem Vielfachen des Blockgrößenlimits entspricht (512 Bit für SHA-256, 1024 Bit für SHA-512, usw.). Wenn der Eingabetext nicht diese Bedingung erfüllt, wird er durch Hinzufügen von zusätzlichen Bits - dem sogenannten Padding - aufgefüllt. + +Das Padding für die SHA-2 Familie erfolgt in folgenden Schritten: + +1. **Anhängen eines 1-Bits**: Der erste Schritt besteht darin, ein Bit mit dem Wert "1" an die Eingabe anzuhängen. + +2. **Anhängen von k-Bits mit dem Wert "0"**: Anschließend werden Null-Bits angehängt, bis die Länge der Nachricht modulo die Blockgröße 448 (für SHA-256) oder 896 (für SHA-512) ist. Das heißt, es werden so viele Nullen angehängt, dass nur noch genug Platz für die Länge der ursprünglichen Nachricht ist. + +3. **Anhängen der Länge der Originalnachricht**: Die letzten 64 (für SHA-256) oder 128 (für SHA-512) Bits des Blocks werden verwendet, um die Länge der ursprünglichen Nachricht (vor dem Padding) in Binärform anzuhängen. Wenn die Länge der Nachricht weniger Bits benötigt, wird sie mit Null-Bits auf die benötigte Länge aufgefüllt. + +Dieses Verfahren stellt sicher, dass die gepaddete Nachricht eine Länge hat, die ein Vielfaches der Blockgröße ist, und es ermöglicht es dem Algorithmus, den Hashwert zu berechnen, selbst wenn die ursprüngliche Nachricht nicht die richtige Länge hat. Darüber hinaus sorgt das Padding dafür, dass jede Nachricht (einschließlich verschiedener Nachrichten mit der gleichen Länge) zu einem eindeutigen Hashwert führt, da die Länge der Nachricht im Padding enthalten ist. + +## b + +Um das Padding für SHA-256 für den Text "hello, world" durchzuführen, folgen wir den Schritten, die ich zuvor beschrieben habe. + +1. **Text in Binär konvertieren**: Jedes ASCII-Zeichen wird in seine 8-Bit-Binärdarstellung umgewandelt. Für "hello, world" ergibt das: + + "hello, world" in ASCII ist 68 65 6c 6c 6f 2c 20 77 6f 72 6c 64, was in Binär umgewandelt: + + h: 01101000 + + e: 01100101 + + l: 01101100 + + l: 01101100 + + o: 01101111 + + ,: 00101100 + + (Leerzeichen): 00100000 + + w: 01110111 + + o: 01101111 + + r: 01110010 + + l: 01101100 + + d: 01100100 + + Die kombinierte Binärnachricht wird: + 011010000110010101101100011011000110111100101100001000000111011101101111011100100110110001100100 + +2. **ein 1-Bit am Ende hinzufügen**: + 0110100001100101011011000110110001101111001011000010000001110111011011110111001001101100011001001 + +3. **Nullen hinzufügen**: Wir fügen Nullen hinzu, bis die Länge der Nachricht modulo 512 gleich 448 ist. Da unsere Nachricht derzeit 97 Bit lang ist, fügen wir 447-97=350 Nullen hinzu: + 0110100001100101011011000110110001101111001011000010000001110111011011110111001001101100011001001 + 350 Nullen + +4. **Länge der Originalnachricht hinzufügen**: Schließlich fügen wir die Länge der ursprünglichen Nachricht als 64-Bit-Binärzahl hinzu. Die Originalnachricht war 96 Bit lang, was in Binär 1100000 ist. Wir fügen Nullen vorne hinzu, um 64 Bit zu erhalten: + + 00000000000000000000000000000000000000000000000000000001100000 + +Unsere endgültige, gepaddete Nachricht wird dann: + +0110100001100101011011000110110001101111001011000010000001110111011011110111001001101100011001001 + 350 Nullen + 00000000000000000000000000000000000000000000000000000001100000 + +