Divulgazione: lavoro per CoSign .
Stai sollevando la domanda comune di firma digitale dei dati sul bordo della rete.
Buona fortuna per l'idea di firmare al cliente / edge, per le ragioni che discuti. E dimentica Javascript, è completamente insicuro dal punto di vista della crittografia .
Hai ragione che la chiave privata dei firmatari non deve essere inviata ovunque.
Buone notizie: c'è un'architettura alternativa che:
- Non richiede che le chiavi private vengano inviate ovunque
- Proteggi le chiavi private
- Abilita la firma da client di tutti i tipi, inclusi dispositivi mobili, Android, .Net, iOS, ecc.
- Riduci i costi amministrativi centralizzando le chiavi e la gestione delle chiavi
La risposta: utilizzare un dispositivo di firma centralizzato. L'appliance è indurita a livello hardware: se provi ad aprire la scatola, le chiavi vengono distrutte. Gli elettrodomestici firmati sono realizzati dalla mia azienda e da altri.
In questo sistema, il documento (o meglio, solo il suo hash) viene inviato dal dispositivo periferico al dispositivo di firma centralizzato. L'utente si autentica anche con l'appliance (utilizzando uno qualsiasi di una serie di tecniche). L'appliance detiene le chiavi private. Firma l'hash e restituisce la firma digitale al client edge.
A seconda delle capacità del client, può:
Assembla il documento firmato stesso (combinando la firma digitale con il documento sorgente). Vantaggio: è necessario inviare meno dati tra il client edge e l'appliance di firma. Problema: richiede più sw sul client. Oppure:
L'appliance può restituire il documento firmato completo. Vantaggi di un'implementazione più semplice sul client ma richiede che il documento venga inviato all'appliance di firma dal client edge.
Si noti che non è necessario restituire un intero documento PDF: la firma digitale PDF viene semplicemente aggiunta al documento di origine. Quindi il flusso può essere:
- Invia l'intero PDF per la firma. (O semplicemente invia l'hash se il cliente può calcolarlo.)
- Riceve indietro l'intero PDF (firmato), o solo una "coda" che, una volta aggiunta al PDF di origine, crea il documento firmato.
Tipi di dati multipli
La mia azienda supporta la firma di PDF, Word, Excel, XML e altri tipi di documenti pronti all'uso. Ad esempio, i documenti Word sono firmati usando lo "standard" di Word - un documento Word con firma digitale può essere verificato da un destinatario (relying party) senza installando qualcosa oltre a Word. Nessun plugin, ecc.
Autenticazione firmatario
I firmatari devono autenticarsi con l'appliance centralizzata. La mia azienda supporta diversi tipi di autenticazione tra cui OTP e 2FA.