stanford-esrg / retina

Retina is a network analysis framework that supports 100+ Gbps traffic analysis on a single server with no specialized hardware.
Apache License 2.0
146 stars 23 forks source link

QUIC Initial Packet Decryption and Parsing #55

Closed sippejw closed 1 month ago

sippejw commented 1 month ago

Same as PR #37, updates being that rust-crypto has been replaced with aes-gcm.

Summary

The standard QUIC handshake between two hosts who do not have a pre shared key involves the use of QUIC Initial packets to share a TLS 1.3 client and server hello. After these two messages have been received, the hosts are able to change to new keys unknown to network observers. This PR add the ability to parse QUIC Initial packets, decrypt the protected payloads, parse the QUIC frames, and parse the TLS client and server hello. This gives users the ability to filter QUIC traffic on many of the same features as TLS, such as SNI.

Features

Testing

Main done. Ran for 300.100800357s Done. Logged 320839 Quic stream to "quic.jsonl"

sippejw commented 1 month ago

Hey @thearossman, the commit in this PR removes the dependency that was causing build issues on ARM and will hopefully resolve the problem. If you can test on your ARM instances and let me know that would be greatly appreciated.

Additionally, it looks like it might take some git magic to fix the commit tree. Let me know if you need me to do anything on my end to get this resolved and checked in. Thanks!

thearossman commented 1 month ago

sorry - looks like i gave you a couple of merge conflicts (which were trivial). just fixed.

sippejw commented 1 month ago

Hey @thearossman, I believe the git tree is still a little messed up. It is missing the initial QUIC commits. Would it be possible to revert #41? Otherwise, I can try to recommit those contributions but that may get messy.

thearossman commented 1 month ago

yikes, thanks for noting that @sippejw . i can't revert #41 automatically, but I could revert this PR that I merged, which could presumably be rebased. would that help?