¿Existe un método seguro para distribuir claves a los nodos sin disco de arranque en red?

1

Tengo un poco de un problema de 'confianza inicial'. Estamos utilizando CoreOS para ejecutar Kubernetes, y protegemos tanto la API de etcd como los servidores de la API de Kubernetes mediante certificados de cliente. Estamos usando iPXE para arrancar todo, excepto los servidores etcd.

El problema que estoy tratando de resolver es cómo distribuir las claves del cliente de manera segura Y automatizada. ¿Hay formas efectivas de validar de forma única y segura una máquina sin almacenar nada en el disco?

Nuestros requisitos dictan que la solución se puede usar tanto en nodos físicos como virtuales, y permite un escalamiento dinámico a pedido, lo que significa que los dispositivos físicos no son una opción.

Mis colegas han sugerido usar cortafuegos para proteger un nodo que alberga las claves (es decir, un servidor web), pero estoy convencido de que debe haber una opción más segura. Sospecho que puede tener algo que ver con el TPM, pero mi investigación actual no ha proporcionado ningún ejemplo práctico hasta ahora.

¡Gracias de antemano por cualquier respuesta / comentario / edición!

    
pregunta Jason Murray 01.05.2016 - 16:47
fuente

1 respuesta

1

Fundamentalmente, para confiar en una computadora, necesitas verificar que sepa algo que solo la computadora que esperas sabe. Así es como funcionan todos los certificados: usted asume que debido a que firmaron algo con una clave que solo ellos podrían conocer, en realidad es la persona con la que quería hablar.

Lo mismo se aplica a las computadoras: la computadora debe tener algo que solo sabe que usted sabe que sabe para autenticarlo. A modo de ejemplo, hay tres factores de autenticación (dos de los cuales se usan para la "autenticación de dos factores"): algo que sabes, algo que tienes y algo que eres.

  • Algo que sabes: esta sería una clave [privada] almacenada en el disco. Has declarado que no quieres esto, así que esto es un no-go. (Para los humanos, este es un desafío de autenticación de nombre de usuario / contraseña).

  • Algo que tiene: se podría usar una clave / token PKI USB para la autenticación con la idea de que ha conectado físicamente esta clave en la computadora en la que desea confiar. La clave en sí no se puede copiar, pero esto es vulnerable al malware que ejecuta iPXE en una máquina virtual, lo que le da acceso al token, pero luego intercepta todos sus accesos de memoria y similares (pero, nuevamente, ¿esto siempre es una amenaza? ).

  • Algo que eres: por ejemplo, Una dirección MAC u otra identificación única. Esto, sin embargo, es fácil de falsificar porque si lo sabe, puede copiarlo. En los seres humanos, esto es como el ADN, una retina o una huella dactilar: algo que usted es y no puede copiar [razonablemente]. Las computadoras también tienen esto, pero es mucho más difícil probarlo a través de una red sin degradar a algo que sabes rápidamente.

Para hacer que esto funcione, realmente necesitas poner una clave en la computadora ( algo que sabes ) o poner un token PKI en la computadora ( algo que tienes ) .

    
respondido por el iAdjunct 01.05.2016 - 17:10
fuente