2009-07-06 9 views
14

Pregunta para todos los expertos en SSL:autenticación SSL al comparar la huella dactilar del certificado?

Tenemos un dispositivo integrado con un pequeño servidor web y podemos instalar nuestros propios certificados SSL autofirmados en él. El cliente está escrito en .NET (pero eso no importa mucho).

¿Cómo puedo autenticar el dispositivo en .NET? ¿Es suficiente con comparar la huella digital del certificado con una entrada conocida en la base de datos?

Según tengo entendido, la huella digital es un hash de todo el certificado, incluida la clave pública. Un dispositivo que simula ser mi dispositivo podría, por supuesto, enviar el mismo certificado público, pero no podría conocer la clave privada, ¿verdad?

¿O tengo que crear mi propia cadena de confianza, crear mi propio certificado raíz de CA, firmar el certificado del servidor web e instalarlo en el cliente?

Respuesta

4

Lo que usted propone es, en principio, está bien. Se usa, por ejemplo, durante key signing parties. Aquí los participantes generalmente solo intercambian su nombre y las huellas dactilares de sus claves públicas y se aseguran de que la persona en la fiesta realmente sea quien reclame. Solo es más fácil verificar las huellas digitales que verificar una clave pública larga.

Otro ejemplo es el llamado self certifying file system. Aquí nuevamente, solo los hashes de las claves públicas se intercambian a través de un canal seguro. (Es decir, estos hash están incrustados en las URL.) En este esquema, las claves públicas no tienen que enviarse de forma segura. El receptor solo tiene que verificar que el hash de las claves públicas coincida con los hashes incrustados en las URL. Por supuesto, el receptor también debe asegurarse de que estas URL provengan de una fuente confiable.

Este esquema y lo que usted propone son más simples que usar una CA. Pero hay una desventaja. Debe asegurarse de que su base de datos con hashes sea auténtica. Si su base de datos es grande, esto también será difícil. Si usa CA, solo debe asegurarse de que las claves raíz sean auténticas. Esto generalmente simplifica la gestión de claves de manera significativa y, por supuesto, es una de las razones por las que los esquemas basados ​​en CA son más populares que, p. el sistema de archivo de autocertificación mencionado anteriormente.

+1

La escalabilidad es realmente una buena razón para la PKI, ¡gracias! – chris166

+0

Una buena manera de dibujar una analogía entre la validación de huellas dactilares y las partes firmantes de claves. La resistencia de los hashes SHA-1 a las colisiones juega un papel importante en ambos eventos. –

3

De la misma manera en que no debería considerar dos objetos iguales porque sus códigos hash coinciden, no debe considerar un certificado como auténtico solo porque su huella digital aparece en una lista de "conocidos" huellas digitales del certificado ".

Las colisiones son una realidad con algoritmos hash, incluso buenos, y debe evitar la posibilidad de que un atacante motivado pueda crear un certificado deshonesto con un hash de huellas digitales correspondiente. La única manera de protegerse de eso es verificar la validez del certificado en sí, es decir, verificar la cadena de confianza como está implicando en su última declaración.

+5

Huh? Las funciones hash criptográficas como SHA1 se han diseñado de modo que no es factible encontrar dos entradas que tengan el mismo resultado. Por lo tanto, si su combinación de hash es seguro asumir que las entradas son iguales. Por lo tanto, también es seguro suponer que un atacante motivado NO puede crear dos certificados con hashes coincidentes (al menos mientras el hash no esté roto). Además, verificar la firma de un certificado autofirmado solo no es suficiente. Debe poder confiar en la clave de firma. – Accipitridae

+4

Las colisiones * son * una realidad con algoritmos hash. Y a pesar de que algunos de estos algoritmos han sido diseñados con las mejores intenciones, MD5 ya fue destronado, y SHA-1 ha demostrado tener debilidades también. Vea http://www.crn.com/security/212700354 y http://www.rsa.com/rsalabs/node.asp?id=2834. Sostengo que es mejor verificar el certificado a fondo y no confiar solo en la huella dactilar. –

+5

... y para verificar la validez de una firma, primero hash sus datos y luego verifica que sea el mismo valor hash que se firmó. Por lo tanto, si verifica las firmas digitales, realmente confía en la resistencia a la colisión de su algoritmo hash. – Accipitridae

1

corta:

Bueno, en teoría, a continuación, hacer exactamente lo que hace una autoridad de certificación para usted. Entonces debería estar bien.

más larga:

Cuando una autoridad de certificación firma su solicitud de clave pública/certificado/certificado de no firmar los datos del certificado enteros. Pero solo el valor hash calculado de todos los datos del certificado. Esto mantiene la firma pequeña.

Cuando no desee establecer su propia CA o utilizar una comercial/gratuita - comparando la huella digital con la que usted confía, obtendrá la segunda configuración más confiable. La solución más confiable sería comparar el certificado completo, porque también lo protege de los ataques de colisión hash.

Como los otros tipos aquí indicados, debes asegurarte de usar un algoritmo hashing seguro/seguro. SHA-1 ya no es seguro.

informaciones más detalladas a este tema:

Cuestiones relacionadas