W ramach ciekawostki - najpierw zapraszam do przeczytania tego rozdziału: 6.3 SPA Traffic Analysis.
Trochę kontekstu - wiadomość (przed base64) ma następujący format:
Salted__SALTSALT0123456789ABCDEF
Gdzie:
- Salted__ jest pozostałością z Crypt::CBC;
- SALTSALT jest saltem;
- Dalsza część jest blokiem/blokami ciphertextu.
Po zakodowaniu ta przykładowa wiadomość ma następujący format (z pominięciem paddingu):
U2FsdGVkX19TQUxUU0FMVDAxMjM0NTY3ODlBQkNERUY
By utrudnić łatwe zidentyfikowanie pakietu zawierającego payload (wiadomość) SPA usuwany jest ten "nagłówek":
U2FsdGVkX1
Jest tylko mały problem - całe Salted__ po zakodowaniu do base64 wygląda tak (ponownie, z pominięciem paddingu):
U2FsdGVkX18
Coś jakby dłużej, prawda? A z czego to wynika czytelnik ustali sam (mam nadzieję).
Pytania:
- W jaki sposób sprawdzić, czy dany string base64 jest zakodowaną wiadomością SPA?
- Jakie jest prawdopodobieństwo false positive w tym przypadku (błędnego zidentyfikowania losowych danych jako SPA)?
Tak, wiem:
Traffic analysis is a powerful technique that is used to extract information from network communications, and the fwknop project is not designed to try and thwart a sophisticated traffic analysis effort.
Ale technika, o której piszę, wcale nie łapie się na sophisticated traffic analysis effort.