Tabella dei contenuti
Come verificare una risposta firmata da un erogatore
Il ModI lascia discrezione all'erogatore nell'indicare qual debba essere la procedura corretta di firma del payload e verifica da parte del fruitore.
Si riporta comunque a titolo di esempio una possibile gestione del meccanismo di firma del payload di risposta di un e-service.
Per maggiori informazioni, si veda la sezione dedicata.
Quando un fruitore riceve una risposta firmata dall'erogatore, può verificare l’autenticità e l’integrità dei dati ricevuti nella risposta attraverso il kid (id della chiave) inserito nel payload, e la chiave pubblica che l'erogatore ha depositato sul proprio Portachiavi erogatore, associato all'e-service.
Step 1 - Deserializzazione della risposta
Una volta deserializzato il payload creato dall'erogatore nel tutorial dedicato, il fruitore troverà la risposta JSON che l'erogatore ha inviato, strutturata come segue:
1{
2 "data": {
3 "campo1": "valore1",
4 "campo2": "valore2"
5 },
6 "signature": "<firma_rsa_in_base64>",
7 "kid": "<id_chiave_pubblica>"
8}
9
10
Nome campo | Significato |
---|---|
data | contiene il payload, ossia i dati effettivi che l'e-service trasmette verso i fruitori |
signature | contiene la firma digitale del campo data, calcolata dall'e-service utilizzando una chiave privata RSA (appartenente ad un portachiavi all'e-service) e codificata in formato base64 |
kid | identificatore della chiave usata per la firma; consente al fruitore di sapere quale chiave pubblica utilizzare per verificare la firma |
Si passa quindi alla verifica della firma.
Step 2 - Individuazione della chiave pubblica
La chiave corrispondente al kid è reperibile sulle API esposte da PDND Interoperabilità.
Per ottenere la chiave da PDND Interoperabilità, il fruitore deve aver:
- creato un client di tipo API Interop (vedi tutorial);
- generato almeno un set di materiale crittografico e caricato la relativa chiave pubblica su PDND Interoperabilità all'interno del client (vedi tutorial)
- aver ottenuto un voucher valido per le API di PDND Interoperabilità (vedi tutorial).
Il fruitore la troverà al path GET /keys/{kid} in formato JWK.
Step 3 - Ricalcolo dell'hash
Il fruitore calcola l’hash del contenuto di data usando lo stesso algoritmo utilizzato dell'erogatore SHA256.
Step 4 - Verifica della firma
Con la chiave pubblica ottenuta allo step 2, il fruitore verifica che la firma (campo signature) corrisponda all’hash calcolato nello step 3. Se i due valori corrispondono, il payload è autentico e integro; in caso contrario, potrebbe essere stato alterato o non provenire dall'e-service ed è possibile contattare l'erogatore per maggiori informazioni.
Pagina successiva → Tutorial generali
Hai bisogno di aiuto?
Apri un ticket utilizzando l’apposita funzione all’interno della tua Area Riservata