De veiligheid van RSA-encryptie is afhankelijk van de moeilijkheid om grote aantallen te ontbinden. Hier volgt een overzicht van hoe de werking en het gebruik ervan de veiligheid garanderen:
1. Sleutelgeneratie:
* Er zijn twee grote priemgetallen (p en q) geselecteerd: Deze worden geheim gehouden.
* Modulus (n) wordt berekend: n =p * q. Dit is het onderdeel van de publieke sleutel en wordt openbaar gemaakt.
* De totient-functie van Euler (φ(n)) wordt berekend: φ(n) =(p-1)(q-1). Dit vertegenwoordigt het aantal gehele getallen kleiner dan n die relatief priem zijn voor n. Het wordt geheim gehouden.
* Publieke exponent (e) wordt gekozen: Dit is een klein getal dat relatief priem is ten opzichte van φ(n) (wat betekent dat hun grootste gemene deler 1 is). Het wordt openbaar gemaakt als onderdeel van de publieke sleutel.
* Privé-exponent (d) wordt berekend: Dit is de multiplicatieve inverse van e modulo φ(n). Met andere woorden, d * e ≡ 1 (mod φ(n)). Deze wordt geheim gehouden en vormt de private sleutel.
2. Encryptie:
* De afzender gebruikt de *openbare sleutel* (n, e) van de ontvanger om het bericht te coderen (plaintext, M).
* De cijfertekst (C) wordt berekend als:C ≡ M
e
(mod. n)
3. Decodering:
* De ontvanger gebruikt zijn *privésleutel* (d) om de cijfertekst (C) te decoderen.
* Het originele bericht (M) wordt hersteld als:M ≡ C
d
(mod. n)
Waarom is dit veilig?
* Computationele moeilijkheidsgraad van factoring: De veiligheid hangt af van het feit dat het rekenkundig onhaalbaar is om de grote modulus (n) binnen een redelijke tijd in zijn priemfactoren (p en q) te verwerken, zelfs met krachtige computers. Als een aanvaller n zou kunnen factoriseren, zou hij φ(n) kunnen berekenen en vervolgens de privésleutel (d) kunnen afleiden. De grootte van n (vaak 2048 bits of meer) maakt factoring vrijwel onmogelijk.
* Asymmetrisch karakter: RSA maakt gebruik van een asymmetrisch sleutelsysteem. De publieke sleutel kan wijd verspreid worden zonder de veiligheid van de private sleutel in gevaar te brengen. Hierdoor kan iedereen berichten voor een ontvanger versleutelen, maar alleen de ontvanger met de privésleutel kan deze ontsleutelen.
* Wiskundige eigenschappen: De wiskundige eigenschappen van de modulaire rekenkunde en de stelling van Euler garanderen dat het decoderingsproces het oorspronkelijke bericht correct zal herstellen.
Veiligheid in de praktijk garanderen:
* Sleutelbeheer: Het veilig genereren en opslaan van privésleutels staat voorop. Gecompromitteerde privésleutels doen de beveiliging volledig teniet.
* Sleutellengte: Het gebruik van voldoende grote sleutelgroottes (bijvoorbeeld 2048 bits of meer) is van cruciaal belang om factoring-aanvallen te weerstaan.
* Opvulschema's: Moderne RSA-implementaties gebruiken opvullingsschema's (zoals OAEP) om verschillende aanvallen te beperken, waaronder aanvallen met gekozen cijfertekst. Deze schema's voegen willekeur toe aan het bericht vóór de versleuteling, waardoor het moeilijker wordt om kwetsbaarheden in het standaard RSA-algoritme te misbruiken.
* Protocolimplementatie: RSA wordt vaak gebruikt binnen grotere cryptografische protocollen (zoals TLS/SSL voor veilige webcommunicatie) die andere aspecten van beveiliging aanpakken, zoals authenticatie en integriteit.
Samenvattend berust de veiligheid van RSA op de rekenproblemen van het ontbinden van grote getallen en het gebruik van asymmetrische sleutels. Goed sleutelbeheer, voldoende sleutellengtes en het gebruik van veilige opvulschema's zijn echter essentieel voor een effectieve en veilige implementatie. |