¿Es posible evitar el intercambio de claves privadas SSH a través del correo electrónico (Outlook, en particular), tanto dentro como fuera de la organización?
¿Es posible evitar el intercambio de claves privadas SSH a través del correo electrónico (Outlook, en particular), tanto dentro como fuera de la organización?
TL; DR: usa tarjetas inteligentes.
Para evitar la distribución de la clave a otras personas, debe evitar que el usuario tenga acceso de lectura a la clave en primer lugar. La clave se utiliza en SSH para la autenticación. El proceso de autenticación implica operaciones criptográficas (firma) que necesitan tener acceso de lectura a la clave. Para proteger la clave de los usuarios contra la lectura por parte del usuario, estas operaciones criptográficas deben separarse del usuario de manera que el usuario solo pueda iniciar las operaciones y obtener el resultado. Esta separación se puede hacer, por ejemplo, utilizando un proceso de usuario que se ejecute con diferentes permisos o incluso un proceso que se ejecute en un hardware separado.
Un caso especial de hardware separado son las tarjetas inteligentes que son esencialmente pequeñas computadoras que ejecutan un sistema operativo mínimo con algún almacenamiento protegido de claves criptográficas. Un usuario puede autenticarse con estas tarjetas inteligentes mediante un PIN y luego usar la tarjeta, por ejemplo, para firmar algunos datos con las claves almacenadas en la tarjeta inteligente. Esto es suficiente para la autenticación, que esencialmente significa probar que el usuario es el que posee la clave privada para una clave pública específica.
Las tarjetas inteligentes están diseñadas para ser inviolables e inviables, lo que significa que debería ser prácticamente imposible extraer la clave o crear otra tarjeta inteligente con la misma clave. Esto es cierto incluso cuando se enfrentan con errores de diseño como detectó recientemente uno con chips Infinion donde los errores en el sistema operativo de la tarjeta llevaron a la generación de claves privadas débiles (las claves creadas fuera de la tarjeta y solo almacenadas en la tarjeta no se vieron afectadas). Pero tenga en cuenta que las tarjetas inteligentes solo protegen contra la clonación y la lectura y no protegen completamente el hecho de compartir la clave: varios usuarios podrían seguir compartiendo la misma tarjeta inteligente y el mismo PIN, pero todos necesitarían tener acceso físico a esta única tarjeta, lo que hace que compartir sea más difícil.
Varias implementaciones de SSH tienen soporte para autenticación con tarjetas inteligentes. Los detalles se pueden encontrar fácilmente mediante el uso de un motor de búsqueda, por ejemplo, busque openssh smartcard o similar.
Respuesta corta, no, no es posible. El usuario necesita permiso para leer la clave para usarla y, si puede leer la clave, puede copiarla.
Es posible restringir el acceso a la clave, p. ej. si reside en un cuadro de Unix, entonces no le dé permiso al usuario para leer la clave, pero permita que ejecute ssh a través de sudo. O use un cuadro de salto de mswindows bloqueado con capacidad de aplicación remota para ejecutar un cliente ssh (pero asegúrese de que el cliente ssh no pueda exportar las claves).
Hay poco kilometraje al intentar detectar / contener el correo electrónico una vez que la clave está en control del usuario.
Las tarjetas inteligentes son un camino a seguir. Otra forma sería utilizar certificados efímeros de corta duración en lugar de claves estáticas para la autenticación. Existen numerosas implementaciones de código abierto sobre el uso de una autoridad de certificación para SSH en lugar de claves estáticas.
Uno de estos sistemas se llama Cajero , actualmente mantenido por un SRE de Intercom. Otro que maneja certificados de host y de usuario final se llama Teleport .