Divulgación: trabajo para CoSign .
Está planteando la pregunta común de la firma digital de datos en el "borde" de la red.
Buena suerte con la idea de firmar en el cliente / borde, por las razones que discute. Y olvídese de Javascript, es completamente inseguro desde el punto de vista de la criptografía .
Tienes razón en que la clave privada de los firmantes no debe enviarse a ninguna parte.
Buenas noticias: hay una arquitectura alternativa que:
- No es necesario que las claves privadas se envíen a ningún lado
- Proteger las claves privadas
- Habilite la firma de clientes de todo tipo, incluidos dispositivos móviles, Android, .Net, iOS, etc.
- Disminuya los costos administrativos al centralizar las claves y la administración de claves
La respuesta: utilizar un dispositivo de firma centralizado. El dispositivo se ha endurecido en el nivel de hardware: si intenta abrir la caja, las llaves se destruyen. Los aparatos de firma están hechos por mi empresa y algunos otros.
En este sistema, el documento (o, simplemente, su hash) se envía desde el dispositivo de borde al dispositivo de firma centralizado. El usuario también se autentica con el dispositivo (utilizando cualquiera de varias técnicas). El aparato contiene las claves privadas. Firma el hash y devuelve la firma digital al cliente de borde.
Dependiendo de las capacidades del cliente, puede:
Ensamble el documento firmado en sí mismo (combinando la firma digital con el documento de origen). Beneficio: se deben enviar menos datos entre el cliente perimetral y el dispositivo de firma. Problema: requiere más sw en el cliente. O:
El dispositivo puede devolver el documento firmado completo. Beneficie una implementación más simple en el cliente, pero requiere que el documento se envíe al dispositivo de firma desde el cliente perimetral.
Tenga en cuenta que no es necesario devolver un documento PDF completo: la firma digital PDF se adjunta simplemente al documento de origen. Entonces el flujo puede ser:
- Envíe el PDF completo para firmar. (O simplemente envíe el hash si el cliente puede calcularlo).
- Reciba nuevamente el PDF completo (firmado), o simplemente una "cola" que, cuando se adjunta al PDF de origen, crea el documento firmado.
Varios tipos de datos
Mi empresa admite la firma de PDF, Word, Excel, XML y otros tipos de documentos listos para usar. Por ejemplo, los documentos de Word se firman utilizando el "estándar" de Word: un receptor (verificador) puede verificar un documento de Word firmado digitalmente sin instalar ningún elemento más allá de Word. No hay complementos, etc.
Autenticación de firmante
Los firmantes deben autenticarse con el dispositivo centralizado. Mi empresa admite varios tipos de autenticación, incluyendo OTP y 2FA.