Firma digitale standardizzata dell'UE per i dati del modulo

4

Problema

Sto cercando di identificare se esistono standard (accettati dall'UE) per quanto riguarda il lato client che firma digitalmente i dati del modulo prima che sia inviato.

Quindi i vincoli sono:

  • conosci lo standard
  • accettato dall'UE
  • lato client (abbiamo bisogno di prove dell'origine non a prova di manomissione)
  • basato su javascript e / o basato su plugin per browser (qualsiasi lingua)
  • può funzionare con contenuti correlati a forme web (k / v coppie di dati)
  • l'output del processo dovrebbe essere leggibile dalla macchina (es .: form-urlenc, JSON, bson, msgpack)
  • il formato di output non dovrebbe avere problemi di ambiguità (ovvero non sanguinoso XML *, forse non form-urlenc)

La mia lettura sull'argomento fino ad ora

XMLDSIG è cattivo dato che XML può essere canonizzato a diversi milioni di modi rendendo la firma non valida o peggio un XSD o XSLT (o anche CSS) collegato può alterare il rendering visibile (a seconda dello strumento di visualizzazione) del contenuto dei dati che significa che può alterare il suo significato esponendo gli utenti a possibili truffe.

PAdES è già in uso nella nostra pubblica amministrazione e il nostro ambito di progetto potrebbe coprire la necessità di creare file PDF con moduli incorporati e firma digitale.

PGP / GPG o S / MIME potrebbero essere un contendente valido per il ruolo ma idk se sono ufficialmente riconosciuti o standardizzati dalle leggi dell'UE. D'altra parte, entrambi portano le loro firme allegate ai dati.

Sfondo:

Sto facendo ricerche per un progetto governativo (in Romania) che sta tentando di implementare firme digitali su semplici forme web.

So che Estonia, Belgio, Francia e Germania dispongono già di sistemi simili per le carte di identità elettroniche e la firma digitale hardware dei documenti, nonché alcuni framework / strumenti che usano (es .: hwcrypto.js).

Ma mi piacerebbe capire il loro intero processo, per esempio firmano digitalmente interi documenti o solo alcuni dati grezzi in un formato leggibile dalla macchina (come descritto sopra).

Richiedono carte di identità elettroniche o possono essere utilizzate con un file di certificato sul disco.

    
posta Mihai Stancu 12.10.2016 - 21:38
fonte

2 risposte

3

La firma digitale nell'UE è regolata da REGOLAMENTO N. 910/2014 relativo all'identificazione elettronica e ai servizi fiduciari . È direttamente applicabile in tutti i territori senza trasposizione

Non avrai trovato alcun riferimento agli standard relativi al formato o alla tecnologia, ma il completamento richiede:

  • Certificati digitali X509 emessi da un fornitore di servizi fiduciari qualificato. Deve essere presente in elenco di fiducia dell'UE (TSL)
  • Formato XAdES, CAdES, PAdES o ASiC per l'interoperabilità tra le pubbliche amministrazioni

Certificati digitali nel browser

I certificati vengono rilasciati agli utenti in file software o token di crittografia (carta d'identità). Questo è il più grande ostacolo. A causa delle restrizioni Java sui browser, non è possibile utilizzare il Key Store nativo del sistema operativo (selezionare questo e questo )

Ci sono alcune alternative

  • Usa WebCryptographyApi per caricare il certificato. Vedi link

  • Usa chrome messaging api (Estonia). Vedi link

  • Utilizza un'applicazione locale collegata tramite javascript (Spagna) Vedi link

Formato AdES

Questo non è un requisito derivato del regolamento 910/2014, ma l'eGoverment utilizza una legislazione aggiuntiva per l'interoperabilità. Questo non è obbligatorio per le aziende private

ETSI XAdES, CAdES e PAdES non sono adatti per gli ambienti web. Le librerie note come forge o pkijs non supportano esso. XAdES è basato su XMLDsig (lo hai definito ...) e CAdES / PAdES utilizzano la codifica binaria ASN.1.

Sfortunatamente JWS (JsonWebSignature) non ha ancora un AdES standard di ETSI.

Sul Web e amp; Per i dispositivi mobili viene utilizzata una tecnica chiamata 'firma a tre passi' per evitare di spostare le complesse librerie di firma digitale sul dispositivo.

  1. Prepara l'hash per accedere al server utilizzando il certificato pubblico dell'utente e i dati da firmare (un documento o i dati del modulo)

  2. firma hash sul lato client

  3. Completa il formato della firma sul server

Solo il secondo passo viene eseguito sul lato client. La SD-DSS quadro europeo (opensource) fornisce alle amministrazioni un quadro completo di firma digitale, compreso il supporto a TSL, firma e verifica

    
risposta data 13.10.2016 - 08:43
fonte
0

È possibile eseguire:

  • S / MIME firma e verifica,
  • Firma e verifica PDF,

In Javascript utilizzando PKIjs, qui è un esempio S / MIME.

Puoi eseguire firme XAdES in Javascript utilizzando XAdESjs .

Il problema più grande è l'accesso a una smart card dal browser, oggi l'unico modo che può essere fatto è tramite un plug-in come quello fornito dal progetto ID nazionale estone, avresti bisogno di fare il lavoro per avvolgere in un'interfaccia di stile WebCrypto per utilizzare le librerie precedenti.

    
risposta data 02.02.2017 - 05:35
fonte

Leggi altre domande sui tag