szyfrowanie xor

0

Czy ktoś miał by pomysł jak to rozwiązać

W archiwum z szyfrogramami znajduje się 1000 plików. Wybierz ten, którego nazwa zgadza się z trzema ostatnimi cyframi twojego numeru indeksu. Rozszyfruj go. Wiesz, że prowadzący próbował zastosować szyfr one-time pad, ale chyba niezbyt dobrze go zrozumiał i użył klucza o długości 256 bajtów, powtarzając go wiele razy (jak w szyfrze Vigenere'a). W dodatku myślał też, że dłuższy szyfrogram będzie trudniejszy do złamania, więc zaczął tekst jawny od długiego fragmentu polskiej książki. Dopiero na samym końcu umieścił tajny kod o długości 32 znaków. Znajdź ten tajny kod

0

Wiesz, że pierwsze n-32 znaków na pewno jest drukowalne, więc szukasz takich wartości dla każdego znaku szyfrogramu aby było to prawdziwe dla każdego bajtu przez niego "zaszyfrowanego".

0

@kq to chyba tak łatwo nie pójdzie ;) Bo może być sporo false-positives. Ale da się to zrobić dość prosto, semi-interkatywnie za pomocą naszego https://github.com/p4-team/crypto-commons/blob/master/crypto_commons/xor/repeating_xor.py
Masz tu podane że to jest jakaś książka po polsku, więc do naszego interaktywnego łamacza podajesz słowa które wg ciebie padają w tym tekście i patrzysz co ci się dopasowało :) Myśle że bardzo szybko będzie się dało rozkminić co to za tekst był szyfrowany, a wtedy odzyskanie klucza to zwykły xor oryginału z szyfrogramem.

0

Zauważ, że masz dostęp do wielu szyfrogramów, które dzieliły ten sam klucz, co się stanie jak sksorujesz dwa szyfrogramy ze sobą? Mała podpowiedź. Jeżeli były użyte fragmety polskiej książki, to sprawdź statystykę występowania polskich liter, albo nawet sylab i zgadywanie pójdzie Ci całkiem szybko. Jeśli chodzi o wyrazy to pamiętam, że łączniki (ale, lecz, więc itd.) są dobrym strzałem.

0

Zauważ, że (a ^ k) ^ (b ^ k) = a ^ k ^ b ^ k = a ^ b. Więc już mamy jakąś informację o tekście jawnym. Kolejną rzeczą, która osłabia OTP (przy ponownym użyciu klucza) jest to, że można poddać go łatwo analizie statystycznej. Policz ile razy występują te same znaki na danych pozycjach w blokach po 32 bajty. Jeśli jest to tekst książki, to zakładam, że najwięcej będzie bajtów 0x20 (spacja) więc możesz przyjąć (z pewnym prawdopodobieństwem), że 0x20 ^ top (gdzie top to najczęściej występujący bajt na danej pozycji) to jest bajt klucza.

Więcej http://crypto.stackexchange.com/questions/59/taking-advantage-of-one-time-pad-key-reuse

0

Dzięki za pomoc

1 użytkowników online, w tym zalogowanych: 0, gości: 1