¿Cómo se verifica una marca de tiempo de Authenticode?

5

Para que un archivo firmado por Authenticode sea verificable por Windows después de que el certificado de firma original haya caducado (generalmente 1-3 años después de la emisión), el archivo también debe tener una marca de tiempo firmada criptográficamente que Windows pueda verificar.

Hay un número de servicios de marca de tiempo Authenticode que firmarán tu binario por ti gratis (si están conectados y trabajando en ese momento).

No es suficiente que el certificado asociado con la firma de marca de tiempo simplemente se encadene de nuevo a una de las CA raíz de confianza en el almacén de certificados de Windows, o de lo contrario se podría usar su propia clave Authenticode para firmar la marca de tiempo, haciendo todo el ejercicio no tiene sentido (puede hacer una firma usando un certificado caducado, luego falsificar una marca de tiempo del pasado).

¿Hay un atributo de marca de tiempo X.509 que Windows verifique en el certificado antes de aceptar la firma? Si es así, ¿cómo puede obtener dicho certificado?

¿O hay una jerarquía de confianza de marca de tiempo Authenticode separada?

    
pregunta Michael 18.12.2013 - 22:03
fuente

1 respuesta

7

Un certificado para una Autoridad de sello de tiempo se acepta como tal solo si contiene una extensión de uso de clave extendida que a su vez anuncia el identificador de objeto id-kp-timeStamping específico (también conocido como 1.3.6.1.5.5.7.3.8). Aunque las marcas de tiempo de Authenticode no siguen el formato RFC 3161 , las reglas del certificado TSA siguen siendo las mismas (consulte sección 2.3 ).

Hay información sobre las marcas de tiempo de Authenticode allí . Al igual que las marcas de tiempo estándar (RFC 3161), dependen de PKCS # 7 (también conocido como "CMS"), pero el formato exacto del elemento de datos que está firmado por la TSA difiere.

Esta publicación del blog anuncia algún tipo de "tu propia TSA "producto (que no he probado de ninguna manera) que admita Authenticode; esto significaría indirectamente que hacer su propio certificado TSA y que Windows lo acepte como válido para las marcas de tiempo de Authenticode es factible.

Cualquier CA puede emitir un certificado con el identificador de objeto "TSA" (no hay ninguna dificultad conceptual), pero la mayoría de las CA establecidas no lo hará, principalmente por falta de demanda. Tenga en cuenta que ejecutar un TSA correctamente implica mantener un reloj lo suficientemente preciso, resistente a los intentos externos de cambiar su noción de tiempo (¡cuidado con NTP!), Y eso no es fácil. En realidad, es muy difícil hacerlo si intentas alcanzar una precisión de menos de un segundo (por ejemplo, debes procesar los segundos de salto, no puedes simplemente ignorarlos).

    
respondido por el Tom Leek 18.12.2013 - 23:00
fuente

Lea otras preguntas en las etiquetas