Password Hashing là gì (và nó hoạt động như thế nào)?
Nếu bạn là một cư dân thường xuyên của Internet như bản thân mình, có một cơ hội tốt mà bạn đã nhận được một email mà đi một cái gì đó như thế này:
Kính gửi quý khách hàng,
Gần đây, trang web của chúng tôi đã trở thành nạn nhân của một cuộc tấn công mạng trên mạng công ty của chúng tôi. Tất cả mật khẩu đã được mã hóa, nhưng để phòng ngừa, chúng tôi yêu cầu tất cả khách hàng của chúng tôi đặt lại mật khẩu của họ ngay lập tức.
Cảm ơn bạn.
Vì vậy, đã có một sự vi phạm, một số thông tin của bạn, bao gồm cả mật khẩu được mã hóa của bạn, đã bị rò rỉ. Tài khoản của bạn có gặp rủi ro không?
Câu trả lời ngắn gọn: CÓ, nhưng tại sao?
Để hiểu điều này, bạn phải hiểu khái niệm "băm mật khẩu".
Hash là gì?
Một băm chỉ là một cách để đại diện cho bất kỳ dữ liệu nào như một chuỗi ký tự duy nhất. Bạn có thể băm bất cứ thứ gì: nhạc, phim, tên của bạn hoặc bài viết này. Nói một cách ẩn dụ, băm là một cách để gán một "tên" cho dữ liệu của bạn. Nó cho phép bạn lấy đầu vào của bất kỳ độ dài nào và biến nó thành một chuỗi các ký tự luôn có cùng độ dài. Rõ ràng, có rất nhiều phương pháp (thuật toán) để làm điều này.
Một vài thuật toán băm phổ biến nhất:
- MD5 - Cho bất kỳ dữ liệu nào sẽ trả về một mã băm 32 ký tự duy nhất.
- SHA1 - Cho bất kỳ dữ liệu nào sẽ trả về một mã băm 40 ký tự duy nhất.
- SHA256 - Cho bất kỳ dữ liệu nào sẽ trả về một mã băm 64 ký tự duy nhất; do Cơ quan An ninh Quốc gia thiết kế.
Hãy xem xét một ví dụ đơn giản:
Tên tôi là "Jamin Becker"
Biểu diễn băm MD5 của tên tôi là:
eeb7048c69b088739908f5f5144cd1f5
Biểu diễn băm SHA1 của tên tôi là:
ae480b717c08b6ab36a85075864e35b9c528d7c5
Biểu diễn băm SHA256 của tên tôi là:
a477cc14eae5fd94fe4cb20b36ec80ac6983bad44973ae7f4f230010f01289b0
Tại sao Hashing an toàn?
Lý do băm là an toàn rất đơn giản: băm là một hoạt động một chiều. Chúng không thể đảo ngược. Với chuỗi “eeb7048c69b088739908f5f5144cd1f5”, không có cách nào để đảo ngược mã băm MD5 để trả về “Jamin Becker”. Điều này là do cách các nhà toán học và lập trình viên cấu trúc thuật toán băm MD5, và nó trở lại vấn đề khoa học máy tính cơ bản được gọi là "P vs NP". P và NP chỉ là hai lớp thuật toán.
Hầu hết các thuật toán băm đều nằm dưới NP có nghĩa là chúng có thể được tính toán nhanh chóng. Tuy nhiên, các thuật toán không băm (tức là “eeb7048c69b088739908f5f5144cd1f5” -> “Jamin Becker”) nằm trong lớp P và chỉ có thể được giải quyết một cách hiệu quả trong thời gian đa thức (tức là sử dụng một máy tính lượng tử cao hơn nhiều so với những cái hiện có).
Vậy tại sao điều này tốt cho an ninh?
Giả sử bạn đăng ký một trang web và chọn mật khẩu “12345”. Ngay lập tức, trang web đó sẽ băm mật khẩu của bạn, có thể với SHA1 và lưu trữ nó trong cơ sở dữ liệu. Bây giờ mỗi khi bạn đăng nhập, trang web sẽ khôi phục mật khẩu của bạn và so sánh nó với mật khẩu được lưu trữ trong cơ sở dữ liệu. Nếu chúng khớp nhau, bạn sẽ được xác thực thành công. Nếu trang web bị vi phạm và cơ sở dữ liệu mật khẩu bị rò rỉ, mật khẩu của bạn sẽ xuất hiện dưới dạng “8cb2237d0679ca88db6464eac60da96345513964” chứ không phải “12345”.
Chiến lược tấn công băm
Vì vậy, kẻ tấn công có phiên bản băm mật khẩu của tôi và không có cách nào để đảo ngược nó với 12345. Tôi không có gì phải lo lắng, phải không? SAI RỒI!
Một phương pháp thường được sử dụng để lấy mật khẩu thuần văn bản từ một băm được gọi là tấn công brute force. Trong cuộc tấn công này, kẻ tấn công sẽ chạy qua một danh sách từ khổng lồ và băm từng từ bằng thuật toán băm thích hợp. Sau đó, họ có thể so sánh các băm trong danh sách từ với những từ họ đã thu được từ cơ sở dữ liệu. Nếu một băm từ danh sách từ khớp với một trong cơ sở dữ liệu, họ có thể chỉ cần tìm mật khẩu văn bản thuần tuý tương ứng trong danh sách từ gốc mà họ đã băm. Những kẻ tấn công có kinh nghiệm sẽ sử dụng danh sách từ rất lớn kết hợp với phần mềm mạnh mẽ để chạy qua hàng triệu khả năng mật khẩu một giây.
Một phương pháp tấn công khác cố gắng khai thác thuật toán băm bằng cách tạo ra một va chạm băm. Một va chạm băm xảy ra khi hai bộ dữ liệu khác nhau giải quyết cùng một băm, và trong khi điều này là hiếm, nó có thể gây chết người. Điều này sẽ cho phép kẻ tấn công tạo chuỗi ký tự không phải là mật khẩu của bạn, nhưng vẫn có thể đăng nhập vào tài khoản của bạn vì nó tạo ra cùng một mã băm.
Phần kết luận
Các thuật toán băm đang ngày càng nâng cao. Các nhà toán học và các nhà khoa học máy tính liên tục thiết kế các thuật toán băm mật mã với xác suất thấp hơn của va chạm. Tuy nhiên, điều quan trọng cần nhớ là dù thuật toán băm có mạnh đến mức nào, nó luôn có thể bị bẻ khóa bằng cách sử dụng một cuộc tấn công vũ lực. Tin tốt là bạn có thể dễ dàng bảo vệ chống lại các cuộc tấn công này bằng cách đơn giản tuân theo chính sách mật khẩu thực hành tốt nhất.
- Kích thước không quan trọng - mật khẩu ban đầu càng ít khả năng nó sẽ xuất hiện trên danh sách từ
- Không thể dự đoán được - tránh sử dụng các từ như “mật khẩu” và “myname123”
- Sử dụng hỗn hợp các ký tự đặc biệt, số, chữ cái viết hoa và chữ thường
Bạn nghĩ gì về băm? Chia sẻ quan điểm của bạn trong phần bình luận bên dưới.
Hình ảnh tín dụng: Lúp Glass trực tuyến vân tay bởiBigStockPhot