Pregunta

Estoy programando una Autoridad de Certificación en Java para una clase uni, ahora no sé cuál es la mejor opción para el número de serie del certificado.

  • contador estático simple de 0 a veryBigNumber
  • un enorme número aleatorio Bigint

¿Hay alguna buena razón para elegir uno sobre el otro ... o ninguno de ellos ??

Gracias,

¿Fue útil?

Solución

Yo recomendaría que utilice un número aleatorio, pero mantener una lista de los números de serie emitidos en una base de datos. Esto permitirá dos cosas.

  1. Nunca se volverá a emitir el mismo número de serie.
  2. Usted puede decir de número de serie de un certificado si es incluso remotamente válida.

Por supuesto # 1 requiere que consulte con la lista conocida en la generación y para generar un nuevo número aleatorio si se produce una colisión, y # 2 no es mucho de nada en términos de seguridad o validación, sino una perspectiva interesante empre- la-menos.

Otros consejos

Técnicamente contador de 0 a veryBigNumber es más fácil de implementar que bigRandomNumber - debido a que los números de serie deben ser diferentes.

Sin embargo - puede que no desee utilizar un simple contador si se preocupan por la gente que sabe cuántos certificados que se emitan.

Depende de lo que está utilizando el número de serie. Si usted es una pequeña empresa y si usted está pensando en dar un certificado por cada cliente, entonces el número de serie revelará el número de clientes que tiene.

Aparte de eso, no veo ninguna razón por la cual el número de serie no debe ser en serie. Algunas personas argumentan que el uso de números de serie regalará alguna información (el siguiente número de serie) a un potencial atacante, pero no creo que esto es un gran problema.

El requisito principal es que el (Issuer distinguished name, serial number) par debe ser único en el universo. Por lo tanto no se debe utilizar un número aleatorio a menos que sea tan grande que la probabilidad de repetición es insignificante. Un número aleatorio de 20 bytes debería ser más que suficiente. Un simple contador está perfectamente bien, si no te importa que otras personas saber cuántos certificados que ha emitido.

Los relativamente recientes ataques a los emisores de certificados SSL (por Alex Sotirov et. Al) que explota la debilidad en MD5 en realidad se hicieron aún más fácil por el uso de números de serie-tipo de contador. números de serie al azar no fueron atacados. Esto no quiere decir que los números de serie predecibles son malos seguridad, sólo significa que para esta aplicación números de serie al azar podrían ayudar a enmascarar las debilidades de MD5. La raíz del problema era todavía MD5.

Creo que si examinamos la palabra de serie la respuesta está implícita .... serie, serie, etc progresión

Me pasó a venir a través de esta pregunta por casualidad hace un momento, y se podría pensar de las respuestas que un número de serie predecible no es un problema de seguridad. Yo diría que es es una preocupación, y que los números de serie al azar son mucho más seguros. Cf. Llama ataque et al aquí por ejemplo, o aquí o el artículo de Wikipedia sobre " predecible ataque de serie número ."

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top