"Encontrar colisiones es un proceso difícil, ya que requiere que te deshagas de él. con los bits de la clave pública incorporada en el certificado (consulte este papel para más detalles). Además, Microsoft podría haber evitado esto. de alguna manera agregando un número de serie al azar al certificado, que no lo hice ".
Mi pregunta es cómo agregar un valor aleatorio a un certificado mejora la seguridad. ¿No podría el atacante simplemente generar un número de serie para crear una colisión MD5?
Actualizar:
Aquí hay información sobre cómo Microsoft implementa la aleatorización en una clave de CA . No estoy seguro de los beneficios y desventajas de cada uno.
Configurar generación de número de serie
En una CA de Windows 2000, dos tipos de números de serie de longitud fija son generado. El registro puede ser modificado para generar uno u otro. tipo. El número de serie predeterminado es (de alto a bajo): un DWORD de GetTickCount () + un índice de certificado CA de USHORT (0 para iniciar) + un DWORD RequestId (10 bytes / 20 dígitos hexadecimales). La forma alternativa es: una byte derivado del registro + un DWORD RequestId + 8 bytes de Salida CryptGenRandom + un índice de certificado CA de USHORT + un ID de solicitud DWORD (19 bytes / 38 dígitos hexadecimales).
Para habilitar la forma alternativa y establecer el byte derivado de la registro, utilice el siguiente comando:
certutil –setreg ca\HighSerial 0x33
El valor de byte especificado se modificará para borrar el bit de signo y para establecer un poco en el mordisco alto para evitar la codificación del número de serie errores de ambigüedad en ciertas aplicaciones PKI que no son de Microsoft.
En una CA de Windows Server 2003, tres tipos de serie de longitud fija se generan numeros Las formas por defecto y alternativa son las mismas que en Windows 2000. El formulario alternativo de Windows 2000 utiliza un nuevo 8 aleatorio Bytes generados por CryptGenRandom para cada número de serie. El nuevo La forma alternativa para Windows Server 2003 utiliza un fijo de 8 bytes aleatorios de CryptGenRandom, generado durante el primer intento de emitir un certificado, y guardado en el registro como 8 bytes de fijo Salida CryptGenRandom + un índice de certificado CA de USHORT + un ID de solicitud DWORD (14 bytes / 28 dígitos hexadecimales).
Para habilitar el nuevo formulario alternativo en el registro, use lo siguiente comando:
certutil –setreg ca\HighSerial 0xffffffff
Dado que los 8 bytes aleatorios fijos de CryptGenRandom están codificados como y guardado en el registro, puede establecerlos directamente y hacer que se utilicen para nuevos números de serie. De hecho, cualquier longitud cadena hexadecimal se podría establecer en el registro (pero debe haber un número par de dígitos). El número de bytes utilizados desde el registro. se reducirá si se desbordaría un total de 19 bytes para el número de serie. El byte alto se manipula como se describe anteriormente para Evite problemas con ciertas aplicaciones que no sean de Microsoft. El IETF las normas especifican un máximo de 20 bytes de serie.