Tại sao một lần thử mật khẩu không chính xác sẽ mất nhiều thời gian để xử lý hơn một mật khẩu chính xác?


17

Nơi nổi bật nhất mà tôi nhận thấy điều này là khi SSH làm việc, nhưng tôi cảm thấy như mình cũng đã quan sát hành vi này ở nơi khác.

Khi tôi cố gắng đăng nhập vào máy chủ Linux từ máy tính để bàn Windows của mình tại nơi làm việc, tôi nhận thấy rằng nếu tôi nhập sai mật khẩu của mình, sẽ mất khoảng 5 giây hoặc lâu hơn trước khi tôi lấy lại "Truy cập bị từ chối". Sau đó, khi tôi nhập mật khẩu chính xác, thông tin đăng nhập (cùng với thông điệp chào mừng, v.v.) gần như ngay lập tức.

Có bất kỳ lý do hợp lý cho điều này, hoặc nó sẽ xuống một số cấu hình kỳ lạ cụ thể cho các máy ở đây tại nơi làm việc?


1
Có một cuộc thảo luận / câu trả lời tốt về vấn đề này trên stackoverflow.com/questions/712339/ , bao gồm cụ thể giảm sự chậm trễ của Linux ở đâyđây
drzaus

điều tương tự sẽ xảy ra khi bạn đăng nhập vào Windows bằng mật khẩu không chính xác, nhưng tôi nhận thấy thời gian thay đổi theo từng thời điểm, trong một phạm vi rộng từ vài giây đến khoảng 1-2 phút
phuclv

Câu trả lời:


21

Có lẽ có một thời gian chờ nhân tạo tích hợp để làm cho cuộc tấn công vũ phu khó thành công hơn.

Bạn sẽ thấy điều này trên nhiều lời nhắc đăng nhập liên quan đến xác thực an toàn ...


1
Ah, đã không nghĩ về điều đó. Điều đó có ý nghĩa hoàn hảo, và sẽ giải thích tại sao tôi cảm thấy như tôi đã thấy sự chậm trễ tương tự ở nơi khác.
Cam Jackson

hay còn gọi là bói toán. Cảm ơn, Michael Kjorling ( superuser.com/questions/916187/iêng )
rfportilla 19/05/2015

10

Đây là một số dự định trì hoãn để ngăn chặn các cuộc tấn công vũ phu. Việc trì hoãn lâu hơn cũng ngăn kẻ tấn công có thể đoán sự khác biệt giữa tên người dùng là sai và mật khẩu sai (băm và kiểm tra mật khẩu mất nhiều thời gian hơn đáng kể so với kiểm tra tên người dùng).


1

Về mặt kỹ thuật, sự chậm trễ có chủ ý này là để ngăn chặn các cuộc tấn công như " Tấn công tuyến tính hóa" (cũng có các cuộc tấn công và lý do khác) .

Để minh họa cuộc tấn công, hãy xem xét một chương trình (không có sự chậm trễ có chủ ý này), kiểm tra một chuỗi đã nhập để xem liệu nó có khớp với chuỗi chính xác hay không, trong trường hợp này là " xyba " . Để hiệu quả, lập trình viên quyết định kiểm tra một ký tự một lần và thoát ngay khi tìm thấy một ký tự không chính xác, trước khi bắt đầu độ dài cũng được kiểm tra.

Độ dài nối tiếp chính xác sẽ mất nhiều thời gian để xử lý hơn độ dài nối tiếp không chính xác. Thậm chí tốt hơn (đối với kẻ tấn công), một số sê-ri có ký tự đầu tiên đúng sẽ mất nhiều thời gian hơn bất kỳ ký tự đầu tiên nào không chính xác. Các bước liên tiếp trong thời gian chờ là vì mỗi lần có thêm một vòng lặp, hãy so sánh để đi vào đầu vào chính xác.

  • Vì vậy, kẻ tấn công có thể chọn một chuỗi gồm bốn ký tự và chuỗi bắt đầu bằng x mất nhiều thời gian nhất. (bằng cách đoán công việc)
  • Attacker sau đó có thể sửa ký tự thành x và thay đổi ký tự thứ hai, trong trường hợp đó họ sẽ thấy rằng y mất nhiều thời gian nhất.
  • Sau đó, Attacker có thể sửa hai ký tự đầu tiên là xy và thay đổi ký tự thứ ba, trong trường hợp đó, họ sẽ thấy rằng b mất nhiều thời gian nhất.
  • Attacker sau đó có thể sửa ba ký tự đầu tiên là xyb và thay đổi ký tự thứ tư, trong trường hợp đó họ sẽ thấy rằng một ký tự dài nhất.

Do đó, những kẻ tấn công có thể phục hồi một ký tự nối tiếp tại một thời điểm.

Tuyến tính hóa.java.

Tuyến tính.docx, đầu ra mẫu

Số sê-ri là bốn ký tự và mỗi ký tự có 128 giá trị có thể. Sau đó, có 128 4 = 2 28 = 268,435,456 serial có thể . Nếu kẻ tấn công phải đoán ngẫu nhiên các số sê-ri hoàn chỉnh, cô sẽ đoán số sê-ri trong khoảng 2 27 = 134.217.728 lần thử, đây là một khối lượng công việc khổng lồ . Mặt khác, bằng cách sử dụng tấn công tuyến tính hóa ở trên, trung bình chỉ cần 128/2 = 64 lần đoán cho mỗi chữ cái, cho tổng số công việc dự kiến ​​là khoảng 4 * 64 = 2 8 = 256 lần đoán, đây là một số tiền không đáng kể của công việc.

Phần lớn các bài viết được chuyển thể từ điều này (lấy từ "An toàn thông tin: Nguyên tắc và thực hành" của Mark Stamp). Ngoài ra các tính toán ở trên không tính đến số lượng phỏng đoán cần thiết để tìm ra độ dài nối tiếp chính xác.

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.