Versleutelingscode, of beter gezegd versleutelingsalgoritmen , zijn wiskundige functies die leesbare gegevens (plaintext) omzetten in een onleesbaar formaat (cijfertekst). Deze transformatie wordt beheerd door een geheime sleutel, die essentieel is voor zowel het versleutelen als het ontsleutelen van de gegevens. Het algoritme zelf is meestal publiekelijk bekend; de beveiliging is afhankelijk van de geheimhouding van de sleutel.
Zie het als een slot en sleutel:
* Het algoritme is het vergrendelmechanisme: Het is het proces van het versleutelen van de gegevens. Iedereen kan zien hoe het slot werkt (het algoritme is openbaar), maar ze kunnen het niet openen zonder de sleutel.
* De sleutel is de sleutel: Dit geheime stukje informatie ontgrendelt de gegevens. Zonder de juiste sleutel is het vrijwel onmogelijk om de cijfertekst te ontcijferen.
Er zijn verschillende soorten coderingsalgoritmen, gecategoriseerd op basis van verschillende factoren:
* Symmetrische sleutelcodering: Gebruikt dezelfde sleutel voor zowel codering als decodering. Dit is sneller, maar vereist een veilige sleuteluitwisseling (de sleutel zonder onderschepping bij de ontvanger krijgen). Voorbeelden hiervan zijn AES (Advanced Encryption Standard) en DES (Data Encryption Standard).
* Versleuteling met asymmetrische sleutel (cryptografie met publieke sleutel): Gebruikt twee sleutels:een publieke sleutel voor codering en een privésleutel voor decodering. De publieke sleutel kan breed worden verspreid, terwijl de private sleutel geheim moet worden gehouden. Dit lost het sleuteluitwisselingsprobleem van symmetrische encryptie op. Voorbeelden hiervan zijn RSA en ECC (Elliptic Curve Cryptography).
* Hashing-algoritmen: Deze algoritmen creëren een eenrichtingsfunctie; ze transformeren gegevens in een string (hash) met een vaste grootte die onmogelijk (of uiterst moeilijk) kan worden teruggedraaid om de originele gegevens te verkrijgen. Deze worden voornamelijk gebruikt voor verificatie van de gegevensintegriteit (om ervoor te zorgen dat er niet met gegevens is geknoeid) en wachtwoordopslag (het opslaan van een hash van het wachtwoord in plaats van het wachtwoord zelf). Voorbeelden hiervan zijn SHA-256 en MD5.
Het "code"-aspect gaat meestal niet over een geheime code in de traditionele zin (zoals een vervangingscijfer). Moderne encryptie is gebaseerd op complexe wiskundige bewerkingen en omvat vaak grote aantallen en geavanceerde algoritmen. De term 'code' wordt in deze context soms losjes gebruikt, maar het is nauwkeuriger om ernaar te verwijzen als algoritmen of cijfers. |