prawdopodobnie używasz szyfrowania, w takiej czy innej formie, codziennie. Możesz nie wiedzieć, że jesteś, ale jesteś. I zgaduję, że nie zastanawiałeś się nad tym. Czy masz abonament na podstawie usługi telewizji kablowej lub satelitarnej? Wiesz co, część z tych treści będzie zaszyfrowana. Czy łączysz się ze stronami internetowymi za pomocą https://? To więcej szyfrowania. Ever created a .plik zip z hasłem? Masz to, że używa szyfrowania.,
mógłbym pójść dalej i wymienić dziesiątki innych przykładów codziennego szyfrowania, ale nie będę. co do Androida, obsługuje również szyfrowanie, nie tylko dla sieci z https://, ale także dla Twoich plików i danych. Android 6.0 Marshmallow używał pełnego szyfrowania dysku, podczas gdy Android 7.0 Nougat dodał opcję szyfrowania per-file. Chodzi o to, że jeśli twój telefon powinien wpaść w ręce nieprzyjaznych, twoje prywatne dane są bezpieczne.
czym jest szyfrowanie? Jest to proces pobierania zwykłych danych, w tym tekstu, i przekształcania ich w nieczytelną (przez ludzi lub komputery) formę., Proces szyfrowania opiera się na kluczu, analogią jest tutaj zamek, który potrzebuje klucza i tylko ludzie z kluczem mogą odblokować (odszyfrować) dane i umieścić je z powrotem do pierwotnej postaci. Oznacza to, że każdy, kto zdobędzie Twoje zaszyfrowane dane, nie może ich odczytać, chyba że ma klucz.
Jak to ujął bohater Tom Jericho w znakomitym filmie „Enigma”, ” zamienia zwykłe wiadomości tekstowe w gobbledygook. Na drugim końcu znajduje się inna maszyna, która tłumaczy wiadomość z powrotem na oryginalny tekst.”Szyfrowanie i deszyfrowanie!,
wszystko zaczęło się od Cezara
Sztuka tajnego pisania, co nazwalibyśmy szyfrowaniem, istnieje od co najmniej 2500 lat, jednak najbardziej znanym przykładem ze starożytności jest szyfr zastępczy używany przez Juliusza Cezara do wysyłania wiadomości do Cycerona., Szyfr zastępczy działa w ten sposób, zaczynasz od alfabetu w jednej linii, a następnie dodajesz drugą linię z alfabetem przesuniętym nieco wzdłuż:
A B C D E F G H I J K L M N O P Q R S T U V W X Y ZX Y Z A B C D E F G H I J K L M N O P Q R S T U V W
Jeśli chcesz zaszyfrować słowo „HELLO”, bierzesz pierwszą literę, H, i patrzysz na literę pod nią, która daje Ci E. Następnie E daje B i tak dalej. Zaszyfrowaną formą HELLO jest EBIIL. Aby go odszyfrować, poszukaj E w dolnym rzędzie i zobacz H nad nim, a następnie B na dole, aby uzyskać E nad nim i tak dalej. Zakończ proces, aby się przywitać.,
w tym przypadku „kluczem” jest 3, ponieważ alfabet został przesunięty o trzy w prawo (można też przesunąć w lewo). Jeśli zmienisz NA key, aby powiedzieć 5, otrzymasz to:
A B C D E F G H I J K L M N O P Q R S T U V W X Y ZV W X Y Z A B C D E F G H I J K L M N O P Q R S T U
teraz zaszyfrowaną wersją HELLO będzie CZGGJ. Bardzo różni się od EBIIL. W tym przypadku kluczem jest 5. Magia!
istnieją jednak poważne problemy z tą formą szyfrowania. Przede wszystkim jest tylko 26 kluczy. Być może słyszałeś o ludziach mówiących o kluczach 128-bitowych lub 256-bitowych, cóż, jest to klucz 5-bitowy(tzn., Więc nie zajmie to zbyt długo, aby spróbować wszystkich 26 odmian i zobaczyć, który z nich zaczyna produkować zrozumiały tekst.
Po Drugie, angielski (i inne języki) ma pewne cechy. Na przykład E jest najpopularniejszą literą w języku angielskim, więc jeśli masz dobry kawałek tekstu, możesz zobaczyć, która litera pojawia się najczęściej, a następnie odgadnąć, że jest to E. Przesuń dolny alfabet, aby dopasować E do najczęstszego znaku i prawdopodobnie złamałeś kod. Ponadto istnieje tylko kilka liter, które mogą podwoić się w języku angielskim, jak OO, LL, SS, EE i tak dalej., Ilekroć widzisz podwójne jak II lub GG (z powyższych przykładów), powinieneś najpierw spróbować dopasować te na alfabetach.
kombinacja małego klucza i fakt, że ta sama litera zawsze szyfruje się z tą samą literą w alfabecie szyfrowym oznacza, że jest to bardzo słabe szyfrowanie. A dzisiaj z komputerami wykonującymi ciężką pracę, to jest ponad słabe!,
więcej alfabetów i niezniszczalne szyfrowanie
słabe strony szyfru zastępczego Caesar można nieco złagodzić, używając więcej niż jednego przesuniętego alfabetu. Poniższy przykład można rozszerzyć do 26 przesuniętych alfabetów, z których kilka jest używanych jednocześnie, ale nie wszystkie.
A B C D E F G H I J K L M N O P Q R S T U V W X Y ZZ A B C D E F G H I J K L M N O P Q R S T U V W X YY Z A B C D E F G H I J K L M N O P Q R S T U V W XX Y Z A B C D E F G H I J K L M N O P Q R S T U V WW X Y Z A B C D E F G H I J K L M N O P Q R S T U VV W X Y Z A B C D E F G H I J K L M N O P Q R S T U
więc jeśli ustawimy klucz na WVY, oznacza to, że najpierw użyjemy alfabetu zaczynającego się od W, potem tego zaczynającego się od V i na końcu tego zaczynającego się od Y. to jest powtarzane, aby zakodować całą wiadomość. Więc HELLO stałoby się DZJHJ., Zauważ, że teraz podwójne L W HELLO nie jest zakodowane jako ten sam znak, jest teraz J, a następnie H. również, pierwsze J w zaszyfrowanym tekście jest kodem dla L, podczas gdy drugie on jest kodem dla O. więc J teraz nie zawsze reprezentuje tę samą literę zwykłego tekstu.
wersja tego pomysłu, zawierająca 26 alfabetów, jest podstawą szyfru Vigenère 'a, który został opublikowany w XVI wieku przez Blaise' a de Vigenère ' a. Podobny pomysł opisał również Giovan Battista Bellaso w 1553 roku., Szyfr Vigenère 'a pozostał niezniszczalny przez 300 lat, dopóki nie został złamany przez Charlesa Babbage' a, a następnie przez Friedricha Kasiskiego. Sekretem złamania szyfru Vigenère ' A jest zrozumienie, że ostatecznie te same słowa mogą być kodowane za pomocą tych samych liter, ponieważ te same alfabety są używane wielokrotnie. Tak więc słowo ” i ” może być zakodowane inaczej, gdy tylko się pojawi, ale ostatecznie zostanie zakodowane ponownie za pomocą tych samych liter. Powtarzanie jest zazwyczaj upadkiem szyfru.,
powtarzanie jest słabością szyfru Cezara, Vigenère ' a i wszystkich wariantów, ale istnieje jeden sposób na użycie szyfru alfabetu do stworzenia niezniszczalnego tajnego kodu bez powtórzeń, nazywa się to jednorazowym pad. Chodzi o to, że zamiast używać przesuniętego alfabetu, używa się losowej sekwencji liter. Ta sekwencja musi być naprawdę losowa i musi mieć taką samą długość jak wiadomość.
I S T H I S U N B R E A K A B L EP S O V Y V U B M W S P A H Q T D
zamiast prostego zastępowania tym razem używamy dodawania, z przekrętem., Każda litera alfabetu ma przypisaną liczbę, A to 0, B to 1, C to 2 i tak dalej. I jest dziewiątą literą alfabetu, co oznacza, że ma wartość 8. P (litera pod nią na naszym jednorazowym szyfrze) 15. 8 + 15 = 25 co oznacza X. drugą literą naszej wiadomości jest S, która ma wartość 18. Tak się składa, że S jest również literą na naszej jednorazowej podkładce (co wcale nie jest problemem). 18 + 18 = 36. Teraz jest twist, nie ma 36 litery alfabetu. Wykonujemy więc tzw. operację modułową., Zasadniczo oznacza to, że podzieliliśmy wynik przez 26 (liczbę liter w alfabecie) i wykorzystaliśmy resztę. 36 / 26 = 10. Literą o wartości 10 jest K. jeśli nadal to robisz, ostateczna zaszyfrowana wiadomość to:
X K H C G N O O N N W P K H R E H
powodem, dla którego ten kod jest niełamliwy, jest to, że kiedykolwiek używasz klucza (losowego ciągu) tylko raz. Oznacza to, że każdy, kto próbuje dekodować wiadomość, nie ma punktu odniesienia i nie ma powtórzeń. Następna wiadomość do wysłania będzie używać zupełnie innego losowego klucza i tak dalej.,
największy problem z pad jednorazowych, jest uzyskanie kluczy do drugiej strony, aby mogli odszyfrować wiadomość. Tradycyjnie robiono to za pomocą książki w formie notatnika, z różnymi kodami na każdej stronie. Które strony były w użyciu zmieniały się każdego dnia, a po użyciu kodu można go wyrwać z podkładki i wyrzucić. Jednak te klocki muszą być transportowane w bezpieczny sposób. Bo jeśli ktoś inny dostanie kody, szyfrowanie może zostać złamane., To w zasadzie oznaczało, że trzeba spotkać się z drugą stroną przed strony i uzgodnić, które Kody będą używane i kiedy. Jest to najbezpieczniejsza metoda, ale jest również najbardziej uciążliwa, a na pewno nie jest to wykonalne rozwiązanie dla dzisiejszego współczesnego świata cyfrowego.
Epoka cyfrowa
w XX wieku szyfrowanie stało się zmechanizowane, najbardziej znanym przykładem jest maszyna Enigma używana przez nazistów podczas ii Wojny Światowej. jednak po wojnie szyfrowanie zostało skomputeryzowane., Istnieją trzy duże korzyści dla skomputeryzowanej kryptografii:
- komputery są elastyczne, w przeciwieństwie do mechanicznych skrzynek, komputery mogą być zaprogramowane do wykonywania wielu różnych operacji na wiadomości, a liczba i złożoność tych operacji może być stosunkowo szybko zmieniona.
- prędkość.
- Komputery zajmują się cyframi binarnymi, a nie tylko literami.
punkty 1 i 2 są bardzo ważne, szczególnie przy porównywaniu komputerów z mechanicznymi metodami szyfrowania. Jednak zmiana paradygmatu polega na tym, że komputery zajmują się cyframi, a nie literami., Oznacza to, że szyfrowanie może być stosowane do każdego typu danych. Wiadomość tekstowa, Zdjęcie, plik audio, film, baza danych, pliki na smartfonie i tak dalej.
wraz z przejściem z liter na binarne nastąpiła zmiana sposobu szyfrowania. Całe litery nie muszą być już szyfrowane, ale zamiast tego jedynki i zera mogą być manipulowane, aby uzyskać nowe sekwencje. Słowo HELLO w 8-bitowym ASCII to 0100100001000101010011000100110001001111. Stąd binarne mogą być manipulowane na wiele różnych sposobów. Może być dzielona, przesuwana, dodawana, mnożona, cokolwiek.,
metoda używana do przetwarzania jedynek i zer jest znana jako algorytm kryptograficzny i istnieje wiele różnych typów algorytmów. Głównymi cechami algorytmu szyfrowania są jego bezpieczeństwo (czy można go złamać) i wydajność (jak długo trwa kodowanie lub dekodowanie danych).
szyfry strumieniowe są jak pady jednorazowe, ponieważ dane nie są szyfrowane tylko za pomocą jednego klucza, ale raczej Sekwencja pseudolosowych liczb, która opiera się na kluczu. Różnica między pad jednorazowym a szyfrem strumieniowym polega na tym, że w przypadku pad jednorazowego klucz musi być naprawdę losowy. Z szyfrów strumieniowych za pomocą tego samego klucza oznacza, że masz tę samą sekwencję cyfr, to jest to, co umożliwia dekodowanie wiadomości., Jednak bez klucza Sekwencja wygląda losowo i dlatego jest trudna do złamania.
słabością RC4 było to, że w pewnych okolicznościach i pod pewnymi warunkami (głównie wtedy, gdy te same dane były wielokrotnie szyfrowane) można odgadnąć, które liczby mogą być następne w sekwencji. To odgadnięcie zmniejsza liczbę możliwych kombinacji i pozwala na użycie ataku brute force (gdzie każda kombinacja jest wypróbowana). Aby atak zadziałał, potrzebne jest wiele danych. RC4 NO MORE attack musi zbierać zaszyfrowane dane o wartości 75 godzin na podstawie 4450 żądań na sekundę.,
innym głównym typem szyfru jest szyfr blokowy. Działa to poprzez dzielenie danych na bardziej zarządzalne bloki, powiedzmy 64-bitowe. Każdy blok jest przetwarzany kilka razy, znany jako rund (jak w boksie). Dla każdej rundy blok jest podzielony na dwie równe części, lewą i prawą. Prawa część pozostaje nietknięta, podczas gdy lewa część jest szyfrowana za pomocą specjalnej funkcji, zwanej funkcją okrągłą. Funkcja round pobiera dwa wejścia, klucz i prawą część (część, która została nietknięta). Wynik z funkcji round jest następnie „dodawany” do lewej części za pomocą XOR.,
Ten model jest znany jako szyfr Feistela, nazwany na cześć jego wynalazcy Horsta Feistela, który pracował nad szyfrowaniem w IBM. Jego praca ostatecznie doprowadziła do opracowania standardu szyfrowania danych (DES). W 1977 roku DES stał się oficjalnym standardem szyfrowania w Stanach Zjednoczonych i został przyjęty na całym świecie. DES wykorzystuje 16 rund pracujących na 64-bitowych blokach. Problem z DES polega na tym, że NSA ograniczyła rozmiar klucza do 56 bitów. Chociaż w 1977 r. było to wystarczające, pod koniec lat 90.organizacje pozarządowe stały się możliwe do złamania zaszyfrowanych wiadomości.,
żargon BUSTER
Exclusive OR – XOR) – jest to logiczna operacja na poziomie bitowym, która jest stosowana do 2 bitów wejściowych A i B. Exclusive OR zwraca true lub false (1 lub 0) Na pytanie „A lub B, ale nie, A i B”. Można o tym myśleć jako „jedno lub drugie, ale nie jedno i drugie”. Tak więc, jeśli A jest 1, A B jest 0, to jest to jedno lub drugie, więc wynikiem jest 1 (prawda). Ten sam wynik odnosi się do A jest 0, A B jest 1. Ale jeśli A jest 0, A B jest 0, to wynikiem jest 0 (false), ponieważ oba mają tę samą wartość. False jest również podane dla A jest 1 i B jest 1.,
ale prawdziwa magia XOR polega na tym, że jest odwracalna. If a XOR B = C then B XOR C = A, and a XOR C = B. Jest to bardzo ważne dla szyfrowania, ponieważ oznacza to, że dane mogą być szyfrowane (gdzie a to dane) za pomocą klucza (B), aby uzyskać zaszyfrowane dane (C). Później zaszyfrowane dane mogą być odszyfrowane przez XOR go z kluczem ponownie, aby uzyskać oryginalne dane. Powodem, dla którego XOR jest używany w połączeniu ze skomplikowanymi funkcjami okrągłymi i operacjami zmiany bitów, jest to, że sam XOR może zostać złamany za pomocą analizy częstotliwości (ze względu na stale powtarzający się klucz).,
w odpowiedzi na słabe punkty DES zaproponowano nowy standard o nazwie Triple DES (3DES). Który w zasadzie szyfrował dane trzy razy DES, ale za pomocą trzech różnych kluczy. 3DES oferował sposób na zwiększenie rozmiaru klucza z 56 bitów do 168 bitów bez potrzeby projektowania zupełnie nowego algorytmu szyfru blokowego. Ze względu na pewne szczegóły techniczne, efektywny klucz to 112 bitów, ale jeśli masz maszynę, która może złamać DES w ciągu 1 minuty, potrzeba tej samej maszyny około 260 658 lat, aby złamać potrójny klucz DES.,
chociaż DES służył swojemu celowi przez prawie 25 lat, ograniczona długość klucza oznaczała, że nadszedł czas na inny standard szyfrowania. W 2001 roku Narodowy Instytut Standardów i technologii (NIST) opublikował Advanced Encryption Standard (AES). Nie jest to szyfr Feistela, ale raczej sieć substytucyjno-permutacyjna. Nadal używa bloków i rund, podobnie jak DES, jednak podczas każdej rundy kolejność bitów w bloku jest zamieniana, a wynik jest łączony z kluczem za pomocą XOR.
AES używa kluczy 128, 192 lub 256 bitów i działa na blokach 128-bitowych., Liczba użytych rund zależy od rozmiaru klucza. Minimum to 10, które jest używane dla kluczy 128-bitowych, a maksimum to 14, które jest używane dla kluczy 256-bitowych.
AES, Android i architektura ARMv8
AES jest sercem podsystemów szyfrowania w systemie Android. W przypadku Androida 5.0 i Androida 6.0 Google zobowiązało się do używania AES z co najmniej 128-bitowym kluczem dla urządzeń obsługujących pełne szyfrowanie dysku., Z Androidem 7, Google przeniósł się do file based encryption (FBE), który pozwala na szyfrowanie różnych plików za pomocą różnych kluczy, umożliwiając jednocześnie odszyfrowywanie plików niezależnie. Wygląda na to, że FBE w Androidzie 7 używa 256-bitowego AES.
Kiedy ARM dokonał przejścia z 32-bitowej NA 64-bitową, zdefiniował nową wersję swojej architektury zestawów instrukcji o nazwie ARMv8. Oprócz zdefiniowania zestawu instrukcji dla 64-bitowych układów ARM, dodano również nowe instrukcje implementacji części algorytmu AES w sprzęcie. Podczas każdej rundy różne bity są wymieniane i zastępowane., Sposób manipulowania bitami jest dobrze zdefiniowany (i jest częścią standardu), więc rozszerzenia AES w ARMv8 umożliwiają te części szyfrowania w sprzęcie, a nie w oprogramowaniu.
rezultatem jest błyskawiczne szyfrowanie, które powinno mieć znikomy wpływ na ogólną wydajność systemu. Implementacja AOSP szyfrowania opartego na plikach wykorzystuje AES-256 i wymaga wydajności co najmniej 50MB/s.
Kryptografia klucza publicznego i podsumowanie
większość tego, co do tej pory omawialiśmy, jest znana jako szyfrowanie symetryczne., Aby zaszyfrować i odszyfrować wiadomość, zarówno nadawca, jak i odbiorca muszą znać tajny klucz. Istnieje forma szyfrowania zwana szyfrowaniem asymetrycznym, w której istnieją dwa klucze, jeden do szyfrowania wiadomości, a drugi do ich odszyfrowywania. Klucz szyfrujący może być swobodnie opublikowany dla każdego, kto chce wysłać wiadomość do odbiorcy, jednak klucz deszyfrujący musi pozostać tajny, ale musi być znany tylko odbiorcy. Oznacza to, że istnieje klucz publiczny i klucz prywatny. System ten jest podstawą działania zabezpieczeń w Internecie, funkcjonowania protokołu https://., Jednak to historia na inny dzień!
na zakończenie chcę dodać zastrzeżenie. Szyfrowanie jest złożonym tematem i szyfrowanie ma o wiele więcej niż napisałem tutaj.