Een cijfer is een algoritme dat gegevens versleutelt en ontsleutelt. Het neemt platte tekst en een sleutel en produceert versleutelde tekst die eruitziet als willekeurige ruis. Zonder de sleutel is de versleutelde tekst nutteloos. Met de sleutel wordt het oorspronkelijke bericht teruggehaald. Cijfers bestaan al duizenden jaren, van Caesars verschuivingscijfer tot de Enigma-machine en het moderne AES. De wiskunde is veranderd. Het doel is hetzelfde gebleven.
Moderne versleutelingsalgoritmen zijn er in twee varianten. Symmetrische versleuteling gebruikt dezelfde sleutel voor zowel versleuteling als ontsleuteling. AES is de standaard en wordt overal gebruikt, van schijfversleuteling tot HTTPS. Het is snel en veilig met de juiste sleutelgrootte. Streamversleuteling zoals ChaCha20 versleutelt gegevens bit voor bit of byte en werkt goed op apparaten zonder hardwareversnelling. Asymmetrische versleuteling gebruikt een sleutelpaar en lost het sleuteldistributieprobleem op, maar is trager en wordt vooral gebruikt voor sleuteluitwisseling en digitale handtekeningen. De sterkte van een versleuteling hangt af van de implementatie. Zwakke sleutels, hergebruikte nonces en slechte padding hebben systemen die sterke algoritmen gebruikten, kwetsbaar gemaakt. De wiskunde is meestal niet het zwakke punt.
Cijfercategorieën
- Klassiek — substitutie en transpositie, historisch belangrijk
- Symmetrisch blok — AES, versleutelt blokken van vaste grootte
- Symmetrische stream — ChaCha20, versleutelt continue data
- Asymmetrisch — RSA, ECC, gebruikt voor sleuteluitwisseling en handtekeningen
Ontwikkel geen eigen versleuteling. Gebruik beproefde algoritmen en bibliotheken die decennialang aan kritische analyse hebben onderworpen.
Comments
No comments yet. Be the first to share a thought.
Leave a comment