Contents

Introdução

Pré-requisitos

Requisitos

Componentes Utilizados

Informações de Apoio

Configurar

Verificar

Autenticação inicial

Durante a reautenticação

Perguntas mais freqüentes

Introdução

Este documento descreve a retomada da sessão TLS no Cisco Identity Services Engine (ISE).

Pré-requisitos

Requisitos

- Conhecimento do processo de handshake do protocolo TLS.

- Conhecimento do fluxo do protocolo PEAP protegido

- Conhecimento do Cisco Identity Services Engine

Componentes Utilizados

As informações neste documento são baseadas nestas versões de software e hardware

- Cisco Identity Services Engine 3.2

- Máquina virtual (VM) do ISE

- PC com Windows 10

As informações neste documento foram criadas a partir de dispositivos em um ambiente de laboratório específico. Todos os dispositivos utilizados neste documento foram iniciados com uma configuração (padrão) inicial. Se a rede estiver ativa, certifique-se de que você entenda o impacto potencial de qualquer comando.

Informações de Apoio

A retomada da sessão TLS é uma técnica usada para eliminar a sobrecarga do handshake TLS inicial. Ela permite que um cliente e um servidor que tenham estabelecido anteriormente uma sessão TLS continuem essa sessão sem repetir o processo de handshake intensivo de recursos.

Vantagens

- Ele reduz a latência, evitando as etapas de uso intensivo de recursos do handshake inicial e o tempo necessário para fazer isso.

- Ele também reduz a carga computacional no servidor ignorando os processos intensivos de troca de chave e validação de certificado.

Configurar

No ISE, para ativar a sessão TLS, continue para PEAP:

Administration > System > Settings > Protocols > PEAP > marque a opção Enable PEAP Session Resume

Por padrão, o ISE mantém a sessão por 7.200 segundos.

Opcionalmente, você pode ativar a opção Ativar reconexão rápida, que, por sua vez, ignora o método interno do PEAP e permite uma reautenticação ainda mais rápida. É desejável em aplicativos como roaming sem fio.

Configuração de Retomada de Sessão PEAP do ISE

A reconexão rápida também deve ser habilitada no suplicante.

Esta configuração é para o solicitante nativo do Windows habilitar a reconexão rápida.

Configuração do solicitante do Windows 10

Esta configuração é para o editor de perfil do Módulo de acesso à rede (NAM) do AnyConnect para ativar a reconexão rápida.

Configuração do AnyConnect NAM

Verificar

Autenticação inicial

Na autenticação PEAP inicial, você pode ver que o campo ID da sessão está em branco no Hello do cliente durante o handshake TLS.

Handshake TLS inicial

O ISE responde com o Server Hello, que inclui uma ID de sessão 869175266faf4eec5fb4334f819e25221fa0cf3cbf0e458806369063dba59207 junto com o certificado e a chave do servidor.

Hello inicial do servidor com ID de sessão

No prt-server.log, você pode ver as mensagens de handshake junto com o ID da sessão e que ele foi preservado no cache.

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

Em seguida, o cliente responde com a Especificação de Troca de Chaves e Alteração de Cifras do Cliente.

Troca de Chave de Cliente e Outros Atributos

Finalmente, o servidor também responde com as Especificações de alteração de codificação e o handshake TLS é concluído.

Alterar especificação de cifra do lado do servidor

Nas etapas de registro ao vivo do RADIUS, você pode ver que o handshake TLS completo acontece durante a primeira autenticação.

Etapas de handshake TLS de registro ao vivo RADIUS

O método interno também executa a autenticação completa do Microsoft Challenge Handshake Authentication Protocol (MSCHAPv2).

Etapas do Método Interno de Log ao Vivo do RADIUS

Durante a reautenticação

Durante a reautenticação, o cliente envia a mesma ID de sessão 869175266faf4eec5fb4334f819e25221fa0cf3cbf0e458806369063dba59207 no Hello do cliente que aprendeu com a autenticação inicial.

Hello do Cliente Durante Retomada da Sessão

Em seguida, o ISE confirma que essa ID de sessão está presente no cache de sessão do Secure Socket Layer (SSL) e ambos passam pelo que é conhecido como handshake TLS abreviado. Nenhuma informação de certificado ou chave é trocada durante o handshake TLS abreviado e as chaves negociadas anteriormente são reutilizadas.

Servidor Hello em Sessão Resume

No prt-server.log, você pode ver que depois de receber o Hello do cliente, o ISE confirmou que a sessão está sendo reutilizada e ignora a troca de certificado e chave.

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

Finalmente, o Cliente também responde com as especificações de cifra de alteração e o handshake TLS é concluído.

Continuar Sessão de Especificação de Codificação de Alteração de Cliente

Nas etapas de registro ao vivo do RADIUS, você pode ver que o handshake TLS abreviado acontece durante a reautenticação.

Etapas de Retomada da Sessão TLS do Log ao Vivo do RADIUS

Na reautenticação, você pode ver que o método interno é ignorado.

Reconexão rápida PEAP de registro ao vivo RADIUS

Perguntas mais freqüentes

1) O Session Resume e o Fast Reconnect são independentes um do outro?

Sim, a reconexão rápida é um recurso opcional em que o método interno de autenticação é ignorado. Não é obrigatório habilitar a reconexão rápida quando o retorno da sessão estiver habilitado.

2) A ativação da sessão continua a causar algum risco à segurança?

O servidor atribui um ID de sessão aleatório durante o handshake inicial com o navegador (cliente). O cliente e o servidor armazenam essa ID de sessão junto com as chaves de sessão e os estados de conexão. Para retomar uma sessão, o cliente envia a ID da sessão armazenada com a primeira mensagem de protocolo (ClientHello) ao servidor. Se o servidor reconhecer a conexão e estiver disposto a retomar a sessão, ele responderá com a mesma ID de sessão para restabelecer a respectiva sessão. Isso permite que uma conexão segura seja estabelecida rapidamente e sem perda de segurança, já que você está reutilizando os dados de sessão negociados anteriormente.

3) As IDs de sessão TLS são replicadas para outros nós?

Não, as IDs de sessão TLS são armazenadas no próprio PSN. Ele não é replicado para outras PSNs. Em caso de reinicialização ou reinicialização do serviço da PSN, todas as IDs de sessão podem ser perdidas do cache e a próxima vez que o handshake TLS completo deve ocorrer.