Técnicamente, usar SHA-256 no hará las cosas más difíciles para el atacante. A menos que usted sea el atacante.
Las preocupaciones sobre SHA-1 son sobre colisiones . Se cree que SHA-1 es un tanto débil a este respecto (generar una colisión SHA-1 es todavía muy costoso, al punto de que no se ha hecho ni una sola vez, pero tenemos fuertes razones teóricas para pensar que el hallazgo de colisión los métodos que han sido diseñados para atacar SHA-1 tendrían éxito en encontrar una colisión con un esfuerzo sustancialmente menor que el 2 80 esperado de una función hash "perfecta").
Cuando firma una parte de los datos, comienza por hacer un hash y el valor de hash se usa en el resto de los algoritmos de verificación y generación de firmas. Para aprovechar una colisión, uno debe imaginar que hay dos versiones distintas del mismo software, la segunda es maliciosa y está haciendo cosas malvadas en el sistema cliente, pero ambas dan el mismo valor cuando se las utiliza con SHA-1. Si se pueden crear dos de estos archivos, entonces una firma (con SHA-1) calculada en el primer archivo también se aplicaría al segundo, y viceversa. Esto ayuda al atacante solo en un contexto en el que el atacante elige el archivo que ha iniciado sesión en primer lugar.
En su caso, el archivo original (el normal y honesto) es el que usted mismo produce. Si una colisión ayuda al atacante, usted es el atacante.
Si no eres el atacante, entonces lo que debe hacer un atacante es encontrar una segunda preimagen : el atacante ve el archivo honesto, no malicioso (que has firmado) e intenta Hacer un archivo modificado que hash al mismo valor. Esto no es en absoluto el mismo problema. Una colisión consiste en encontrar m y m ' de manera que m ≠ m' pero h ( m ) = h ( m '). Una segunda preimagen es lo mismo excepto que m no es elegido por el atacante. Esto es mucho más difícil e (hasta donde sabemos) no es factible con SHA-1. No hay una debilidad conocida, ni siquiera teórica, de SHA-1 que le permita a un atacante hacer eso.
En consecuencia, cambiar de SHA-1 a SHA-256 no mejoraría las cosas. Si el atacante puede crear un archivo malintencionado con una firma suya, esto significa que el atacante puede hacer que usted firme el código de su elección (por ejemplo, el atacante comprometió sus propios equipos de desarrollo), y en estas condiciones, SHA-256 sí lo hace. no bloquee al atacante más de SHA-1.
Sin embargo, los sistemas cliente pueden tener otra opinión sobre el tema. Desde el punto de vista de un cliente, el proceso de firma puede ir así:
- Alguien envía al firmante (usted) algunos datos para firmar.
- Usted audita los datos que se van a firmar y los firma si lo considera bueno y apropiado. Por ejemplo, para el software, mire el código fuente y haga la compilación usted mismo.
En este modelo, el atacante puede crear un código que se vea bien pero, cuando se compila, produce un binario que colisiona con un código malicioso que el atacante también diseñó. Bajo este modelo específico, las colisiones son un problema, porque el atacante está en posición de elegir las versiones honestas y maliciosas del software.
Lo más probable es que no siga este modelo: cuando firma un software, es un software que usted mismo desarrolló, no algo enviado por posibles atacantes. Tú lo sabes. Pero Microsoft no está tan seguro y podría decidir que sería demasiado arriesgado utilizar una función hash que podría permitir que ocurran colisiones.
Por lo tanto, es probable que aún desee cambiar a SHA-256, no porque SHA-1 sea demasiado vulnerable (este no es el caso en su situación), sino porque Microsoft puede decidir eliminar la compatibilidad con SHA-1.
La política de Microsoft se explica aquí , con el extracto particular:
El código firmado con los certificados SHA-1 con marca de tiempo antes del 1 de enero de 2016 se aceptará hasta el 14 de enero de 2020 (cuando finalice el soporte extendido de Server 2008), a más tardar. Esta fecha se puede mover antes si Microsoft decide que SHA1 es vulnerable al ataque previo a la imagen.
Tenga en cuenta la oración final: el problema se trata realmente de pre-imágenes, no de colisiones.
También querrá comprar un certificado de firma de código tal que la firma en el certificado , y en todos los certificados de CA en la cadena, use SHA-256, porque parece que Windows se está convirtiendo Cada vez más alérgico a SHA-1. Por los mismos motivos anteriores, este anatema en SHA-1 puede calificarse de exagerado, pero Microsoft no tiene otra opción: Google tiene la intención de matar SHA-1, y debe seguir Microsoft; de lo contrario, serán burlados y burlados.