Public Key Cryptography
In 1976, Diffie en Hellman een voorstel voor een nieuw type van cryptografie dat een onderscheid gemaakt tussen codering en ontcijfering toetsen. Een van de sleutels zou publiekelijk bekend zijn, de andere zou worden prive gehouden door de eigenaar. Klassieke cryptografie vereist de afzender en ontvanger van een gemeenschappelijke sleutel aandeel. Publieke sleutel cryptografie niet. Als de codering sleutel publiek is, stuur je een geheime boodschap simpelweg het bericht vercijferen met de openbare sleutel van de ontvanger. Dan verzenden. De ontvanger kan ontcijferen met behulp van zijn prive-sleutel.
James Ellis, een cryptograaf werken voor mededelingen van de Britse regering-Electronics Security Group, zei: "hij toonde proof of concept in een rapport CESG januari 1970 getiteld" de mogelijkheid van Secure Niet-Secret digitale versleuteling. "Twee van zijn collega's vonden praktische implementaties . Dit werk bleef geheim tot 1997.
Omdat een toets is openbaar, en de aanvullende sleutel moet geheim blijven, een publieke sleutel cryptosysteem moet de volgende drie voorwaarden voldoen.
-
Het moet computationeel gemakkelijk te vercijferen of ontcijferen van een bericht, gezien de juiste toets.
-
Het moet computationeel onhaalbaar zijn om de private sleutel vloeien voort uit de publieke sleutel.
-
Het moet computationeel onhaalbaar zijn om de private sleutel te bepalen van een gekozen plaintext aanval
De RSA-codering biedt zowel geheimhouding en authenticatie.
RSA
RSA is een machtsverheffing cipher. Kies twee grote priemgetallen p en q, en laat n = pq. De totient FF (n) van n is het aantal getallen kleiner dan N met geen factoren gemeen met n.
Onze voorbeelden zullen gebruik maken van kleine aantallen voor onderwijskundige doeleinden. Werkelijke RSA priemgetallen moet minstens 512 bits per stuk, het geven van een modulus van ten minste 1024 bits. In de praktijk is RSA gecombineerd met cryptografische hash-functies om te voorkomen herschikking van blokken.
VOORBEELD: Laat n = 10. De nummers die minder dan 10 en zijn relatief priem aan (geen factoren gemeen hebben met hebben) n zijn 1, 3, 7 en 9. Vandaar, FF (10) = 4. Evenzo, als n = 21, de getallen die relatief priem zijn met n zijn 1, 2, 4, 5, 8, 10, 11, 13, 16, 17, 19 en 20. Dus f (21) = 12. |
Kies een geheel getal e <n die relatief priem is (n) ff. Vind een tweede getal d zodanig dat ed mod ff (n) = 1. De publieke sleutel is (e, n), en de prive sleutel is overleden
Laat m een bericht. Dan:
c = m ^ e mod n
en
m = c ^ d mod n
|
VOORBEELD: Stel p = 7 en q = 11. Dan n = 77 en f (n) = 60. Alice kiest voor e = 17, dus haar prive-sleutel is d = 53. In dit cryptosysteem, wordt elk personage leesbare vertegenwoordigd door een getal tussen 00 (A) en 25 (Z), 26 is een blanco. Bob wil Alice stuurt u het bericht "Hello World". Met behulp van de afbeelding hierboven is het leesbare 07 04 11 11 14 26 22 14 17 11 03. Met behulp van de publieke sleutel van Alice, de cijfertekst is 07 ^ 17 mod 77 = 28 04 ^ 17 mod 77 = 16 11 ^ 17 mod 77 = 44 ... 03 ^ 17 mod 77 = 75 of 28 16 44 44 42 38 22 42 19 44 75.
|
In aanvulling op de vertrouwelijkheid kan, RSA gegevens verstrekken en de oorsprong authenticatie. Als Alice haar bericht met behulp van haar prive-sleutel codeert, kan iedereen lezen, maar als iemand verandert het, de (gewijzigd) cijfertekst niet correct kunnen worden ontcijferd.
|
VOORBEELD: Stel dat Alice wil Bob stuurt u het bericht "Hello World" op een zodanige wijze dat Bob zal er zeker van dat Alice verzonden. Ze codeert het bericht met haar prive-sleutel en stuurt het naar Bob. Zoals hierboven aangegeven, is het leesbare voorgesteld als 07 04 11 11 14 26 22 14 17 11 03. Gebruik private sleutel van Alice, de cijfertekst is 07 ^ 53 mod 77 = 35 04 ^ 53 mod 77 = 09 11 ^ 53 mod 77 = 44 ... 03 ^ 53 mod 77 = 05 of 35 09 44 44 93 12 24 94 04 05. Naast oorsprong authenticiteit, Bob er zeker van zijn dat er geen brieven werden gewijzigd. Verstrekken van zowel de vertrouwelijkheid en authenticatie vereist encryptieapparatuur met prive-sleutel van de afzender en de openbare sleutel van de ontvanger.
|
|
VOORBEELD: Stel dat Alice wil Bob stuurt u het bericht "Hello World" in vertrouwen en gewaarmerkt. Nogmaals, aannemen dat Alice's prive-sleutel is 53. Neem de publieke sleutel van Bob te zijn 37 (het maken van zijn prive-sleutel 13). De platte tekst wordt weergegeven als 07 04 11 11 14 26 22 14 17 11 03. De codering is (07 ^ 53 mod 77) 37 mod 77 = 07 (04 ^ 53 mod 77) 37 mod 77 = 37 (11 ^ 53 mod 77) 37 mod 77 = 44 ... (03 ^ 53 mod 77) 37 mod 77 = 47 of 07 37 44 44 14 59 22 14 61 44 47. De ontvanger maakt gebruik van private sleutel van de ontvanger om het bericht te ontcijferen en de publieke sleutel van de afzender te verifiëren is.
|
|
VOORBEELD: Bob ontvangt de cijfertekst bovenstaande 07 37 44 44 14 59 22 14 61 44 47. De ontcijfering is (07 ^ 13 mod 77) 17 mod 77 = 07 (37 ^ 13 mod 77) 17 mod 77 = 04 (44 ^ 13 mod 77) 17 mod 77 = 11 ... (47 ^ 13 mod 77) 17 mod 77 = 03 of 07 04 11 11 14 26 22 14 17 11 03. Dit komt overeen met het bericht "Hello World" van het voorgaande voorbeeld.
|
Het gebruik van een public key systeem biedt een technische type nonrepudiation van herkomst. Het bericht wordt ontcijferd met behulp van de publieke sleutel van Alice. Omdat de publieke sleutel is de inverse van de private sleutel, kon alleen de private sleutel hebben vercijferd het bericht. Omdat Alice is de enige die weet dat dit prive-sleutel, maar ze kon hebben vercijferd het bericht. De onderliggende aanname is dat Alice's prive-sleutel niet is aangetast, en dat de publieke sleutel met haar naam eigenlijk niet behoren tot haar.
In de praktijk zou niemand gebruik blokken van de omvang die hier gepresenteerd. Het probleem is dat, zelfs als n zeer groot is, als een teken per blok is gecodeerd, kan RSA gebroken worden met behulp van de technieken voor het klassieke vervanging cijfers breken. Bovendien, hoewel geen individueel blok kan worden gewijzigd zonder detectie (omdat de aanvaller waarschijnlijk geen toegang hebben tot de prive-sleutel), kan een aanvaller blokkeert herschikken en verander de zin van het bericht.
|
VOORBEELD: Een algemene stuurt een bericht naar het hoofdkantoor met de vraag of de aanval op. Hoofdkwartier antwoorden met de boodschap "ON" gecodeerd met behulp van een RSA-codering met een 1.024-bits modulus, maar elke letter wordt afzonderlijk gecodeerd. Een aanvaller onderschept het bericht en swaps de volgorde van de blokken. Wanneer de algemene ontcijfert het bericht, zal het lezen "Nee," het tegenovergestelde van de oorspronkelijke plaintext. Bovendien zal als de aanvaller weet dat het hoofdkantoor sturen een van de twee berichten (hier, "NEE" of "ON"), kan de aanvaller gebruik maken van een techniek genaamd "vooruit te zoeken" of "precomputation" om het cijfer te breken. Om deze reden plaintext wordt meestal opgevuld met willekeurige gegevens om tot een blok. Dit kan elimineren van het probleem van zoeken naar voren, omdat de set van mogelijke plaintexts te groot wordt om precompute haalbaar. Een andere algemene stuurt hetzelfde verzoek als in het voorbeeld hierboven. Nogmaals, het hoofdkwartier antwoorden met de boodschap "ON" gecodeerd met behulp van een RSA-codering met een 1.024-bits modulus. Elke letter wordt afzonderlijk gecodeerd, maar de eerste zes bits van elk blok bevat het nummer van het blok, de volgende acht bits bevatten de aard en de resterende 1.010 bits bevatten willekeurige gegevens. Als de aanvaller de blokken herschikt, zal de algemene detecteren dat blok 2 aangekomen voor blok 1 (als gevolg van het aantal in de eerste zes bits) en herschikken ze. De aanvaller kan ook niet precompute de blokken om te bepalen welke bevat "O," omdat ze zou moeten 21.010 blokken berekenen, die computationeel haalbaar is.
|
een artikel afkomstig van Bill Kuriko