RSA-encryptie, in volledige Rivest-Shamir-Adleman-encryptie, type public-key-cryptografie dat op grote schaal wordt gebruikt voor data-encryptie van e-mail en andere digitale transacties via Internet. RSA is vernoemd naar haar uitvinders, Ronald L. Rivest, Adi Shamir, en Leonard M. Adleman, die het gemaakt terwijl op de faculteit van het Massachusetts Institute of Technology.,
In het RSA-systeem kiest een gebruiker in het geheim een paar priemgetallen p en q die zo groot zijn dat het factoring van het product n = pq de verwachte rekenmogelijkheden voor de levensduur van de cijfers ver te boven gaat. Vanaf 2000, U. S., overheidsveiligheidsnormen eisen dat de modulus 1.024 bits groot is-dat wil zeggen, p en q moeten elk ongeveer 155 decimale cijfers groot zijn, dus n is ruwweg een 310-cijferig getal. Aangezien de grootste harde getallen die momenteel kunnen worden factored slechts de helft van deze grootte, en aangezien de moeilijkheid van factoring ruwweg verdubbelt voor elke extra drie cijfers in de modulus, 310-cijferige moduli worden verondersteld veilig te zijn van factoring voor meerdere decennia.,
Na P en q te hebben gekozen, selecteert de gebruiker een willekeurig geheel getal e kleiner dan n en relatief priemgetal tot p − 1 en q − 1, dat wil zeggen dat 1 de enige gemeenschappelijke factor is tussen e en het product (p − 1)(q − 1). Dit verzekert dat er een ander getal d is waarvoor het product ed een rest van 1 overlaat wanneer gedeeld door het kleinste gemene veelvoud van p − 1 en q − 1. Met kennis van p en q Kan het getal d eenvoudig worden berekend met behulp van het Euclidische algoritme., Als men p en q niet kent, is het even moeilijk om e of d te vinden gezien de andere factor n, die de basis vormt voor de crypto-beveiliging van het RSA-algoritme.
de labels d en e zullen worden gebruikt om de functie aan te geven waaraan een sleutel wordt geplaatst, maar omdat sleutels volledig uitwisselbaar zijn, is dit slechts EEN gemak voor expositie. Om een secrecy channel te implementeren met behulp van de standaard versie met twee sleutels van het RSA cryptosysteem, zou gebruiker A e en n publiceren in een geverifieerde openbare directory, maar d geheim houden., Iedereen die een privébericht naar A wil sturen, codeert het in getallen kleiner dan n en versleutelt het vervolgens met behulp van een speciale formule gebaseerd op e en n. A kan een dergelijk bericht ontcijferen op basis van het kennen van d, maar de veronderstelling—en het bewijs tot nu toe—is dat voor bijna alle cijfers niemand anders het bericht kan decoderen tenzij hij ook n kan factor.
om een authenticatiekanaal te implementeren, zou A d en n publiceren en e geheim houden., In het eenvoudigste gebruik van dit kanaal voor identiteitsverificatie, kan B verifiëren dat hij in communicatie is met A door in de directory te zoeken naar A ‘ S decryptie sleutel d en hem een bericht te sturen dat moet worden versleuteld. Als hij terug krijgt een cipher die decodeert om zijn uitdaging bericht met behulp van d om het te decoderen, hij zal weten dat het was naar alle waarschijnlijkheid gemaakt door iemand die Weet e en dus dat de andere communicant is waarschijnlijk A. digitaal ondertekenen van een bericht is een complexere operatie en vereist een cryptosecure “hashing” functie., Dit is een algemeen bekende functie die elk bericht in een kleiner bericht—genoemd een digest-waarbij elk bit van de digest is afhankelijk van elk bit van het bericht op een zodanige wijze dat het veranderen van zelfs een bit in het bericht is geneigd om te veranderen, op een cryptosecure manier, de helft van de bits in de digest. Door cryptocure wordt bedoeld dat het computationeel onmogelijk is voor iedereen om een bericht dat een preassigned digest zal produceren en even moeilijk om een ander bericht te vinden met dezelfde digest als een bekende., Om een bericht te ondertekenen—dat misschien niet eens geheim hoeft te worden gehouden—versleutelt A de digest met het geheim e, dat hij aan het bericht toevoegt. Iedereen kan dan het bericht decoderen met behulp van de publieke sleutel d om de digest te herstellen, die hij ook onafhankelijk van het bericht kan berekenen. Als de twee het eens zijn, moet hij concluderen dat A de code heeft gemaakt, omdat alleen A E kende en dus het bericht kon versleutelen.
tot nu toe geven alle voorgestelde twee-sleutel cryptosystemen een zeer hoge prijs voor de scheiding van het privacy-of geheimhoudings-kanaal van het authenticatie-of handtekeningkanaal., De sterk toegenomen hoeveelheid berekening betrokken bij de asymmetrische encryptie / decryptie proces aanzienlijk vermindert de kanaalcapaciteit (bits per seconde bericht Informatie gecommuniceerd). Ongeveer 20 jaar lang is het voor vergelijkbaar veilige systemen mogelijk geweest om een doorvoersnelheid te bereiken die 1.000 tot 10.000 keer hoger is voor single-key algoritmes dan voor two-key algoritmes. Als gevolg hiervan is de belangrijkste toepassing van twee-sleutel cryptografie in hybride systemen., In een dergelijk systeem wordt een algoritme met twee sleutels gebruikt voor authenticatie en digitale handtekeningen of om een willekeurig gegenereerde sessiesleutel uit te wisselen om te worden gebruikt met een algoritme met één sleutel op hoge snelheid voor de belangrijkste communicatie. Aan het einde van de sessie wordt deze sleutel weggegooid.