Cryptology Academy · Oppitunti

RSA-PSS digitaalisille allekirjoituksille

Oppikaa PSS-koodaus ja suola sekä se, miksi se korvasi PKCS#1 v1.5:n allekirjoituksissa.

Oppitunti 4/413 vaihetta

RSA-PSS digitaalisille allekirjoituksille on ilmainen Cryptology Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Cryptology Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Cryptology Academy-kurssilla on yhteensä 4 oppituntia.

Tervetuloa

RSA-PSS (Probabilistic Signature Scheme) on PKCS#1 v1.5 -allekirjoitusten turvallinen korvaaja. Se käyttää satunnaistettua koodausta todistettavasti turvallisten allekirjoitusten tuottamiseen.

PKCS#1 v1.5 -allekirjoitusten heikkoudet

PKCS#1 v1.5 -allekirjoitukset käyttävät determinististä DigestInfo-koodausta. Tunnetuissa väärennöshyökkäyksissä hyödynnetään väljiä tarkistustoteutuksia. Bleichenbacher osoitti vuonna 2006, että tiettyjä tarkistajia vastaan voidaan väärentää allekirjoituksia.

PSS:n suunnittelutavoitteet

Bellare–Rogaway 1996: PSS lisää satunnaisen suolan tehdäkseen allekirjoituksista probabilistisia. Jokainen allekirjoituskerta tuottaa erilaisen allekirjoituksen. Se on todistettavasti turvallinen satunnaisoraakkelimallissa – RSA:n vaikeusolettamaan perustuvalla tiukalla reduktiolla.

PSS-koodauksen vaiheet

1. mHash = Hash(M) 2. salt = random(sLen bytes) 3. M' = 0x00×8 || mHash || salt 4. H = Hash(M') 5. DB = PS || 0x01 || salt 6. dbMask = MGF1(H, emLen - hLen - 1) 7. maskedDB = DB XOR dbMask 8. EM = maskedDB || H || 0xbc

Suolan pituuden valinta

PKCS#1 v2.2:n vaihtoehdot: - MAX_LENGTH: suola on yhtä pitkä kuin hajautusarvo (suositeltu, paras turvallisuus) - DIGEST_LENGTH: suola = hajautusarvon pituus (standardi) - 0: deterministinen PSS (menettää probabilistisen ominaisuutensa, ei suositella) Python: padding.PSS.MAX_LENGTH

PSS:n tarkistaminen

Palauttakaa EM = sig^e mod n. Jäsentäkää maskedDB ja H. Laskekaa M' viestistä saadun mHash-arvon ja palautetun suolan avulla. Tarkistakaa, että H == Hash(M'). Suolan ei tarvitse täsmätä – vain H:n on läpäistävä tarkistus.

PSS:n ja v1.5:n turvallisuusvertailu

PSS: todistettavasti turvallinen, tiukka reduktio, probabilistiset allekirjoitukset, hieman suurempi laskentakustannus. v1.5: heuristisesti turvallinen, deterministinen, nopeampi, altis muoto-oraakkelihyökkäyksille. Kaikessa uudessa koodissa tulisi käyttää PSS:ää.

PSS TLS 1.3:ssa

TLS 1.3 edellyttää RSA-PSS:ää kaikissa RSA-allekirjoituksissa. PKCS#1 v1.5 on kielletty uusissa TLS 1.3 -laajennuksissa. Allekirjoitusalgoritmit: rsa_pss_rsae_sha256, rsa_pss_rsae_sha384, rsa_pss_rsae_sha512.

PSS Pythonissa

from cryptography.hazmat.primitives.asymmetric import padding from cryptography.hazmat.primitives import hashes # Sign sig = private_key.sign( message, padding.PSS(mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH), hashes.SHA256() )

RSASSA-PSS:n OID

RSA-PSS:llä on oma avaintyyppi-OID: id-RSASSA-PSS (1.2.840.113549.1.1.10). Erityisesti PSS:ää varten luodut avaimet käyttävät tätä OID:tä ja edellyttävät PSS-allekirjoituksia (ne eivät toimi v1.5:n kanssa). Tämä on suositeltu käytäntö uusissa käyttöönottoympäristöissä.

Lyhennetyt hajautusarvot ja suolaa koskevat suositukset

PSS:n turvallisuus = min(|modulus|/2, |hash|) - 1 bittiä, kun salt_length = hash_length. RSA-2048:lle ja SHA-256:lle tämä tarkoittaa 128 bitin turvallisuutta. Vastaava turvallisuustaso saavutetaan yhdistelmällä RSA-3072 + SHA-384, joka tarjoaa 192 bitin turvallisuuden.

Pikatarkistus

Mikä tekee RSA-PSS-allekirjoituksista probabilistisia verrattuna PKCS#1 v1.5:een?

Kertaus

RSA-PSS on turvallinen tapa allekirjoittaa RSA:lla. Seuraavaksi perehdymme elliptiseen käyrärajaukseen ja opimme ymmärtämään käyrien geometriaa ja algebraa.
Aloita maksutta

Opi Cryptology Academy tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
67
Oppitunnit
261

Usein kysytyt kysymykset

Onko oppitunti ”RSA-PSS digitaalisille allekirjoituksille” ilmainen?

Kyllä – oppitunnin ”RSA-PSS digitaalisille allekirjoituksille” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Cryptology Academy-kurssin, päivitä CoddyKit PROhon. Cryptology Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”RSA-PSS digitaalisille allekirjoituksille”?

Oppikaa PSS-koodaus ja suola sekä se, miksi se korvasi PKCS#1 v1.5:n allekirjoituksissa. Harjoittelet Cryptology Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Cryptology Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Cryptology Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.

Kuinka kauan ”RSA-PSS digitaalisille allekirjoituksille”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Cryptology Academy-oppitunnilla?

Kyllä. Jokainen Cryptology Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Oppikirja-RSA ja sen turvattomuus
  2. PKCS#1 v1.5 -täyttö ja Bleichenbacher
  3. OAEP: optimaalinen epäsymmetrinen salaustäyttö
  4. RSA-PSS digitaalisille allekirjoituksille
← Takaisin: Cryptology Academy