Por que a senha digitada não está visível?

37

Abaixo está uma imagem do processo que eu levei para criar um usuário no bash no Linux.

Eu entendo que a senha não deve ser exibida por motivos de segurança, mas o que quero dizer é, por que os asteriscos (ou os caracteres que eu digitei) não aparecem?

    
por Kaiylar 06.03.2016 / 17:55

3 respostas

43

Porque é assim que fazemos as coisas na terra * nix. :) Dá um pouco de segurança extra por não exibir um monte de asteriscos. Dessa forma, alguém que vê sua tela não consegue ver a duração da sua senha.

Mas devo admitir que é um pouco assustador não receber nenhum feedback quando você está digitando uma senha, especialmente se você tiver um teclado ruim. Portanto, a maioria dos diálogos com senhas GUI em sistemas * nix fornecem algum tipo de feedback, por exemplo, usando asteriscos, ou mais comumente ⬤. E alguns até exibem cada caractere à medida que você o digita, mas imediatamente o substitui por um * ou ⬤, mas isso não é tão bom se alguém pode estar olhando por cima do seu ombro. Ou se eles tiverem um dispositivo que possa captar & decodificar o sinal de vídeo enviado do seu computador para o monitor.

    
por 06.03.2016 / 18:19
82

Qual é a maneira mais simples de ocultar a entrada do usuário?

Não está exibindo!

Ocultar senhas quando elas estão sendo digitadas é uma tradição antiga. Faz sentido do ponto de vista da segurança na maioria dos contextos: se alguém está olhando por cima dos ombros, você não quer facilitar a visualização do que está digitando. (Algumas diretrizes modernas de segurança, por exemplo, 1 2 3 4 5 recomenda ter a opção de tornar a senha visível, porque isso permite que o usuário escolha mais senhas complexas e ter certeza de que eles não estarão gastando seu tempo corrigindo erros não vistos. O maior risco não é surfar no ombro, é adivinhar a força bruta, possivelmente offline.)

Tendo decidido que a senha deveria estar oculta, os implementadores tinham que decidir como fazê-lo. O terminal tem um modo onde a entrada do usuário é mostrada (ecoado) e um modo onde a entrada do usuário não é mostrada (eco desligado). O modo echo off tem uma existência intrínseca: é o modo em que o terminal não faz o trabalho extra de ecoar a entrada do usuário. Esse modo também precisa existir para aplicativos em que digitar uma chave não insere esse caractere, mas invoca algum atalho de aplicativo vinculado a essa chave. Então, comandos como passwd apenas configuram o terminal para o modo echo off enquanto estão lendo uma senha.

Imprimir asteriscos para cada caractere exigiria trabalho de implementação extra apenas para um benefício relativamente pequeno, que os implementadores do comando passwd não gostaram de fazer. Não há modo de terminal para imprimir asteriscos porque seria um recurso muito especializado, útil somente ao inserir senhas.

A propósito, se você quiser ver sua senha ao alterá-la, use cat | passwd (pelo menos em alguns sistemas - algumas versões de passwd exigem uma opção como cat | passwd --stdin e algumas não aceitam isso em tudo). (Você pode até fazer { echo 'current password'; echo 'new password'; echo 'new password'; } | passwd , mas não faça isso: ele salvaria as senhas no histórico do shell, do qual há muito mais risco de vazamento.) Organizando isso com comandos que lêem a senha do terminal do que qualquer entrada padrão, como sudo ou ssh , é mais complexo; se você tem uma GUI disponível, você pode usar ssh-askpass que mostra quantos caracteres você digitou ( SUDO_ASKPASS=/usr/bin/ssh-askpass sudo -A para sudo; para ssh é complicado quando você invoca a partir de um terminal).

    
por 06.03.2016 / 18:59
3

Tornar a senha invisível torna-a mais segura, pois o comprimento da senha não pode ser visto por outras pessoas. Isso evita o risco de outras pessoas tentarem adivinhar a senha a partir do seu tamanho e fazer login na sua conta.

    
por 07.03.2016 / 05:07