Estamos realizando un proyecto de prueba de concepto para que un cliente introduzca la autenticación con tarjeta inteligente para sus administradores de operaciones. La autenticación en el contexto del cliente significa principalmente el acceso SSH. Nos encontramos con un escenario de uso problemático: los administradores a menudo emiten comandos masivos contra cientos de máquinas remotas. Esto tomó una cantidad de tiempo previamente insignificante, pero toma decenas de minutos con la tarjeta inteligente.
He ejecutado algunos puntos de referencia básicos y descubrí que la operación criptográfica basada en tarjetas inteligentes en realidad toma cientos de veces más que, por ejemplo, openssl con claves en disco. En promedio, lo que lleva a openssl a menudo menos de un milisegundo, la tarjeta inteligente rara vez lo hace en menos de 0,5 segundos. Todavía parece rápido, pero multiplicado por cientos se convierte en una parte importante de la demora observada (junto con otras disminuciones inducidas por la tarjeta inteligente / el controlador). Busqué qué velocidad es habitual en las tarjetas inteligentes o si hay otros módulos de criptografía de hardware personal diseñados para la velocidad, pero me parece que para el uso personal la velocidad de los algoritmos basados en RSA de 2048 bits nunca es inferior a varios cientos de milisegundos. p>
¿Cuál es la buena arquitectura para el uso de token de hardware a gran escala? Podemos configurar un servidor de distribución de claves para claves de corta duración que podrían agregarse a ssh agent, de modo que solo la autenticación a dicho servidor estaría protegida por una tarjeta inteligente y otra conexión estaría protegida por la clave de software proporcionada, pero considero que es la menos atractiva posibilidad.