Firma digitale di dati raw

Buongiorno a tutti,

ho necessità di ottenere la firma digitale di un dato (formato JSON) mediante una CIE o una smartcard (tipo quelle rilasciate da Infocert, Poste, buffetti, ecc.).

dove posso trovare le specifiche per interagire con la smartcard (ADPU ed esempi), o in alternativa esiste un servizio online a cui potersi collegare con SPID, inserire il dato e ottenere la firma?

Grazie,

pare che tu possa ottenere una firma digitale con lo spid

NAMIRIAL ti permette di attivare una firma digitale REMOTA con il solo SPID
https://shop.namirial.com/servizi/firma-digitale-remota/?_ga=2.62763884.1198856895.1620744939-1589110520.1620744939

grazie, ma questi servizi sono progettati per creare firme di documenti, non dati. Avrei bisogno di un server che esponga una REST API che accetti un JSON come input.

Puoi usare l’APP CieID su desktop per firmare con CIE il file JSON

purtroppo no, la firma del file non coincide con la firma del suo contenuto.

Si può in ogni caso verificare la correttezza della firma a partire dal contenuto JSON ricreando il file.

Questo, a mio avviso, non è possibile secondo le regole del CAD.
Infatti anche la firma XADES non trova applicazione perchè manca una standardizzazione del layer di presentazione delle informazioni che permetta la univoca comprensione di quanto si sta firmando al firmatario.

Certo, ma da un punto di vista tecnico, la firma di un documento non è altro che la cifratura con chiave privata del suo hash. Nel caso dei token o smartcard crittografiche la chiave è conservata in una memoria sicura del dispositivo. Quindi esiste un protocollo che permette a una applicazione che fornire al dispositivo l’hash del documento e ottenere in risposta l’hash criptato.

Se al dispositivo fornisco un hash o un altro tipo di dato non cambia nulla. La firma non avrà valore legale ai fini per cui è progettato il sistema, ma resta una firma di un dato prodotta con una chiave privata e verificabile con quella pubblica presente nel certificato collegato alle chiavi e al intestatario.

Quello che sto chiedendo è dove si trovano le specifiche di questo protocollo, tramite il quale si può firmare di fatto anche un dato generico.

Probabilment ho risolto.

https://www.agid.gov.it/sites/default/files/repository_files/documentazione_trasparenza/lineeguidacnsv3.0.pdf

e qui: https://github.com/OpenSC/OpenSC/wiki/Italian-CNS-and-CIE

Curiosita’ mia: non hai pero’ dei limiti dimensionali per il dato che fornisci al dispositivo?

beh, lui al dispositivo fornirebbe solo l’hash che ha lunghezza fissa, ma comunque non troverà mai un software già pronto perchè, a mio avviso, non si tratta di firma digitale ai sensi del CAD in quel caso. Niente gli vieta però di sviluppare un software adatto per usare le funzionalità della SMARTCARD.

Aggiungo un piccolo decimale “tecnico” a riguardo: potresti vedere l’implementazione del Digital Signature Service (DSS), o magari metterlo in opera, può esporre servizi REST, basati su OpenAPI, oltre che SOAP.

Inoltre, visto che hai un input in json, potresti usare il formato JAdES adottato di recente, per beneficiare di una maggiore elaborabilità, qui un esempio sempre dal DSS.

ottimo. Grazie per le informazioni aggiuntive.