Alfabet masoński. Kodowanie

Dom / Urządzenia mobilne

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

Tytuł artykułu
I autor
Inko Gnito.

Dobra semantyka kodu

Tytuł artykułu

Tekst artykułu, który ktoś napisał. Inko Gnito- jego autor.

Niezależnie od tego, czy uważasz, że HTML5 jest gotowy do użycia, czy nie, użycie

w tym przypadku będzie atrakcyjniejszy niż zwykle
wskazując klasę. Tytuł artykułu staje się tytułem, spis treści staje się akapitem, a pogrubiony tekst staje się znacznikiem. .

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

w takich przypadkach. Uwaga dotyczy także wszystkich pozostałych części strony internetowej (nagłówek powinien mieć postać
, pasek boczny -

© 2024 ermake.ru - O naprawie komputerów PC - Portal informacyjny