Textbook RSA

Si presta bene sia per firme digitali che per cifratura asimmetrica. Problema matematico di basso livello solitamente utilizzato in crittografia asimmetrica, simile al logaritmo discreto.

Funziona con numeri interi modulo n, ma a differenza del logaritmo discreto, il modulo non deve essere un numero primo, ma piuttosto il prodotto tra due numeri primi.

, dove n è il modulo pubblico, e p e q sono i due numeri primi segreti. Avendo questi numeri, si possono calcolare tale che . Si può quindi anche tornare indietro.

title: Esempio
- Crittografia: Alice usa la chiave pubblica k
- Firma: Bob usa la chiave segreta d
 
`sign(d, data)`: $m=H(data)^d \mod n$ - firma digitale
`verify(k, data, m)`: $H(data) == m^k \mod n$
 
dove H trasforma un dato in un numero.
`data`, `m`, `k` e `n` sono tutti pubblici. `d` è l'unico campo privato.
 
`verify` può essere eseguito da chiunque, ma la firma può essere creata solo conoscendo d, che è privata. 

Standard

RSA è un problema matematico. Per implementarlo, va usato uno standard.
"Usare RSA" significa usare uno standard di quelli sotto che è basato sul problema RSA.

Gli standard aggiungono dettagli su come implementare la funzione H. Gli standard che usano il problema RSA, sono:

  • PKCS1-OAEP - protocollo per cifratura RSA - nasconde la confidenzialitĂ  del dato
  • PKCS1-v1.5 - protocollo per cifratura RSA
  • PKCS1-PSS - protocollo di firma RSA
  • PKCS1-v1.5 - protocollo storico. Protocollo di firma RSA.

Sono chiamati schemi di padding (ma è diverso dall’algoritmo di padding negli schemi simmetrici), e sono chiamati così perchè servono ad adattare un dato (potenzialmente qualsiasi cosa), per essere utilizzato per l’elevamento a potenza.

RSA esiste solo basato su numeri interi, quindi esiste SOLO RSA.

La chiave segreta solitamente è cifrata con AES128. Questo crea un file con la chiave RSA cifrata direttamente tramite il protocollo AES128, e l’initialization vector, creato basandosi sulla password passata dall’utente.

csec_0205