Kryptologia

author
18 minutes, 36 seconds Read
Kryptologiczne rzeczy? Sounds fun.

Unit Goals

To understand, pretty well, what cryptography and cryptanalysis is all about, and especially to know what it can and cannot guarantee.

Background

Alice and Bob can be people but also clients and servers, peer computers, data stores, network routers, etc. Mallory może podszyć się pod jednego z uczestników, dodać, zmodyfikować lub usunąć rzeczywiste wiadomości, porwać połączenie, dokonać odmowy usługi, wstrzyknąć złośliwe oprogramowanie itp.

Cele:

  • Poufność: Odzyskanie $m$ powinno kosztować Eve więcej niż $m$ jest warte.
  • Uwierzytelnianie: Bob powinien być w stanie zweryfikować, że to Alicja wysłała $m$.
  • Integralność: Bob powinien być w stanie zweryfikować, że $m$ nie zostało naruszone.
  • Nonrepudiation: Alice nie powinna być w stanie zaprzeczyć wysłaniu $m$.

Najlepsze kryptosystemy zakładają, że Eve i Mallory znają $E$, $D$, $c$ oraz, jeśli $k_e \neq k_d$, to również $k_e$. Większość kryptosystemów nie polega na tym, że ich algorytmy są tajne, ponieważ:

  • Jeśli twój tajny algorytm jest zagrożony (ktoś mógłby opuścić twoją grupę), musisz go zmienić, a to jest o wiele trudniejsze niż tylko zmiana klucza!
  • Algorytmy publiczne mogą być poddane tysiącom ekspertów szukających wad, więc masz pewien stopień zaufania do tych, które wytrzymują kontrolę.

Dalsza lektura:Security Through Obscurity,Kerchoff’s Principle i ta dyskusja.

Badanie kryptologii obejmuje projektowanie różnych szyfrów, metody kryptoanalizy (ataki), wymianę kluczy, uwierzytelnianie kluczy, haszowanie kryptograficzne, podpis cyfrowy i kwestie społeczne (prawne, polityczne, itp.). Zobacz tematy w Wikipedii na stronie cryptography.

DON’T DO THIS STUFF ON YOUR OWN IN REAL APPLICATIONS

Sure, it’s fine to play around at home, but don’t EVER try to roll your own cryptography for anything real. Zostaw to profesjonalistom. Jeśli sam staniesz się profesjonalistą, wtedy, mmmmm, w porządku.
To był ważny komunikat dla służb publicznych.

Definicje

Słowa, które warto znać:

Kryptografia Sztuka i nauka tworzenia szyfrów. Kryptoanaliza Sztuka i nauka łamania szyfrów, tzn. wydobywania $m$ z danych $c$, $E$, $D$ i ewentualnie $k_e$. Kryptologia Nauka o kryptografii i kryptoanalizie.

Ćwiczenie: Dowiedz się czegoś o steganografii. Czym różni się ona od kryptografii?

Kryptosystem Określony zestaw algorytmów i protokołów do szyfrowania, deszyfrowania i generowania kluczy. Przykłady: Kryptosystem Cramer-Shoup, Kryptosystem Rabin, Kryptosystem Benaloh, Kryptosystem RSA. System kryptograficzny Każdy system, który wykorzystuje kryptografię. Szyfr Algorytm używany w kryptosystemie.

Ćwiczenie: Czym różni się „kod” od „szyfru”? Czy szyfry są bezpieczniejsze od szyfrów? Dlaczego nie są tak często używane?

Zamęt Właściwość posiadania relacji pomiędzy tekstem jawnym, szyfrogramem i kluczem tak skomplikowanych, że stają się bezużyteczne dla kryptoanalityka. Dyfuzja Właściwość polegająca na tym, że statystyczne wzorce w tekście jawnym rozprzestrzeniają się szeroko w szyfrogramie.

Timelines

If you like history….

  • Wikipedia’s History of Cryptography Article
  • Wikipedia’s Timeline
  • Carl Ellison’s Timeline

Kinds of Ciphers

Here are some useful categories of ciphers. Należy zauważyć, że dany szyfr może należeć do więcej niż jednej z tych kategorii.

  • Klasyczny: Szyfr wystarczająco łatwy do wykonania ręcznie, zwykle oparty na znakach. Zwany również ręcznym.
  • Nowoczesny: Dość dużo każdy szyfr, który nie jest klasyczny.
  • Substytucja: Każdy znak z plaintext jest zastąpiony przez jeden lub więcej znaków, aby ciphertext.
  • Transpozycja: Znaki w tekście jawnym są przekształcane w celu utworzenia szyfrogramu.
  • Monoalphabetic: Szyfr substytucyjny, w którym znak tekstu jawnego jest zawsze zastępowany przez ten sam znak.
  • Polialfabetyczny: Szyfr substytucji, który zasadniczo wykorzystuje wiele monoalfabetycznych mapowań substytucji.
  • Homophonic: Substytucja, w której jeden znak może mapować do jednego z zestawu znaków.
  • Poligraficzny: Podstawienie bloków znaków za bloki znaków.
  • Okresowy: Szyfr polialfabetyczny, w którym schemat podstawienia powtarza się.
  • Nieokresowy: Samoobjaśniający się, jeśli rozumiesz okresowy.
  • Blokowy: Szyfrowanie odbywa się nie na znak, ale na bloki znaków.
  • Strumień: Szyfr działający na strumieniu danych o nieznanej długości, zwykle zawierający sprzężenie zwrotne.
  • Tajny klucz: Szyfr, w którym $k_e$ i $k_d$ są takie same lub trywialnie pochodne od siebie; wymaga, aby strony spotkały się w tajemnicy, aby wymienić klucze, których będą używać. Nazywany również symetrycznym.
  • Klucz publiczny: Schemat, w którym klucz szyfrowania każdego jest publicznie znany, ale jego klucz deszyfrowania jest utrzymywany w tajemnicy. Nazywany również asymetrycznym.

Kryptografia klucza tajnego

Szyfry z kluczem tajnym (a.k.a. klucz symetryczny) są znacznie szybsze niż szyfry z kluczem publicznym, ale zarządzanie kluczem może być ogromnym problemem.

  • Jeśli $n$ osób w grupie musi się komunikować, potrzebują $frac{n(n-1)}{2}$ kluczy.
  • Klucze muszą być dystrybuowane bezpiecznie (w tajemnicy).
  • Klucze muszą być przechowywane w bezpiecznym miejscu.
  • Klucze powinny być często zmieniane, co przyczynia się do bólu głowy związanego z dystrybucją.

UWAGA

W poniższych przykładach opartych na znakach, założymy (bez utraty ogólności) alfabet 26 symboli (A..Z).

Szyfr Cezara

Całkowicie żałosny i niezabezpieczony szyfr według współczesnych standardów. Klucz szyfrujący $k_e$ jest małą liczbą całkowitą, a $k_d = k_e$. Aby zaszyfrować, dodaj $k_e$ do każdego znaku plaintext; aby odszyfrować, odejmij.

Przykład: Dla k=5, ATTACKATDAWN staje się FYYFHPFYIFBS

Trywialne do złamania: po prostu zgadnij $k_e$.

Substytucja monoalfabetyczna

Zamiast po prostu dodawać stałe przesunięcie do każdego znaku, możesz wstępnie obliczyć tabelę substytucji, generując losową permutację swojego alfabetu. Na przykład:

 ABCDEFGHIJKLMNOPQRSTUVWXYZ MQHPSVJYCURFTBILAKWNGZDOEX

Teraz ATTACKATDAWN jest teraz MNNMHRMNPMDB.

Nie złamiesz tego przez zgadywanie klucza (istnieje $n!$ możliwych kluczy), ale analiza częstotliwości może złamać każdy monoalfabetyczny szyfr zastępczy, pod warunkiem, że wiadomość jest wystarczająco długa.

Dla technik, których kluczem jest permutacja, jednym ze sposobów na ułatwienie zapamiętania klucza jest wybranie frazy, ułożenie jej unikalnych liter, a następnie wypełnienie brakujących liter w kolejności. Na przykład, PREMATURE OPTIMIZATION IS THE ROOT OF ALL EVIL daje takie odwzorowanie substytucji:

 PREMATUOIZNSHFLVBCDGJKQWXY

Homofoniczna substytucja

Każda litera tekstu jawnego odwzorowuje jeden lub więcej symboli w szyfrogramie. Liczba celów powinna być proporcjonalna do ich częstotliwości (aby pokonać analizę częstotliwościową). Przykład:

 A 12 15 36 50 56 70 81 95 B 51 84 C 16 44 65 D 04 06 48 82 E 01 17 19 34 47 49 58 60 67 77 85 90 F 13 27 G 09 28 H 26 42 53 59 68 71 I 35 73 76 86 91 96 J 18 K 07 L 29 40 54 87 M 25 30 N 21 61 62 69 74 94 O 02 03 08 10 57 75 93 P 41 98 Q 97 R 32 38 43 45 80 83 S 14 22 39 79 89 99 T 00 20 23 33 46 52 72 78 88 U 11 64 66 V 37 W 63 92 X 31 Y 24 55 Z 05

Aby zaszyfrować, wybierz losowo spośród możliwości. Przykład, jednym z możliwych szyfrów ATTACKATDAWN jest

 56 78 20 95 65 07 12 72 06 50 92 61

Simple Vigenère

Szyfr znany jako prosty szyfr Vigenère’a z przesunięciem nie został w ogóle wymyślony przez Vigenère’a… wydaje się, że po raz pierwszy opisał go Giovan Battista Bellaso. Kluczem jest ciąg znaków, który dodajemy do tekstu jawnego za pomocą dodawania modularnego, jak w tym przykładzie (A=0, B=1, C=2, …, Z=25):

 Plaintext: TAKEACOPYOFYOURPOLICYTONORMAWILCOXONTHETHIRDFLOOR Key: QUARKQUARKQUARKQUARKQUARKQUARKQUARKQUARKQUARKQUAR Ciphertext: JUKVKSIPPYVSOLBFILZMONOEYHGANSBWOOYDNHVDXCRUPBIOI

Do ręcznego generowania szyfrogramu można użyć koła szyfrowego lub tabula recta.

Ten schemat nie jest bezpieczny, ponieważ klucz się powtarza. Jeśli długość klucza może być określona, kryptoanalityk może wykonać wiele analiz częstotliwości (po jednej dla każdej wartości przesunięcia w kluczu). Metody określania długości klucza to metoda Kaisiski’ego i test Friedmana.

Dla danych binarnych (tj. sekwencji bitów) dodawanie modularne base-2 jest po prostu prostym xor. Przykład:

 Plaintext: 0110000101010000111101001010101010010000001111101 Key: 0000011100000111000001110000011100000111000001110 Ciphertext: 0110011001010111111100111010110110010111001110011

Auto-Key Vigenère

Vigenère rzeczywiście stworzył autokey szyfr, który jest silniejszy, ponieważ klucz nigdy nie powtarza. Zamiast tego „klucz” składa się z frazy kluczowej, po której następuje plaintext, jak to:

 Plaintext: TAKEACOPYOFYOURPOLICYTONORMAWILCOXONTHETHIRDFLOOR Key: QUARKTAKEACOPYOFYOURPOLICYTONORMAWILCOXONTHETHIRD Ciphertext: JUKVKVOZCOHMDSFUMZCTNHZVQPFOJWCOOTWYVVBHUBYHYSWFU

Ten użył plaintext jako część klucza. Możesz również użyć szyfrogramu. See how?

Modern Auto-Key Ciphers

You still can crack autokey Vigenère ciphers by linguistic analysis, because the key contains text and is thus likely to have high-frequency letters. Nowoczesne szyfry auto-key generują wartości przesunięcia za pomocą generatora liczb losowych. Klucz stanowi ziarno dla generatora.

Ćwiczenie: Zaimplementuj szyfr autokey w wybranym przez siebie języku programowania.

One Time Pad

Jeśli klucz:

  • jest tak długi lub dłuższy niż kodowana wiadomość
  • jest naprawdę losowo generowany
  • jest używany raz i tylko raz

to masz prowdopodobnie bezpieczny szyfr zwany one time pad. Twój rzeczywisty algorytm może używać substytucji polialfabetycznej lub nawet prostego xoringu wiadomości z kluczem, tak długo jak spełniasz trzy powyższe kryteria.

Podkładka jednorazowa nigdy nie może być złamana. Jest to doskonały schemat szyfrowania, w każdym razie z matematycznego punktu widzenia.

Ćwiczenie: Dlaczego zatem one time pad nie są powszechnie stosowane, skoro są najbezpieczniejszymi możliwymi szyframi?

Playfair

Jest to przykład poligraficznego szyfru substytucyjnego.Zastępuje on pary znaków. Kluczem jest permutacja {A..I,K..Z}, na przykład:

 Z C B M L G D A Q E T U O K H F S X V N P I Y R W

Aby zaszyfrować, wypisz tekst jawny (bez spacji i interpunkcji), wstawiając znak X między podwójne litery i na końcu, jeśli to konieczne, aby tekst miał równą długość.Następnie dla każdej pary liter:

  • Let $(a,b)$ be the row and column of the first character and $(c,d)$ be the row and column of the second.
  • If $a \neq c$ and $b \neq d$ then return $(a,d)(b,c)$.
  • Jeśli $a = c$ to zwróć $(a,(b+1) \bmod 5)(c,(d+1) \bmod 5)$.
  • Jeśli $b = d$ to zwróć $((a+1) \bmod 5,b)((c+1) \bmod 5,d)$.
Przykład: THEN ATTACK FROM THE EASTTH EN AT XT AC KF RO MT HE XE AS TXUT HW GO FO DB TV YK ZK NH NA DX OFUTHWGOFODBTVYKZKNHNADXOF

Deszyfrowanie przebiega według odwrotnych reguł. Szyfr Playfaira jest dość niepewny.

Cztery kwadraty

Szyfruje digrafy podobnie jak Playfair, ale nieco mocniej, ponieważ pozwala na podwójne litery i nie daje odwróconych digrafów szyfrogramu dla odwróconych digrafów szaty graficznej. Przykład

 a b c d e G I V E M f g h i k L B R T Y l m n o p O D A H C q r s t u F K N P Q v w x y z S U W X Z P R E M A a b c d e T U O I Z f g h i k N S H F L l m n o p V B C D G q r s t u K Q W X Y v w x y z
Przykład: THEN ATTACK FROM THE EASTTH EN AT TA CK FR OM TH EE AS TXNI VL EV FM MO BV DF NI MA VV NX

Okay, więc nieco silniejszy niż Playfair, ale co z tego? Komputery mogą złamać takie rzeczy w ciągu sekund, a może minut (biorąc pod uwagę wystarczającą ilość szyfrogramu).

Simple Block Transposition

Najprostszy szyfr transpozycyjny rozbija wiadomość na bloki o rozmiarze n, a następnie szyfruje każdy blok zgodnie z permutacją $(1..n)$.

Przykład: Dla klucza $(4,1,6,3,2,5)$ wiadomość GETTHATHEALTHINSPECTOR staje się TGATEHATTEHLSHENIPRCOT.

Columnar Transposition

Wypisujemy wiadomość wiersz po wierszu w kratkę, a następnie odczytujemy ją kolumnami. Całkowicie niezabezpieczone. Kluczem jest tylko liczba rzędów. Zgadnij.

Płot z szyn

Płot z szyn nie jest lepszy od poprzedniego, tylko zabawniejszy. Kluczem jest liczba szyn, na których piszesz tekst jawny w górę i w dół, generując szyfrogram przez odczytywanie jednej szyny na raz.

Przykład: Aby zakodować "fill out and file a WS2475 form" na 4 szynach:

 f t l 4 m i u a i e 2 7 r l o n f a s 5 o l d w f

następnie odczytujesz szyfrogram "ftl4miuaie27rlonfas5oldwf". To jest banalne do złamania. Wystarczy zgadnąć $k$.

Połączenie Substytucji i Transpozycji

Transpozycja sama w sobie jest bardzo słaba; substytucja jest słaba; połączenie ich jest lepsze. Można mieszać wiele klasycznych szyfrów substytucyjnych z różnymi transpozycjami, lub używać specjalnych szyfrów kombinacyjnych, takich jak bifid. Również większość słynnych maszyn wirnikowych i nowoczesnych szyfrów używa tej kombinacji; w rzeczywistości stosują one te transformacje wiele razy.

Bifid

Ten zastępuje litery ich współrzędnymi w siatce i wykonuje transpozycję kolumnową na współrzędnych. Przykład:

 Z C B M L G D A Q E T U O K H F S X V N P I Y R W

Wpisujemy współrzędne (wiersz, kolumna) pod każdą literą tekstu jawnego (np, „A” jest w rzędzie 1, kolumna 2; „T” jest w rzędzie 2, kolumna 0, itd.):

 ATTACKATDAWN 122102121143 200213201244

Potem odczytaj w rzędach, grupuj po dwójkach i sprawdź litery szyfrogramu:

 122102121143200213201244 A U B A D R T B Q T A W

Trifid

Jak Bifid, ale na sześcianie. Przykład:

 Z C B M L F V N P G D A Q E X I R W T U O K H S Y . J

Aby zaszyfrować, najpierw zapisz współrzędne:

 ATTACKATDAWN 000001000022 122102121110 200210201221
 000001000022122102121110200210201221 Z C Z O S F H Q V I N .

Enigma

Enigma była słynną niemiecką maszyną rotacyjną z czasów II wojny światowej (właściwie rodziną maszyn).Większość wersji implementowała polialfabetyczny szyfr substytucyjny z okresem 16900 plus plugboard do scramblingu (transpozycji). Klucz składał się z kolejności rotorów, pozycji startowej każdego rotora, ustawień pierścienia i ustawień plugboardu (około 1,6 × 1020 możliwości). Każdego dnia (mniej więcej) pojawiał się nowy klucz, publikowany wcześniej w książkach kodowych.

Aliantom udało się go złamać dzięki kilku słabym punktom w jego konstrukcji…

  • Żadna litera nie szyfrowała sama do siebie
  • Samowzajemność oznaczała, że było mniej możliwości ustawienia scramblera

…ale co ważniejsze, wielu słabościom w sposobie jego użycia…

  • Było naprawdę łatwo znaleźć szopki. Większość wiadomości zaczynała się od raportu o pogodzie.
  • Wcześniej klucze wiadomości pojawiały się dwa razy z rzędu.

…oraz poprzez zdobywanie ksiąg kodowych z przechwyconych statków.

O tym jak złamano Enigmę można przeczytać w NSA,oraz na Wikipedii.

Nowoczesne metody kryptograficzne

Teraz, gdy mamy teorię informacji Shannona, bardzo potężne komputery i wieki teorii i praktyki za sobą, większość nowoczesnych technik:

  • działają na ciągach bitów, a nie znaków
  • są ostrożne, aby całkowicie zamaskować wzorce i nadmiarowości w tekście jawnym
  • używają losowych kluczy (które również mogą być ponownie użyte)
  • zapewniają, że bardzo niewielkie zmiany w tekście jawnym wpływają na dużą część szyfrogramu (i odwrotnie). Nazywa się to efektem lawiny.

Dodatkowo, dobrze jest, jeśli szyfr jest:

  • wydajny
  • odporny na błędy

Większość szyfrów to albo szyfry blokowe, albo szyfry strumieniowe. Szyfry blokowe wymagają paddingu i mogą działać w różnych trybach (Zobacz książkę Schniera lub artykuł w Wikipedii.)

  • ECB – Electronic Codebook
  • CBC – Cipher Block Chaining
  • CFB – Cipher Feedback
  • OFB – Output Feedback
  • CTR – Counter
  • BC – Block Chaining
  • PCBC – Propagating Cipher Block Chaining
  • CBCC – Cipher Block Chaining with Checksum

DES

At Wikipedia

IDEA

At Wikipedia

RC4

At Wikipedia

RC6

At Wikipedia

Blowfish

At Wikipedia

Twofish

At Wikipedia

AES

At Wikipedia

AES jest nowym standardem, zastępującym DES. Został zwycięzcą konkursu (w 2001 roku), gdzie został zgłoszony pod nazwą Rijndael, pokonującRC6, Serpent, MARS i Twofish.

Wymiana klucza

Diffie i Hellman (laureaci Nagrody Turinga z 2015 roku) oraz ich przyjacielMerkle pokazali w 1976 roku, że możliwe jest, aby dwie osoby wymieniały tajny klucz bez konieczności rzeczywistego spotkania w tajemnicy:

  • Alice wybiera liczbę pierwszą $n$ i wysyła ją w sposób jawny do Boba
  • Alice wybiera liczbę pierwszą mod $n$ (jak znaleźć), zwaną $g$, i wysyła ją w sposób jawny do Boba
  • Alice wybiera tajną liczbę całkowitą $a$, i wysyła $g^a ^bmod n$ w sposób jawny do Boba
  • Bob wybiera tajną liczbę całkowitą $b$ i wysyła $g^b ^bmod n$ w sposób jawny do Alice
  • Alice oblicza ($g^b ^bmod n)^a ^bmod n$, a Bob oblicza ($g^a ^bmod n)^b ^b ^bmod n$. To jest klucz!(To jest $g^{ab} ^bmod n$)

To jest prawdopodobnie bezpieczne, pod warunkiem, że $n$ jest bardzo duże i $frac{n-1}{2}$ jest również pierwszorzędne, ponieważ chociaż Ewa zna $g$, $n$, $g^a ^bmod n$ i $g^b ^bmod n$, nie ma znanego efektywnego sposobu na uzyskanie z nich $a$ lub $b$.To jest problem logarytmu dyskretnego, pamiętasz?

Przykład z małymi $n$:

  • Alice wybiera $n=208799$ i $g=13$ i wysyła je do Boba
  • Alice wybiera $a=152335$, a Bob wybiera $b=98113$
  • Alice wysyła Bobowi $13^{152335} = 73033$
  • Bob wysyła Alice $13^{98133} \$147540$
  • Alice oblicza $147540^{152335} \bmod 208799 = 8435$
  • Bob oblicza $73033^{98133}
  • Sekretny klucz to 8435$.

Nie należy tego robić z małymi wartościami $n$.

Ogólnie rzecz biorąc, o ile nie otrzymasz jakiegoś certyfikatu, nie próbuj samodzielnie zabezpieczać żadnych systemów real-world. Ale oczywiście dogo ahead and learn thealgorithms and practice coding for now.

Kryptografia klucza publicznego

Szyfry z kluczem publicznym rozwiązują koszmar zarządzania kluczem w przypadku szyfrów z kluczem tajnym, kosztem szybkości. W grupie $n$ osób potrzeba tylko $n$ kluczy publicznych i $n$ kluczy prywatnych.

Kryptosystem RSA

Diffie-Hellman nie szyfruje; wymienia tylko klucz.RSA może szyfrować i deszyfrować. Oto jak. Każda osoba

  • Generuje dwie duże liczby pierwsze, $p$ i $q$.
  • Wybiera wartość $e$ względnie pierwszą od $(p-1)(q-1)$.
  • Publikuje swój klucz publiczny $(N,e)$, gdzie $N = pq$.
  • Oblicza $d$ = modularną odwrotność $e$ względem $(p-1)(q-1)$, zachowując ją w tajemnicy.
  • Zniszcza $p$ i $q$.

Teraz sprawdź to:

  • Aby Alice mogła wysłać wiadomość $m$ do Boba, wysyła $c = m^e \bmod N$.
  • Bob łatwo to rozszyfrowuje, ponieważ $m = c^d \bmod N$.
Ćwiczenie: Zbadaj matematykę stojącą za RSA. Dlaczego to działa, w szczegółach? Twoja odpowiedź będzie korzystać z twierdzeń leżących u podstaw funkcji totientu Eulera; upewnij się, że pokażesz, jak redukuje się do $(p-1)(q-1)$, gdy $pq$ jest pierwsze, między innymi.
Ćwiczenie: Diffie-Hellman (DH) jest czasami uważany za część kryptografii z kluczem publicznym, mimo że zajmuje się wymianą kluczy i sam nie jest algorytmem szyfrującym. Dlaczego więc niektórzy ludzie uważają go za klucz publiczny? (Odpowiedź na to pytanie wymaga pewnych badań.)

Trywialny przykład:

OSTRZEŻENIE!
Ten przykład służy wyłącznie do ilustracji. Nigdy nie implementuj swojego własnego algorytmu kryptograficznego. Upewnij się również, że rozumiesz, jak okropna jest kryptografia klucza publicznego z tak małymi kluczami. Prawdziwe klucze powinny mieć tysiące bitów.

Użyjmy klucza 16-bitowego (NIE RÓB TEGO W RZECZYWISTOŚCI). Wygeneruj dwie losowe 8-bitowe liczby pierwsze:

$p = 163$ = 173$

Generuj 16-bitową liczbę pierwszą dla wykładnika kodowania:

$e = 64013$

Teraz:

$n = pq = 28199 ^mathsf{modInverse}(e, (p-1)(q-1)) = 6797$

Zakodujmy ciąg ¿Dónde está ud.?. Oto on w UTF-8:

c2 bf 44 c3 b3 6e 64 65 20 65 73 74 c3 a1 20 75 64 2e 3f

W systemie dziesiętnym:

194 191 68 195 179 110 100 101 32 101 115 116 195 161 32 117 100 46 63

Teraz zastosujmy funkcję kodującą do każdego z nich::

$194^{64013} \bmod 28199 = 15626$
$191^{64013} \bmod 28199 = 19945$
$68^{64013} \bmod 28199 = 27982$
$
$63^{64013} \bmod 28199 = 18384$

Tekst szyfru to:

15626 19445 27982 22746 2679 7739 16824 23107 9054 23107 8378 16412 22746 5566 9054 881 16824 17864 18384

Do rozkodowania:

$15626^{6797} \bmod 28199 = 194$
$19445^{6797} \bmod 28199 = 191$
$27982^{6797} \bmod 28199 = 68$
$16824^{6797}

Wracamy do oryginalnej wiadomości!

Przy okazji
Ponieważ szyfrowanie symetryczne jest o wiele szybsze, możesz najpierw wygenerować tajny klucz i przesłać go przez linię zabezpieczoną za pomocą kryptografii klucza publicznego. Teraz cała przyszła komunikacja może używać tajnego klucza.

Szyfrowanie kryptograficzne

Hash, a.k.a. fingerprint, checksum, message digest jest wzorem bitowym (zwykle około 160 bitów lub tak), generowanym z wiadomości przez funkcję cryptographichash. Aby hasz był bezpieczny lub kryptograficzny, musi być obliczeniowo niewykonalny do

  • znalezienia wiadomości, która haszuje do danej wartości (jednokierunkowość)
  • znalezienia dwóch wiadomości, które haszują do tej samej wartości (odporność na kolizję)

Matematycznie, kryptograficzna funkcja haszująca $H$ wytwarza hasz z wiadomości, $H(m) = c$, taki, że $m$ nie może być efektywnie określony z $c$, i nie można efektywnie znaleźć $m_1 = m_2$ taki, że $H(m_1) = H(m_2)$,

Zwykle zmiana tylko jednego bitu w wiadomości spowoduje, że skrót będzie wyglądał zupełnie i całkowicie inaczej.

$ cat willThis is my will.I leave 1000 dollars to Aliceand everything else to Bob.Signed, Eve.$ md5sum willc18feb890752c9e680c99d1e909fd761 will$ sed "s/1/9/g" will > Will$ cat WillThis is my will.I leave 9000 dollars to Aliceand everything else to Bob.Signed, Eve.$ md5sum Will85570bc2d0458b1f98f484261dee7d4d Will

Bezpieczny hasz zapewnia sposób na określenie, czy wiadomość została naruszona.

Zobacz Steve Friedl’s Illustrated Guide to Cryptpgraphic Hashes.

Message Authentication Codes

Są one podobne do kryptograficznych haszów, z wyjątkiem tego, że używają tajnego klucza, podczas gdy hasze po prostu używają samej wiadomości.

$MAC(m, k) = c$

Więcej informacji:

  • MACs vs. Hashes at StackOverflow
  • Digital Signatures at Wikpedia
  • MACs at Wikipedia

Digital Signatures

Jak Bob może być pewien, że wiadomość pochodzi od Alicji, a nie od kogoś innego? Podpisując ją przez Alicję; oto jak. W praktyce zazwyczaj podpisuje się skrót, a nie całą wiadomość.

RSA dla podpisów cyfrowych

Aby Alice wysłała wiadomość do Boba,

  • Alice szyfruje m za pomocą swojego klucza prywatnego
  • Alice szyfruje za pomocą klucza publicznego Boba
  • Bob deszyfruje za pomocą swojego klucza prywatnego
  • Bob deszyfruje za pomocą kluczem publicznym Alice

$m = A(B'(B(A'(m)))$

DSA

Z Wikipedii

Cryptanalysis

To obszerny temat i nie będzie tu omawiany. Zamiast tego, poniżej znajduje się lista technik.

  • Analiza częstotliwości
  • Atak znanego tekstu jawnego
  • Atak znanego szyfrogramu
  • Atak wybranego tekstu jawnego
  • Atak wybranego klucza atak na klucz
  • Kryptoanaliza liniowa
  • Kryptoanaliza różnicowa
  • Kradzież
  • Przekupstwo
  • Szantaż
Ćwiczenie: Dokonaj samokształcenia w zakresie kryptoanalizy lub znajdź zabawny kurs online.

Przykłady programowania

Heh, nie zamierzamy pokazywać, jak stworzyć własną kryptowalutę. Zamierzamy przyjrzeć się niektórym aktualnie działającym bibliotekom.

Przesyłasz dane przez sieć IP?
Użyj TLS.
Czytaj dalej, jeśli chcesz skorzystać z jakichś zabawnych bibliotek kryptograficznych.

Przykłady JavaScript

Odnośnik: Node crypto.

Przykłady Python

Odniesienie:Biblioteki kryptograficzne Pythona -Python hashlib -Python secrets

Przykłady Java

.

Similar Posts

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.