Tại sao mật khẩu tôi nhập không hiển thị?


39

Dưới đây là hình ảnh của quá trình tôi thực hiện để tạo người dùng trên bash trong Linux.

Tạo người dùng và gán mật khẩu trong bash

Tôi hiểu rằng mật khẩu không nên được hiển thị cho mục đích bảo mật, nhưng ý tôi là, tại sao các dấu sao (hoặc các ký tự tôi đã nhập) không xuất hiện?


4
Bất cứ khi nào bạn có câu hỏi về Linux, câu trả lời là bảo mật.
Katz


IBM Notes thực hiện điều kỳ lạ này khi chúng hiển thị các dấu sao ngẫu nhiên cho mỗi ký tự bạn nhập mật khẩu. Rất bối rối.


Câu trả lời:


43

Bởi vì đó là cách chúng ta làm mọi thứ trên đất * nix. :) Nó cung cấp thêm một chút bảo mật bằng cách không hiển thị một loạt các dấu sao. Bằng cách đó, ai đó nhìn thấy màn hình của bạn không thể thấy độ dài của mật khẩu của bạn.

Nhưng tôi phải thừa nhận rằng hơi đáng sợ khi không nhận được bất kỳ phản hồi nào khi bạn nhập mật khẩu, đặc biệt là nếu bạn có một bàn phím xấu. Vì vậy, hầu hết hộp thoại mật khẩu GUI trên các hệ thống * nix đều cung cấp cho bạn một số loại phản hồi, ví dụ như sử dụng dấu hoa thị hoặc phổ biến hơn là. Và một số thậm chí hiển thị từng ký tự khi bạn nhập nó, nhưng sau đó ngay lập tức thay thế nó bằng một *hoặc, nhưng điều đó không tốt nếu ai đó có thể nhìn qua vai bạn. Hoặc nếu họ có một thiết bị có thể nhận và giải mã tín hiệu video được gửi từ máy tính của bạn đến màn hình của bạn.


5
... với sự giúp đỡ củastty -echo
Jeff Schaller

7
Câu trả lời này không tệ, nhưng IMHO Gilles đã đưa ra câu trả lời thực sự. Gần như chắc chắn, những người triển khai không thực sự nghĩ đến "một chút bảo mật bổ sung" và chắc chắn không nghĩ đến trải nghiệm người dùng. Họ đã làm theo cách họ đã làm bởi vì nó rẻ và dễ dàng để làm theo cách đó. Sau đó, sau đó, chúng tôi đã mong đợi nó tiếp tục hoạt động theo cách đó ...
Celada

2
@Celada: Điểm công bằng. FWIW, tôi đã bình chọn câu trả lời xuất sắc của Gilles.
PM 2Ring

2
@Celada Việc bảo mật được thêm vào có thể không dẫn đến quyết định ban đầu không hiển thị gì, nhưng tôi luôn coi đó là một lợi ích và có thể thấy những người khác nghĩ như vậy có thể đã cung cấp một lý do chính đáng để giữ nguyên như vậy.
Monty Harder

1
Tôi nghĩ rằng màn hình hiển thị breif của ký tự cuối cùng được nhập chủ yếu là một cách tiếp cận trên thiết bị di động, có lẽ vì gõ trên bàn phím nhỏ trên màn hình dễ bị lỗi hơn. Tôi không nghĩ rằng tôi đã từng thấy nó trong các ứng dụng máy tính để bàn.
Barmar

82

Cách đơn giản nhất để ẩn đầu vào của người dùng là gì?

Không hiển thị nó!

Ẩn mật khẩu khi chúng được gõ là một truyền thống cũ. Theo nghĩa từ góc độ bảo mật trong hầu hết các bối cảnh: nếu ai đó đang nhìn qua vai bạn, bạn không muốn làm cho nó dễ dàng để xem những gì bạn đang gõ. (Một số nguyên tắc bảo mật hiện đại ví dụ 1 2 3 4 5 tôi khuyên bạn nên có một tùy chọn để làm cho mật khẩu mặc dù có thể nhìn thấy, bởi vì đó cho phép người dùng có thể chọn mật khẩu phức tạp hơn và có niềm tin rằng họ sẽ không được dành thời gian của họ cố định vô hình Lỗi chính tả. Rủi ro lớn nhất không phải là lướt vai, đó là đoán vũ phu, có thể là ngoại tuyến.)

Khi đã quyết định rằng mật khẩu sẽ bị ẩn, những người thực hiện phải quyết định cách thực hiện. Thiết bị đầu cuối có chế độ hiển thị đầu vào của người dùng (bật lại) và chế độ mà đầu vào của người dùng không được hiển thị (tắt tiếng vang). Chế độ tắt tiếng vang có sự tồn tại nội tại theo một cách: đó là chế độ mà thiết bị đầu cuối không thực hiện thêm công việc lặp lại đầu vào của người dùng. Chế độ này cũng phải tồn tại cho các ứng dụng khi nhập khóa không chèn ký tự đó, nhưng thay vào đó, gọi một số phím tắt ứng dụng được liên kết với phím đó. Vì vậy, các lệnh như passwdchỉ đặt thiết bị đầu cuối thành chế độ tắt trong khi chúng đang đọc mật khẩu.

In dấu hoa thị cho mỗi ký tự sẽ yêu cầu công việc triển khai thêm chỉ vì một lợi ích tương đối nhỏ, điều mà những người thực hiện passwdlệnh không cảm thấy thích làm. Không có chế độ đầu cuối để in dấu sao vì đây sẽ là một tính năng rất chuyên dụng, chỉ hữu ích khi nhập mật khẩu.

Nhân tiện, nếu bạn muốn xem mật khẩu của mình khi thay đổi mật khẩu, bạn có thể sử dụng cat | passwd(ít nhất là trên một số hệ thống - một số phiên bản passwdyêu cầu một tùy chọn như cat | passwd --stdinvà một số không chấp nhận điều này). (Bạn thậm chí có thể làm { echo 'current password'; echo 'new password'; echo 'new password'; } | passwd, nhưng đừng làm vậy: nó sẽ lưu mật khẩu trong lịch sử shell, từ đó có nhiều rủi ro bị rò rỉ hơn.) Sắp xếp cho điều đó bằng các lệnh đọc mật khẩu từ thiết bị đầu cuối chứ không phải bất cứ điều gì đầu vào tiêu chuẩn của họ, như sudohoặc ssh, phức tạp hơn; nếu bạn có sẵn GUI, bạn có thể sử dụng ssh-askpass để hiển thị bao nhiêu ký tự bạn đã nhập ( SUDO_ASKPASS=/usr/bin/ssh-askpass sudo -Ađối với sudo; đối với ssh, nó sẽ phức tạp khi bạn gọi nó từ thiết bị đầu cuối).


1
Đây là câu trả lời hay nhất và nó thực sự rất hữu ích. Cảm ơn đã làm rõ niềm tin của tôi và mở rộng ^, ^ xứng đáng bỏ phiếu!
DankyNanky

4
Trình xử lý đầu cuối đảm nhiệm các tính năng chỉnh sửa đơn giản (như backspace) và đệm dòng. Một dòng đọc bằng cách sử dụng fgets () không trở lại cho đến khi nhấn enter. do đó làm cho việc in hoa thị khó khăn. Nếu bạn đã đọc nó một ký tự một lần và lặp lại dấu hoa thị, bạn sẽ mất chức năng backspace hoặc cần thêm nỗ lực để hỗ trợ nó.
Jasen

1
Khi đi vào góc độ lịch sử về vấn đề này, tôi tự hỏi làm thế nào điều này liên quan đến thời điểm khi tty thực sự được đề cập đến teletypewriter ...
Jasper

1
Có nhiều cách để thực thi một lệnh mà không được lưu trong lịch sử lệnh. Xem ví dụ Thực thi lệnh mà không giữ nó trong lịch sử .
một CVn

2
Phụ lục: Các thiết bị đầu cuối "làm thêm" để lặp lại đầu vào của người dùng được gọi là thiết bị đầu cuối "song công hoàn toàn". Trong Ye Olde Days cũng có các thiết bị đầu cuối "bán song công", trong đó ký tự được hiển thị ngay lập tức bởi thiết bị đầu cuối khi được nhập và HĐH không gửi nó trở lại thiết bị đầu cuối để hiển thị. Nếu tôi nhớ chính xác, các thiết bị đầu cuối này không có cách nào để tắt tiếng vang.
alexis

3

Làm cho mật khẩu trở nên vô hình làm cho nó an toàn hơn, vì người khác không thể nhìn thấy độ dài của mật khẩu. Điều này tránh nguy cơ người khác cố gắng đoán mật khẩu từ độ dài của nó và đăng nhập vào tài khoản của bạn.


Bàn phím có xu hướng tạo ra một số tiếng ồn khi chúng được sử dụng, có thể nghe hoặc ghi lại để phân tích sau để xác định độ dài mật khẩu. Một số mẫu bàn phím yên tĩnh hơn những mẫu khác . Ngoài ra, một số phím có xu hướng tạo ra tiếng ồn tương đối khác biệt (nghĩ thanh không gian, Enter, v.v.). Trong bối cảnh này, cũng xem xét mức độ quan trọng của việc giữ bí mật độ dài mật khẩu của bạn? về bảo mật thông tin .
một CVn

@ Michael Kjorling: Những gì bạn nói là bảo mật cấp cao và là điểm hợp lệ cần xem xét (đặc biệt đối với người có khả năng nghe thực sự tốt, người có thể lấy được độ dài mật khẩu thông qua tiếng ồn của bàn phím). Nhưng đó là một vấn đề phần cứng, cần được xem xét ở cấp độ phần cứng và như vậy, bây giờ chúng ta có cơ sở của bàn phím màn hình cảm ứng, không tạo ra tiếng ồn.
AP
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.