입력 한 비밀번호가 보이지 않는 이유는 무엇입니까?


39

아래는 Linux에서 bash에서 사용자를 만들기 위해 수행 한 프로세스 이미지입니다.

bash에서 사용자 생성 및 비밀번호 할당

보안을 위해 비밀번호를 표시해서는 안된다는 것을 이해하지만, 별표 (또는 입력 한 문자)가 나타나지 않는 이유는 무엇입니까?


4
리눅스에 대한 질문이있을 때마다 답은 보안입니다.
Katz


IBM Notes는 암호로 입력하는 각 문자에 대해 임의의 별표를 표시하는 이상한 작업을 수행합니다. 매우 혼란 스럽습니다.

1
교차 사이트 속력
wim

답변:


43

그것이 우리가 * nix 땅에서 일하는 방식이기 때문입니다. :) 별표를 표시하지 않으므로 약간의 추가 보안을 제공합니다. 이렇게하면 화면을 보는 사람이 암호 길이를 볼 수 없습니다.

그러나 암호를 입력 할 때, 특히 키보드가 잘못되었을 때 피드백을받지 않으면 조금 무섭다는 점을 인정해야합니다. 따라서 * nix 시스템의 대부분의 GUI 비밀번호 대화 상자는 별표 또는보다 일반적으로 사용하는 것과 같은 일종의 피드백을 제공합니다. 그리고 일부는 입력 할 때 각 문자를 표시하지만 즉시 a *또는 ⬤로 바꾸지 만 누군가가 어깨 너머로 보이는 경우에는 좋지 않습니다. 또는 컴퓨터에서 모니터로 전송되는 비디오 신호를 픽업 및 디코딩 할 수있는 장치가있는 경우.


5
...의 도움으로stty -echo
Jeff Schaller

7
이 답변은 나쁘지 않지만 IMHO Gilles는 실제 답변을 제공했습니다. 거의 확실하게, 구현 자들은 실제로 "약간의 추가 보안"을 생각하지 않았고 사용자 경험을 생각하지 않았습니다. 그들은 그렇게하는 것이 싸고 쉬웠 기 때문에 그렇게했습니다. 그리고 나서, 우리는 그것이 계속 그렇게 작동 할 것으로 기대하게되었습니다 ...
Celada

2
@Celada : 페어 포인트. FWIW, 나는 Gilles의 훌륭한 답변을 이미 투표했습니다.
PM 2Ring

2
@Celada 추가 된 보안으로 인해 아무것도 표시하지 않기로 한 원래의 결정으로 이어지지 않았을 수도 있지만, 항상 그 이점을 고려해 왔으며 다른 사람들이 그렇게 생각하는 것이 그러한 방식으로 유지해야 할 합당한 이유를 제시했을 수 있습니다.
Monty Harder

1
마지막으로 입력 한 문자의 breif 표시는 주로 모바일 방식이라고 생각합니다. 작은 화면 키보드에 입력하는 것이 오류가 발생하기 쉽기 때문일 수 있습니다. 데스크톱 응용 프로그램에서 본 적이 없다고 생각합니다.
Barmar

82

사용자 입력을 숨기는 가장 간단한 방법은 무엇입니까?

표시하지 않습니다!

입력 할 때 비밀번호를 숨기는 것은 오래된 전통입니다. 대부분의 상황에서 보안 관점에서 의미가 있습니다. 누군가가 당신의 어깨 너머로보고 있다면, 입력 한 내용을 쉽게보고 싶지 않습니다. ( 1 2 3 4 5와 같은 일부 최신 보안 지침 은 암호를 표시하는 옵션을 권장합니다. 사용자가 더 복잡한 암호를 선택할 수 있고 보이지 않는 시간을 수정하지 않을 것이라는 확신을 가질 수 있기 때문입니다. 가장 큰 위험은 어깨 서핑이 아니라 무차별 대대적 인 추측이며 오프라인 일 가능성이 있습니다.)

암호를 숨겨야한다고 결정한 후, 구현 자들은 암호를 어떻게 사용할 것인지 결정해야했습니다. 단말기에는 사용자 입력이 표시되는 모드 (에코 온)와 사용자 입력이 표시되지 않는 모드 (에코 오프)가 있습니다. 에코 오프 모드는 어떤면에서 본질적으로 존재합니다. 즉 터미널이 사용자 입력을 에코하는 추가 작업을 수행하지 않는 모드입니다. 이 모드는 키를 입력해도 해당 문자가 삽입되지 않고 대신 해당 키에 바인딩 된 일부 응용 프로그램 바로 가기를 호출하는 응용 프로그램에도 존재해야합니다. 따라서 passwd암호를 읽는 동안 터미널을 에코 오프 모드로 설정하는 것과 같은 명령 이 있습니다.

각 문자에 별표를 인쇄하면 passwd명령 구현자가 느끼지 않는 비교적 작은 이점만으로 추가 구현 작업이 필요합니다 . 별표를 인쇄하기위한 터미널 모드는 매우 특수한 기능이기 때문에 암호를 입력 할 때만 유용합니다.

그건 그렇고, 암호를 변경할 때 암호를 보려면 cat | passwd적어도 일부 시스템에서 사용할 수 있습니다 (일부 버전의 passwd경우 옵션 이 필요 cat | passwd --stdin하고 일부는 전혀 허용하지 않습니다). ( { echo 'current password'; echo 'new password'; echo 'new password'; } | passwd하지만 할 수는 있지만 그렇게하지 마십시오 : 암호가 쉘 기록에 저장되어 누출 위험이 훨씬 큽니다.) 무엇보다 터미널에서 암호를 읽는 명령을 사용하여 암호를 정렬합니다. 이들 표준 입력과 같은 sudo또는 ssh더 복잡하다; 사용 가능한 GUI가있는 경우 ssh-askpass를 사용하여 입력 한 문자 수를 표시 할 수 있습니다 ( SUDO_ASKPASS=/usr/bin/ssh-askpass sudo -Asudo의 경우 ssh의 경우 터미널에서 호출 할 때 복잡함).


1
이것은 지금까지 가장 좋은 답변이며 실제로 매우 유용합니다. 내 믿음을 명확히하고 ^, ^를 확장 해 주셔서 감사합니다.
DankyNanky

4
터미널 핸들러는 백 스페이스와 같은 간단한 편집 기능을 처리하고 라인을 버퍼링합니다. fgets ()를 사용하여 읽은 줄은 enter를 누를 때까지 반환되지 않습니다. 별표 인쇄가 까다로워집니다. 한 번에 한 문자 씩 읽고 별표를 표시하면 백 스페이스 기능이 손실되거나이를 지원하기 위해 추가 노력이 필요합니다.
Jasen

1
이 문제에 대한 역사의 각도로 들어갈 때, 이것이 tty가 실제로 텔레 타이프라이터를 언급 한 시간과 어떤 관련이 있는지 궁금합니다.
Jasper

1
명령 기록에 명령을 저장하지 않고 명령을 실행하는 방법이 있습니다. 기록을 유지하지 않고 명령 실행을 참조하십시오 .
CVn

2
부록 : 사용자 입력을 에코하기 위해 "추가 작업을 수행하는"터미널을 "전이중"터미널이라고합니다. Ye Olde Days에는 "반이중"터미널도있었습니다.이 터미널에는 문자를 입력 할 때 문자가 바로 표시되고 OS는이를 표시하기 위해 터미널로 다시 보내지 않았습니다. 올바르게 기억한다면이 터미널에는 에코를 끌 수있는 방법이 없었습니다.
Alexis

3

암호 길이를 다른 사람이 볼 수 없으므로 암호를 보이지 않게하면 암호가 더 안전 해집니다. 이렇게하면 다른 사람이 비밀번호를 추측하여 계정에 로그인 할 위험이 없습니다.


키보드는 사용하는 동안 약간의 소음을 발생시키는 경향이 있으며, 암호 길이를 결정하기 위해 나중에 분석하기 위해 들리거나 녹음 될 수 있습니다. 일부 키보드 모델은 다른 키보드 모델보다 조용 합니다 . 또한 일부 키는 상대적으로 뚜렷한 노이즈 (스페이스 바, Enter 등)를 만드는 경향이 있습니다. 이와 관련 하여 암호 길이를 비밀로 유지하는 것이 얼마나 중요합니까? 정보 보안관한 정보 .
CVn

@ Michael Kjörling : 당신이 말한 것은 고급 수준의 보안과 고려해야 할 유효한 요점입니다 (특히 청력이 정말 좋고 키보드 소음을 통해 암호 길이를 얻을 수있는 사람). 그러나 이는 하드웨어 수준에서 고려해야 할 하드웨어 문제이며 이제는 소음을 발생시키지 않는 터치 스크린 키보드 기능이 있습니다.
코더 AP
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.