Net iD Service
 

Vissa saker är inte OK...

När man bygger en certifikatsbaserad inloggningslogik till en applikation bör man göra detta baserat på att man:
a) Ger klienten en "utmaning" (challenge) som måste signeras (kräver att den privata nyckeln används)
b) Validera signaturen avseende matematiken, certifikatskedjan och spärrstatus (certifikatet finns med i signaturen)
c) Helst göra det via MS-CAPI eller PKCS#11

Förvisso kan man i vissa fall vilja använda finesser i Net iDs plugin (t.ex. som denna site gör i samband med inloggningen men då bara för att upptäcka saker som att inget kort sitter i osv.) men man får INTE förledas att tro att bara för att användaren kan PIN-koden till kortet så har man gjort en påloggning. (Se exempel på denna sida utanför sitens påloggningsskydd)

Alltså, att logga på ett kort är INTE samma sak som att logga på en applikation.

När man "loggar på kortet" med sin PIN-kod så används inte den privata nyckeln!

Hur hänger det här ihop?

Jo, på vissa kort kan man enkelt lägga till certifikat som:
a) Är utställda till någon annan än en själv
b) Inte korresponderar mot privat nyckel på kortet
(Kom ihåg att certifikaten inte är skyddade på kortet, det är de privata nycklarna som är skyddade. Certifikaten kan läsas ut utan PIN, de kan hämtas från en katalog, de kommer med i signerade e-postmeddelanden osv.)

Ta en titt på nedanstående bild. Sju certifikat, men det är bara tre av dem som korresponderar mot privat nyckel på kortet. Så om jag försöker göra TLS/SSL mot en webbapplikation och väljer t.ex. "Richard Lindvall" så kommer jag förstås inte in eftersom jag inte har Richard Lindvalls privata nyckel. Så långt allt gott tack vare SSL-protokollets inbyggda funktion att ge klienten en "utmaning" som sedan valideras på serversidan.

MEN, om man bygger en egen inloggningslogik i sin applikation, loggar på kortet med PIN, och sedan läser ut certifikaten så har man egentligen ingen aning om vilken användare vi har att göra med. Jag hade kunnat radera mina egna certifikat och bara importera certifikatet från den jag vill utge mig för att vara. Då har man ett problem...

 

Med vänliga hälsningar,