Mengapa upaya memasukkan kata sandi yang salah membutuhkan waktu lebih lama daripada yang benar?


17

Tempat paling menonjol yang saya perhatikan adalah saat SSH bekerja, tetapi saya merasa seperti saya mengamati perilaku ini di tempat lain juga.

Ketika saya mencoba masuk ke server Linux dari desktop Windows saya di kantor, saya perhatikan bahwa jika saya salah ketik kata sandi saya, dibutuhkan sekitar 5 detik sebelum saya mendapatkan "Akses Ditolak" kembali. Kemudian ketika saya mengetik kata sandi dengan benar, login (bersama dengan pesan selamat datang dll) hampir instan.

Apakah ada alasan logis untuk ini, atau apakah itu karena beberapa konfigurasi aneh yang khusus untuk mesin di sini di tempat kerja?


1
Ada diskusi / jawaban yang bagus tentang ini stackoverflow.com/questions/712339/… , termasuk secara khusus mengurangi penundaan kegagalan Linux sini dan sini
drzaus

hal yang sama akan terjadi ketika Anda masuk ke Windows dengan kata sandi yang salah, tetapi saya perhatikan waktunya bervariasi dari waktu ke waktu, dalam rentang yang luas dari beberapa detik hingga sekitar 1-2 menit
phuclv

Jawaban:


21

Mungkin ada batas waktu buatan yang dibuat untuk membuat serangan brute force lebih sulit untuk berhasil.

Anda akan melihat ini pada banyak login yang melibatkan otentikasi aman ...


1
Ah, belum memikirkan itu. Itu masuk akal, dan akan menjelaskan mengapa saya merasa saya telah melihat penundaan yang sama di tempat lain.
Cam Jackson

alias tarpitting. Terima kasih, Michael Kjörling ( superuser.com/questions/916187/… )
rfportilla

10

Ini adalah beberapa penundaan yang dimaksudkan untuk mencegah serangan brute force. Penundaan yang lebih lama juga mencegah penyerang dapat menebak perbedaan antara nama pengguna salah dan kata sandi salah (hashing dan memeriksa kata sandi membutuhkan waktu lebih lama daripada memeriksa nama pengguna).


1

Secara teknis, ini penundaan yang disengaja adalah untuk mencegah serangan seperti "Serangan linierisasi" (ada serangan dan alasan lain juga) .

Untuk menggambarkan serangan itu, pertimbangkan sebuah program (tanpa ini   penundaan yang disengaja), yang memeriksa serial yang dimasukkan untuk melihat apakah itu   cocok dengan seri yang benar, yang dalam hal ini kebetulan   " xyba " . Untuk efisiensi, programmer memutuskan untuk memeriksanya   karakter sekaligus dan untuk keluar segera setelah karakter yang salah   ditemukan, sebelum memulai, panjang juga diperiksa.

Panjang serial yang benar akan membutuhkan waktu lebih lama untuk diproses daripada panjang serial yang salah. Bahkan lebih baik (untuk penyerang), nomor seri   yang memiliki karakter pertama yang benar akan membutuhkan waktu lebih lama dari itu   memiliki karakter pertama yang salah. Langkah-langkah berturut-turut dalam waktu tunggu   karena setiap kali ada satu loop lagi, perbandingan harus dilalui   pada input yang benar.

  • Jadi, penyerang dapat memilih a string empat karakter dan bahwa string dimulai dengan x membutuhkan waktu paling banyak. (dengan tebakan)
  • Penyerang kemudian dapat memperbaiki karakter sebagai x dan bervariasi karakter kedua, dalam hal ini mereka akan menemukan itu y butuh waktu lama.
  • Penyerang kemudian dapat memperbaiki dua karakter pertama sebagai xy dan bervariasi karakter ketiga, dalam hal ini mereka akan menemukan itu b mengambil   terpanjang.
  • Penyerang kemudian dapat memperbaiki tiga karakter pertama sebagai xyb dan bervariasi karakter keempat, dalam hal ini mereka akan menemukan itu Sebuah mengambil   terpanjang.

Oleh karena itu, para penyerang dapat memulihkan karakter serial satu per satu.

Linearization.java.

Linearization.docx, sampel keluaran

Nomor seri panjangnya empat karakter dan setiap karakter memiliki 128 nilai yang memungkinkan. Lalu ada 128 4 = 2 28 =   268.435.456 serial yang memungkinkan . Jika penyerang harus menebak secara acak   nomor seri lengkap, dia akan menebak nomor seri di sekitar 2 27 = 134.217.728 percobaan, yang merupakan pekerjaan yang sangat besar . Di sisi lain, dengan menggunakan serangan linierisasi di atas, sebuah   rata-rata hanya 128/2 = 64 tebakan diperlukan untuk setiap huruf, untuk a   total pekerjaan yang diharapkan sekitar 4 * 64 = 2 8 = 256 tebakan, yang merupakan jumlah pekerjaan sepele.

Banyak bela diri tertulis diadaptasi dari ini (diambil dari "Keamanan Informasi: Prinsip dan Praktik" Mark Stamp). Juga perhitungan di atas tidak memperhitungkan jumlah dugaan yang diperlukan untuk mengetahui panjang seri yang benar.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.