2012-05-19 26 views
5

Tôi đang sử dụng bcrypt/blowfish trong php và khi tôi đặt thông số chi phí thành 10 đô la (1024 vòng tôi nghĩ), quá trình mã hóa mất 0,1 giây. Nếu tôi đặt nó thành $ 12, phải mất 0,3 giây. Câu hỏi của tôi là: Đây có phải là 0,3 giây của thời gian cpu tức là nếu tôi có 100 người dùng đang chạy quá trình này, liệu tất cả họ có phải đợi 30 giây (0,3 x 100) không? (chỉnh sửa: có thể ngắn hơn do xử lý dual0core/multi-thread nhưng thậm chí 10 giây không thể chấp nhận được).Chi phí cá ngừ so với thời gian

Ngoài ra: Giá trị tốt để để lại thông số chi phí này là gì? một số người đề nghị $ 16 nhưng phải mất hơn 5 giây trên trang web của tôi (được lưu trữ bởi một webhost lớn).

bằng cách tôi đang sử dụng đoạn mã sau để kiểm tra thời gian mà nó cần:

<?php 
// set a password to work with 
$var1 = "doodoo1234"; 

//echo that password onto the screen 
echo $var1 . "<br /><br />"; 

//Start the clock 
$time_start = microtime(true); 

//Run blowfish function to encrypt the password 
$hashedpass = PassHash::blowfishhash($var1); 

//stop the clock 
$time_end = microtime(true); 

//echo the password to the screen 
echo $echohashedpass . "<br /><br />"; 

//Echo the length of the encrypted password to the screen 
//(this taught me that blowfish always returns a 60 varchar string) 
echo strlen($sajpass). "<br /><br />"; 

$time = $time_end - $time_start; 
echo "that took $time seconds\n"; 
?> 
+0

Bạn có thể dùng thử với điểm chuẩn apache hoặc ab để biết cách xử lý dưới tải. – Zombaya

+1

Không! Tôi không có nhiều quyền truy cập vào máy chủ apache trên máy chủ web của tôi và tôi chắc chắn có những người đã thực hiện bảo mật cá blowfish và có thể trả lời điều này..gay cả khi tôi biết có bao nhiêu vòng hầu hết mọi người đang sử dụng tôi có thể sử dụng nó làm điểm xuất phát .. –

+1

Bạn có thể đánh giá từ máy tính cục bộ của mình. Cá nhân tôi sử dụng 8, đó là mặc định của [phpass] (http://www.openwall.com/phpass/). – Zombaya

Trả lời

4

Thành thực mà nói? Tiêu chuẩn là 7, nhưng bạn có thể đặt nó theo bất cứ điều gì bạn muốn, thậm chí thấp như 4 vẫn sẽ nhảy vọt trên mọi thứ khác ngoài kia. Nó cũng có lợi thế hơn các băm khác trong thực tế là nó không thể tăng tốc thông qua việc sử dụng GPU. Vì vậy, nó chỉ là chậm (ngay cả chậm hơn ngay bây giờ) so với băm khác. Vì vậy, nó vẫn còn chậm như nó luôn luôn có được. Nếu bạn đang dùng 0.1s trên 10, sau đó thử 5 hoặc 6. Điều đó sẽ đưa bạn xuống 0.05s hoặc hơn. Bây giờ thì là đủ? Nó phụ thuộc vào định nghĩa của bạn là đủ.

Cá nhân, tôi muốn nói bất cứ điều gì trên mức tối thiểu (là 4) là quá đủ. Cũng không chỉ làm thẳng lên blowfish. Khi ai đó quản lý để song song nó, họ sẽ có thể ném mật khẩu của bạn chống lại công cụ này đã được preogrammed. Hãy thử làm một việc gì đó như băm mật khẩu bằng một số mã khác nhanh băm trước hoặc sau khi băm chúng bằng bcrypt. Sử dụng một cái gì đó mạnh mẽ mặc dù như sha256 hoặc sha512. Bằng cách này hệ thống của bạn không giống với tất cả những người khác đang sử dụng bcrypt.

Vì bạn đã sử dụng bcrypt, tôi sẽ giả định rằng bạn đang sử dụng muối thích hợp của băm (bên ngoài những gì được yêu cầu bởi bcrypt một mình).

Tôi đã thực hiện tấn điểm chuẩn trên máy tính xách tay của mình và tôi đã giải quyết thành công 6 như thông số chi phí, chắc chắn nó không phải là mặc định là 7, nhưng nó không đủ chậm để thực sự khiến tôi lo lắng về ai đó cố gắng để có được vào nó. Nó cũng chậm hơn hàng triệu lần so với họ băm.

Chỉnh sửa cũng nếu bạn muốn một số mã để làm việc (vì tôi không biết nếu bạn làm), tôi đã đăng một số hơn tại liên kết này Link to implementation of bcrypt based hashing. Tôi không biết nếu bạn muốn nó, vì vậy đó là lý do tại sao tôi đã không đặt nó ở đây. Giấy phép là điên rồ tự do, vì vậy nếu bạn chưa tự viết nó, tôi đề nghị bạn có thể sử dụng nó (nhưng có thể sửa đổi một cái gì đó).

+2

Chi phí 5 và 6 cho tốc độ 2^5 = 32 và 2^4 = 16 lần, so với chi phí 10. Vì vậy, nếu 0,1 giây được sử dụng với chi phí 10 thì chi phí 5 và 6 mất khoảng 0,003 hoặc 0,006 giây, tương ứng, không 0,05 giây. – Jaan