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 via een reeks modulaire vermenigvuldigingen. De beveiliging van het RSA-algoritme kan worden verhoogd door langere sleutellengtes te gebruiken, zoals 1,024 bits of meer. Hoe langer de sleutellengte, hoe langzamer het versleutelings- of ondertekeningsproces. Het is een van de populairste en veiligste encryptiemethoden met openbare sleutels. Er zijn twee verschillende RSA-handtekeningschema's gespecificeerd in de 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 door SSL-servers werden teruggestuurd voor fouten in Openbare-sleutelcryptografiestandaarden (PKCS) #1 versie 1.5 padding maakte een adaptief gekozen ciphertext-aanval mogelijk, waarbij een aanvaller een reeks te decoderen gecodeerde teksten opstuurt en vervolgens de resultaten van deze decoderingen gebruikt om volgende gecodeerde teksten te selecteren. Dit stelde een aanvaller in staat om RSA-decoderings- en ondertekeningsbewerkingen uit te voeren met de privésleutel van een TLS-server, waardoor de vertrouwelijkheid van TLS volledig werd geschonden bij gebruik met RSA-encryptie.
- 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 handtekeningenschema 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 openbare sleutel. RSA sleutel. Het heeft verschillende parameters en is veiliger en robuuster dan andere.
