CAC-Smartcard-Authentifizierung
Haben wir eine browser-basierte Anwendung, wo wir wollen, dass die Benutzer sich erneut authentifizieren, wenn Sie es betreten. Also, wenn Sie zugreifen, die URL, die wir wollen, dass Sie präsentiert werden mit der PIN-Abfrage, so dass Sie sich erneut authentifizieren. Gibt es einen vernünftigen Weg, das zu tun?
Zusätzliche info: Dies ist für Sie eine CAC-Karte und die Arbeitsstationen haben ActivIdentity und Tumbleweed auf Sie. Auch konnte ich einen Dienst hinzufügen, um die Arbeitsplätze, wenn nötig. Die Browser sind alle IE7. Der web-server IIS 6 und die Seiten sind geschrieben ASP.NET (meistens).
- Bitte teilen Sie, wie dieses Problem gelöst habe. 🙂
- Ich schob Sie zurück auf die Anforderung, indem er erklärt dem Kunden, dass die pin-timeout auf der CAC-Karte ist völlig unabhängig vom browser. Vom Standpunkt der Sicherheit ist es nicht eine gute Idee, zu versuchen zu stören die normale Funktion. Ihre Sicherheit person vereinbart, dass war es nicht notwendig, den client geben Sie die pin jedes mal; ein besserer Ansatz ist es, nur eingeben, wenn es abgelaufen ist.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es gibt ein paar verschiedene Stücke von software, die hier beteiligt sind.
Ersten ist die Karte selbst. Durchführen einer digitalen Signatur, die CAC hat in einem "geprüft" - Zustand, also ein PIN eingegeben wurde, nachdem die Karte eingelegt wurde. Darüber hinaus wird jede Taste auf der Karte eine Markierung, die angibt, ob der PIN eingegeben werden muss, jedes mal, wenn der Schlüssel verwendet wird. Ich habe nicht überprüft, aber ich denke, das ist für die "E-Mail" - Taste pair auf ein CAC. Also, würden Sie brauchen, um zu finden, die Tasten haben diese "immer überprüfen" - flag gesetzt, und konfigurieren Sie die path-validator auf den service zu akzeptieren, nur die Schlüssel. Sie könnten in der Lage sein, um erfordern eine bestimmte OID in der extended key usage, oder ausschließen einige der DoD-intermediate-Zertifikate von Pfad-Gebäude (Kennzeichnen Sie als widerrufen, vielleicht).
Die middleware auf die Maschine zu sprechen, um die Karte könnte auch cache-PIN, und geben Sie Sie an der Karte, wenn die Karte zeigt, dass es eine PIN benötigt, bevor es eine operation. Ich denke, dass ActivClient wurde dies mit seiner PIN-caching-Funktion bis version 6, aber in der version 7, diese option zu haben scheint, verschwunden. Ich habe nicht nichts gefunden, wie dies in Windows integrierten PIV-Unterstützung. Dieses "feature" könnte die Sicherheit gefährden, so meine Vermutung ist, dass es wurde bewusst entfernt, und es wäre nicht irgendwelche registry hacks oder sonst zur Wiederherstellung des Verhaltens. Dies ist etwas, die Sie nicht haben Kontrolle über, es sei denn, Sie verwalten die Nutzer-Maschinen, es gibt keine HTTP-header-oder TLS-option, die Sie verwenden können, um die Durchsetzung der PIN-Eingabe. Aber, bei den neueren Systemen, sollte es kein Problem sein.
Auf der server-Seite, ein vollständiger handshake erfolgen muss, um die client-Authentifizierung durchführen. Client-Authentifizierung wird nicht passieren, wenn es eine gültige TLS-Sitzung. So müssten Sie einen Weg finden, zu entkräften, wird die TLS-Sitzung (und nicht die Anwendung die Sitzung, die wahrscheinlich mit einem HTTP-cookie), bevor die Authentifizierung angefordert, oder direkt die Authentifizierungs-Anfrage an eine andere Schnittstelle, die nicht die sessions aktiviert.
Gibt es zwei Möglichkeiten smartcard-client-Authentifizierung auf der Webseite: standard TLS/SSL oder benutzerdefinierte Plug-ins für den browser. Ich nehme an, du redest von standard-web-Browser (IE/FF/Safari) und SSL-Authentifizierung.
Gibt es zwei Dinge, die für PIN aufgefordert:
der browser
Am Ende, aus Sicht der Sicherheit, es ist die Karte, die genau weiß, Wann "Fragen Sie," ein PIN - einige Karten und Schlüssel erfordern eine PIN für jeden Betrieb mit dem Schlüssel, einige Karten sind OK, um eine PIN einmal und lassen Sie die Schlüssel in den authentifizierten Zustand, bis es entfernt wird, die vom Leser oder zurücksetzen, indem Sie eine Anwendung.
Wenn die Sitzung in den cache des Browsers kann nicht wieder verwendet werden, oder wenn die Verbindung aufgebaut wird, die Smartcard-middleware (PKCS#11 für Linux, CryptoAPI/BaseCSP-Modul unter Windows oder Tokend auf OSX) Bedürfnisse zu sprechen, um die keys auf die Karte. Wenn die Authentifizierung Staat auf die Karte muss eine PIN eingegeben werden, ein Rückruf ist in der Regel ausgelöst durch den browser. Oder, wenn die middleware weiß, braucht es die PIN, fragt er vor dem Gespräch auf die Karte.
Gibt es keine 1:1-relation zwischen Eingabe einer PIN und tatsächlich re-authentifizieren des Zugriffs Rechte auf den privaten Schlüssel und die re-Authentifizierung der SSL-session.
Mit standard-SSL, Sie hängen von der Art und Weise SSL-Implementierung in Browsern und kann nicht 100% zuverlässig "re-Authentifizierung durch PIN-Eingabe" auf der client-Seite.
Wenn Sie mit Linux, dann mit OpenSC (die, AFAIK verwenden können, CAC-Karten) können Sie "transaction_reset" in opensc.conf auf true, die Ergebnisse in die Karte wird zurückgesetzt, nachdem jede Transaktion (für jede SSL-session negotiation) und auf diese Weise können Sie sicher sein, dass, Wann immer Sie öffnen Sie eine neue SSL-session, Benutzer geben Sie die PIN erneut ein. Dies ist eine client-side-Konfiguration, obwohl, nicht eine vom server initiierte Funktion.
Können Sie javascript-Funktion, um browser vergessen sind die vorhandenen SSL-cache auf nur wenige Browser:
Können Sie Javascript setTimeout-Methode aufrufen, über die logout-Funktion und möglicherweise leiten Sie Sie auf logout.aspx-Seite zu erzwingen, dass der client zur Eingabe der neuen PIN.
Aber es verwendet JavaScript und der code ist browser-abhängig und funktioniert nicht in allen Browsern.