You are on page 1of 7

FIRMA DIGITALE 3.

2
Definita nel CAD, Codice dell’Amministrazione Digitale, come un particolare tipo di firma
qualificata basata su un sistema di chiavi crittografiche, una pubblica e una privata, correlate tra
loro, che consente al titolare di firma elettronica tramite la chiave privata e a un soggetto terzo
tramite la chiave pubblica, rispettivamente, di rendere manifesta e di verificare la provenienza e
l'integrità di un documento informatico o di un insieme.
La norma introduce quindi l'uso di algoritmi di crittografia a chiave pubblica.
È un sistema di sottoscrizione di documenti informatici, che garantisce:
1- Autenticità;
Certezza del mittente.
2- Integrità;
Non modificabilità del messaggio firmato.
3- Non ripudio;
Innegabilità da parte del firmatario.
4- Riservatezza.
Opzionale perché è possibile che per il messaggio non sia richiesta confidenzialità.
Il certificato per la firma elettronica viene rilasciato dal Certification Authority (soggetto terzo di
fiducia, pubblico o privato, abilitato ad emettere un certificato digitale tramite una procedura di
certificazione che segue standard internazionali e in conformità alla normativa europea e nazionale
in materia. Esempi: Aruba, Poste Italiane, …) senza formalità; è previsto invece un processo
obbligatorio di accreditamento da parte di una autorità pubblica preposta per qualificare
una Certification Authority a emettere certificati qualificati.
Possono essere certificate persone fisiche, organizzazioni, server, applicazioni software, siti web,
reti di interconnessione, contenuti digitali ovvero il file che rappresenta il contenuto.

1- DA CRITTOGRAFIA ASIMMETRICA A FIRMA DIGITALE


𝑚, messaggio da firmare, testo in chiaro:
1- Alice genera la sua chiave privata (𝑺𝑲𝐴 ) e la corrispondente pubblica (𝑷𝑲𝐴 ).
2- Alice <<decifra>> il messaggio 𝑚 con la propria chiave privata (𝑺𝑲𝐴 ) ed ottiene 𝒅𝐴 , firma
di 𝑚, che può essere aggiunto ad 𝑚 → (𝒎, 𝒅𝐴 ).
3- Chiunque riceva (𝒎, 𝒅𝐴 ) può decifrare 𝒅𝐴 tramite (𝑷𝑲𝐴 ) e verificare se il risultato coincide
con 𝑚. Nessuna riservatezza-confidenzialità del messaggio.
4- In tal caso, la firma viene accettata come autentica, altrimenti scartata.

1
(nell’immagine viene
usato Bob, nella
didascalia Alice, poco
cambia, io uso Alice
come mittente)

Problematiche:
1- La lunghezza della firma non può essere dimensionalmente grande quanto il messaggio.
2- Potenziale attacco MITM.
L’attaccante si colloca nel punto debole della catena, cioè durante la distribuzione delle
chiavi pubbliche, il MITM, fornisce a Bob anche la sua chiave pubblica. A questo punto
riesce ad intercettare il messaggio di Alice prima che questo arrivi a Bob. Sostituisce 𝑚
con 𝑚′ , messaggio fraudolento, lo decifra con la sua chiave segreta ed ottiene la firma
′ ′
del messaggio fraudolento, 𝑑𝑀𝐼𝑇𝑀 . Spedisce a Bob la coppia (𝑚′ , 𝑑𝑀𝐼𝑇𝑀 ) che decifra ma
non si accorge di nulla perché tutto coincide.
Bisogna trovare il modo di distribuire le chiavi pubbliche in maniera più sicura, per
questo sono state istituite le Anchor Trust → Nei sistemi crittografici con struttura
gerarchica, un’ancora di fiducia è un’entità autorevole per la quale la fiducia viene
assunta e non derivata. La maggior parte dei sistemi operativi fornisce un elenco
integrato di certificati radice auto-firmati che fungono da ancore di fiducia per le
applicazioni. Anche il browser web Firefox fornisce un proprio elenco di ancore di
fiducia. Quindi, l’utente finale di un sistema operativo o di un browser web si fida
implicitamente del corretto funzionamento di quel software e il produttore software, a
sua volta, delega la fiducia per determinare operazioni crittografiche alle autorità di
certificazione responsabili dei certificati radici.

2
2- FIRMA RSA
Dominio ed codominio della funzione di cifratura coincidono nell’insieme dei numeri moduli 𝑛,
ciò permette un agevole scambio tra cifratura e decifratura.

❖ FASE 1: GENERAZIONE DELLE CHIAVI


A- Alice genera due numeri primi grandi, 𝑝 e 𝑞, e calcola 𝑛 = 𝑝𝑞.
B- Alice sceglie l’esponente 𝑒:
1 < 𝑒 < 𝜑(𝑛) = (𝑝 − 1)(𝑞 − 1)
𝑀𝐶𝐷(𝑒, 𝜑(𝑛)) = 1
C- Alice calcola 𝑑:
𝑒𝑑 ≡ 1 (𝑚𝑜𝑑 𝜑(𝑛))
D- Alice pubblica 𝑃𝐾𝐴 = (𝑒, 𝑛) e tiene segreta 𝑆𝐾𝐴 = (𝑑, 𝑝, 𝑞)

❖ FASE 2: PROCEDURA DI FIRMA


A- Alice firma il messaggio 𝑚 in 𝑦 ≡ 𝑚𝑑 (𝑚𝑜𝑑 𝑛) e rende pubblica la coppia (𝑚, 𝑦),
quindi il messaggio non è riservato.

❖ FASE 3: PROCEDURA DI VERIFICA


A- Bob calcola 𝑧 ≡ 𝑦 𝑒 (𝑚𝑜𝑑 𝑛) e verifica che 𝑧 = 𝑚.

❖ SICUREZZA
- La firma generata da Alice, 𝑦, non può essere usata da Eve su un altro messaggio (𝑚1 ) in
quanto 𝑦 𝑒 ≠ 𝑚1 (𝑚𝑜𝑑 𝑛).
- Affinché l’attacco vado a buon fine serve una nuova firma 𝑦1 : 𝑦1𝑒 ≡ 𝑚1 (𝑚𝑜𝑑 𝑛).
- Si potrebbe provare a fissare la firma e ricavare il messaggio come 𝑚1 ≡ 𝑦1𝑒 (𝑚𝑜𝑑 𝑛),
ma la probabilità che 𝑚1 abbia un senso compiuto e voluto è troppo bassa.

❖ BLIND SIGNATURE, trad. FIRMA CIECA


Introdotte da David Chaum come una forma di firma digitale in cui il contenuto di un
messaggio viene nascosto prima di essere firmato. Il messaggio viene quindi firmato in modo
cieco, infatti il firmatario non conosce il contenuto del messaggio. Le firme cieche sono
utilizzate nei protocolli per la privacy dove il firmatario e l’autore del messaggio sono
differenti, ad esempio sono molto utilizzate nel campo dell’e-voting, voto elettronico e
dell’e-cash, denaro elettronico-criptovalute. Gli schemi di firma cieca possono essere
implementati usando i comuni schemi di firma a chiave pubblica come RSA o DSA.

3
Procedura
1- Si considera
inizialmente la chiave
pubblica di Bob
(𝑝, 𝑒), dove 𝑝 è il
prodotto di due
numeri primi ed 𝑒,
l’esponente pubblico
della chiave.

2- Alice sceglie un numero casuale 𝑟, blinding factor, coprimo con 𝑝, cioè 𝑀𝐶𝐷(𝑟, 𝑝) = 1
e calcola ed invia su un canale pubblico a Bob, 𝑚′ ≡ 𝑚𝑟 𝑒 (𝑚𝑜𝑑 𝑝).
3- Bob calcola 𝑠 ′ ≡ (𝑚′ )𝑑 (𝑚𝑜𝑑 𝑝) usando la sua chiave privata (𝑝, 𝑑) ed invia 𝑠 ′ ad Alice.
4- A questo punto Alice può togliere la propria firma e ottenere il messaggio originale 𝑚
firmato da Bob nel seguente modo 𝑠 ≡ 𝑠 ′ 𝑟 −1 ≡ 𝑚𝑑 (𝑚𝑜𝑑 𝑝)

Dimostrazione

4
3- FIRMA ElGamal
Più complicato di RSA da invertire, per questo necessita di qualche piccola modifica allo
schema di cifratura classico. Inoltre, a causa dell’espansione che l’algoritmo introduce, la firma
risulta avere dimensione tripla rispetto al messaggio da firmare, poiché Alice invia la firma
(𝑟, 𝑠) insieme al messaggio 𝑚.

❖ FASE 1: GENERAZIONE DELLE CHIAVI


1- Alice sceglie un numero primo grande 𝑝, una radice primitiva 𝛼 ed un numero segreto
𝑎: 1 < 𝑎 < (𝑝 − 2).
2- Alice calcola 𝛽 ≡ 𝛼 𝑎 (𝑚𝑜𝑑 𝑝), pubblica {𝑝, 𝛼, 𝛽} e tiene privata {𝑎}.

❖ FASE 2: PROCEDURA DI FIRMA


1- Alice sceglie un numero segreto casuale usa e getta 𝑘 coprimo con (𝑝 − 1).
2- Alice calcola:
𝑟 ≡ 𝛼 𝑘 (𝑚𝑜𝑑 𝑝)
𝑠 ≡ 𝑘 −1 (𝑚 − 𝑎𝑟) (𝑚𝑜𝑑 (𝑝 − 1)) , ecco la modifica, originariamente si aveva 𝛽𝑘 𝑚, viene
calcolato 𝑚𝑜𝑑 (𝑝 − 1) anziché 𝑚𝑜𝑑 𝑝 perché 𝑠 sarà un’esponente, quando si lavora con gli esponenti lo
facciamo mod 𝜑 = (𝑝 − 1), quando si lavora con le potenze lo si fa 𝑚𝑜𝑑 𝑝.

3- Il messaggio firmato è costituito da {𝑚, 𝑟, 𝑠}.

❖ FASE 3: PROCEDURA DI VERIFICA


1- Bob calcola:
𝑣1 ≡ 𝛽 𝑟 𝑟 𝑠 (𝑚𝑜𝑑 𝑝)
𝑣2 ≡ 𝛼 𝑚 (𝑚𝑜𝑑 𝑝)
2- Bob considera la firma valida se e solo se 𝑣1 ≡ 𝑣2 (𝑚𝑜𝑑 𝑝).

𝛼, o equivalentemente 𝑟, in El Gamal serve a trasportare 𝑘, parametro segreto, di là.

Dimostrazione
𝑠 ≡ 𝑘 −1 (𝑚 − 𝑎𝑟) (𝑚𝑜𝑑 (𝑝 − 1)) → 𝑚 ≡ 𝑠𝑘 + 𝑎𝑟 (𝑚𝑜𝑑 (𝑝 − 1))
𝑣2 ≡ 𝛼 𝑚 ≡ 𝛼 𝑠𝑘+𝑎𝑟 ≡ (𝛼 𝑎 )𝑟 (𝛼 𝑘 )𝑠 ≡ 𝛽 𝑟 𝑟 𝑠 ≡ 𝑣1 (𝑚𝑜𝑑 𝑝)

❖ SICUREZZA
1- Bisogna mantenere segreto 𝑎.
2- Bisogna che Alice usi un diverso 𝑘 per ogni firma, altrimenti nella firma comparirà lo
stesso 𝑟.

5
4- Digital Signature Algorithm, DSA, 1993
Standard FIPS, Federal Information Processing Standards, per la firma digitale proposto dal
NIST, National Istitute of Standars and Technology, per essere impiegato nel Digital Signature
Standard, DSS. Fa uso di un sistema crittografico a chiave pubblica simile ad ElGamal.

❖ PASSO 1: GENERAZIONE DELLE CHIAVI


1- Alice sceglie un numero primo 𝑞 lungo 160 bit e trova un altro numero primo 𝑝 tale che
𝑞 divida (𝑝 − 1).
2- Alice sceglie un numero segreto 𝑎 ∶ 1 < 𝑎 < (𝑞 − 2) e calcola 𝛽 ≡ 𝛼 𝑎 (𝑚𝑜𝑑 𝑝).

3- Alice pubblica {𝑝, 𝑞, 𝛼, 𝛽} e tiene segreto {𝑎}.


𝑝−1
4- Se 𝑔 è una radice primitiva 𝑚𝑜𝑑 𝑝 ed 𝛼 ≡ 𝑔 𝑞 (𝑚𝑜𝑑 𝑝) → 𝛼 𝑞 ≡ 1 (𝑚𝑜𝑑 𝑝)

❖ PASSO 2: PROCEDURA DI FIRMA


1- Alice sceglie un numero casuale usa e getta 𝑘 ∶ 1 < 𝑘 < (𝑞 − 2).
2- Alice calcola:

𝑟 ≡ ( 𝛼 𝑘 (𝑚𝑜𝑑 𝑝)) (𝑚𝑜𝑑 𝑞)

𝑠 ≡ 𝑘 −1 (𝑚 + 𝑎𝑟) (𝑚𝑜𝑑 𝑞)
3- Alce invia la firma (𝑟, 𝑠) insieme al messaggio 𝑚.

❖ PASSO 3: PROCEDURA DI VERIFICA


1- Bob calcola:
𝑢1 ≡ 𝑠 −1 𝑚 (𝑚𝑜𝑑 𝑞)
𝑢2 ≡ 𝑠 −1 𝑟 (𝑚𝑜𝑑 𝑞)
𝑣 ≡ (𝛼 𝑢1 𝛽 𝑢2 (𝑚𝑜𝑑 𝑝)) (𝑚𝑜𝑑 𝑞)
2- Bob verifica che 𝑣 = 𝑟.

La procedura di verifica funziona perché:


𝑚 ≡ (−𝑎𝑟 + 𝑘𝑠) (𝑚𝑜𝑑 𝑞)
𝑠 −1 𝑚 ≡ (−𝑎𝑟𝑠 −1 + 𝑘) (𝑚𝑜𝑑 𝑞)
𝑘 ≡ 𝑠 −1 𝑚 + 𝑎𝑟𝑠 −1 (𝑚𝑜𝑑 𝑞) ≡ 𝑢1 + 𝑎𝑢2 (𝑚𝑜𝑑 𝑞)
𝛼 𝑘 = 𝛼 𝑢1 𝛼 𝑎𝑢2 = (𝛼 𝑢1 𝛽 𝑢2 (𝑚𝑜𝑑 𝑝)) (𝑚𝑜𝑑 𝑞) ovvero 𝑟 = 𝑣.
Anche per il DSA è importante che Alice non riusi lo stesso 𝑘 per firmare due messaggi diversi.

6
5- HASH E FIRMA DIGITALE
Le primitive di firma digitale usate direttamente sul messaggio producono una firma lunga
almeno quanto il messaggio. Ciò rende la firma digitale inutilizzabile per scopi pratici, una
soluzione consiste nel calcolare la firma digitale non sul messaggio, ma su un hash digest del
messaggio, tale approccio prendo il nome di hash and sign ed è ciò che si fa nel 90% dei casi.

Tale meccanismo permette di avere firme molto corte ma apre a possibili vulnerabilità legate
alle funzioni hash, per esempio il paradosso del compleanno.

You might also like