Un enfoque diferente a PKI

24

Después de otra más fallo de la infraestructura de clave pública, estaba pensando en lo roto que está todo. Este negocio de asociar innegablemente una identidad con una clave pública, y todo el trabajo que realizamos para lograrlo, está empezando a parecer como patinar sobre hielo en una colina. Perdóname, estoy pensando en voz alta aquí.

Comencé a pensar en el ToR Hidden Service Protocol y su método para resolverlo. El ' nombre del servicio oculto ' (que se escribe en la barra de direcciones como cualquier otra URL) se deriva de la clave pública, por lo que termina visitando sitios como kpvz7ki2v5agwt35.onion , pero no tiene necesidad para los certificados o PKI, la clave pública y el dominio solo son información suficiente para demostrar que pertenecen juntos (hasta que pueda generar colisiones, pero esa es otra historia). Ahora claramente hay un problema con esto: todo el punto del DNS es proporcionar un mapeo legible para las direcciones IP.

Lo que me lleva a mi sugerencia final, posiblemente defectuosa; ¿Por qué no usamos una dirección IP que se genera a partir de una clave pública? (Al revés suena más conveniente al principio, pero no puede funcionar por razones criptográficas obvias).

Tenemos un enorme espacio de direcciones con IPv6. Se cree que un par de claves RSA de 1024 bits tiene alrededor de 80 bits de entropía como máximo. Entonces, ¿por qué no dividir un segmento de 80 bits y asignar claves RSA públicas a direcciones IP en este segmento?

Algunas desventajas en la parte superior de mi cabeza;

  • Por lo tanto, un atacante puede generar un par de claves y saber de inmediato en qué servidor se usará ese par de claves, si existiera dicho servidor. Tal vez el espacio de 80 bits se pueda expandir para usar claves RSA de 4096 bits, que se cree tienen alrededor de 256 bits de entropía máxima, lo que hace que la búsqueda no sea factible (desafortunadamente, requeriríamos IPv7 + con una dirección de bits de 512 o más para que esto se ajuste). Este ataque tampoco es tan tan malo como podría sonar a primera vista, ya que no está dirigido. Este ataque podría mitigarse incluyendo un salt en el proceso de clave > IP, que el servidor envía a los clientes cuando se conectan. Esta sal hace que cada uno de los servidores, el proceso de > IP sea único.
  • Un atacante podría potencialmente forzar el espacio clave usando una sal conocida hasta que coincida con la IP elegida. Este es un ataque dirigido, por lo que es un poco más aterrador. Sin embargo, el uso de un algoritmo lento (1-3 segundos) para hacer la asignación de la clave pública a IP podría mitigar esto. El uso de la sal también significa que tal fuerza bruta solo se aplicaría a una única IP, y tendría que repetirse por IP objetivo.

Para intentar detener los mods que cierran esto, haré todo lo posible para convertirlo en una pregunta; ¿Es esta idea completamente defectuosa de alguna manera? ¿Se ha intentado en el pasado? ¿Estoy simplemente divagando?

    
pregunta lynks 04.01.2013 - 15:18
fuente

3 respuestas

24

Asignar la clave pública a una dirección IP es fácil (solo táchelo y guarde los primeros 80 bits) y ha enumerado las formas de hacerlo de alguna manera robusta (es decir, hacer que la transformación sea lenta ). Tiene el inconveniente de que no resuelve el problema en absoluto : simplemente lo mueve.

El problema consiste en vincular el acceso protegido criptográficamente (es decir, la clave pública del servidor) a la noción de identidad que el usuario humano entiende . Los usuarios humanos captan nombres de dominio . No los hará validar las direcciones IPv6 generadas por hash ...

Por supuesto, hay un sistema implementado que asigna nombres a datos técnicos, como direcciones IP; este es el DNS . Podría extenderlo para asignar nombres de dominio a tokens de verificación de clave pública (es decir, poner el hash de la clave pública en algún lugar del DNS), o incluso la clave pública. Si usa el DNS para transferir enlaces de clave de nombre sensibles a la seguridad, entonces el DNS se convierte en un objetivo valioso, por lo que tendría que agregar seguridad al propio DNS. En ese momento, tiene DNSSEC , que es una propuesta actual para reemplazar la PKI X.509 para el sitio web de HTTPS. Si a DNSSEC le iría mejor que a una CA existente no está claro; eso es cambiar de actores, pero el negocio de certificación conceptual todavía estaría al acecho aquí.

Los humanos quieren nombres legibles, y las claves públicas son ilegibles. Todas las soluciones basadas en certificados (ya sean X.509 o DNSSEC o lo que sea) intentan enlazar una clave pública a un nombre elegido arbitrariamente. Otro método distinto sería hacer que la clave pública sea legible . Curiosamente, existen protocolos criptográficos para eso: criptografía basada en ID . Usan algunas herramientas matemáticas bastante tortuosas (emparejamientos en curvas elípticas). No cambian el concepto central (en realidad, en algún momento, alguien debe establecer el vínculo entre una identidad social, como "Google" y el mundo de las computadoras), pero cambian la dinámica . En un sistema basado en ID para SSL, cada servidor tendría claves privadas de muy corta duración, y una autoridad central emitiría a cada servidor una nueva clave privada todos los días, coincidiendo con su nombre. El efecto neto sería como un X.509 PKI donde la revocación funciona inherentemente bien , por lo que la contención de daños sería efectiva.

Otro giro más sería reemplazar la noción de identidad. Como los humanos no pueden leer las claves públicas, entonces acéptalo: no las leerán. En su lugar, busque los ataques activos con entidades especializadas, quienes saben cómo leer las claves. Ese es el punto central de los "notarios" en Convergencia . Los notarios hacen un seguimiento de qué clave pública usa cada sitio, y gritan y patean cada vez que ven algo sospechoso.

De todos modos , el sistema actual está no roto, no de una manera económicamente relevante. La brecha a la que se está vinculando se unirá a los percances de Comodo y DigiNotar; eso es una lista corta Dichos problemas ocurren de manera muy rara incluso para aparecer en el radar financiero: si suma el costo de todos los fraudes que usaron un certificado de servidor falso obtenido de una "CA de confianza", obtendrá una cantidad que es ridículamente pequeña en relación con Los miles de millones de dólares de fraudes de tarjetas de crédito más mundanos. Desde el punto de vista de los bancos, los comerciantes y las personas que hacen negocios en Internet, el PKI X.509 funciona . No hay incentivo para que promuevan un reemplazo. Si hubiera un certificado de Google falso todos los días , usado para robar dinero de la gente, la situación sería diferente. En este momento, estamos alrededor de un evento por año .

    
respondido por el Thomas Pornin 04.01.2013 - 15:50
fuente
12

El primer gran defecto de tu idea es que realmente no resuelve mucho. Una vez que desee nombres significativos como los que están actualmente en uso, necesita DNS o un sistema similar. Entonces, tu punto de falla está de vuelta, excepto que ahora es DNS y no CA.

Poner la huella digital en la IP ofrece poca ventaja sobre ponerla en el DNS junto con la IP, pero tiene el inconveniente de que el enrutamiento se vuelve más complicado y costoso.

Hay un sistema que coloca huellas digitales clave en DNSSEC, se llama DANE . Chrome recientemente soporte para ello.

Hay un sistema llamado cjdns que coloca las huellas digitales en las direcciones IP. Utilizando 120 bits de la IP y 8 bits de una construcción de fortalecimiento, para obtener el equivalente a las huellas dactilares de 128 bits. Tenga en cuenta que, debido a los ataques de objetivos múltiples, el nivel de seguridad real es inferior al tamaño de la huella digital.

También estás sobreestimando el nivel de falla de PKI. Los adversarios poderosos ocasionalmente lo rompen, pero un criminal normal usualmente no lo hace. La implementación de un sistema como Transparencia del certificado también conducirá a una detección rápida de dichos fallos, por lo que un atacante quema Sus valiosos certificados son mucho más rápidos.

Todos los sistemas de resolución de nombres se ejecutan en triángulo de Zooko . Si desea nombres globales y significativos, necesitará algún tipo de registro central de confianza.
Namecoin es lo más cercano a romper El triángulo de Zooko, pero también tiene muchos problemas. La IMO más grande es que, dado que no se pueden imponer las marcas comerciales, el propietario de google.bit probablemente no sea la compañía más conocida.

También deberías leer     

respondido por el CodesInChaos 04.01.2013 - 15:50
fuente
2

Creo que la clave es mejorar la forma en que se revocan las CA raíz de confianza de PKI. La exposición podría ser limitada si hubiera una lista de revocación maestra para las entidades emisoras de certificados raíz, entonces solo una entidad emisora raíz comprometida realmente importaría y esa podría estar protegida como Fort Knox. Si alguna vez se pusiera en peligro, entonces se podrían aplicar los medios actuales de parches a reparar.

Otra posibilidad es vincular las credenciales SSL al registro DNS. Un TLD dado tendría que ser capaz de resolver qué certificado SSL es válido para decir que es su identidad. Esto entonces requeriría que tanto el DNS sea falsificado como una CA raíz que se vea comprometida, ambos sin detección para desencadenar una revocación. Por ejemplo, si una CA raíz se comprometió y hice un certificado que decía que era Google.com, simplemente hacer una comprobación del registro DNS de google.com podría indicar que el certificado no coincide y no es genuino. Efectivamente, en lugar de confiar exclusivamente en el tercero, requeriríamos que el tercero y el primero se pongan de acuerdo en dos canales diferentes.

Me doy cuenta de que todavía no ayuda en situaciones en las que un MITM tiene una CA raíz comprometida y la capacidad de alterar los resultados de DNS, pero limita severamente los posibles escenarios de ataque útiles de una CA comprometida. (A diferencia de lo que se puede hacer actualmente, la mayoría de los usuarios piensan que www.gaggle.com es un nuevo servicio de Google en el que deberían iniciar sesión con su Google Wallet.

    
respondido por el AJ Henderson 04.01.2013 - 16:04
fuente

Lea otras preguntas en las etiquetas