Alfabet masoński. Kodowanie
MATEMATYKA
Vestn. Om. nie-ta. 2016. Nr 3. S. 7-9.
UDC 512,4 VA Romankow
OPCJA SILNEGO SEMANTYCZNIE SZYFROWANIA W OPARCIU O RSA*
Głównym celem artykułu jest zaproponowanie innego sposobu doboru jednego z głównych parametrów schematu szyfrowania opartego na systemie kryptograficznym RSA, zaproponowanego przez autora we wcześniejszych pracach. Oryginalna wersja opiera się na złożoności obliczeniowej wyznaczania rzędów elementów w multiplikatywnych grupach pierścieni modułowych. Zaproponowana metoda zmienia tę podstawę w inny nierozwiązywalny problem ustalenia, czy elementy grup multiplikatywnych pierścieni modułowych należą do potęg tych grup. Szczególnym przypadkiem takiego problemu jest klasyczny problem wyznaczania kwadratowości reszty, który jest uważany za trudny obliczeniowo. Zadanie to determinuje stabilność semantyczną znany system Szyfrowanie Goldwassera-Micaliego. W proponowanej wersji siła semantyczna schematu szyfrowania opiera się na złożoności obliczeniowej problemu określenia, czy elementy grup multiplikatywnych pierścieni modułowych należą do potęg tych grup.
Słowa kluczowe: system kryptograficzny RSA, szyfrowanie za pomocą klucz publiczny, pierścień modułowy, reszta kwadratowa, stabilność semantyczna.
1. Wprowadzenie
Celem tej pracy jest wprowadzenie nowych elementów do wersji schematu szyfrowania opartej na RSA, wprowadzonej przez autora w . Mianowicie: zaproponowano inny sposób określenia podgrup występujących na tym schemacie. Metoda ta prowadzi do zastąpienia podstawowego, złożonego obliczeniowo problemu wyznaczania rzędów elementów grup multiplikatywnych pierścieni modułowych, skomplikowanym obliczeniowo problemem wprowadzania danych potęg tych grup. Specjalny przypadek ostatni problem jest klasycznym problemem określenia, czy reszta elementu grupy multiplikatywnej pierścienia modułowego jest kwadratowa.
System szyfrowania klucza publicznego RSA został wprowadzony przez Rivesta, Shamira i Adlemana w 1977 roku. Jest szeroko stosowany na całym świecie i jest zawarty w prawie wszystkich podręcznikach do kryptografii. Jeśli chodzi o ten system i jego siłę kryptograficzną, zobacz na przykład.
Podstawowa wersja systemu jest deterministyczna i z tego powodu nie posiada właściwości tajemnicy semantycznej, najważniejszego wskaźnika siły kryptograficznej systemu szyfrowania klucza publicznego. Dlatego w praktyce stosuje się warianty systemu, których celem jest wprowadzenie do niego elementu probabilistycznego i tym samym zapewnienie spełnienia własności tajemnicy semantycznej.
Instalacja: platforma szyfrująca
Niech n będzie iloczynem dwóch dużych różnych liczb pierwszych p i q. Jako platformę dla systemu szyfrowania wybrano pierścień pozostałości Zn. Moduł n i platforma Zn są otwartymi elementami systemu, liczby p i q są tajne.
* Badanie zostało wsparte przez Rosyjską Fundację Badań Podstawowych (projekt 15-41-04312).
© Romankov V.A., 2016
Romankow V.A.
Funkcja Eulera jest oznaczona przez φ:N ^ N, in w tym przypadku przyjmując wartość φ(n)= (p-1)(q-1). Zatem rząd grupy multiplikatywnej Z*n pierścienia Zn wynosi (p-1)(q-1). Jeśli chodzi o te pojęcia, zobacz na przykład.
Następnie wybierane są dwie podgrupy M i H grupy Z*n odpowiednio pierwszych okresów r i t. Proponuje się zdefiniowanie tych podgrup poprzez ich elementy generujące M = gr(g1,...,gk), H = gr(j1,...,hl). Przypomnijmy, że okres t(G) grupy G jest najmniejszą liczbą t taką, że dr = 1 dla dowolnego elementu geG. Okresem grupy Z*n jest liczba t (n), równa najmniejszej wspólnej wielokrotności liczb p-1 i q-1. Podgrupy M i H mogą mieć charakter cykliczny i definiowany przez jeden element generujący. Elementy generujące podgrup M i H uważa się za otwarte, natomiast okresy podgrup r i t za tajne.
W i wyjaśniono, jak skutecznie przeprowadzić określoną selekcję podgrup M i H, znając tajne parametry p i q. Co więcej, możesz najpierw ustawić r i t, a następnie wybrać p i q, a dopiero potem przeprowadzić dalsze działania. Należy zauważyć, że konstrukcja elementów danych rzędów w polach skończonych odbywa się według standardowej skutecznej procedury, opisanej np. Przejście do konstruowania elementów danych rzędów w grupach multiplikatywnych Z*n pierścieni modułowych Zn odbywa się w oczywisty sposób za pomocą chińskiego twierdzenia o resztach lub . Instalacja: wybór kluczy Kluczem szyfrującym e jest dowolna liczba naturalna względnie pierwsza do r. Klucz deszyfrujący d = ^ jest obliczany z równości
(te)d1 = 1 (modr). (1)
Klucz d istnieje, ponieważ parametr d1 jest obliczany ze względu na wzajemną pierwszość te i r. Klucz e jest publiczny, klucz d i parametr d1 są tajne.
Algorytm szyfrowania Aby przesłać wiadomość w sieci otwartej - element m podgrupy M, Alicja wybiera losowy element h z podgrupy H i oblicza element hm. Przekładnia wygląda
c = (hm)e (nowoczesny). (2)
Algorytm deszyfrowania
Bob odszyfrowuje otrzymaną wiadomość c w następujący sposób:
cd=m(nowoczesne). (3)
Wyjaśnienie prawidłowego deszyfrowania
Ponieważ ed=1 (modr), istnieje liczba całkowita k taka, że ed = 1 + rk. Następnie
cd = (hm)ed = (ht)edi m (mr)k = m (mod n). (4) Zatem element h zapisuje się jako element podgrupy H w postaci wartości słowa grupowego u(x1,.,xl) z elementów generujących h1t...,hl podgrupy H. Właściwie to my
wybierz słowo u(x1,.,xl), a następnie oblicz jego wartość h = u(h1t..., hl). W szczególności oznacza to, że elementy generujące h1t...,hl są otwarte.
Siła kryptograficzna schematu
Siła kryptograficzna schematu opiera się na trudności określenia, z danych elementów generujących podgrupy H grupy Z*n, okresu lub rzędu tej podgrupy. Gdyby rząd elementu można było obliczyć za pomocą wydajnego algorytmu, to zliczając rzędy o rd(h1), ..., ord(hl) elementów generujących podgrupy H, moglibyśmy znaleźć jego okres t = t (H), równa ich najmniejszej wspólnej wielokrotności . Umożliwiłoby to usunięcie współczynnika przesłaniania h z tej opcji szyfrowania poprzez transformację c1 = met(modri), redukując procedurę deszyfrowania do klasycznego systemu RSA z publicznym kluczem szyfrującym et.
3. Inny sposób zdefiniowania podgrupy H
W artykule zaproponowano inną możliwość określenia podgrupy H w rozpatrywanym schemacie szyfrowania. Rozważmy najpierw jego szczególny przypadek, związany z rozpoznanym, nierozwiązywalnym problemem wyznaczania kwadratowości reszty z grupy Z*n. Przypomnijmy, że resztę aeZ^ nazywa się kwadratową, jeśli istnieje element xeZ*n taki, że x2= a (modn). Wszystkie reszty kwadratowe tworzą podgrupę QZ*n grupy Z*n. Problem określenia kwadratowości dowolnej reszty grupy uważa się za trudny obliczeniowo. Na tej właściwości opiera się dobrze znany, silny semantycznie system szyfrowania Goldwassera-Micali. O jego stabilności semantycznej całkowicie decyduje nierozwiązywalność problemu określenia kwadratowości reszty.
Załóżmy, że parametry p i q zostały wybrane z warunkiem p, q = 3 (mod 4), tj. p = 4k +3, q = 41 +3. W schematach związanych z kwadratową naturą reszt założenie to wygląda naturalnie i występuje dość często. Jeśli tak jest, odwzorowanie p:QZ*n ^ QZ*n, p:x^x2 jest bijekcją.
Podgrupa reszt kwadratowych QZ*n grupy ma indeks 4 w Z*n, patrz na przykład. Jej rząd o^^2^) jest równy φ(n)/4 = (4k + 2)(41 + 2)/4= 4kl + 2k + 21 + 1, czyli jest liczbą nieparzystą.
W powyższym schemacie szyfrowania zakładamy H = QZ*n. Każdy element podgrupy H ma rząd nieparzysty, gdyż okres t(Z*n), równy najmniejszej wspólnej wielokrotności liczb p - 1 = 4k +2 i q - 1 = 41 +2, jest podzielny przez 2 , ale nie jest podzielna przez 4. Maksymalnie możliwym wyborem dla M jest podgrupa rzędu 4, której elementy mają parzyste rzędy 2 lub 4. Jeśli istnieje skuteczny sposób obliczenie rzędu (lub przynajmniej jego parzystości) element dowolny
Semantycznie silna opcja szyfrowania oparta na RSA
grupa 2*n, wówczas problem określenia kwadratowości reszty jest skutecznie rozwiązany. Wadą schematu z tym wyborem jest mała moc przestrzeni tekstów - podgrupa M. W rzeczywistości schemat powiela wspomniany już dobrze znany schemat Gol-Dwasser-Micali.
Dzięki kolejnemu wyborowi zyskujemy większe możliwości. Niech s będzie liczbą pierwszą, którą można uznać za wystarczająco dużą. Niech p i q będą liczbami pierwszymi takimi, że przynajmniej jedna z liczb p - 1 lub q - 1 jest podzielna przez s. Wyjaśniono, że można wybrać s, a następnie skutecznie znaleźć p lub q o danej właściwości. Załóżmy, że szukana jest liczba p w postaci 2sx +1. x jest zmieniane, a wynikowe p jest sprawdzane pod kątem prostoty, aż okaże się proste.
Zdefiniujmy podgrupę Н =, złożoną z s-potęg elementów grupy 2*n (dla s = 2 jest to podgrupa QZ*n). Jeżeli p = 52k + su + 1 i q = 521 + sv +1 (lub q = sl + V +1), gdzie liczby u i V nie są podzielne przez s, to rząd o^(H) podgrupy H posiadający 2 w grupie *n indeks b2 (lub indeks s, jeśli q = sl + V +1) jest równy B2k1 + Bku + b1n + w>. Porządek ten jest względnie pierwszy do s. W szczególności oznacza to, że elementy podgrupy H mają rzędy niepodzielne przez s. Jeśli element znajduje się poza podgrupą H, to jego rząd jest dzielony przez s, ponieważ s dzieli rząd grupy. Jeżeli problem obliczenia rzędu elementu grupy 2*n (lub określenia jego podzielności przez s) daje się skutecznie rozwiązać w grupie 2*n, to problem wejścia do podgrupy również jest w niej skutecznie rozwiązany
Wybierając w ten sposób podgrupę H, mamy możliwość wyboru jako M cyklicznej podgrupy rzędu r = 52 (lub rzędu s). Taka podgrupa istnieje, ponieważ rząd grupy 2*n jest równy (p-1)^-1) = (52k + vi)^21 + sv) (lub (52k + vi)^1 + V)), jest podzielna przez 52 (na s). Aby określić H, wystarczy podać s. Co więcej, dla dowolnego wyboru podgrupy M mamy M*2 =1. Jeżeli przy deszyfrowaniu wiadomości m można otrzymać element postaci tel, gdzie ed jest względnie pierwsze z s, to znajdując liczby całkowite y i z takie, że edy + s2z = 1, możemy obliczyć teL = m.
Jednakże elementy generujące podgrupy H nie są wskazane przy określeniu typu, zatem jeśli istnieje algorytm obliczania rzędów elementów grupy 2*n, nie pozwala to na obliczenie okresu podgrupy
H, co byłoby możliwe w wersji oryginalnej z .
Siła kryptograficzna wersji schematu opiera się na trudności w ustaleniu kolejności elementu grupy 2*n. W proponowanej wersji opiera się to na trudności w określeniu okresu podgrupy Z*s. Siła semantyczna Należy pamiętać, że c = (hm")e (modn) jest zaszyfrowaną wiadomością w postaci (2), gdzie heH, m" = m1 lub m" = m2. Szyfrowanie uważa się za silne semantycznie, jeśli jest niemożliwe skutecznie określić, co odpowiada wszystkiemu c. Prawidłową odpowiedź mt (i = 1 lub 2) uzyskuje się wtedy i tylko wtedy, gdy cmje należy do H. Oznacza to, że szyfrowanie jest silne semantycznie wtedy i tylko wtedy, gdy problem wystąpienia w H jest faktycznie nierozstrzygalny w przypadku rozpatrywanym w tym artykule jest problemem wejścia do podgrupy s-reszt Z*s. W szczególnym przypadku s = 2 otrzymujemy dobrze znany, uważany za trudny do rozwiązania problem wejścia do Q2 *n, na którym opiera się siła semantyczna systemu szyfrowania Goldwassera-Micali i szeregu innych systemów szyfrowania.
LITERATURA
Romankov V. A. Nowy semantycznie silny system szyfrowania klucza publicznego oparty na RSA // Stosowana matematyka dyskretna. 2015. Nr 3 (29). s. 32-40.
Rivest R., Shamir A., Adleman L. Metoda uzyskiwania podpisów cyfrowych i kryptosystemów klucza publicznego // Comm. ACM. 1978. tom. 21, nr 2. s. 120126.
Hinek M. Kryptoanaliza RSA i jego wariantów. Boca Raton: Chapman & Hall/CRC, 2010.
Song Y. Y. Ataki kryptoanalityczne na RSA. Berlin: Springer, 2008.
Znaczek M., Niski R.M. Kryptanaliza stosowana. Łamanie szyfrów w realnym świecie. Hoboken: JohnWiley&Sons, 2007.
Roman"kov V.A. Nowe probabilistyczne szyfrowanie klucza publicznego oparte na kryptosystemie RAS // Croups, Complexity, Cryptology. 2015. Vol. 7, No. 2. P. 153156.
Romankow V.A. Wprowadzenie do kryptografii. M.: Forum, 2012.
Menezes A., Ojrschot P.C., Vanstone S.A. Podręcznik kryptografii stosowanej . Boca Raton: CRC Press, 1996.
Goldwasser S., Micali S. Szyfrowanie probabilistyczne i jak grać w mentalnego pokera, zachowując w tajemnicy wszystkie częściowe informacje // Proc. 14. Sympozjum Teorii Obliczeń, 1982, s. 365-377.
Projektanci i programiści stron internetowych uwielbiają rzucać żargonem i zawiłymi zwrotami, które czasami są dla nas trudne do zrozumienia. W tym artykule skupimy się na kodzie semantycznym. Dowiedzmy się, co to jest!
Co to jest kod semantyczny?
Nawet jeśli nie jesteś projektantem stron internetowych, prawdopodobnie wiesz, że Twoja witryna została napisana w języku HTML. Pierwotnie HTML miał służyć do opisu zawartości dokumentu, a nie do nadawania mu przyjemnego wizualnie wyglądu. Kod semantyczny powraca do tej oryginalnej koncepcji i zachęca projektantów stron internetowych do pisania kodu opisującego treść, a nie to, jak powinna wyglądać. Na przykład tytuł strony można zaprogramować w następujący sposób:
To jest tytuł strony
Spowoduje to, że tytuł będzie duży i pogrubiony, nadając mu wygląd tytułu strony, ale nie ma w nim niczego, co opisuje go jako „tytuł” w kodzie. Oznacza to, że komputer nie może rozpoznać go jako tytułu strony.
Pisząc tytuł semantycznie, aby komputer rozpoznał go jako „tytuł”, musimy użyć następującego kodu:
To jest tytuł
Wygląd nagłówka można określić w osobny plik, zwane „kaskadowymi arkuszami stylów” (CSS), bez ingerencji w opisowy (semantyczny) kod HTML.
Dlaczego kod semantyczny jest ważny?
Zdolność komputera do prawidłowego rozpoznawania treści jest ważna z kilku powodów:
- Wiele osób niedowidzących do czytania stron korzysta z przeglądarek głosowych. Takie programy nie będą w stanie dokładnie zinterpretować stron, jeśli nie zostaną one jasno wyjaśnione. Innymi słowy, kod semantyczny służy jako środek dostępności.
- Wyszukiwarki muszą zrozumieć, czego dotyczą Twoje treści, aby móc prawidłowo sklasyfikować Cię w wyszukiwarkach. Kod semantyczny ma reputację ulepszania miejsc docelowych. wyszukiwarki, ponieważ jest łatwo zrozumiały dla „robotów wyszukujących”.
Kod semantyczny ma także inne zalety:
- Jak widać na powyższym przykładzie, kod semantyczny jest krótszy, a ładowanie szybsze.
- Kod semantyczny ułatwia aktualizację witryny, ponieważ można zastosować style nagłówków w całej witrynie, a nie strona po stronie.
- Kod semantyczny jest łatwy do zrozumienia, więc jeśli nowy projektant stron internetowych przejmie ten kod, będzie mu łatwo go przeanalizować.
- Ponieważ kod semantyczny nie zawiera elementów projektu, zmień go wygląd Strona internetowa jest możliwa bez konieczności przekodowania całego kodu HTML.
- Po raz kolejny, ponieważ projekt jest oddzielony od treści, kod semantyczny pozwala każdemu dodawać lub edytować strony bez konieczności posiadania dobrego oka do projektowania. Po prostu opisujesz treść, a CSS określa, jak ta treść będzie wyglądać.
Jak upewnić się, że witryna korzysta z kodu semantycznego?
NA w tej chwili nie ma narzędzia, które mogłoby sprawdzić kod semantyczny. Wszystko sprowadza się do sprawdzania kolorów, czcionek lub układów w kodzie, zamiast opisywać zawartość. Jeśli analiza kodu brzmi przerażająco, dobrym punktem wyjścia jest zapytanie projektanta stron internetowych – czy koduje z myślą o semantyce? Jeśli spojrzy na ciebie tępo lub zacznie śmiesznie gadać, możesz być pewien, że nie koduje w ten sposób. W tym momencie musisz zdecydować, czy nadać mu nowy kierunek w swojej pracy, czy znaleźć nowego projektanta?!
Semantyka kodu HTML jest zawsze gorącym tematem. Niektórzy programiści starają się zawsze pisać kod semantyczny. Inni krytykują dogmatycznych zwolenników. Niektórzy nawet nie mają pojęcia, co to jest i dlaczego jest potrzebne. Semantyka jest zdefiniowana w HTML w postaci tagów, klas, identyfikatorów i atrybutów, które opisują cel, ale nie określają dokładnej zawartości, jaką zawierają. Oznacza to, że mówimy o oddzieleniu treści od jej formatu.
Zacznijmy od oczywistego przykładu.
Zła semantyka kodu
Dobra semantyka kodu
Tekst artykułu, który ktoś napisał. Inko Gnito- jego autor.Tytuł artykułu
Niezależnie od tego, czy uważasz, że HTML5 jest gotowy do użycia, czy nie, użycie Ale nie wszystko jest tak wyraźnie reprezentowane przez tagi HTML5. Przyjrzyjmy się zestawowi nazw klas i zobaczmy, czy spełniają one wymagania semantyczne. Nie kod semantyczny. To klasyczny przykład. Każdy stół roboczy z siatką CSS używa tego typu nazw klas do definiowania elementów siatki. Niezależnie od tego, czy jest to „yui-b”, „grid-4”, czy „spanHalf” - takie nazwy są bliższe określeniu znaczników niż opisowi treści. Jednak w większości przypadków ich użycie jest nieuniknione podczas pracy z modułowymi szablonami siatek. Kod semantyczny. Stopka zyskała duże znaczenie w projektowaniu stron internetowych. To jest dolna część strony, która zawiera takie elementy, jak powtarzająca się nawigacja, prawa użytkowania, informacje o autorze i tak dalej. Ta klasa definiuje grupę dla wszystkich tych elementów bez ich opisywania. Jeśli przełączyłeś się na używanie HTML5, lepiej użyć elementu Nie kod semantyczny. Precyzyjnie określa treść. Ale dlaczego tekst musi być duży? Aby wyróżnić się na tle innych mniejszych tekstów? W tym przypadku bardziej odpowiednie jest „standOut” (podświetlenie). Możesz zdecydować o zmianie stylu podświetlonego tekstu, ale nie zmieniać jego rozmiaru, w takim przypadku nazwa klasy może Cię zmylić. Kod semantyczny. W tym przypadku mówimy o określeniu poziomu ważności elementu w interfejsie aplikacji (na przykład akapitu lub przycisku). Element wyższego poziomu może mieć jasne kolory i większy rozmiar, podczas gdy elementy niższego poziomu mogą zawierać więcej treści. Ale w tym przypadku nie ma dokładnej definicji stylów, więc kod jest semantyczny. Sytuacja ta jest bardzo podobna do używania tagów Kod semantyczny. Gdyby tylko każda nazwa klasy mogła być tak jasno zdefiniowana! W tym przypadku mamy opis sekcji, która zawiera treści, których przeznaczenie jest łatwe do opisania, podobnie jak „tweety”, „paginacja” czy „admin-nav”. Nie kod semantyczny. W tym przypadku mówimy o ustaleniu stylu pierwszego akapitu na stronie. Technikę tę stosuje się w celu przyciągnięcia uwagi czytelników do materiału. Lepiej jest używać nazwy „intro”, która nie wspomina o elemencie. Ale jeszcze lepiej jest użyć selektora dla takich akapitów, jak na przykład artykuł p:first-of-type lub h1 + p . Nie kod semantyczny. Jest to bardzo ogólna nazwa klasy używana do organizowania formatowania elementów. Ale nie ma w nim nic, co odnosiłoby się do opisu treści. Różni teoretycy semantyki zalecają używanie w takich przypadkach nazwy klasy, takiej jak „grupa”. Jest prawdopodobne, że mają rację. Ponieważ element ten niewątpliwie służy do grupowania kilku innych elementów, zalecana nazwa będzie lepiej określała jego przeznaczenie, bez wchodzenia w szczegóły. Nie kod semantyczny. Zbyt szczegółowy opis formatu treści. Lepiej wybrać inną nazwę, która będzie opisywała treść, a nie jej format. Kod semantyczny. Klasa bardzo dobrze opisuje stan treści. Na przykład wiadomość o powodzeniu może mieć zupełnie inny styl niż komunikat o błędzie. Nie kod semantyczny. W tym przykładzie podjęto próbę zdefiniowania formatu treści, a nie jej celu. „plain-jane” jest bardzo podobne do „normalnego” lub „regularnego”. Idealny kod CSS powinien być napisany w taki sposób, aby nie było potrzeby stosowania nazw klas typu „regular”, które opisują format treści. Nie kod semantyczny. Tego typu klasy są zwykle używane do definiowania elementów witryny, które nie powinny być uwzględniane w łańcuchu łączy. W takim przypadku lepiej użyć czegoś takiego jak rel=nofollow dla linków, ale nie klasy dla całej zawartości. Nie kod semantyczny. Jest to próba opisania formatu treści, a nie jej przeznaczenia. Załóżmy, że masz dwa artykuły na swojej stronie internetowej. I chcesz nadać im różne style. „Recenzje filmów” będą miały niebieskie tło, a „Wiadomości z ostatniej chwili” będą miały czerwone tło i większy rozmiar czcionki. Jednym ze sposobów rozwiązania problemu jest: Innym sposobem jest to: Z pewnością, jeśli przeprowadzisz wywiad z kilkoma programistami na temat tego, który kod jest bardziej zgodny z wymaganiami semantycznymi, większość wskaże pierwszą opcję. Doskonale odpowiada materiałowi tej lekcji: opis celu bez linków do formatowania. Druga opcja wskazuje format („blueBg” to nazwa klasy utworzona z dwóch angielskich słów oznaczających „niebieskie tło”). Jeśli nagle zdecydujesz się zmienić wygląd recenzji filmów - na przykład zrobić zielone tło, wówczas nazwa klasy „blueBg” zamieni się w koszmar dewelopera. A nazwa „recenzja filmu” pozwoli Ci absolutnie łatwo zmieniać style projektowania, zachowując jednocześnie doskonały poziom obsługi kodu. Ale nikt nie twierdzi, że pierwszy przykład jest lepszy we wszystkich przypadkach bez wyjątku. Załóżmy, że w wielu miejscach witryny zastosowano określony odcień niebieskiego. Na przykład jest tłem dla niektórych stopek i obszarów na pasku bocznym. Możesz użyć następującego selektora: Recenzja filmu, stopka > div:n-ty-typu(2), na boku > div:n-ty-typu(4) ( tło: #c2fbff; ) Skuteczne rozwiązanie, ponieważ kolor ustala się tylko w jednym miejscu. Jednak taki kod staje się trudny w utrzymaniu, ponieważ ma długi selektor, który jest trudny do zrozumienia wizualnie. Będziesz także potrzebować innych selektorów, aby zdefiniować unikalne style, co spowoduje powtórzenie kodu. Możesz też zastosować inne podejście i zachować je oddzielnie: Recenzja filmu ( tło: #c2fbff; /* Definicja koloru */ ) stopka > div:nth-of-type(2) ( tło: #c2fbff; /* I jeszcze jedno */ ) na bok > div:nth-of - type(4) ( tło: #c2fbff; /* I jeszcze jedno */ ) Ten styl pomaga lepiej uporządkować plik CSS (różne obszary są zdefiniowane w różnych sekcjach). Jednak ceną, jaką trzeba zapłacić, jest powtarzanie definicji. W przypadku dużych witryn identyfikacja tego samego koloru może sięgać kilku tysięcy razy. Straszny! Rozwiązaniem byłoby użycie klasy takiej jak „blueBg” w celu jednorazowego zdefiniowania koloru i wstawienia go do kodu HTML, gdy chcesz użyć tego projektu. Oczywiście lepiej nazwać go „mainBrandColor” lub „wtórna czcionka”, aby pozbyć się opisu formatowania. Możesz poświęcić semantykę kodu na rzecz oszczędzania zasobów. (zastępstwa). W szyfrach podstawieniowych litery zamieniane są na inne litery tego samego alfabetu; podczas kodowania litery zamieniane są na coś zupełnie innego - obrazy, symbole innych alfabetów, ciągi różnych znaków itp. Zestawiona jest tabela zgodności jeden do jednego między alfabetem tekstu źródłowego a symbolami kodu i zgodnie z tą tabelą następuje kodowanie jeden do jednego. Aby rozszyfrować, musisz znać tabelę kodów. Istnieje duża liczba kodów stosowanych w różnych obszarach życia ludzkiego. Dobrze znane kody są używane głównie dla wygody przesyłania informacji w taki czy inny sposób. Jeśli tabela kodów jest znana tylko nadawcy i odbiornikowi, wówczas w rezultacie powstaje raczej prymitywny szyfr, który można łatwo poddać analizie częstotliwościowej. Ale jeśli dana osoba jest daleka od teorii kodowania i nie jest zaznajomiona z analizą częstotliwości tekstu, rozwikłanie takich szyfrów będzie dla niego dość problematyczne. Najprostszy szyfr. Nazywa się A1Z26 lub w wersji rosyjskiej A1Я33. Litery alfabetu zastępuje się ich numerami seryjnymi. „NoZDR” można zaszyfrować jako 14-15-26-4-18 lub 1415260418. Litery, cyfry i niektóre znaki kojarzone są z zestawem kropek i kresek, które mogą być przekazywane drogą radiową, dźwiękową, pukaniem, telegrafem świetlnym i sygnałem flagowym. Ponieważ marynarze mają również odpowiednią flagę powiązaną z każdą literą, możliwe jest przekazanie wiadomości za pomocą flag. Braille to dotykowy system czytania dla niewidomych, składający się z sześciopunktowych znaków zwanych komórkami. Komórka składa się z trzech kropek o wysokości i dwóch kropek o szerokości. Różne znaki brajlowskie powstają poprzez umieszczenie kropek w różnych miejscach komórki. Dla wygody punkty są opisane przy czytaniu w następujący sposób: 1, 2, 3 od lewej strony od góry do dołu i 4, 5, 6 od prawej strony od góry do dołu. Tworząc tekst, kieruj się następującymi zasadami: jedna komórka (spacja) jest pomijana między słowami; po przecinku i średniku komórka nie jest pomijana; myślnik zapisuje się razem z poprzednim słowem; przed numerem umieszczony jest znak cyfrowy. W misjach i zagadkach komputerowych litery można kodować według ich kodów w różnych stronach kodowych - tabelach używanych na komputerach. W przypadku tekstów cyrylicowych najlepiej stosować najpopularniejsze kodowania: Windows-1251, KOI8, CP866, MacCyrillic. Chociaż w przypadku złożonego szyfrowania możesz wybrać coś bardziej egzotycznego. Można kodować przy użyciu liczb szesnastkowych lub konwertować je na liczby dziesiętne. Przykładowo litera E w KOI8-R ma kod B3 (179), w CP866 - F0 (240), a w Windows-1251 - A8 (168). Możesz też poszukać liter w odpowiednich tabelach, aby dopasować je do lewych, wtedy tekst okaże się wpisany „szalonymi słowami”, np. èαᬫº∩íαδ
(866 → 437) lub Êðàêîçÿáðû
(1251 → łac.-1). Możesz też zmienić górną połowę znaków na dolną połowę w ramach jednej tabeli. Następnie dla Windows-1251 zamiast „krakozyabry” otrzymujesz „jp”jng ap(), zamiast „HELICOPTER” - „BEPRNK(R”. Takie przesunięcie strony kodowej to klasyczna utrata najbardziej znaczącego bitu podczas awarie na serwerach pocztowych. Znaki łacińskie w tym przypadku można zakodować z odwrotnym przesunięciem w dół o 128 znaków. I to kodowanie będzie odmianą szyfru - ROT128, tylko nie dla zwykłego alfabetu, ale dla wybranej strony kodowej. Dokładny czas powstania szyfru nie jest znany, ale niektóre odnalezione zapisy dotyczące tego systemu pochodzą z XVIII wieku. Odmiany tego szyfru były używane przez Zakon Różokrzyżowców i masonów. Ci ostatni używali go dość często w swoich tajnych dokumentach i korespondencji, dlatego szyfr zaczęto nazywać szyfrem masońskim. Nawet na nagrobkach masonów można zobaczyć napisy wykorzystujące ten kod. Podobny system szyfrowania był używany podczas wojny secesyjnej przez armię Jerzego Waszyngtona, a także przez więźniów w więzieniach federalnych Skonfederowanych Stanów Zjednoczonych. Poniżej znajdują się dwie (niebieska i czerwona) możliwość wypełnienia siatki takich szyfrów. Litery ułożone są parami, druga litera z pary jest rysowana symbolem z kropką: Wynaleziono ogromną różnorodność szyfrów, w których jednemu znakowi alfabetu (literze, cyfrze, znakowi interpunkcyjnemu) odpowiada jeden (rzadko więcej) znak graficzny. Większość z nich została wynaleziona do wykorzystania w filmach science fiction, kreskówkach i grach komputerowych. Oto niektóre z nich: Jednym z najsłynniejszych szyfrów podstawieniowych autora jest „”. Został wymyślony i opisany przez angielskiego pisarza Arthura Conan Doyle'a w jednej ze swoich prac o Sherlocku Holmesie. Litery alfabetu zastąpiono symbolami, które wyglądają jak mali ludzie w różnych pozach. W książce nie wymyślono małych ludzików dla wszystkich liter alfabetu, więc fani twórczo zmodyfikowali i przerobili symbole, w wyniku czego powstał ten szyfr: Ale taki alfabet opisał Tomasz More w swoim traktacie „Utopia” z 1516 roku: 4.1. Podstawy szyfrowania Istota szyfrowania metodą zastępczą jest następująca. Niech wiadomości w języku rosyjskim będą szyfrowane, a każda litera tych wiadomości musi zostać zastąpiona. Potem dosłownie A alfabet źródłowy jest porównywany z pewnym zestawem symboli (zastąpienie szyfru) M A, B – M B, …, I – M I. Podstawienia szyfru dobierane są w taki sposób, że dowolne dwa zbiory ( M ja I MJ, ja ≠ j) nie zawierał identycznych elementów ( M ja ∩ M jot = Ø). Tabela pokazana na ryc. 4.1 jest kluczem szyfru zastępczego. Wiedząc o tym, możesz wykonać zarówno szyfrowanie, jak i deszyfrowanie. Ryc.4.1. Tabela podstawień szyfrów Podczas szyfrowania każda litera A otwarta wiadomość zostaje zastąpiona dowolnym znakiem z zestawu MA. Jeśli wiadomość zawiera kilka liter A, wówczas każdy z nich zostaje zastąpiony dowolnym znakiem z MA. Dzięki temu za pomocą jednego klucza można uzyskać różne wersje szyfrogramu dla tej samej otwartej wiadomości. Od setów M A, M B, ..., M I nie przecinają się parami, wówczas dla każdego symbolu szyfrogramu można jednoznacznie określić, do którego zestawu należy, a co za tym idzie, jaką literę otwartego komunikatu zastępuje. Dzięki temu możliwe jest odszyfrowanie, a otwarta wiadomość zostaje ustalona w unikalny sposób. Powyższy opis istoty szyfrów podstawieniowych dotyczy wszystkich ich odmian z wyjątkiem , w którym te same szyfry podstawieniowe mogą służyć do szyfrowania różnych znaków alfabetu oryginalnego (tj. M ja ∩ M jot ≠ Ø, ja ≠ j). Metoda wymiany jest często wdrażana przez wielu użytkowników podczas pracy na komputerze. Jeśli z powodu zapomnienia nie przełączysz zestawu znaków na klawiaturze z łacińskiego na cyrylicę, wówczas zamiast liter alfabetu rosyjskiego podczas wpisywania tekstu zostaną wydrukowane litery alfabetu łacińskiego („zamienniki szyfrów”). Do zapisywania wiadomości oryginalnych i zaszyfrowanych używane są ściśle określone alfabety. Alfabety służące do zapisywania wiadomości oryginalnych i zaszyfrowanych mogą się różnić. Znaki obu alfabetów można przedstawić za pomocą liter, ich kombinacji, cyfr, obrazów, dźwięków, gestów itp. Jako przykład możemy przytoczyć tańczących mężczyzn z opowiadania A. Conana Doyle’a () oraz rękopis litery runicznej () z powieści „Podróż do wnętrza Ziemi” J. Verne’a. Szyfry podstawieniowe można podzielić na następujące podklasy(odmiany). Ryc.4.2. Klasyfikacja szyfrów podstawieniowych I. Szyfry zwykłe. Zastąpienia szyfru składają się z tej samej liczby znaków lub są oddzielone od siebie separatorem (spacja, kropka, myślnik itp.). Kod sloganu. Dla danego szyfru konstrukcja tabeli podstawień szyfrów opiera się na sloganie (kluczu) - łatwym do zapamiętania słowie. Drugi wiersz tabeli zamian szyfrów jest wypełniany najpierw hasłem (i powtarzające się litery są odrzucane), a następnie pozostałymi literami, które nie wchodzą w skład hasła, w kolejności alfabetycznej. Na przykład, jeśli wybrane zostanie hasło „UNCLE”, tabela będzie wyglądać następująco. Ryc.4.4. Tabela zamienników szyfru dla szyfru sloganowego Podczas szyfrowania oryginalnej wiadomości „ABRAMOV” przy użyciu powyższego klucza, szyfrogram będzie wyglądał jak „YAPDKMI”. Kwadrat Polibijski. Szyfr został wynaleziony przez greckiego męża stanu, dowódcę i historyka Polibiusza (203-120 p.n.e.). W odniesieniu do alfabetu rosyjskiego i cyfr indyjskich (arabskich) istota szyfrowania była następująca. Litery zapisywane są w kwadracie 6x6 (niekoniecznie w kolejności alfabetycznej). Ryc.4.5. Tabela podstawień szyfrów dla kwadratu Polybiana Zaszyfrowana litera jest zastępowana współrzędnymi kwadratu (wiersz-kolumna), w którym jest zapisana. Na przykład, jeśli oryginalna wiadomość to „ABRAMOV”, wówczas szyfrogram to „11 12 36 11 32 34 13”. W starożytnej Grecji wiadomości przekazywano za pomocą telegrafii optycznej (przy użyciu pochodni). Dla każdej litery wiadomości podnoszono najpierw liczbę pochodni odpowiadającą numerowi rzędu litery, a następnie numer kolumny. Tabela 4.1. Częstotliwość występowania rosyjskich liter w tekstach Istnieją podobne tabele dla par liter (bigramów). Na przykład często spotykanymi bigramami są „to”, „ale”, „st”, „po”, „en” itp. Inna technika łamania szyfrogramów polega na eliminowaniu możliwych kombinacji liter. Na przykład w tekstach (jeśli są napisane bez błędów ortograficznych) nie można znaleźć kombinacji „chya”, „shchi”, „b” itp. Aby skomplikować zadanie łamania szyfrów zastępczych jeden do jednego, nawet w czasach starożytnych z oryginalnych wiadomości przed szyfrowaniem wykluczano spacje i/lub samogłoski. Inną metodą utrudniającą otwarcie jest szyfrowanie biggramy(w parach liter). 4.3. Szyfry poligramowe Poligramowe szyfry podstawieniowe- są to szyfry, w których jedno podstawienie szyfru odpowiada jednocześnie kilku znakom tekstu źródłowego. Porty szyfrowania Bigram. Szyfr Porty, przedstawiony w formie tabeli, jest pierwszym znanym szyfrem bigramowym. Rozmiar jego stołu wynosił 20 x 20 komórek; standardowy alfabet pisano u góry poziomo i pionowo po lewej stronie (nie zawierał liter J, K, U, W, X i Z). W komórkach tabeli można było wpisywać dowolne cyfry, litery czy symbole – sam Giovanni Porta używał symboli – pod warunkiem, że zawartość żadnej z komórek się nie powtarzała. W odniesieniu do języka rosyjskiego tabela podstawień szyfrów może wyglądać następująco. Ryc.4.10. Tabela zamiany szyfrów dla szyfru portów Szyfrowanie odbywa się przy użyciu par liter oryginalnej wiadomości. Pierwsza litera pary wskazuje wiersz zastępujący szyfr, druga - kolumnę. Jeżeli w oryginalnej wiadomości znajduje się nieparzysta liczba liter, dodawany jest do niej znak pomocniczy („znak pusty”). Na przykład oryginalna wiadomość „AB RA MO V”, zaszyfrowana - „002 466 355 093”. Litera „I” jest używana jako symbol pomocniczy. Szyfr Playfair (angielski: „Fair game”). Na początku lat pięćdziesiątych XIX wieku. Charles Wheatstone wynalazł tak zwany „szyfr prostokątny”. Leon Playfair, bliski przyjaciel Wheatstone'a, mówił o tym szyfrze podczas oficjalnej kolacji w 1854 roku dla Ministra Spraw Wewnętrznych, Lorda Palmerstona i księcia Alberta. A ponieważ Playfair był dobrze znany w kręgach wojskowych i dyplomatycznych, nazwa „szyfr Playfair” na zawsze została przypisana dziełu Wheatstone’a. Szyfr ten był pierwszym alfabetycznym szyfrem bigramowym (tabela bigramów Porty używała symboli, a nie liter). Został zaprojektowany w celu zapewnienia tajności komunikacji telegraficznej i był używany przez wojska brytyjskie podczas wojny burskiej i pierwszej wojny światowej. Był również używany przez Straż Przybrzeżną Wysp Australijskich podczas II wojny światowej. Szyfr zapewnia szyfrowanie par symboli (digramów). Zatem szyfr ten jest bardziej odporny na pękanie w porównaniu z prostym szyfrem podstawieniowym, ponieważ analiza częstotliwości jest trudniejsza. Można to przeprowadzić, ale nie dla 26 możliwych znaków (alfabet łaciński), ale dla 26 x 26 = 676 możliwych bigramów. Analiza częstotliwości bigramów jest możliwa, ale jest znacznie trudniejsza i wymaga znacznie większej ilości tekstu zaszyfrowanego. Aby zaszyfrować wiadomość, należy podzielić ją na bigramy (grupy dwóch znaków), a jeśli w bigramie zostaną znalezione dwa identyczne symbole, to pomiędzy nimi zostanie dodany wcześniej uzgodniony symbol pomocniczy (w oryginale - X, dla alfabetu rosyjskiego - I). Na przykład „zaszyfrowana wiadomość” staje się „zaszyfrowaną wiadomością” I komunikacja I" Aby utworzyć tabelę kluczy, wybiera się hasło, które następnie wypełnia się zgodnie z zasadami systemu szyfrowania Trisemus. Przykładowo dla hasła „UNCLE” tabela kluczy wygląda następująco. Ryc.4.11. Tabela kluczy dla szyfru Playfair Następnie, kierując się poniższymi zasadami, szyfrowane są pary znaków w tekście źródłowym: 1. Jeżeli w jednym wierszu występują symbole bigramu tekstu źródłowego, wówczas symbole te zastępowane są symbolami znajdującymi się w najbliższych kolumnach na prawo od odpowiednich symboli. Jeśli znak jest ostatnim w linii, to zostaje zastąpiony pierwszym znakiem tej samej linii. 2. Jeżeli bigramy tekstu źródłowego występują w jednej kolumnie, wówczas są one konwertowane na znaki tej samej kolumny znajdujące się bezpośrednio pod nimi. Jeżeli znak jest dolnym znakiem w kolumnie, to zostaje on zastąpiony pierwszym znakiem tej samej kolumny. 3. Jeżeli symbole bigramu tekstu źródłowego znajdują się w różnych kolumnach i różnych wierszach, wówczas zastępowane są one symbolami znajdującymi się w tych samych wierszach, ale odpowiadającymi pozostałym narożnikom prostokąta. Przykład szyfrowania. Bigram „for” tworzy prostokąt - zastępuje go „zhb”; Bigram „shi” znajduje się w jednej kolumnie i jest zastąpiony przez „yu”; Bigram „fr” znajduje się w jednym wierszu - zastępuje go „xc”; Bigram „ov” tworzy prostokąt - zastępuje go „yzh”; Bigram „an” znajduje się w jednym wierszu i jest zastąpiony przez „ba”; Bigram „ale” tworzy prostokąt - zastępuje go „am”; Bigram „es” tworzy prostokąt - zastępuje go „gt”; Bigram „oya” tworzy prostokąt - zastępuje go „ka”; Bigram „około” tworzy prostokąt - zastępuje go „pa”; Bigram „shche” tworzy prostokąt - zastępuje go „shyo”; Bigram „ni” tworzy prostokąt - zastępuje go „an”; Bigram „ee” tworzy prostokąt i jest zastępowany przez „gi”. Kod to „zhb yue xs yzh ba am gt ka pa she an gi”. Aby odszyfrować, należy zastosować odwrócenie tych zasad, odrzucając znaki I(Lub X), jeśli nie mają one sensu w oryginalnej wiadomości. Składał się z dwóch dysków – zewnętrznego dysku stałego i wewnętrznego dysku ruchomego, na których wydrukowano litery alfabetu. Proces szyfrowania polegał na znalezieniu litery w postaci zwykłego tekstu na dysku zewnętrznym i zastąpieniu jej literą z dysku wewnętrznego znajdującego się pod nią. Następnie dysk wewnętrzny został przesunięty o jedną pozycję, a druga litera została zaszyfrowana przy użyciu nowego alfabetu szyfrującego. Kluczem do tego szyfru była kolejność liter na dyskach i początkowa pozycja dysku wewnętrznego względem zewnętrznego. Stół Trisemusa. Jednym z szyfrów wymyślonych przez niemieckiego opata Trisemusa był szyfr wieloalfabetyczny oparty na tzw. „tablicy Trisemusa” – tabeli o bokach równych N, Gdzie N– liczba znaków w alfabecie. W pierwszym wierszu macierzy litery są zapisane w kolejności ich kolejności w alfabecie, w drugim - ten sam ciąg liter, ale z cyklicznym przesunięciem o jedną pozycję w lewo, w trzecim - z cyklicznym przesunięcie o dwie pozycje w lewo itp. Ryc.4.17. Stół Trisemusa Pierwsza linia jest także alfabetem dla liter tekstu jawnego. Pierwsza litera tekstu jest szyfrowana w pierwszym wierszu, druga litera w drugim i tak dalej. Po wykorzystaniu ostatniej linii wracają do pierwszej. Zatem wiadomość „ABRAMOV” przyjmie formę „AVTGRUZ”. System szyfrowania Vigenère’a. W 1586 roku francuski dyplomata Blaise Vigenère przedstawił przed komisją Henryka III opis prostego, ale dość silnego szyfru, który opierał się na tablicy Trisemusa. Przed szyfrowaniem wybierany jest klucz spośród znaków alfabetu. Sama procedura szyfrowania jest następująca. I-ty znak otwartej wiadomości w pierwszym wierszu określa kolumnę, a i-ty znak klucza w skrajnej lewej kolumnie określa wiersz. Na przecięciu wiersza i kolumny pojawi się i-ty znak szyfrogramu. Jeśli długość klucza jest krótsza niż wiadomość, jest on ponownie używany. Na przykład oryginalna wiadomość to „ABRAMOV”, klucz to „UNCLE”, kod szyfrujący to „DAFIYOYE”. Gwoli uczciwości należy zauważyć, że autorstwo tego szyfru należy do Włocha Giovanniego Battisty Bellaso, który opisał go w 1553 roku. Historia „zignorowała ważny fakt i nazwała szyfr imieniem Vigenère, mimo że nie zrobił nic, aby go stworzyć .” Bellazo zasugerował wywołanie tajnego słowa lub wyrażenia hasło(hasło włoskie; zwolnienie warunkowe francuskie - słowo). W 1863 roku Fryderyk Kasiski opublikował algorytm ataku na ten szyfr, chociaż znane są już przypadki łamania jego szyfru przez niektórych doświadczonych kryptoanalityków. W szczególności w 1854 roku szyfr został złamany przez wynalazcę pierwszego komputera analitycznego, Charlesa Babbage'a, choć fakt ten stał się znany dopiero w XX wieku, kiedy grupa naukowców przeanalizowała obliczenia Babbage'a i osobiste notatki. Mimo to szyfr Vigenère’a przez długi czas cieszył się opinią wyjątkowo odpornego na ręczne łamanie. I tak słynny pisarz i matematyk Charles Lutwidge Dodgson (Lewis Carroll) w swoim artykule „The Alphabetic Cipher”, opublikowanym w czasopiśmie dla dzieci w 1868 roku, nazwał szyfr Vigenère'a niezniszczalnym. W 1917 roku popularnonaukowy magazyn „Scientific American” również określił szyfr Vigenère’a jako niemożliwy do złamania. Maszyny obrotowe. Pomysły Albertiego i Bellaso wykorzystano do stworzenia elektromechanicznych maszyn rotacyjnych w pierwszej połowie XX wieku. Niektóre z nich były używane w różnych krajach aż do lat 80. XX wieku. Większość z nich wykorzystywała wirniki (koła mechaniczne), których względne położenie determinowało aktualny alfabet szyfrujący używany do wykonania podstawienia. Najbardziej znaną maszyną rotacyjną jest niemiecka maszyna Enigma z czasów II wojny światowej. Piny wyjściowe jednego rotora łączy się z pinami wejściowymi kolejnego rotora i po naciśnięciu na klawiaturze oryginalnego symbolu komunikatu następuje zamknięcie obwodu elektrycznego, w wyniku czego zapala się żarówka z symbolem wymiany szyfru. Ryc.4.19. System wirnika Enigmy [www.cryptomuseum.com] Efekt szyfrowania Enigmy widoczny jest po naciśnięciu dwóch klawiszy kolejno - prąd przepływa przez wirniki, „odbija się” od reflektora, a następnie ponownie przez wirniki. Ryc.4.20. Schemat szyfrowania Notatka. Szare linie pokazują inne możliwe obwody elektryczne wewnątrz każdego rotora. List A jest szyfrowany inaczej, gdy wykonywane są kolejne naciśnięcia klawiszy, jako pierwsze G, potem w C. Sygnał przemieszcza się inną trasą ze względu na obrót jednego z wirników po naciśnięciu poprzedniej litery pierwotnego komunikatu. 3. Opisać rodzaje szyfrów podstawieniowych. ,
,
i tak dalej, ale do innych elementów interfejsu.
Ale...
A1Z26
Kod Morse'a
Brajl
Strony kodowe
Szyfry autorskie
Tańczący mężczyźni
Alfabet Thomasa More’a
Szyfry z serialu animowanego „Gravity Falls”
Szyfr Billa
Stanford Pines (pamiętnikarz)
Alfabet Jedi z Gwiezdnych Wojen
Obcy alfabet z Futuramy
Alfabet kryptoński Supermana
Alfabety Bionicle
A B ...
I
MA M B ...
M ja
A B W G D mi Yo I Z I Y DO L M N O P R Z T U F X C H Cii SCH Kommiersant Y B mi Yu I
D I I N A B W G mi Yo I Z Y DO L M O P R Z T U F X C H Cii SCH Kommiersant Y B mi Yu
1
2
3
4
5
6
1
A B W G D mi
2
Yo I Z I Y DO
3
L M N O P R
4
Z T U F X C
5
H Cii SCH Kommiersant Y B
6
mi Yu I -
-
-
NIE. List Częstotliwość, % NIE. List Częstotliwość, %
1
O 10.97
18
B 1.74
2
mi 8.45
19
G 1.70
3
A 8.01
20
Z 1.65
4
I 7.35
21
B 1.59
5
N 6.70
22
H 1.44
6
T 6.26
23
Y 1.21
7
Z 5.47
24
X 0.97
8
R 4.73
25
I 0.94
9
W 4.54
26
Cii 0.73
10
L 4.40
27
Yu 0.64
11
DO 3.49
28
C 0.48
12
M 3.21
29
SCH 0.36
13
D 2.98
30
mi 0.32
14
P 2.81
31
F 0.26
15
U 2.62
32
Kommiersant 0.04
16
I 2.01
33
Yo 0.04
17
Y 1.90
A B W G D mi
(Ty)I Z I
(T)DO L M N O P R Z T U F X C H Cii SCH Kommiersant Y B mi Yu I
A 001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
B 032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
W 063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
G 094
095
096
097
098
099
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
D 125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
JEJ) 156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
I 187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
Z 218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
Ja (T) 249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
DO 280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
L 311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
M 342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
N 373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
O 404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
P 435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
R 466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
Z 497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
T 528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
U 559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
F 590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
X 621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
C 652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
H 683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
Cii 714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
SCH 745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
Kommiersant 776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
Y 807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
B 838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
mi 869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
Yu 900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
I 931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
D I I N A B
W G mi Yo I Z
Y DO L M O P
R Z T U F X
C H Cii SCH Kommiersant Y
B mi Yu -
1
2
A B W G D mi Yo I Z I Y DO L M N O P R Z T U F X C H Cii SCH Kommiersant Y B mi Yu I
B W G D mi Yo I Z I Y DO L M N O P R Z T U F X C H Cii SCH Kommiersant Y B mi Yu I A
W G D mi Yo I Z I Y DO L M N O P R Z T U F X C H Cii SCH Kommiersant Y B mi Yu I A B
G D mi Yo I Z I Y DO L M N O P R Z T U F X C H Cii SCH Kommiersant Y B mi Yu I A B W
D mi Yo I Z I Y DO L M N O P R Z T U F X C H Cii SCH Kommiersant Y B mi Yu I A B W G
mi Yo I Z I Y DO L M N O P R Z T U F X C H Cii SCH Kommiersant Y B mi Yu I A B W G D
Yo I Z I Y DO L M N O P R Z T U F X C H Cii SCH Kommiersant Y B mi Yu I A B W G D mi
I Z I Y DO L M N O P R Z T U F X C H Cii SCH Kommiersant Y B mi Yu I A B W G D mi Yo
Z I Y DO L M N O P R Z T U F X C H Cii SCH Kommiersant Y B mi Yu I A B W G D mi Yo I
I Y DO L M N O P R Z T U F X C H Cii SCH Kommiersant Y B mi Yu I A B W G D mi Yo I Z
Y DO L M N O P R Z T U F X C H Cii SCH Kommiersant Y B mi Yu I A B W G D mi Yo I Z I
DO L M N O P R Z T U F X C H Cii SCH Kommiersant Y B mi Yu I A B W G D mi Yo I Z I Y
L M N O P R Z T U F X C H Cii SCH Kommiersant Y B mi Yu I A B W G D mi Yo I Z I Y DO
M N O P R Z T U F X C H Cii SCH Kommiersant Y B mi Yu I A B W G D mi Yo I Z I Y DO L
N O P R Z T U F X C H Cii SCH Kommiersant Y B mi Yu I A B W G D mi Yo I Z I Y DO L M
O P R Z T U F X C H Cii SCH Kommiersant Y B mi Yu I A B W G D mi Yo I Z I Y DO L M N
P R Z T U F X C H Cii SCH Kommiersant Y B mi Yu I A B W G D mi Yo I Z I Y DO L M N O
R Z T U F X C H Cii SCH Kommiersant Y B mi Yu I A B W G D mi Yo I Z I Y DO L M N O P
Z T U F X C H Cii SCH Kommiersant Y B mi Yu I A B W G D mi Yo I Z I Y DO L M N O P R
T U F X C H Cii SCH Kommiersant Y B mi Yu I A B W G D mi Yo I Z I Y DO L M N O P R Z
U F X C H Cii SCH Kommiersant Y B mi Yu I A B W G D mi Yo I Z I Y DO L M N O P R Z T
F X C H Cii SCH Kommiersant Y B mi Yu I A B W G D mi Yo I Z I Y DO L M N O P R Z T U
X C H Cii SCH Kommiersant Y B mi Yu I A B W G D mi Yo I Z I Y DO L M N O P R Z T U F
C H Cii SCH Kommiersant Y B mi Yu I A B W G D mi Yo I Z I Y DO L M N O P R Z T U F X
H Cii SCH Kommiersant Y B mi Yu I A B W G D mi Yo I Z I Y DO L M N O P R Z T U F X C
Cii SCH Kommiersant Y B mi Yu I A B W G D mi Yo I Z I Y DO L M N O P R Z T U F X C H
SCH Kommiersant Y B mi Yu I A B W G D mi Yo I Z I Y DO L M N O P R Z T U F X C H Cii
Kommiersant Y B mi Yu I A B W G D mi Yo I Z I Y DO L M N O P R Z T U F X C H Cii SCH
Y B mi Yu I A B W G D mi Yo I Z I Y DO L M N O P R Z T U F X C H Cii SCH Kommiersant
B mi Yu I A B W G D mi Yo I Z I Y DO L M N O P R Z T U F X C H Cii SCH Kommiersant Y
mi Yu I A B W G D mi Yo I Z I Y DO L M N O P R Z T U F X C H Cii SCH Kommiersant Y B
Yu I A B W G D mi Yo I Z I Y DO L M N O P R Z T U F X C H Cii SCH Kommiersant Y B mi
I A B W G D mi Yo I Z I Y DO L M N O P R Z T U F X C H Cii SCH Kommiersant Y B mi Yu