b'\n_START_ARTICLE_\nRSA (cryptografie)\n_START_PARAGRAPH_\nRSA is een asymmetrisch encryptiealgoritme, dat veel gebruikt wordt voor elektronische handel (beveiliging van transacties en dergelijke). Het formele algoritme werd in 1977 ontworpen door Ron Rivest, Adi Shamir en Len Adleman (vandaar de afkorting RSA)._NEWLINE_Clifford Cocks, een Britse wiskundige, die voor het Government Communications Headquarters (GCHQ) werkte, heeft in 1973 een gelijkwaardig algoritme beschreven in een intern document, dat pas in 1997 boven water is gekomen, omdat het als topgeheim geclassificeerd was._NEWLINE_De veiligheid van RSA steunt op het probleem van de ontbinding in factoren (bij heel grote getallen): op dit moment is het bijna onmogelijk de twee oorspronkelijke priemgetallen  en  te achterhalen als alleen hun product  bekend is en  en  groot genoeg zijn; het zou te veel tijd in beslag nemen. Nieuwe ontwikkelingen op dit gebied zouden RSA onbruikbaar kunnen maken._NEWLINE_MIT heeft in 1983 in de V.S. het algoritme gepatenteerd. Het patent liep op 21 september 2000 af. Omdat het algoritme gepubliceerd werd v\xc3\xb3\xc3\xb3r de patentaanvraag, kon het niet worden gepatenteerd in andere landen.\n_START_SECTION_\nOndertekenen\n_START_PARAGRAPH_\nRSA kan ook worden gebruikt om een bericht te ondertekenen. Veronderstel dat Alice een ondertekend bericht wil zenden naar Bob. Ze berekent dan een hashwaarde uit het bericht, vercijfert die met haar geheime sleutel, en voegt dat als een "handtekening" bij het bericht. Deze handtekening kan alleen worden ontcijferd met haar publieke sleutel. Wanneer Bob het ondertekende bericht ontvangt, ontcijfert hij de handtekening met Alices publieke sleutel, en vergelijkt de aldus bekomen hashwaarde met de eigenlijke hashwaarde van het bericht. Als die gelijk zijn, weet hij dat de auteur van het bericht de geheime sleutel van Alice bezit (dus normaal gezien Alice is), en dat het bericht na verzending niet meer veranderd is.\n_START_SECTION_\nVeiligheid\n_START_PARAGRAPH_\nVeronderstel dat Charlotte, een afluisteraar, de publieke sleutel  en , en de cijfertekst  onderschept. Ze kan niet rechtstreeks aan de geheime sleutel  komen, omdat Alice die geheimhoudt. De meest voor de hand liggende manier voor Charlotte om  te vinden uit , is om  in de factoren  en  te ontbinden, zodat ze  kan berekenen en  kan vinden uit . Er is nog geen methode gevonden om getallen in polynomiale tijd in factoren te ontbinden met een gewone computer (de benodigde tijd wordt veel sneller groter dan bij lineair groter wordende getallen), maar het is niet bewezen dat er geen bestaat; zie priemfactor._NEWLINE_Het is ook niet bewezen dat de enige manier om  uit  te berekenen, is om  in factoren te ontbinden, maar er is nog geen gemakkelijkere manier ontdekt (tenminste geen publiekelijk bekende). Daarom wordt algemeen verondersteld dat Charlotte het bericht niet kan terugvinden als  groot genoeg is._NEWLINE_Als  uit 256 of minder bits bestaat, kunnen de factoren in een paar uur gevonden worden met een personal computer, gebruik makende van software die vrij toegankelijk is op het internet. Als  512 bits of korter is, kan, sinds 1999, de ontbinding uitgevoerd worden door enkele honderden computers (in een aanvaardbare tijd). Het is tegenwoordig aan te raden  ten minste 1024 bits lang te kiezen._NEWLINE_In 1994 heeft Peter Shor aangetoond dat een kwantumcomputer in principe de factorisatie in polynomiale tijd zal kunnen uitvoeren. Als (of wanneer) kwantumcomputers werkelijkheid worden, zal het algoritme van Shor RSA en andere soortgelijke algoritmes onbruikbaar maken. Als een effici\xc3\xabnte methode voor ontbinding in factoren met een gewone computer zou worden gevonden, of als een kwantumcomputer zou worden gemaakt, dan kunnen nog langere sleutels een tijdelijke oplossing bieden, maar zo\'n veiligheidslek in RSA zou wel retroactief zijn: de publieke sleutel en de cijfertekst kunnen worden bijgehouden totdat het mogelijk wordt om het bericht te ontcijferen. Daarom is het niet veilig om lange-termijn geheimen uit te wisselen met RSA.\n_START_SECTION_\nSleutels\n_START_PARAGRAPH_\nOm de grote priemgetallen  en  te vinden, worden meestal eerst willekeurige getallen van de juiste grootte gekozen. Die getallen worden dan getest met snelle methoden, die de meeste niet-priemgetallen uitsluiten. Als dan een "waarschijnlijk priemgetal" is gevonden, kan op een zekere (maar langzamere) manier worden nagegaan of het getal inderdaad priem is._NEWLINE_De priemgetallen  en  mogen niet te dicht bij elkaar liggen, want anders zou de fermatfactorisatie voor  succesvol kunnen zijn. Bovendien kan, als  of  alleen kleine priemfactoren hebben,  snel in factoren worden ontbonden, zodat deze waarden voor  en  ook moeten worden gemeden._NEWLINE_Er mag geen methode om priemfactoren te zoeken worden gebruikt die een eventuele aanvaller enige informatie geeft over de priemgetallen. Een goede toevalsgenerator moet worden gebruikt. Coppersmith heeft in 1997 aangetoond dat als iemand de helft van de cijfers van  of  kan raden, hij gemakkelijk de andere helft kan berekenen._NEWLINE_Het is belangrijk dat de geheime sleutel  groot genoeg is. Wiener heeft in 1990 aangetoond dat als  tussen  en  ligt (wat veel voorkomt) en ,  op een effici\xc3\xabnte manier kan worden berekend uit  en .\n_START_SECTION_\nSnelheid\n_START_PARAGRAPH_\nRSA is veel trager dan DES en andere symmetrische encryptiealgoritmes. In de praktijk vercijfert Bob gewoonlijk zijn bericht met een symmetrisch algoritme en de symmetrische sleutel (kort in vergelijking met het bericht) met RSA. Het symmetrisch vercijferd bericht en de met RSA vercijferde sleutel worden dan beiden verstuurd naar Alice._NEWLINE_Deze methode zorgt voor bijkomende veiligheidsmoeilijkheden. De methode voor symmetrische encryptie moet veilig zijn (niet gemakkelijk te kraken zonder de sleutel) en de symmetrische sleutel moet gemaakt worden met een goede toevalsgenerator, want anders zou Charlotte om RSA heen kunnen door de symmetrische sleutel te raden.\n_START_SECTION_\nSleutelverdeling\n_START_PARAGRAPH_\nZoals bij alle encryptiemethoden, is het belangrijk hoe de publieke sleutels verspreid worden. We moeten ons bewust zijn van de mogelijkheid  van een man-in-the-middle-aanval. Veronderstel dat Charlotte de communicatie tussen Alice en Bob kan onderscheppen. Ze ontvangt dan een publieke sleutel van Alice, maakt zelf een nieuwe publieke en geheime sleutel en stuurt haar eigen publieke sleutel naar Bob, die denkt dat hij de publieke sleutel van Alice ontvangt. Dan kan ze verdere berichten van Bob (vercijferd met haar publieke sleutel) ontvangen, ontcijferen met haar geheime sleutel, en (eventueel veranderd) weer ge\xc3\xabncrypteerd met de eerder ontvangen publieke sleutel naar Alice sturen (Alice denkt dat het bericht rechtstreeks van Bob komt). In principe kunnen Alice en Bob niet merken dat Charlotte ertussen zit. Verdedigingen tegen zo\'n aanval zijn meestal gebaseerd op digitale certificaten of andere onderdelen van een Public Key Infrastructure. Uiteraard is de beste oplossing dat Alice en Bob de sleutels (of een checksum) vergelijken tijdens een "echte" ontmoeting (als dat mogelijk is).\n_START_SECTION_\nTijdsgebaseerde aanvallen\n_START_PARAGRAPH_\nKocher beschreef een ingenieuze nieuwe aanval op RSA in 1995: als Charlotte de hardware van Alice kent en de tijd nodig voor het ontcijferen van verschillende bekende cijferteksten kan meten, kan ze de geheime sleutel  snel vinden. Om deze aanval af te slaan, moet de wiskundige operaties in een constante tijd gebeuren._NEWLINE_Vergelijkbare aanvallen zijn mogelijk door precies het stroomverbruik van implementaties te meten, deze aanvallen staan bekend als Power Analysis aanvallen.\n_START_SECTION_\nAangepast gekozen cijfertekst aanvallen\n_START_PARAGRAPH_\nIn 1996 beschreef Daniel Bleichenbacher de eerste praktische aangepast gekozen cijfertekst aanval tegen met RSA vercijferde berichten met de PKCS #1 v1 redundantiefunctie (een redundantiefunctie voegt structuur toe aan een RSA-bericht, zodat het mogelijk is om te weten of een gedecrypteerd bericht goed is). Omwille van zwakke plekken in het PKCS #1 schema kon Bleichenbacher een aanval tegen de RSA-implementatie van het SSL protocol opzetten, en mogelijk de sessie-sleutels te weten komen. Daarom raden cryptografen nu aan om bewijsbaar veilige redundantietesten zoals OAEP te gebruiken, en RSA Laboratories heeft nieuwe versies van PKCS #1 vrijgegeven, die niet gevoelig zijn voor deze aanvallen.'