0Pricing
Cryptology Academy · Lezione

RSA-PSS per le firme digitali

Scopra la codifica PSS e il salt e perché ha sostituito PKCS#1 v1.5 per la firma.

RSA-PSS per le firme digitali è una lezione Cryptology Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cryptology Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cryptology Academy include 4 lezioni in totale.

Benvenuto

RSA-PSS (Probabilistic Signature Scheme) è il sostituto sicuro delle firme PKCS#1 v1.5. Utilizza una codifica casuale per ottenere firme dimostrabilmente sicure.

Debolezze delle firme PKCS#1 v1.5

Le firme PKCS#1 v1.5 utilizzano una codifica DigestInfo deterministica. Attacchi noti alla falsificazione sfruttano implementazioni permissive della verifica. Bleichenbacher (2006) ha dimostrato la possibilità di falsificare firme contro alcuni verificatori.

Obiettivi di progettazione di PSS

Bellare-Rogaway 1996: PSS aggiunge un salt casuale per rendere probabilistiche le firme. Ogni firma prodotta è diversa. È dimostrabilmente sicuro nel modello dell'oracolo casuale, con una riduzione stretta alla difficoltà di RSA.

Passaggi della codifica PSS

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

Scelte della lunghezza del salt

Opzioni PKCS#1 v2.2: - MAX_LENGTH: salt lungo quanto l'hash (consigliato, massima sicurezza) - DIGEST_LENGTH: salt = lunghezza dell'hash (standard) - 0: PSS deterministico (perde la proprietà probabilistica, non consigliato) Python: padding.PSS.MAX_LENGTH

Verifica PSS

Recuperare EM = sig^e mod n. Analizzare maskedDB e H. Calcolare M' a partire da mHash (dal messaggio) e dal salt recuperato. Verificare H == Hash(M'). Il salt non deve corrispondere: è sufficiente che H superi la verifica.

Confronto di sicurezza tra PSS e v1.5

PSS: sicurezza dimostrabile, riduzione stretta, firme probabilistiche, calcolo leggermente più oneroso. v1.5: sicurezza euristica, deterministico, più veloce, vulnerabile agli attacchi tramite oracoli del formato. Tutto il nuovo codice dovrebbe utilizzare PSS.

PSS in TLS 1.3

TLS 1.3 richiede RSA-PSS per tutte le firme RSA. PKCS#1 v1.5 è vietato nelle nuove estensioni TLS 1.3. Algoritmi di firma: rsa_pss_rsae_sha256, rsa_pss_rsae_sha384, rsa_pss_rsae_sha512.

PSS in Python

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() )

OID RSASSA-PSS

RSA-PSS ha un proprio tipo di chiave OID: id-RSASSA-PSS (1.2.840.113549.1.1.10). Le chiavi generate specificamente per PSS utilizzano questo OID e richiedono la firma PSS (non funzionano con v1.5). È la procedura consigliata per le nuove distribuzioni.

Hash troncati e raccomandazioni sulla lunghezza del salt

La sicurezza di PSS = min(|modulus|/2, |hash|) - 1 bit quando salt_length = hash_length. Per RSA-2048 con SHA-256: sicurezza a 128 bit. Abbini il livello di sicurezza: RSA-3072 + SHA-384 per una sicurezza a 192 bit.

Verifica rapida

Che cosa rende le firme RSA-PSS "probabilistiche" rispetto a quelle PKCS#1 v1.5?

Riepilogo

RSA-PSS è il modo sicuro di firmare con RSA. Ora approfondiremo la crittografia a curve ellittiche, comprendendo la geometria e l'algebra delle curve.

Domande Frequenti

La lezione «RSA-PSS per le firme digitali» è gratuita?

Sì — il testo completo di «RSA-PSS per le firme digitali» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cryptology Academy, passa a CoddyKit PRO. Il corso Cryptology Academy include 4 lezioni in totale.

Cosa imparerò in «RSA-PSS per le firme digitali»?

Scopra la codifica PSS e il salt e perché ha sostituito PKCS#1 v1.5 per la firma. Eserciti Cryptology Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Cryptology Academy?

Non è richiesta alcuna esperienza precedente. Cryptology Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «RSA-PSS per le firme digitali»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Cryptology Academy?

Sì. Ogni lezione Cryptology Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. RSA teorico e perché è insicuro
  2. Padding PKCS#1 v1.5 e Bleichenbacher
  3. OAEP: Optimal Asymmetric Encryption Padding
  4. RSA-PSS per le firme digitali
← Torna a Cryptology Academy