Mengapa kata sandi yang saya masukkan tidak terlihat?

39

Di bawah ini adalah gambar dari proses yang saya ambil untuk membuat pengguna di bash di Linux.

Membuat pengguna dan menetapkan kata sandi di bash

Saya mengerti bahwa kata sandi tidak boleh ditampilkan untuk tujuan keamanan, tetapi yang saya maksud adalah, mengapa tanda bintang (atau karakter yang saya masukkan) tidak muncul?

Kaiylar
sumber
4
setiap kali Anda memiliki pertanyaan tentang Linux, jawabannya adalah keamanan.
Katz
IBM Notes melakukan hal aneh ini di mana mereka menampilkan tanda bintang acak untuk setiap karakter yang Anda ketikkan untuk kata sandi. Sangat membingungkan.
1
Penipuan lintas situs: ux.stackexchange.com/q/39774/11086
wim

Jawaban:

43

Karena itulah cara kami melakukan berbagai hal di * nix land. :) Ini memberikan sedikit keamanan ekstra dengan tidak menampilkan banyak tanda bintang. Dengan begitu, seseorang yang melihat layar Anda tidak dapat melihat panjang kata sandi Anda.

Tapi saya harus akui itu agak menakutkan tidak mendapatkan umpan balik ketika Anda memasukkan kata sandi, terutama jika Anda memiliki keyboard yang buruk. Jadi sebagian besar dialog kata sandi GUI pada sistem * nix memberi Anda semacam umpan balik, misalnya menggunakan tanda bintang, atau lebih umum ⬤. Dan beberapa bahkan menampilkan setiap karakter saat Anda mengetiknya, tetapi kemudian segera menggantinya dengan a *atau but, tetapi itu tidak begitu baik jika seseorang melihat dari balik bahu Anda. Atau jika mereka memiliki perangkat yang dapat mengambil & mendekode sinyal video yang dikirim dari komputer Anda ke monitor Anda.

PM 2Ring
sumber
5
... dengan bantuanstty -echo
Jeff Schaller
7
Jawaban ini tidak buruk, tetapi IMHO Gilles memberikan jawaban yang sebenarnya. Hampir pasti, para pelaksana tidak benar-benar memikirkan "sedikit keamanan ekstra" dan jelas tidak memikirkan pengalaman pengguna. Mereka melakukannya dengan cara yang sama karena murah dan mudah melakukannya dengan cara itu. Kemudian, kemudian, kami datang untuk mengharapkannya untuk terus bekerja seperti itu ...
Celada
2
@Celada: Titik adil. FWIW, saya sudah memilih suara Gilles.
PM 2Ring
2
@Celada Keamanan tambahan mungkin tidak mengarah pada keputusan awal untuk tidak menampilkan apa pun, tapi saya selalu menganggapnya bermanfaat, dan dapat melihat bagaimana orang lain berpikir seperti itu mungkin telah memberikan alasan yang baik untuk tetap seperti itu.
Monty Harder
1
Saya pikir tampilan singkat dari karakter terakhir yang diketik sebagian besar adalah pendekatan mobile, mungkin karena mengetik pada keyboard kecil di layar lebih rentan kesalahan. Saya tidak berpikir saya pernah melihatnya di aplikasi desktop.
Barmar
82

Apa cara paling sederhana untuk menyembunyikan input pengguna?

Tidak menampilkannya!

Menyembunyikan kata sandi saat sedang diketik adalah tradisi lama. Masuk akal dari perspektif keamanan dalam sebagian besar konteks: jika seseorang melihat dari atas bahu Anda, Anda tidak ingin membuatnya mudah untuk melihat apa yang Anda ketikkan. (Beberapa pedoman keamanan modern misalnya 1 2 3 4 5 merekomendasikan untuk memiliki opsi untuk membuat kata sandi terlihat, karena hal itu memungkinkan pengguna untuk dapat memilih kata sandi yang lebih rumit dan memiliki keyakinan bahwa mereka tidak akan menghabiskan waktu mereka memperbaiki kata sandi yang tidak terlihat. kesalahan ketik. Risiko terbesar bukan berselancar bahu, itu menebak dengan kasar, mungkin offline.)

Setelah memutuskan bahwa kata sandi harus disembunyikan, pelaksana harus memutuskan bagaimana melakukannya. Terminal memiliki mode di mana input pengguna ditampilkan (echo on), dan mode di mana input pengguna tidak ditampilkan (echo off). Mode gema off memiliki keberadaan intrinsik dengan cara: itu adalah mode di mana terminal tidak melakukan pekerjaan ekstra input gema pengguna. Mode ini juga harus ada untuk aplikasi di mana mengetikkan kunci tidak memasukkan karakter itu, tetapi sebaliknya meminta beberapa pintasan aplikasi yang terikat ke kunci itu. Jadi perintah seperti passwdhanya mengatur terminal ke mode gema saat mereka sedang membaca kata sandi.

Mencetak tanda bintang untuk setiap karakter akan membutuhkan kerja implementasi tambahan hanya untuk keuntungan yang relatif kecil, yang passwdbelum ingin dilakukan oleh pelaksana perintah. Tidak ada mode terminal untuk mencetak tanda bintang karena itu akan menjadi fitur yang sangat khusus, hanya berguna ketika memasukkan kata sandi.

Omong-omong, jika Anda ingin melihat kata sandi ketika mengubahnya, Anda dapat menggunakan cat | passwd(setidaknya pada beberapa sistem - beberapa versi passwdmemerlukan opsi seperti cat | passwd --stdindan beberapa tidak menerima ini sama sekali). (Anda bahkan dapat melakukannya { echo 'current password'; echo 'new password'; echo 'new password'; } | passwd, tetapi jangan lakukan itu: itu akan menyimpan kata sandi dalam sejarah shell, yang darinya ada banyak risiko bocor.) Mengaturnya dengan perintah yang membaca kata sandi dari terminal daripada apa pun yang ada input standar mereka, seperti sudoatau ssh, lebih kompleks; jika Anda memiliki GUI, Anda dapat menggunakan ssh-askpass yang menunjukkan berapa banyak karakter yang Anda ketikkan ( SUDO_ASKPASS=/usr/bin/ssh-askpass sudo -Auntuk sudo; untuk ssh itu rumit ketika Anda memintanya dari terminal).

Gilles 'SANGAT berhenti menjadi jahat'
sumber
1
Sejauh ini ini adalah jawaban terbaik imo dan ini sebenarnya sangat membantu. Terima kasih telah mengklarifikasi kepercayaan saya dan memperluas ^, ^ layak memilih!
DankyNanky
4
Handler terminal menangani fitur pengeditan sederhana (seperti backspace) dan buffering the line. Baris yang dibaca menggunakan fgets () tidak kembali sampai enter ditekan. sehingga membuat tanda bintang menjadi sulit. Jika Anda membacanya satu karakter pada satu waktu dan mengulangi tanda bintang Anda akan kehilangan fungsionalitas backspace, atau perlu upaya ekstra untuk mendukungnya.
Jasen
1
Ketika pergi ke sudut sejarah tentang masalah ini, saya bertanya-tanya bagaimana ini berhubungan dengan waktu ketika tty benar-benar disebut teletypewriter ...
Jasper
1
Ada beberapa cara untuk mengeksekusi perintah tanpa disimpan dalam histori perintah. Lihat misalnya Jalankan perintah tanpa menyimpannya dalam riwayat .
CVn
2
Tambahan: Terminal yang "melakukan pekerjaan ekstra" untuk input pengguna gema disebut terminal "dupleks penuh". Dalam Ye Olde Days ada juga terminal "setengah dupleks", di mana karakter ditampilkan segera oleh terminal setelah diketik, dan OS tidak mengirimkannya kembali ke terminal untuk ditampilkan. Jika saya ingat dengan benar, terminal-terminal ini tidak memiliki cara untuk mematikan gema.
alexis
3

Membuat kata sandi tidak terlihat membuatnya lebih aman, karena panjang kata sandi tidak dapat dilihat oleh orang lain. Ini menghindari risiko orang lain mencoba menebak kata sandi dari panjangnya dan masuk ke akun Anda.

Coder AP
sumber
Keyboard cenderung membuat sejumlah kebisingan saat digunakan, yang dapat didengar atau direkam untuk analisis selanjutnya untuk menentukan panjang kata sandi. Beberapa model keyboard lebih tenang daripada yang lain . Juga, beberapa tombol cenderung membuat suara yang relatif berbeda (pikirkan bilah spasi, Enter, dll.). Dalam konteks ini, pertimbangkan juga Seberapa penting kerahasiaan panjang kata sandi Anda? tentang Keamanan Informasi .
CVn
@ Michael Kjörling: Apa yang Anda katakan adalah keamanan tingkat lanjut dan poin yang valid untuk dipertimbangkan (terutama untuk orang yang memiliki daya pendengaran yang sangat baik, yang bisa mendapatkan panjang kata sandi melalui suara keyboard). Tetapi ini adalah masalah perangkat keras, yang perlu dipertimbangkan pada tingkat perangkat keras dan karenanya, sekarang kami memiliki fasilitas papan ketik layar sentuh, yang tidak menimbulkan kebisingan.
Coder AP