Hoe je begrijpt wat een cijfer is

📅
🕑 6 minuten lezen

Eerlijk gezegd kan het verschil tussen codes en cijfers behoorlijk verwarrend zijn als je je verdiept in cryptografie. Maar over het algemeen is een cijfer gewoon een algoritme dat leesbare informatie omzet in iets onleesbaars (cijfertekst).Sommige mensen noemen het ook “cypher”, wat een oudere of alternatieve spelling is. Meestal gebruiken mensen de termen “code” en “cipher” alsof ze door elkaar gebruikt worden, maar technisch gezien zijn ze eigenlijk best verschillend. Codes gaan meer over het vervangen van woorden of zinnen – ze geven een secundaire betekenis – zoals het verbergen van een boodschap achter ogenschijnlijk onschuldige woorden. Cijfers daarentegen gaan meer over het versleutelen van tekens of stukjes data op basis van een algoritme en een geheime sleutel. Dit hele gedoe kan een hoofdpijn zijn, omdat de grenzen in de praktijk vervagen. Soms noemen mensen alles gewoon “codes”, vooral als ze alleen maar woorden verwisselen en niet echt iets versleutelen. Maar als je te maken hebt met daadwerkelijke versleuteling – zoals het beveiligen van e-mails of gegevensoverdrachten – dan zijn cijfers waar je naar op zoek bent. Omdat veiligheid natuurlijk afhangt van het geheim houden van die sleutel. Je wilt niet dat iemand je geheime algoritme raadt of je code met brute force kraakt. Daarom maakt moderne encryptie gebruik van deelbare algoritmen, maar blijven de sleutels geheim. Als je ooit de term “Vigenère-cijfer” of “AES-encryptie” tegenkomt, dan gaat het om specifieke algoritmen – codes met specifieke manieren om gegevens te versleutelen. Moderne encryptie is ontworpen om veilig te zijn, zelfs als het algoritme zelf bij iedereen bekend is, behalve de sleutel. Dat is gebaseerd op het principe van Kerckhoff, dat stelt dat beveiliging in de sleutel moet zitten, niet in de methode. En ter informatie: klassieke encryptie – zoals Caesar of ROT13 – is een beetje achterhaald. Ze zijn veel te simpel omdat ze alleen basale substituties of transposities bevatten die met voldoende moeite gekraakt kunnen worden. Moderne cryptografie is daar voorbij en vertrouwt op wiskundig complexe algoritmen die daadwerkelijk getest en veilig zijn gebleken. Ze worden tegenwoordig gebruikt voor het versleutelen van e-mails, bankgegevens en gewoon voor het bewaren van geheimen op internet. Dus ja, het verschil begrijpen helpt, maar in de dagelijkse cryptografie kiezen de meeste mensen gewoon voor sterke, geteste algoritmen (zoals AES) en houden ze de sleutels geheim. Want niemand wil natuurlijk een makkelijk doelwit.

Als je nieuwsgierig bent naar hoe je daadwerkelijk met encryptie kunt rommelen of met algoritmes kunt experimenteren, bekijk dan bronnen zoals GitHub Repository: Winhance. Het is een goed startpunt om te zien hoe sommige van deze dingen in elkaar zitten, vooral als je graag knutselt of de kneepjes van crypto wilt leren. Let op: zelfs sommige moderne algoritmes kunnen overkill zijn voor basisdingen, dus maak je geen zorgen als het in het begin allemaal wat overweldigend is.

Codes zijn niet echt cijfers

Een code beschrijft doorgaans een systeem waarin aan bepaalde woorden of zinnen een betekenis wordt toegekend. De codewoorden of -zinnen kunnen een legitieme, goed begrepen betekenis hebben, maar de code implementeert een secundaire betekenis die alleen degenen die het “weten” kunnen begrijpen. De code kan ook een volledig betekenisloze combinatie van tekens zijn.

Twee agenten die bijvoorbeeld willen bevestigen dat ze elkaar kunnen vertrouwen, kunnen een paar codezinnen gebruiken.”Ik hoor dat het mooi weer is in Parijs in deze tijd van het jaar.” en “Ik heb persoonlijk altijd een voorkeur gehad voor Dublin.” zouden twee challenge-response codezinnen kunnen zijn. Een van de voordelen van het gebruik van codezinnen met zowel een vastgestelde als een secundaire betekenis is dat een buitenstaander het gesprek als volkomen normaal kan beschouwen en waarschijnlijk geen verborgen betekenis heeft. Zo’n codezinsysteem is gebaat bij plausibele ontkenning.

Er moet echter wel voor gezorgd worden dat de gekozen zinnen niet zomaar door een willekeurige voorbijganger worden gebruikt. Als de eerste codezin aan een willekeurig lid van het publiek wordt uitgesproken, kan hij of zij het misschien een beetje vreemd vinden, maar verder is het gewoon een praatje. De code moet zo gekozen worden dat het logisch is voor iedereen die luistert, maar dat het zeer onwaarschijnlijk is dat een willekeurige voorbijganger het zal gebruiken.

Sommige codes gebruiken mogelijk helemaal geen volledige woorden.”UBDIBF” kan bijvoorbeeld een codewoord zijn dat aangeeft “missie voltooid, alle doelstellingen vervuld”.Iedereen die zo’n code ziet of hoort, zou kunnen aannemen dat er een geheime boodschap wordt doorgegeven. Zonder de code te kennen, zouden ze de betekenis echter niet kunnen achterhalen. Dergelijke codes hebben het voordeel dat ze korter en gemakkelijker te verzenden zijn. Beide methoden lopen ook het risico dat de agent de juiste code vergeet.

Cijfers

Een cijfer is een algoritmische manier om een ​​bericht zo te verdraaien dat de uitvoer, de zogenaamde cijfertekst, niet te begrijpen is. Om te voorkomen dat de hele cijfertekst onbruikbaar wordt zodra iemand begrijpt hoe deze werkt, wordt een “sleutel” gebruikt om de uitvoer te variëren.

In de moderne cryptografie zijn er twee verschillende manieren om algoritmen te definiëren. De eerste is door het type sleutel. Een symmetrische encryptiesleutel gebruikt dezelfde sleutel om gegevens te versleutelen en te ontsleutelen. Een symmetrische sleutel wordt over het algemeen de geheime sleutel genoemd. Een asymmetrische encryptiesleutel gebruikt twee verschillende sleutels, één om gegevens te versleutelen en één om gegevens te ontsleutelen. De asymmetrische sleutel die wordt gebruikt om gegevens te versleutelen, wordt doorgaans de publieke sleutel genoemd, terwijl de ontsleutelingssleutel de privésleutel wordt genoemd. Door ze op deze manier te gebruiken, kan iedereen een bericht versleutelen, in de wetenschap dat alleen de rechtmatige eigenaar van de privésleutel het bericht kan ontsleutelen en lezen.

Cijfers kunnen ook worden geclassificeerd als stroom- of blokcijfers. Een stroomcijfer versleutelt een continue stroom symbolen. Een blokcijfer versleutelt blokken data van een vaste grootte. Deze blokcijfers hebben daarom opvulling nodig als de data niet precies in de blokgrootte past.

Klassieke versus moderne cijfers

Klassieke cijfers waren relatief eenvoudig. Dit was nodig vanwege de lage technologische niveaus, waardoor cijfers met de hand of met eenvoudige hulpmiddelen gebruikt moesten kunnen worden. Deze omvatten meestal transpositie of substitutie. Een substitutiecijfer zoals het Caesarcijfer of ROT13 vervangt één letter in het alfabet door een andere. Bij ROT13 wordt elke letter vervangen door de letter die 13 tekens later in het alfabet verschijnt. Een transpositiecijfer werkt op een vergelijkbare manier, maar heeft niet dezelfde verschuiving voor elk teken. Zulke technieken zijn, zelfs wanneer het transpositiealfabet na elke letter wordt gewijzigd, relatief eenvoudig te kraken. Dit komt doordat de mogelijke sleutelruimte beperkt is; er zijn slechts een beperkt aantal verschillende sleutels mogelijk. Zodra een vijand het cijfer begrijpt, kan hij alle sleutels uitproberen en het systeem kraken.

Moderne cijfers zijn gebaseerd op het principe van Kerckhoff. Dat stelt dat elk cryptosysteem veilig moet blijven, zelfs als het hele systeem, afgezien van de sleutel, bekend is bij de vijand. Moderne cijfers zijn daarom openbaar en goed onderzocht, zonder dat dit ten koste gaat van de veiligheid. Nu hoeft alleen de sleutel geheim te blijven, een veel eenvoudigere opgave dan het hele systeem geheim te houden.

Conclusie

Een cijfer is een andere naam voor een encryptie-algoritme. Sommige mensen gebruiken de term ‘verwisselbaar’ met ‘code’ (zoals in ‘vercijferd’ = gecodeerd).Dit is echter niet helemaal correct. Een code is afhankelijk van het feit of de betekenis van de code geheim blijft. Een code kan ook willekeurig worden bepaald. Een cijfer is een herhaalbaar algoritme voor het versleutelen van willekeurige gegevens. De beveiliging van een cijfer is afhankelijk van het feit of de sleutel geheim blijft.

De term “cijfer” komt van het Arabische woord voor nul صفر (sifr).Het Romeinse cijfersysteem kende het concept nul niet, dus toen het Arabische cijfersysteem zich in de middeleeuwen naar Europa verspreidde, werd het Arabische woord overgenomen in het middeleeuwse Latijn ad “cifra”.In de loop der tijd evolueerde deze term in Engeland tot het woord “cijfer”.Men gelooft dat het nieuwe concept nul moeilijk te begrijpen was, dus de term werd gebruikt om te verwijzen naar elke boodschap of communicatie die moeilijk te begrijpen was, zelfs als deze niet daadwerkelijk gecodeerd of vercijferd was.