Inhalt

Einleitung

Voraussetzungen

Anforderungen

Verwendete Komponenten

Hintergrundinformationen

Konfigurieren

Überprüfung

Anfängliche Authentifizierung

Während der Neuauthentifizierung

Häufig gestellte Fragen

Einleitung

In diesem Dokument wird die TLS-Sitzungswiederaufnahme (Transport Layer Security) in der Cisco Identity Services Engine (ISE) beschrieben.

Voraussetzungen

Anforderungen

- Kenntnis des TLS-Handshake-Prozesses (Transport Layer Security)

- Kenntnis des PEAP-Datenflusses (Protected Extensible Authentication Protocol)

- Kenntnisse der Cisco Identity Services Engine

Verwendete Komponenten

Die Informationen in diesem Dokument basierend auf folgenden Software- und Hardware-Versionen

- Cisco Identity Services Engine 3.2

- Virtuelles System der ISE (VM)

- Windows 10-PC

Die Informationen in diesem Dokument beziehen sich auf Geräte in einer speziell eingerichteten Testumgebung. Alle Geräte, die in diesem Dokument benutzt wurden, begannen mit einer gelöschten (Nichterfüllungs) Konfiguration. Wenn Ihr Netzwerk in Betrieb ist, stellen Sie sicher, dass Sie die möglichen Auswirkungen aller Befehle kennen.

Hintergrundinformationen

Die TLS-Sitzungswiederaufnahme ist eine Technik, die verwendet wird, um den Overhead des ursprünglichen TLS-Handshakes zu eliminieren. Sie ermöglicht es einem Client und Server, die zuvor eine TLS-Sitzung eingerichtet haben, diese Sitzung fortzusetzen, ohne den ressourcenintensiven Handshake-Prozess zu wiederholen.

Vorteile

- Es reduziert die Latenz, indem es die ressourcenintensiven Schritte des ersten Handshakes und die dafür erforderliche Zeit vermeidet.

- Außerdem wird die Rechenlast auf dem Server verringert, da die aufwändigen Prozesse für den Schlüsselaustausch und die Zertifikatsvalidierung übersprungen werden.

Konfigurieren

Setzen Sie die TLS-Sitzung auf der ISE für PEAP fort:

Administration > System > Einstellungen > Protokolle > PEAP > überprüfen Sie die Option PEAP-Sitzungswiederaufnahme aktivieren.

Standardmäßig wird die Sitzung von der ISE für 7.200 Sekunden gehalten.

Optional können Sie die Option Enable Fast Reconnect (Schnelle Wiederverbindung aktivieren) aktivieren, die wiederum die innere PEAP-Methode umgeht und eine noch schnellere Neuauthentifizierung ermöglicht. Dies ist bei Anwendungen wie Wireless-Roaming wünschenswert.

ISE PEAP-Sitzungswiederaufnahme - Konfiguration

Die Funktion für die schnelle Wiederverbindung muss ebenfalls in der Komponente aktiviert sein.

Diese Konfiguration ist für native Windows-Supplicants zur Aktivierung von Fast Reconnect vorgesehen.

Windows 10 - Komponentenkonfiguration

Diese Konfiguration ist für den Profil-Editor des AnyConnect Network Access Module (NAM) zur Aktivierung von Fast Reconnect vorgesehen.

AnyConnect NAM-Konfiguration

Überprüfung

Anfängliche Authentifizierung

Bei der anfänglichen PEAP-Authentifizierung sehen Sie, dass das Feld "Session ID" (Sitzungs-ID) bei "Client Hello" während des TLS-Handshakes leer ist.

Erster TLS-Handshake

Die ISE antwortet mit dem Server Hello, das die Sitzungs-ID 869175266faf4eec5fb4334f819e25221fa0cf3cbf0e458806369063dba59207 zusammen mit dem Zertifikat und dem Serverschlüssel enthält.

Begrüßung des ersten Servers mit Sitzungs-ID

In der Datei prrt-server.log werden die Handshake-Meldungen zusammen mit der Sitzungs-ID angezeigt, und dass sie im Cache beibehalten wurde.

Crypto,2024-02-12 19:13:20,542,DEBUG,0x7f8f923fc700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.tlsNotifyLog - TLS LOG: where: (0x2001), ssl state (0x14), ret: 1, long string: SSLv3/TLS read client hello,SSLConnection.cpp:4495

Crypto,2024-02-12 19:13:20,542,DEBUG,0x7f8f923fc700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.tlsNotifyLog - TLS log: TLS_NOTIFY received client hello message,SSLConnection.cpp:4498

Crypto,2024-02-12 19:13:20,542,DEBUG,0x7f8f923fc700,NIL-CONTEXT,Crypto::Result=0, Call TLS Notify Callback, event 5,SSLConnection.cpp:4510

Eap,2024-02-12 19:13:20,542,DEBUG,0x7f8f923fc700,cntx=0000452308,sesn=labpan01/494696177/7940,CPMSessionID=0A6A25D0000000100030EDBC,user=host/LABPCSK.vmlab.local,CallingStationID=B4-96-91-26-DE-2E,FramedIPAddress=10.106.37.25,CLIENT HELLO, new session,EapTlsProtocol.cpp:1463

Eap,2024-02-12 19:13:20,542,DEBUG,0x7f8f923fc700,cntx=0000452308,sesn=labpan01/494696177/7940,CPMSessionID=0A6A25D0000000100030EDBC,user=host/LABPCSK.vmlab.local,CallingStationID=B4-96-91-26-DE-2E,FramedIPAddress=10.106.37.25,Session id

0000: 86 91 75 26 6f af 4e ec 5f b4 33 4f 81 9e 25 22 ..u&o.N._.3O..%"

0010: 1f a0 cf 3c bf 0e 45 88 06 36 90 63 db a5 92 07 ...<..E..6.c.... ,EapTlsProtocol.cpp:1473

Crypto,2024-02-12 19:13:20,542,DEBUG,0x7f8f923fc700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.tlsNotifyLog - TLS LOG: where: (0x2001), ssl state (0x16), ret: 1, long string: SSLv3/TLS write server hello,SSLConnection.cpp:4495

Crypto,2024-02-12 19:13:20,542,DEBUG,0x7f8f923fc700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.tlsNotifyLog - TLS log: TLS_NOTIFY sent server hello message,SSLConnection.cpp:4498

Crypto,2024-02-12 19:13:20,542,DEBUG,0x7f8f923fc700,NIL-CONTEXT,Crypto::Result=0, Call TLS Notify Callback, event 9,SSLConnection.cpp:4510

Crypto,2024-02-12 19:13:20,543,DEBUG,0x7f8f923fc700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.tlsNotifyLog - TLS LOG: where: (0x2001), ssl state (0x17), ret: 1, long string: SSLv3/TLS write certificate,SSLConnection.cpp:4495

Crypto,2024-02-12 19:13:20,543,DEBUG,0x7f8f923fc700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.tlsNotifyLog - TLS log: TLS_NOTIFY sent server certificate,SSLConnection.cpp:4498

Crypto,2024-02-12 19:13:20,543,DEBUG,0x7f8f923fc700,NIL-CONTEXT,Crypto::Result=0, Call TLS Notify Callback, event 11,SSLConnection.cpp:4510

Crypto,2024-02-12 19:13:20,581,DEBUG,0x7f8f923fc700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.tlsNotifyLog - TLS LOG: where: (0x2001), ssl state (0x18), ret: 1, long string: SSLv3/TLS write key exchange,SSLConnection.cpp:4495

Crypto,2024-02-12 19:13:20,581,DEBUG,0x7f8f923fc700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.tlsNotifyLog - TLS log: TLS_NOTIFY sent server key exchange message,SSLConnection.cpp:4498

Crypto,2024-02-12 19:13:20,581,DEBUG,0x7f8f923fc700,NIL-CONTEXT,Crypto::Result=0, Call TLS Notify Callback, event 13,SSLConnection.cpp:4510

Crypto,2024-02-12 19:13:20,581,DEBUG,0x7f8f923fc700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.tlsNotifyLog - TLS LOG: where: (0x2001), ssl state (0x1a), ret: 1, long string: SSLv3/TLS write server done,SSLConnection.cpp:4495

Crypto,2024-02-12 19:13:20,581,DEBUG,0x7f8f923fc700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.tlsNotifyLog - TLS log: TLS_NOTIFY sent server done message,SSLConnection.cpp:4498

Crypto,2024-02-12 19:13:20,737,DEBUG,0x7f8f91df9700,NIL-CONTEXT,shutting session id

0000: 86 91 75 26 6f af 4e ec 5f b4 33 4f 81 9e 25 22 ..u&o.N._.3O..%"

0010: 1f a0 cf 3c bf 0e 45 88 06 36 90 63 db a5 92 07 ...<..E..6.c.... ,SSLConnection.cpp:337

Crypto,2024-02-12 19:13:20,737,DEBUG,0x7f8f91df9700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.pvDone - session is being preserved in cache,SSLConnection.cpp:355

Als Nächstes antwortet der Client mit der Spezifikation für den Client-Schlüsselaustausch und die Änderung der Chiffre.

Austausch von Clientschlüsseln und andere Attribute

Schließlich antwortet der Server auch mit den Change Cipher Species und der TLS Handshake ist abgeschlossen.

Änderung der Cipher-Spezifikation von der Serverseite

In den Schritten des RADIUS-Live-Protokolls können Sie sehen, dass der vollständige TLS-Handshake während der ersten Authentifizierung erfolgt.

RADIUS-Live-Protokoll - TLS-Handshake-Schritte

Die Inner-Methode führt außerdem die vollständige MSCHAPv2-Authentifizierung (Microsoft Challenge Handshake Authentication Protocol) durch.

RADIUS-Live-Protokoll - interne Verfahrensschritte

Während der Neuauthentifizierung

Während der erneuten Authentifizierung sendet der Client die gleiche Sitzungs-ID wie 869175266faf4eec5fb4334f819e25221fa0cf3cbf0e458806369063dba59207 in Client Hello, das von der ursprünglichen Authentifizierung gelernt hat.

Client-Hello während der Sitzungswiederaufnahme

Die ISE bestätigt dann, dass diese Sitzungs-ID im Secure Socket Layer (SSL)-Sitzungscache vorhanden ist, und beide durchlaufen den so genannten abgekürzten TLS-Handshake. Beim TLS-Handshake werden keine Zertifikat- oder Schlüsselinformationen ausgetauscht. Zuvor vereinbarte Schlüssel werden wiederverwendet.

Server-Hello in Sitzungslebenslauf

In der Datei prrt-server.log können Sie sehen, dass die ISE nach dem Empfang von Client Hello bestätigt hat, dass die Sitzung wiederverwendet wird, und den Austausch von Zertifikaten und Schlüsseln überspringt.

Crypto,2024-02-12 19:33:48,821,DEBUG,0x7f8f925fd700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.tlsNotifyLog - TLS LOG: where: (0x2001), ssl state (0x14), ret: 1, long string: SSLv3/TLS read client hello,SSLConnection.cpp:4495

Crypto,2024-02-12 19:33:48,821,DEBUG,0x7f8f925fd700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.tlsNotifyLog - TLS log: TLS_NOTIFY received client hello message,SSLConnection.cpp:4498

Crypto,2024-02-12 19:33:48,821,DEBUG,0x7f8f925fd700,NIL-CONTEXT,Crypto::Result=0, Call TLS Notify Callback, event 5,SSLConnection.cpp:4510

Eap,2024-02-12 19:33:48,821,DEBUG,0x7f8f925fd700,cntx=0000452772,sesn=labpan01/494696177/7949,CPMSessionID=0A6A25D0000000110043ACB0,user=host/LABPCSK.vmlab.local,CallingStationID=B4-96-91-26-DE-2E,FramedIPAddress=10.106.37.25,CLIENT HELLO, session reused,EapTlsProtocol.cpp:1463

Eap,2024-02-12 19:33:48,821,DEBUG,0x7f8f925fd700,cntx=0000452772,sesn=labpan01/494696177/7949,CPMSessionID=0A6A25D0000000110043ACB0,user=host/LABPCSK.vmlab.local,CallingStationID=B4-96-91-26-DE-2E,FramedIPAddress=10.106.37.25,Session id

0000: 86 91 75 26 6f af 4e ec 5f b4 33 4f 81 9e 25 22 ..u&o.N._.3O..%"

0010: 1f a0 cf 3c bf 0e 45 88 06 36 90 63 db a5 92 07 ...<..E..6.c.... ,EapTlsProtocol.cpp:1473

Crypto,2024-02-12 19:33:48,821,DEBUG,0x7f8f925fd700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.tlsNotifyLog - TLS LOG: where: (0x2001), ssl state (0x16), ret: 1, long string: SSLv3/TLS write server hello,SSLConnection.cpp:4495

Crypto,2024-02-12 19:33:48,821,DEBUG,0x7f8f925fd700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.tlsNotifyLog - TLS log: TLS_NOTIFY sent server hello message,SSLConnection.cpp:4498

Crypto,2024-02-12 19:33:48,821,DEBUG,0x7f8f925fd700,NIL-CONTEXT,Crypto::Result=0, Call TLS Notify Callback, event 9,SSLConnection.cpp:4510

Crypto,2024-02-12 19:33:48,821,DEBUG,0x7f8f925fd700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.tlsNotifyLog - TLS LOG: where: (0x2001), ssl state (0x23), ret: 1, long string: SSLv3/TLS write change cipher spec,SSLConnection.cpp:4495

Crypto,2024-02-12 19:33:48,821,DEBUG,0x7f8f925fd700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.tlsNotifyLog - TLS log: TLS_NOTIFY sent change cipher spec message,SSLConnection.cpp:4498

Crypto,2024-02-12 19:33:48,821,DEBUG,0x7f8f925fd700,NIL-CONTEXT,Crypto::Result=0, Call TLS Notify Callback, event 1,SSLConnection.cpp:4510

Crypto,2024-02-12 19:33:48,821,DEBUG,0x7f8f925fd700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.tlsNotifyLog - TLS LOG: where: (0x2001), ssl state (0x24), ret: 1, long string: SSLv3/TLS write finished,SSLConnection.cpp:4495

Crypto,2024-02-12 19:33:48,821,DEBUG,0x7f8f925fd700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.tlsNotifyLog - TLS log: TLS_NOTIFY sent finished message (server is ready to finish handshake),SSLConnection.cpp:4498

Schließlich antwortet der Client auch mit den Spezifikationen für die Änderungschiffre und dem TLS-Handshake.

Client-Änderung Cipher Spec Session Fortsetzen

In den RADIUS-Live-Protokollschritten wird angezeigt, dass der TLS-Handshake während der erneuten Authentifizierung erfolgt.

Schritte zur Wiederaufnahme der TLS-Sitzung im RADIUS-Live-Protokoll

Bei der erneuten Authentifizierung können Sie sehen, dass die innere Methode übersprungen wird.

RADIUS Live-Protokoll PEAP Schnelle Wiederverbindung

Häufig gestellte Fragen

1) Sind Session Resume und Fast Reconnect voneinander unabhängig?

Ja, Fast Reconnect ist eine optionale Funktion, bei der die interne Authentifizierungsmethode umgangen wird. Die schnelle Wiederherstellung muss nicht aktiviert werden, wenn Session Resume (Sitzungswiederaufnahme) aktiviert ist.

2) Besteht durch die Aktivierung der Sitzungswiederaufnahme ein Sicherheitsrisiko?

Der Server weist dem Browser (Client) während des ersten Handshakes eine zufällige Session-ID zu. Client und Server speichern diese Session-ID zusammen mit den Session-Schlüsseln und Verbindungsstatus. Um eine Sitzung wiederaufzunehmen, sendet der Client die gespeicherte Sitzungs-ID mit der ersten Protokollmeldung (ClientHello) an den Server. Wenn der Server die Verbindung erkennt und bereit ist, die Sitzung wieder aufzunehmen, antwortet er mit derselben Sitzungs-ID, um die entsprechende Sitzung wiederherzustellen. Dadurch kann schnell und ohne Sicherheitsverlust eine sichere Verbindung hergestellt werden, da Sie die zuvor ausgehandelten Sitzungsdaten wiederverwenden.

3) Werden die TLS-Sitzungs-IDs auf andere Knoten repliziert?

Nein, die TLS-Sitzungs-IDs werden im PSN selbst gespeichert. Es wird nicht auf andere PSNs repliziert. Bei einem Neustart oder einem Neustart des PSN können alle Sitzungs-IDs aus dem Cache verloren gehen, und das nächste Mal muss ein vollständiger TLS-Handshake erfolgen.