2012-03-14 39 views
12

Tôi đã ở trên bcrypt bandwagon một lúc rồi, nhưng tôi đang gặp rắc rối khi trả lời một câu hỏi dai dẳng.Bcrypt có khả thi cho các trang web lớn không?

Hãy tưởng tượng tôi có một trang web thành công hợp lý ở Hoa Kỳ .. khoảng 100.000 người dùng đang hoạt động có mỗi mẫu hoạt động yêu cầu 2-3 lần xác thực trung bình trong suốt một ngày làm việc điển hình của Mỹ (12 giờ khi bạn bao gồm múi giờ). Đó là 250.000 yêu cầu xác thực mỗi ngày, hoặc khoảng 5,8 xác thực mỗi giây.

Một trong những điều gọn gàng về bcrypt là bạn điều chỉnh nó, sao cho theo thời gian nó có thể cân bằng như phần cứng, để vượt qua các bánh quy giòn. Một điều chỉnh phổ biến là để có được nó chỉ mất hơn 1/10 của một giây cho mỗi tạo băm ... chúng ta hãy nói rằng tôi nhận được nó để 0,17 giây mỗi băm. Tôi đã chọn số đó vì nó chỉ xảy ra là 0,17 giây mỗi băm hoạt động với khoảng 5,8 băm mỗi giây. Nói cách khác, máy chủ web giả định của tôi có nghĩa là chi tiêu tất cả thời gian của nó không làm gì ngoài việc xác thực người dùng. Không bao giờ thực sự làm bất kỳ công việc hữu ích nào.

Để giải quyết vấn đề này, tôi sẽ phải điều chỉnh cách bcrypt xuống (không phải là ý tưởng hay) hoặc nhận một máy chủ chuyên dụng chỉ để thực hiện xác thực và không có gì khác. Bây giờ hãy tưởng tượng rằng trang web phát triển và thêm 100.000 người dùng khác. Đột nhiên tôi cần hai máy chủ: một lần nữa, không làm gì ngoài xác thực. Thậm chí không bắt đầu suy nghĩ về gai tăng, vì bạn có thời gian ánh sáng và bận rộn trong suốt một ngày.

Như tôi thấy nó ngay bây giờ, đây là một trong những vấn đề sẽ rất hay, và bcrypt sẽ vẫn đáng giá. Nhưng tôi muốn biết nếu tôi đang thiếu một cái gì đó hiển nhiên ở đây? Một cái gì đó tinh tế? Hoặc bất cứ ai có thể thực sự trỏ đến một trang web nổi tiếng đang chạy một trang trại toàn bộ máy chủ chỉ cho phần xác thực của trang web của họ?

+1

Có thể thực hiện được nếu bạn có tiền. Một số trang web không xem xét đầy đủ HTTPS khả thi do tăng phần trăm về băng thông và sức mạnh xử lý được yêu cầu. Nhưng các trang web lớn khác không có vấn đề gì khi thực thi chính sách HTTPS. Nó chỉ phụ thuộc vào ngân sách và các ưu tiên của bạn. –

+0

Đó không phải là một máy chủ dành riêng cho auth: đó là một lõi. –

+0

@Peter - nó không chỉ là cốt lõi. Nếu không, mũ đen chỉ có thể ném thêm phần cứng song song vào vấn đề một card đồ họa la. –

Trả lời

5

Thậm chí nếu bạn điều chỉnh bcrypt chỉ mất 1/1000 giây, vẫn chậm hơn một chút so với băm đơn giản — một điểm chuẩn Perl nhanh và bẩn cho biết máy tính mới của tôi có thể tính toán khoảng 300.000 Băm SHA-256 mỗi giây. Có, sự khác biệt giữa 1000 và 300.000 chỉ khoảng 8 bit, nhưng đó vẫn là 8 bit của lề bảo mật bạn sẽ không có cách khác, và sự khác biệt đó chỉ tăng lên khi CPU nhanh hơn.

Ngoài ra, nếu bạn sử dụng scrypt thay vì bcrypt, nó sẽ giữ lại thuộc tính độ cứng của bộ nhớ ngay cả khi số lần lặp được giảm xuống, điều này sẽ khiến cho khó thực hiện song song hơn.

+0

Có, thậm chí 1/10000 giây sẽ tốt hơn, mục đích là ngăn ngừa tính toán hàng triệu giá trị mỗi giây. Và tất nhiên bạn có thể bắt đầu với một thời gian ngắn và điều chỉnh giá trị này sau này, khi bạn có thể ước tính tác động. – martinstoeckli

Các vấn đề liên quan