Alfabetul masonic. Codificarea
MATEMATICĂ
Vestn. Ohm. un-ta. 2016. Nr 3. P. 7-9.
UDC 512,4 V.A. Romankov
OPȚIUNEA DE CRIPTARE SEMANTIC PUTERNICĂ BAZAT PE RSA*
Scopul principal al articolului este de a propune o altă modalitate de selectare a unuia dintre parametrii principali ai unei scheme de criptare bazată pe sistemul criptografic RSA, propus de autor în lucrările anterioare. Versiunea originală se bazează pe complexitatea de calcul a determinării ordinelor elementelor în grupuri multiplicative de inele modulare. Metoda propusă schimbă această bază într-o altă problemă insolubilă de a determina dacă elementele grupurilor multiplicative ale inelelor modulare aparțin puterilor acestor grupuri. Un caz special al unei astfel de probleme este problema clasică de determinare a pătraticității unui reziduu, care este considerată dificilă din punct de vedere computațional. Această sarcină determină stabilitatea semantică sistem cunoscut Criptare Goldwasser-Micali. În versiunea propusă, puterea semantică a schemei de criptare se bazează pe complexitatea computațională a problemei de a determina dacă elementele grupurilor multiplicative de inele modulare aparțin puterilor acestor grupuri.
Cuvinte cheie: sistem criptografic RSA, criptare cu cheie publică, inel modular, reziduu pătratic, stabilitate semantică.
1. Introducere
Scopul acestei lucrări este de a introduce noi elemente pentru versiunea bazată pe RSA a schemei de criptare introdusă de autor în . Și anume: se propune o altă modalitate de precizare a subgrupurilor care apar în această diagramă. Această metodă conduce la înlocuirea problemei complexe de calcul de bază de determinare a ordinelor elementelor grupurilor multiplicative de inele modulare cu problema complexă de calcul a introducerii unor puteri date ale acestor grupuri. Un caz special ultima problema este problema clasică de a determina dacă restul unui element al grupului multiplicativ al unui inel modular este pătratic.
Sistemul de criptare cu chei publice RSA a fost introdus de Rivest, Shamir și Adleman în 1977. Este utilizat pe scară largă în întreaga lume și este inclus în aproape toate manualele de criptografie. În ceea ce privește acest sistem și puterea sa criptografică, vezi, de exemplu.
Versiunea de bază a sistemului este deterministă și din acest motiv nu are proprietatea secretului semantic, cel mai important indicator al puterii criptografice a unui sistem de criptare cu cheie publică. Prin urmare, în practică, sunt utilizate variante ale sistemului, al căror scop este introducerea unui element probabilistic în acesta și, prin urmare, asigurarea îndeplinirii proprietății secretului semantic.
Instalare: platformă de criptare
Fie n produsul a două numere prime mari distincte p și q. Inelul rezidual Zn este ales ca platformă pentru sistemul de criptare. Modulul n și platforma Zn sunt elemente deschise ale sistemului, numerele p și q sunt secrete.
* Studiul a fost susținut de Fundația Rusă pentru Cercetare de bază (proiect 15-41-04312).
© Romankov V.A., 2016
Romankov V.A.
Funcția Euler se notează cu φ:N ^ N, în în acest caz, luând valoarea φ(n)= (p-1)(q-1). Astfel, ordinea grupării multiplicative Z*n a inelului Zn este (p-1)(q-1). Referitor la aceste concepte, vezi, de exemplu.
În continuare, sunt selectate două subgrupuri M și H ale grupului Z*n al perioadelor coprime r și, respectiv, t. Se propune definirea acestor subgrupe prin elementele lor generatoare M = gr(g1,...,gk), H = gr(j1,...,hl). Reamintim că perioada t(G) a unui grup G este cel mai mic număr t astfel încât dr = 1 pentru orice element geG. Perioada grupului Z*n este numărul t (n), egal cu cel mai mic multiplu comun al numerelor p-1 și q-1. Subgrupurile M și H pot fi ciclice și definite de un element generator. Elementele generatoare ale subgrupurilor M și H sunt considerate deschise, în timp ce perioadele subgrupurilor r și t sunt considerate secrete.
În și se explică cum să se efectueze eficient selecția specificată a subgrupurilor M și H, cunoscând parametrii secreti p și q. În plus, puteți seta mai întâi r și t, apoi selectați p și q și abia apoi efectuați acțiuni suplimentare. Rețineți că construcția elementelor unor ordine date în câmpuri finite se realizează printr-o procedură eficientă standard, descrisă, de exemplu. Trecerea la construirea elementelor de ordine date în grupele multiplicative Z*n ale inelelor modulare Zn se realizează într-un mod evident folosind teorema chineză a restului sau . Instalare: selecția cheilor Cheia de criptare e este orice număr natural coprim la r Cheia de decriptare d = ^ se calculează din egalitate
(te)d1 = 1 (modr). (1)
Cheia d există deoarece parametrul d1 este calculat datorită primei reciproce a lui te și r. Cheia e este publică, cheia d și parametrul d1 sunt secrete.
Algoritm de criptare Pentru a transmite un mesaj printr-o rețea deschisă - m element al subgrupului M, Alice selectează un element aleator h din subgrupul H și calculează elementul hm. Transmisia arata ca
c = (hm)e (modn). (2)
Algoritm de decriptare
Bob decriptează mesajul primit c după cum urmează:
cd=m(modn). (3)
Explicația decriptării corecte
Deoarece ed=1 (modr), există un întreg k astfel încât ed = 1 + rk. Apoi
cd = (hm)ed = (ht)edi m (mr)k = m (mod n). (4) Deci, elementul h se scrie ca element al subgrupului H sub forma valorii cuvântului de grup u(x1,.,xl) din elementele generatoare h1t... ,hl ale subgrupului H. De fapt, noi
alegeți cuvântul u(x1,.,xl), apoi calculați valoarea lui h = u(h1t..., hl). În special, aceasta înseamnă că elementele generatoare h1t... ,hl sunt deschise.
Puterea criptografică a schemei
Puterea criptografică a schemei se bazează pe dificultatea de a determina, din elementele generatoare date ale subgrupului H al grupului Z*n, perioada sau ordinea acestui subgrup. Dacă ordinea unui element ar putea fi calculată printr-un algoritm eficient, atunci prin numărarea ordinelor o rd(h1), ..., ord(hl) ale elementelor generatoare ale subgrupului H, am putea afla perioada lui t = t (H), egal cu cel mai mic multiplu comun al acestora. Acest lucru ar face posibilă eliminarea factorului de umbră h din această opțiune de criptare prin transformarea c1 = met(modri), reducând procedura de decriptare la sistemul clasic RSA cu o cheie publică de criptare et.
3. O altă modalitate de a defini subgrupul H
Această lucrare propune o altă opțiune pentru specificarea subgrupului H în schema de criptare luată în considerare. În primul rând, să luăm în considerare cazul său special, asociat cu problema recunoscută insolubilă a determinării pătraticității reziduului grupului Z*n. Reamintim că reziduul aeZ^ se numește pătratic dacă există un element xeZ*n astfel încât x2= a (modn). Toate reziduurile pătratice formează un subgrup QZ*n al grupului Z*n. Problema determinării pătraticității unui reziduu arbitrar al unui grup este considerată insolubilă din punct de vedere computațional. Cunoscutul sistem de criptare Goldwasser-Micali, puternic din punct de vedere semantic, se bazează pe această proprietate. Stabilitatea sa semantică este complet determinată de insolubilitatea problemei determinării pătraticității unui reziduu.
Să presupunem că parametrii p și q sunt aleși cu condiția p, q = 3 (mod 4), adică p = 4k +3, q = 41 +3. În schemele legate de natura pătratică a reziduurilor, această ipoteză pare naturală și apare destul de des. Dacă este valabil, maparea p:QZ*n ^ QZ*n, p:x^x2, este o bijecție.
Subgrupul de resturi pătratice QZ*n al grupului are un indice de 4 în Z*n, vezi, de exemplu. Ordinea sa o^^2^) este egală cu φ(n)/4 = (4k + 2)(41 + 2)/4= 4kl + 2k + 21 + 1, adică este un număr impar.
În schema de criptare de mai sus presupunem H = QZ*n. Orice element al subgrupului H are o ordine impară, deoarece perioada t(Z*n), egală cu cel mai mic multiplu comun al numerelor p - 1 = 4k +2 și q - 1 = 41 +2, este divizibil cu 2 , dar nu este divizibil cu 4. Maxim o posibilă alegere pentru M este un subgrup de ordinul 4 ale cărui elemente au ordine par 2 sau 4. Dacă există mod eficient calcularea ordinului (sau cel puțin a parității acesteia) element arbitrar
Opțiune de criptare puternică din punct de vedere semantic, bazată pe RSA
grupa 2*n, atunci problema determinării pătraticității unui reziduu este rezolvată efectiv. Dezavantajul schemei cu această alegere este puterea scăzută a spațiului de texte - subgrupa M. De fapt, schema dublează deja menționată binecunoscuta schemă Gol-Dwasser-Micali.
Avem oportunități mai mari cu următoarea noastră alegere. Fie s un număr prim care poate fi considerat suficient de mare. Fie p și q numere prime astfel încât cel puțin unul dintre numerele p - 1 sau q - 1 este divizibil cu s. Se explică că se poate alege s și apoi găsi efectiv p sau q cu proprietatea dată. Să presupunem că numărul p este căutat sub forma 2sx +1. x este schimbat și p rezultat este verificat pentru simplitate până când se dovedește a fi simplu.
Să definim un subgrup Н =, format din s-puteri ale elementelor grupului 2*n (pentru s = 2 acesta este subgrupul QZ*n). Dacă p = 52k + su + 1 și q = 521 + sv +1 (sau q = sl + V +1), unde numerele u și V nu sunt divizibile cu s, atunci ordinea o^(H) a subgrupului H având 2 în grupul *n indicele b2 (sau indicele s, dacă q = sl + V +1) este egal cu B2k1 + Bku + b1n + w>. Acest ordin este coprim la s. În special, aceasta înseamnă că elementele subgrupului H au ordine care nu sunt divizibile cu s. Dacă un element se află în afara subgrupului H, atunci ordinea sa este împărțită la s, deoarece s împarte ordinea grupului. Dacă problema calculării ordinii unui element din grupul 2*n (sau determinarea divizibilității acestuia cu s) este rezolvabilă efectiv în grupul 2*n, atunci problema intrării într-un subgrup este de asemenea rezolvată eficient în acesta.
Atunci când alegem subgrupul H în acest fel, avem posibilitatea de a alege ca M un subgrup ciclic de ordinul r = 52 (sau de ordinul s). Un astfel de subgrup există deoarece ordinea grupului 2*n, egal cu (p-1)^-1) = (52k + vi)^21 + sv) (sau (52k + vi)^1 + V)), este divizibil cu 52 (pe s). Pentru a specifica H, este suficient să specificați s. Mai mult, pentru orice alegere a subgrupului M avem M*2 =1. Dacă la decriptarea unui mesaj m este posibil să se obțină un element de forma tel, unde ed este coprim cu s, atunci prin găsirea numerelor întregi y și z astfel încât edy + s2z = 1, putem calcula teL = m.
Cu toate acestea, elementele generatoare ale subgrupului H nu sunt indicate la specificarea tipului, prin urmare, dacă există un algoritm pentru calcularea ordinelor elementelor grupului 2*n, acesta nu permite calcularea perioadei subgrupului
H, care ar fi fost posibil în versiunea originală din .
Puterea criptografică a versiunii schemei se bazează pe dificultatea de a determina ordinea elementului din grupul 2*n. În versiunea propusă, se bazează pe dificultatea determinării perioadei subgrupului Z*s. Puterea semantică Să se știe că c = (hm")e (modn) este un mesaj criptat de forma (2), unde heH, m" = m1 sau m" = m2. Criptarea este considerată puternică din punct de vedere semantic dacă este imposibilă. pentru a determina în mod eficient ce îi corespunde all -does c. Răspunsul corect mt (i = 1 sau 2) se obține dacă și numai dacă cmje aparține lui H. Aceasta înseamnă că criptarea este puternică din punct de vedere semantic dacă și numai dacă problema apariției în H este efectiv indecidabil în cazul analizat în acest articol este problema intrării în subgrupul de s-reziduuri Z*s. În cazul special s = 2, se obține problema binecunoscută, considerată insolubilă, a intrării în Q2 *n, pe care se bazează puterea semantică a sistemului de criptare Goldwasser-Micali și a unui număr de alte sisteme de criptare.
LITERATURĂ
Romankov V. A. Nou sistem de criptare cu chei publice puternic semantic bazat pe RSA // Matematică discretă aplicată. 2015. Nr 3 (29). pp. 32-40.
Rivest R., Shamir A., Adleman L. O metodă pentru obținerea semnăturilor digitale și a criptosistemelor cu cheie publică // Comm. ACM. 1978. Vol. 21, nr 2. P. 120126.
Hinek M. Criptanaliza RSA și variantele sale. Boca Raton: Chapman & Hall/CRC, 2010.
Song Y. Y. Atacurile criptoanalitice asupra RSA. Berlin: Springer, 2008.
Ștampila M., R.M. scăzut. Criptanaliza aplicată. Ruperea cifrurilor în lumea reală. Hoboken: JohnWiley&Sons, 2007.
Roman"kov V.A. Nouă criptare probabilistică cu cheie publică bazată pe criptosistemul RAS // Croups, Complexity, Cryptology. 2015. Vol. 7, No. 2. P. 153156.
Romankov V.A. Introducere în criptografie. M.: Forum, 2012.
Menezes A., Ojrschot P.C., Vanstone S.A. Manual de Criptografie Aplicată. Boca Raton: CRC Press, 1996.
Goldwasser S., Micali S. Criptarea probabilistică și cum să joci poker mental păstrând secrete toate informațiile parțiale // Proc. 14th Symposium on Theory of Computing, 1982, pp. 365-377.
Designerii și dezvoltatorii web le place să arunce jargon și expresii abstruse care uneori ne sunt greu de înțeles. Acest articol se va concentra pe codul semantic. Să ne dăm seama ce este!
Ce este codul semantic?
Chiar dacă nu ești web designer, probabil știi că site-ul tău a fost scris în HTML. HTML a fost inițial conceput ca un mijloc de a descrie conținutul unui document, mai degrabă decât ca un mijloc de a-l face să arate plăcut din punct de vedere vizual. Codul semantic revine la acest concept original și încurajează designerii web să scrie cod care descrie conținutul, mai degrabă decât cum ar trebui să arate. De exemplu, titlul paginii poate fi programat după cum urmează:
Acesta este titlul paginii
Acest lucru ar face titlul mare și îndrăzneț, dându-i aspectul unui titlu de pagină, dar nu există nimic în el care să-l descrie drept „titlu” în cod. Aceasta înseamnă că computerul nu îl poate recunoaște ca titlu al paginii.
Când scriem un titlu semantic, pentru ca computerul să-l recunoască ca „titlu”, trebuie să folosim următorul cod:
Acesta este titlul
Aspectul antetului poate fi determinat în dosar separat, care se numește „Foi de stil în cascadă” (CSS), fără a interfera cu codul HTML descriptiv (semantic).
De ce este important codul semantic?
Capacitatea computerului de a recunoaște corect conținutul este importantă din mai multe motive:
- Multe persoane cu deficiențe de vedere se bazează pe browserele de vorbire pentru a citi paginile. Astfel de programe nu vor putea interpreta paginile cu acuratețe decât dacă au fost explicate clar. Cu alte cuvinte, codul semantic servește ca mijloc de accesibilitate.
- Motoarele de căutare trebuie să înțeleagă despre ce este conținutul tău pentru a te clasifica corect în motoarele de căutare. Codul semantic are reputația de a vă îmbunătăți destinațiile de plasare. motoarele de căutare, deoarece este ușor de înțeles de „roboții de căutare”.
Codul semantic are și alte avantaje:
- După cum puteți vedea din exemplul de mai sus, codul semantic este mai scurt și încărcarea este mai rapidă.
- Codul semantic facilitează actualizările site-ului, deoarece puteți aplica stiluri de antet pe tot site-ul, mai degrabă decât pe o pagină cu pagină.
- Codul semantic este ușor de înțeles, așa că dacă un nou designer web preia codul, îi va fi ușor de analizat.
- Deoarece codul semantic nu conține elemente de design, atunci modificați aspect site-ul web este posibil fără recodificarea întregului cod HTML.
- Încă o dată, deoarece designul este păstrat separat de conținut, codul semantic permite oricui să adauge sau să editeze pagini fără a avea nevoie de un ochi bun pentru design. Pur și simplu descrieți conținutul, iar CSS determină cum va arăta acel conținut.
Cum vă puteți asigura că un site web folosește cod semantic?
Pe în acest moment nu există niciun instrument care să poată verifica codul semantic. Totul se reduce la verificarea culorilor, fonturilor sau machetelor din cod în loc să descrie conținutul. Dacă analiza codului sună înfricoșător, un punct de plecare excelent este să-l întrebați pe designerul dvs. web - codifică având în vedere semantică? Dacă se uită la tine în gol sau începe să vorbească ridicol, atunci poți fi sigur că nu codifică în acest fel. În acest moment trebuie să decizi dacă îi dai o nouă direcție în munca lui, sau îți găsești un nou designer?!
Semantica codului HTML este întotdeauna un subiect fierbinte. Unii dezvoltatori încearcă să scrie întotdeauna cod semantic. Alții critică adepții dogmatici. Și unii chiar nu au idee ce este și de ce este nevoie de el. Semantica este definită în HTML în etichete, clase, ID-uri și atribute care descriu scopul, dar nu specifică conținutul exact pe care îl conțin. Adică vorbim despre separarea conținutului și a formatului acestuia.
Să începem cu un exemplu evident.
Semantică proastă a codului
Semantică bună a codului
Textul unui articol care a fost scris de cineva. Inko Gnito- autorul acesteia.Titlul articolului
Indiferent dacă credeți că HTML5 este gata de utilizare sau nu, utilizarea Dar nu totul este reprezentat atât de clar de etichetele HTML5. Să ne uităm la un set de nume de clase și să vedem dacă îndeplinesc cerințele semantice. Nu cod semantic. Acesta este un exemplu clasic. Fiecare banc de lucru cu grilă CSS utilizează aceste tipuri de nume de clasă pentru a defini elementele grilei. Fie că este vorba de „yui-b”, „grid-4” sau „spanHalf” - astfel de nume sunt mai aproape de specificarea markupurilor decât de descrierea conținutului. Cu toate acestea, utilizarea lor este inevitabilă în majoritatea cazurilor când se lucrează cu șabloane de grilă modulare. Cod semantic. Subsolul a căpătat o semnificație puternică în designul web. Aceasta este partea de jos a paginii, care conține elemente precum navigarea repetată, drepturile de utilizare, informațiile despre autor și așa mai departe. Această clasă definește un grup pentru toate aceste elemente fără a le descrie. Dacă ați trecut la utilizarea HTML5, atunci este mai bine să utilizați elementul Nu cod semantic. Definește cu precizie conținutul. Dar de ce textul trebuie să fie mare? Pentru a ieși în evidență față de alte texte mai mici? „standOut” (evidențiere) este mai potrivit în acest caz. Puteți decide să schimbați stilul textului evidențiat, dar să nu faceți nimic cu privire la dimensiunea acestuia, caz în care numele clasei vă poate deruta. Cod semantic.În acest caz, vorbim despre determinarea nivelului de importanță a unui element în interfața aplicației (de exemplu, un paragraf sau un buton). Un element de nivel superior poate avea culori luminoase și o dimensiune mai mare, în timp ce elementele de nivel inferior pot conține mai mult conținut. Dar în acest caz nu există o definiție exactă a stilurilor, deci codul este semantic. Această situație este foarte asemănătoare cu utilizarea etichetelor Cod semantic. Dacă fiecare nume de clasă ar putea fi atât de clar definit! În acest caz, avem o descriere a unei secțiuni care are conținut al cărui scop este ușor de descris, la fel ca „tweets”, „pagination” sau „admin-nav”. Nu cod semantic.În acest caz, vorbim despre setarea stilului pentru primul paragraf din pagină. Această tehnică este folosită pentru a atrage atenția cititorilor asupra materialului. Este mai bine să folosiți numele „intro”, care nu menționează elementul. Dar este și mai bine să folosiți un selector pentru astfel de paragrafe, cum ar fi articolul p:first-of-type sau h1 + p . Nu cod semantic. Acesta este un nume de clasă foarte generic care este folosit pentru a organiza formatarea elementelor. Dar nu există nimic în el care se referă la o descriere a conținutului. Diferiți teoreticieni semantici recomandă utilizarea unui nume de clasă precum „grup” în astfel de cazuri. Probabil că au dreptate. Deoarece acest element servește, fără îndoială, la gruparea mai multor alte elemente, numele recomandat îi va descrie mai bine scopul fără a se scufunda în detalii. Nu cod semantic. Descriere prea detaliată a formatului de conținut. Este mai bine să alegeți un alt nume care să descrie conținutul, mai degrabă decât formatul acestuia. Cod semantic. Clasa descrie foarte bine starea conținutului. De exemplu, un mesaj de succes poate avea un stil complet diferit de un mesaj de eroare. Nu cod semantic. Acest exemplu încearcă să definească formatul conținutului mai degrabă decât scopul acestuia. „plain-jane” este foarte asemănător cu „normal” sau „regular”. Codul CSS ideal ar trebui să fie scris în așa fel încât să nu fie nevoie de nume de clasă precum „obișnuit” care descriu formatul conținutului. Nu cod semantic. Aceste tipuri de clase sunt utilizate de obicei pentru a defini elementele site-ului care nu ar trebui să fie incluse în lanțul de legături. În acest caz, este mai bine să folosiți ceva de genul rel=nofollow pentru link-uri, dar nu o clasă pentru tot conținutul. Nu cod semantic. Aceasta este o încercare de a descrie formatul conținutului, nu scopul acestuia. Să presupunem că aveți două articole pe site-ul dvs. Și vrei să le oferi stiluri diferite. „Movie Reviews” va avea un fundal albastru, în timp ce „Breaking News” va avea un fundal roșu și o dimensiune mai mare a fontului. O modalitate de a rezolva problema este aceasta: Un alt mod este acesta: Cu siguranță, dacă intervieviți mai mulți dezvoltatori despre care cod este mai în concordanță cu cerințele semantice, majoritatea va indica prima opțiune. Corespunde perfect cu materialul acestei lecții: o descriere a scopului fără link-uri către formatare. Și a doua opțiune indică formatul („blueBg” este numele clasei, care este format din două cuvinte englezești care înseamnă „fond albastru”). Dacă decideți brusc să schimbați designul recenziilor de film - de exemplu, faceți un fundal verde, atunci numele clasei „blueBg” se va transforma într-un coșmar al dezvoltatorului. Iar numele „recenzie de film” vă va permite să schimbați absolut ușor stilurile de design, menținând în același timp un nivel excelent de suport pentru cod. Dar nimeni nu susține că primul exemplu este mai bun în toate cazurile, fără excepție. Să presupunem că o anumită nuanță de albastru este folosită în multe locuri de pe site. De exemplu, este fundalul pentru unele dintre subsolul și zonele din bara laterală. Puteți utiliza următorul selector: Recenzie film, subsol > div:nth-of-type(2), deoparte > div:nth-of-type(4) ( fundal: #c2fbff; ) O soluție eficientă, deoarece culoarea este determinată doar într-un singur loc. Dar un astfel de cod devine dificil de întreținut, deoarece are un selector lung care este greu de înțeles vizual. De asemenea, veți avea nevoie de alți selectori pentru a defini stiluri unice, ceea ce va duce la repetarea codului. Sau puteți adopta o abordare diferită și le păstrați separate: Recenzie film ( fundal: #c2fbff; /* Definiția culorii */ ) footer > div:nth-of-type(2) ( fundal: #c2fbff; /* Și încă un lucru */ ) deoparte > div:nth-of - tip(4) ( fundal: #c2fbff; /* Și încă un lucru */ ) Acest stil ajută la menținerea fișierului CSS mai organizat (diferite zone sunt definite în diferite secțiuni). Dar prețul de plătit este repetarea definițiilor. Pentru site-urile mari, identificarea aceleiași culori poate ajunge la câteva mii de ori. Teribil! O soluție ar fi să folosiți o clasă precum „blueBg” pentru a defini culoarea o dată și să o introduceți în codul HTML atunci când doriți să utilizați acel design. Desigur, este mai bine să-l numiți „mainBrandColor” sau „secondaryFont” pentru a scăpa de descrierea formatării. Puteți sacrifica semantica codului în favoarea economisirii resurselor. (înlocuiri). În cifrurile de substituție, literele sunt schimbate cu alte litere din același alfabet la codificare, literele sunt schimbate în ceva complet diferit - imagini, simboluri ale altor alfabete, secvențe de diferite caractere etc. Este compilat un tabel de corespondență unu-la-unu între alfabetul textului sursă și simbolurile codului și, în conformitate cu acest tabel, are loc codificarea unu-la-unu. Pentru a decoda, trebuie să cunoașteți tabelul de coduri. Există un număr mare de coduri folosite în diferite domenii ale vieții umane. Codurile binecunoscute sunt folosite mai ales pentru confortul transmiterii informațiilor într-un fel sau altul. Dacă tabelul de coduri este cunoscut doar de emițător și receptor, atunci rezultatul este un cifr destul de primitiv, care este ușor de susținut analizei de frecvență. Dar dacă o persoană este departe de teoria codificării și nu este familiarizată cu analiza de frecvență a textului, atunci este destul de problematic pentru el să dezlege astfel de cifruri. Cel mai simplu cifr. Numit A1Z26 sau în versiunea rusă A1Я33. Literele alfabetului sunt înlocuite cu numerele lor de serie. „NoZDR” poate fi criptat ca 14-15-26-4-18 sau 1415260418. Literele, cifrele și unele semne sunt asociate cu un set de puncte și liniuțe, care pot fi transmise prin radio, sunet, bătăi, telegraf ușor și semnal de steag. Deoarece marinarii au, de asemenea, un steag corespunzător asociat fiecărei litere, este posibil să transmiteți un mesaj folosind steaguri. Braille este un sistem de citire tactil pentru nevăzători, format din caractere cu șase puncte numite celule. Celula este formată din trei puncte în înălțime și două puncte în lățime. Diferite caractere braille sunt formate prin plasarea punctelor în diferite poziții în interiorul unei celule. Pentru comoditate, punctele sunt descrise atunci când citiți după cum urmează: 1, 2, 3 de la stânga de sus în jos și 4, 5, 6 de la dreapta de sus în jos. Când compuneți textul, respectați următoarele reguli: o celulă (spațiu) este sărită între cuvinte; după virgulă și punct și virgulă nu se omite celula; se scrie o liniuță împreună cu cuvântul anterior; un semn digital este plasat în fața numărului. În căutări și ghicitori pe computer, literele pot fi codificate în funcție de codurile lor în diferite pagini de coduri - tabele folosite pe computere. Pentru textele chirilice, cel mai bine este să folosiți cele mai comune codificări: Windows-1251, KOI8, CP866, MacCyrillic. Deși pentru criptare complexă poți alege ceva mai exotic. Puteți codifica folosind numere hexazecimale sau le puteți converti în numere zecimale. De exemplu, litera E din KOI8-R are codul B3 (179), în CP866 - F0 (240) și în Windows-1251 - A8 (168). Sau puteți căuta litere în tabelele din dreapta pentru a le potrivi în cele din stânga, apoi textul se va dovedi a fi tastat în „cuvinte nebune” precum èαᬫº∩íαδ
(866→437) sau Êðàêîçÿáðû
(1251 → latină-1). Sau puteți schimba jumătatea superioară a caracterelor în jumătatea inferioară dintr-un singur tabel. Apoi, pentru Windows-1251, în loc de „krakozyabry”, obțineți „jp"jng ap(), în loc de „HELICOPTER” - „BEPRNK(R". O astfel de schimbare în pagina de cod este o pierdere clasică a bitului cel mai semnificativ în timpul Eșecurile pe serverele de e-mail, în acest caz, pot fi codificate cu o schimbare inversă în jos cu 128 de caractere și această codificare va fi o variantă a cifrului - ROT128, doar nu pentru alfabetul obișnuit, ci pentru pagina de coduri selectată. Ora exactă de origine a cifrului este necunoscută, dar unele dintre înregistrările găsite ale acestui sistem datează din secolul al XVIII-lea. Variațiile acestui cifr au fost folosite de Ordinul Rozicrucian și de Francmasoni. Aceștia din urmă l-au folosit destul de des în documentele și corespondența lor secretă, motiv pentru care cifrul a început să fie numit cifrul masonic. Chiar și pe pietrele funerare ale masonilor puteți vedea inscripții folosind acest cod. Un sistem similar de criptare a fost folosit în timpul războiului civil american de armata lui George Washington, precum și de prizonierii din închisorile federale ale Statelor Confederate ale Statelor Unite. Mai jos sunt două opțiuni (albastru și roșu) pentru a completa grila unor astfel de cifruri. Literele sunt aranjate în perechi, a doua literă din pereche este desenată cu un simbol cu un punct: S-a inventat o mare varietate de cifruri, unde un caracter al alfabetului (litera, cifra, semnul de punctuație) corespunde unui singur semn grafic (rar mai mult). Cele mai multe dintre ele au fost inventate pentru a fi utilizate în filme științifico-fantastice, desene animate și jocuri pe calculator. Iată câteva dintre ele: Unul dintre cele mai faimoase cifruri de substituție ale autorului este „”. A fost inventat și descris de scriitorul englez Arthur Conan Doyle într-una dintre lucrările sale despre Sherlock Holmes. Literele alfabetului sunt înlocuite cu simboluri care arată ca omuleți în diferite ipostaze. În carte, omuleții nu au fost inventați pentru toate literele alfabetului, așa că fanii au modificat și reluat creativ simbolurile, iar rezultatul a fost acest cifr: Dar un astfel de alfabet a fost descris de Thomas More în tratatul său „Utopia” din 1516: 4.1. Bazele criptării Esența criptării folosind metoda de înlocuire este următoarea. Lăsați mesajele în rusă să fie criptate și fiecare literă a acestor mesaje trebuie înlocuită. Apoi, la propriu O alfabetul sursă este comparat cu un anumit set de simboluri (înlocuire cifră) M A, B – M B, …, I – M I. Substituțiile cifrului sunt alese în așa fel încât oricare două seturi ( M IŞi M J, i ≠ j) nu conținea elemente identice ( M I ∩ M J = Ø). Tabelul prezentat în Fig. 4.1 este cheia cifrului de înlocuire. Cunoscând acest lucru, puteți efectua atât criptarea, cât și decriptarea. Fig.4.1. Tabel de înlocuire a cifrului La criptare, fiecare literă O mesajul deschis este înlocuit cu orice caracter din set M A. Dacă mesajul conține mai multe litere O, apoi fiecare dintre ele este înlocuit cu orice caracter din M A. Datorită acestui fapt, cu ajutorul unei chei este posibil să obțineți versiuni diferite ale cifrgramei pentru același mesaj deschis. De la decoruri M A, M B, ..., M I nu se intersectează în perechi, atunci pentru fiecare simbol al cifrgramei este posibil să se determine fără ambiguitate cărui set îi aparține și, în consecință, ce literă a mesajului deschis o înlocuiește. Prin urmare, decriptarea este posibilă și mesajul deschis este determinat într-un mod unic. Descrierea de mai sus a esenței cifrurilor de substituție se aplică tuturor varietăților acestora, cu excepția , în care aceleași cifruri de substituție pot fi utilizate pentru a cripta diferite caractere ale alfabetului original (de ex. M I ∩ M J ≠ Ø, i ≠ j). Metoda de înlocuire este adesea implementată de mulți utilizatori atunci când lucrează la un computer. Dacă, din cauza uitării, nu comutați setul de caractere de pe tastatură din latină în chirilic, atunci în loc de literele alfabetului rus, atunci când introduceți text, vor fi tipărite litere ale alfabetului latin („înlocuiri de cifră”). Alfabetele strict definite sunt folosite pentru a înregistra mesajele originale și criptate. Alfabetele pentru înregistrarea mesajelor originale și criptate pot diferi. Caracterele ambelor alfabete pot fi reprezentate prin litere, combinațiile acestora, numere, imagini, sunete, gesturi etc. Ca exemplu, putem cita bărbații dansatori din povestea lui A. Conan Doyle () și manuscrisul scrisorii runice () din romanul „Călătorie în centrul Pământului” de J. Verne. Cifrurile de substituție pot fi împărțite în următoarele subclasele(soiuri). Fig.4.2. Clasificarea cifrurilor de substituție I. Cifre regulate.Înlocuirile de cifrare constau din același număr de caractere sau sunt separate între ele printr-un separator (spațiu, punct, liniuță etc.). Cod slogan. Pentru un anumit cifr, construirea unui tabel de substituire a cifrului se bazează pe un slogan (cheie) - un cuvânt ușor de reținut. A doua linie a tabelului de înlocuire a cifrului este completată mai întâi cu cuvântul slogan (și literele repetate sunt aruncate), iar apoi cu literele rămase care nu sunt incluse în cuvântul slogan, în ordine alfabetică. De exemplu, dacă este selectat cuvântul slogan „UNCLE”, atunci tabelul arată astfel. Fig.4.4. Tabel de înlocuiri de cifrare pentru cifrul sloganului Când criptați mesajul original „ABRAMOV” folosind cheia de mai sus, cifra va arăta ca „YAPDKMI”. pătrat polibian. Cifrul a fost inventat de omul de stat, comandantul și istoricul grec Polybius (203-120 î.Hr.). În ceea ce privește alfabetul rus și cifrele indiene (arabe), esența criptării a fost următoarea. Literele sunt scrise într-un pătrat de 6x6 (nu neapărat în ordine alfabetică). Fig.4.5. Tabel de substituții de cifrare pentru pătratul polibian Litera criptată este înlocuită cu coordonatele pătratului (rând-coloană) în care este scrisă. De exemplu, dacă mesajul original este „ABRAMOV”, atunci cifra cifră este „11 12 36 11 32 34 13”. În Grecia Antică, mesajele erau transmise prin telegrafie optică (folosind torțe). Pentru fiecare literă a mesajului s-a ridicat mai întâi numărul de torțe corespunzător numărului de rând al literei și apoi numărul coloanei. Tabelul 4.1. Frecvența apariției literelor rusești în texte Există tabele similare pentru perechi de litere (bigrame). De exemplu, bigramele întâlnite frecvent sunt „to”, „dar”, „st”, „po”, „en”, etc. O altă tehnică de spargere a cifrgramelor se bazează pe eliminarea posibilelor combinații de litere. De exemplu, în texte (dacă sunt scrise fără greșeli de ortografie) nu puteți găsi combinațiile „chya”, „shchi”, „b”, etc. Pentru a complica sarcina de a sparge cifrurile de înlocuire unu-la-unu, chiar și în cele mai vechi timpuri, spațiile și/sau vocalele au fost excluse din mesajele originale înainte de criptare. O altă metodă care îngreunează deschiderea este criptarea bigramele(în perechi de litere). 4.3. Cifre poligrame Cifre de substituție poligramă- acestea sunt cifruri în care o substituție de cifră corespunde mai multor caractere ale textului sursă deodată. Porturi Bigram Cipher. Cifrul lui Porta, prezentat sub formă de tabel, este primul cifr bigram cunoscut. Dimensiunea mesei lui era de 20 x 20 de celule; alfabetul standard era scris în partea de sus pe orizontală și pe verticală în stânga (nu conținea literele J, K, U, W, X și Z). Orice numere, litere sau simboluri puteau fi scrise în celulele tabelului - însuși Giovanni Porta folosea simboluri - cu condiția ca conținutul niciunei celule să nu fie repetat. În ceea ce privește limba rusă, tabelul de substituții de cifrare poate arăta astfel. Fig.4.10. Tabel de înlocuire a cifrului pentru cifrul Ports Criptarea se realizează folosind perechi de litere ale mesajului original. Prima literă a perechii indică rândul de înlocuire a cifrului, a doua - coloana. Dacă în mesajul original există un număr impar de litere, i se adaugă un caracter auxiliar („caracter gol”). De exemplu, mesajul original „AB RA MO V”, criptat - „002 466 355 093”. Litera „I” este folosită ca simbol auxiliar. Cifrul Playfair (în engleză: „Joc corect”). La începutul anilor 1850. Charles Wheatstone a inventat așa-numitul „cifr dreptunghiular”. Leon Playfair, un prieten apropiat al lui Wheatstone, a vorbit despre acest cifr în timpul unei cine oficiale din 1854, adresată ministrului de interne, Lord Palmerston și Prințului Albert. Și din moment ce Playfair era bine cunoscut în cercurile militare și diplomatice, numele „cifr Playfair” a fost atribuit pentru totdeauna creației lui Wheatstone. Acest cifru a fost primul cifru bigram alfabetic (tabelul bigram al lui Porta a folosit simboluri, nu litere). A fost conceput pentru a asigura secretul comunicațiilor telegrafice și a fost folosit de trupele britanice în timpul boer și primul război mondial. A fost folosit și de Garda de Coastă a Insulelor Australiane în timpul celui de-al Doilea Război Mondial. Cifrul oferă criptarea perechilor de simboluri (digrame). Astfel, acest cifru este mai rezistent la fisurare în comparație cu un simplu cifr de substituție, deoarece analiza frecvenței este mai dificilă. Se poate realiza, dar nu pentru 26 de caractere posibile (alfabet latin), ci pentru 26 x 26 = 676 de bigrame posibile. Analiza frecvenței Bigram este posibilă, dar este mult mai dificilă și necesită o cantitate mult mai mare de text cifrat. Pentru a cripta un mesaj, este necesar să-l împărțiți în bigrame (grupuri de două caractere), iar dacă în bigramă se găsesc două simboluri identice, atunci se adaugă un simbol auxiliar pre-acordat între ele (în original - X, pentru alfabetul rus - eu). De exemplu, „mesaj criptat” devine „mesaj criptat” eu comunicare eu" Pentru a forma un tabel de chei, este selectat un slogan și apoi este completat conform regulilor sistemului de criptare Trisemus. De exemplu, pentru sloganul „UNCLE” tabelul cheilor arată astfel. Fig.4.11. Tabel de chei pentru cifrul Playfair Apoi, ghidat de următoarele reguli, perechile de caractere din textul sursă sunt criptate: 1. Dacă simbolurile bigrame ale textului sursă apar pe o singură linie, atunci aceste simboluri sunt înlocuite cu simbolurile situate în coloanele cele mai apropiate din dreapta simbolurilor corespunzătoare. Dacă caracterul este ultimul dintr-o linie, atunci este înlocuit cu primul caracter din aceeași linie. 2. Dacă caracterele bigrame ale textului sursă apar într-o coloană, atunci acestea sunt convertite în caracterele aceleiași coloane situate direct sub ele. Dacă un caracter este caracterul de jos într-o coloană, atunci este înlocuit cu primul caracter al aceleiași coloane. 3. Dacă simbolurile bigrame ale textului sursă sunt în coloane diferite și în rânduri diferite, atunci acestea sunt înlocuite cu simboluri situate pe aceleași rânduri, dar corespunzătoare altor colțuri ale dreptunghiului. Exemplu de criptare. Bigrama „pentru” formează un dreptunghi - este înlocuită cu „zhb”; Bigrama „shi” este într-o coloană - înlocuită cu „yu”; Bigrama „fr” este într-o singură linie - este înlocuită cu „xc”; Bigrama „ov” formează un dreptunghi - este înlocuită cu „yzh”; Bigrama „an” este într-o singură linie - înlocuită cu „ba”; Bigrama „dar” formează un dreptunghi - este înlocuită cu „sunt”; Bigrama „es” formează un dreptunghi - este înlocuită cu „gt”; Bigrama „oya” formează un dreptunghi - este înlocuită cu „ka”; Bigrama „despre” formează un dreptunghi - este înlocuită cu „pa”; Bigrama „shche” formează un dreptunghi - este înlocuită cu „shyo”; Bigrama „ni” formează un dreptunghi - este înlocuită cu „un”; Bigrama „ee” formează un dreptunghi și este înlocuită cu „gi”. Codul este „zhb yue xs yzh ba am gt ka pa she an gi”. Pentru a decripta, trebuie să utilizați inversarea acestor reguli, eliminând caracterele eu(sau X) dacă nu au sens în mesajul original. Era format din două discuri - un disc fix extern și un disc mobil intern, pe care erau imprimate literele alfabetului. Procesul de criptare a implicat găsirea literei de text simplu pe unitatea externă și înlocuirea acesteia cu litera de pe unitatea internă de sub ea. După aceasta, discul intern a fost deplasat cu o poziție, iar a doua literă a fost criptată folosind noul alfabet de cifră. Cheia acestui cifr a fost ordinea literelor de pe discuri și poziția inițială a discului intern față de cel extern. Masa Trisemus. Unul dintre cifrurile inventate de starețul german Trisemus a fost un cifr multi-alfabetic bazat pe așa-numita „masă Trisemus” - o masă cu laturile egale cu n, Unde n– numărul de caractere din alfabet. În primul rând al matricei literele sunt scrise în ordinea ordinii lor în alfabet, în al doilea - aceeași succesiune de litere, dar cu o deplasare ciclică cu o poziție la stânga, în al treilea - cu o deplasare ciclică. deplasare cu două poziții la stânga etc. Fig.4.17. Masa Trisemus Prima linie este, de asemenea, un alfabet pentru literele text simplu. Prima literă a textului este criptată pe prima linie, a doua literă pe a doua și așa mai departe. După ce au folosit ultima linie, revin la prima. Deci mesajul „ABRAMOV” va lua forma „AVTGRUZ”. Sistem de criptare Vigenère.În 1586, diplomatul francez Blaise Vigenère a prezentat în fața comisiei lui Henric al III-lea o descriere a unui cifru simplu, dar destul de puternic, care se baza pe tabelul Trisemus. Înainte de criptare, o cheie este selectată dintre caracterele alfabetice. Procedura de criptare în sine este următoarea. Al-lea caracter al mesajului deschis din prima linie determină coloana, iar al-lea caracter al cheii din coloana din stânga determină rândul. La intersecția rândului și coloanei va fi al-lea caracter plasat în cifrgramă. Dacă lungimea cheii este mai mică decât mesajul, atunci aceasta este reutilizată. De exemplu, mesajul original este „ABRAMOV”, cheia este „UNCLE”, codul de criptare este „DAFIYOYE”. Pentru dreptate, trebuie remarcat că paternitatea acestui cifr îi aparține italianului Giovanni Battista Bellaso, care l-a descris în 1553. Istoria „a ignorat un fapt important și a numit cifrul după Vigenère, în ciuda faptului că nu a făcut nimic pentru a-l crea. .” Bellazo a sugerat să cheme un cuvânt sau o expresie secretă parolă(parolă italiană; parole în franceză - cuvânt). În 1863, Friedrich Kasiski a publicat un algoritm pentru atacarea acestui cifr, deși sunt cunoscute cazuri de spargere a cifrului său de către unii criptoanaliști experimentați. În special, în 1854, cifrul a fost spart de inventatorul primului computer analitic, Charles Babbage, deși acest fapt a devenit cunoscut abia în secolul al XX-lea, când un grup de oameni de știință a analizat calculele și notele personale ale lui Babbage. În ciuda acestui fapt, cifrul Vigenère a avut reputația de a fi extrem de rezistent la crăpare manuală pentru o lungă perioadă de timp. Astfel, faimosul scriitor și matematician Charles Lutwidge Dodgson (Lewis Carroll), în articolul său „Cifrul alfabetic”, publicat într-o revistă pentru copii în 1868, a numit cifrul Vigenère de nescăpat. În 1917, revista de știință de popularitate Scientific American a descris și cifrul Vigenère ca fiind indestructibil. Mașini rotative. Ideile lui Alberti și Bellaso au fost folosite pentru a crea mașini rotative electromecanice în prima jumătate a secolului al XX-lea. Unele dintre ele au fost folosite în diferite țări până în anii 1980. Cele mai multe dintre ele foloseau rotoare (roți mecanice), a căror poziție relativă a determinat alfabetul de cifrat curent folosit pentru a efectua înlocuirea. Cea mai faimoasă dintre mașinile rotative este mașina germană Enigma al doilea război mondial. Pinii de ieșire ai unui rotor sunt conectați la pinii de intrare ai următorului rotor și atunci când simbolul mesajului original este apăsat pe tastatură, se finalizează un circuit electric, în urma căruia se aprinde becul cu simbolul de înlocuire a cifrului. Fig.4.19. Sistem rotor Enigma [www.cryptomuseum.com] Efectul de criptare al Enigma este afișat pentru două taste apăsate succesiv - curentul trece prin rotoare, este „reflectat” din reflector, apoi din nou prin rotoare. Fig.4.20. Schema de criptare Nota. Liniile gri arată alte posibile circuite electriceîn interiorul fiecărui rotor. Scrisoare O este criptat diferit atunci când sunt făcute apăsări succesive de taste, mai întâi în G, apoi în C. Semnalul ia un traseu diferit din cauza rotației unuia dintre rotoare după apăsarea literei anterioare a mesajului original. 3. Descrieți tipurile de cifruri de substituție. ,
,
, și așa mai departe, dar la alte elemente de interfață.
Dar...
A1Z26
Cod Morse
Braille
Pagini de coduri
Cifruri de drepturi de autor
Bărbați care dansează
Alfabetul lui Thomas More
Cifre din seria animată „Gravity Falls”
Bill Cipher
Stanford Pines (diarist)
Alfabetul Jedi din Războiul Stelelor
Alfabetul extraterestru din Futurama
Alfabetul kryptonic al lui Superman
Alfabete bionicle
O B ...
eu
M A M B ...
M I
O B ÎN G D E Eu ŞI Z ŞI Y LA L M N DESPRE P R CU T U F X C H Sh SCH Kommersant Y b E Yu eu
D eu ŞI N O B ÎN G E Eu ŞI Z Y LA L M DESPRE P R CU T U F X C H Sh SCH Kommersant Y b E Yu
1
2
3
4
5
6
1
O B ÎN G D E
2
Eu ŞI Z ŞI Y LA
3
L M N DESPRE P R
4
CU T U F X C
5
H Sh SCH Kommersant Y b
6
E Yu eu -
-
-
Nu. Scrisoare Frecvență, % Nu. Scrisoare Frecvență, %
1
DESPRE 10.97
18
b 1.74
2
E 8.45
19
G 1.70
3
O 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
CU 5.47
24
X 0.97
8
R 4.73
25
ŞI 0.94
9
ÎN 4.54
26
Sh 0.73
10
L 4.40
27
Yu 0.64
11
LA 3.49
28
C 0.48
12
M 3.21
29
SCH 0.36
13
D 2.98
30
E 0.32
14
P 2.81
31
F 0.26
15
U 2.62
32
Kommersant 0.04
16
eu 2.01
33
Eu 0.04
17
Y 1.90
O B ÎN G D E
(yo)ŞI Z ŞI
(Y)LA L M N DESPRE P R CU T U F X C H Sh SCH Kommersant Y b E Yu eu
O 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
ÎN 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
EI) 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
eu (Y) 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
LA 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
DESPRE 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
CU 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
Sh 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
Kommersant 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
E 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
eu 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 eu ŞI N O B
ÎN G E Eu ŞI Z
Y LA L M DESPRE P
R CU T U F X
C H Sh SCH Kommersant Y
b E Yu -
1
2
O B ÎN G D E Eu ŞI Z ŞI Y LA L M N DESPRE P R CU T U F X C H Sh SCH Kommersant Y b E Yu eu
B ÎN G D E Eu ŞI Z ŞI Y LA L M N DESPRE P R CU T U F X C H Sh SCH Kommersant Y b E Yu eu O
ÎN G D E Eu ŞI Z ŞI Y LA L M N DESPRE P R CU T U F X C H Sh SCH Kommersant Y b E Yu eu O B
G D E Eu ŞI Z ŞI Y LA L M N DESPRE P R CU T U F X C H Sh SCH Kommersant Y b E Yu eu O B ÎN
D E Eu ŞI Z ŞI Y LA L M N DESPRE P R CU T U F X C H Sh SCH Kommersant Y b E Yu eu O B ÎN G
E Eu ŞI Z ŞI Y LA L M N DESPRE P R CU T U F X C H Sh SCH Kommersant Y b E Yu eu O B ÎN G D
Eu ŞI Z ŞI Y LA L M N DESPRE P R CU T U F X C H Sh SCH Kommersant Y b E Yu eu O B ÎN G D E
ŞI Z ŞI Y LA L M N DESPRE P R CU T U F X C H Sh SCH Kommersant Y b E Yu eu O B ÎN G D E Eu
Z ŞI Y LA L M N DESPRE P R CU T U F X C H Sh SCH Kommersant Y b E Yu eu O B ÎN G D E Eu ŞI
ŞI Y LA L M N DESPRE P R CU T U F X C H Sh SCH Kommersant Y b E Yu eu O B ÎN G D E Eu ŞI Z
Y LA L M N DESPRE P R CU T U F X C H Sh SCH Kommersant Y b E Yu eu O B ÎN G D E Eu ŞI Z ŞI
LA L M N DESPRE P R CU T U F X C H Sh SCH Kommersant Y b E Yu eu O B ÎN G D E Eu ŞI Z ŞI Y
L M N DESPRE P R CU T U F X C H Sh SCH Kommersant Y b E Yu eu O B ÎN G D E Eu ŞI Z ŞI Y LA
M N DESPRE P R CU T U F X C H Sh SCH Kommersant Y b E Yu eu O B ÎN G D E Eu ŞI Z ŞI Y LA L
N DESPRE P R CU T U F X C H Sh SCH Kommersant Y b E Yu eu O B ÎN G D E Eu ŞI Z ŞI Y LA L M
DESPRE P R CU T U F X C H Sh SCH Kommersant Y b E Yu eu O B ÎN G D E Eu ŞI Z ŞI Y LA L M N
P R CU T U F X C H Sh SCH Kommersant Y b E Yu eu O B ÎN G D E Eu ŞI Z ŞI Y LA L M N DESPRE
R CU T U F X C H Sh SCH Kommersant Y b E Yu eu O B ÎN G D E Eu ŞI Z ŞI Y LA L M N DESPRE P
CU T U F X C H Sh SCH Kommersant Y b E Yu eu O B ÎN G D E Eu ŞI Z ŞI Y LA L M N DESPRE P R
T U F X C H Sh SCH Kommersant Y b E Yu eu O B ÎN G D E Eu ŞI Z ŞI Y LA L M N DESPRE P R CU
U F X C H Sh SCH Kommersant Y b E Yu eu O B ÎN G D E Eu ŞI Z ŞI Y LA L M N DESPRE P R CU T
F X C H Sh SCH Kommersant Y b E Yu eu O B ÎN G D E Eu ŞI Z ŞI Y LA L M N DESPRE P R CU T U
X C H Sh SCH Kommersant Y b E Yu eu O B ÎN G D E Eu ŞI Z ŞI Y LA L M N DESPRE P R CU T U F
C H Sh SCH Kommersant Y b E Yu eu O B ÎN G D E Eu ŞI Z ŞI Y LA L M N DESPRE P R CU T U F X
H Sh SCH Kommersant Y b E Yu eu O B ÎN G D E Eu ŞI Z ŞI Y LA L M N DESPRE P R CU T U F X C
Sh SCH Kommersant Y b E Yu eu O B ÎN G D E Eu ŞI Z ŞI Y LA L M N DESPRE P R CU T U F X C H
SCH Kommersant Y b E Yu eu O B ÎN G D E Eu ŞI Z ŞI Y LA L M N DESPRE P R CU T U F X C H Sh
Kommersant Y b E Yu eu O B ÎN G D E Eu ŞI Z ŞI Y LA L M N DESPRE P R CU T U F X C H Sh SCH
Y b E Yu eu O B ÎN G D E Eu ŞI Z ŞI Y LA L M N DESPRE P R CU T U F X C H Sh SCH Kommersant
b E Yu eu O B ÎN G D E Eu ŞI Z ŞI Y LA L M N DESPRE P R CU T U F X C H Sh SCH Kommersant Y
E Yu eu O B ÎN G D E Eu ŞI Z ŞI Y LA L M N DESPRE P R CU T U F X C H Sh SCH Kommersant Y b
Yu eu O B ÎN G D E Eu ŞI Z ŞI Y LA L M N DESPRE P R CU T U F X C H Sh SCH Kommersant Y b E
eu O B ÎN G D E Eu ŞI Z ŞI Y LA L M N DESPRE P R CU T U F X C H Sh SCH Kommersant Y b E Yu