Bạn có muốn biết cần phải thử mã khóa bao lâu không? Dưới đây sẽ giải thích rõ nguyên lý của ba phương pháp: “phá mã một cách bạo lực”, “tấn công từ cơ sở dữ liệu”, và “tấn công bằng mật mã”. Sau đó, sẽ giải thích tại sao các định dạng tệp tin khác nhau lại có độ khó khác nhau nhiều như vậy, cũng như sự chênh lệch về khả năng xử lý của card đồ họa và CPU.
| Mục so sánh | Tự tải phần mềm crack | giao cho chúng tôi |
|---|---|---|
| Sức mạnh tính toán | Một máy tính gia đình, trong hầu hết các trường hợp, chỉ có card đồ họa tích hợp | Nhiều máy giải mã GPU chạy cùng một tác vụ cùng một lúc |
| Từ điển mật khẩu | Tôi đã tìm thấy hàng trăm nghìn mục ngẫu nhiên trên Internet, trong đó có rất nhiều lặp lại và không hợp lệ | Từ điển được tích lũy và làm sạch trong nhiều năm được phân loại theo thói quen sử dụng |
| Chiến lược crack | Tôi sẽ chỉ thử từng cái một từ đầu đến cuối | Đầu tiên là từ điển, sau đó là mặt nạ, sau đó là toàn bộ, các chiến lược đa cấp được thúc đẩy từng lớp một |
| Bạn có thể tiếp tục chạy được không | Máy tính phải luôn bật, tắt hoặc khởi động lại sẽ lãng phí mọi nỗ lực trước đó | Chạy 7×24 trên máy chủ, bạn sẽ không bị ảnh hưởng ngay cả khi tắt máy tính |
| Khả năng cởi mở | Tất cả phụ thuộc vào may mắn, mật khẩu dài hơn một chút về cơ bản sẽ không có cơ hội | Trước tiên ghi đè các tổ hợp có khả năng cao nhất, mật khẩu ngắn thường có kết quả trong vòng vài chục phút |
| Chi phí bắt đầu | Không ai quan tâm đến việc cài đặt trình điều khiển, cấu hình dòng lệnh và báo lỗi | Chỉ cần tải file lên, kết quả sẽ được thông báo cho bạn |
Bản chất của việc tìm lại mật khẩu là việc liên tục thử nghiệm qua các tổ hợp có thể xảy ra, cho đến khi tìm được tổ hợp chính xác. Càng thử nhanh, số lượng tổ hợp càng ít, thì khả năng thành công càng cao; ngược lại, càng có nhiều tổ hợp, và mỗi lần thử có chi phí cao hơn, thì hy vọng tìm lại mật khẩu càng mong manh. Chiếc máy tính này giúp đánh giá cụ thể “bao nhiêu lần cần thử” và “mất bao lâu để thử mỗi lần”, giúp bạn có cái nhìn trực quan về mức độ an toàn của tài liệu của mình, cũng như hiểu tại sao một số tài liệu có thể được mở trong vài phút, trong khi một số tài liệu thì không thể mở được ngay cả khi máy tính bị hỏng.
Phương pháp phá khóa bằng lực lượng con người (Brute Force) không cần dựa vào bất kỳ kiến thức nào trước đó, mà chỉ cần thử tất cả các tổ hợp có thể với bộ ký tự và độ dài của chúng. Ví dụ, một mật khẩu 8 chữ số thuần túy chỉ có một tỷ tổ hợp khác nhau, trong khi mật khẩu gồm chữ cái in hoa/viết thường, số và ký hiệu thì có hơn 6×10¹⁴ tổ hợp khác nhau. Phương pháp này sẽ thử từ aaaaaaaa cho đến tổ hợp cuối cùng. Điểm đặc biệt của phương pháp này là “dễ nhất nhưng cũng chính xác nhất” – miễn là có đủ thời gian, về mặt lý thuyết thì chắc chắn có thể tìm ra mật khẩu đó. Tuy nhiên, chi phí là số lượng tổ hợp tăng lên theo cấp số nhân với độ dài và bộ ký tự. Một mật khẩu dài một chút thì có lẽ cần nhiều thế hệ mới có thể thử hết được.
Hầu hết mọi người không sử dụng các ký tự ngẫu nhiên làm mật khẩu, mà thường sử dụng ngày sinh, tên người dùng, chuỗi ký tự trên bàn phím (qwerty) hoặc các từ ngữ phổ biến. Các cuộc tấn công dữ liệu sẽ sắp xếp các mật khẩu phổ biến này thành bảng từ vựng, và cố gắng thử từng mật khẩu một, thường chỉ cần vài phút là có thể tìm ra mật khẩu yếu. Phương pháp này hiệu quả hơn nhiều so với việc sử dụng phương pháp tấn công lực lượng một cách thuần túy, nhưng điều kiện tiên quyết là mật khẩu thực sự nằm trong bảng từ vựng; nếu gặp phải mật khẩu ngẫu nhiên mạnh thì sẽ không thể tìm ra được mật khẩu nào cả. Chúng tôi đã tích lũy và xử lý các bảng từ vựng mật khẩu trong nhiều năm, chính để nâng cao tỷ lệ thành công của phương pháp này.
Các cuộc tấn công sử dụng “mã khóa” là phiên bản thông minh của việc phá mật khẩu bằng cách dùng sức mạnh để tìm ra câu trả lời: Nếu bạn nhớ được các điều kiện như “mật khẩu có 8 ký tự, bắt đầu bằng chữ in hoa, và cuối cùng là 2024”, bạn có thể cung cấp những điều kiện này cho chương trình phá mật khẩu, để nó chỉ tạo ra những bộ mã đáp ứng các điều kiện đó. Ban đầu có tổng cộng 6×10¹⁴ bộ mã khả thi, nhưng sau khi áp dụng các điều kiện này, số lượng bộ mã khả thi có thể giảm xuống chỉ còn vài trăm triệu bộ, và thời gian cần thiết để tìm ra mật khẩu cũng giảm từ “tuổi thọ của vũ trụ” xuống chỉ còn “vài giờ”. Đó cũng chính là lý do tại sao khi gửi yêu cầu tìm mật khẩu, việc cung cấp thêm một số thông tin mà bạn nhớ được sẽ giúp tăng đáng kể tỷ lệ thành công.
Tệp tin không so sánh trực tiếp với mật khẩu, mà là so sánh với “giá trị hash” được tạo ra từ mật khẩu. Mỗi lần thử một mật khẩu, chương trình sẽ thực hiện phép tính hash trước. Số lần lặp lại càng nhiều thì tốc độ càng chậm. Định dạng cũ hầu như không có biện pháp bảo vệ nào: Office 97 sử dụng MD5/RC4, card đồ họa có thể thử hàng triệu lần mỗi giây; trong khi Office 2013 đã áp dụng phương pháp PBKDF2 với khoảng 100.000 lần lặp lại mỗi giây, chỉ có thể thử khoảng 1.000 lần mỗi giây, tức là chậm gấp 10.000 lần. RC4 trong PDF rất yếu, AES thì hơi mạnh hơn; RAR5 có khoảng 30.000 lần lặp lại, chậm hơn RAR3 hàng chục lần; 7Z có tới hơn 500.000 lần lặp lại, là một trong những định dạng khó nhất. Một mật khẩu giống nhau, trên máy của người khác có thể được giải mã trong vài phút, còn trên máy của bạn thì cần vài ngày mới có kết quả, lý do chính nằm ở đây.
Phép tính hash là một ví dụ điển hình của loại phép tính “lặp lại nhiều lần, nhưng mỗi lần đều độc lập”, và hoàn toàn phù hợp với cấu trúc song song của card đồ họa. Một card đồ họa game phổ thông có hàng nghìn bộ vi xử lý, có thể thực hiện tính toán hàng triệu giá trị hash cùng lúc, với tốc độ cao gấp hàng chục đến hàng trăm lần so với CPU. Các máy tính thông thường hoặc chỉ có card đồ họa tích hợp, hoặc phải để CPU đảm nhận toàn bộ công việc, vì vậy tốc độ của chúng rất chậm. Chúng tôi sử dụng nhiều máy chủ GPU để thực hiện cùng một nhiệm vụ song song, kết hợp với các chiến lược sử dụng từ điển và mã che khuất để thu hẹp phạm vi xử lý. Đây chính là sự khác biệt giữa việc tự mình xử lý trong vài tháng và việc giao nhiệm vụ cho chúng tôi để thu được kết quả trong vài phút.
Vì vậy, mỗi khi độ dài mật khẩu tăng thêm một chữ, hoặc tập hợp ký tự được mở rộng thêm một cấp độ, việc tìm lại mật khẩu sẽ trở nên khó khăn hơn nhiều. Ngược lại, nếu sử dụng định dạng tệp tin nhanh hơn hoặc ghi nhớ nhiều thông tin liên quan đến mật khẩu hơn, thì thời gian tìm kiếm sẽ được rút ngắn đáng kể. Chiếc máy tính trên đã tính toán các yếu tố này một cách chi tiết – chỉ cần nhập loại tệp tin và phạm vi mật khẩu của mình, bạn sẽ biết được thời gian cần thiết để hệ thống máy tính của mình và hệ thống của chúng tôi xử lý việc tìm kiếm mật khẩu. Nếu kết quả không như mong muốn, bạn có thể trực tiếp gửi tệp tin cho chúng tôi để chúng tôi thử xử lý.
Điều này phụ thuộc vào độ dài mật khẩu, tập hợp ký tự và phương pháp mã hóa tệp tin. Một mật khẩu gồm 8 chữ số có khoảng một triệu khả năng kết hợp khác nhau; máy tính thông thường có thể thử hết các khả năng này trong vài giờ đến vài ngày. Còn một mật khẩu gồm 12 chữ số, bao gồm cả chữ cái viết hoa, chữ cái viết thường, số và ký hiệu, thì số khả năng kết hợp sẽ vượt quá 10^24, và có thể cần hàng nghìn năm để tìm ra mật khẩu phù hợp. Bạn có thể sử dụng máy tính trực tuyến ở đây để tính toán ngay lập tức.
Phương pháp phá giải bằng bạo lực không cần dựa vào kiến thức trước đó, mà chỉ cần liệt kê tất cả các tổ hợp có thể xảy ra. Phương pháp tấn công từ điển thì ưu tiên sử dụng những mật khẩu yếu thường gặp, giúp tiết kiệm thời gian. Còn phương pháp tấn công bằng mã che giấu thì kết hợp với những thông tin đã biết (như số lượng bit, chữ cái đầu tiên trong mật khẩu), chỉ tạo ra những tổ hợp đáp ứng điều kiện cần thiết, từ đó thu hẹp phạm vi tìm kiếm một cách hiệu quả.
Vì số lần lặp lại mã hóa khác nhau giữa các định dạng khác nhau rất lớn. Office 97 sử dụng phương pháp mã hóa MD5/RC4 có độ mạnh thấp, và card đồ họa có thể thực hiện hàng triệu lần lặp lại mỗi giây; còn từ phiên bản Office 2013 trở đi, số lần lặp lại chỉ khoảng một trăm nghìn lần mỗi giây, tức là chậm hơn khoảng mười nghìn lần so với Office 97; còn định dạng 7Z thì có số lần lặp lại trên 500.000 lần, đặc biệt khó xử lý so với các định dạng thông thường khác.
Đưa tài liệu cho chúng tôi và chạy lô kết hợp có khả năng cao nhất trước, điều này có ý nghĩa hơn là tự mình chạy ở nhà trong vài ngày.