Firma del lado del cliente de un archivo (.exe, .dll, .jar ..) usando un certificado emitido por CA y signtool [cerrado]

3

En un proyecto actual, hemos comprado un certificado de una CA de confianza y lo hemos instalado en un host, la herramienta de firma también se instala en el mismo host.

Todos los archivos que desarrollamos (jar, dll, apk, exe, etc.,) deben estar firmados, por lo que usamos la herramienta de certificado y firma alojada en un servidor central.

Cuando un desarrollador quiera firmar su archivo, lo subirá al host remoto donde reside la herramienta de certificado y firma y se descarga el archivo firmado.

Ahora que el tamaño del archivo aumenta día a día, no podremos cargar todo el archivo en un servidor remoto para que se firme. ¿Hay alguna forma de firmar el archivo en el lado del cliente y enviar solo el valor hash? al servidor para referencia ???

    
pregunta Goutham Nithyananda 15.12.2015 - 11:34
fuente

2 respuestas

3

En teoría, lo que estás pidiendo es posible: la firma de código básicamente consiste en firmar un hash de archivo, por lo que no hay razón para que lo hagas en el mismo lugar en que se calcula el hash.

En la práctica, sin embargo, no tengo conocimiento de ninguna manera en que pueda hacerlo sin escribir su propio código de firma de código, algo que realmente no debería tener en cuenta. Sería un problema delicado porque tendrías que asegurar el sistema muy bien.

Dicho esto, realmente no puedo imaginar una configuración donde cargar tu código a un servidor de firmas sea imposible o incluso muy difícil. Le sugiero que se concentre en ese aspecto de su problema.

Editar : en vista de la respuesta de Jonathan, creo que tengo que agregar una palabra de advertencia sobre tratar de cambiar el código existente para implementar dicho sistema.

Primero, se puede hacer. De hecho, después de revisar mis propias bibliotecas de firma de códigos (lea: el código que uso, que se mantiene profesionalmente y no cualquier código que escribí yo mismo), no sería demasiado difícil (al menos no a nivel de firma de códigos). ).

Aparte de eso, debe tener en cuenta las consecuencias: primero, las herramientas y la biblioteca que utiliza dejarán de ser admitidas por su proveedor (quienquiera que sea): si hay algún error que se solucione en en una fecha posterior, deberá implementar el parche usted mismo (suponiendo que pueda). Esto es increíblemente incómodo desde un punto de vista operativo.

En segundo lugar, escribir código criptográfico es DIFÍCIL y escribir un producto basado en criptografía seguro es aún más difícil. Si bien puede ser bastante interesante hacerlo "por diversión", un sistema profesional, listo para la producción, necesita muchos más recursos que una sola persona: es realmente un esfuerzo de equipo que requiere pruebas formales.

Entonces, dado que su problema parece ser que tiene una sola instancia de un problema (su base de código es tan grande que tiene problemas al cargarlo en el servidor), creo que es un problema que debe ser resuelto en un solo lugar, no obtenga una solución universal.

Ahora, si desea producir un nuevo producto que resuelva el problema de la firma de código para equipos (y podría haber un mercado para eso), ese es un problema completamente diferente (pero no uno para este lugar).

    
respondido por el Stephane 15.12.2015 - 12:15
fuente
-1

Me gusta la respuesta de Stephane, pero no estoy satisfecho con el hecho de que no es exactamente factible en la práctica sin escribir tu propio código. Así que tengo un par de posibles alternativas para sugerir:

1) Encuentre una herramienta de firma de código completamente abierto y modifíquela para que acepte un hash como entrada en lugar de calcular uno a partir del archivo. Luego, modifique el código de adición de la firma digital para que se envíe de vuelta al archivo real.

2) Puede intentar usar un enlace DLL para reencaminar una función de hashing de una herramienta existente (siempre que recupere el nombre interno del método de hashing). Luego tome la firma digital del final del archivo temporal utilizado y envíela para que se adjunte al archivo real.

    
respondido por el Jonathan Gray 15.12.2015 - 15:58
fuente

Lea otras preguntas en las etiquetas