Cyber Security Essentials Module 3 - Encoding,mod, OSI PDF
Document Details
Uploaded by DazzledChaparral
Howest Hogeschool
Kurt Schoenmaekers
Tags
Summary
This document is about cyber security essentials, module 3. It covers fundamental concepts of encoding and modular arithmetic, useful for computer science and cybersecurity professionals.
Full Transcript
Cyber Security Essentials Module 3 – Encoding, mod, OSI Kurt Schoenmaekers Mensen en getallen Mensen tellen met hun tien vingers dus met het tientallig stelsel. Slechts 10 vingers, dus we kunnen tot tien tellen maar hoe representeren we 11? 11 = 10 𝑒𝑒𝑒𝑒 1 𝑑𝑑𝑑𝑑𝑑𝑑 11 = 1 × 101 + 1 × 100 El...
Cyber Security Essentials Module 3 – Encoding, mod, OSI Kurt Schoenmaekers Mensen en getallen Mensen tellen met hun tien vingers dus met het tientallig stelsel. Slechts 10 vingers, dus we kunnen tot tien tellen maar hoe representeren we 11? 11 = 10 𝑒𝑒𝑒𝑒 1 𝑑𝑑𝑑𝑑𝑑𝑑 11 = 1 × 101 + 1 × 100 Elke plaats naar links van het einde van een getal betekent dus een macht van 10 meer vermenigvuldigd met het getal (0-9) op die plaats. Dus 3104 = 3 × 103 + 1 × 102 + 0 × 101 + 4 × 100 We noemen dit decimale getallen. Wat als we 16 vingers of maar 8 of zelfs maar 2 vingers zouden hebben? Computers en getallen Computers rekenen met een schakeling die slechts twee standen heeft. Dus computers kunnen enkel 0 en 1 voorstellen. Grotere getallen stellen we voor op dezelfde manier als bij decimale getallen: 1010 = 1 × 23 + 0 × 22 + 1 × 21 + 0 × 20 = 10 Ipv decimale cijfers (0-9) -> binaire cijfers of bits (0-1) Een bit kan dus waarde 0 of 1 hebben. Bits worden vaak gegroepeerd in sets van 8 bits (=bytes). Voettekst 6 Computers en getallen Nibble: 4 bits (half a byte). Octet: Another term for 8 bits (1 byte), often used in networking. Word: Typically 16 bits (2 bytes), but this can vary depending on the architecture. Double Word (DWORD): 32 bits (4 bytes). Quad Word (QWORD): 64 bits (8 bytes). Kilobyte (KB): 1024 bytes (210 bytes). Megabyte (MB): 1024 kilobytes (220 bytes). Gigabyte (GB): 1024 megabytes (230 bytes). Terabyte (TB): 1024 gigabytes (240 bytes). Petabyte (PB): 1024 terabytes (250 bytes) = 5 miljoen keer Encyclopædia Britannica Voettekst 7 Mensen en letters Om iets neer te schrijven en te onthouden gebruiken we letters waar we dan een woord mee bouwen bv. “Computer” Latijns alfabet: 26 letters, aangeduid als a-z of A-Z. Nordic: letters toegevoegd (a-ö of a-å). Grieks alfabet: 24 letters, aangeduid als α-ω of Α-Ω. Cyrillisch alfabet: Slavische talen. 33 letters, aangeduid als а-я of А-Я. Hebreeuws alfabet: 22 letters, ת – א. Hebreeuws kent geen kleine letters. Arabisch alfabet: 28 letters, genoteerd als ا- ي. Alle letters zijn verbonden in het schrift, en er is geen onderscheid tussen hoofdletters en kleine letters. En nog veel meer… Voettekst 9 Computers en letters Computers kennen geen woorden, enkel bits, bytes etc zoals we gezien hebben. Dus getallen. Om met een computer met woorden te werken, moeten we dus de woorden omzetten in getallen. Conventies: (Extended) ASCII: 128 of 256 getallen die elk een letter/getal/schrifteken/formatcode voorstellen. Bv. nummer 97 is de kleine letter a. Unicode: Een uitgebreide standaard ontworpen om alle schrijfsystemen ter wereld te ondersteunen. Bv. U+0444 is the Cyrillic ф. Een computer kent dus het woord “computer” als de getallen: 99 111 109 112 117 116 101 114 Voettekst 10 ASCII tabel Voettekst 11 Andere representaties – Hexadecimaal of Hex Wat als we zouden rekenen met 16 vingers? Onze basis is dan 16. We noemen dit het hexadecimaal of hex getalstelsel. Notitie hexadecimaal getal is met prefix 0x, \x of suffix h meestal dus 0x13, \x13 of 13h. Zelfde notatie als voor decimaal en binair: 0x13 = 1 × 161 + 3 × 160. Maar hoe getal voorstellen zoals bv 15 (decimaal) in hex? We gebruiken dan volgende conventie: A(hex)=10(decimaal), B=11, C=12, D=13, E=14, F=15. Voordeel: korter dan binair en toch relatief eenvoudig om te zetten naar binair en eenvoudiger te lezen door de mens. Één hex getal komt overeen met 4 bits (0000 – 1111). Het woord “computer” wordt met ASCII en in hex notatie: 0x63 0x6f 0x6d 0x70 0x75 0x74 0x65 0x72 Andere representaties – Base64 Bij encryptie worden soms hele grote getallen gebruikt. Een geëncrypteerde tekst bestaat uit een lange rij getallen. Bij beide zijn er bytes die niet direct kunnen omgezet worden naar leesbare tekst. Voorbeeld: De getallen 0 tot 31 (0x00-0x1F) zijn niet “leesbaar” in bv. Word of in een email. Base64: Een systeem om (lange) getallen om te zetten in leesbare tekens. Er wordt gebruik gemaakt van een omzettingstabel die per 6 bits overeenkomt met een leesbaar teken. Met 6 bits kan je 26 = 64 getallen vormen. Dat zijn dan de getallen van 000000 tot 111111 = van 0 tot 63 decimal. Voorbeeld: het woord “computer” wordt Y29tcHV0ZXI= Andere representaties – Base64 Voettekst 14 Andere representaties – Base64 Een probleem met het omzetten naar Base64 is dat niet elk veelvoud van 8 bits (een byte) ook een veelvoud is van 6. Elke 3 bytes = 24 bits kan omgezet worden naar 4 Base64 codes (4 × 6 = 24). Als we 2 bytes over hebben op het einde (2 × 8 = 16 𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏), dan voegen we 2 zero bits (dus twee nullen) toe aan het einde -> 18 bits dus deelbaar door 6. Als we 1 byte over hebben op het einde (1 × 8 = 8 𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏), dan voegen we 4 zero bits (dus vier nullen) toe aan het einde -> 12 bits dus deelbaar door 6. Het toevoegen van extra (eigenlijk irrelevante) cijfers op het einde van een reeks getallen, noemen we PADDING. Om dit duidelijk te maken, voegen we “=“ toe op het einde bij twee nullen padding en “==“ bij vier nullen padding. Voettekst 15 Encoding Getallen en tekst omzetten naar een andere presentatie/formaat noemen we ENCODING. ASCII encoding wordt bijvoorbeeld gebruikt in URL’s om verboden karakters weer te geven. Notitie: “%” gevolgd door de hex ASCII code => URL encoding Een blanco “ “ wordt %20 Een “#” wordt %23 Een “/” wordt %2F Base64 wordt gebruikt voor onder andere transmissie van binaire files zoals beelden of een uitvoerbaar programma. Hex encoding wordt veel gebruikt bij programmeren. Encoding wordt gebruikt voor compactheid, leesbaarheid en efficiëntie. Voettekst 16 Demonstratie Cyberchef Voettekst 17 Modulus rekenen (mod operator) Voettekst 18 Herhaling – deelbaarheid Een geheel getal 𝑎𝑎 is deelbaar door een geheel getal 𝑑𝑑 ∈ ℤ als er een geheel getal 𝑞𝑞 bestaat zodat 𝑎𝑎 = 𝑑𝑑. 𝑞𝑞 We zeggen dan ook dat 𝑑𝑑 een deler is van 𝑎𝑎, notatie: 𝑑𝑑|𝑎𝑎 Als 𝑎𝑎 en 𝑑𝑑 gehele getallen zijn met 𝑑𝑑 ≥ 1, dan bestaan er unieke gehele getallen 𝑞𝑞 en 𝑟𝑟 met 𝟎𝟎 ≤ 𝒓𝒓 < 𝒅𝒅 zodat 𝑎𝑎 = 𝑑𝑑. 𝑞𝑞 + 𝑟𝑟 Deze getallen worden quotiënt q en rest r genoemd van de deling. Noteer dat gehele getallen zijn gedefinieerd als: ℤ={…, −3,−2,−1,0,1,2,3,…} 19 Herhaling - deelbaarheid Oefeningen Zoek alle delers van 144. Wat is de grootste gemene deler van 10 en 25? En van 32 en 36? Wat is het kleinste gemeenschappelijk veelvoud van 10 en 25? En van 32 en 36? Toon aan – door te berekenen - dat de oneven gehele getallen 5, 7, -7 en -21 in de vorm 2.n+1 kunnen geschreven worden (met n = een geheel getal). 20 Modulo Rekenen Gauss gebruikte modulorekenen om de paasdatum te voorspellen Als 𝑎𝑎 = 𝑑𝑑. 𝑞𝑞 + 𝑟𝑟 dan stellen we dat 𝑟𝑟 = 𝑎𝑎 𝑚𝑚𝑚𝑚𝑚𝑚 𝑑𝑑 of dat r = a modulo d. “𝑚𝑚𝑚𝑚𝑚𝑚” is de modulo operator zoals “:” is voor deling. We gebruiken het elke dag zonder er bij stil te staan, denk maar aan het rekenen met tijd. Stel dat het vijf uur in de namiddag is. In Sydney is het acht uur later. Hoe laat is het daar dan? 5 + 8 = 13, maar omdat ons horloge tijd opdeelt in blokken van twaalf uur, trekken we 12 af van 13 (we doen dus het uur mod 12) zodat we een uitkomst tussen 0 en 12 verkrijgen: 13 − 12 = 1. We zeggen dat 5 + 8 congruent is aan 1 modulo 12. 5 + 8 ≡ 1 mod 12 congruentie operator modulus 21 Modulo Rekenen Congruent modulo m Twee gehele getallen zijn congruent modulo m als ze een gelijke rest vertonen na gehele deling door eenzelfde natuurlijke modulus m. 𝑎𝑎 ≡ 𝑏𝑏 mod 𝑚𝑚 ⇔ 𝑎𝑎 = 𝑚𝑚. 𝑙𝑙 + 𝑏𝑏 ⇔ (𝑎𝑎 − 𝑏𝑏) = 𝑚𝑚. 𝑙𝑙 Voorbeelden: 25 ≡ 1 mod 24 ⇔ 25 = 24.1 + 1 ⇔ 25 − 1 = 24.1 25 ≡ −1 mod 26 ⇔ 25 = 26.1 − 1 ⇔ 25 − −1 = 26.1 13 ≡ −5 mod 3 ⇔ 13 = 3.6 − 5 ⇔ 13 − −5 = 3.6 33 ≡ 7 mod 13 ⇔ 33 = 13.2 + 7 ⇔ 33 − 7 = 13.2 72 ≡ 7 mod 13 ⇔ 72 = 13.5 + 7 ⇔ 72 − 7 = 13.5 22 Modulo rekenen - Opdracht Bepaal minstens acht verschillende gehele getallen die congruent zijn met 5 "mod" 8. Kies twee gehele getallen die congruent zijn met 5 "mod" 8 en tel deze op. Herhaal dit voor minstens vijf paren van gehele getallen die congruent zijn met 5 "mod" 8. Waarom zijn alle sommen uit het vorige punt congruent met 2 "mod" 8? Oplossing -11, -3, 5, 13 en 21 𝑥𝑥 ∈ ℤ 𝑥𝑥 ≡ 5 𝑚𝑚𝑚𝑚𝑚𝑚 8 = {… , −19, −11, −3, 5, 13, 21, 29, … } Bijvoorbeeld: -3+5=2 -11+29=18 13+21=34 Als wij 2 aftrekken van om het even welke som uit het vorige punt zal het resultaat altijd een veelvoud zijn van 8. Dit betekent dat de som congruent is met 2 mod 8. b.v. 2-2=0 18-2=16 34-2=32 23 Restsystemen Restklasse of congruentieklasse modulo m is de oneindige verzameling gehele getallen die een gelijke rest vertonen na gehele deling door eenzelfde natuurlijke modulus m. De vertegenwoordiger van een restklasse modulo m is het kleinste natuurlijke getal 𝑎𝑎 ∈ ℕ ervan. We noteren een restklasse aan de hand van zijn unieke natuurlijke vertegenwoordiger als 𝑎𝑎 (dus met een streepje boven de vertegenwoordiger). Voorbeelden 24 Restsystemen Vuistregel 𝑎𝑎 ≡ 𝑎𝑎 ± 𝑚𝑚. 𝑘𝑘 mod 𝑚𝑚, ∀𝑘𝑘 ∈ ℕ in een restklasse 𝑎𝑎 mod 𝑚𝑚 Voorbeeld: We demonstreren in de restklasse 1 mod 4 1 ≡ 1 + 4.1 ≡ 5 mod 4 1 ≡ 1 + 4.3 ≡ 13 mod 4 1 ≡ 1 − 4.5 ≡ −19 mod 4 1 ≡ 1 − 4.10 ≡ −39 mod 4 Restsysteem ℤ𝒎𝒎 Een restsysteem of restklassenverzameling is de verzameling van alle restklassen modulo 𝑚𝑚 ∈ ℕ0 : ℤ𝑚𝑚 = 0, 1, 2, … , 𝑚𝑚 − 1 Voorbeeld: ℤ26 = 0, 1, 2, … , 25 , ℤ256 = {0, 1, 2, … , 113, … , 255} De kardinaliteit is # ℤ𝒎𝒎 = 𝒎𝒎 25 Restsystemen – De plus-bewerking Eigenschap optelling in ℤ𝒎𝒎 𝑎𝑎 ≡ 𝑐𝑐 mod 𝑚𝑚 ⇒ 𝑎𝑎 + 𝑏𝑏 ≡ 𝑐𝑐 + 𝑑𝑑 mod 𝑚𝑚 𝑏𝑏 ≡ 𝑑𝑑 mod 𝑚𝑚 De plus-bewerking in ℤ𝒎𝒎 : 𝑎𝑎 + 𝑏𝑏 = 𝑎𝑎 + 𝑏𝑏 26 Restsystemen – De maal-bewerking Eigenschap vermenigvuldiging in ℤ𝒎𝒎 𝑎𝑎 ≡ 𝑐𝑐 mod 𝑚𝑚 ⇒ 𝑎𝑎 × 𝑏𝑏 ≡ 𝑐𝑐 × 𝑑𝑑 mod 𝑚𝑚 𝑏𝑏 ≡ 𝑑𝑑 mod 𝑚𝑚 De maal-bewerking in ℤ𝒎𝒎 : 𝑎𝑎 × 𝑏𝑏 = 𝑎𝑎 × 𝑏𝑏 27 Restsystemen – De machtsverheffing Eigenschap machtsverheffing in ℤ𝒎𝒎 als 𝑘𝑘 ∈ ℤ+ {𝑎𝑎 ≡ 𝑏𝑏 mod 𝑚𝑚 ⇒ 𝑎𝑎𝑘𝑘 ≡ 𝑏𝑏 𝑘𝑘 mod 𝑚𝑚 28 Restsystemen – overige eigenschappen Als 𝑚𝑚 > 1 en 𝑎𝑎, 𝑏𝑏 ∈ ℤ dan: (Reflexitiviteit) 𝑎𝑎 ≡ 𝑎𝑎 𝑚𝑚𝑚𝑚𝑚𝑚 𝑚𝑚 (Symmetrie) 𝑎𝑎 ≡ 𝑏𝑏 𝑚𝑚𝑚𝑚𝑚𝑚 𝑚𝑚 ⇒ 𝑏𝑏 ≡ 𝑎𝑎 𝑚𝑚𝑚𝑚𝑚𝑚 𝑚𝑚 29 Restsystemen – Cayley Tabel Een Cayley tabel is een tabel waarin de kolommen en rijen de elementen van een verzameling staan en in de kruispunten een bewerking die gedefinieerd staat in de linkerbovenhoek. Voorbeeld: optelling en vermenigvuldiging in ℤ5. + 𝟎𝟎 𝟏𝟏 𝟐𝟐 𝟑𝟑 𝟒𝟒 × 𝟎𝟎 𝟏𝟏 𝟐𝟐 𝟑𝟑 𝟒𝟒 𝟎𝟎 𝟎𝟎 𝟏𝟏 𝟐𝟐 𝟑𝟑 𝟒𝟒 𝟎𝟎 𝟎𝟎 𝟎𝟎 𝟎𝟎 𝟎𝟎 𝟎𝟎 𝟏𝟏 𝟏𝟏 𝟐𝟐 𝟑𝟑 𝟒𝟒 𝟎𝟎 𝟏𝟏 𝟎𝟎 𝟏𝟏 𝟐𝟐 𝟑𝟑 𝟒𝟒 𝟐𝟐 𝟐𝟐 𝟑𝟑 𝟒𝟒 𝟎𝟎 𝟏𝟏 𝟐𝟐 𝟎𝟎 𝟐𝟐 𝟒𝟒 𝟏𝟏 𝟑𝟑 𝟑𝟑 𝟑𝟑 𝟒𝟒 𝟎𝟎 𝟏𝟏 𝟐𝟐 𝟑𝟑 𝟎𝟎 𝟑𝟑 𝟏𝟏 𝟒𝟒 𝟐𝟐 Noteer de symmetrielijn 𝟒𝟒 𝟒𝟒 𝟎𝟎 𝟏𝟏 𝟐𝟐 𝟑𝟑 𝟒𝟒 𝟎𝟎 𝟒𝟒 𝟑𝟑 𝟐𝟐 𝟏𝟏 in blauw = commutativiteit. 30 Restsystemen – Neutraal Element, Tegengestelde en Inverse Neutraal element Wat heeft geen effect op de optelling? 𝑎𝑎 + 0 = 𝑎𝑎 + 0 = 𝑎𝑎 dus 0 is het neutraal element voor de optelling. Wat heeft geen effect bij de vermenigvuldiging? 𝑎𝑎 × 1 = 𝑎𝑎 × 1 = 𝑎𝑎 dus 1 is het neutraal element voor de vermenigvuldiging. Tegengesteld element Bestaat er een element 𝑏𝑏 voor elke 𝑎𝑎 zodat 𝑎𝑎 + 𝑏𝑏 = 0 ? Het antwoord is ja, nl −𝑎𝑎 want 𝑎𝑎 + −𝑎𝑎 = 𝑎𝑎 + (−𝑎𝑎) = 0 31 Restsystemen – Neutraal Element, Tegengestelde en Inverse Invers element (hiervoor werken we enkel in ℤ𝑚𝑚 ∖ 0 want 0 heeft nooit een inverse) 𝑠𝑠̅ is de inverse van 𝑎𝑎 ∈ ℤ𝑚𝑚 ∖ 0 als ∃ 𝑠𝑠̅ ∈ ℤ𝑚𝑚 ∖ 0 waarvoor 𝑠𝑠.̅ 𝑎𝑎 = 1 we noteren dit element als volgt: 𝑠𝑠̅ = 𝑎𝑎 −1 ∈ ℤ𝑚𝑚 ∖ 0 × 𝟎𝟎 𝟏𝟏 𝟐𝟐 𝟑𝟑 𝟒𝟒 Voorbeeld 𝟎𝟎 𝟎𝟎 𝟎𝟎 𝟎𝟎 𝟎𝟎 𝟎𝟎 𝑠𝑠̅ van 4 in ℤ5 ,. 𝑠𝑠̅ van 2 in ℤ5 ,. 𝟏𝟏 𝟎𝟎 𝟏𝟏 𝟐𝟐 𝟑𝟑 𝟒𝟒 1. 4 = 4 1. 2 = 2 𝟐𝟐 𝟎𝟎 𝟐𝟐 𝟒𝟒 𝟏𝟏 𝟑𝟑 2. 4 = 3 2. 2 = 4 3. 4 = 2 3. 2 = 1 𝟑𝟑 𝟎𝟎 𝟑𝟑 𝟏𝟏 𝟒𝟒 𝟐𝟐 4. 4 = 1 4. 2 = 3 𝟒𝟒 𝟎𝟎 𝟒𝟒 𝟑𝟑 𝟐𝟐 𝟏𝟏 32 Restsystemen - Nuldelers Let wel op, niet alle restklassen in elk restsysteem hebben een invers element. We spreken dan ook van de inverteerbare elementen in ℤ𝑚𝑚. × 𝟏𝟏 𝟐𝟐 𝟑𝟑 Voorbeeld: Check ℤ4. Niet alle rijen bevatten een 1! 𝟏𝟏 𝟐𝟐 𝟑𝟑 𝟏𝟏 𝟐𝟐 𝟐𝟐 𝟎𝟎 𝟐𝟐 𝟑𝟑 𝟑𝟑 𝟐𝟐 𝟏𝟏 Het gereduceerd restsysteem van ℤ𝑚𝑚 , de verzameling van alle inverteerbare elementen noteren we als ℤ∗𝑚𝑚. Nuldelers in ℤ𝒎𝒎 Twee elementen uit een restsysteem die als product de nulklasse 0 opleveren, zonder dat één van beide de nulklasse is. Deze elementen worden nuldelers genoemd. 2 = 0 ∈ ℤ4 Voorbeeld: 2. 33 Restsystemen - Nuldelers Het bestaan van nuldelers impliceert dat de schrappingswet (zoals gewoon in de verzamelingen ℚ, ℝ) bij het oplossen van vergelijkingen in ℤ𝑚𝑚 niet meer opgaat!! 𝑎𝑎𝑎𝑎𝑎𝑎 𝑎𝑎 ≠ 0 𝑒𝑒𝑒𝑒 𝑎𝑎. 𝑏𝑏 ⇏ 𝑥𝑥̅ = 𝑏𝑏 𝑥𝑥̅ = 𝑎𝑎. Voorbeeld In de Cayleytabel voor ℤ26 (tabel 7.7 - pagina 196) vinden we uit de rij van 13 ∈ ℤ26 ∖ 0 dat elk product ervan met een even element telkens nul 0 oplevert. In combinatie met elk even element levert dit dus nuldelers op. Hierdoor is het duidelijk dat we niet meer blindelings kunnen steunen op de schrappingswet in ℤ26 met 13 ≠ 0 𝑒𝑒𝑒𝑒 13. 𝑥𝑥̅ = 13. 2 ⇏ 𝑥𝑥̅ = 2 (want ook als je 𝑥𝑥̅ = 0 invult, telt de gelijkheid en 0 ≠ 2 ). Dit kon je ook al aflezen uit de tabel doordat 13 geen inverse element heeft en je dus niet beide zijden van de vergelijking kan vermenigvuldigen met de inverse van 13… 34