vrijdag, mei 18, 2018

Authenticatie


Ben ik wie ik zeg te zijn? Voor mij een weet, voor de bank een vraag. De bank weet weliswaar wie achter mijn rekeningnummer schuilgaat, want bij opening van de rekening moest ik mijn paspoort en gezicht laten zien. Maar de bank weet niet wie onder mijn naam geld van de rekening haalt. Het enige dat de bank met zekerheid kan zeggen, is dat het iemand moet zijn in bezit van mijn bankpas, pincode, tan-code, userid/password, vingerkootje of oog. De bank concludeert daaruit dat ik het ben: ik ben geauthenticeerd.

En omgekeerd kan de vraag gesteld worden: Is de bank –die ik online bezoek- wel die bank die de bank zegt te zijn? Bij het opzetten van een sessie stuurt de bank naar mijn computer een certificaat, uitgegeven door een Certification Authority (bijv. digicert). In dit bestandje staan o.a. geldigheidsduur certificaat (ongeveer een jaar), KvK-gegevens van de bank in kwestie, domeinnamen (bijv. mobiel.rabobank.nl), gegevens van de CA, gekozen handtekening algoritme (bijv. RSA/Sha-256) en de public key.
De CA moet garant staan voor de juistheid van de aangeleverde data.

Bij een certificaat hoort een digitale handtekening. Van het certificaat wordt de hash (een voor die alfa-numerieke tekst uniek getal) berekend. Deze hash wordt door de CA met de private key van de CA geëncrypt. Dit eindresultaat is de handtekening.
Lukt het “mij” (mijn computer) met de public key van de CA (die dus op het certificaat staat) deze versleutelde hash te ontsleutelen dan weet ik zeker a.) dat het certificaat van de CA afkomstig is. Wat ontsleuteld is, is de hash van het origineel. Mijn computer berekent de hash van het aangeleverde certificaat. Zijn beide hashes gelijk dan weet ik zeker b.) dat niet gerommeld is met het certificaat. Op die zekerheid kom ik terug.

Merkwaardig is, dat ik de versleutelde hash –de digitale handtekening- niet terugvindt op het certificaat zelf. Wel is aan het certificaat een vingerafdruk toegevoegd. Ik vermoed dat dit de hash van de versleutelde hash is, waarmee dus snel te controleren is of de apart meegezonden digitale handtekening (= de versleutelde hash van het originele certificaat) wel de juiste is door zelf daarvan een vingerafdruk te maken en beide fingerprints te vergelijken.

Dit is toch nog niet het hele verhaal. Een “bad bank” kan natuurlijk een eigen certificaat fabriceren of een certificaat gebruiken dat door de CA is ingetrokken of dat verlopen is.  Of zoiets het geval is, ontdek je door bij de trusted CA  als onderdeel van de PKI ( public key infrastructure) na te vragen of de public key (uniek in de wereld) door hen is uitgegeven en nog steeds wordt ondersteund. Dat doet uiteraard de computer voor je. Op het certificaat staat dan zoiets als “DigiCert SHA2 Extended Validation Server CA”.
Is alles goed dan staat in de url-balk een groen slotje. Klik je daarop dan verschijnt het certificaat.

rkh, 18-05-2018/13-02-2020