¿Hay alguna manera de dividir mi clave SSH usando el intercambio secreto de Shamir?

5

Tengo algunos servidores y máquinas en los que inicio sesión regularmente, así que me preguntaba si sería posible asegurarlos utilizando una versión de El intercambio secreto de Shamir .

Pensé que si podía dividir mi clave privada en varias partes, luego distribuir esas piezas entre cada una de las computadoras que uso cada día, así como una memoria USB. De esta manera podría mover la memoria USB de una computadora a otra, y cada vez que conecto la memoria USB a una nueva máquina, la cantidad de piezas de la llave presente sería suficiente para reconstituir la clave SSH privada.

Perdóname si esto no tiene mucho sentido, ¡es posible que haya entendido mal cómo funciona este sistema!

¿Es esto posible? ¿Alguien puede ayudarme a comenzar con este problema?

¡Gracias!

Editar: Para mayor claridad, pensé que solo debería ser posible administrar mis servidores remotos desde las dos máquinas de mi casa. La clave privada se dividiría en varias partes, ya que cada una de las dos máquinas de mi casa tendría una sección de la clave, y también colocaría una sección de la clave en una tarjeta SD.

De esa manera, cuando la tarjeta SD se conecta a cualquiera de las máquinas, se alcanza el umbral y la clave privada se puede volver a montar y usar. Sin embargo, creo que he entendido mal este intercambio secreto y su utilidad en esta situación.

Gracias de nuevo!

    
pregunta robotsandcake 24.01.2014 - 20:38
fuente

1 respuesta

6

El intercambio secreto de Shamir es un buen algoritmo para dividir un valor secreto en varias partes y permitir la recuperación con un umbral ; lo que significa que divide (por ejemplo) el secreto en diez acciones , de modo que cualquiera de las tres acciones son suficientes para reconstruir el secreto.

Esto requiere dos comentarios:

  • La principal ventaja del algoritmo es su mecanismo de umbral; no tiene mucho sentido si se necesitan todas las acciones para reconstruir el secreto. En el escenario descrito, con las claves SSH, no está claro qué significaría este mecanismo de umbral. Existe es un escenario en el que desea algo como eso (lo he visto implementado en producción; vea más abajo) pero involucra a varios propietarios clave.

  • Aunque los recursos compartidos están separados, el proceso de reconstrucción debe ocurrir, por necesidad, en una sola máquina que obtiene, en algún momento, el secreto mismo. En particular, si realiza el reensamblaje en una máquina que es mala (es decir, que está bajo el control de un atacante a través de un malware subrepticioso), el atacante aprende la clave privada SSH y usted pierde.

El escenario donde el mecanismo de umbral con SSH tiene sentido es el siguiente: hay un servidor muy sensible en algún lugar (una Autoridad de Certificación ), que nunca debe ser administrado por un solo administrador sin ningún testigo. Sin embargo, el servidor es remoto y aún debe realizarse alguna administración remota. Entonces, la idea es tener una clave privada especial, autorizada para el inicio de sesión de root (la clave pública está en /root/.ssh/authorized_keys ). La clave privada correspondiente debe ser accesible solo en una máquina que se supone segura (una máquina dedicada a la tarea y que se mantiene segura mediante un mecanismo normal, en ese caso, un sistema Linux con procedimientos de administrador de sistemas). Cuando debe realizarse la administración remota, un quórum de propietario de clave colabora, ingresa sus "recursos compartidos" en la máquina y, por lo tanto, desbloquea la clave privada. Mantienen el administrador de sistemas bajo control de la vista durante toda la duración del procedimiento de administración.

En ese escenario, un esquema de intercambio secreto tendría sentido. Sin embargo, las "acciones" son valores numéricos grandes, que deben almacenarse en dispositivos físicos, no en cerebros humanos; Esto fue un inconveniente. Además, el software cliente SSH habitual no permite la conexión de sistemas de intercambio de secretos arbitrarios (al menos no fácilmente). Así que la solución práctica fue la siguiente: la clave privada se almacenó varias veces, cada vez protegida por una contraseña dividida en dos mitades; cada humano conocía solo una mitad. Si hay n propietarios de acciones, entonces la clave privada debe estar encriptada con contraseña n (n-1) / 2 veces (por lo tanto, con n = 5 , esto significa 10 copias de la clave privada, cada una cifrada con una combinación de dos mitades de contraseña). Cuando debe realizarse la administración remota, dos propietarios de clave seleccionan el archivo de clave privada cifrada correspondiente; cada propietario escribe la mitad de su contraseña y se produce la conexión.

El sistema funciona en la práctica. No se escala bien (con n propietarios de claves y un quórum de t , requiere O (n t ) archivos cifrados, para todas las combinaciones), pero para valores pequeños es perfectamente viable.

    
respondido por el Tom Leek 24.01.2014 - 21:53
fuente

Lea otras preguntas en las etiquetas