Pytanie:
Jak można złamać słaby, ale nieznany protokół szyfrowania?
Ram Rachum
2013-03-18 20:03:57 UTC
view on stackexchange narkive permalink

Czytałem to interesujące pytanie:

Czy zabezpieczenia hasła domowego stworzonego przez mojego programistę są dobre, czy złe i dlaczego?

Pokazuje słabe algorytm domowego parzenia opracowany przez „Dave'a”, a odpowiedzi omawiają, dlaczego jest to zły pomysł. (Właściwie algorytm haszujący zamiast szyfrowania, ale moje pytanie dotyczy obu.)

Wydaje mi się, że algorytm domowego przygotowania to bardzo zły pomysł, ale jest jedna rzecz, której nie rozumiem.

Załóżmy, że jestem atakującym i mam do czynienia ze słabym, ale nieznanym algorytmem szyfrowania opracowanym przez „Dave'a”. Jak bym to złamał? Nie wiedziałbym nawet, od czego zacząć. Byłby to pozornie nic nie znaczący ciąg znaków.

Na przykład, powiedzmy, że algorytm domowego przygotowania wygląda tak:

  • Użyj słabego, dobrze znanego algorytmu szyfrowania na oryginalne dane, a następnie:
  • Wykonaj bitową wartość ujemną na dowolnym bajcie, którego numer seryjny w pliku zawiera powtarzającą się sumę cyfr, która jest liczbą pierwszą. (Lub jakakolwiek inna manipulacja matematyczna, to tylko przykład.)

Jak można zhakować plik utworzony przez taki algorytm bez wiedzy o tym z góry?

Edycja: Wszyscy, proszę, nie próbujcie mnie przekonywać, jak trudno jest utrzymać algorytm w tajemnicy. Proszę odpowiedzieć na to pytanie, zakładając, że algorytm jest utrzymywany w całkowitej tajemnicy, pomimo tego, jak trudno to osiągnąć w prawdziwym życiu.

Załóżmy też, że nie mam w ogóle dostępu do algorytmu, tylko dane wynikowe.

Jeśli szukasz odpowiedzi związanych z kryptoanalizą, możesz podać kilka dodatkowych informacji. Po pierwsze, do ilu zaszyfrowanych tekstów atakujący miałby dostęp, po drugie, do ilu zaszyfrowanych tekstów miałby dostęp atakujący, a po trzecie, jakiego typu dane są zaszyfrowane przez zaszyfrowany tekst (np. Czy są to dane binarne czy tekst).
Zapraszam do odpowiedzi na pytanie w przypadku wielu szyfrogramów lub tylko jednego. Jeśli chodzi o typ danych: powiedz binarne.
Także: Zobacz tutaj: http://old.honeynet.org/scans/scan16/som/som34.html
Żaden „nieznany” algorytm szyfrowania nie może być uznany za „słaby”, dopóki nie zostanie zrozumiany i złamany. Nieznane nie oznacza słabości, to próba odkrycia ujawnia naturę bestii i odtąd jej siłę w zaciemnieniu.
Wygląda na to, że przedstawiłeś swój punkt widzenia. To wszystko, wygrywasz. Grupa facetów na stronie bezpieczeństwa nie była w stanie złamać twojego „szyfrowania”.
Witaj RamRachum, [Challenge to decode something style-questions] (http://meta.crypto.stackexchange.com/questions/100/do-we-want-challenge-analyse-this-questions-and-if-so-what -ograniczenia-jeśli-istnieją) są tutaj uważane za nie na temat.
Cześć Ram, myślę, że masz kilka błędnych założeń. Po pierwsze, jak rozumiem, pytasz * tylko * o czysto matematyczne aspekty kryptoanalizy. Jeśli tak jest, pytanie powinno prawdopodobnie zostać przeniesione do [crypto.se], zamiast pozostać na [security.se] - Tutaj * robimy * patrzymy na cały obraz i zdecydowanie * robimy * pozostajemy w królestwie rzeczywistości, a nie idealnie kulistym kurczakiem (jak wspomniał jeden z komentatorów).
W rzeczywistych scenariuszach, jeśli poufność twoich danych zależy od tajności twojego algorytmu szyfrowania, prawdopodobnie łatwiej byłoby ukraść szczegóły tego algorytmu (zakładając, że algorytm nie jest trywialny). Najsłabsze ogniwo i tak dalej. Co więcej, w nietrywialnych scenariuszach użycia w świecie rzeczywistym jest prawie niemożliwe utrzymanie algorytmu w jakimkolwiek stopniu tajności, nawet * bez * udziału atakującego - niezależnie od tego, czy są to inni użytkownicy algorytmu, programiści z dostępem do kodu repozytorium lub inne wewnętrzne osoby atakujące.
Ponieważ mamy do czynienia z prawdziwym światem, często znacznie łatwiej jest rzucić kilka zautomatyzowanych narzędzi do wykonania podstawowej analizy kryptograficznej, bez konieczności zagłębiania się w szczegóły matematyczne. Okej, w porządku - właśnie o tych szczegółach chcesz się dowiedzieć, ale znowu to byłoby poza tematem. (Tak jak szczegóły algorytmu szyfrowania byłyby nie na temat).
Na koniec - wątpię, by ktokolwiek tutaj był skłonny poświęcić więcej niż trywialną ilość czasu na złamanie twojego szyfrowania, co oczywiście nie oznacza, że ​​nie można tego zrobić przy odpowiednim czasie i zasobach. Co prowadzi do mojego ostatniego punktu - jak łatwo jest złamać szyfrowanie, ma znaczenie dla Twojego profilu ryzyka i modelu zagrożenia. Czy to aplikacja bankowa czy blog Twojej młodszej siostry? Odpowiednie nagrody określą, ile wysiłku - przez ilu atakujących - prawdopodobnie spróbuje złamać twoje szyfrowanie. W rzeczywistości * łatwiej * - nie mówiąc już o bezpieczniejszym - jest po prostu użycie silnego szyfrowania.
Twoje pytanie naprawdę nie zawiera szczegółów, o których wspomina @RoryMcCune, co ma poważny wpływ na "poprawną" odpowiedź: Jeśli wszystko, co masz, to zaszyfrowane wiadomości i brak wiedzy na ich temat, najgorszym przypadkiem jest założenie, że ktoś użył czegoś równoważnego [jednorazowego bloku ] (http://en.wikipedia.org/wiki/One-time_pad) - jeśli użyto prawdziwie losowego, niepowtarzalnego klucza, _nie_ można uzyskać_ wiadomości bez dalszej interakcji z nadawcą lub odbiorcą (bezpośredniej lub pośredniej). Ale może to być również banalny schemat, że doświadczony kryptoanalityk może złamać śniadanie. Możesz tylko spróbować i zobaczyć.
@Thomas wow! Najwyraźniej teraz też jestem l33th4x0r. Zajęło mi to <5 minut przy użyciu Pythona (uczę się Pythona) i nie mam znaczącego doświadczenia w kryptoanalizie ... :)
Mogę polecić książkę „The Code Book” Simona Singha. Chcesz wiedzieć, jak pękła Enigma podczas II wojny światowej? Ta książka wyjaśnia to w prostych słowach. Zawiera również listę wielu słynnych szyfrów z historii i sposobów ich złamania. To miła lektura dla każdego, kto interesuje się kryptografią.
- Jak bym to złamał? Nie wiedziałbym nawet, od czego zacząć. Zakładasz, że osoba, która próbuje go złamać, jest równie słabo zorientowana w łamaniu kryptowalut, jak ty lub ja.
Swoją drogą: w prawdziwym życiu otrzymujesz zaszyfrowane dane z pewnego źródła (które znasz) iw określonym czasie, prawdopodobnie już coś o tym źródle wiesz. Pozwala to postawić kilka hipotez na temat treści tekstu, co może bardzo pomóc w odszyfrowaniu. To samo zrobili podczas II wojny światowej Turing i in. gdy mieli do czynienia z Enigmą: wiedzieli, że o 6 rano pojawiła się wiadomość dotycząca pogody i założyli, że niektóre części zaszyfrowanej wiadomości odnoszą się do warunków pogodowych, co pozwoliło im złamać szyfr w znacznie krótszym czasie (chociaż wiedzieli * mniej więcej * algorytm).
Teraz zadałem podobne pytanie na crypto.stackexchange: http://crypto.stackexchange.com/questions/6752/how-would-one-crack-a-weak-but-unknown-encryption-protocol
Nie zadawaj tego samego pytania w dwóch różnych witrynach. To jest odradzane / niedozwolone. Zamiast tego możesz kliknąć przycisk „flagi”, aby poprosić o przeniesienie pytania do Crypto.stackexchange.
Osiem odpowiedzi:
user2213
2013-03-18 20:31:09 UTC
view on stackexchange narkive permalink

Załóżmy, że jestem napastnikiem i mam do czynienia ze słabym, ale nieznanym algorytmem szyfrowania opracowanym przez „Dave'a”. Jak bym to złamał? Nie wiedziałbym nawet, od czego zacząć. Byłby to pozornie nic nie znaczący ciąg znaków.

Zgadza się, nie zrobiłbyś tego. Oto kilka zaszyfrowanych danych (4587556841584465455874588). Masz pojęcie, co to oznacza? Absolutnie nie.

Jednak brakuje Ci podstawowego, fundamentalnego i najważniejszego z integralnie ważnego klucza centralnego do wszechświata, który łączy kryptografię. Pomysł jest prosty:

  klucz jest wszystkim  

To wszystko. To jest kawałek, który musisz chronić. Kawałek, którego musisz strzec swoim życiem i miej nadzieję, że nikt nie uderzy cię młotkiem, dopóki nie powiesz im, co to jest.

Na tej podstawie musisz założyć, że Twój algorytm może zostać odczytany przez atakującego . Wiedzą, jak to działa. Potrafią udokumentować jego proces. Jeśli są jakieś słabości, znajdą je. I wykorzystają je. Jak ten wściekły ojciec CIA z Schwytanych.

Okazuje się, że jest to mniej założenie, a bardziej praktyczne zastosowanie. Dave, kryptograf domowy, chce włączyć algorytm szyfrowania do swojego programu. Decydując się zrezygnować z wszelkich testów i prac projektowych, które kryptolodzy wykonywali dla niego przez lata za darmo, pisze coś związanego z dziwnym xor, kompiluje swój program i pożytecznie przekazuje go znajomym.

Ten algorytm jest teraz dostępny ich ręce. Gra skończona.

Teraz możesz zapytać „czy nie mogę po prostu zachować algorytmu w tajemnicy? To zadziała, prawda?” Oh Dave, proszę przestań. Nie nie nie. Problem z tajnymi algorytmami polega na tym, że prawdopodobieństwo kradzieży jest znacznie większe. W końcu klucz jest inny dla każdego użytkownika (właściwie nie jest to wymóg, ale załóżmy, że to dla uproszczenia), ale algorytm pozostaje niezmieniony. Potrzebujesz więc tylko jednej ze swoich implementacji, aby być narażonym na atak i to jest koniec gry.


Edycja : OK, w odpowiedzi na zaktualizowane pytanie OP. Załóżmy na chwilę, że algorytm jest całkowicie nieznany. Każdy z dwóch uczestników zaszyfrowanej rozmowy ma doskonałe zabezpieczenie implementacji swojego algorytmu.

W tym przypadku masz dane do analizy. Możesz wykonać jedną z następujących czynności:

  • Przeanalizuj pod kątem często znanych liter. W ten sposób można złamać typowy szyfr przesuwający Cezara.
  • Spróbuj odgadnąć długość klucza. Mając te informacje, możesz przejść do wyszukiwania powtarzających się bloków tekstu zaszyfrowanego, które mogą odpowiadać temu samemu tekstowi jawnemu.
  • Spróbuj indeks koincydencji i inne tego rodzaju miary używane do złamania szyfru Vigenere, ponieważ wiele szyfrów polialfabetycznych jest (prawdopodobnie ) tylko warianty tego.
  • Uważaj na wzorce. Każdy wzór może dać ci klucz.
  • Poszukaj innych wskazówek. Czy długości odpowiadają pewnej mierze, czy są na przykład wielokrotnościami pewnej wartości, takiej jak granica bajtów, a więc są (prawdopodobnie) uzupełniane?
  • Spróbuj przeprowadzić analizę za pomocą jednego z szyfru symetrycznego techniki kryptoanalizy. W wielu przypadkach opierają się one na znajomości algorytmu, więc mogą nie mieć zastosowania w tym przypadku.
  • Jeśli uważasz, że dane, o których mowa, stanowią wymianę kluczy, możesz wypróbować jedną z wielu technik umożliwiających złamanie publicznego algorytmy kluczy.

Faktem jest, że krótki fragment danych z nieznanego algorytmu może być niemożliwy do odszyfrowania. Nie oznacza to jednak, że należy na tym polegać. Im więcej danych może odzyskać kryptoanalityk, tym większe jest prawdopodobieństwo, że złamie twój algorytm. Prawdopodobnie nie wiesz, bez poważnej kryptoanalizy, jaka jest ta granica - na przykład rozsądne jest założenie, że można by brutalnie zmusić algorytm szyfru cezera dla słów trzyliterowych, ponieważ jest ich niewiele, które mają sens.

Masz również problemy z ponownym wykorzystaniem. Podczas II wojny światowej Engima przezwyciężyła ten problem, mając programowalne ustawienia swojego tajnego algorytmu, ale ten też został zepsuty.

Należy również wziąć pod uwagę ludzki element kryptografii. Zdaję sobie sprawę, że etykieta na puszce mówi „użyć raz, nie trawić” itp., Ale ludzie są ludźmi i prawdopodobnie użyją dwa, trzy razy itp. Każde takie zachowanie działa na korzyść kryptoanalityka.

Argumentowałeś, że utrzymanie tajności algorytmu jest bardzo trudne. Całkowicie się zgadzam. Jednak nie o to chodzi w pytaniu, więc ta odpowiedź nie jest pomocna.
@RamRachum: Możesz zaktualizować swoją odpowiedź, aby określić, że nasze początkowe założenia to idealnie kulisty kurczak na samolocie bez tarcia.
Scott: zwykle kurczak zajmuje masę punktową, ponieważ opór powietrza jest naprawdę skomplikowany z tymi wszystkimi piórami i tak. @Ram OK, zaktualizowałem odpowiedź, aby podać kilka ogólnych wskazówek, od czego zacząć od niektórych danych losowych i co stanowi zagrożenie dla danych „losowych”. Zastrzeżenie: jeśli polegasz na tych informacjach, robisz to na własne ryzyko.
@AntonyVennard Dziękujemy za dodanie przydatnych informacji!
Czy któreś z podejść, o których wspomniałeś, zadziałałoby w przykładowym szyfrowaniu, które podałem w moim pytaniu powyżej?
Prawdopodobnie @Ram. Zmiana pozycji pliku na bajt może zmylić część tekstu, ale jeśli masz wystarczająco dużo, wkrótce zorientujesz się, że to wzorzec, szczególnie jeśli pojawiają się części słów. Zasadniczo przerwałbyś to na dwa etapy: 1) słaby algorytm, a następnie 2) ok, mam części słów, a teraz, jaki jest wzór z pozostałymi?
Jeśli nie znasz algorytmu iw zależności od tego, jak dobry jest jego projekt, nie jest to trywialne, ale zostało udowodnione, że potrzebujesz tylko wystarczającej liczby zaszyfrowanych wiadomości lub kilku wyraźnych wiadomości i ich zaszyfrowanych wersji, aby usunąć szum i wnioskować transformację poprzez zastosowanie algorytmu korelacji między zaszyfrowanymi wiadomościami a ich najbardziej prawdopodobnym odszyfrowaniem (przy użyciu znanych wiadomości jako sekwencji uczącej, jeśli są dostępne). Jeśli interesuje Cię matematyka, pomocne może być przeczytanie o teorii informacji, przetwarzaniu sygnałów i uczeniu maszynowym.
Nie wiem, kim jesteś, ale +1 za odniesienie do wziętych.
Ta odpowiedź byłaby pomocna, gdybym miał czelność spróbować rozwiązać Kryptos kilka lat temu: http://en.wikipedia.org/wiki/Kryptos
Tom Leek
2013-03-18 22:30:27 UTC
view on stackexchange narkive permalink

W przeszłości co najmniej raz uzyskano nieznany algorytm „szyfrowania”. Mówię o minojskim skrypcie liniowym B, metodzie pisania używanej na Krecie około 1300 roku pne. Metoda ta została utracona kilka wieków później, wraz ze śmiercią wszystkich praktykujących i ogólnym upadkiem cywilizacji podczas tak zwanych greckich ciemnych wieków. Kiedy archeolodzy zaczęli przesiewać ziemię wokół Knossos i innych miejsc pod koniec XIX wieku, otrzymali tylko kilka tabliczek z nieznanymi znakami, bez pojęcia o systemie pisma, który był używany do ich produkcji.

Ciekawą historią jest to, że metoda liniowa B została odkryta w latach pięćdziesiątych XX wieku przy użyciu tych samych narzędzi analitycznych, które były używane w systemach szyfrowania tamtych czasów. W efekcie zapis uznano za „nieznany algorytm szyfrowania”. Ulegał analizom statystycznym, wiązał wnioski i pewne hipotezy dotyczące tekstu jawnego (w zasadzie założenie, że język bazowy dla odmiany greki). Jest to klasyczna i mistrzowska ilustracja tego, jak kryptoanaliza działa przeciwko „ręcznym kryptosystemom”.


Oczywiście założenie, że algorytm kryptograficzny może być używany i nadal pozostaje tajny, jest niewiarygodne. Przy tym samym założeniu nie ma piractwa gier wideo ani treści multimedialnych. Prawdziwy świat nieustannie przypomina nam, że to nieprawda. Jedynym znanym sposobem, dzięki któremu algorytm może pozostać tajemnicą, jest zabijanie jego wynalazców i praktyków, niszczenie ich aparatury i czekanie kilka stuleci. Ma to kilka niewygodnych skutków ubocznych.

I nawet jeśli w danym konkretnym przypadku szczegóły algorytmu nie wyciekły jeszcze , nie ma sposobu na ilościowe określenie, jak bardzo jest tajny algorytm, tj. ile czasu zajmie odtworzenie algorytmu na odwrotną inżynierię, łapówki lub zdrową kradzież. To jest głównym powodem, dla którego kryptolodzy około 40 lat temu zdecydowali, że klucz i algorytm powinny zostać rozdzielone, przy czym klucz jest tajny, a algorytm nie jest tajny: można określić ilościowo tajność klucza , a nie tajemnica algorytmu.

To daje nam wgląd w Twoje konkretne pytanie. Twój „tajny algorytm” opiera się na pojęciu „manipulacji matematycznej”. Ile z nich jest? Czy potrafisz oszacować lub opisać zbiór „manipulacji matematycznych”? Przekonasz się, że algorytm szyfrowania jest sam w sobie „manipulacją matematyczną”, więc twoje pytanie jest raczej źle zdefiniowane.

+1 ma kilka niewygodnych efektów ubocznych.
Doskonała odpowiedź, jasno pokazuje, dlaczego pytanie jest samo w sobie „błędne”.
Naprawdę nie rozumiem tego wszystkiego. „Prawdziwy świat nieustannie przypomina nam, że to nieprawda”. we wszystkich odpowiedziach. Przykład z życia: używa się odwracalnego algorytmu szyfrowania do ochrony wrażliwych danych użytkownika na serwerze. Oznacza to, że nie może to być algorytm jednokierunkowy, jakiego możemy używać do przechowywania haseł, więc musi mieć klucz. Więc jak dokładnie ochrona tego klucza różni się od ochrony algorytmu? Załóżmy tylko, że facet, który napisał ten algorytm, to ten sam facet, który generuje / zarządza kluczami szyfrującymi. Łapówki, kradzieże itp. Miałyby takie samo zastosowanie do obu metod.
Nie mówię, że to jest droga i nigdy nie użyję czegoś takiego w produkcji, ale wszystkie odpowiedzi są po prostu leniwe, imho.
Algorytm istnieje jako skompilowany kod w plikach, a także kod źródłowy na maszynach programistów, oprogramowanie do kontroli wersji, kopie zapasowe ... i są dokumenty projektowe, takie jak papier drukowany, e-maile oraz w głowie kilku osób. Bardzo trudno byłoby je wszystkie wyśledzić i zapewnić tajemnicę. Kontrastuje to z _key_, który istnieje tylko w pamięci RAM lub, w najgorszym przypadku, w jednym pliku, a nie we wszystkich innych mediach, które właśnie wymieniłem. Możesz uprowadzić wszystkich programistów, żaden z nich nie ma najmniejszego pojęcia o _wartości_ klucza, ponieważ nigdy nie wszedł on do ich mózgu.
@Tom Leek, Kiedy przeczytałem pytanie OP, spodziewałem się zobaczyć interesujące odpowiedzi wyjaśniające, jak trudno jest zaprojektować algorytm, którego nie można złamać przy użyciu nowoczesnych metod kryptoanalizy (na przykład goo.gl/IEkfh), zamiast tego otrzymałem komunikat „Nie możesz utrzymać algorytmu w tajemnicy”. Piszesz „Bardzo trudno byłoby je wszystkie wyśledzić i zapewnić tajemnicę”, ale jest to całkiem możliwe, a powodem, dla którego ludzie tego nie robią, nie jest to, że jest to trudne, ale dlatego, że nawet najbardziej złożone algorytmy domowej roboty będą najbardziej prawdopodobnie mają „dziury”, które mogą zostać wykorzystane przez atakujących nawet bez znajomości algorytmu
Proszę, nie zrozum tego źle, nie przegłosowałem Twojej odpowiedzi i jest ona w wielu przypadkach słuszna i powinienem był napisać własną odpowiedź, jeśli chcę coś zmienić w Twojej. Po prostu ... nie jestem kryptografem i chociaż interesuję się tym tematem, nie mam kwalifikacji, aby udzielić pełnej odpowiedzi na to pytanie i oczekiwałem więcej od jednego z najlepszych użytkowników :)
@XzKto: dobrze, zaprojektowanie algorytmu odpornego na kryptoanalizę to zupełnie inny temat. Pytanie dotyczyło złamania _nieznanego_ algorytmu (podkreślenie już w oryginalnym pytaniu) w przeciwieństwie do znanego algorytmu. Kryptolodzy zakładają, że algorytm jest znany ze wszystkich powodów, które wyjaśniłem; to, jak znane algorytmy wciąż opierają się kryptoanalizie, jest bardzo obszernym tematem, który najlepiej omawiać w [crypto.SE] (http://crypto.stackexchange.com/). Kiedy algorytm jest całkowicie nieznany, cóż ... tak naprawdę nigdy się nie dzieje. Nie ma więc możliwej odpowiedzi poza dowcipami na temat archeologii.
@Tom Leek "Pytanie dotyczyło złamania nieznanego algorytmu" - tak, też o tym pisałem. „Kryptografowie zakładają, że algorytm jest znany” - myślę, że z tym się nie zgadzamy. Nie znam wielu popularnych przypadków inżynierii wstecznej nieznanego algorytmu, ale wiem, że tak się dzieje i są na to sposoby. Nie znalazłem nic dobrego, ale może to być przykład tego, o czym mówię: http://goo.gl/sgvBY. Myślę, że to powinien być powód, dla którego algorytmy warzone w domu są złe, ale patrząc na wszystkie odpowiedzi, przyznaję, że może się myliłem.
Adi
2013-03-18 21:32:28 UTC
view on stackexchange narkive permalink

Aby zaatakować protokół kryptograficzny, masz następujące metody ataku

  • Znany tekst jawny: Próbujesz znaleźć korelacje między posiadanym tekstem jawnym a odpowiadającym mu tekst zaszyfrowany.

  • Wybrany tekst jawny: Szyfrowanie określonego tekstu jawnego i badanie zmian w tekście zaszyfrowanym w miarę zmian tekstu jawnego.

  • Wybrany zaszyfrowany tekst: Odszyfrowanie określonego zaszyfrowanego tekstu i badanie zmian w tekście jawnym i zaszyfrowanym tekście.

  • Znany szyfr tekst: Jeśli masz tylko zaszyfrowany tekst, poniżej znajduje się prosty przykład.

Dawno temu wziąłem udział w zajęciach z kryptografii, na jednym z wykładów uczono kryptonalizacji szyfrów podstawieniowych. To nie jest sposób, w jaki to się teraz robi, ale tutaj rozpoczęła się nauka kryptografii i tak zaczęła się kryptonalizacja.

Powiedzmy, że możesz przejść przez ten zaszyfrowany tekst.

Mx qeoiw wirwi xs qi xlex e lsqi-fvia epksvmxlq mw e zivc feh mhie, fyx xlivi'w sri xlmrk M'q rsx yrhivwxerhmrk.

Nie znasz algorytm, nie znasz klucza. Jak zacząć?

Mx qeoew werwe xs qe xlex e lsqe-fvea epksvmxlq mw e zevc feh mhee, fyx xleve'w sre xlmrk M'q rsx yrhivwxerhmrk. / p>

  • Teraz druga najczęściej używana litera to x została użyta 11 razy -> ~ 11%, więc prawdopodobnie będzie to t . Nasz zaszyfrowany tekst to teraz:

Mt qeoew werwe ts qe tlet e lsqe-fvea epksvmtlq mw e zevc feh mhee, fyt tleve'w sre tlmrk M'q rst yrhivwterhmrk.

  • Teraz zaczynamy dostrzegać wzorce. Zastąpienie i->e i x->t sugeruje, że kluczem może być 4 . Spróbujmy:

Wydaje mi się, że algorytm domowego przygotowania to bardzo zły pomysł, ale jest jedna rzecz, której nie rozumiem.

Ahaa! Mamy to! Teraz wykonałeś swoją pierwszą kryptonalizę. Jest to jeden ze sposobów analizy zaszyfrowanego tekstu.

Nakedible
2013-03-19 01:16:39 UTC
view on stackexchange narkive permalink

Myślę, że nikt nie powiedział tego na głos, więc powiem.

Jeśli kryptografowi podano tylko jeden zaszyfrowany tekst bez możliwości uzyskania więcej, zaszyfrowany tekst jest krótki i nie ma żadnej wiedzy o tekście jawnym , odszyfrowanie tekstu jest prawie niemożliwe. Jedynym sposobem, w jaki jest to nadal możliwe, jest to, że szyfr jest na poziomie trudności szyfru podstawieniowego.

Biorąc pod uwagę ten sam algorytm, jeśli istnieje sposób na uzyskanie większej liczby zaszyfrowanych tekstów na żądanie, jeśli zaszyfrowany tekst jest wystarczający długi lub jeśli istnieją jakieś znane części tekstu jawnego, które mogą pomóc, jest prawdopodobne, że algorytm może zostać złamany przy wystarczającym wysiłku.

Jednak nawet kryptoanaliza wymaga dużo wysiłku w porównaniu z wysiłkiem tworzenia prosty kryptoalgorytm od zera, więc jest mało prawdopodobne, aby ktokolwiek włożył wysiłek, chyba że ma ku temu dobry powód.

Hmm, więc ostatecznym rozwiązaniem bezpieczeństwa byłoby połączenie dobrze znanego algorytmu szyfrowania z algorytmem domowej roboty, prawda? Ponieważ wtedy cieszysz się zaletami obu: Cieszysz się bezpieczeństwem dobrze znanego algorytmu, ale jeśli wykryto w nim lukę, nadal chroni Cię ten domowy. Nie?
Nie jest to nierozsądne stanowisko, jeśli jesteś wystarczająco biegły, aby bezpiecznie łączyć algorytmy bez wprowadzania nowych luk w zabezpieczeniach. Innym wyborem, jeśli jesteś wystarczająco biegły, jest dokonanie trywialnej modyfikacji dobrze znanego algorytmu i utrzymanie modyfikacji w tajemnicy. Jednak w prawdziwym świecie masz prawie 100% gwarancję pogorszenia sytuacji, dodając coś do tego - kryptografia jest trudna, nawet jeśli czasami może się wydawać, że tak nie jest.
Jeśli w szyfrowaniu symetrycznym zastosujesz swój domowy algorytm przed lub po dobrze znanym algorytmie, w żadnym wypadku nie pogorszysz sytuacji. Myślę, że zastosowanie swojego domowego algorytmu po dobrze znanym algorytmie w szyfrowaniu (a więc przed dobrze znanym algorytmem w deszyfrowaniu) byłoby lepsze niż zastosowanie go przed dobrze znanym algorytmem. To, co stwierdzasz w swoim komentarzu, jest prawdopodobnie prawdą, Ram.
Aby podać inny przykład podejścia łączącego `` bezpieczeństwo poprzez zaciemnienie '' i `` dobrze znane algorytmy '': podczas wykonywania kryptograficznego skrótu, zastosowanie funkcji iniekcyjnej (takiej jak solenie lub xorowanie ze stałą) na danych przed lub po haszowanie nie może zmniejszyć bezpieczeństwa, jeśli funkcja skrótu nie ma słabych punktów.
mgjk
2013-03-18 21:40:51 UTC
view on stackexchange narkive permalink

Jeśli masz zamiar rozpowszechniać tajny algorytm, dlaczego zamiast tego nie rozprowadzić po prostu jednorazowych bloków? Jest bezpieczniejszy.

Jeśli nie podoba ci się pomysł z jednorazowymi padami, ponieważ za dużo danych jest przesyłanych przez sieć, to dlaczego zakładasz, że atakujący ma tylko jeden szyfrogram?

Zakładając, że ktoś ma tylko jeden szyfrogram i nie ma algorytmu (dwa błędne założenia), to twój słaby, ale dobrze znany podstawowy system szyfrowania prawdopodobnie nie ma żadnych luk w zabezpieczeniach.

user10211
2013-03-18 20:07:16 UTC
view on stackexchange narkive permalink

Sposobów jest kilka.

Pierwszy i najbardziej oczywisty polega na tym, że osoby atakujące zaatakowały Twój serwer w stopniu, w jakim udało im się uzyskać Twój kod źródłowy. W tym konkretnym przypadku Twój własny schemat jest tak dobry jak nic.

Drugi sposób polega na tym, że atakujący może być w stanie przesłać własne wartości do Twojego algorytmu i zobaczyć wynik przed / po. Jest to znane jako atak na wybrany tekst jawny. Dobry schemat szyfrowania nie powinien być na to podatny. Prawdopodobnie jest to schemat własny.

Nawet bez ataku z użyciem tekstu jawnego, schemat domowy jest zwykle śmiesznie słaby. Laicy tacy jak ty i ja mogą nie być w stanie zrozumieć rezultatów własnego planu. Istnieje jednak klasa bardzo sprytnych ludzi, którzy poświęcają swój czas i wysiłek na łamanie takich schematów kryptograficznych, zwykle w zamian za dobrą wypłatę. Być może słyszałeś o nich, nazywamy ich kryptografami.

Prawdopodobnie jestem tutaj trochę pedantyczny, ale czy nie jest to raczej „tak dobre jak nic” niż bycie „gorszym niż nic”?
@AndySmith Dobra dobra. : P Edytowano.
@RamRachum,, powiedz nam, dlaczego uważasz, że jest to bezużyteczne? Może mając więcej informacji, Terry lub ktoś inny mógłby ci pomóc. O ile wiem, jest to całkiem dobra odpowiedź.
@RamRachum Przepraszam, ale dlaczego jest to bezużyteczne? Nie możesz oczekiwać, że powiem ci, jak przełamać każdy domowy schemat, prawda? Sedno sprawy polega na tym, że domowe schematy są słabe, a bardzo mądrzy ludzie je łamią.
@RamRachum Więc chcesz, żebym udzielił odpowiedzi specyficznej dla twojego algorytmu z, szczerze mówiąc, bardzo nierealistycznymi ograniczeniami? Przepraszam, nie mogę. To byłoby „Zbyt zlokalizowane”. Moja odpowiedź brzmi rozsądnie, dopóki żyjesz w prawdziwym świecie.
@Ram - co powiesz na zachowanie uprzejmości, dobrze?
Gorzej niż nic, ponieważ rodzi fałszywe poczucie bezpieczeństwa. Przynajmniej jeśli nie masz kontroli, nadal racjonalizujesz przyszłe decyzje dotyczące bezpieczeństwa na podstawie tego założenia, zamiast polegać na założeniu, że masz kontrolę, która jest lepsza niż w rzeczywistości.
matugm
2013-03-18 21:25:19 UTC
view on stackexchange narkive permalink

Proszę odpowiedzieć na to pytanie, zakładając, że algorytm jest utrzymywany w całkowitej tajemnicy, pomimo tego, jak trudno jest to osiągnąć w prawdziwym życiu.

Problem polega na tym, że ignorujesz zasadę Kerckhoffsa, która mówi, że bezpieczeństwo schematu szyfrowania nie powinno zależeć od tajności algorytmu.

W każdym razie, jeśli naprawdę jesteś zainteresowany kryptowalutą, powinieneś wziąć kurs taki jak ten.

To jest zasada. Ma na celu pomóc w podejmowaniu decyzji. To nie jest prawo, zasada ani teoria, która jest faktem.
To ** jest ** regułą.
@Rushyo Biorąc pod uwagę, jak dobrze zasada Kerckhoffa sprawdziła się w przypadku nowoczesnych algorytmów, powiedziałbym, że to fakt.
@SmitJohnth Aby była to reguła, wymagałoby to zobowiązania. Możesz zastosować regułę do zasady (tj. Każdy musi przestrzegać zasady Kerckhoffa, aby pracować nad tą biblioteką), ale to nie sprawia, że ​​sama zasada jest regułą.
@TerryChia Zasada może być z powodzeniem stosowana w 100% przypadków i nadal nie staje się faktem. Fakt nie podlega działaniu, tak jak zasada. Możesz uchwalić zasadę, postępując zgodnie z nią, nie możesz uchwalić faktu. Nie mówisz: „Musimy w tym celu zastosować prawa grawitacji”. Mówisz: „Musimy zastosować do tego zasadę Kerckhoffa”. Ktoś może zignorować zasadę Kerckhoffa (na własne ryzyko). Nie mogą ignorować praw grawitacji.
Chloe
2013-03-20 12:09:04 UTC
view on stackexchange narkive permalink

Ponieważ nie zostało to wspomniane, a to pytanie pojawiło się już od jakiegoś czasu ...

Informatyk pomógł rozszyfrować zaszyfrowany tekst XVIII-wiecznego tajnego stowarzyszenia. Tekst był bardzo ozdobny, z symbolami i glifami. Przez stulecia był to problem dla literaturoznawców. Sztuczka polegała na odgadnięciu niektórych liter i tego, co mogą oznaczać, a także odgadnięciu oryginalnego języka, ponieważ niemiecki ma inną częstotliwość liter niż angielski czy włoski.

Oto opis zaszyfrowanego tekstu i jak to odkryto.

http://phys.org/news/2011-10-scientist-mysterious-copiale-cipher.html

http://stp.lingfil.uu.se/~bea/copiale/

http://www.wired.com/dangerroom/2012/11/ ff-the-manuscript / all / (Bardzo długi, bardzo interesujący.)

Wraz z Copiale Cipher, zespół łamiący kod zaczął nawet nie znać języka zaszyfrowanego dokumentu. Mieli jednak przeczucie co do rzymskich i greckich znaków rozpowszechnianych w całym rękopisie, więc wyizolowali je z abstrakcyjnych symboli i zaatakowali jako prawdziwy kod.

„Zajęło to dość dużo czasu i zaowocowało kompletnym porażka - mówi Knight. Po wypróbowaniu 80 języków, zespół kryptograficzny zdał sobie sprawę, że rzymskie znaki są „zerami”, które mają wprowadzić czytelnika w błąd. Przesłanie zawierały abstrakcyjne symbole.

Zespół przetestował następnie hipotezę, że abstrakcyjne symbole o podobnych kształtach reprezentują tę samą literę lub grupy liter. W końcu pojawiły się pierwsze znaczące słowa niemieckiego: „Ceremonie inicjacji”, a następnie „Sekretna sekcja”.



To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 3.0, w ramach której jest rozpowszechniana.
Loading...