Strona 1 z 2 12 OstatniOstatni
Pokaż wyniki 1 do 10 z 13

Temat: Mam dwa szyfrogramy w XOR, z takim samym nieznanym kluczem, jak je odkodować?

  1. #1
    Avatar Nikow
    Nikow jest offline -=[ZRP]=-
    Zarejestrowany
    Sep 2007
    Skąd
    Różne zakątki sieci.
    Postów
    995

    Domyślnie Mam dwa szyfrogramy w XOR, z takim samym nieznanym kluczem, jak je odkodować?

    Witam!
    Dostałem dwa maile, zaszyfrowane za pomocą algorytmu XOR. Niestety, trzeci mail z kluczem do nich nie dotarł do mnie, ponieważ serwer pocztowy padł w czwartek. Okazało się, że ktoś włamał się na serwer i usunął wszystkie maile, dosłownie wszystkim użytkownikom, więc administratorzy musieli użyć backupa ze środy. Przeszukałem sieć w poszukiwaniu metod odszyfrowywania XOR'ów i wpadłem na ten artykuł. Mówi on że XOR'ując szyfrogram 1 i szyfrogram 2 możemy jakoś odzyskać tekst jawny. Pod działaniem
    C1 XOR C2 = (P XOR K) XOR (K XOR Q) = P XOR Q
    pisze
    W wyniku uzyskuje się więc dwa teksty jawne P i Q, "sklejone" za pomocą XOR. Tajny czynnik w postaci klucza K został wyeliminowany, a rozdzielenie tekstów P i Q jest relatywnie proste.
    ale jak rozdzielić ten tekst nie znając żadnego fragmentu obu szyfrogramów?
    Pozdrawiam!
    http://nikowek.blogspot.com/
    Zbrojne Ramię Pingwina!
    -----BEGIN GEEK CODE BLOCK-----
    Version: 3.12
    GCS d- s++:++ a--- C+++ UL+++ P L+++ E--- W++ N++ o K- w--
    O M- V- PS PE Y PGP++ t+ 5 X+ R tv- b++ DI- D-
    G+ e- h! r% y?
    ------END GEEK CODE BLOCK------

  2. #2
    Zarejestrowany
    Sep 2007
    Postów
    11

    Domyślnie

    Witam jest możliwość abyś umieścił fragmenty maili ?
    "Mój podpis Zenek N, moją inspirają czarny kapelusz.."

  3. #3
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Fragmenty znasz... linia FROM, TO to na pewno powinno dzialac... no chyba ze masz zakodowane tylko body wiadomosci - zalezy od implementacji, czy szyfrowales do przesylu (wtedy header oryginalny) czy podczas skladowania (wtedy mogles miec calosc).

    Jesli wiesz od kogo ten mail to uzyj fragmentu jego sygnaturki... powinno zadzialac.
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  4. #4
    Avatar Nikow
    Nikow jest offline -=[ZRP]=-
    Zarejestrowany
    Sep 2007
    Skąd
    Różne zakątki sieci.
    Postów
    995

    Domyślnie

    Też pomyślałem by poszukać wskazanych pól, ale niestety tylko część tekstowa jest zakodowana, dokładniej mówiąc, część części tekstowej maila... Kod był zakodowany base64 by mógł zostać wysłany mailem, ale to chyba nie zmienia faktu. Niestety nie mogę udostępnić maili, zostały zaszyfrowane dlatego że są tajne, co nie? Przecież nikt by się nie bawił w szyfrowanie maili o pogodzie... Są to raporty, ale idea jest taka by szukać słów które się tam znajdują i xorować z nimi? Tylko co mi to da? Jak na tej podstawie mam odkodować resztę klucza szyfrogramu?
    Ostatnio edytowane przez Nikow : 01-28-2008 - 16:56 Powód: Napisałem dwa razy to samo.
    http://nikowek.blogspot.com/
    Zbrojne Ramię Pingwina!
    -----BEGIN GEEK CODE BLOCK-----
    Version: 3.12
    GCS d- s++:++ a--- C+++ UL+++ P L+++ E--- W++ N++ o K- w--
    O M- V- PS PE Y PGP++ t+ 5 X+ R tv- b++ DI- D-
    G+ e- h! r% y?
    ------END GEEK CODE BLOCK------

  5. #5
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Jesli mozesz... podeslij mi jakis inny szyfrogram w ktorym bedzie np 200 znakow a w tym jakis ciag ktory mozesz mi podac... potrzebuje do testow dekodera ktory wlasnie napisalem :P

    Podaj na forum Base64 szyfrogramu a je postaram sie podac plaintext

    EDIT: Zapomnialem dodac ze szyfrowanie pojedyncza wartoscia... czyli klucz staly i ma 1 bajt dlugosci - jesli ma wiecej to musialbym wiedziec jaki byl algorytm - np jesli XOR z haslem 5 znakow to zakladalbym ze:
    - 1 znak plaintext xor 1 znak hasla
    - 2 znak plaintext xor 2 znak hasla
    - ...
    - 6 znak plaintex xor 1 znak hasla
    - itd... do konca plaintextu
    Ostatnio edytowane przez TQM : 01-28-2008 - 23:24
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  6. #6
    Avatar Nikow
    Nikow jest offline -=[ZRP]=-
    Zarejestrowany
    Sep 2007
    Skąd
    Różne zakątki sieci.
    Postów
    995

    Domyślnie

    Witam!
    tqm: Dziękuję za zaangażowanie. Same szyfrogramy miały 5 i 6kb. Klucz równo 1024znaki. Na szczęście dzięki wykwalifikowanej inteligencji kolegi udało się odzyskać ten 1 mail z kluczem. Jednak jestem ciekaw jak chciałbyś odszyfrować te szyfrogramy. Możesz mi zdradzić tą metodę? Chociażby na PW.

    Gdy klucz się kończył był powtarzany, z tą różnicą że był odwracany, więc można przyjąć że sam klucz miał 1024*2 znaków.
    Pozdrawiam.
    Ostatnio edytowane przez Nikow : 01-29-2008 - 22:10
    http://nikowek.blogspot.com/
    Zbrojne Ramię Pingwina!
    -----BEGIN GEEK CODE BLOCK-----
    Version: 3.12
    GCS d- s++:++ a--- C+++ UL+++ P L+++ E--- W++ N++ o K- w--
    O M- V- PS PE Y PGP++ t+ 5 X+ R tv- b++ DI- D-
    G+ e- h! r% y?
    ------END GEEK CODE BLOCK------

  7. #7
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    1024 znaki czy 1024 bity? w XOR mowimy o operacjach bitowych generalnie ale w tym wypadku brute-force byloby dosc czasochlonne zwlaszcza przy dlugim kluczu...

    Ponizej przykladowa implementacja - nie sprawdzalem akurat tej czy w ogole dziala - pisane ot tak na szybko (moj kod eksperymentalny jest sporo dluzszy bo na 1 linie kodu przypada okolo 20 linii testow i debug'a ktory jest wyswietlany wraz z wynikiem dzialania programu i to dla kazdego przebiegu kodu - staram sie w ten sposob czegos wiecej nauczyc)...

    Kod:
    #!/usr/bin/perl
    use Mime::Base64;
    
    # wczytujemy plik podany jako pierwszy parametr
    open (FH, $ARGV[0]);
    chomp(@in=<FH>);
    close (FH);
    $enc = MIME::Base64::decode_base64(join(//,@in));
    
    # wyliczamy wszystkie 256 kombinacji... 
    # i wyswietlamy jesli zawiera znany plaintext
    for ($xor=0;$xor<=255;$xor++) {
        $plain = join(//, map { chr(ord($_) ^ $xor) } split(//,$enc));
        if ($plain =~ m/$ARGV[1]/im ) { 
    	print "*** XOR = $xor ***\n$plain\n\n" ;
        }
    }
    Programu powinien dzialac... a nawet jesli nie to ma tylko pokazac mechanizm znajdowania wartosci $xor przy xor'owaniu z jednym stalym bajtem i na 99% linia odpowiedzialna za dekodownaie dziala... w sumie caly skrypt mozna przepisac na one-liner gdzie cala aplikacja bedzie wklepana z wiersza polecen ale to juz na inny raz...

    Kod:
    $ xorcomb.pl <plik_base64> <szukany_plaintext>
    Jesli wiem ze w tresci powinien byc string 'jutro' to po prostu jako string podaje jutro... a jesli wiem ze to ma byc kawalek logu sysloga to wiem ze zaczyna sie on od 3 liter (miesiac), spacja, data i godzina... wiec jako szukany plaintext moge podac regex tylko trzeba go odpowiednio zapisac w wierszu polecen albo zmienic regexa w kodzie na eval... i podawac caly regex w linii polecen (np. /\w{3}\s+\d{1,2}\s+\d{4}/i) - wtedy tez zadziala tylko notacja inna... standardowe TIMTOWTDI.

    Dla kluczy jak mowisz 1024 bit to kwestia sprawdzenia dla wszystkich permutacji 128 bajtowego klucza, czyli nieco tego bedzie :P bo mowimy o 256^128 kombinacji
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  8. #8
    Avatar Nikow
    Nikow jest offline -=[ZRP]=-
    Zarejestrowany
    Sep 2007
    Skąd
    Różne zakątki sieci.
    Postów
    995

    Domyślnie

    Klucz ma 8192bity
    http://nikowek.blogspot.com/
    Zbrojne Ramię Pingwina!
    -----BEGIN GEEK CODE BLOCK-----
    Version: 3.12
    GCS d- s++:++ a--- C+++ UL+++ P L+++ E--- W++ N++ o K- w--
    O M- V- PS PE Y PGP++ t+ 5 X+ R tv- b++ DI- D-
    G+ e- h! r% y?
    ------END GEEK CODE BLOCK------

  9. #9
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Albo cluster, kilka FPGA albo slepe szczescie i masa czasu - powodzenia :P
    Ze tak zapytam - jak wy kurka wymienialiscie klucze szyfrujace?
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  10. #10
    Avatar Nikow
    Nikow jest offline -=[ZRP]=-
    Zarejestrowany
    Sep 2007
    Skąd
    Różne zakątki sieci.
    Postów
    995

    Domyślnie

    Pocztą elektroniczną była wysłana procedura związana z dostarczeniem kluczy, a tradycyjną pocztą polską na CD'i z kluczami na następne sesje, do wszystkich współpracowników w projekcie. Jest nas 10 i każdy dostał po 50k kluczy generowanych pseudolosowo, różnej długości, ale sądzę że skończymy przed wykorzystaniem tej puli. Dodatkowym zabezpieczeniem była nalepka na każdym pudełku, która miała zapewniać o tym że pudełko w razie transportu. Na szczęście wszystkie pudełka dotarły do każdego z nas z nienaruszoną nalepeczką. Wiem, ze to troszkę paranoiczne, ale dbamy o bezpieczeństo "służbowych" maili.

    PS: Sorki za zamieszanie
    Ostatnio edytowane przez Nikow : 01-31-2008 - 18:49
    http://nikowek.blogspot.com/
    Zbrojne Ramię Pingwina!
    -----BEGIN GEEK CODE BLOCK-----
    Version: 3.12
    GCS d- s++:++ a--- C+++ UL+++ P L+++ E--- W++ N++ o K- w--
    O M- V- PS PE Y PGP++ t+ 5 X+ R tv- b++ DI- D-
    G+ e- h! r% y?
    ------END GEEK CODE BLOCK------

Strona 1 z 2 12 OstatniOstatni

Podobne wątki

  1. Jak mam shakować to forum?
    By Misiek in forum Newbie - dla początkujących!
    Odpowiedzi: 3
    Autor: 01-01-2008, 16:09
  2. jak odkodować hasła w md5
    By mathias777 in forum Kryptografia
    Odpowiedzi: 10
    Autor: 12-28-2007, 13:13
  3. Dwa numer i.p na jednej maszynie...
    By gogulas in forum Newbie - dla początkujących!
    Odpowiedzi: 8
    Autor: 11-27-2007, 16:13
  4. jak mam się do tego zabrać???
    By loslukasz in forum /dev/null
    Odpowiedzi: 1
    Autor: 08-26-2007, 19:53
  5. Odpowiedzi: 13
    Autor: 07-05-2006, 17:15

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj