Những bài học từ việc dò mật khẩu của dịch vụ Ashley Madison

15:47 | 29/09/2015

Khi tin tặc công bố dữ liệu về mật khẩu của hơn 36 triệu tài khoản Ashley Madison (trang web dành cho người ngoại tình), chuyên gia phá mã Jeremi Gosney không quan tâm đến việc dùng cụm máy tính lớn chuyên dùng để dò tìm mật khẩu, vì biết rằng chúng được bảo vệ bởi bcrypt – một thuật toán rất mạnh.

Gosney ước tính, một cụm máy tính chuyên dụng phải mất nhiều năm để đối chiếu dữ liệu đó với 10 ngàn mật khẩu thông dụng nhất. Nhưng chuyên gia bảo mật Dean Pierce vẫn quyết định thử nghiệm với những mật khẩu đó và kết quả thu được đã xác nhận đánh giá của Gosney hoàn toàn có lý. Sau 5 ngày liên tục dò mật khẩu tự động trên một máy tính được thiết kế chuyên biệt có năng lực xử lý tương đối mạnh, Dean Pierce chỉ tìm ra 4.000 mật khẩu gốc. Những mật khẩu tìm được trong số 6 triệu bản ghi đầu tiên trong cơ sở dữ liệu của Ashley Madison đều yếu – giống như các vụ lộ dữ liệu khác. Danh sách 10 mật khẩu hàng đầu trong số đó như sau:



Danh sách mật khẩu mà Pierce sử dụng để dò là 14,3 triệu mật khẩu thu được từ vụ hack trang web RockYou năm 2009. Dù danh sách này khá lớn nhưng các chuyên gia phá mã thường dùng các danh sách lớn hơn và áp các quy tắc biến đổi, ví dụ như chuyển chữ a thành ký tự @ - để mở rộng danh sách. Nếu Pierce cũng làm như vậy thì có lẽ danh sách những mật khẩu hàng đầu mà ông dò được có thể sẽ khác. 

Sau khi tải xuống tệp nén có dung lượng 10GB của Ashley Madison mà tin tặc công bố trên mạng, Pierce trích xuất các giá trị băm của mật khẩu từ cơ sở dữ liệu MySQL để lấy ra một tệp 2,1GB với 36 triệu dòng rồi chép tệp đó vào một máy tính có 4 card đồ họa AMD Radeon R9 290 với phần mềm PiMP, chuyên dùng để “đào” Bitcoin. Để tăng tốc, ông cài thêm phiên bản mới nhất của oclHashcat – phần mềm giúp tự động hóa các tác vụ dò mật khẩu trên GPU. Do máy tính chỉ có 1GB RAM nên lần chạy đầu tiên báo lỗi không đủ bộ nhớ. Pierce đành phải chấp nhận lựa chọn xử lý 6 triệu giá trị băm trong phần đầu danh sách. Sau 5 ngày liên tục, ông dò được 4.007 mật khẩu yếu nhất (chỉ chiếm 0,0668% trong 6 triệu mật khẩu định xử lý).

Ashley Madison dùng thuật toán bcrypt với “chi phí tính toán” ở mức 12, nghĩa là mỗi mật khẩu được xử lý 212 (hay 4.096) vòng. Ngoài ra, bcrypt còn tự động nối thêm một giá trị ngẫu nhiên, duy nhất (salt). vào mỗi mật khẩu để tăng độ an toàn. Gosney cho rằng, một trong những lý do chính nên dùng bcrypt là nó có khả năng chống lại các biện pháp tăng tốc quá trình dò mật khẩu. Với các thuật toán thông thường, tốc độ chạy trên GPU sẽ nhanh hơn 100 lần so với tốc độ chạy trên CPU. Riêng với bcrypt, tốc độ trên GPU tương đương hoặc thậm chí thấp hơn tốc độ trên CPU.

Với tất cả những yếu tố đó, bcrypt khiến cho việc dò mật khẩu của Ashley Madison trở nên cực rất khó khăn. Máy tính của Pierce chỉ có thể thử 156 khả năng mỗi giây.

Pierce quyết định từ bỏ việc dò mật khẩu sau khi xử lý được hơn 4000 bản ghi. Ông ước tính rằng để đối chiếu 6 triệu bản ghi với danh sách mật khẩu RockYou, chiếc máy tính nhỏ của mình phải chạy đến 19.493 năm. Và với toàn bộ 36 triệu bản ghi của Ashley Madison, thời gian sẽ lên đến 116.958 năm. Ngay cả với siêu máy tính của Sagitta HPC - công ty do Gosney sáng lập, thời gian có thể ngắn hơn nhưng chỉ riêng chi phí bỏ ra cho tiền điện cũng sẽ là quá lớn.

Ngoài cảnh báo tới những người dùng mật khẩu dễ đoán, thử nghiệm của Pierce cho chúng ta bài học khá rõ ràng về việc lưu trữ mật khẩu. Ngay cả những người nghiệp dư nhất cũng hiểu rằng không nên lưu bản rõ hay các giá trị mã hóa có thể đảo ngược của mật khẩu. Tuy nhiên, không phải thuật toán băm nào cũng có thể dùng để xử lý mật khẩu của người dùng. 

Không giống như thuật toán bcrypt siêu chậm, MD5, SHA1 và các thuật toán băm khác được thiết kế để dùng được trên những loại máy có phần cứng hạn chế. Điều đó tốt cho các nhà sản xuất thiết bị định tuyến nhưng lại tốt hơn cho tin tặc. Nếu Ashley Madison dùng MD5, máy tính của Pierce có thể thử được 11 triệu khả năng mỗi giây và có thể dò được toàn bộ 36 triệu mật khẩu trong 3,7 năm trong trường hợp mật khẩu được băm cùng với giá trị ngẫu nhiên. Nếu mật khẩu được băm bằng thuật toán MD5 mà không dùng thêm salt, thời gian để dò 36 triệu mật khẩu sẽ giảm xuống còn 3 giây! Nếu Ashley Madison dùng SHA1, máy tính của Pierce có thể thử được 7 triệu khả năng mỗi giây và thời gian để dò toàn bộ 36 triêu mật khẩu sẽ là 6 năm hoặc 5 giây (tùy theo việc những người bảo vệ có dùng salt khi xử lý mật khẩu hay không). Thời gian đó chỉ ước tính dựa trên việc đối chiếu với danh sách mật khẩu RockYou.

Cần nhớ là phải áp dụng phòng thủ nhiều lớp, nhưng nếu mọi biện pháp khác đều đã thất bại thì một thuật toán bảo vệ mật khẩu vững chắc như bcrypt sẽ giúp ngăn chặn việc lộ toàn bộ mật khẩu. Điều đó trở nên rõ ràng hơn sau khi nhóm phá mã CynoSure Prime dò được hơn 11 triệu (11.279.199) mật khẩu của người dùng Ashley Madison chỉ trong vòng 10 ngày. 

Sau khi rà soát hàng ngàn dòng lệnh trong mã nguồn bị tin tặc công bố, cùng với các dữ liệu khác của Ashley Madison, nhóm CynoSure Prime đã phát hiện ra những điểm yếu quan trọng: có khoảng 15,26 triệu tài khoản mà mật khẩu được băm bằng MD5 – tuy vẫn đối chiếu thêm với giá trị băm của thuật toán bcrypt. Hơn thế nữa, các lập trình viên của Ashley Madison còn chuyển cả tên người dùng và mật khẩu thành chữ thường trước khi xử lý. Điều đó khiến cho số khả năng cần dò giảm đi khá nhiều. 

Chưa rõ tại sao Ashley Madison lại áp dụng cơ chế kiểm tra mật khẩu kỳ lạ đó với một số tài khoản. Một số người cho rằng đó là cơ chế cũ, chỉ được thay đổi sau khi người dùng đăng nhập và có nhiều người bỏ quên tài khoản trong một thời gian dài không quay lại sử dụng dịch vụ. Bài học rút ra ở đây là không nên bảo mật bằng cách che giấu thuật toán, khi mã nguồn bị lộ sẽ khiến hệ thống sụp đổ hoàn toàn. Và nếu đã chót sử dụng các thuật toán lạc hậu, cần thay đổi một cách triệt để: chỉ nên duy trì tính tương thích ngược trong một thời gian ngắn, thông báo cho khách hàng và đóng tài khoản/xóa giá trị băm của mật khẩu trong cơ sở dữ liệu.