TLS und Alert 21 nach Handshake

50450
jww

Wir verfügen über einen Client / Server, auf dem TLS v1.0 ausgeführt wird, und erhalten nach dem ersten Handshake weiterhin den Encryption Alert 21 vom Client. Sie verwenden Verschlüsselungsblockverkettung, und ich habe gelesen, wo die Blockverschlüsselungseingangslänge sich von etwas anderem als einem Vielfachen der Blocklänge unterscheidet, die Warnung "Entschlüsselung fehlgeschlagen" hervorrufen würde, aber wie würde ich diese Werte finden, um zu ermitteln, ob dies wirklich der Fall ist Ursache für die Warnung?

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

Secure Sockets 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 

Secure Sockets 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 

Secure Sockets 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 

Secure Sockets 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 

Secure Sockets 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 

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

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

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

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

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

Secure Sockets Layer

Client-> Server

TLSv1 Record Layer: Encrypted Alert Content Type: Alert (21) Version: TLS 1.0 (0x0301) Length: 32 Alert Message: Encrypted Alert 
4
villican - Bitte füge keine Änderungen hinzu, die nichts helfen. Rory Alsop vor 8 Jahren 1
Sie verstehen, dass "TLS v1.0" im Grunde richtig kaputt ist? Gibt es einen Grund, warum Ihr Kunde für 1983 hält? Ramhound vor 8 Jahren 0
@Ramhound: Der TLS 1.0-Standard wurde erstmals 1999 veröffentlicht. bwDraco vor 8 Jahren 2
@ bwDraco - ** Ich weiß wirklich, dass ................ ** Sie haben den Punkt dieser zweiten, nicht zusammenhängenden Frage völlig verfehlt. "GMT Unix Time: 25. Juni 1983 13: 56: 23.000000000 Eastern Daylight Time". Daher meine Frage, warum der Kunde seinen 25. Juni 1983 um 13:53 Uhr GMT als das Gleiche in diesem Beitrag meint. Die Zeit 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 vor 8 Jahren 0
21 ist nicht die Alarmnummer, und dies ist kein "Verschlüsselungsalarm". [21 ist der Datensatztyp * aller * Alarmdatensätze] (http://tools.ietf.org/html/rfc5246#section-6.2), aber der Alarmdatensatz ist verschlüsselt. Wireshark kann ihn nicht entschlüsseln und zeigt "Encrypted Warnen". Es kann sich um eine normale close_notify handeln, aber überprüfen Sie die Serverprotokolle, um herauszufinden, ob ein Fehler vorliegt und wenn ja, was. dave_thompson_085 vor 8 Jahren 1
Korrektur: Beim erneuten Lesen sehe ich, dass der Client eine Warnung ausgibt. Überprüfen Sie also die * Client * -Protokolle dave_thompson_085 vor 8 Jahren 0

2 Antworten auf die Frage

7
StackzOfZtuff

Es ist ein Mixup

Dies ist NICHT AlertDescription21.

Stattdessen ist dies ContentType21 .

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

Was jetzt? Wir wissen also, dass es sich um eine Warnung handelt, aber welche Art von? Ein AlertDescriptionFeld 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 Paketdump nicht einfach entschlüsseln, wenn wir den privaten Schlüssel für das Zertifikat verwenden?
A: Nein. Diese Verbindung verwendete eine kurzlebige Verschlüsselungssammlung (dh Cipher Suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA (0x0033), sie ist vorwärtssicher), und der Massenverschlüsselungsschlüssel für die Sitzung kann nicht mit dem privaten Schlüssel des Zertifikats rekonstruiert werden.

Nimm eine neue Spur.

Machen Sie eine weitere Spur, aber stellen Sie sicher, dass Sie sie später wieder entschlüsseln können. Dazu müssen Sie entweder den privaten Schlüssel bereitstellen und eine nicht nach vorne gesicherte Suite erzwingen (alles ohne DHEoder ECDHE im Namen) oder Ihre Software den Sitzungsschlüssel irgendwo ablegen. ( Chrome und Firefox können dies tun. )

Damit Wireshark mithilfe des Server-Schlüssels entschlüsseln kann, benötigen Sie Suite ** ohne DH ** (einschließlich ECDH). Streng genommen sind nur DHE und ECDHE (und EC / DH_anon, selten verwendet) * ephemeral *, und DH und ECDH könnten mit dem Server-Schlüssel entschlüsselt werden, aber Wireshark macht dies nicht. (Und es macht viel Arbeit, obwohl ich gelegentlich ein oder zwei Bilder manuell gemacht habe.) dave_thompson_085 vor 8 Jahren 1
@ dave_thompson_085 danke. Ich habe keine Ahnung, warum ich "EC" geschrieben habe. StackzOfZtuff vor 8 Jahren 0
4
jww

... wir haben einen Client / Server, auf dem TLS v1.0 ausgeführt wird, und erhalten nach dem ersten Handshake immer wieder den Encryption Alert 21 vom Client ...

Es sieht so aus, als sei der Client nicht in Betrieb und es muss ein Upgrade durchgeführt werden.

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

decryption_failed_RESERVED
   Diese Warnung wurde in einigen früheren TLS-Versionen verwendet und hat möglicherweise
   Angriffe auf den CBC-Modus [CBCATT] zugelassen. Es
   darf NICHT von kompatiblen Implementierungen gesendet werden.

Es ist nicht bekannt, dass die Alarmnummer 21 ist und wahrscheinlich auch nicht. siehe meinen Kommentar zur Frage. Beachten Sie, dass der Client anscheinend eine 1 / N-1-Fragmentierung durchführt, die als Reaktion auf BEAST nach Ende 2011 weitgehend implementiert wurde. Beachten Sie, dass das Zusammenführen von Alarmen 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 vor 8 Jahren 0