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

kq
Moderator C/C++
  • Rejestracja:prawie 12 lat
  • Ostatnio:3 dni
  • Lokalizacja:Szczecin
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".


Azarien
Gdybym był autorem tego zadania, to plik byłby podchwytliwie zapisany w UTF-16 :P
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
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.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 5x, ostatnio: Shalom
kq
No to zależy od wielkości danych wejściowych. Chociaż pewnie masz rację...
several
  • Rejestracja:prawie 16 lat
  • Ostatnio:około 11 godzin
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.


edytowany 2x, ostatnio: several
hauleth
Spacje chyba będą występować częściej ;)
hauleth
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:13 dni
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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.