EITC/IS/ACC Advanced Classical Cryptography is het Europese IT-certificeringsprogramma dat het expertiseniveau in klassieke cryptografie bevordert, voornamelijk gericht op de public-key cryptografie, met een inleiding tot praktische public-key ciphers, evenals digitale handtekeningen, public key-infrastructuur en beveiligingscertificaten die veel op internet worden gebruikt.
Het curriculum van de EITC/IS/ACC Advanced Classical Cryptography richt zich op de public-key (asymmetrische) cryptografie, te beginnen met de inleiding tot de Diffie-Hellman Key Exchange en het discrete log-probleem (inclusief de veralgemening ervan), daarna overgaand op de encryptie met discrete log-probleem, met inbegrip van het Elgamal-coderingsschema, elliptische curven en de Elliptic Curve-cryptografie (ECC), digitale handtekeningen (inclusief beveiligingsservices en de Elgamal Digital Signature), hash-functies (inclusief de SHA-1-functie), berichtauthenticatiecodes (inclusief MAC en HMAC), sleutelbepaling (inclusief Symmetric Key Establishment SKE en Kerberos) om te eindigen met de man-in-the-middle-aanvalklasse, samen met cryptografische certificaten en de Public Key Infrastructure (PKI), binnen de volgende structuur , met uitgebreide didactische video-inhoud als referentie voor deze EITC-certificering.
Cryptografie verwijst naar manieren van veilige communicatie in aanwezigheid van een tegenstander. Cryptografie, in bredere zin, is het proces van het maken en analyseren van protocollen die voorkomen dat derden of het grote publiek toegang krijgen tot privé (gecodeerde) berichten. Moderne klassieke cryptografie is gebaseerd op verschillende hoofdkenmerken van informatiebeveiliging, zoals vertrouwelijkheid van gegevens, gegevensintegriteit, authenticatie en onweerlegbaarheid. In tegenstelling tot kwantumcryptografie, dat gebaseerd is op radicaal andere kwantumfysica-regels die de natuur karakteriseren, verwijst klassieke cryptografie naar cryptografie die gebaseerd is op klassieke natuurkundige wetten. De vakgebieden wiskunde, informatica, elektrotechniek, communicatiewetenschap en natuurkunde komen allemaal samen in de klassieke cryptografie. Elektronische handel, op chips gebaseerde betaalkaarten, digitale valuta, computerwachtwoorden en militaire communicatie zijn allemaal voorbeelden van cryptografietoepassingen.
Vóór het huidige tijdperk was cryptografie bijna synoniem met encryptie, waardoor informatie van leesbare in onbegrijpelijke onzin veranderde. Om te voorkomen dat aanvallers toegang krijgen tot een versleuteld bericht, deelt de afzender het decoderingsproces alleen met de beoogde ontvangers. De namen Alice ("A") voor de afzender, Bob ("B") voor de beoogde ontvanger en Eva ("afluisteraar") voor de tegenstander worden vaak gebruikt in cryptografieliteratuur.
Cryptografiemethoden zijn steeds complexer geworden en de toepassingen ervan zijn meer gediversifieerd sinds de ontwikkeling van rotorcoderingsmachines in de Eerste Wereldoorlog en de introductie van computers in de Tweede Wereldoorlog.
Moderne cryptografie is sterk afhankelijk van wiskundige theorie en informatica; cryptografische methoden zijn gebaseerd op aannames van rekenhardheid, waardoor ze in de praktijk voor elke tegenstander moeilijk te doorbreken zijn. Inbreken in een goed ontworpen systeem is theoretisch mogelijk, maar in de praktijk onmogelijk. Dergelijke schema's worden "computationeel veilig" genoemd als ze adequaat zijn geconstrueerd; desalniettemin maken theoretische doorbraken (bijv. verbeteringen in methodes voor het ontbinden van gehele getallen) en snellere computertechnologie een constante herevaluatie en, indien nodig, aanpassing van deze ontwerpen noodzakelijk. Er zijn informatietheoretisch veilige systemen, zoals de one-time pad, waarvan kan worden bewezen dat ze onbreekbaar zijn, zelfs met oneindige rekenkracht, maar ze zijn in de praktijk aanzienlijk moeilijker te gebruiken dan de beste theoretisch breekbare maar rekenkundig veilige schema's.
In het informatietijdperk heeft de vooruitgang van cryptografische technologie geleid tot een verscheidenheid aan juridische uitdagingen. Veel landen hebben cryptografie geclassificeerd als een wapen, waardoor het gebruik en de export ervan wordt beperkt of verboden vanwege het potentieel voor spionage en opruiing. Op sommige plaatsen waar cryptografie geoorloofd is, kunnen onderzoekers de inlevering van encryptiesleutels voor documenten die relevant zijn voor een onderzoek afdwingen. In het geval van digitale media speelt cryptografie ook een sleutelrol bij het beheer van digitale rechten en conflicten over auteursrechtinbreuken.
De term 'cryptograaf' (in tegenstelling tot 'cryptogram') werd voor het eerst gebruikt in de negentiende eeuw, in Edgar Allan Poe's korte verhaal 'The Gold-Bug'.
Tot voor kort verwees cryptografie bijna alleen naar 'versleuteling', wat inhoudt dat gewone gegevens (bekend als leesbare tekst) worden omgezet in een onleesbaar formaat (versleutelde tekst genoemd). Decodering is het tegenovergestelde van encryptie, dwz van onbegrijpelijke cijfertekst naar leesbare tekst gaan. Een cipher (of cypher) is een reeks technieken die codering en decodering in omgekeerde volgorde uitvoeren. Het algoritme en in elk geval een "sleutel" zijn verantwoordelijk voor de gedetailleerde uitvoering van het cijfer. De sleutel is een geheim (bij voorkeur alleen bekend bij de communicanten) dat wordt gebruikt om de cijfertekst te ontcijferen. Het is gewoonlijk een reeks karakters (idealiter kort zodat het door de gebruiker kan worden onthouden). Een "cryptosysteem" is de geordende verzameling elementen van eindige potentiële leesbare tekst, cijferteksten, sleutels en de versleutelings- en ontsleutelingsprocedures die in formele wiskundige termen met elke sleutel overeenkomen. Sleutels zijn zowel formeel als praktisch cruciaal, omdat cijfers met vaste sleutels gemakkelijk kunnen worden verbroken met alleen de informatie van de code, waardoor ze voor de meeste doeleinden nutteloos (of zelfs contraproductief) zijn.
In het verleden werden versleuteling vaak gebruikt zonder aanvullende procedures zoals authenticatie of integriteitscontroles voor codering of decodering. Cryptosystemen zijn onderverdeeld in twee categorieën: symmetrisch en asymmetrisch. Dezelfde sleutel (de geheime sleutel) wordt gebruikt om een bericht te versleutelen en ontsleutelen in symmetrische systemen, die tot de jaren zeventig de enige waren die bekend waren. Omdat symmetrische systemen kortere sleutellengtes gebruiken, is datamanipulatie in symmetrische systemen sneller dan in asymmetrische systemen. Asymmetrische systemen coderen een communicatie met een "openbare sleutel" en decoderen deze met een vergelijkbare "private sleutel". Het gebruik van asymmetrische systemen verbetert de communicatiebeveiliging, vanwege de moeilijkheid om de relatie tussen de twee sleutels te bepalen. RSA (Rivest-Shamir-Adleman) en ECC zijn twee voorbeelden van asymmetrische systemen (Elliptic Curve Cryptography). De veelgebruikte AES (Advanced Encryption Standard), die de eerdere DES verving, is een voorbeeld van een hoogwaardig symmetrisch algoritme (Data Encryption Standard). De verschillende technieken om de taal van kinderen te verwarren, zoals Varkenslatijn of andere verkantingen, en alle cryptografische schema's, hoe serieus bedoeld ook, uit welke bron dan ook vóór de introductie van het one-time pad in het begin van de twintigste eeuw, zijn voorbeelden van slechte kwaliteit symmetrische algoritmen.
De term "code" wordt in de volksmond vaak gebruikt om te verwijzen naar elke techniek van codering of het verbergen van berichten. In cryptografie verwijst code echter naar de vervanging van een codewoord door een eenheid van leesbare tekst (dwz een betekenisvol woord of zinsdeel) (bijvoorbeeld "wallaby" vervangt "aanval bij dageraad"). Daarentegen wordt een cijfertekst gemaakt door een element onder een dergelijk niveau te wijzigen of te vervangen (bijvoorbeeld een letter, een lettergreep of een paar letters) om een cijfertekst te vormen.
Cryptanalyse is de studie van manieren om versleutelde gegevens te ontsleutelen zonder toegang te hebben tot de sleutel die daarvoor nodig is; met andere woorden, het is de studie van het "breken" van versleutelingsschema's of hun implementaties.
In het Engels gebruiken sommige mensen de termen "cryptografie" en "cryptologie" door elkaar, terwijl anderen (inclusief de Amerikaanse militaire praktijk in het algemeen) "cryptografie" gebruiken om te verwijzen naar het gebruik en de praktijk van cryptografische technieken en "cryptologie" om te verwijzen naar de gecombineerde studie van cryptografie en cryptanalyse. Engels is flexibeler dan een aantal andere talen, waar "cryptologie" (zoals beoefend door cryptologen) altijd in de tweede betekenis wordt gebruikt. Steganografie wordt soms opgenomen in cryptologie, volgens RFC 2828.
Cryptolinguïstiek is de studie van taaleigenschappen die enige relevantie hebben in cryptografie of cryptologie (bijvoorbeeld frequentiestatistieken, lettercombinaties, universele patronen, enzovoort).
Cryptografie en cryptanalyse hebben een lange geschiedenis.
Geschiedenis van cryptografie is het hoofdartikel.
Vóór de moderne tijd hield cryptografie zich voornamelijk bezig met de vertrouwelijkheid van berichten (dwz encryptie) - de conversie van berichten van een begrijpelijke naar een onbegrijpelijke vorm en opnieuw, waardoor ze onleesbaar werden voor interceptors of afluisteraars zonder geheime kennis (namelijk de sleutel die nodig is voor de decodering van dat bericht). Versleuteling is ontworpen om de gesprekken van spionnen, militaire leiders en diplomaten privé te houden. In de afgelopen decennia is het vakgebied uitgegroeid tot technieken zoals het controleren van de integriteit van berichten, authenticatie van de identiteit van de afzender/ontvanger, digitale handtekeningen, interactieve bewijzen en beveiligde berekeningen.
De twee meest voorkomende klassieke cijfertypen zijn transpositiecijfers, die systematisch letters of groepen letters vervangen door andere letters of groepen letters (bijv. 'hallo wereld' wordt 'ehlol owrdl' in een triviaal eenvoudig herschikkingsschema), en substitutiecijfers, die systematisch letters of groepen letters vervangen door andere letters of groepen letters (bijv. 'fly at once' wordt 'gmz bu'. Eenvoudige versies van beide hebben nooit veel privacy geboden voor sluwe tegenstanders. Het Caesar-cijfer was een vroeg substitutiecijfer waarin elke letter in de leesbare tekst werd vervangen door een letter een bepaald aantal posities lager in het alfabet. Volgens Suetonius gebruikte Julius Caesar het met een ploeg van drie man om met zijn generaals te communiceren. Een vroeg Hebreeuws cijfer, Atbash, is een voorbeeld. Het oudst bekende gebruik van cryptografie is een gebeeldhouwde cijfertekst op steen in Egypte (ongeveer 1900 vGT), maar het is mogelijk dat dit werd gedaan voor het plezier van geletterde toeschouwers in plaats van een om informatie te verbergen.
Crypten zijn naar verluidt bekend bij de klassieke Grieken (bijv. het scytale-transpositiecijfer waarvan beweerd wordt dat het door het Spartaanse leger werd gebruikt). Steganografie (de praktijk om zelfs de aanwezigheid van een communicatie te verbergen om deze privé te houden) werd ook in de oudheid uitgevonden. Een zin getatoeëerd op het geschoren hoofd van een slaaf en verborgen onder het opnieuw gegroeide haar, volgens Herodotus. Het gebruik van onzichtbare inkt, microdots en digitale watermerken om informatie te verbergen zijn meer actuele voorbeelden van steganografie.
Kautiliyam en Mulavediya zijn twee soorten cijfers die worden genoemd in de 2000 jaar oude Kamasutra van Vtsyyana in India. De cijferlettervervangingen in de Kautiliyam zijn gebaseerd op fonetische relaties, zoals klinkers die medeklinkers worden. Het cijferalfabet in de Mulavediya bestaat uit overeenkomende letters en het gebruik van wederzijdse letters.
Volgens de moslimgeleerde Ibn al-Nadim had Sassanidische Perzië twee geheime schriften: de h-dabrya (letterlijk "Konings schrift"), dat werd gebruikt voor officiële correspondentie, en de rz-saharya, die werd gebruikt om geheime berichten uit te wisselen met andere landen.
In zijn boek The Codebreakers schrijft David Kahn dat de hedendaagse cryptologie begon met de Arabieren, die de eersten waren die cryptanalytische procedures zorgvuldig documenteerden. Het boek met cryptografische berichten is geschreven door Al-Khalil (717–786) en bevat het vroegste gebruik van permutaties en combinaties om alle denkbare Arabische woorden met en zonder klinkers op te sommen.
Cijferteksten gegenereerd door een klassieke versleuteling (evenals sommige moderne versleuteling) onthullen statistische informatie over de leesbare tekst, die kan worden gebruikt om de versleuteling te ontcijferen. Na de ontdekking van frequentieanalyse, mogelijk door de Arabische wiskundige en polyhistor Al-Kindi (ook bekend als Alkindus) in de 9e eeuw, konden bijna al deze cijfers door een intelligente aanvaller worden verbroken. Klassieke cijfers zijn vandaag de dag nog steeds populair, zij het grotendeels als puzzels (zie cryptogram). Risalah fi Istikhraj al-Mu'amma (Manuscript voor het ontcijferen van cryptografische berichten) is geschreven door Al-Kindi en documenteerde het eerste bekende gebruik van cryptanalysetechnieken voor frequentieanalyse.
Sommige benaderingen voor versleuteling met uitgebreide geschiedenis, zoals homofone versleuteling, die de frequentieverdeling afvlakken, profiteren mogelijk niet van de frequenties van taalletters. Frequenties van taallettergroep (of n-gram) kunnen een aanval zijn voor die cijfers.
Tot de ontdekking van het polyalfabetische cijfer, met name door Leon Battista Alberti rond 1467, waren vrijwel alle cijfers toegankelijk voor cryptanalyse met behulp van de frequentieanalyse, hoewel er enig bewijs is dat het al bekend was bij Al-Kindi. Alberti kwam op het idee om afzonderlijke cijfers (of vervangende alfabetten) te gebruiken voor verschillende delen van een communicatie (misschien voor elke volgende leesbare letter aan de limiet). Hij creëerde ook wat wordt beschouwd als het eerste automatische versleutelingsapparaat, een wiel dat een deel van zijn ontwerp uitvoerde. Versleuteling in het Vigenère-cijfer, een polyalfabetisch cijfer, wordt beheerd door een sleutelwoord dat de lettervervanging regelt op basis van welke letter van het sleutelwoord wordt gebruikt. Charles Babbage toonde aan dat het Vigenère-cijfer halverwege de negentiende eeuw kwetsbaar was voor Kasiski-analyse, maar Friedrich Kasiski publiceerde zijn bevindingen tien jaar later.
Ondanks het feit dat frequentieanalyse een krachtige en brede techniek is tegen veel cijfers, is encryptie in de praktijk effectief gebleven omdat veel potentiële cryptanalisten zich niet bewust zijn van de techniek. Om een bericht te breken zonder gebruik te maken van frequentieanalyse, was kennis nodig van de gebruikte code en mogelijk de sleutel die erbij betrokken was, waardoor spionage, omkoping, inbraak, overlopen en andere cryptanalytisch ongeïnformeerde tactieken aantrekkelijker werden. Het geheim van een coderingsalgoritme werd uiteindelijk in de 19e eeuw erkend als een redelijke noch haalbare garantie voor berichtbeveiliging; in feite moet elk geschikt cryptografisch schema (inclusief versleuteling) veilig blijven, zelfs als de tegenstander het versleutelingsalgoritme zelf volledig begrijpt. De beveiliging van de sleutel moet voldoende zijn voor een goede codering om de vertrouwelijkheid te behouden bij een aanval. Auguste Kerckhoffs verklaarde dit fundamentele principe voor het eerst in 1883, en het staat bekend als het principe van Kerckhoffs; als alternatief, en meer bot, Claude Shannon, de uitvinder van de informatietheorie en de grondbeginselen van theoretische cryptografie, herformuleerde het als Shannons Maxim - 'de vijand kent het systeem'.
Om te helpen met cijfers, zijn veel fysieke gadgets en assistentie gebruikt. Het scytale van het oude Griekenland, een staaf die naar verluidt door de Spartanen werd gebruikt als een transpositiesleutel, was misschien een van de eerste. Andere hulpmiddelen werden in de middeleeuwen bedacht, zoals het cijferrooster, dat ook werd gebruikt voor steganografie. Met de ontwikkeling van polyalfabetische cijfers kwamen meer geavanceerde hulpmiddelen beschikbaar, zoals de cijferschijf van Alberti, het tabula recta-schema van Johannes Trithemius en het wielcijfer van Thomas Jefferson (niet algemeen bekend en onafhankelijk opnieuw uitgevonden door Bazeries rond 1900). Veel mechanische coderings-/decoderingssystemen zijn bedacht en gepatenteerd in het begin van de twintigste eeuw, waaronder rotormachines, die van de late jaren 1920 tot de Tweede Wereldoorlog beroemd werden gebruikt door de Duitse regering en het leger. Na de Eerste Wereldoorlog resulteerden de cijfers die werden geïmplementeerd door instanties van hogere kwaliteit van deze machineontwerpen in een aanzienlijke toename van de cryptanalytische moeilijkheidsgraad.
Voor het begin van de twintigste eeuw hield cryptografie zich voornamelijk bezig met taalkundige en lexicografische patronen. Sindsdien is de focus geëvolueerd en omvat cryptografie nu aspecten van informatietheorie, computationele complexiteit, statistiek, combinatoriek, abstracte algebra, getaltheorie en eindige wiskunde in het algemeen. Cryptografie is een vorm van techniek, maar het is uniek omdat het zich bezighoudt met actieve, intelligente en vijandige weerstand, terwijl andere vormen van techniek (zoals civiele of chemische technologie) alleen te maken hebben met natuurlijke krachten die neutraal zijn. Het verband tussen cryptografieproblemen en kwantumfysica wordt ook onderzocht.
De ontwikkeling van digitale computers en elektronica hielp bij de cryptanalyse door de creatie van aanzienlijk geavanceerdere cijfers mogelijk te maken. Bovendien stonden computers, in tegenstelling tot traditionele versleutelingen, die uitsluitend geschreven taalteksten versleutelden, toe om elk type gegevens te versleutelen die in elk binair formaat konden worden weergegeven; dit was nieuw en cruciaal. In zowel het ontwerp van de code als de cryptanalyse hebben computers de taalcryptografie verdrongen. In tegenstelling tot klassieke en mechanische methoden, die voornamelijk traditionele karakters (dwz letters en cijfers) rechtstreeks manipuleren, werken veel computercijfers op binaire bitreeksen (soms in groepen of blokken). Computers, aan de andere kant, hebben geholpen bij de cryptanalyse, wat gedeeltelijk de toegenomen coderingscomplexiteit heeft gecompenseerd. Desondanks zijn goede moderne cijfers de cryptanalyse voor gebleven; het is vaak zo dat het gebruik van een goede codering zeer efficiënt is (dat wil zeggen, snel en vereist weinig middelen, zoals geheugen of CPU-capaciteit), terwijl het breken ervan een inspanning vereist die vele ordes van grootte groter is en veel groter dan vereist is voor enig klassieke codering, waardoor cryptanalyse effectief onmogelijk wordt.
Moderne cryptografie maakt zijn debuut.
De cryptanalyse van de nieuwe mechanische apparaten bleek uitdagend en tijdrovend. Tijdens de Tweede Wereldoorlog bevorderden cryptanalytische activiteiten in Bletchley Park in het Verenigd Koninkrijk de uitvinding van efficiëntere methoden voor het uitvoeren van repetitieve taken. De Colossus, 's werelds eerste volledig elektronische, digitale, programmeerbare computer, is ontwikkeld om te helpen bij het decoderen van cijfers die zijn gemaakt door de Lorenz SZ40/42-machine van het Duitse leger.
Cryptografie is een relatief nieuw gebied van open academisch onderzoek, dat pas halverwege de jaren zeventig is begonnen. IBM-medewerkers bedachten het algoritme dat de Federale (dwz Amerikaanse) Data Encryption Standard werd; Whitfield Diffie en Martin Hellman publiceerden hun belangrijkste overeenkomstalgoritme; en Martin Gardner's Scientific American column publiceerde het RSA-algoritme. Cryptografie is sindsdien in populariteit gegroeid als een techniek voor communicatie, computernetwerken en computerbeveiliging in het algemeen.
Er zijn diepgaande banden met abstracte wiskunde, aangezien verschillende moderne cryptografiebenaderingen hun sleutels alleen geheim kunnen houden als bepaalde wiskundige problemen hardnekkig zijn, zoals factorisatie van gehele getallen of discrete logaritmen. Er zijn slechts een handvol cryptosystemen waarvan is aangetoond dat ze 100% veilig zijn. Claude Shannon bewees dat het eenmalige pad er een van is. Er zijn een paar belangrijke algoritmen waarvan is aangetoond dat ze onder bepaalde voorwaarden veilig zijn. Het onvermogen om extreem grote gehele getallen te factoriseren, is bijvoorbeeld de basis om te geloven dat RSA en andere systemen veilig zijn, maar het bewijs van onbreekbaarheid is onhaalbaar omdat het onderliggende wiskundige probleem onopgelost blijft. In de praktijk worden deze veel gebruikt en de meeste competente waarnemers geloven dat ze in de praktijk onbreekbaar zijn. Er bestaan systemen die vergelijkbaar zijn met RSA, zoals ontwikkeld door Michael O. Rabin, die aantoonbaar veilig zijn als factoring n = pq onmogelijk is; ze zijn echter praktisch nutteloos. Het probleem met discrete logaritmen is de basis om te geloven dat sommige andere cryptosystemen veilig zijn, en er zijn vergelijkbare, minder praktische systemen die aantoonbaar veilig zijn in termen van de oplosbaarheid of onoplosbaarheid van het discrete logaritmeprobleem.
Ontwerpers van cryptografische algoritmen en systemen moeten rekening houden met mogelijke toekomstige ontwikkelingen wanneer ze aan hun ideeën werken, naast kennis van de cryptografische geschiedenis. Naarmate de computerverwerkingskracht bijvoorbeeld is verbeterd, is het aantal brute-force-aanvallen toegenomen, waardoor ook de vereiste sleutellengtes zijn toegenomen. Sommige ontwerpers van cryptografische systemen die post-kwantumcryptografie onderzoeken, houden al rekening met de mogelijke gevolgen van kwantumcomputing; de aangekondigde nadering van bescheiden implementaties van deze machines kan de noodzaak van preventieve voorzichtigheid meer dan alleen speculatief maken.
Klassieke cryptografie in de moderne tijd
Symmetrische (of privésleutel) cryptografie is een type codering waarbij de zender en ontvanger dezelfde sleutel gebruiken (of, minder vaak, waarin hun sleutels verschillend zijn, maar op een gemakkelijk berekenbare manier gerelateerd zijn en in het geheim worden bewaard, privé ). Tot juni 1976 was dit het enige type encryptie dat publiekelijk bekend was.
Blokcijfers en stroomcijfers worden beide gebruikt om symmetrische sleutelcijfers te implementeren. Een block cipher versleutelt invoer in blokken platte tekst in plaats van individuele karakters, zoals een stream cipher doet.
De Amerikaanse regering heeft de Data Encryption Standard (DES) en de Advanced Encryption Standard (AES) aangewezen als cryptografiestandaarden (hoewel de certificering van DES uiteindelijk werd ingetrokken nadat de AES was ingesteld). DES (vooral de nog steeds goedgekeurde en aanzienlijk veiligere triple-DES-variant) blijft populair ondanks de afschaffing ervan als officiële standaard; het wordt gebruikt in een breed scala aan toepassingen, van ATM-codering tot e-mailprivacy en veilige toegang op afstand. Er zijn een hele reeks verschillende blokcijfers uitgevonden en uitgebracht, met wisselend succes. Velen, waaronder sommige ontworpen door gekwalificeerde beoefenaars, zoals FEAL, zijn op grote schaal gebroken.
Stroomversleuteling genereert, in tegenstelling tot blokversleuteling, een oneindig lange stroom sleutelmateriaal die bit-voor-bit of teken-voor-teken wordt gekoppeld aan leesbare tekst, vergelijkbaar met het one-time pad. De uitvoerstroom van een stroomcijfer wordt gegenereerd vanuit een verborgen interne toestand die verandert naarmate het cijfer functioneert. Het geheime sleutelmateriaal wordt in eerste instantie gebruikt om die interne toestand op te zetten. Het stroomcijfer RC4 wordt veel gebruikt. Door blokken van een sleutelstroom te maken (in plaats van een pseudo-willekeurige nummergenerator) en een XOR-bewerking te gebruiken voor elk bit van de leesbare tekst met elk bit van de sleutelstroom, kunnen blokcijfers worden gebruikt als stroomcijfers.
Berichtauthenticatiecodes (MAC's) zijn vergelijkbaar met cryptografische hashfuncties, met de uitzondering dat een geheime sleutel kan worden gebruikt om de hash-waarde bij ontvangst te valideren; deze extra complexiteit voorkomt een aanval op naakte digest-algoritmen en wordt daarom als de moeite waard beschouwd. Een derde soort cryptografische techniek zijn cryptografische hashfuncties. Ze nemen een bericht van elke lengte als invoer en geven een kleine hash met een vaste lengte uit die bijvoorbeeld kan worden gebruikt in digitale handtekeningen. Een aanvaller kan met goede hash-algoritmen geen twee berichten lokaliseren die dezelfde hash produceren. MD4 is een veelgebruikte maar nu defecte hashfunctie; MD5, een verbeterde vorm van MD4, wordt eveneens veel gebruikt, maar wordt in de praktijk niet gebruikt. De serie Secure Hash Algorithm van MD5-achtige hash-algoritmen is ontwikkeld door de Amerikaanse National Security Agency: de Amerikaanse normautoriteit heeft besloten dat het vanuit veiligheidsoogpunt "voorzichtig" was om een nieuwe standaard te ontwikkelen om "de robuustheid van het algehele hash-algoritme van NIST aanzienlijk te verbeteren gereedschapskist.” SHA-1 wordt veel gebruikt en is veiliger dan MD5, maar cryptoanalisten hebben er aanvallen op geïdentificeerd; de SHA-2-familie verbetert SHA-1, maar is vanaf 2011 kwetsbaar voor botsingen; en de SHA-2-familie verbetert SHA-1, maar is kwetsbaar voor botsingen. Als gevolg daarvan moest tegen 2012 een ontwerpwedstrijd voor hashfuncties worden gehouden om een nieuwe Amerikaanse nationale norm te kiezen, bekend als SHA-3. De wedstrijd kwam tot een einde op 2 oktober 2012, toen het National Institute of Standards and Technology (NIST) Keccak aankondigde als het nieuwe SHA-3 hash-algoritme. In tegenstelling tot inverteerbare blok- en stroomcoderingen bieden cryptografische hashfuncties een gehashte uitvoer die niet kan worden gebruikt om de oorspronkelijke invoergegevens te herstellen. Cryptografische hashfuncties worden gebruikt om de authenticiteit te controleren van gegevens die zijn verkregen uit een onbetrouwbare bron of om een extra mate van bescherming toe te voegen.
Hoewel een bericht of een reeks berichten een andere sleutel kan hebben dan andere, gebruiken cryptosystemen met symmetrische sleutels dezelfde sleutel voor versleuteling en ontsleuteling. Het sleutelbeheer dat nodig is om symmetrische cijfers veilig te gebruiken, is een groot nadeel. Elk individueel paar communicerende partijen zou idealiter een andere sleutel moeten delen, evenals mogelijk een andere cijfertekst voor elke verzonden cijfertekst. Het aantal benodigde sleutels groeit recht evenredig met het aantal netwerkdeelnemers, waardoor gecompliceerde sleutelbeheertechnieken nodig zijn om ze allemaal consistent en geheim te houden.
Whitfield Diffie en Martin Hellman vonden het concept van public-key (ook bekend als asymmetrische sleutel) cryptografie uit in een baanbrekend werk uit 1976, waarin twee verschillende maar wiskundig verwante sleutels - een openbare sleutel en een privésleutel - worden gebruikt. Ook al zijn ze onlosmakelijk met elkaar verbonden, een public key-systeem is zo gebouwd dat het berekenen van de ene sleutel (de 'private key') van de andere (de 'public key') rekenkundig onhaalbaar is. In plaats daarvan worden beide sleutels in het geheim geproduceerd, als een gekoppeld paar. Public-key cryptografie is volgens historicus David Kahn "het meest revolutionaire nieuwe begrip in het veld sinds polyalfabetische substitutie ontstond in de Renaissance."
De openbare sleutel in een cryptosysteem met openbare sleutel kan vrij worden verzonden, maar de gekoppelde privésleutel moet verborgen worden gehouden. De openbare sleutel wordt gebruikt voor versleuteling, terwijl de privé of geheime sleutel wordt gebruikt voor ontsleuteling in een versleutelingsschema met openbare sleutels. Hoewel Diffie en Hellman niet in staat waren een dergelijk systeem te maken, toonden ze aan dat cryptografie met openbare sleutels mogelijk was door het Diffie-Hellman-sleuteluitwisselingsprotocol te bieden, een oplossing waarmee twee mensen heimelijk overeenstemming kunnen bereiken over een gedeelde coderingssleutel. Het meest gebruikte formaat voor openbare-sleutelcertificaten wordt gedefinieerd door de X.509-standaard.
De publicatie van Diffie en Hellman leidde tot wijdverbreide academische belangstelling voor het ontwikkelen van een praktisch versleutelingssysteem met openbare sleutels. Ronald Rivest, Adi Shamir en Len Adleman wonnen uiteindelijk de wedstrijd in 1978 en hun antwoord werd bekend als het RSA-algoritme.
De Diffie-Hellman- en RSA-algoritmen zijn niet alleen de vroegst algemeen bekende voorbeelden van hoogwaardige algoritmen met openbare sleutels, maar behoren ook tot de meest gebruikte. Het Cramer-Shoup-cryptosysteem, ElGamal-codering en talrijke elliptische curve-benaderingen zijn voorbeelden van algoritmen met asymmetrische sleutels.
GCHQ-cryptografen voorzagen verschillende wetenschappelijke vooruitgang, volgens een document dat in 1997 werd uitgegeven door het Government Communications Headquarters (GCHQ), een Britse inlichtingenorganisatie. Volgens de legende werd asymmetrische sleutelcryptografie omstreeks 1970 uitgevonden door James H. Ellis. Clifford Cocks vond in 1973 een oplossing uit die qua ontwerp enorm op RSA leek. Malcolm J. Williamson wordt gecrediteerd met het uitvinden van de Diffie-Hellman-sleuteluitwisseling in 1974.
Digitale handtekeningsystemen worden ook geïmplementeerd met behulp van cryptografie met openbare sleutels. Een digitale handtekening is vergelijkbaar met een traditionele handtekening in die zin dat het voor de gebruiker eenvoudig is om te maken, maar moeilijk voor anderen om te vervalsen. Digitale handtekeningen kunnen ook permanent worden gekoppeld aan de inhoud van de te ondertekenen communicatie; dit betekent dat ze niet van het ene document naar het andere kunnen worden 'verplaatst' zonder te worden gedetecteerd. Er zijn twee algoritmen in schema's voor digitale handtekeningen: één voor ondertekening, die een geheime sleutel gebruikt om het bericht te verwerken (of een hash van het bericht, of beide), en één voor verificatie, die de overeenkomende openbare sleutel met het bericht gebruikt om te valideren de authenticiteit van de handtekening. Twee van de meest gebruikte methoden voor digitale handtekeningen zijn RSA en DSA. Openbare sleutelinfrastructuren en veel netwerkbeveiligingssystemen (bijv. SSL/TLS, veel VPN's) zijn afhankelijk van digitale handtekeningen om te functioneren.
De computationele complexiteit van "harde" problemen, zoals die welke voortkomen uit de getaltheorie, wordt vaak gebruikt om public-key-methoden te ontwikkelen. Het integer factorisatieprobleem is gerelateerd aan de hardheid van RSA, terwijl het discrete logaritme probleem gerelateerd is aan Diffie-Hellman en DSA. De veiligheid van cryptografie met elliptische krommen is gebaseerd op theoretische problemen met elliptische krommen. De meeste openbare-sleutelalgoritmen bevatten bewerkingen zoals modulaire vermenigvuldiging en machtsverheffing, die aanzienlijk duurder zijn dan de technieken die in de meeste blokcijfers worden gebruikt, vooral met normale sleutelgroottes, vanwege de moeilijkheid van de onderliggende problemen. Als gevolg hiervan zijn public-key cryptosystemen vaak hybride cryptosystemen, waarbij het bericht wordt versleuteld met een snel, hoogwaardig symmetrisch-sleutelalgoritme, terwijl de relevante symmetrische sleutel met het bericht wordt verzonden, maar versleuteld met een openbaar-sleutelalgoritme. Hybride handtekeningschema's, waarin een cryptografische hashfunctie wordt berekend en alleen de resulterende hash digitaal wordt ondertekend, worden ook vaak gebruikt.
Hash-functies in cryptografie
Cryptografische hashfuncties zijn cryptografische algoritmen die specifieke sleutels produceren en gebruiken om gegevens te versleutelen voor symmetrische of asymmetrische versleuteling, en ze kunnen worden beschouwd als sleutels. Ze nemen een bericht van elke lengte als invoer en geven een kleine hash met een vaste lengte uit die bijvoorbeeld kan worden gebruikt in digitale handtekeningen. Een aanvaller kan met goede hash-algoritmen geen twee berichten lokaliseren die dezelfde hash produceren. MD4 is een veelgebruikte maar nu defecte hashfunctie; MD5, een verbeterde vorm van MD4, wordt eveneens veel gebruikt, maar wordt in de praktijk niet gebruikt. De serie Secure Hash Algorithm van MD5-achtige hash-algoritmen is ontwikkeld door de Amerikaanse National Security Agency: de Amerikaanse normautoriteit heeft besloten dat het vanuit veiligheidsoogpunt "voorzichtig" was om een nieuwe standaard te ontwikkelen om "de robuustheid van het algehele hash-algoritme van NIST aanzienlijk te verbeteren gereedschapskist.” SHA-1 wordt veel gebruikt en is veiliger dan MD5, maar cryptoanalisten hebben er aanvallen op geïdentificeerd; de SHA-2-familie verbetert SHA-1, maar is vanaf 2011 kwetsbaar voor botsingen; en de SHA-2-familie verbetert SHA-1, maar is kwetsbaar voor botsingen. Als gevolg daarvan moest tegen 2012 een ontwerpwedstrijd voor hashfuncties worden gehouden om een nieuwe Amerikaanse nationale norm te kiezen, bekend als SHA-3. De wedstrijd kwam tot een einde op 2 oktober 2012, toen het National Institute of Standards and Technology (NIST) Keccak aankondigde als het nieuwe SHA-3 hash-algoritme. In tegenstelling tot inverteerbare blok- en stroomcoderingen bieden cryptografische hashfuncties een gehashte uitvoer die niet kan worden gebruikt om de oorspronkelijke invoergegevens te herstellen. Cryptografische hashfuncties worden gebruikt om de authenticiteit te controleren van gegevens die zijn verkregen uit een onbetrouwbare bron of om een extra mate van bescherming toe te voegen.
Cryptografische primitieven en cryptosystemen
Veel van het theoretische werk van cryptografie is gericht op cryptografische primitieven - algoritmen met cryptografische basiseigenschappen - en hoe deze zich verhouden tot andere cryptografische uitdagingen. Deze basisprimitieven worden vervolgens gebruikt om complexere cryptografische hulpmiddelen te maken. Deze primitieven bieden fundamentele kwaliteiten die worden gebruikt om complexere tools te creëren die bekend staan als cryptosystemen of cryptografische protocollen die een of meer beveiligingseigenschappen op hoog niveau garanderen. De grens tussen cryptografische primitieven en cryptosystemen is daarentegen willekeurig; het RSA-algoritme wordt bijvoorbeeld soms als een cryptosysteem beschouwd en soms als primitief. Pseudo-willekeurige functies, eenrichtingsfuncties en andere cryptografische primitieven zijn veelvoorkomende voorbeelden.
Een cryptografisch systeem, of cryptosysteem, wordt gecreëerd door een of meer cryptografische primitieven te combineren om een ingewikkelder algoritme te creëren. Cryptosystemen (bijv. El-Gamal-encryptie) zijn bedoeld om specifieke functionaliteit te bieden (bijv. Public Key-encryptie) en tegelijkertijd bepaalde beveiligingskwaliteiten te waarborgen (bijv. willekeurig gekozen orakelmodel-plaintext-aanval CPA-beveiliging). Om de beveiligingskwaliteiten van het systeem te ondersteunen, maken cryptosystemen gebruik van de eigenschappen van de onderliggende cryptografische primitieven. Een geavanceerd cryptosysteem kan worden gegenereerd uit een combinatie van tal van meer rudimentaire cryptosystemen, aangezien het onderscheid tussen primitieven en cryptosystemen enigszins willekeurig is. In veel gevallen omvat de structuur van het cryptosysteem heen-en-weer communicatie tussen twee of meer partijen in de ruimte (bijv. tussen de afzender en ontvanger van een beveiligd bericht) of in de tijd (bijv. tussen de afzender en ontvanger van een beveiligd bericht) (bijv. cryptografisch beveiligde back-upgegevens).
Om u in detail vertrouwd te maken met het certificeringscurriculum kunt u onderstaande tabel uitvouwen en analyseren.
Het EITC/IS/ACC Advanced Classical Cryptography Certification Curriculum verwijst naar open access didactisch materiaal in videovorm. Het leerproces is opgedeeld in een stapsgewijze structuur (programma's -> lessen -> onderwerpen) die relevante curriculumonderdelen omvat. Onbeperkt advies met domeinexperts wordt ook geboden.
Voor meer informatie over de certificeringsprocedure, zie Hoe het werkt.
Belangrijkste collegeaantekeningen
Cryptografie begrijpen door Christof Paar en Jan Pelzl, online cursus in de vorm van PDF-dia's
https://www.crypto-textbook.com/slides.php
Cryptografie begrijpen door Christof Paar en Jan Pelzl, online cursus in de vorm van video's
https://www.crypto-textbook.com/movies.php
Belangrijkste klassieke cryptografie boekreferentie:
Cryptografie begrijpen door Christof Paar en Jan Pelzl
https://www.crypto-textbook.com/index.php
Aanvullende toegepaste klassieke cryptografie boekreferentie
Handboek Toegepaste Cryptografie door A. Menezes, P. van Oorschot en S. Vanstone:
https://cacr.uwaterloo.ca/hac/
https://www.amazon.com/exec/obidos/ISBN=0849385237/7181-7381933-595174
https://notendur.hi.is/pgg/Handbook%20of%20Applied%20Cryptography.pdf
Download het volledige offline zelflerende voorbereidende materiaal voor het EITC/IS/ACC Advanced Classical Cryptography-programma in een PDF-bestand
EITC/IS/ACC voorbereidingsmaterialen – standaardversie
EITC/IS/ACC voorbereidend materiaal – uitgebreide versie met evaluatievragen