2025-01-16 16:59:56 +01:00
[[8 - Crittografia applicata/1 - Concetti/1 - Trovare soluzioni crittografiche/funzione]] che implementa un [[signature scheme]] in modo [[operation framework deterministico|deterministico]] usando una [[key derivation function]] per i numeri casuali.
2023-09-21 02:46:23 +02:00
## Requisiti
- Gli output della [[funzione di hashing]] devono essere [[casualità crittografica|casuali]].
## Funzionamento
0. 1️ ⃣ vuole dimostrare di conoscere ${\color{orange} Y} = {\color{orange} g}^{\color{lime} x} \mod p$.
1. 1️ ⃣ calcola il primo [[commitment]] $r = \mathrm{KDF}({\color{lime} x}, Data)$.
2. 1️ ⃣ calcola il secondo [[commitment]] ${\color{orange} R} = {\color{orange} g}^r$.
- Usando come $k$ un numero [[casualità crittografica|casuale]].
3. 1️ ⃣ calcola una [[challenge]] ${\color{orange} c} = \mathrm{hash}({\color{orange} R}, Data)$.
- Usando come ${\color{orange} c}$ un numero [[casualità crittografica|casuale]].
- Usando come $Data$ i [[dati associati]] da firmare.
4. 1️ ⃣ calcola il [[witness]] ${\color{orange} s} = k + {\color{lime} x} \cdot {\color{orange} c}$.
5. 1️ ⃣ invia il [[commitment]], la [[challenge]], e il [[witness]] a 2️ ⃣.
6. 2️ ⃣ effettua la verifica ${\color{orange} g^s} = {\color{orange} g}^{k + {\color{lime} x} \cdot {\color{orange} c}} = {\color{orange} g}^k \cdot {\color{orange} g}^{{\color{lime} x} \cdot {\color{orange} c}} = {\color{orange} R} \cdot {\color{orange} Y^c}$ .