Es gibt zwei Möglichkeiten der Smartcard-Client-Authentifizierung im Web: Standard-TLS/SSL oder benutzerdefinierte Plugins für den Browser. Ich nehme an, Sie sprechen von Standard-Webbrowsern (IE/FF/Safari) und SSL-Authentifizierung.
Bei der PIN-Eingabeaufforderung sind zwei Dinge wichtig:
- SSL-Sitzung und SSL-Sitzungscache des des Browsers
- Authentifizierungsstatus des zugehörigen privaten Schlüssels auf der Karte
- die Art und Weise, wie Middleware implementiert wird.
Aus der Sicherheitsperspektive ist es letztendlich die Karte, die weiß, wann sie nach einer PIN "fragen" muss - einige Karten und Schlüssel erfordern eine PIN für jede Operation mit dem Schlüssel, bei einigen Karten ist es in Ordnung, einmal eine PIN zu erhalten und die Schlüssel im authentifizierten Zustand zu belassen, bis sie aus dem Lesegerät entfernt oder durch eine Anwendung zurückgesetzt werden.
Wenn die Sitzung im Cache des Browsers nicht wiederverwendet werden kann oder wenn die Verbindung aufgebaut wird, muss die Smartcard-Middleware (PKCS#11 unter Linux, CryptoAPI/BaseCSP-Modul unter Windows oder Tokend unter OSX) mit den Schlüsseln auf der Karte sprechen. Wenn der Authentifizierungsstatus auf der Karte die Eingabe einer PIN erfordert, wird in der Regel ein Rückruf durch den Browser ausgelöst. Oder wenn die Middleware weiß, dass sie die PIN benötigt, fragt sie diese ab, bevor sie mit der Karte spricht.
Es gibt keine 1:1-Beziehung zwischen der Eingabe einer PIN und der tatsächlichen Neuauthentifizierung der Zugriffsrechte auf den privaten Schlüssel und der Neuauthentifizierung der SSL-Sitzung.
Bei Standard-SSL sind Sie von der Art und Weise abhängig, wie SSL in den Browsern implementiert ist, und können auf der Client-Seite keine 100 % zuverlässige "Neuauthentifizierung durch Eingabe der PIN" vornehmen.
Wenn Sie Linux verwenden, können Sie mit OpenSC (das, AFAIK, CAC-Karten verwenden kann) "transaction_reset" in opensc.conf auf true setzen, was dazu führt, dass die Karte nach jeder Transaktion (jeder SSL-Sitzungsaushandlung) zurückgesetzt wird, und auf diese Weise können Sie sicher sein, dass der Benutzer jedes Mal, wenn Sie eine neue SSL-Sitzung eröffnen, die PIN erneut eingeben muss. Dies ist jedoch eine clientseitige Konfiguration, keine vom Server initiierte Funktion.
0 Stimmen
Bitte teilen Sie uns mit, wie dieses Problem gelöst wurde :)
2 Stimmen
@Kevin Ich habe die Anforderung zurückgedrängt, indem ich dem Kunden erklärt habe, dass der Pin-Timeout auf der CAC-Karte völlig unabhängig vom Browser ist. Vom Sicherheitsstandpunkt aus ist es keine gute Idee, in die normale Funktion einzugreifen. Der Sicherheitsexperte des Kunden stimmte zu, dass es nicht notwendig sei, den Pin jedes Mal neu einzugeben; ein besserer Ansatz wäre, ihn nur dann neu einzugeben, wenn er abgelaufen ist.