Vapaamuurarien aakkoset. Koodaus

Kotiin / Mobiililaitteet

MATEMATIIKKA

Vestn. Ohm. un-ta. 2016. Nro 3. S. 7-9.

UDC 512.4 V.A. Romankov

VAIHTOEHTO SEMANTTISELLISESTI VAHVASTA SALAUKSESTA PERUSTEELLA RSA*

Artikkelin päätavoitteena on ehdottaa toista tapaa valita yksi RSA-salausjärjestelmään perustuvan salausjärjestelmän pääparametreista, jota kirjoittaja on ehdottanut aiemmissa töissä. Alkuperäinen versio perustuu monimutkaisiin elementtien järjestysten määrittämiseen modulaaristen renkaiden multiplikatiivisissa ryhmissä. Ehdotettu menetelmä muuttaa tämän perustan toiseksi vaikeaksi ongelmaksi määrittää, kuuluvatko modulaaristen renkaiden multiplikatiivisten ryhmien elementit näiden ryhmien potenssiin. Tällaisen ongelman erikoistapaus on klassinen jäännöksen neliöllisyyden määrittämistehtävä, jota pidetään laskennallisesti vaikeana. Tämä tehtävä määrittää semanttisen vakauden tunnettu järjestelmä Goldwasser-Micali-salaus. Ehdotetussa versiossa salausmenetelmän semanttinen vahvuus perustuu ongelman laskennalliseen monimutkaisuuteen määrittää, kuuluvatko modulaaristen renkaiden multiplikatiivisten ryhmien elementit näiden ryhmien potenssiin.

Avainsanat: RSA-salausjärjestelmä, salaus julkinen avain, modulaarinen rengas, neliöjäännös, semanttinen stabiilius.

1. Johdanto

Tämän työn tarkoituksena on esitellä uusia elementtejä tekijän vuonna ottamaan käyttöön RSA-pohjaiseen salausmalliin. Nimittäin: ehdotetaan toista tapaa määritellä tässä kaaviossa esiintyvät alaryhmät. Tämä menetelmä johtaa siihen, että taustalla oleva laskennallisesti monimutkainen ongelma modulaaristen renkaiden multiplikatiivisten ryhmien elementtien järjestysten määrittämisessä korvataan laskennallisesti monimutkaisella ongelmalla näiden ryhmien annettujen potenssien syöttämisessä. Erikoinen tapaus viimeinen ongelma on klassinen ongelma sen määrittämisessä, onko modulaarisen renkaan multiplikatiivisen ryhmän elementin jäännös neliöllinen.

Rivest, Shamir ja Adleman esittelivät julkisen avaimen RSA-salausjärjestelmän vuonna 1977. Sitä käytetään laajalti kaikkialla maailmassa ja se sisältyy lähes kaikkiin kryptografian oppikirjoihin. Katso esimerkiksi tästä järjestelmästä ja sen kryptografisesta vahvuudesta.

Järjestelmän perusversio on deterministinen, eikä sillä tästä syystä ole semanttisen salaisuuden ominaisuutta, joka on tärkein julkisen avaimen salausjärjestelmän kryptografisen vahvuuden indikaattori. Siksi käytännössä käytetään järjestelmän muunnelmia, joiden tarkoituksena on tuoda siihen todennäköisyyselementti ja siten varmistaa semanttisen salaisuuden ominaisuuden toteutuminen.

Asennus: salausalusta

Olkoon n kahden suuren erillisen alkuluvun p ja q tulo. Jäännösrengas Zn on valittu salausjärjestelmän alustaksi. Moduuli n ja alusta Zn ovat järjestelmän avoimia elementtejä, luvut p ja q ovat salaisia.

* Tutkimusta tuki Venäjän perustutkimussäätiö (projekti 15-41-04312).

© Romankov V.A., 2016

Romankov V.A.

Euler-funktiota merkitään φ:N ^ N, in tässä tapauksessa otetaan arvo φ(n)= (p-1)(q-1). Siten renkaan Zn multiplikatiivisen ryhmän Z*n järjestys on (p-1)(q-1). Näistä käsitteistä katso esimerkiksi.

Seuraavaksi valitaan kaksi alaryhmää M ja H ryhmän Z*n yhteisaloitusjaksojen r ja t vastaavasti. Nämä alaryhmät ehdotetaan määriteltäväksi niiden generoivien elementtien kautta M = gr(g1,...,gk), H = gr(j1,...,hl). Muista, että ryhmän G jakso t(G) on pienin luku t siten, että dr = 1 mille tahansa elementille geG. Ryhmän Z*n jakso on luku t (n), joka on yhtä suuri kuin lukujen p-1 ja q-1 pienin yhteinen kerrannainen. Alaryhmät M ja H voivat olla syklisiä ja ne voidaan määrittää yhdellä generoivalla elementillä. Alaryhmien M ja H generoivat elementit katsotaan avoimina, kun taas alaryhmien r ja t jaksoja pidetään salaisina.

Kohdassa ja selitetään, kuinka tehokkaasti suoritetaan määrätty alaryhmien M ja H valinta, kun tiedetään salaiset parametrit p ja q. Lisäksi voit ensin asettaa r:n ja t:n ja sitten valita p ja q, ja vasta sitten suorittaa lisätoimia. Huomaa, että tiettyjen kertalukujen elementtien rakentaminen äärellisiin kenttiin suoritetaan standardinmukaisella tehokkaalla menettelyllä, joka on kuvattu esimerkiksi. Siirtyminen annettujen kertalukujen elementtien konstruointiin modulaaristen renkaiden Zn multiplikatiivisiin ryhmiin Z*n tapahtuu ilmeisellä tavalla käyttämällä kiinalaista jäännöslausetta tai . Asennus: avainten valinta Salausavain e on mikä tahansa luonnollinen luku, jonka alkuluku on r. Purkuavain d = ^ lasketaan yhtälöstä

(te)d1 = 1 (modr). (1)

Avain d on olemassa, koska parametri d1 lasketaan te:n ja r:n keskinäisen ensisijaisuuden vuoksi. Avain e on julkinen, avain d ja parametri d1 ovat salaisia.

Salausalgoritmi Lähettääkseen viestin avoimen verkon kautta - m alaryhmän M elementti, Alice valitsee satunnaisen alkion h alaryhmästä H ja laskee elementin hm. Vaihteisto näyttää

c = (hm)e (modn). (2)

Salauksen purkualgoritmi

Bob purkaa vastaanotetun viestin c salauksen seuraavasti:

cd=m(modn). (3)

Oikean salauksen purkamisen selitys

Koska ed=1 (modr), on olemassa kokonaisluku k siten, että ed = 1 + rk. Sitten

cd = (hm)ed = (ht)edi m (mr)k = m (mod n). (4) Eli elementti h kirjoitetaan aliryhmän H alkioksi ryhmäsanan u(x1,.,xl) arvon muodossa alaryhmän H generoivista alkioista h1t... ,hl. Itse asiassa me

valitse sana u(x1,.,xl) ja laske sitten sen arvo h = u(h1t..., hl). Tämä tarkoittaa erityisesti sitä, että generointielementit h1t... ,hl ovat auki.

Järjestelmän kryptografinen vahvuus

Kaavan kryptografinen vahvuus perustuu vaikeuteen määrittää tämän alaryhmän jakso tai järjestys ryhmän Z*n alaryhmän H tietyistä generoivista elementeistä. Jos elementin järjestys voitaisiin laskea tehokkaalla algoritmilla, niin laskemalla alaryhmän H generoivien alkioiden kertaluvut o rd(h1), ..., ord(hl), saataisiin sen jakso t = t (H), yhtä suuri kuin niiden pienin yhteinen kerrannainen . Tämä mahdollistaisi varjostustekijän h poistamisen tästä salausvaihtoehdosta muuntamalla c1 = met(modri), vähentämällä salauksen purkuprosessin klassiseen RSA-järjestelmään julkisella salausavaimella et.

3. Toinen tapa määritellä alaryhmä H

Tässä artikkelissa ehdotetaan toista vaihtoehtoa aliryhmän H määrittämiseksi tarkasteltavassa salausjärjestelmässä. Tarkastellaan ensin sen erikoistapausta, joka liittyy tunnistettuun ratkaisemattomaan ongelmaan ryhmän Z*n jäännöksen neliöllisyyden määrittämisessä. Muista, että jäännöstä aeZ^ kutsutaan neliömäiseksi, jos on sellainen elementti xeZ*n, että x2= a (modn). Kaikki neliötähteet muodostavat ryhmän Z*n alaryhmän QZ*n. Ryhmän mielivaltaisen jäännöksen neliöllisyyden määrittämisongelmaa pidetään laskennallisesti vaikeasti ratkaistavana. Tunnettu semanttisesti vahva Goldwasser-Micali-salausjärjestelmä perustuu tähän ominaisuuteen. Sen semanttinen stabiilisuus määräytyy täysin jäännöksen neliöllisyyden määrittämisongelman ratkaisemattomuudesta.

Oletetaan, että parametrit p ja q valitaan ehdolla p, q = 3 (mod 4), eli p = 4k +3, q = 41 +3. Jäännösten neliölliseen luonteeseen liittyvissä kaavioissa tämä oletus näyttää luonnolliselta ja esiintyy melko usein. Jos se pätee, kuvaus p:QZ*n ^ QZ*n, p:x^x2 on bijektio.

Ryhmän neliöllisten tähteiden alaryhmän QZ*n indeksi on 4 Z*n:ssä, katso esimerkiksi. Sen järjestys o^^2^) on yhtä suuri kuin φ(n)/4 = (4k + 2)(41 + 2)/4= 4kl + 2k + 21 + 1, eli se on pariton luku.

Yllä olevassa salauskaaviossa oletetaan H = QZ*n. Millä tahansa alaryhmän H alkiolla on pariton järjestys, koska jakso t(Z*n), joka on yhtä suuri kuin lukujen p - 1 = 4k +2 ja q - 1 = 41 +2 pienin yhteinen kerrannainen, on jaollinen kahdella , mutta ei jaollinen 4:llä. Suurin mahdollinen vaihtoehto M:lle on 4:n kertaluvun aliryhmä, jonka alkioiden kertaluku on 2 tai 4. Jos on olemassa tehokas tapa tilauksen (tai ainakin sen pariteetin) laskeminen mielivaltainen elementti

Semanttisesti vahva RSA-salausvaihtoehto

ryhmä 2*n, niin jäännöksen neliöllisyyden määritysongelma on tehokkaasti ratkaistu. Kaavan haittana tällä valinnalla on tekstiavaruuden alhainen teho - alaryhmä M. Itse asiassa kaavio kopioi jo mainitun tunnetun Gol-Dwasser-Micali-kaavion.

Saamme suuremmat mahdollisuudet seuraavalla valinnallamme. Olkoon alkuluku, jota voidaan pitää riittävän suurena. Olkoot p ja q alkulukuja siten, että ainakin yksi luvuista p - 1 tai q - 1 on jaollinen luvulla s. Selitetään, että voidaan valita s ja sitten tehokkaasti löytää p tai q annetulla ominaisuudella. Oletetaan, että lukua p haetaan muodossa 2sx +1. x muutetaan ja tuloksena olevan p:n yksinkertaisuus tarkistetaan, kunnes se osoittautuu yksinkertaiseksi.

Määritellään aliryhmä Н =, joka koostuu ryhmän 2*n alkioiden s-potensseista (s = 2:lle tämä on aliryhmä QZ*n). Jos p = 52k + su + 1 ja q = 521 + sv +1 (tai q = sl + V +1), jossa luvut u ja V eivät ole jaollisia s:llä, niin alaryhmän järjestys o^(H) H, jolla on 2 ryhmässä *n indeksi b2 (tai indeksi s, jos q = sl + V +1), on yhtä suuri kuin B2k1 + Bku + b1n + w>. Tämä tilaus on s. Tämä tarkoittaa erityisesti sitä, että alaryhmän H alkioilla on kertalukuja, jotka eivät ole jaollisia s:llä. Jos alkio on aliryhmän H ulkopuolella, sen järjestys jaetaan s:llä, koska s jakaa ryhmän järjestyksen. Jos ryhmän 2*n alkion järjestyksen laskemisen (tai sen jaollisuuden määrittämisen s:llä) ongelma on tehokkaasti ratkaistavissa ryhmässä 2*n, niin myös aliryhmään pääsyn ongelma ratkeaa siinä tehokkaasti.

Valittaessa alaryhmä H tällä tavalla, meillä on mahdollisuus valita M:ksi syklinen alaryhmä, jonka kertaluokka on r = 52 (tai kertaluokkaa s). Tällainen alaryhmä on olemassa, koska ryhmän 2*n järjestys on yhtä suuri kuin (p-1)^-1) = (52k + vi)^21 + sv) (tai (52k + vi)^1 + V)), on jaollinen luvulla 52 (sillä). H:n määrittämiseksi riittää, että määritetään s. Lisäksi mille tahansa alaryhmän M valinnalle meillä on M*2 =1. Jos sanomaa m purettaessa on mahdollista saada muotoa tel oleva elementti, jossa ed on koprime s:n kanssa, niin etsimällä kokonaisluvut y ja z siten, että edy + s2z = 1, voidaan laskea teL = m.

Alaryhmän H generoivia elementtejä ei kuitenkaan mainita tyyppiä määritettäessä, joten jos ryhmän 2*n elementtien järjestysten laskemiseen on olemassa algoritmi, tämä ei mahdollista alaryhmän jaksoa.

H, mikä olisi ollut mahdollista alkuperäisessä versiossa alkaen .

Kaavan version kryptografinen vahvuus perustuu vaikeuteen määrittää ryhmän 2*n elementin järjestys. Ehdotetussa versiossa se perustuu Z*s-alaryhmän jakson määrittämisen vaikeuteen. Semanttinen vahvuus Tiedoksi, että c = (hm")e (modn) on salattu viesti muotoa (2), jossa heH, m" = m1 tai m" = m2. Salausta pidetään semanttisesti vahvana, jos se on mahdotonta määrittää tehokkaasti mitä kaikki -vastaa c. Oikea vastaus mt (i = 1 tai 2) saadaan jos ja vain jos cmje kuuluu H:lle. Tämä tarkoittaa, että salaus on semanttisesti vahva silloin ja vain, jos esiintymisongelma H on käytännössä ratkaisematon tässä artikkelissa käsitellyssä tapauksessa s-tähteiden Z*s-alaryhmään pääsyn ongelma. Erikoistapauksessa s = 2 saadaan hyvin tunnettu, vaikeasti pidetty ongelma *n, johon Goldwasser-Micali-salausjärjestelmän ja useiden muiden salausjärjestelmien semanttinen vahvuus perustuu.

KIRJALLISUUS

Romankov V. A. Uusi semanttisesti vahva RSA-pohjainen julkisen avaimen salausjärjestelmä // Sovellettu diskreetti matematiikka. 2015. nro 3 (29). s. 32-40.

Rivest R., Shamir A., ​​​​Adleman L. Menetelmä digitaalisten allekirjoitusten ja julkisen avaimen salausjärjestelmien hankkimiseksi // Comm. ACM. 1978. Voi. 21, nro 2. P. 120126.

Hinek M. RSA:n ja sen muunnelmien krypta-analyysi. Boca Raton: Chapman & Hall/CRC, 2010.

Kappale Y. Y. Kryptanalyyttiset hyökkäykset RSA:ta vastaan. Berliini: Springer, 2008.

Leima M., alhainen R.M. Sovellettu kryptausanalyysi. Salausten rikkominen todellisessa maailmassa. Hoboken: JohnWiley&Sons, 2007.

Roman"kov V.A. Uusi todennäköisyyspohjainen julkisen avaimen salaus, joka perustuu RAS-salausjärjestelmään // Croups, Complexity, Cryptology. 2015. Vol. 7, No. 2. P. 153156.

Romankov V.A. Johdatus kryptografiaan. M.: Foorumi, 2012.

Menezes A., Ojrschot P.C., Vanstone S.A. Sovellettavan kryptografian käsikirja. Boca Raton: CRC Press, 1996.

Goldwasser S., Micali S. Todennäköisyyspohjainen salaus ja kuinka pelata henkistä pokeria pitämällä salassa kaikki osittaiset tiedot // Proc. 14th Symposium on Theory of Computing, 1982, s. 365-377.

Verkkosuunnittelijat ja -kehittäjät käyttävät mielellään ammattikieltä ja hankaluuksia, joita meidän on joskus vaikea ymmärtää. Tämä artikkeli keskittyy semanttiseen koodiin. Selvitetään mikä se on!

Mikä on semanttinen koodi?

Vaikka et olisi web-suunnittelija, tiedät todennäköisesti, että sivustosi on kirjoitettu HTML-kielellä. HTML oli alun perin tarkoitettu välineeksi kuvailla asiakirjan sisältöä sen sijaan, että se näyttäisi visuaalisesti miellyttävältä. Semanttinen koodi palaa tähän alkuperäiseen konseptiin ja rohkaisee web-suunnittelijoita kirjoittamaan koodia, joka kuvaa sisältöä sen sijaan, että miltä sen pitäisi näyttää. Esimerkiksi sivun otsikko voidaan ohjelmoida seuraavasti:

Tämä on sivun otsikko

Tämä tekisi otsikosta suuren ja lihavoitun, jolloin se näyttää sivun otsikolta, mutta siinä ei ole mitään, mikä kuvaisi sitä koodin "otsikkona". Tämä tarkoittaa, että tietokone ei tunnista sitä sivun otsikoksi.

Kun kirjoitat otsikkoa semanttisesti, jotta tietokone tunnistaisi sen "otsikkona", meidän on käytettävä seuraavaa koodia:

Tämä on otsikko

Otsikon ulkoasu voidaan määrittää erillinen tiedosto, jota kutsutaan "Cascading Style Sheetsiksi" (CSS), häiritsemättä kuvaavaa (semanttista) HTML-koodiasi.

Miksi semanttinen koodi on tärkeä?

Tietokoneen kyky tunnistaa sisältöä oikein on tärkeää useista syistä:

  • Monet näkövammaiset ihmiset luottavat puheselaimiin lukeakseen sivuja. Tällaiset ohjelmat eivät pysty tulkitsemaan sivuja tarkasti, ellei niitä ole selkeästi selitetty. Toisin sanoen semanttinen koodi toimii saavutettavuuden välineenä.
  • Hakukoneiden on ymmärrettävä, mistä sisällöstäsi on kyse voidakseen sijoittaa sinut oikein hakukoneissa. Semanttisella koodilla on maine sijoitteluiden parantajana. hakukoneet, koska "hakurobotit" ymmärtävät sen helposti.

Semanttisella koodilla on myös muita etuja:

  • Kuten yllä olevasta esimerkistä näet, semanttinen koodi on lyhyempi ja lataus on nopeampaa.
  • Semanttinen koodi tekee sivuston päivittämisestä helpompaa, koska voit käyttää otsikkotyylejä koko sivustossa sivukohtaisen sijaan.
  • Semanttinen koodi on helppo ymmärtää, joten jos uusi web-suunnittelija poimii koodin, hänen on helppo jäsentää.
  • Koska semanttinen koodi ei sisällä suunnitteluelementtejä, muuta ulkonäkö verkkosivusto on mahdollista ilman koko HTML:n uudelleenkoodausta.
  • Jälleen kerran, koska suunnittelu pidetään erillään sisällöstä, semanttinen koodi sallii kuka tahansa lisätä tai muokata sivuja ilman hyvää silmää suunnitteluun. Kuvaat vain sisällön, ja CSS määrittää, miltä sisältö näyttää.

Kuinka voit varmistaa, että verkkosivusto käyttää semanttista koodia?

Päällä tällä hetkellä ei ole työkalua, joka voi tarkistaa semanttisen koodin. Kaikki johtuu siitä, että koodin värit, fontit tai asettelut tarkistetaan sisällön kuvauksen sijaan. Jos koodianalyysi kuulostaa pelottavalta, hyvä lähtökohta on kysyä web-suunnittelijaltasi, onko hän koodaamassa semantiikkaa? Jos hän katsoo sinua tyhjän päälle tai alkaa puhua naurettavaa, voit olla varma, että hän ei koodaa tällä tavalla. Tällä hetkellä sinun on päätettävä, annatko hänelle uuden suunnan hänen työssään vai etsitkö itsellesi uuden suunnittelijan?!

HTML-koodin semantiikka on aina kuuma aihe. Jotkut kehittäjät yrittävät aina kirjoittaa semanttista koodia. Toiset arvostelevat dogmaattisia kannattajia. Ja jotkut eivät edes tiedä, mikä se on ja miksi sitä tarvitaan. Semantiikka määritellään HTML:ssä tageissa, luokissa, tunnuksissa ja attribuuteissa, jotka kuvaavat tarkoitusta, mutta eivät määrittele niiden sisältämää tarkkaa sisältöä. Eli puhumme sisällön ja sen muodon erottamisesta.

Aloitetaan ilmeisellä esimerkillä.

Huono koodin semantiikka

Artikkelin otsikko
Ja kirjoittaja
Inko Gnito.

Hyvä koodin semantiikka

Artikkelin otsikko

Jonkun kirjoittaman artikkelin teksti. Inko Gnito- sen kirjoittaja.

Olipa HTML5 mielestäsi käyttövalmis tai ei, käyttö

tässä tapauksessa se on tavallista houkuttelevampi
osoittaen luokan. Artikkelin otsikosta tulee otsikko, sisällysluettelosta kappale ja lihavoidusta tekstistä tunniste. .

Mutta kaikkea ei esitetä niin selvästi HTML5-tunnisteilla. Katsotaanpa joukko luokan nimiä ja katsotaan, täyttävätkö ne semanttiset vaatimukset.

Ei semanttinen koodi. Tämä on klassinen esimerkki. Jokainen CSS-ruudukon työpöytä käyttää tämäntyyppisiä luokkanimiä ruudukkoelementtien määrittämiseen. Olipa kyseessä "yui-b", "grid-4" tai "spanHalf" - tällaiset nimet ovat lähempänä merkintöjen määrittämistä kuin sisällön kuvaamista. Niiden käyttö on kuitenkin väistämätöntä useimmissa tapauksissa, kun työskennellään modulaaristen ruudukkomallien kanssa.

Semanttinen koodi. Alatunniste on saanut vahvan merkityksen web-suunnittelussa. Tämä on sivun alaosa, joka sisältää elementtejä, kuten toistuvan navigoinnin, käyttöoikeudet, tekijän tiedot ja niin edelleen. Tämä luokka määrittelee ryhmän kaikille näille elementeille kuvaamatta niitä.

Jos olet siirtynyt käyttämään HTML5:tä, on parempi käyttää elementtiä

tällaisissa tapauksissa. Huomautus koskee myös kaikkia muita verkkosivun osia (otsikon tulee olla
, sivupalkki -

© 2024 ermake.ru - Tietoja PC-korjauksesta - Tietoportaali