WEBVTT 00:00:00.000 --> 00:00:04.262 Teraz kiedy widzieliśmy już kilka historycznych przykładów szyfrów, z których wszystkie 00:00:04.262 --> 00:00:07.130 zostały złamane, zajmiemy się szyframi dużo lepiej zaprojektowanymi. 00:00:10.122 --> 00:00:13.115 Zanim jednak to zrobimy, chciałbym najpierw zdefiniować dokładniej czym jest 00:00:13.115 --> 00:00:17.432 szyfr. Po pierwsze szyfr tworzą 00:00:17.432 --> 00:00:21.694 dwa algorytmy. Algorytm kodujący i dekodujący. Jednak 00:00:21.694 --> 00:00:26.012 w rzeczywistości, szyfr jest zdefiniowany jako trójka: zbiór wszystkich kluczy, 00:00:26.012 --> 00:00:31.292 który oznaczać będę jajko ukośne K, i czasami nazywać przestrzenią kluczy, 00:00:31.292 --> 00:00:35.968 to jest zbiorem wszystkich możliwych kluczy. Jest również zbiór wszystkich możliwych wiadomości oraz zbiór 00:00:35.968 --> 00:00:40.365 wszystkich możliwych kryptogrmów. Ok, więc ta trójka w jakimś sensie definiuje 00:00:40.365 --> 00:00:44.756 środowisko w którym zdefiniowany jest szyfr. Szyfr sam w sobie jest 00:00:44.756 --> 00:00:49.236 parą "efektywnych" algorytmów E i D. E jest kodującym, a D dekodującym algorytmem. 00:00:49.236 --> 00:00:57.762 Oczywiście E przyjmuje klucze i wiadomości produkując kryptogramy. 00:00:57.762 --> 00:01:06.770 Algorytm deszyfrujący przyjmuje klucze i kryptogramy produkując wiadomości. 00:01:06.770 --> 00:01:12.282 Jedynym wymaganiem jest to aby algorytmy były spójne. To żeby 00:01:12.282 --> 00:01:17.933 posiadały właściwość poprawności. Dla każdej wiadomości w przestrzeni wiadomości 00:01:17.933 --> 00:01:23.593 i każdego klucza w przestrzeni kluczy prawdziwe jest że jeśli zaszyfruję 00:01:23.593 --> 00:01:29.185 wiadomość kluczem K i odszyfruję używając tego samego klucza K otrzymam 00:01:29.185 --> 00:01:34.711 oryginalną wiadomość, z którą zacząłem. To równianie tutaj jest nazywane 00:01:34.711 --> 00:01:39.974 równaniem spójności i każdy szyfr musi je spełniać 00:01:39.974 --> 00:01:44.970 w przeciwnym razie nie jest możliwe odszyfrowanie. Chciałbym zaznaczyć że 00:01:44.970 --> 00:01:49.782 słowo efektywny ująłem w cudzysłów. Zrobiłem to dlatego że oznacza ono 00:01:49.782 --> 00:01:54.041 różne rzeczy dla różnych ludzi. Jeśli jesteś bardziej teoretykiem 00:01:54.041 --> 00:01:58.811 efektywność oznacza działanie w skończonym czasie. Więc algorytmy E i D muszą się wykonać w 00:01:58.811 --> 00:02:02.842 skończonym czasie dla swojego wejścia. Jeśli jesteś bardziej praktykiem 00:02:02.842 --> 00:02:07.045 efektywność oznacza wykonanie w określonym przedziale czasu. Dla przykładu 00:02:07.045 --> 00:02:11.474 algorytm E może mieć wymaganie aby zakodować gigabajt danych poniżej minuty. 00:02:11.474 --> 00:02:16.073 Teraz słowo efektywny mając granice łączy dwa podejścia i 00:02:16.073 --> 00:02:20.158 nie ma znaczenia jak je interpretujesz. Ja będę kontynuował 00:02:20.158 --> 00:02:24.139 używanie tego słowa w cudzysłowiu. Więc jeśli jesteś teoretykiem 00:02:24.189 --> 00:02:27.964 myśl o skończonym czasie, w przeciwnym wypadku jako 00:02:27.964 --> 00:02:32.100 o konkretnych granicach. Inny komentarz ...... 00:02:32.100 --> 00:02:36.455 SORRY BRAK CZASU, DALEJ JUŻ NIE MA TŁUMACZENIA