Encryptie is een vak apart (en vaak superslecht uitgevoerd); dat is het eerste dat je moet weten.
Dan moet je oppassen waar je je CA en PKI voor wil gebruiken.
Verschillende systemen gebruiken verschillende implementaties.
Het DNSSEC systeem bv werkt met KSKs en ZSKs (key signing keys en zone signing keys).
Het principe daar is dat je je KSK laat signen door een authority, en dat je die enkel gebruik om je eigen ZSKs mee te signen.
Zo kan je makkelijker van keys wisselen zonder opnieuw aan een authority een signature moeten te vragen.
Het VPN systeem werkt vaak met eigen CAs; ofwel met CA op enterprise niveau en intermediate op bedrijfsniveau.
Bv OpenVPN: dan creeer je een eigen CA, die op zijn beurt voor elke server en client een certificate aanmaakt.
Vergeet dan ook geen revocation authority te maken.
ub4b schreef:Certificaten dienen enkel om de identiteit van de andere partij vast te stellen.
Partij a genereert een geheim, encrypteert dit geheim met de pubkey van de andere kant b, die het enkel kan decrypteren met zijn private key. B decrypteert het, en stuurt het dan in plaintext terug naar a. Zo weet a dat b effectief b is, want enkel hij kan het decrypteren.
Dat is een oversimplificatie van het gebruik van assymetric encryption.
Je verwart verder ook het gebruik van certs met het gebruik van assymetric encryption.
Trouwens, in dat vb weet B niet wie A is, dus veilig is het niet.
Key Exchanges hebben hun eigen nut; bij een Diffie Hellmann (vaak gebruikt in VPN om de authentication step af te werken) worden 2 private keys met mekaar vermengd tot een shared secret key.
Hashes zijn nog een andere vorm van encryptie; deze zorgen ervoor dat het verzonden bericht tamper-proof is, want de voorberekende hash kan alleen maar overeen komen als de inhoud van het bericht onveranderd is.
Dit principe wordt overigens ook toegepast voor signatures: daar wordt de hash geencrypteerd met een private key, zodat de hash comparison alleen maar kan werken als 1) de inhoud identiek is, en 2) de public key overeenkomt met de private key, maw de juiste persoon gekozen is.
Eeuwig probleem is dat PKI APIs altijd geschreven zijn met het idee dat de persoon die het implementeert al genoeg van encryption kent.
Het is dan ook iets moeilijks om juist te implementeren en zeer makkelijk kapot te krijgen als je iets verkeerd doet.
Hoeveel web developers nog nooit van salting gehoord hebben, zijn niet meer te tellen; laat staan dat ze fatsoenlijk hun pwds zouden hashen.
Het aantal mensen die denken dat Base64 encoding ook encryptie is, is evenmin te tellen.
Zelfs de ganse Italiaanse electronische betaalinfrastructuur heeft lang op base64 gedraaid, van wat ik hoor uit de industrie.