Contraseña de enmascaramiento al escribir vs ocultar la entrada al escribir

6

Hay una aplicación de línea de comandos que le solicita de manera interactiva su contraseña a un servicio de terceros. Considerando, por ejemplo, que sudo oculta completamente su entrada a medida que escribe su contraseña, esta aplicación imprime * para cada carácter que escribe.

Para una aplicación de línea de comandos, ¿el hecho de enmascarar una contraseña supone más riesgos de seguridad que el hecho de ocultar completamente la entrada? En otras palabras, ¿habría algún motivo convincente relacionado con la seguridad para refactorizar esta aplicación para ocultar información?

    
pregunta Mark Rushakoff 01.05.2013 - 06:39
fuente

2 respuestas

11

sudo no oculta la entrada completamente debido a un supuesto beneficio de seguridad, sino porque es mucho más sencillo de hacer en el contexto de un terminal Unix. Una aplicación de línea de comandos de Unix normalmente recibe la entrada del usuario por líneas enteras (no se envía nada al código de la aplicación hasta que se presiona la tecla "Enter"); ocultar la entrada es solo una cuestión de decirle al terminal que no muestre los caracteres escritos, con una llamada tcsetattr() (por ejemplo, ver esta respuesta ). Para mostrar estrellas para cada carácter ingresado, sudo tendría que hacer algunas cosas más complicadas, es decir, configurar el terminal en modo "raw" o "cbreak" (consulte esta página para algunos detalles); sudo tendría que implementar la edición de líneas en sí misma (manejo de la tecla de retroceso, o Ctrl-U para borrar la entrada completa, por ejemplo).

Aunque oculta completamente la entrada oculta la contraseña longitud , esta información todavía está disponible para los espectadores, que pueden usar sus oídos en lugar de sus ojos: en lugar de contar las estrellas en la pantalla, pueden contar la tecla presiona Por lo tanto, el supuesto beneficio de seguridad de la ocultación completa sería, en el mejor de los casos, muy leve.

La visualización de las estrellas hace que la experiencia del usuario sea mucho mejor, en particular las personas con teclados ligeramente inestables, en los que se puede "perder" una pulsación de una tecla o duplicarla involuntariamente.

    
respondido por el Thomas Pornin 01.05.2013 - 12:40
fuente
3

La única mejora que se viene a la mente acerca de ocultar la entrada por completo es que la longitud de la contraseña también está oculta para los surfistas de hombro.

Dado que es poco probable la posibilidad de adivinar manualmente una contraseña alfanumérica débil de 5-6 en un tiempo razonable, probablemente no tenga sentido cambiar la aplicación para ocultar la entrada de la contraseña en lugar de simplemente enmascararla.

    
respondido por el Ayrx 01.05.2013 - 06:44
fuente

Lea otras preguntas en las etiquetas