Questão TLS e alerta 21 após o aperto de mão


Temos um cliente / servidor executando o TLS v1.0 e continuamos recebendo o Alerta de Criptografia 21 do cliente após o aperto de mão inicial. Eles estão usando encadeamento de bloco de cifra e eu li onde o tamanho da entrada de cifra de bloco é diferente de um múltiplo do comprimento do bloco causaria o alerta de Falha de Decodificação, mas como eu encontraria esses valores para determinar se essa é a real causa para o alerta?

Anexei a seqüência de handshake abaixo ... Obrigado ... Aprecie

Camada Segura de Soquetes

TLSv1 Record Layer: Handshake Protocol: Client Hello ##
    Content Type: Handshake (22)###
    Version: TLS 1.0 (0x0301)
    Length: 254
    Handshake Protocol: Client Hello
        Handshake Type: Client Hello (1)
        Length: 250
        Version: TLS 1.2 (0x0303)
        Random
            GMT Unix Time: Jun 25, 1983 13:56:23.000000000 Eastern Daylight Time
            Random Bytes: 2761896c45978dc3868cd4858d7a3d5749f7218e40f5fd3f...
        Session ID Length: 0
        Cipher Suites Length: 100
        Cipher Suites (50 suites)
        Compression Methods Length: 1
        Compression Methods (1 method)
        Extensions Length: 109
        Extension: ec_point_formats
        Extension: elliptic_curves
        Extension: SessionTicket TLS
        Extension: signature_algorithms
        Extension: Heartbeat

Camada Segura de Soquetes

TLSv1 Record Layer: Handshake Protocol: Multiple Handshake Messages
    Content Type: Handshake (22)
    Version: TLS 1.0 (0x0301)
    Length: 1449
    Handshake Protocol: Server Hello
        Handshake Type: Server Hello (2)
        Length: 77
        Version: TLS 1.0 (0x0301)
        Random
        Session ID Length: 32
        Session ID: 569d341d4d75bc12b41fa995f22fea93a51d14fa1d612e69...
        Cipher Suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA (0x0033)
        Compression Method: null (0)
        Extensions Length: 5
        Extension: renegotiation_info
    Handshake Protocol: Certificate
        Handshake Type: Certificate (11)
        Length: 816
        Certificates Length: 813
        Certificates (813 bytes)
    Handshake Protocol: Server Key Exchange
        Handshake Type: Server Key Exchange (12)
        Length: 540
        Diffie-Hellman Server Params
            p Length: 128
            p: fd7f53811d75122952df4a9c2eece4e7f611b7523cef4400...
            g Length: 20
            g: 9760508f15230bccb292b982a2eb840bf0581cf5
            Pubkey Length: 128
            Pubkey: 73f35da13f584ccb05901f5242f71da41b5f35cc185409a9...
            Signature Length: 256
            Signature: 3b8a31d223c149fb0af62f653be5d61af1297c11c4d6e925...
    Handshake Protocol: Server Hello Done
        Handshake Type: Server Hello Done (14)
        Length: 0

Camada Segura de Soquetes

TLSv1 Record Layer: Handshake Protocol: Client Key Exchange
    Content Type: Handshake (22)
    Version: TLS 1.0 (0x0301)
    Length: 134
    Handshake Protocol: Client Key Exchange
        Handshake Type: Client Key Exchange (16)
        Length: 130
        Diffie-Hellman Client Params
            Pubkey Length: 128
            Pubkey: 76ef1851a1202c19b55aebc2cf830cbb023f15f75d7c963a...
TLSv1 Record Layer: Change Cipher Spec Protocol: Change Cipher Spec
    Content Type: Change Cipher Spec (20)
    Version: TLS 1.0 (0x0301)
    Length: 1
    Change Cipher Spec Message
TLSv1 Record Layer: Handshake Protocol: Encrypted Handshake Message
    Content Type: Handshake (22)
    Version: TLS 1.0 (0x0301)
    Length: 48
    Handshake Protocol: Encrypted Handshake Message

Camada Segura de Soquetes

TLSv1 Record Layer: Change Cipher Spec Protocol: Change Cipher Spec
    Content Type: Change Cipher Spec (20)
    Version: TLS 1.0 (0x0301)
    Length: 1
    Change Cipher Spec Message

Camada Segura de Soquetes

TLSv1 Record Layer: Handshake Protocol: Encrypted Handshake Message
    Content Type: Handshake (22)
    Version: TLS 1.0 (0x0301)
    Length: 48
    Handshake Protocol: Encrypted Handshake Message

Camada Segura de Soquetes

cliente-> servidor

TLSv1 Record Layer: Application Data Protocol: http
    Content Type: Application Data (23)
    Version: TLS 1.0 (0x0301)
    Length: 32
    Encrypted Application Data: 50c0d7383385d5ea8aa08c9a489904b20fb508a1b53ec017...
TLSv1 Record Layer: Application Data Protocol: http
    Content Type: Application Data (23)
    Version: TLS 1.0 (0x0301)
    Length: 480
    Encrypted Application Data: 18ad9fa298268b2da260c4873075d8116554d3067659a0f6...

Camada Segura de Soquetes

servidor-> cliente

TLSv1 Record Layer: Application Data Protocol: http
    Content Type: Application Data (23)
    Version: TLS 1.0 (0x0301)
    Length: 352
    Encrypted Application Data: a425edb24ceb1fab0516b7cf64e18d571db0f222e606d1a7...

Camada Segura de Soquetes

cliente-> servidor

TLSv1 Record Layer: Application Data Protocol: http
    Content Type: Application Data (23)
    Version: TLS 1.0 (0x0301)
    Length: 32
    Encrypted Application Data: 4952a32d5ca081870f74397b4b45d8af9017938b92db648a...
TLSv1 Record Layer: Application Data Protocol: http
    Content Type: Application Data (23)
    Version: TLS 1.0 (0x0301)
    Length: 480
    Encrypted Application Data: 3a97d944ddabc997a965cc75ed946aa0dd4b13e525f44aff...

Camada Segura de Soquetes

servidor-> cliente

TLSv1 Record Layer: Application Data Protocol: http
    Content Type: Application Data (23)
    Version: TLS 1.0 (0x0301)
    Length: 32
    Encrypted Application Data: 47f3838b409d33cfd039f51e432e7675095f6f724ba7c728...
TLSv1 Record Layer: Application Data Protocol: http
    Content Type: Application Data (23)
    Version: TLS 1.0 (0x0301)
    Length: 352
    Encrypted Application Data: 8bd4f772427b1bf25901b3cc59cff003d83b02bd11421e62...

Camada Segura de Soquetes

cliente-> servidor

TLSv1 Record Layer: Application Data Protocol: http
    Content Type: Application Data (23)
    Version: TLS 1.0 (0x0301)
    Length: 32
    Encrypted Application Data: 1a0750299f160c207a88d6d6b2bc794373b7d45ae845129f...
TLSv1 Record Layer: Application Data Protocol: http
    Content Type: Application Data (23)
    Version: TLS 1.0 (0x0301)
    Length: 480
    Encrypted Application Data: 094956aa5f580d500d9402bc84696748f6c008d8f75bcafc...

Camada Segura de Soquetes

cliente-> servidor

TLSv1 Record Layer: Encrypted Alert
    Content Type: Alert (21)
    Version: TLS 1.0 (0x0301)
    Length: 32
    Alert Message: Encrypted Alert

4


origem


villican - por favor, não adicione edições que não ajudam em nada. - Rory Alsop
Você entende isso TLS v1.0 é basicamente quebrado certo? Existe uma razão pela qual seu cliente acha que é 1983? - Ramhound
@Ramhound: O padrão TLS 1.0 foi lançado pela primeira vez em 1999. - bwDraco
@bwDraco - Eu realmente sei que ................  Você perdeu totalmente o ponto dessa segunda questão não relacionada. GMT Unix Time: Jun 25, 1983 13:56:23.000000000 Eastern Daylight Time daí a minha pergunta por que o cliente acha que o Junt 25 1983 @ 1:53 PM GMT é o mesmo deste post. A hora está correta (ou perto o suficiente), mas a data não está correta. Seu atualmente 14:39 PM GMT, portanto, como eu sei que é perto o suficiente. - Ramhound
21 não é o número de alerta, e este não é um "alerta de criptografia". 21 é o tipo de registro de todos registros de alerta mas o registro de alerta é criptografado e o Wireshark não pode descriptografá-lo para exibir "Alerta Criptografado". isto pode ser um close_notify normal, mas verifique os logs do servidor para descobrir se ele acha que houve um erro e em caso afirmativo. - dave_thompson_085


Respostas:


É uma mistura

Isso não é AlertDescription 21

Em vez disso é ContentType 21.

  enum {
      change_cipher_spec(20), alert(21), handshake(22),
      application_data(23), (255)
  } ContentType;

E agora? Então, sabemos que é um alerta, mas que tipo de coisa? A AlertDescription campo é um byte de largura. Então qual é esse? E, infelizmente, a resposta é ...

Alert Message: Encrypted Alert

... nós simplesmente não sabemos. Está criptografado.

P: Mas nós não poderemos apenas descriptografar esse dump de pacote se usarmos a chave privada para o certificado?
R: Não. Essa conexão usava um conjunto de cifras efêmeras (ou seja, Cipher Suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA (0x0033)então é encaminhar seguro e a chave de criptografia em massa da sessão não pode ser reconstruída a partir da chave privada do certificado.

Tome um novo traço.

Tome outro traço, mas desta vez, certifique-se de que você possa descriptografá-lo depois. Para isso, ter a chave privada pronta e forçar um pacote não-forward-secure (qualquer coisa sem DHE ou ECDHE no nome) ou mande o seu software descarregar a chave de sessão em algum lugar. (O Chrome e o Firefox podem fazer isso.)


7



Para o Wireshark descriptografar usando a chave do servidor, você precisa de suite sem DH (incluindo o ECDH). Estritamente falando, apenas DHE e ECDHE (e EC / DH_anon, raramente usados) são efêmeroe DH e ECDH poderia ser descriptografado com a chave do servidor, mas o Wireshark não o faz. (E fazer isso sozinho é muito trabalho, embora eu tenha ocasionalmente feito um quadro ou dois manualmente.) - dave_thompson_085
@ dave_thompson_085 obrigado. Eu não tenho idéia porque eu escrevi "EC". - StackzOfZtuff


... temos um cliente / servidor executando o TLS v1.0 e continuamos recebendo o Alerta de Criptografia 21 do cliente após o handshake inicial ...

Parece que o cliente está em baixo nível e precisa ser atualizado.

De acordo com RFC 5246, o protocolo TLS (Transport Layer Security) versão 1.2, o alerta 21 é decryption_failed_RESERVED. E o significado do alerta:

decryption_failed_RESERVED
    Esse alerta foi usado em algumas versões anteriores do TLS e pode ter
    permitido certos ataques contra o modo CBC [CBCATT]. Deve
    NÃO ser enviado por implementações compatíveis.


4



O número de alerta não é conhecido por ser 21 e provavelmente não é; veja meu comentário sobre a questão. Observe que o cliente aparentemente está fazendo a fragmentação 1 / N-1, que foi amplamente implementada em resposta à colocação do BEAST após o final de 2011. Observe que mesclar alertas 20 = MAC e 21 = 'decodificar' = CBC para bloquear o oráculo explícito já era recomendado em 1,1 em 2009, e isso foi depois que muitos tinham defacto implementado em 1,0. - dave_thompson_085