Rivest Shamir Adleman (RSA) is een asymmetrisch algoritme dat gebruikt kan worden voor het versleutelen en ondertekenen van gegevens. De versleutelings- en ondertekeningsprocessen worden uitgevoerd door middel van een reeks modulaire vermenigvuldigingen. De veiligheid van het RSA-algoritme kan worden verhoogd door langere sleutellengtes te gebruiken, zoals 1,024 bits of meer. Hoe langer de sleutellengte, hoe trager het versleutelings- of ondertekeningsproces echter verloopt. Het is een van de populairste en veiligste methoden voor publieke-sleutelversleuteling. Er zijn twee verschillende RSA-ondertekeningsschema's gespecificeerd in PKCS1.
- RSASSA-PKCS1-v1_5: oud handtekeningenschema met bijlage zoals voor het eerst gestandaardiseerd in versie 1.5 van PKCS #1.
- RSASSA-PSS (RSASSA = RSA-handtekeningschema met bijlage): gebaseerd op het Probabilistic Signature Scheme (PSS), oorspronkelijk uitgevonden door Bellare en Rogaway.
Verschil tussen RSASSA-PKCS1-v1_5 en RSASSA-PSS
| RSASSA-PKCS1-v1_5 | RSASSA-PSS |
|---|---|
| PKCSV1_5 is deterministisch. | Het is willekeurig, waardoor er iedere keer een andere waarde voor de handtekening ontstaat. |
| De waarde van het berichtdigest kan worden geëxtraheerd uit een PKCSV1_5-handtekening. | Deze kan niet uit een PSS-handtekening worden gehaald, maar kan alleen worden geverifieerd aan de hand van een bekende waarde in het berichtoverzicht. |
| Minder veilig en robuust | PSS is beveiligd en robuuster dan PKCSV1_5. |
| Het is een oud plan. | Het is een nieuw plan. |
| Dit wordt aanbevolen vanwege compatibiliteit met de bestaande handtekeningapplicatie. | Deze standaard wordt aanbevolen vanwege de compatibiliteit met bestaande handtekeningtoepassingen. Ook wordt deze standaard aanbevolen voor eventuele adoptie in nieuwe handtekeningtoepassingen, aangezien deze standaard bepaalde kritieke punten van de oudere standaard niet bevat. |
Aanvallen op oude handtekeningschema's
- De Bleichenbacher-aanval
In 1998 ontdekte Daniel Bleichenbacher dat de berichten die SSL-servers terugstuurden voor fouten in de padding van Public-Key Cryptography Standards (PKCS) #1 versie 1.5 een adaptieve ciphertext-aanval mogelijk maakten. Bij deze aanval stuurt een aanvaller een reeks versleutelde berichten die gedecodeerd moeten worden, en gebruikt vervolgens de resultaten van deze decrypties om volgende versleutelde berichten te selecteren. Hierdoor kon een aanvaller RSA-decryptie- en ondertekeningsbewerkingen uitvoeren met de privésleutel van een TLS-server, waardoor de vertrouwelijkheid van TLS in combinatie met RSA-encryptie volledig werd geschonden.
- Foutgebaseerde aanval
In 1996 presenteerden Dan Boneh en anderen een aanval op RSA die gebruikmaakte van foutieve berekeningen. Door willekeurige fouten in de berekeningen van RSA te injecteren, konden ze de privésleutel regenereren op basis van de kennis van de foutieve handtekeningen. RSA-implementaties die de Chinese reststelling gebruiken om berekeningen te versnellen, zijn bijzonder kwetsbaar – één foutieve handtekening maakt het mogelijk om de privésleutel te regenereren. Bescherming tegen dergelijke foutgebaseerde aanvallen is vooral belangrijk in embedded apparaten zoals chipkaarten, die niet zo zijn ontworpen dat ze de privésleutel blootleggen, maar cryptografische bewerkingen zoals handtekeningen uitvoeren in een omgeving die mogelijk onder controle staat van een aanvaller. Verder onderzoek heeft echter aangetoond dat PSS niet kwetsbaar is voor deze foutgebaseerde aanvallen.
RSASSA-PSS
RSASSA-PSS is een verbeterd probabilistisch handtekeningenschema met een appendix. Dit betekent dat een privé RSA-sleutel kan worden gebruikt om de gegevens te ondertekenen in combinatie met willekeurige invoer. De andere kant van de communicatie kan de handtekening vervolgens verifiëren met de bijbehorende openbare RSA-sleutel. Dit handtekeningenschema maakt gebruik van willekeurige gegevens, dus twee handtekeningen met dezelfde invoer zijn verschillend en kunnen beide worden gebruikt om de oorspronkelijke gegevens te valideren.
RSASSA-PSS-parameters
- Hash-algoritme/functie
Hashfuncties worden gebruikt in encryptieschema's, handtekeningschema's met een appendix en diverse coderingsmethoden. Hashfuncties zijn deterministisch, wat betekent dat de uitvoer volledig wordt bepaald door de invoer. Hashfuncties gebruiken invoerstrings van variabele lengte en genereren uitvoerstrings met een vaste lengte.
- Maskergeneratiefuncties
Een maskergeneratiefunctie gebruikt een octetstring van variabele lengte en de gewenste uitvoerlengte als invoer en levert een octetstring van de gewenste lengte af. Maskergeneratiefuncties (MGF) zijn deterministisch van aard. De uitvoer van een maskergeneratiefunctie moet pseudorandom zijn, dat wil zeggen: als de seed van de functie onbekend is, moet het onmogelijk zijn om de uitvoer te onderscheiden van een daadwerkelijk willekeurige string. De aantoonbare beveiliging van RSAES-OAEP en RSASSA-PSS is afhankelijk van de willekeurige aard van de uitvoer van de maskergeneratiefunctie, die op zijn beurt afhankelijk is van de willekeurige aard van de onderliggende hash.
- Zoutlengte
Dit is de saltwaarde die aan de handtekeningbewerking is gekoppeld. Dit veld is bedoeld om single-pass-verwerking te vergemakkelijken. Als het veld wordt weggelaten, wordt de saltwaarde verkregen uit de handtekening. De saltwaarde verbetert de beveiliging van het schema door een "strenger" beveiligingsbewijs te bieden dan deterministische alternatieven zoals Full Domain Hashing (FDH).
- Aanhangwagenveld
Het wordt gebruikt in de coderingsbewerking en is een geheel getal. De waarde MOET 1 zijn, wat staat voor het trailerveld met de hexadecimale waarde 0xBC.
Standaard parameters
hash-algoritme
De standaardwaarde is SHA1, maar SHA-256 wordt aanbevolen
maskGenAlgorithm
MGF1 moet worden gebruikt. mgf1SHA1 (de functie MGF1 met SHA-1)
zoutLengte
De standaardwaarde is 20, maar de conventie is om hLen te gebruiken, de lengte van de uitvoer van de hash-functie in bytes.
trailerField
trailerFieldBC (de byte 0xbc)
Het wordt aanbevolen dat de MGF-hashfunctie vergelijkbaar is met die van het schema-hashalgoritme/-functie en dat de zoutlengte hLen is, wat de lengte is van de uitvoer van de hashfunctie.
Conclusie
RSASSA-PSS is een verbeterd ondertekeningsschema met een bijlage. Het gebruikt een RSA-privésleutel om de gegevens te ondertekenen, waarna de ontvanger deze handtekening kan verifiëren met behulp van de publieke RSA- sleutel. Het heeft diverse parameters en is veiliger en robuuster dan andere schema's.
