Hi All,

Today I noticed that SSL decryption breaks when there is a tcp retransmission. 
The retransmitted segment will be handled by the SSL dissector as if it was new 
data. The mac-check will fail, but the state of the SSL decrypter is left in an 
erroneous state, causing the dissection of all subsequent SSL records to fail. 
Of course on the receiving host, the TCP stack takes care of filtering out the 
retransmitted segment, so it's SSL stack will have an issue.

To solve this issue, I can think of several options:

- Make the TCP dissector not forward retransmitted segments to higher layer 
protocols, just like the normal TCP stack will do on the receiving host. This 
will have a major impact on the way retransmitted frames are displayed. Then 
again, the fully dissected segment is already available. The change in behavior 
can be prevented with a preference, but I don't want to create a zillion 
preferences...

- Have a "retransmitted_data" flag in the frame-data structure which can be set 
by a dissector to warn the called dissector that the data is is receiving is 
actually a copy of earlier received data so that it can take proper action in 
dissecting it. Since the flag only has meaning between the calling and the 
called dissector, I'm not so happy with it's presence in the frame-data 
structure.

- Add code to the SSL dissector to get the TCP conversation data and check for 
the TCP analysis flag "retransmission" itself. But that would break the layered 
design of it all.

- Accept that retransmitted frames will break SSL decryption and let the user 
delete the retransmitted frames themselves with editcap.


For now, I think I would prefer option 1.What do you all think? Are there any 
other options that I haven't thought of?

Cheers,
       Sake
_______________________________________________
Wireshark-dev mailing list
[email protected]
http://www.wireshark.org/mailman/listinfo/wireshark-dev

Reply via email to