Offentlig nøgle kryptografisk system (en slags asymmetrisk kryptering , asymmetrisk kryptering ) - et kryptering og/eller elektronisk signatur (ES) system, hvor den offentlige nøgle transmitteres over en åben (det vil sige ubeskyttet, observerbar) kanal og bruges til at verificere ES og for krypteringsmeddelelser. For at generere en ES og for at dekryptere beskeden, bruges en privat nøgle [1] . Offentlig nøgle kryptografiske systemer er nu meget brugt i forskellige netværksprotokoller , især TLS-protokoller og dens forgænger SSL (underliggende HTTPS ), SSH . Bruges også i PGP , S/MIME .
Asymmetrisk offentlig nøglekryptering er baseret på følgende principper:
Hvis det er nødvendigt at sende en krypteret besked til ejeren af nøglerne, skal afsenderen modtage den offentlige nøgle. Afsenderen krypterer sin besked med modtagerens offentlige nøgle og sender den til modtageren (ejeren af nøglerne) over åbne kanaler. Samtidig kan ingen dekryptere beskeden undtagen ejeren af den private nøgle.
Som et resultat kan beskeder krypteres sikkert, samtidig med at dekrypteringsnøglen holdes hemmelig for alle – også beskedafsenderne.
Dette princip kan forklares gennem hverdagsanalogien "lås - nøgle til låsen" for at sende en pakke. Deltager A har en personlig lås og en nøgle til den. Hvis deltager A ønsker at modtage en hemmelig pakke fra deltager B, så giver han ham offentligt sit slot. Deltager B låser låsen på den hemmelige pakke og sender den til deltager A. Efter at have modtaget pakken, åbner deltager A låsen med nøglen og modtager pakken.
At vide om overførslen af låsen og opsnappe pakken vil ikke give noget til en potentiel angriber: kun deltager A har nøglen til låsen, så pakken kan ikke åbnes.
Ideen om offentlig nøglekryptografi er meget tæt forbundet med ideen om envejsfunktioner , det vil sige sådanne funktioner , at det er ret nemt at finde en værdi fra en kendt værdi , mens bestemmelsen fra er umulig i en rimelig tid.
Men selve envejsfunktionen er ubrugelig i applikationen: den kan kryptere en besked, men den kan ikke dekryptere den. Derfor bruger offentlig nøglekryptografi envejsfunktioner med et smuthul. Et smuthul er en hemmelighed, der hjælper med at tyde. Det vil sige, der eksisterer sådan , at vi ved og , kan beregne . Hvis man for eksempel skiller et ur ad i mange dele, er det meget svært at samle et ur, der virker igen. Men hvis der er en monteringsinstruktion (smuthul), så kan dette problem let løses.
Modtageren af informationen genererer en offentlig nøgle og en "fældedør" (med andre ord den offentlige og private del af nøglen), overfører derefter den offentlige nøgle til afsenderen og beholder "fældedøren" for sig selv. Afsenderen krypterer informationen baseret på den offentlige nøgle: Sådan krypteret information er nem at dekryptere, hvis du har både den offentlige nøgle og en "bagdør" på samme tid. Med hensyn til en funktion danner modtageren en bagdør , hvorefter den videregiver information om funktionsparametrene til afsenderen (mens man selv kender funktionsparametrene , er det umuligt at opdage "bagdøren" inden for rimelig tid). Derefter danner afsenderen en krypteret besked , og modtageren udtrækker fra den, vel vidende .
Følgende eksempel hjælper med at forstå ideerne og metoderne til offentlig nøglekryptering - lagring af adgangskoder på en fjerncomputer, som brugerne skal oprette forbindelse til. Hver bruger på netværket har en anden adgangskode. Ved indgangen angiver han navnet og indtaster et hemmeligt kodeord. Men hvis du gemmer adgangskoden på disken på en ekstern computer, så kan nogen læse den (det er især let for administratoren af denne computer at gøre dette) og få adgang til hemmelige oplysninger. For at løse problemet bruges en envejsfunktion. Når du opretter en hemmelig adgangskode, gemmer computeren ikke selve adgangskoden, men resultatet af beregning af funktionen ud fra denne adgangskode og brugernavn. For eksempel kom brugeren Alice med adgangskoden "Gladiolus". Når du gemmer disse data, beregnes resultatet af funktionen ( ALICE_GLADIOLUS ), lad resultatet være strengen CAMOMILE , som vil blive gemt i systemet. Som et resultat vil adgangskodefilen have følgende form:
Navn | (Navn: Adgangskode) |
---|---|
ALICE | KAMILLE |
BØNNE | NARCISSUS |
Login ser nu sådan ud:
Navn: | ALICE |
---|---|
Adgangskode: | GLADIOLUS |
Når Alice indtaster den "hemmelige" adgangskode, tjekker computeren, om funktionen anvendt på ALICE_GLADIOLUS giver det korrekte resultat CAMOMILE gemt på computerens disk. Det er værd at ændre mindst et bogstav i navnet eller i adgangskoden, og resultatet af funktionen vil være helt anderledes. Den "hemmelige" adgangskode er ikke gemt på computeren i nogen form. Adgangskodefilen kan nu ses af andre brugere uden tab af privatliv, da funktionen er næsten irreversibel.
Det foregående eksempel bruger en envejsfunktion uden et smuthul, da det ikke er nødvendigt at hente den originale besked fra den krypterede besked. I det følgende eksempel betragtes et skema med mulighed for at gendanne den oprindelige besked ved hjælp af en "bagdør", det vil sige information, der er svær at finde. For at kryptere teksten kan du tage en stor abonnentfortegnelse, der består af flere tykke bind (det er meget nemt at finde antallet af beboere i byen, der bruger det, men det er næsten umuligt at finde en abonnent ved hjælp af et kendt nummer) . For hvert bogstav fra den krypterede besked vælges et navn, der starter med det samme bogstav. Således tildeles brevet abonnentens telefonnummer. Beskeden, der sendes, for eksempel " BOX ", vil blive krypteret som følger:
Besked | Valgt navn | Kryptotekst |
---|---|---|
Til | Korolev | 5643452 |
O | Orekhov | 3572651 |
R | Ruzaeva | 4673956 |
O | Osipov | 3517289 |
B | Baturin | 7755628 |
Til | Kirsanova | 1235267 |
MEN | Arseniev | 8492746 |
Kryptoteksten vil være en kæde af numre skrevet i den rækkefølge, de har valgt i biblioteket. For at gøre det svært at tyde, bør du vælge tilfældige navne, der begynder med det ønskede bogstav. Således kan den oprindelige besked krypteres med mange forskellige lister over numre (kryptotekster).
Eksempler på sådanne kryptotekster:
Kryptotekst 1 | Kryptotekst 2 | Kryptotekst 3 |
---|---|---|
1235267 | 5643452 | 1235267 |
3572651 | 3517289 | 3517289 |
4673956 | 4673956 | 4673956 |
3517289 | 3572651 | 3572651 |
7755628 | 7755628 | 7755628 |
5643452 | 1235267 | 5643452 |
8492746 | 8492746 | 8492746 |
For at tyde teksten skal du have en opslagsbog udarbejdet efter de stigende tal. Denne mappe er et smuthul (en hemmelighed, der hjælper med at få den indledende tekst) kun kendt af modtageren. Uden data fra begge mapper er det generelt umuligt at tyde teksten, men kun den første mappe er tilstrækkelig til kryptering [2] . I dette tilfælde kan modtageren nemt danne begge mapper på forhånd og kun overføre den første af dem til afsenderen til kryptering.
Lad være nøglerummet og og være henholdsvis krypterings- og dekrypteringsnøglerne. er en krypteringsfunktion for en vilkårlig nøgle , sådan at . Her , hvor er krypteringsteksternes rum, og hvor er meddelelsernes rum.
er en dekrypteringsfunktion, der kan bruges til at finde den originale besked givet chifferteksten : , er krypteringssættet og er det tilsvarende dekrypteringssæt. Hvert par har følgende egenskab: at vide , det er umuligt at løse ligningen , det vil sige, for en given vilkårlig chiffertekst er det umuligt at finde en besked . Det betyder, at det er umuligt at bestemme den tilsvarende dekrypteringsnøgle fra den givne . er en envejsfunktion og er et smuthul [3] .
Nedenfor er et diagram over overførsel af information fra person A til person B. De kan både være enkeltpersoner og organisationer, og så videre. Men for lettere opfattelse er det sædvanligt at identificere deltagerne i programmet med mennesker, oftest omtalt som Alice og Bob. Den deltager, der søger at opsnappe og dekryptere Alices og Bobs beskeder, bliver oftest omtalt som Eve.
Asymmetriske cifre begyndte i New Directions in Modern Cryptography af Whitfield Diffie og Martin Hellman , udgivet i 1976 . Påvirket af Ralph Merkles arbejde med distribution af offentlige nøgler foreslog de en metode til at opnå private nøgler ved hjælp af en offentlig kanal. Denne eksponentielle nøgleudvekslingsmetode, som blev kendt som Diffie-Hellman nøgleudveksling , var den første offentliggjorte praktiske metode til at etablere hemmelig nøgledeling mellem godkendte brugere af en kanal. I 2002 foreslog Hellman at kalde algoritmen "Diffie-Hellman-Merkle", idet han anerkendte Merkles bidrag til opfindelsen af offentlig nøglekryptografi. Den samme ordning blev udviklet af Malcolm Williamson ( eng. Malcolm J. Williamson ) i 1970'erne, men blev holdt hemmelig indtil 1997 . Merkles offentlige nøglefordelingsmetode blev opfundet i 1974 og udgivet i 1978 og kaldes også Merkle-gåden.
I 1977 udviklede MIT- forskerne Ronald Rivest , Adi Shamir og Leonard Adleman en krypteringsalgoritme baseret på faktoriseringsproblemet. Systemet blev opkaldt efter de første bogstaver i deres efternavne ( RSA - Rivest, Shamir, Adleman). Det samme system blev opfundet i 1973 af Clifford Cocks , som arbejdede på Government Communications Center ( GCHQ ), men dette arbejde blev kun opbevaret i centrets interne dokumenter, så dets eksistens blev først kendt i 1977 . RSA var den første algoritme, der var egnet til både kryptering og digital signatur.
Generelt er kendte asymmetriske kryptosystemer baseret på et af de komplekse matematiske problemer, som giver dig mulighed for at bygge envejsfunktioner og bagdørsfunktioner. For eksempel er Merkle-Hellman og Hoare-Rivest kryptosystemer afhængige af det såkaldte backpacking-problem .
Lad der være 3 nøgler , , , fordelt som vist i tabellen.
ansigt | Nøgle |
---|---|
Alice | |
Bønne | |
Carol | |
Dave | , |
Ellen | , |
Franc | , |
Så kan Alice kryptere beskeden med nøglen , og Ellen kan dekryptere med nøglerne , Carol kan kryptere med nøglen , og Dave kan dekryptere med nøglerne . Hvis Dave krypterer beskeden med nøgle , så kan Ellen læse beskeden, hvis med nøgle , så kan Frank læse den, hvis med begge nøgler og , så læser Carol beskeden. Andre deltagere handler på samme måde. Således, hvis et undersæt af nøgler bruges til kryptering, så kræves de resterende nøgler i sættet til dekryptering. Et sådant skema kan bruges til n nøgler.
Krypteret med en nøgle | Dekrypteret med nøgle |
---|---|
og | |
og | |
og | |
, | |
, | |
, |
Overvej først et sæt bestående af tre agenter: Alice, Bob og Carol. Alice får nøgler og , Bob - og , Carol - og . Nu, hvis beskeden, der sendes, er krypteret med nøglen , er det kun Alice, der kan læse den ved sekventielt at anvende nøglerne og . Hvis du vil sende en besked til Bob, krypteres beskeden med nøglen , Carol - med nøglen . Hvis du vil sende en besked til både Alice og Carol, så bruges nøglerne og til kryptering .
Fordelen ved denne ordning er, at der kun kræves én besked og n nøgler for at implementere den (i en ordning med n agenter). Hvis individuelle beskeder sendes, det vil sige, at der bruges separate nøgler for hver agent (i alt n nøgler) og hver besked, så kræves nøgler for at sende beskeder til alle forskellige undersæt.
Ulempen ved denne ordning er, at du også skal udsende en undergruppe af agenter (listen over navne kan være lang), som du vil udsende beskeden til. Ellers bliver hver af dem nødt til at gennemgå alle kombinationer af nøgler på jagt efter en passende. Agenter bliver også nødt til at gemme en betydelig mængde information om nøglerne [4] .
Det ser ud til, at et offentligt nøglekryptosystem er et ideelt system, der ikke kræver en sikker kanal til at overføre krypteringsnøglen. Dette ville betyde, at to legitime brugere kunne kommunikere over en åben kanal uden at skulle mødes for at udveksle nøgler. Det er det desværre ikke. Figuren illustrerer, hvordan Eve, der fungerer som en aktiv interceptor, kan overtage systemet (dekryptere beskeden beregnet til Bob) uden at bryde krypteringssystemet.
I denne model opsnapper Eve den offentlige nøgle sendt af Bob til Alice. Det genererer derefter et nøglepar og "forklæder sig" som Bob ved at sende Alice den offentlige nøgle , som Alice tror er den offentlige nøgle, som Bob har sendt til hende. Eve opsnapper krypterede beskeder fra Alice til Bob, dekrypterer dem med den hemmelige nøgle , genkrypterer dem med Bobs offentlige nøgle og sender beskeden til Bob. Ingen af deltagerne er således klar over, at der er en tredjepart, der enten blot kan opsnappe beskeden eller erstatte den med en falsk besked . Dette understreger behovet for offentlig nøglegodkendelse . Til dette bruges normalt certifikater . Distribueret nøglestyring i PGP løser problemet ved hjælp af garanter [5] .
En anden form for angreb er at beregne den private nøgle fra den offentlige nøgle (figur nedenfor). Kryptanalytikeren kender krypteringsalgoritmen , analyserer den, prøver at finde . Denne proces forenkles, hvis kryptoanalytikeren har opsnappet flere kryptotekster c sendt af person A til person B.
De fleste offentlige nøglekryptosystemer er baseret på problemet med faktorisering af store tal. For eksempel bruger RSA produktet af to store tal som den offentlige nøgle n. Kompleksiteten ved at knække en sådan algoritme ligger i vanskeligheden ved at faktorisere tallet n. Men dette problem kan løses realistisk. Og hvert år bliver nedbrydningsprocessen hurtigere og hurtigere. Nedenfor er faktoriseringsdataene ved hjælp af "Quadratic Sieve"-algoritmen.
År | Antal decimaler i udvidet tal |
Hvor mange gange sværere er det at faktorisere et 512-bit tal |
---|---|---|
1983 | 71 | > 20 mio |
1985 | 80 | > 2 mio |
1988 | 90 | 250 tusind |
1989 | 100 | 30 tusind |
1993 | 120 | 500 |
1994 | 129 | 100 |
Også nedbrydningsproblemet kan potentielt løses ved hjælp af Shor-algoritmen , når du bruger en tilstrækkelig kraftig kvantecomputer .
For mange metoder til asymmetrisk kryptering adskiller den kryptografiske styrke opnået som et resultat af kryptoanalyse sig væsentligt fra de værdier, der er erklæret af udviklerne af algoritmer baseret på teoretiske estimater. Derfor er spørgsmålet om brug af datakrypteringsalgoritmer i mange lande inden for lovgivningsmæssig regulering. Især i Rusland er det kun de datakrypteringssoftwareværktøjer, der har bestået statscertificering i administrative organer, især i FSB , FSTEC , tilladt til brug i statslige og kommercielle organisationer [6] .
Offentlig nøgle kryptosystemalgoritmer kan bruges [7] :
Fordele ved asymmetriske cifre frem for symmetriske :
Ulemper ved den asymmetriske krypteringsalgoritme sammenlignet med den symmetriske:
Symmetrisk nøglelængde, bit | RSA nøglelængde, bit |
---|---|
56 | 384 |
64 | 512 |
80 | 768 |
112 | 1792 |
128 | 2304 |