OpenSSH agrega soporte para autenticación universal de dos factores

Al código base de OpenSSH agregado soporte experimental para la autenticación de dos factores utilizando dispositivos que admitan el protocolo U2F, desarrollado por la alianza FIDO. U2F permite la creación de tokens hardware de bajo coste para verificar la presencia física del usuario, interactuando con él vía USB, Bluetooth o NFC. Estos dispositivos se promocionan como un medio de autenticación de dos factores en sitios web, ya son compatibles con los principales navegadores y son producidos por varios fabricantes, incluidos Yubico, Feitian, Thetis y Kensington.

Para interactuar con dispositivos que confirman la presencia del usuario, se ha agregado un nuevo tipo de claves a OpenSSH "[email protected]” (“ecdsa-sk”), que utiliza el algoritmo de firma digital ECDSA (Elliptic Curve Digital Signature Algorithm) con curva elíptica NIST P-256 y hash SHA-256. Los procedimientos para interactuar con tokens se colocan en una biblioteca intermedia, que se carga de manera similar a la biblioteca para compatibilidad con PKCS#11 y es un contenedor encima de la biblioteca. libfido2, que proporciona herramientas para comunicarse con tokens a través de USB (se admiten los protocolos FIDO U2F/CTAP 1 y FIDO 2.0/CTAP 2). Biblioteca intermedia libsk-libfido2 preparada por desarrolladores de OpenSSH incluido en el núcleo libfido2, así como controlador oculto para OpenBSD.

Para habilitar U2F, puede utilizar una nueva porción del código base de repositorio OpenSSH y la rama HEAD de la biblioteca libfido2, que ya incluye la capa necesaria para OpenSSH.
Libfido2 es compatible con OpenBSD, Linux, macOS y Windows.

Para autenticar y generar una clave, debe configurar la variable de entorno SSH_SK_PROVIDER, indicando en ella la ruta a libsk-libfido2.so (exportar SSH_SK_PROVIDER=/path/to/libsk-libfido2.so), o definir la biblioteca a través de SecurityKeyProvider configuración y luego ejecute “ssh-keygen-t ecdsa-sk" o, si las claves ya se han creado y configurado, conéctese al servidor usando "ssh". Cuando ejecuta ssh-keygen, el par de claves generado se guardará en “~/.ssh/id_ecdsa_sk” y se puede usar de manera similar a otras claves.

La clave pública (id_ecdsa_sk.pub) debe copiarse al servidor en el archivo autorizado_keys. En el lado del servidor, solo se verifica la firma digital y la interacción con los tokens se realiza en el lado del cliente (no es necesario instalar libsk-libfido2 en el servidor, pero el servidor debe admitir el tipo de clave “ecdsa-sk”) . La clave privada generada (id_ecdsa_sk) es esencialmente un identificador de clave, que forma una clave real solo en combinación con la secuencia secreta almacenada en el lado del token U2F.

Si la clave id_ecdsa_sk cae en manos de un atacante, para pasar la autenticación también necesitará obtener acceso al token de hardware, sin el cual la clave privada almacenada en el archivo id_ecdsa_sk es inútil. Además, de forma predeterminada, al realizar cualquier operación con claves (tanto durante la generación como durante la autenticación), se requiere la confirmación local de la presencia física del usuario, por ejemplo, se propone tocar el sensor del token, lo que dificulta Realizar ataques remotos a sistemas con un token conectado. Como otra línea de defensa, también se puede especificar una contraseña durante la fase de inicio de ssh-keygen para acceder al archivo clave.

La clave U2F se puede agregar a ssh-agent a través de "ssh-add ~/.ssh/id_ecdsa_sk", pero ssh-agent debe compilarse con soporte para claves "ecdsa-sk", la capa libsk-libfido2 debe estar presente y la El agente debe estar ejecutándose en el sistema al que está conectado el token.
Se ha agregado un nuevo tipo de clave "ecdsa-sk" ya que el formato de las claves ecdsa de OpenSSH difiere del formato U2F para las firmas digitales ECDSA en la presencia de campos adicionales.

Fuente: opennet.ru

Añadir un comentario