EuraStudy
Samenvattingen/Informatica/Domein C: Informatie
Samenvattingen · InformaticaNL · HAVO

Domein C: Informatie

Domein C draait om de vraag hoe informatie in een computer wordt voorgesteld en bewerkt: hoe je data omzet in bits en bytes, hoe tekst, getallen, beeld en geluid gecodeerd worden, hoe je bestanden kleiner maakt met compressie en hoe je informatie beschermt met versleuteling en integriteitscontrole. Je leert de begrippen data, informatie en kennis onderscheiden en rekenen met bits, bestandsgroottes en codes. Omdat informatica volledig via het schoolexamen (SE) wordt afgesloten, ligt de nadruk op begrip én op concrete berekeningen die je stap voor stap uitvoert.

4 Onderdelen·~25 min leestijd·4 Vaardigheden·Niveau Basis 1 · Standaard 2 · Verdieping 1

T·0333 / 12
Examenprofiel
Uitleggen wat het verschil is tussen data, informatie en kennis, en beschrijven hoe gegevens digitaal worden gerepresenteerd en gecodeerd met bits, bytes, ASCII en Unicode/UTF-8.Beschrijven hoe beeld en geluid worden gedigitaliseerd (bemonstering, kwantisering, bitdiepte, resolutie, kleurdiepte) en de bestandsgrootte van ongecomprimeerd beeld en geluid berekenen.Het nut en de werking van datacompressie uitleggen en het onderscheid tussen verliesloze en verlieslatende compressie toepassen, inclusief de compressieverhouding.De basisprincipes van versleuteling (symmetrisch en asymmetrisch) en hashing beschrijven en toepassen op een eenvoudig voorbeeld zoals het schuifcijfer van Caesar.
Operatoren:berekenbepaalleg uitbeschrijfvergelijkberedeneerpas toe

basisniveau

Zorg dat je vlot rekent met bits en bytes, tekens naar ASCII/binair kunt coderen en de bestandsgrootte van beeld en geluid uit resolutie en bitdiepte kunt uitrekenen.

verhoogd niveau

Kun je verliesloze en verlieslatende compressie vergelijken, codes aflezen uit een Huffman-boom, en het verschil tussen symmetrische en asymmetrische versleuteling en de rol van hashing helder uitleggen.

Diepte

Leesdiepte: Verdieping

Tekst

Tekstgrootte: Standaard

Inhoud · 4 onderdelen▾
  1. Domein C: Informatie
    • 01Van data naar informatie: representatie en codering○
    • 02Digitalisering van beeld en geluid◐
    • 03Compressie: verliesloos en verlieslatend◐
    • 04Versleuteling en integriteit●
§ 01

Van data naar informatie: representatie en codering#

●○○BasisLPexamenblad-nl

Kernpunten

Informatica begint bij een scherp onderscheid tussen drie begrippen die in het dagelijks leven vaak door elkaar lopen: data, informatie en kennis. Data zijn ruwe gegevens — losse tekens, getallen of symbolen — die op zichzelf nog geen betekenis dragen. Het getal 202020 is data. Pas wanneer je data in een context plaatst, ontstaat informatie: „het is buiten 202020 graden Celsius” betekent iets. Combineer je informatie met ervaring en verbanden, zodat je er conclusies uit trekt en naar handelt — „bij 202020 graden trek ik een trui aan” — dan spreken we van kennis. Een computer verwerkt uitsluitend data; de betekenis, de informatie, ontstaat in het hoofd van de mens die de data interpreteert. Domein C gaat over de onderste laag: hoe je allerlei soorten gegevens — tekst, getallen, beeld en geluid — omzet in data die een computer kan opslaan en bewerken.
De computer kent maar twee toestanden: aan of uit, stroom of geen stroom, die we noteren als 111 en 000. De kleinste eenheid van data is daarom de bit (een samentrekking van binary digit): één bit heeft precies twee mogelijke waarden. Zet je bits naast elkaar, dan groeit het aantal combinaties razendsnel. Met 222 bits kun je 00,01,10,1100, 01, 10, 1100,01,10,11 maken, dus 444 combinaties; met 333 bits 888; en in het algemeen geldt de kernregel dat je met nnn bits precies 2n2^{n}2n verschillende waarden kunt voorstellen. Acht bits samen vormen één byte, en een byte heeft dus 28=2562^{8} = 25628=256 mogelijke waarden. Deze ene formule, 2n2^{n}2n, komt in heel domein C terug: bij het tellen van tekens, van kleuren en van sleutels. Onthoud haar goed, want vrijwel elke rekenopgave over representatie leunt erop.
Om tekst op te slaan spreken we af welk getal bij welk teken hoort; zo'n afspraak heet een codetabel. De bekendste is ASCII (American Standard Code for Information Interchange), die met 777 bits werkt en dus 27=1282^{7} = 12827=128 verschillende tekens kan coderen: de hoofdletters, de kleine letters, de cijfers, de leestekens en enkele stuurtekens zoals „enter”. In ASCII heeft de hoofdletter „A” de decimale waarde 656565, wat binair 010000010100000101000001 is; de kleine letter „a” heeft 979797, oftewel 011000010110000101100001. Let op dat hoofdletters en kleine letters dus verschillende codes hebben — voor de computer is „A” een ander teken dan „a”. Omdat een byte van 888 bits net iets meer ruimte biedt dan de 777 bits van ASCII, gebruikt men de achtste bit vaak voor uitbreidingen met bijvoorbeeld accentletters. De tabel hiernaast (Afb. 1) toont een aantal tekens met hun decimale en 888-bits binaire code.

Een stukje ASCII-codetabel

Een stukje ASCII-codetabelTabel met 3 kolommen en 7 rijen, Gegevens: Teken · Decimaal · Binair (8 bit); spatie · 32 · 00100000; 0 · 48 · 00110000; A · 65 · 01000001; H · 72 · 01001000; a · 97 · 01100001; i · 105 · 01101001; o · 111 · 01101111TEKENDECIMAALBINAIR (8 BIT)spatie320010000004800110000A6501000001H7201001000a9701100001i10501101001o11101101111Enkele tekens met hun ASCII-code.
Afb. 1Elk teken heeft een vaste decimale ASCII-waarde en bijbehorende 8-bits binaire code; hoofdletters en kleine letters verschillen.
ASCII was ontworpen voor het Engels en schiet tekort zodra je Chinese karakters, Arabische letters, wiskundige symbolen of emoji wilt opslaan: 128128128 tekens zijn veel te weinig voor alle schriften ter wereld. Daarom is Unicode ontwikkeld, een gigantische codetabel die aan elk denkbaar teken een uniek nummer (een code point) toekent — inmiddels meer dan honderdduizend. Unicode zegt echter alleen wélk nummer bij een teken hoort, niet hoe dat nummer in bytes wordt opgeslagen; daarvoor dient een codering zoals UTF-8. UTF-8 is slim gekozen: veelgebruikte tekens — precies de oude ASCII-tekens — passen in één byte, terwijl zeldzamere tekens twee, drie of vier bytes gebruiken. Zo blijft UTF-8 volledig verenigbaar met ASCII en is het toch geschikt voor élke taal. Vrijwel alle moderne webpagina's en bestanden gebruiken daarom UTF-8.
Ook gewone getallen slaat de computer binair op, volgens hetzelfde plaatswaardestelsel als ons tientallige stelsel, maar dan met grondtal 222. Waar in het decimale stelsel de posities 1,10,100,…1, 10, 100, \ldots1,10,100,… voorstellen (machten van tien), staan in het binaire stelsel de posities voor machten van twee: 1,2,4,8,16,…1, 2, 4, 8, 16, \ldots1,2,4,8,16,… van rechts naar links. Het binaire getal 110111011101 betekent daarom 8+4+0+1=138 + 4 + 0 + 1 = 138+4+0+1=13. Omgekeerd zet je een decimaal getal om door er net zolang de grootste passende macht van twee af te halen tot je op nul uitkomt: 13=8+4+113 = 8 + 4 + 113=8+4+1, dus 110111011101. Met nnn bits kun je de gehele getallen van 000 tot en met 2n−12^{n} - 12n−1 voorstellen — met één byte dus 000 tot en met 255255255. Dit binaire rekenen is de basis waarop álle representatie rust: tekens, kleuren en geluidsmonsters worden uiteindelijk allemaal als binaire getallen bewaard.
2n2^{n}2n

aantal mogelijke waarden met n bits

Met n bits kun je 2 tot de macht n verschillende waarden voorstellen; de kernregel van alle datarepresentatie.

1 byte=8 bit1\text{ byte} = 8\text{ bit}1 byte=8 bit

byte en bit

Acht bits vormen samen één byte; een byte heeft daardoor 2 tot de macht 8 is 256 mogelijke waarden.

Uitgewerkt voorbeeld

Tekens tellen en een woord coderen naar ASCII

(a) Bereken hoeveel verschillende tekens je met 7 bits kunt coderen. (b) Codeer het woord Hoi naar ASCII: geef de decimale waarden en de 8-bits binaire codes.

  1. 01Stap 1 — Hoeveel tekens met 7 bits?

    ASCII gebruikt 7 bits per teken. Met 7 bits zijn er 2 tot de macht 7 mogelijke codes.

    27=1282^{7} = 12827=128
  2. 02Stap 2 — Zoek de ASCII-waarden op

    Zoek voor elke letter van het woord Hoi de decimale ASCII-waarde op (zie Afb. 1): H = 72, o = 111, i = 105.

  3. 03Stap 3 — Zet elke waarde om naar 8-bits binair

    Reken elke decimale waarde om naar een byte van 8 bits met de plaatswaarden 128, 64, 32, 16, 8, 4, 2, 1.

    72=01001000,111=01101111,105=0110100172 = 01001000,\quad 111 = 01101111,\quad 105 = 0110100172=01001000,111=01101111,105=01101001

Resultaat: Met 7 bits kun je 2 tot de macht 7 = 128 verschillende tekens coderen. Het woord Hoi heeft ASCII-codes 72, 111 en 105, oftewel binair 01001000 01101111 01101001 — dat zijn 3 bytes, samen 24 bits.

Eindexamen-focus

  • Het schoolexamen (SE) laat je met de regel 2n2^{n}2n rekenen: hoeveel verschillende waarden (tekens, kleuren, sleutels) je met een gegeven aantal bits kunt maken, en omgekeerd hoeveel bits je minstens nodig hebt voor een gegeven aantal mogelijkheden.
  • Je moet tekens naar hun ASCII-code kunnen opzoeken en tussen decimaal en 8-bits binair kunnen omrekenen, en het verschil tussen data, informatie en kennis kunnen uitleggen met een eigen voorbeeld.

Veelgemaakte fouten

  • Bits en bytes verwarren: 111 byte is 888 bits, dus een bestand van 222 kilobyte bevat niet 200020002000 maar ongeveer 16 00016\,00016000 bits.
  • Denken dat hoofdletters en kleine letters dezelfde code hebben; in ASCII verschilt „A” (656565) van „a” (979797), een verschil van precies 323232.

Actieve herhaling

Een systeem gebruikt codes van 6 bits. (a) Bereken hoeveel verschillende codes er mogelijk zijn. (b) Leg uit of je met 6 bits alle 26 hoofdletters én alle 26 kleine letters (samen 52 tekens) kunt coderen. (c) Codeer de hoofdletter A (ASCII 65) naar 8-bits binair.

Actief ophalen

Haal de kernpunten op — onthul ze daarna.

Bronnen: Examenprogramma informatica (HAVO) (CvTE / Examenblad)

§ 02

Digitalisering van beeld en geluid#

●●○StandaardLPexamenblad-nl

Kernpunten

Verschijnselen in de echte wereld zijn meestal analoog: ze veranderen vloeiend en kunnen élke tussenwaarde aannemen. Geluid is een continue trilling van de lucht, en de wijzer van een ouderwetse thermometer glijdt geleidelijk omhoog. Een computer kan zulke continue waarden niet opslaan; hij werkt met discrete, in bits vastgelegde getallen. Digitaliseren is het proces waarbij je een analoog signaal omzet in een reeks getallen. Dat lijkt verlies, maar het levert grote voordelen op: digitale gegevens kun je zonder kwaliteitsverlies kopiëren, over grote afstand versturen, bewerken en jarenlang bewaren, terwijl een analoge grammofoonplaat of videoband bij elke kopie en na verloop van tijd juist slechter wordt. In deze paragraaf zie je hoe geluid en beeld worden gedigitaliseerd en hoe je de bijbehorende bestandsgrootte berekent.
Geluid digitaliseren gebeurt in twee stappen. De eerste is bemonstering (sampling): je meet de amplitude — de uitwijking — van het geluidssignaal op regelmatige, korte tijdsmomenten. Het aantal metingen per seconde heet de bemonsteringsfrequentie, uitgedrukt in hertz (Hz). Een cd gebruikt bijvoorbeeld 44 10044\,10044100 metingen per seconde, oftewel 44,144{,}144,1 kHz. Hoe hoger de bemonsteringsfrequentie, hoe getrouwer de digitale reeks het oorspronkelijke signaal volgt — vergelijk het met een film: meer beeldjes per seconde geven een vloeiender resultaat. Als vuistregel moet je minstens twee keer zo vaak meten als de hoogste toon die je wilt vastleggen; omdat mensen tot ongeveer 202020 kHz horen, is 44,144{,}144,1 kHz ruim voldoende. In Afb. 2 zie je een analoog signaal met de meetmomenten als stippen erop.

Bemonstering van een analoog geluidssignaal

Bemonstering van een analoog geluidssignaalSchaubild von analoog signaal, Nullstellen bei x = 0, 3.142, 6.283, Hochpunkt bei (1.571, 1), Tiefpunkt bei (4.712, -1), y-Achsenabschnitt bei y = 0, im Bereich x von 0 bis 6.4123456−1−0.50.51analoog signaalamplitudetijd
Afb. 2Bij bemonstering meet je de amplitude van het analoge signaal op regelmatige momenten (de stippen); hoe vaker per seconde, hoe hoger de bemonsteringsfrequentie.
De tweede stap is kwantisering: elke gemeten amplitude moet worden afgerond op één van een vast aantal niveaus, want de computer bewaart de waarde in een beperkt aantal bits. Dat aantal bits per meting heet de bitdiepte. Bij een bitdiepte van 161616 bit — de cd-standaard — zijn er 216=65 5362^{16} = 65\,536216=65536 verschillende niveaus waarop je elke meting kunt afronden. Hoe groter de bitdiepte, hoe fijner de niveaus en hoe kleiner de afrondfout (de zogenoemde kwantisatieruis), maar hoe meer bits elk monster kost. Digitaal geluid is dus altijd een benadering van het analoge origineel: met bemonstering leg je vast wánneer je meet, met kwantisering hóe nauwkeurig. Samen bepalen de bemonsteringsfrequentie en de bitdiepte zowel de geluidskwaliteit als de bestandsgrootte.
Een digitale afbeelding is opgebouwd uit een raster van piepkleine gekleurde vierkantjes: de pixels (van picture elements). De resolutie geeft aan uit hoeveel pixels het beeld bestaat, meestal als breedte × hoogte, bijvoorbeeld 1920×10801920 \times 10801920×1080. Elke pixel krijgt een kleur, en het aantal bits dat je per pixel gebruikt heet de kleurdiepte. Bij echte-kleur (true color) gebruik je 242424 bit per pixel: 888 bits voor rood, 888 voor groen en 888 voor blauw — het RGB-model. Met die 242424 bits zijn er 224≈16,72^{24} \approx 16{,}7224≈16,7 miljoen verschillende kleuren mogelijk, meer dan het menselijk oog kan onderscheiden. Meer pixels (hogere resolutie) en meer bits per pixel (hogere kleurdiepte) geven een scherper, kleurrijker beeld, maar kosten allebei meer opslagruimte — precies zoals bemonstering en bitdiepte dat bij geluid doen.
De ongecomprimeerde bestandsgrootte van een afbeelding volgt rechtstreeks uit deze getallen: vermenigvuldig het aantal pixels met de kleurdiepte. Een foto van 1000×8001000 \times 8001000×800 pixels bevat 800 000800\,000800000 pixels; bij 242424 bit per pixel is dat 800 000×24=19 200 000800\,000 \times 24 = 19\,200\,000800000×24=19200000 bits, wat na deling door 888 neerkomt op 2 400 0002\,400\,0002400000 bytes, ongeveer 2,42{,}42,4 MB. Bij geluid reken je net zo: het aantal monsters is de bemonsteringsfrequentie maal de tijd, en dat maal de bitdiepte (en maal het aantal kanalen) geeft het aantal bits. Eén seconde cd-geluid in stereo kost bijvoorbeeld 44 100×16×2=1 411 20044\,100 \times 16 \times 2 = 1\,411\,20044100×16×2=1411200 bits, ruim 1,41{,}41,4 Mbit. Zulke getallen laten zien waarom ongecomprimeerde beeld- en geluidsbestanden zo groot zijn — en dat is precies de reden dat we ze comprimeren, het onderwerp van de volgende paragraaf.
grootte (bit)=aantal pixels×kleurdiepte\text{grootte (bit)} = \text{aantal pixels} \times \text{kleurdiepte}grootte (bit)=aantal pixels×kleurdiepte

bestandsgrootte van een ongecomprimeerde afbeelding

Het aantal pixels (breedte maal hoogte) maal het aantal bits per pixel geeft de grootte in bits; deel door 8 voor bytes.

aantal monsters=fs×t\text{aantal monsters} = f_{s} \times taantal monsters=fs​×t

bemonstering van geluid

De bemonsteringsfrequentie f_s (in hertz) maal de tijd t (in seconden) geeft het aantal geluidsmonsters.

224≈16,7 miljoen2^{24} \approx 16{,}7 \text{ miljoen}224≈16,7 miljoen

kleuren bij 24-bit kleurdiepte

Met 24 bits per pixel (8 per kleurkanaal) zijn er ruim 16,7 miljoen verschillende kleuren mogelijk.

Uitgewerkt voorbeeld

De grootte van een ongecomprimeerde foto berekenen

Een ongecomprimeerde foto is 1000 bij 800 pixels groot en gebruikt een kleurdiepte van 24 bit per pixel (echte-kleur RGB). Bereken de bestandsgrootte in bits, in bytes en in MB.

  1. 01Stap 1 — Tel het aantal pixels

    Het aantal pixels is de breedte maal de hoogte.

    1000×800=8000001000 \times 800 = 8000001000×800=800000
  2. 02Stap 2 — Bereken het aantal bits

    Elke pixel gebruikt 24 bits (de kleurdiepte). Vermenigvuldig het aantal pixels met de bitdiepte.

    800000×24=19200000 bit800000 \times 24 = 19200000\text{ bit}800000×24=19200000 bit
  3. 03Stap 3 — Reken om naar bytes

    Deel door 8, want 1 byte is 8 bits.

    19200000÷8=2400000 byte19200000 \div 8 = 2400000\text{ byte}19200000÷8=2400000 byte
  4. 04Stap 4 — Reken om naar MB

    Met 1 MB = 1 000 000 byte is dat 2,4 MB (met 1 MiB = 2 tot de macht 20 byte komt het neer op ongeveer 2,29 MiB).

Resultaat: De ongecomprimeerde foto is 19 200 000 bits = 2 400 000 bytes, ongeveer 2,4 MB. Zulke bestanden zijn fors; daarom worden foto's bijna altijd gecomprimeerd, bijvoorbeeld als JPEG.

Eindexamen-focus

  • Het schoolexamen (SE) laat je de ongecomprimeerde bestandsgrootte van een afbeelding berekenen uit resolutie en kleurdiepte (aantal pixels × bitdiepte) en het antwoord omrekenen tussen bits, bytes en MB.
  • Je moet de begrippen bemonstering(sfrequentie), kwantisering en bitdiepte kunnen uitleggen en beredeneren hoe elk de kwaliteit én de bestandsgrootte van digitaal geluid beïnvloedt.

Veelgemaakte fouten

  • Vergeten om bits naar bytes om te rekenen: aantal pixels maal bitdiepte geeft het aantal bits; deel daarna door 888 voor het aantal bytes.
  • Bemonsteringsfrequentie en bitdiepte door elkaar halen: de frequentie zegt hóe vaak je meet (in Hz), de bitdiepte hóe nauwkeurig je elke meting vastlegt (in bits).

Actieve herhaling

Een ongecomprimeerde afbeelding is 1200 × 600 pixels en gebruikt een kleurdiepte van 24 bit per pixel. (a) Bereken het aantal pixels. (b) Bereken de bestandsgrootte in bits en in bytes. (c) Leg uit wat er met de bestandsgrootte gebeurt als je de kleurdiepte halveert naar 12 bit per pixel.

Actief ophalen

Haal de kernpunten op — onthul ze daarna.

Bronnen: Examenprogramma informatica (HAVO) (CvTE / Examenblad)

§ 03

Compressie: verliesloos en verlieslatend#

●●○StandaardLPexamenblad-nl

Kernpunten

Zoals de vorige paragraaf liet zien, worden ongecomprimeerde beeld- en geluidsbestanden al snel enorm groot. Compressie is het slim herschrijven van data zodat je minder bits nodig hebt om dezelfde — of vrijwel dezelfde — informatie te bewaren. Dat is om twee redenen belangrijk: opslag en bandbreedte. Kleinere bestanden passen met meer op een schijf of geheugenkaart (opslag) en zijn sneller te versturen over een netwerk (bandbreedte) — een gecomprimeerde film streamt vlot, een ongecomprimeerde zou de verbinding verstoppen. De maat voor het resultaat is de compressieverhouding: de oorspronkelijke grootte gedeeld door de gecomprimeerde grootte. Een verhouding van 4:14 : 14:1 betekent dat het bestand vier keer kleiner is geworden. Er bestaan twee families van compressie, verliesloos en verlieslatend, met elk hun eigen toepassingen.
Bij verliesloze (lossless) compressie kun je na het uitpakken exact het oorspronkelijke bestand terugkrijgen — er gaat geen enkele bit verloren. Dat is essentieel voor tekst, programmacode en formaten zoals ZIP en PNG, waar één verkeerd teken de inhoud kan verpesten. Een eenvoudige verliesloze techniek is run-length encoding (RLE): een reeks van hetzelfde teken achter elkaar (een run) vervang je door het teken en het aantal herhalingen. De reeks AAAAA\text{AAAAA}AAAAA wordt zo A5\text{A5}A5: vijf tekens worden er twee. RLE werkt uitstekend bij data met veel herhaling, zoals een tekening met grote egale vlakken, maar levert niets op — en kan het bestand zelfs groter maken — bij data zonder runs. Verliesloze compressie haalt de overtolligheid (redundantie) uit data zonder ook maar iets van de informatie zelf weg te gooien.
Een krachtiger verliesloze aanpak is Huffman-codering, met een simpel maar geniaal idee: geef veelvoorkomende symbolen een korte code en zeldzame symbolen een langere. In gewone tekst komt de „e” veel vaker voor dan de „q”, dus is het zuinig om de „e” met weinig bits te coderen. Huffman bouwt hiervoor een boom (Afb. 3): je leest de code van een symbool af door van de wortel naar het blad te lopen en onderweg de bits te noteren (000 naar links, 111 naar rechts). In de boom hiernaast krijgt de veelvoorkomende EEE de code 000, terwijl de zeldzame SSS de langere code 111111111111 krijgt. Zo'n code heet een prefixcode: geen enkele code is het begin van een andere, waardoor de ontvanger de bitstroom eenduidig kan opknippen zonder scheidingstekens. Deze aanpak zit onder veel gangbare formaten en is verbonden met het begrip entropie: de theoretische ondergrens van het gemiddelde aantal bits dat je per symbool nodig hebt.

Huffman-boom (prefixcode)

Huffman-boom (prefixcode)Boomdiagram, 5 paden, Gegevens: 0; 1 → 0; 1 → 1 → 0; 1 → 1 → 1 → 0; 1 → 1 → 1 → 101010101••••EATNS
Afb. 3Lees de code van een symbool af door van de wortel naar het blad te lopen: E = 0, A = 10, T = 110, N = 1110, S = 1111. Veelvoorkomende symbolen krijgen een kortere code.
Bij verlieslatende (lossy) compressie gooi je bewust een deel van de informatie weg dat je toch nauwelijks mist, en dat is niet meer terug te halen. De truc is de menselijke waarneming: het oog ziet fijne kleurverschillen slecht en het oor hoort zachte tonen naast harde nauwelijks, dus die details kun je weglaten zonder dat de kijker of luisteraar het merkt. Zo werken JPEG voor foto's, MP3 voor muziek en de meeste videoformaten. Het grote voordeel is een veel hogere compressieverhouding dan verliesloos haalbaar is: een JPEG is vaak tien keer kleiner dan het ongecomprimeerde origineel. Het nadeel is kwaliteitsverlies dat toeneemt naarmate je sterker comprimeert — bij een sterk gecomprimeerde JPEG zie je blokjes ontstaan. Verlieslatende compressie gebruik je dus voor beeld, geluid en video, nooit voor tekst of programmacode, waar elk bit moet kloppen.
De keuze tussen verliesloos en verlieslatend is steeds een afweging. Wil je het bestand exact kunnen reconstrueren, dan moet je verliesloos comprimeren en neem je genoegen met een bescheiden compressieverhouding. Mag er informatie verloren gaan omdat de mens het verschil toch niet ziet of hoort, dan levert verlieslatende compressie veel kleinere bestanden op. De compressieverhouding maakt dat concreet: pas je RLE toe op de reeks AAAAABBBCCDAA\text{AAAAABBBCCDAA}AAAAABBBCCDAA van 131313 tekens, dan wordt die A5B3C2D1A2\text{A5B3C2D1A2}A5B3C2D1A2 van 101010 tekens, een verhouding van 13:10=1,313 : 10 = 1{,}313:10=1,3. Dat is bescheiden, want de reeks bevat maar korte runs; een JPEG van dezelfde foto zou moeiteloos 10:110 : 110:1 halen, maar dan met verlies. Onthoud de vuistregel: tekst en data verliesloos, beeld en geluid meestal verlieslatend — en de verhouding vertelt je hoeveel kleiner het bestand is geworden.
compressieverhouding=oorspronkelijke groottegecomprimeerde grootte\text{compressieverhouding} = \frac{\text{oorspronkelijke grootte}}{\text{gecomprimeerde grootte}}compressieverhouding=gecomprimeerde grootteoorspronkelijke grootte​

compressieverhouding

Een verhouding groter dan 1 betekent dat het bestand kleiner is geworden; 4 : 1 betekent vier keer zo klein.

Uitgewerkt voorbeeld

RLE toepassen en de compressieverhouding berekenen

Pas verliesloze RLE-compressie (run-length encoding) toe op de tekenreeks AAAAABBBCCDAA. Codeer elke reeks gelijke tekens als het teken gevolgd door het aantal, en bereken de compressieverhouding (reken 1 teken = 1 byte).

  1. 01Stap 1 — Verdeel in runs

    Splits de reeks in aaneengesloten blokken van hetzelfde teken: AAAAA, BBB, CC, D en AA — dat zijn vijf runs.

  2. 02Stap 2 — Codeer teken + aantal

    Schrijf elke run als het teken gevolgd door het aantal herhalingen.

    AAAAABBBCCDAA→A5B3C2D1A2\text{AAAAABBBCCDAA} \rightarrow \text{A5B3C2D1A2}AAAAABBBCCDAA→A5B3C2D1A2
  3. 03Stap 3 — Tel de lengtes

    De oorspronkelijke reeks telt 13 tekens, de gecomprimeerde reeks A5B3C2D1A2 telt 10 tekens.

  4. 04Stap 4 — Bereken de compressieverhouding

    Deel de oorspronkelijke grootte door de gecomprimeerde grootte.

    1310=1,3\frac{13}{10} = 1{,}31013​=1,3

Resultaat: De 13 tekens worden 10 tekens; de compressieverhouding is 13 : 10 = 1,3. RLE loont alleen bij lange runs; bij een reeks zonder herhaling, zoals ABCDEF, wordt het bestand er juist groter van.

Eindexamen-focus

  • Het schoolexamen (SE) laat je het verschil tussen verliesloze en verlieslatende compressie uitleggen en per situatie (tekst, foto, muziek) de juiste soort kiezen en je keuze onderbouwen.
  • Je moet een eenvoudige compressie zoals RLE kunnen toepassen en de compressieverhouding berekenen, of codes aflezen uit een gegeven Huffman-boom (prefixcode).

Veelgemaakte fouten

  • Denken dat verlieslatende compressie ongedaan gemaakt kan worden; wat bij lossy compressie is weggegooid, komt nooit meer terug — alleen verliesloze compressie geeft exact het origineel.
  • De compressieverhouding omgekeerd berekenen; deel de oorspronkelijke grootte door de gecomprimeerde grootte, zodat een sterkere compressie een grotere verhouding geeft (13:10=1,313 : 10 = 1{,}313:10=1,3).

Actieve herhaling

(a) Pas RLE toe op de reeks WWWWWWBWWWWWW (12 tekens) en bereken de compressieverhouding (reken 1 teken = 1 byte). (b) Leg uit waarom je een tekstbestand wél verliesloos maar een foto vaak verlieslatend comprimeert. (c) Lees uit de Huffman-boom (Afb. 3) de code van de letter T af.

Actief ophalen

Haal de kernpunten op — onthul ze daarna.

Bronnen: Examenprogramma informatica (HAVO) (CvTE / Examenblad)

§ 04

Versleuteling en integriteit#

●●●VerdiepingLPexamenblad-nl

Kernpunten

Zodra informatie waardevol of privé is, wil je voorkomen dat onbevoegden haar kunnen lezen. Het doel van versleuteling (encryptie) is vertrouwelijkheid: je zet een leesbaar bericht — de klare tekst of platte tekst — met behulp van een sleutel om in onleesbare cijfertekst. Alleen wie de juiste sleutel bezit, kan die cijfertekst weer terug omzetten in de klare tekst; dat heet ontsleutelen (decryptie). Onderweg, bijvoorbeeld over het internet, reist alleen de cijfertekst; onderschept een aanvaller die, dan ziet hij zonder de sleutel enkel betekenisloze tekens. Afb. 4 vat deze gang van zaken samen: versleutelen met een sleutel, verzenden over een onveilig kanaal, en aan de andere kant weer ontsleutelen met een sleutel. De vraag die de rest van deze paragraaf stuurt is: welke sleutel gebruik je aan elke kant, en hoe krijgt de ontvanger die sleutel zonder dat een aanvaller hem onderschept?

Versleutelen en ontsleutelen

Versleutelen en ontsleutelenGraaf, klare tekst → versleutelen, versleutelen → cijfertekst, cijfertekst → ontsleutelen, ontsleutelen → klare tekstklare tekstversleutelencijfertekstontsleutelenklare tekstsleutelonveiligkanaalsleutel
Afb. 4De klare tekst wordt met een sleutel versleuteld tot cijfertekst; die reist over een onveilig kanaal en wordt aan de andere kant met een sleutel weer ontsleuteld.
Bij symmetrische versleuteling gebruiken de verzender en de ontvanger dezelfde, gedeelde geheime sleutel: waarmee je versleutelt, ontsleutel je ook weer. Dat is snel en wordt in de praktijk veel gebruikt, bijvoorbeeld met de standaard AES. Maar er zit een addertje onder het gras: de sleuteldistributie. Voordat twee partijen veilig kunnen communiceren, moeten ze eerst diezelfde geheime sleutel met elkaar delen — en als ze die over hetzelfde onveilige kanaal versturen, kan een afluisteraar hem meelezen en is alle geheimhouding meteen weg. Dit sleuteldistributieprobleem is het kernbezwaar van symmetrische versleuteling: hoe spreek je veilig een geheim af met iemand die je nog nooit veilig hebt kunnen spreken? Precies dat probleem wordt opgelost door de asymmetrische versleuteling.
Asymmetrische versleuteling gebruikt een slim sleutelpaar: een publieke sleutel en een private sleutel, die wiskundig bij elkaar horen. De publieke sleutel mag iedereen weten en dient om te versleutelen; de private sleutel houd je strikt geheim en dient om te ontsleutelen. Wie jou een geheim bericht wil sturen, versleutelt het met jóuw publieke sleutel, en alleen jij kunt het met je private sleutel weer leesbaar maken. Zo hoef je nooit een geheime sleutel over een onveilig kanaal te delen — het sleuteldistributieprobleem is opgelost. De bekendste methode heet RSA. Asymmetrische versleuteling is wel trager dan symmetrische; daarom combineert men ze in de praktijk vaak: met asymmetrische versleuteling wisselt men veilig een symmetrische sleutel uit, en met die snelle symmetrische sleutel versleutelt men vervolgens het eigenlijke verkeer.
Versleuteling beschermt de vertrouwelijkheid, maar soms wil je iets anders: zekerheid dat een bericht onderweg niet is gewijzigd — de integriteit. Daarvoor gebruik je een hashfunctie. Een hashfunctie zet gegevens van willekeurige lengte om in een korte code van vaste lengte, de hash. Twee eigenschappen maken haar bruikbaar. Ten eerste is ze eenrichtingsverkeer: uit de hash kun je het oorspronkelijke bericht niet terugrekenen (anders dan bij versleuteling, waar ontsleutelen juist de bedoeling is). Ten tweede leidt de kleinste verandering in het bericht tot een totaal andere hash. Vergelijk je de hash van een ontvangen bestand met de verwachte hash, dan weet je meteen of er onderweg iets is veranderd. Daarom slaan systemen wachtwoorden niet op als klare tekst maar als hash, en publiceren downloadsites een hash zodat jij de integriteit van je download kunt controleren.
Het oudste en eenvoudigste voorbeeld van versleuteling is het schuifcijfer van Caesar. Je kiest een sleutel kkk — een geheel getal — en schuift elke letter kkk plaatsen op in het alfabet. Nummer je de letters A=0A = 0A=0 tot en met Z=25Z = 25Z=25, dan is de versleuteling in formule c=(p+k) mod 26c = (p + k) \bmod 26c=(p+k)mod26, waarin ppp de plaats van de klare letter is en ccc die van de cijferletter; het rekenen modulo 262626 zorgt voor de omloop, zodat een letter voorbij ZZZ weer bij AAA begint. Met sleutel k=3k = 3k=3 wordt HAVO\text{HAVO}HAVO zo KDYR\text{KDYR}KDYR. Ontsleutelen doe je met p=(c−k) mod 26p = (c - k) \bmod 26p=(c−k)mod26. Het schuifcijfer is leerzaam maar volstrekt onveilig: er zijn maar 252525 zinvolle sleutels, dus een aanvaller probeert ze eenvoudig allemaal uit. Moderne versleuteling berust op hetzelfde grondidee — reken een bericht met een sleutel om — maar gebruikt sleutels die zó groot zijn dat alle sleutels uitproberen praktisch onmogelijk is.
c=(p+k) mod 26c = (p + k)\bmod 26c=(p+k)mod26

Caesar-versleuteling

p is de plaats van de klare letter (A = 0 tot en met Z = 25), k de verschuiving en c de plaats van de cijferletter; modulo 26 zorgt voor de omloop.

p=(c−k) mod 26p = (c - k)\bmod 26p=(c−k)mod26

Caesar-ontsleuteling

Trek de sleutel k er weer af (modulo 26) om van de cijferletter c terug te gaan naar de klare letter p.

Uitgewerkt voorbeeld

Een woord versleutelen en ontsleutelen met Caesar

Versleutel het woord HAVO met een Caesar-schuifcijfer met sleutel k = 3 (elke letter drie plaatsen opschuiven in het alfabet). Ontsleutel daarna de cijfertekst weer.

  1. 01Stap 1 — Nummer de letters

    Geef elke letter zijn plaats in het alfabet (A = 0, B = 1, tot en met Z = 25): H = 7, A = 0, V = 21, O = 14.

  2. 02Stap 2 — Tel de sleutel erbij op (modulo 26)

    Schuif elke letter 3 plaatsen op; bij een uitkomst van 26 of meer begin je weer bij A.

    7+3=10,0+3=3,21+3=24,14+3=177+3=10,\quad 0+3=3,\quad 21+3=24,\quad 14+3=177+3=10,0+3=3,21+3=24,14+3=17
  3. 03Stap 3 — Zet terug naar letters

    10 = K, 3 = D, 24 = Y, 17 = R, dus de cijfertekst is KDYR.

  4. 04Stap 4 — Ontsleutel

    Trek overal 3 af (modulo 26): K wordt H, D wordt A, Y wordt V en R wordt O. Zo komt HAVO weer terug.

    p=(c−3) mod 26p = (c - 3)\bmod 26p=(c−3)mod26

Resultaat: HAVO wordt versleuteld tot KDYR, en door overal 3 plaatsen terug te schuiven krijg je HAVO terug. Let op de omloop: voorbij Z begin je weer bij A, want je rekent modulo 26 — zo zou X + 3 = A worden.

Eindexamen-focus

  • Het schoolexamen (SE) laat je het verschil tussen symmetrische en asymmetrische versleuteling uitleggen, met nadruk op het sleuteldistributieprobleem en hoe de publieke/private sleutel dat oplost.
  • Je moet een eenvoudig schuifcijfer (Caesar) kunnen toepassen om te versleutelen en te ontsleutelen, en uitleggen waarom hashing (eenrichting, vaste lengte) de integriteit van gegevens bewaakt.

Veelgemaakte fouten

  • Denken dat je een hash kunt ontsleutelen; een hashfunctie is eenrichtingsverkeer en heeft geen sleutel — je kunt uit de hash het oorspronkelijke bericht niet terugrekenen.
  • Bij het schuifcijfer de omloop vergeten; reken modulo 262626, zodat bijvoorbeeld XXX (232323) +3+ 3+3 niet 262626 maar 000 (dus AAA) wordt.

Actieve herhaling

(a) Versleutel het woord CODE met een Caesar-schuifcijfer met sleutel k = 4. (b) Ontsleutel de cijfertekst weer met dezelfde sleutel. (c) Leg uit waarom asymmetrische versleuteling het sleuteldistributieprobleem oplost dat bij symmetrische versleuteling speelt.

Actief ophalen

Haal de kernpunten op — onthul ze daarna.

Bronnen: Examenprogramma informatica (HAVO) (CvTE / Examenblad)

Inhoud

Sectie -- / 04

    • 01Van data naar informatie: representatie en codering○
    • 02Digitalisering van beeld en geluid◐
    • 03Compressie: verliesloos en verlieslatend◐
    • 04Versleuteling en integriteit●

0/4 Gelezen

Van samenvatting naar oefening

Domein C: Informatie

Verstevig dit onderwerp met vragen uit de vragenbank.

~25
min
4
Vaardigheden
Oefenen

Referenties en bronnen

Bronnen

CvTE / Examenblad

  • Examenprogramma informatica (HAVO)

Vorig onderwerp

Domein B: Grondslagen

Volgend onderwerp

Domein D: Programmeren

EuraStudy·Samenvattingen T·03·MMXXVI

Ga verder met het volgende onderwerp — je leerpad blijft bewaard.