Introductie
De Rivest-Shamir-Adleman (RSA) Encryptie algoritme is een asymmetrische encryptie algoritme dat veel wordt gebruikt in veel producten en diensten. Asymmetrische encryptie maakt gebruik van een sleutelpaar dat wiskundig gekoppeld is aan encrypt en decoderen Gegevens. Er worden een privésleutel en een openbare sleutel aangemaakt, waarbij de openbare sleutel voor iedereen toegankelijk is en de privésleutel een geheim is dat alleen bekend is bij de maker van het sleutelpaar. Met RSA kan zowel de privésleutel als de openbare sleutel de gegevens versleutelen, terwijl de andere sleutel deze ontsleutelt. Dit is een van de redenen waarom RSA het meest gebruikte asymmetrische encryptie-algoritme is.
Hoe werkt RSA?
De optie om te versleutelen met de privésleutel of de openbare sleutel biedt RSA-gebruikers een scala aan diensten. Als de openbare sleutel wordt gebruikt voor versleuteling, moet de privésleutel worden gebruikt om de gegevens te ontsleutelen. Dit is ideaal voor het verzenden van gevoelige informatie via een netwerk of internetverbinding, waarbij de ontvanger van de gegevens de openbare sleutel naar de verzender van de gegevens stuurt. De verzender van de gegevens versleutelt vervolgens de gevoelige informatie met de openbare sleutel en stuurt deze naar de ontvanger. Omdat de openbare sleutel de gegevens versleutelt, kan alleen de eigenaar van de privésleutel de gevoelige gegevens ontsleutelen. Alleen de beoogde ontvanger van de gegevens kan deze dus ontsleutelen, zelfs als de gegevens tijdens het transport zijn meegenomen.

De andere methode van asymmetrische encryptie met RSA is het versleutelen van een bericht met een privésleutel. In dit voorbeeld versleutelt de verzender van de gegevens de gegevens met zijn privésleutel en stuurt de versleutelde gegevens en zijn publieke sleutel mee naar de ontvanger. De ontvanger van de gegevens kan de gegevens vervolgens ontsleutelen met de publieke sleutel van de verzender, waardoor wordt geverifieerd of de verzender is wie hij zegt dat hij is. Met deze methode kunnen de gegevens tijdens de overdracht worden gestolen en gelezen, maar het werkelijke doel van dit type encryptie is om de identiteit van de verzender te bewijzen. Als de gegevens tijdens de overdracht worden gestolen en gewijzigd, kan de publieke sleutel het nieuwe bericht niet ontsleutelen, waardoor de ontvanger weet dat de gegevens tijdens de overdracht zijn gewijzigd.
De technische details van RSA zijn gebaseerd op het idee dat het eenvoudig is om een getal te genereren door twee voldoende grote priemgetallen met elkaar te vermenigvuldigen, maar dat het ontbinden van dat getal in de oorspronkelijke priemgetallen extreem moeilijk is. De publieke en private sleutel worden gegenereerd met twee getallen, waarvan er één het product is van twee grote priemgetallen. Beide gebruiken dezelfde twee priemgetallen om hun waarde te berekenen. RSA-sleutels zijn meestal 1024 of 2048 bits lang, waardoor ze extreem moeilijk te ontbinden zijn. Men verwacht echter dat sleutels van 1024 bits binnenkort gekraakt kunnen worden.
Wie gebruikt RSA-encryptie?
Zoals eerder beschreven, wordt RSA-encryptie voor een aantal verschillende taken gebruikt. Een daarvan is: digitale ondertekening voor code en certificatenCertificaten kunnen worden gebruikt om te verifiëren van wie een openbare sleutel is, door deze te ondertekenen met de privésleutel van de eigenaar van het sleutelpaar. Dit authenticeert de eigenaar van het sleutelpaar als een vertrouwde bron van informatie. Codeondertekening gebeurt ook met het RSA-algoritme. Om ervoor te zorgen dat de eigenaar geen gevaarlijke of onjuiste code naar een koper stuurt, wordt de code ondertekend met de privésleutel van de maker van de code. Dit verifieert dat de code niet opzettelijk is bewerkt tijdens de overdracht en dat de maker van de code verifieert dat de code doet wat hij belooft.
RSA werd gebruikt met Transport Layer Security (TLS) om de communicatie tussen twee personen te beveiligen. Andere bekende producten en algoritmen, zoals het Pretty Good Privacy-algoritme, gebruiken RSA, of in het verleden. Virtual Private Networks (VPN's), e-maildiensten, webbrowsers en andere communicatiekanalen hebben ook RSA gebruikt. VPN's gebruiken TLS om een handshake te implementeren tussen de twee partijen in de informatie-uitwisseling. De TLS-handshake gebruikt RSA als encryptie-algoritme om te verifiëren dat beide partijen zijn wie ze zeggen te zijn.
RSA-kwetsbaarheden
Hoewel het in veel omstandigheden levensvatbaar is, zijn er nog steeds een aantal kwetsbaarheden in RSA die door aanvallers kunnen worden uitgebuit. Een van deze kwetsbaarheden is de implementatie van een lange sleutel in het encryptie-algoritme. Algoritmes zoals AES zijn onkraakbaar, terwijl RSA afhankelijk is van de grootte van de sleutel om moeilijk te kraken te zijn. Hoe langer een RSA-sleutel, hoe veiliger deze is. Met behulp van priemfactorisatie slaagden onderzoekers erin een RSA-algoritme met een sleutel van 768 bits te kraken, maar het kostte hen 2 jaar, duizenden manuren en een absurde hoeveelheid rekenkracht, dus de huidige sleutellengtes in RSA zijn nog steeds veilig. Nationaal Instituut voor Wetenschap en Technologie (NIST) adviseert nu een minimale sleutellengte van 2048 bits, maar veel organisaties gebruiken sleutels met een lengte van 4096 bits. Andere manieren waarop RSA kwetsbaar is, zijn:
-
Zwakke willekeurige getallengenerator
Wanneer organisaties zwakke willekeurige getallengeneratoren gebruiken, zijn de door hen gecreëerde priemgetallen veel eenvoudiger te ontbinden, waardoor aanvallers het algoritme gemakkelijker kunnen kraken.
-
Generatie van zwakke sleutels
RSA-sleutels stellen bepaalde eisen aan hun generatie. Als de priemgetallen te dicht bij elkaar liggen, of als een van de getallen waaruit de privésleutel bestaat te klein is, kan de sleutel veel eenvoudiger worden opgelost.
-
Zijkanaalaanvallen
Side channel-aanvallen zijn een aanvalsmethode die misbruik maakt van het systeem dat het encryptie-algoritme uitvoert, in plaats van het algoritme zelf. Aanvallers kunnen de gebruikte energie analyseren, branch prediction analysis gebruiken of timing-aanvallen gebruiken om de sleutel in het algoritme te achterhalen en zo de gegevens te compromitteren.
