Archiwa tagu: cryptopals

Cryptopals zestaw 2 ćwiczenie 11

Kolejny raz będziemy opierali się na właściwości trybu ECB – powtarzające się bloki w danych wejściowych powoduje powstanie powtarzających się bloków w danych wyjściowych. Nasze zadanie jest podzielone na kilka etapów. W pierwszym kroku musimy stworzyć funkcję która generuje 16-bajtowy ciąg bajtów którego będziemy używali jako klucza szyfrującego. Ja stworzyłem funkcję która przyjmuje jako parametr… Czytaj dalej »

Cryptopals zestaw 2 ćwiczenie 10

Ćwiczenie numer 10 jest naturalną kontynuacją ćwiczenia numer 7 z zestawu 1 (https://koltys.info/blog/2020/05/25/cryptopals-zestaw-1-cwiczenie-7/ ). Jedyne co musimy zrobić do dodanie do kodu, który już stworzyliśmy nowego trybu – CBC. Przy okazji omawiania trybu ECB wspomniałem, że ma on bardzo poważną wadę, którą zaprezentowałem przy pomocy obrazka. Chodziło o to, że każdy blok danych który się… Czytaj dalej »

Cryptopals zestaw 2 ćwiczenie 9

Pierwsze ćwiczenie z nowego zestawu, aż chce się powiedzieć – lekkie, łatwe i przyjemne. I tak właśnie jest. Chodzi o dopełnianie danych, które mają zostać zaszyfrowane, żeby ich długość była wielokrotnością długości bloku używanego przez algorytm szyfrujący np. w przypadku AES jest to 16 bajtów. Jest to istotny problem ponieważ nie można oczekiwać od użytkownika,… Czytaj dalej »

Cryptopals zestaw 1 ćwiczenie 8

Załączony powyżej obrazek to chyba najpopularniejszy sposób na pokazanie słabości trybu ECB. Wspomniałem o tym przy poprzednim ćwiczeniu, dziś trochę rozwinę temat. Najczęściej na prezentacjach wykorzystuje się obrazki ponieważ wtedy każdy może „naocznie” zaobserwować, że z naszymi zaszyfrowanymi danymi jest coś nie tak. Poniżej znajduje się oryginalny obraz: Na początek wspomnę tylko, że zrobiłem pewne… Czytaj dalej »

Cryptopals zestaw 1 ćwiczenie 7

Tym razem ćwiczenie, które można rozwiązać w „5 minut” albo spędzić z nim trochę więcej czasu i się czegoś przy okazji nauczyć. Naszym zadaniem będzie odszyfrowanie zawartości pliku podanego przez autorów. Twórcy zadania podli nawet klucz użyty do zaszyfrowania treści jak i użyty tryb AES. Wszystko podane jak na dłoni. Nic tylko pobrać PyCrypto i… Czytaj dalej »

Cryptopals zestaw 1 ćwiczenie 6

Pierwsze większe wyzwanie i z tego co piszą autorzy pomyśle jego rozwiązanie oznacza, że powinniśmy sobie poradzić z wszystkimi ćwiczeniami aż do zestawu 6. Warto się spiąć i rozwiązać je samodzielnie, dlatego zanim przejdę do opisania mojego rozwiązania omówię to na co warto szczególnie zwrócić uwagę. Pierwsze co moim zdaniem należy zrobić to funkcja o… Czytaj dalej »

Cryptopals zestaw 1 ćwiczenie 5 i algorytm genetyczny

Kolejne łatwe ćwiczenie, dlatego w ramach bonusu demo algorytmu genetycznego zainspirowane streamem Gynvaela Coldwinda. W tym ćwiczeniu naszym zadaniem jest implementacja algorytmu, który używając podanego klucza wykona operację XOR na podanej wiadomości. Klucz jest krótszy niż wiadomość dlatego po wykonaniu operacji XOR na pierwszych n bajtach wiadomości (n to długość klucza), klucz jest używany ponownie.… Czytaj dalej »

Cryptopals zestaw 1 ćwiczenie 4 i polecenie MORE

Tym razem proste zadanie. Mamy plik testowy, w którym znajduje się 327 linii z których każda może zawierać potencjalną tajną wiadomość a my musimy znaleźć tą wiadomość i ją zdekodować. Napisałem, że zadanie jest proste ponieważ, podobny problem rozwiązywaliśmy w poprzednim zadaniu, ale mieliśmy jedną linię która była zaszyfrowana. Najprościej rozwiązać ten problem sprawdzając wszystkie… Czytaj dalej »

Cryptopals zestaw 1 ćwiczenie 3

W tym ćwiczeniu mamy podany ciąg znaków zaszyfrowany poprzez wykonanie operacji XOR na każdym ze znaków z bajtem o nieznanej wartości (to bajt, w związku z tym wiemy, że jest to wartość z przedziału 0-255). Naszym zadaniem jest odszyfrowanie tej wiadomości. Autorzy podpowiadają nam, że najłatwiej jest XORować podaną wiadomość ze wszystkimi wartościami od 0… Czytaj dalej »

Cryptopals zestaw 1 ćwiczenie 2

W drugim ćwiczeniu naszym zadaniem jest obliczenie wartości XOR dwóch buforów o jednakowej długości. Mając na uwadze, że tego typu funkcja może przydać się w przyszłości trochę zmodyfikowałem jedno założenie – nasz funkcja będzie przyjmowała dwa bufor które nie muszą być równej długości, krótszy z buforów będzie uzupełniany wartościami 0x0. Funkcja hex_string_xor przyjmuje dwa dwa… Czytaj dalej »