Professional Documents
Culture Documents
=> Mã hóa là 1 chiều ,hệ thống không có nhu cầu giải mã mật khẩu nên sử dụng các
thuật toán Hash
Đặt vấn đề
*Các thuật toán Hash sử dụng phổ biến : MD5 ,SHA,…
-Vấn đề :
+Vì chỉ thực hiện hash mật khẩu nên sẽ dễ bị tấn công từ điển.Kẻ tấn công sẽ hash
các password tiềm năng để so khớp với database :
+Có thể lập bảng tính toán trước RainBow Table các giá trị hash sau đó map với
database để tìm mật khẩu
+2 password giống nhau sẽ sinh ra cùng 1 bản hash value giống nhau => kẻ tấn công
có thể dự đoán 1 phần của mật khẩu
+Với CPU hiện đại , các thuật toan MD5 ,SHA cho kết quả hàng triệu phép Hash /
giây => dễ dàng cho kẻ tấn công
Þ Thuật toán Bcrypt được ra đời nhằm khắc phục hạn chế của MD5 ,SHA,…
Thuật toán BCrypt
-Là thuật toán mã hóa được thiết kế bởi Niels Provos và David
Mazieres .
-Gồm 2 bước : Hashing và Salting
Hashing
-Biến đổi chuỗi đầu vào kích thước bất kỳ thành chuỗi đầu ra có kích thước nhất định .
-Input đầu vào giống nhau sẽ cho hash value giống nhau
-Mã hóa 1 chiều . Biết hash vlue nhưng khó có thể tìm password
-Không tồn tại 2 password khác nhau mà có hash value giống nhau
Hashing
Salting
-Là giá trị duy nhất cho mỗi user , được gắn vào cuối mật khẩu để thực
hiện băm
-Chống lại cách tấn công Rainbow Table .Kẻ tấn công có thể tấn công
được 1 user với hiệu năng tinh toán lớn nhưng tấn công toàn bộ user là
không khả thi .
Salting+Hashing
Quy trình
-User gửi plan-text password lên Server và over HTPPS
-Server sẽ kiểm tra trong database, lấy ra salt của user đó
-Server Hash(salt+password)
-Compare kết quả trong database
Độ bảo mật
-Bcrypt là thuật toán slow hash ,mất 0.1 s để tính toán hash value .Nên tấn công
Bruteforce là không khả thi.
-Sử dụng Salt làm giảm năng lực hạn chế việc tấn công Rainbow Table
-Để hạn chế tấn công theo kiểu Dictionary Attacks , người dùng cần phải đặt mật
khẩu mạnh , khó đoán .