Frage TLS und Alert 21 nach dem Handshake


Wir haben einen Client / Server, der TLS v1.0 ausführt und den Verschlüsselungsalarm 21 nach dem ersten Handshake vom Client erhält. Sie verwenden Cipher Block Chaining und ich habe gelesen, wo die Block Cipher Input-Länge als etwas anderes als ein Vielfaches der Blocklänge würde die Decryption Failed Alert aber wie \ wo würde ich diese Werte finden, um festzustellen, ob das die reale ist Ursache für die Warnung?

Ich habe die Handshake-Sequenz unten angehängt ... Danke ... Schätze es

Sicherer Socket-Layer

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

Sicherer Socket-Layer

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

Sicherer Socket-Layer

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

Sicherer Socket-Layer

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

Sicherer Socket-Layer

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

Sicherer Socket-Layer

Client-> Server

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...

Sicherer Socket-Layer

Server-> Client

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

Sicherer Socket-Layer

Client-> Server

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...

Sicherer Socket-Layer

Server-> Client

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...

Sicherer Socket-Layer

Client-> Server

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...

Sicherer Socket-Layer

Client-> Server

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

4
2018-01-20 19:11


Ursprung


Villican - bitte fügen Sie keine Änderungen hinzu, die nichts helfen. - Rory Alsop
Du verstehst das TLS v1.0 ist im Grunde richtig gebrochen? Gibt es einen Grund, warum Ihr Kunde 1983 denkt? - Ramhound
@Ramhound: Der TLS 1.0-Standard wurde erstmals 1999 veröffentlicht. - bwDraco
@bwDraco - Ich weiß das wirklich ................  Sie haben den Punkt dieser zweiten, nicht verwandten Frage völlig verpasst. GMT Unix Time: Jun 25, 1983 13:56:23.000000000 Eastern Daylight Time daher meine Frage, warum der Klient seinen Junt 25 1983 @ 1:53 PM GMT das gleiche von diesem Beitrag denkt. Die Uhrzeit ist korrekt (oder nahe genug), aber das Datum ist nicht korrekt. Es ist derzeit 14:39 Uhr GMT, daher weiß ich, dass es nahe genug ist. - Ramhound
21 ist nicht die Alarmnummer und dies ist kein "Verschlüsselungsalarm". 21 ist der Rekordtyp von alle Alarmsätze Der Alarmdatensatz ist jedoch verschlüsselt, und Wireshark kann ihn nicht entschlüsseln. Daher wird "Verschlüsselter Alarm" angezeigt. Es könnte sein eine normale close_notify, aber überprüfen Sie die Server-Logs, um herauszufinden, ob es denkt, dass es einen Fehler gab und wenn ja, was. - dave_thompson_085


Antworten:


Es ist ein Mixup

Das ist nicht AlertDescription 21.

Stattdessen ist das ContentType 21.

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

Was jetzt? So wissen wir, dass es eine Warnung ist, aber, okay, welche Art? Ein AlertDescription Feld ist ein Byte breit. Also welches ist das? Und leider ist die Antwort ...

Alert Message: Encrypted Alert

... wir wissen es einfach nicht. Es ist verschlüsselt.

F: Aber können wir diesen Paket-Dump nicht einfach entschlüsseln, wenn wir den privaten Schlüssel für das Zertifikat verwenden?
A: Nein. Diese Verbindung verwendet eine ephemere Cipher Suite (nämlich Cipher Suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA (0x0033)) so ist es Vorwärts sicher und der Sitzungs-Massenverschlüsselungsschlüssel kann nicht aus dem privaten Schlüssel des Zertifikats rekonstruiert werden.

Nimm eine neue Spur.

Nehmen Sie eine andere Spur, aber dieses Mal stellen Sie sicher, dass Sie es später entschlüsseln können. Um dies zu tun, muss entweder der private Schlüssel bereit sein und eine nicht vorwärts gesicherte Suite (alles ohne DHE oder ECDHE im Namen) oder lässt die Software den Sitzungsschlüssel irgendwo ablegen. (Chrome und Firefox können dies tun.)


7
2018-01-21 07:41



Um Wireshark mit dem Serverschlüssel zu entschlüsseln, benötigen Sie eine Suite ohne DH (einschließlich ECDH). Streng genommen sind nur DHE und ECDHE (und EC / DH_anon, selten verwendet) flüchtigund DH und ECDH könnte mit Server-Schlüssel entschlüsselt werden, aber Wireshark tut dies nicht. (Und es ist eine Menge Arbeit, es selbst zu tun, obwohl ich gelegentlich ein oder zwei Frames manuell gemacht habe.) - dave_thompson_085
@ dave_thompson_085 danke. Ich habe keine Ahnung, warum ich "EC" geschrieben habe. - StackzOfZtuff


... wir haben einen Client / Server, der TLS v1.0 ausführt und den Verschlüsselungsalarm 21 nach dem ersten Handshake vom Client erhält ...

Es scheint, dass der Client down level ist und aktualisiert werden muss.

Gemäß RFC 5246, das TLS-Protokoll (Transport Layer Security) Version 1.2, Warnung 21 ist decryption_failed_RESERVED. Und die Bedeutung der Warnung:

decryption_failed_RESERVED
    Diese Warnung wurde in einigen früheren Versionen von TLS verwendet
    erlaubte bestimmte Angriffe gegen den CBC-Modus [CBCATT]. Es muss
    NICHT durch konforme Implementierungen gesendet werden.


4
2018-01-20 20:30



Es ist nicht bekannt, dass die Warnungsnummer 21 ist und wahrscheinlich nicht; Siehe meinen Kommentar zu der Frage. Beachten Sie, dass der Client offensichtlich eine 1 / N-1-Fragmentierung durchführt, die als Antwort auf BEAST nach Ende 2011 implementiert wurde. Beachten Sie, dass das Zusammenführen von Alerts 20 = MAC und 21 = 'decrypt' = CBC zum Blockieren des expliziten Orakels bereits empfohlen wurde 1,1 im Jahr 2009, und das war, nachdem viele defacto es in 1.0 implementiert hatten. - dave_thompson_085