Identificación de certificados y el problema de distribución de claves

3

Yo (creo que) entiendo el concepto de fijación de certificados . Sin embargo, me pregunto si, en el peor de los casos, ¿es el anclaje de certificados más seguro que el modelo de confianza jerárquico sobre el que se basa? Un escenario de ejemplo:

  1. Desarrollo una aplicación móvil que usa conexiones seguras
  2. Para cifrar estas conexiones seguras, necesito una clave
  3. En el pasado, solo usaba HTTPS para las conexiones seguras y me aseguraba de que mi servicio tuviera un certificado válido. Confío en los demás para mi seguridad.
  4. Ahora, ya no quiero confiar en otros, así que comienzo a fijar mi certificado de servicio (digamos certificado X). Esto significa que las CAs shifty no podrán romper mi seguridad. Digamos que pincho mi clave pública, así que efectivamente esto significa que no confío en ninguna CA (de lo contrario podría pinchar una CA).
  5. Esto me devuelve al problema de distribución de claves original, que PKI tenía que resolver: ¿cómo distribuyo mi aplicación a mis usuarios? No quiero que un atacante se siente en el medio del canal y reemplace mi aplicación con otra (y con otro certificado anclado Y).
  6. Bueno, eso es fácil: yo uso HTTPS.
  7. ...
  8. Utilizo HTTPS, que verifica los certificados en la tienda de MS Windows, y me baso en los CA's esquivos del paso 4.
  9. Sidenote: cada vez que envío una actualización, un atacante (una CA falsa) podría estar preparado para interceptar mi actualización y reemplazar la clave pública anclada con otra.

La página OWASP menciona que el pin se puede agregar durante el desarrollo o en el primer encuentro. Sin embargo, al agregarlo durante el desarrollo, todavía tenemos que distribuir la aplicación a los usuarios, lo que girará sobre el problema de seguridad al canal de distribución. Este canal de distribución también puede fijar certificados, pero al final, todo depende de la confianza de su primer canal. En el caso de MS Windows, esta es la lista de certificados de MS: aunque Chrome puede verificar el pin de todos los dominios de Google, primero necesito instalar Chrome a través de una conexión segura.

No estoy diciendo que la fijación de certificados no sea más segura (aunque no estoy seguro del valor agregado, especialmente cuando se considera el punto 9), me pregunto si el razonamiento anterior es correcto.

    
pregunta Michael 01.03.2015 - 12:05
fuente

2 respuestas

3

Mencionas aplicaciones móviles. Las aplicaciones móviles normalmente se instalan desde una tienda de aplicaciones controlada por un proveedor específico (la tienda de aplicaciones en el caso de los dispositivos iOS y la tienda de juegos en el caso de los dispositivos Android). Debe confiar en la tienda para entregar el binario correcto al dispositivo, pero aún es mucho más seguro que el sistema de CA que permite a cualquier CA firmar en nombre de cualquier persona.

En los sistemas de escritorio, este problema es mucho más difícil. Los administradores de paquetes similares a Linux resuelven este problema principalmente mediante el uso de administradores de paquetes que verifican los paquetes firmados con claves precargadas. Una vez más, usted confía en el repositorio que entrega el paquete, pero es una superficie de ataque mucho más pequeña.

    
respondido por el Ayrx 01.03.2015 - 12:54
fuente
0

Es posible la distribución de claves con DNSsec
Puede utilizar cert pinning para distribuir una clave. Pero solo si ese método de distribución se autentica de alguna manera. Así, por ejemplo, podría almacenar el pin en DNS y DNS seguro a través de DNSsec.

De lo contrario, sí, estás de vuelta en Trust-on-first-use.

Y si no está seguro de que su sistema operativo inicial sea seguro, entonces está atrapado con el problema de arranque.

    
respondido por el StackzOfZtuff 01.03.2015 - 20:26
fuente

Lea otras preguntas en las etiquetas