Bẻ khóa mật khẩu từ A đến Z
Bẻ khóa mật khẩu và truy cập vào dữ liệu bị mã hóa là chủ đề nhận được rất nhiều sự quan tâm, đóng vai trò quan trọng trong công tác điều tra, phá án và đấu tranh phòng, chống tội phạm, đặc biệt là tội phạm sử dụng công nghệ cao. Trong bài viết này, các chuyên gia pháp y kỹ thuật số điện tử của HTI Services với hơn 15 năm kinh nghiệm sẽ mang đến cho bạn cái nhìn toàn diện về bẻ khóa mật khẩu, các vấn đề về kỹ thuật, công nghệ cũng như pháp lý. Hãy cùng tìm hiểu nhé!
Tại sao lại tấn công vào mật khẩu (mà không phải mã hóa)?
Lựa chọn tấn công vào mật khẩu thay vì mã hóa bởi vì các phương pháp mã hóa hiện nay đều vô cùng kiên cố và không thể bị phá trên thực tế do độ phức tạp và độ dài của khóa. Thuật toán AES-256 tiêu chuẩn của ngành được dùng trong hầu hết tất cả các định dạng sử dụng khóa 256-bit, tạo ra một số lượng khổng lồ các tổ hợp có thể xảy ra và tốn một khoảng thời gian dài đến mức không khả thi chỉ để bẻ khóa thông qua brute-force. Thay vào đó, mật khẩu là điểm đầu vào của mã hóa này và thường sẽ yếu hơn rất nhiều do giới hạn của con người trong việc ghi nhớ các chuỗi phức tạp. Vì vậy, nhắm vào mật khẩu sẽ thiết thực và hiệu quả hơn là cố gắng phá giải thuật toán mã hóa.
“Mã hóa mạnh” là gì?
Mã hóa mạnh là loại mã hóa mà không thể bị phá trong một khoảng thời gian hợp lý bằng cách tấn công trực tiếp vào khóa mã hóa. Một phương pháp mã hóa mạnh không được có các lỗ hổng cho phép kẻ tấn công giảm đáng kể thời gian để phá nó. Để giải mã dữ liệu được bảo vệ bởi mã hóa mạnh, cần phải có mật khẩu hoặc có khóa mã hóa gốc. Thuật toán mã hóa AES với khóa 256-bit được coi là an toàn vì chưa có lỗ hổng nào được tìm thấy trong suốt nhiều năm được sử dụng. Do vậy, nếu mã hóa mạnh được sử dụng, tấn công vào mật khẩu là cách duy nhất để truy cập vào dữ liệu được mã hóa.
Liệu tính toán lượng tử có thể thay đổi điều này?
Tính toán lượng tử có tiềm năng để thay đổi bối cảnh hiện có về bẻ khóa mã hóa. Trong khi các phương pháp mã hóa cổ điển cực kỳ an toàn trước các cuộc tấn công bằng các phương pháp tính toán truyền thống, tính toán lượng tử cơ bản có thể xử lý thông tin theo một cách khác. Thuật toán Grover’s mà các máy tính lượng tử có thể sử dụng sẽ giảm độ dài khóa hữu hiệu của AES-256 còn 128 bits, giảm đáng kể thời gian cần thiết để brute-force khóa mã hóa, cho dù ngay cả với khóa 128-bit thì vẫn không thể bị phá trên thực tế. Tuy nhiên, AES-256 vẫn được coi là an toàn trước các cuộc tấn công lượng tử vì sẽ cần đến một máy tính lượng tử với khả năng tính toán vượt xa những gì khả thi hiện nay. Do vậy, mặc dù tính toán lượng tử đặt ra các thách thức trong tương lai (hoặc cơ hội, tùy vào việc bạn ở bên nào), nó vẫn cơ bản chưa thay đổi việc tấn công vào mật khẩu.
Liệu phá khóa mật khẩu có tính là hợp pháp?
Câu trả lời ngắn gọn sẽ là “tùy thuộc”. Những quốc gia và vùng lãnh thổ khác nhau sẽ có những quy định pháp lý khác nhau. Ở một số quốc gia, nghi phạm phải tiết lộ mật khẩu khi bị thẩm vấn bởi chính quyền (Chào mừng đến Pháp, quốc gia của sự tự do). Rõ ràng là không ai có thể cản chúng ta phá mật khẩu bị mất của mình; tuy nhiên, nếu mật khẩu này bảo vệ quyền truy cập vào dữ liệu của bạn trên một số dịch vụ trực tuyến, thì việc tài khoản đó có phải của bạn hay không không quan trọng vì bạn không thể tấn công nó một cách hợp pháp. Nói cách khác, phá mật khẩu sẽ hoàn toàn hợp pháp nếu sử dụng với các dữ liệu cục bộ của chính người thực hiện hoặc là có sự cho phép từ chủ sở hữu hợp pháp, hoặc nếu người thực hiện làm việc cho các cơ quan pháp lý và tuân thủ quy định.
Một triệu mật khẩu trên một giây có phải là nhiều?
Ngày nay chúng ta đã có công cụ để nâng cao năng lực tính toán của các GPU cùng với các bộ xử lý đa lõi để tối đa hóa tốc độ tấn công mật khẩu. Điểm quy chuẩn thể hiện tốc độ khôi phục trên nhiều cấu hình phần cứng với nhiều định dạng mã hóa khác nhau. Những giá trị này dao động trong một phạm vi rất rộng; với một số định dạng, ngay cả với phần cứng tốt nhất cũng chỉ có thể thử một vài mật khẩu mỗi giây, trong khi với các định dạng khác, tốc độ có thể lên đến vài triệu mật khẩu mỗi giây.
Vậy, một triệu mật khẩu mỗi giây là ít hay nhiều? Vấn đề là đây không phải câu hỏi đúng. Câu hỏi đúng ở đây phải là: “Loại mật khẩu nào có thể bị phá trong một khoảng thời gian nhất định với tốc độ một triệu mật khẩu mỗi giây?” hoặc là: “Cần tốn bao lâu để bẻ khóa một mật khẩu nhất định với tốc độ một triệu mật khẩu mỗi giây?” Để trả lời các câu hỏi trên, một số công thức đã được công bố sẽ cho phép ta tính toán được câu trả lời:
The ABC’s of Password Cracking: The True Meaning of Speed | ElcomSoft blog
Trong kịch bản đầu tiên, một tình huống đặc trưng khi mà cả độ dài và độ phức tạp của mật khẩu đều không được biết trước nhưng chỉ có một khoảng thời gian nhất định để thực hiện tấn công. Với kịch bản thứ hai, giới hạn lại nằm ở độ dài và độ phức tạp tối đa của mật khẩu (ví dụ như mật khẩu chỉ có số, chữ hoa, chữ thường cộng thêm một tập nhỏ các kí tự đặc biệt), với yêu cầu tính toán khoảng thời gian cần thiết để thử tất cả các tổ hợp khả thi.
Ví dụ, nếu một mật khẩu nhất định có thể bị tấn công với tốc độ 10 triệu mật khẩu mỗi giây, sẽ chỉ tốn không đến 5 phút để khôi phục một mật khẩu chỉ chứa 5 ký tự chữ hoa và chữ thường. Nếu tốc độ là 100 mật khẩu mỗi giây và mật khẩu có ít nhất 7 ký tự và có cả các ký tự từ bộ mở rộng ký tự, thời gian tấn công tối đa sẽ tăng đến khoảng 700 tỷ giây hoặc là khoảng 22000 năm. Bạn có thể tìm các công thức tính thời gian để tấn công và nhiều thông tin hữu dụng khác sẽ có trong hướng dẫn sau đây:
May the [Brute] Force Be with You! | ElcomSoft blog
Làm thế nào để kiểm chuẩn tốc độ khôi phục mật khẩu?
Kiểm chuẩn khôi phục mật khẩu sẽ phức tạp hơn một chút so với những gì một biểu đồ có thể hiển thị. Các thực nghiệm luôn được thực hiện với phương pháp tấn công full brute-force với một độ dài cố định và một bộ các ký tự giới hạn cụ thể. Tấn công brute-force cho phép đo được tốc độ tấn công thuần túy lên một mô hình GPU hoặc CPU cụ thể. Các phương pháp tấn công khác, như là tấn công mặt nạ, tấn công từ điển hoặc các cuộc tấn công hybrid phức tạp hơn, cần phải có thêm các tính toán bổ sung có thể giới hạn việc sử dụng card đồ họa. Cuối cùng, việc đo lường không thể bắt đầu ngay lập tức. Bạn nên chờ khoảng vài phút để cuộc tấn công đạt tốc độ “ổn định”. Các công cụ bẻ khoá mật khẩu cần một khoảng thời gian để có thể tải và biên dịch các code cần thiết vào GPU.
Tại sao lại cần card màn hình?
Hầu hết các phương pháp bảo vệ mật khẩu đều dựa vào nhiều vòng lặp băm để làm chậm các cuộc tấn công brute-force. Kể cả bộ xử lý nhanh nhất cũng bị nghẽn khi cố gắng để phá một mật khẩu đủ mạnh. Tận dụng lõi GPU thay vì CPU có thể giúp cho việc bẻ khóa mật khẩu nhanh hơn. Kể cả GPU tích hợp chậm nhất với công suất tỏa nhiệt chỉ khoảng vài watt có thể dễ dàng cho ra hiệu suất tương đương với một CPU 190W. Các GPU cao cấp như là NIVIDIA RTX 4080 có thể phá mật khẩu nhanh hơn đến 500 lần so với một CPU Intel Core i7 thông thường, trong khi các card màn hình tầm trung có thể cung cấp tốc độ tăng lên đến 250 lần.
Việc tăng tốc GPU cũng giảm tải các tính toán chuyên sâu từ CPU máy tính sang cho các Đơn vị Tính toán (CU) của card màn hình. Một card màn hình chuyên dụng có thể cho ra tốc độ vượt xa một CPU cao cấp. Kể cả một GPU tích hợp (loại được tích hợp vào CPU) cũng có khả năng đạt đến hoặc vượt qua được hiệu suất của bộ xử lý trung tâm trong khi tiêu thụ ít điện năng hơn rất nhiều và tản ra nhiệt lượng chỉ bằng một phần của CPU có tải tương ứng.
Thông thường, kể cả nhiều card đồ họa hiệu năng cao cũng có thể không đủ để thành công khôi phục mật khẩu trong khoảng thời gian hợp lý. Những lúc như vậy, điện toán phân tán đóng vai trò như giải pháp cứu cánh. Hiệu quả của điện toán phân tán so với việc sử dụng GPU phụ thuộc rất nhiều vào định dạng dữ liệu và thuật toán băm. Một số thuật toán không thể được tăng tốc trên GPU khiến cho điện toán phân tán là lựa chọn duy nhất để tăng tốc độ tấn công.
Tuy nhiên, dữ liệu có thể được tăng tốc trên GPU, kể cả một card đồ họa cơ bản cũng có thể hoạt động tốt hơn cả một mạng lưới máy tính lớn mà không được tăng tốc. Nhiều máy tính được trang bị GPU mạnh sẽ thì có thể mang lại lợi thế lớn so với một máy tính đơn lẻ.
Vậy nên, tuy là hệ thống mạng phân tán thường tốt hơn nhưng mỗi máy trong mạng nên trang bị GPU mạnh để tối ưu hiệu năng.
Xem thêm: HỆ THỐNG HBS – GIẢI PHÁP TỐI ƯU CHO VIỆC KHÔI PHỤC & GIẢI MÃ MẬT KHẨU
Liệu card màn hình có thay thế CPU?
Điều này khó có thể xảy ra. GPU sẽ không thay thế được cho CPU bởi sự khác biệt cơ bản về kiến trúc của chúng. GPU chuyên biệt trong việc song song hóa một công việc trên hàng ngàn luồng một lúc khiến cho chúng cực kỳ hiệu quả trong các tác vụ như bẻ khóa mật khẩu. Tuy nhiên, CPU sẽ thích hợp hơn cho các tác vụ hàng ngày vì lõi của chúng có thể hoạt động một cách hoàn toàn độc lập. Khả năng độc lập này cho phép CPU có thể xử lý cùng lúc nhiều tác vụ, trong khi mỗi một lõi GPU chậm hơn nhiều so với lõi đơn lẻ của CPU và chỉ có thể thực hiện cùng một hoạt động đồng thời. Do vậy, mặc dù GPU nhanh hơn trong các tác vụ song song cụ thể, CPU là cần thiết cho các tác vụ đa dạng và độc lập trong tính toán thường ngày.
Mã hóa hoạt động ra sao? Sự khác biệt giữa mật khẩu và khóa mã hóa
Mật khẩu được dùng để chống truy cập vào tài liệu, cơ sở dữ liệu, kho lưu trữ nén, ổ đĩa mã hóa và nhiều dữ liệu khác. Khi nói đến mã hóa, mật khẩu thường sẽ không được lưu trữ, dù được mã hóa hay không. Thay vào đó, mật khẩu được “băm” hoặc biến đổi bởi một hàm một chiều. Kết quả của quá trình biến đổi nếu được thực hiện chính xác không thể bị đảo ngược và mật khẩu nguyên bản không thể được “giải mã” từ kết quả của hàm băm.
Mật khẩu băm thô hiếm khi được dùng trực tiếp làm khóa mã hóa. Ví dụ, nhiều công cụ mã hóa ổ đĩa có thể dùng mật khẩu để mã hóa một thứ gọi là “protector”. Protector sẽ dùng để bảo vệ “media encryption key” – thứ mà cuối cùng sẽ dùng để mã hoá và giải mã dữ liệu. Đáng chú ý là có các loại bảo vệ không sử dụng mật khẩu (thay vào đó, chúng có thể sử dụng TPM, khóa khôi phục hoặc ổ đĩa flash USB để mở khóa đĩa). Mật khẩu là thứ duy nhất có thể bị phá vỡ bằng cách thử nhiều kết hợp khác nhau.
Thông thường, mật khẩu được băm bằng nhiều vòng của hàm biến đổi một chiều, sau đó được lưu trữ trong tiêu đề của tệp, cho phép xác minh mật khẩu mà không thực sự giải mã nội dung được mã hóa. Bản thân khóa mã hóa khác với hàm băm đã lưu, nhưng các cuộc tấn công mật khẩu lại được thực hiện đối với hàm băm này. Nếu tìm thấy mật khẩu chính xác, khóa mã hóa sẽ được tính toán riêng. Đôi khi, hàm băm mật khẩu không được lưu trữ trong tiêu đề của tệp, đặt ra yêu cầu phải giải mã một phần hoặc toàn bộ dữ liệu để xác minh mật khẩu, điều này làm chậm đáng kể cuộc tấn công. Tốc độ của một cuộc tấn công như vậy phụ thuộc vào kích thước của dữ liệu cần giải mã. Một định dạng phổ biến sử dụng phương pháp này là lưu trữ RAR4. Phiên bản sau đó, RAR5, không còn sử dụng phương pháp này nữa.
Loại tấn công nào đang khả dụng?
Có nhiều phương pháp để có thể khôi phục mật khẩu nguyên bản trải dài từ brute-force đến các cuộc tấn công phức tạp dựa theo các quy tắc. Trên lý thuyết, một cuộc tấn công brute-force sẽ thử tất cả các tổ hợp mật khẩu khả thi đến một độ dài nhất định, nhưng trong thực nghiệm thì thường bị giới hạn ở một tập hợp con các kí tự (như là chữ hoa và chữ thường của hệ Latinh, số và một vài kí tự đặc biệt). Với bộ mã Unicode đầy đủ có 149186 kí tự, chạy một cuộc tấn công brute-force trên toàn bộ bộ kí tự là điều bất khả thi. Kể cả một mật khẩu chỉ với 3 ký tự được tạo thành từ toàn bộ bộ mã Unicode cũng sẽ tiêu tốn một khoảng thời gian dài không tưởng. Trên thực tế, mật khẩu sẽ hiếm khi bao gồm các ký tự từ các bộ đa dạng và mở rộng như vậy nên là tấn công brute-force thường chỉ giới hạn cho một số bảng chữ cái.
Tấn công brute-force là loại nhanh nhất, tuy nhiên do khối lượng lớn mật khẩu cần phải thử trong các cuộc tấn công như vậy, brute-force thường sẽ là lựa chọn cuối cùng sau khi mọi lựa chọn khác đều đã không thành công. Do brute-force cực kì kém hiệu quả với các mật khẩu dài, các loại tấn công khác đã được tạo ra nhằm giảm số lượng mật khẩu cần phải thử.
Trong điều tra kỹ thuật số điện tử, bẻ khóa mật khẩu là kỹ thuật phức tạp không chỉ yêu cầu các điều tra viên có hiểu biết sâu sắc về mã hóa mà còn cần liên tục cập nhật những thay đổi trên thị trường công nghệ. Hiểu rõ bản chất của vấn đề cũng như lựa chọn phương pháp đúng đắn và công cụ hỗ trợ phù hợp sẽ giúp đẩy nhanh hiệu quả quá trình điều tra phá án. HTI Services sẽ tiếp tục cập nhật những kiến thức mới trong lĩnh vực pháp y kỹ thuật số điện tử ở những bài viết tiếp theo.