Cryptology Academy · Lezione

Schemi di firma DSA ed ECDSA

Confronti le firme RSA con DSA e con la variante basata sulle curve ellittiche.

Lezione 3 di 413 passaggi

Schemi di firma DSA ed ECDSA è una lezione Cryptology Academy gratuita su CoddyKit. Questa è la lezione 3 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

DSA ed ECDSA sono schemi di firma alternativi basati sulla difficoltà del logaritmo discreto. ECDSA domina i sistemi moderni grazie a chiavi più piccole e operazioni più rapide.

Panoramica su DSA

DSA (NIST, 1994) usa un gruppo ciclico di ordine primo q all'interno di Z*p. Generazione delle chiavi: chiave privata x; chiave pubblica y = g^x mod p. Standard: p di 2048 bit, q di 256 bit.

Algoritmo di firma DSA

1. Generare il nonce casuale k (1 < k < q) 2. r = (g^k mod p) mod q 3. s = k^(-1) × (Hash(M) + x×r) mod q 4. Firma: (r, s)

Verifica DSA

1. u1 = Hash(M) × s^(-1) mod q 2. u2 = r × s^(-1) mod q 3. v = (g^u1 × y^u2 mod p) mod q 4. Valida se v == r

Vulnerabilità del nonce DSA

Se lo stesso k viene usato due volte, le due firme condividono r. Dalle due coppie (r,s1) e (r,s2) è possibile calcolare direttamente la chiave privata x. Questo ha compromesso la PS3 (k=1 veniva usato ogni volta).

Panoramica su ECDSA

ECDSA è DSA applicato a un gruppo di curve ellittiche anziché a Z*p. La curva offre un livello di sicurezza equivalente con parametri molto più piccoli: ECDSA-256 ≈ DSA-3072 in termini di sicurezza.

ECDSA in Python

from cryptography.hazmat.primitives.asymmetric import ec from cryptography.hazmat.primitives import hashes private_key = ec.generate_private_key(ec.SECP256R1()) sig = private_key.sign(message, ec.ECDSA(hashes.SHA256())) public_key = private_key.public_key() public_key.verify(sig, message, ec.ECDSA(hashes.SHA256()))

ECDSA deterministico (RFC 6979)

RFC 6979 ricava k in modo deterministico dalla chiave privata e dall'hash del messaggio. Questo elimina la dipendenza da RNG e rende impossibile il riutilizzo del nonce. Tutte le implementazioni moderne usano RFC 6979.

EdDSA: Ed25519

Ed25519 (Edwards-curve DSA) usa la forma Edwards ritorta di Curve25519. È deterministico per progettazione e opera a tempo costante. È più veloce di ECDSA. È consigliato per i nuovi protocolli (chiavi SSH, TLS 1.3, Signal).

Confronto delle dimensioni delle chiavi

Firma RSA-2048: 256 byte. Firma ECDSA-256: ~71 byte. Firma Ed25519: 64 byte. Chiave pubblica Ed25519: 32 byte. Questa differenza di dimensioni è importante per i dispositivi con risorse limitate.

Curve standard

NIST P-256 (secp256r1): TLS, conformità FIPS. secp256k1: Bitcoin, Ethereum. Curve25519/Ed25519: Signal, WireGuard, SSH più recenti. Brainpool: alcuni standard europei.

Verifica rapida

Quale vulnerabilità catastrofica viene introdotta se un nonce k DSA/ECDSA viene riutilizzato?

Riepilogo

Ora comprende DSA, ECDSA ed Ed25519. Ora studieremo come le firme digitali proteggono le applicazioni reali: firma del codice ed email.
Gratis per iniziare

Impara Cryptology Academy con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
67
Lezioni
261

Domande Frequenti

La lezione «Schemi di firma DSA ed ECDSA» è gratuita?

Sì — il testo completo di «Schemi di firma DSA ed ECDSA» è 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 «Schemi di firma DSA ed ECDSA»?

Confronti le firme RSA con DSA e con la variante basata sulle curve ellittiche. 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 3 di 4.

Quanto tempo richiede la lezione «Schemi di firma DSA ed ECDSA»?

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. Che cos'è una firma digitale?
  2. Firme RSA: firma e verifica
  3. Schemi di firma DSA ed ECDSA
  4. Le firme nella pratica: firma del codice ed e-mail
← Torna a Cryptology Academy