Wpis z mikrobloga

Jak z punktu widzenia kryptografii bezpieczny jest następujący algorytm szyfrowania

Szyfrowanie

* Hasło do zaszyfrowania to dowolny ciag znakow podany przez uzytkownika i do tego dołączona wielkosc pliku w bajtach, np. password128
* z tego hasla generowany jest hash
* na podstawie hashu ustawiany jest seed w generatorze liczb pseudolosowych
* generowany jest ciąg znaków o wielkości pliku
* robiony jest one time pad xor na pliku do zaszyfrowania z przed chwilą wygenerowanym ciągiem
* zaszyfrowany plik jest dodatkowo kompresowany żeby trochę pomieszać w jego statystycznych parametrach

Deszyfrowanie
* dekompresja
* użytkownik podaje haslo i wielkosc pliku w bajtach, np password128
* z hasla generowany jest hash... itd jak wyżej

#programowanie #kryptografia
  • 25
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@kebab-case: jesli chodzi o bezpieczenstwo, to wydaje mi sie, ze to zalezy od dlugosci hasla i hasha. Jak haslo jest dluzsze od tekstu to masz algorytm idealny, cos jak algorytm vigenera.
  • Odpowiedz
@kebab-case: tak byłem i też robiliśmy takie nieprzydatne rzeczy, chodzi mi o to że no super, masz projekt gdzie musisz sobie wymyślać własny algorytm szyfrowania, tylko w praktyce nigdy ci taka wiedza nie będzie potrzebna w życiu, o to mi chodzi, powinni wyjaśniać jak działają inne znane algorytmy i tyle i dawać np projekt aby stworzyć jakąś aplikację w oparciu o nie a nie wytwarzać koło na nowo
  • Odpowiedz
@Saly: Hasło nie jest równe długości pliku. Dlatego robię numer z generowaniem losowego ciągu znaków na podstawie hashu hasła i później XORuje to z bajtami pliku. Co teoretycznie daje one time padding

@Jurigag: wyjaśnili jak działaja
  • Odpowiedz
@kebab-case: Twój pomysł może być podatny na known plaintext attack. Jeśli szyfrujesz np. obrazek, wiele bajtów (sygnatura pliku, sygnatury bloków itp) jest zawsze takich samych. Znając bajty pliku i szyfrogramu, znamy niektóre bajty hasła. Jeśli wybrany generator liczb pseudolosowych nie jest na to odporny (a większość nie jest), to mając wystarczająco dużo bajtów hasła można wyliczyć seed, a więc złamać szyfr.
  • Odpowiedz