Hiểu về MD5: Nó Vẫn Thực Sự Hữu Ích Ở Đâu

Dành cho giáo viênDành cho học sinh
MD5 biến bất kỳ tệp hay văn bản nào thành một dấu vân tay ngắn dùng để phát hiện lỗi hỏng ngẫu nhiên. Tìm hiểu nó vẫn còn hữu ích ở đâu, và nơi nào tuyệt đối không nên dùng nó.

MD5 thực sự kiểm tra điều gì, nó vẫn còn hiệu quả ở đâu, và vì sao mật khẩu cùng việc chống giả mạo cần một giải pháp mạnh hơn.

Khi một tệp đã tải về cần được tin cậy, chứ không chỉ cần mở được

Một cô giáo tải một gói tài liệu lớn từ ổ đĩa dùng chung của trường, và phải thử vài lần tệp mới mở ra mà không báo lỗi. Một cán bộ phụ trách công nghệ thông tin nhận được tệp cài đặt phần mềm mới từ nhà cung cấp và cần xác nhận rằng nó khớp với tệp mà nhà cung cấp thực sự đã phát hành, chứ không phải một bản sao bị hỏng hay đã bị sửa đổi. Một lớp tin học đang tìm hiểu cách dữ liệu có thể được biểu diễn thành một dấu vân tay có độ dài cố định, và giáo viên muốn có một ví dụ để học sinh tự thử. Trong cả ba trường hợp, câu hỏi thật sự chỉ có một: làm sao bạn biết một tệp đúng là tệp mà nó tự nhận?

Đó chính là lý do tồn tại của một hàm băm như MD5. Nó không mã hóa bảo mật tệp, không giấu tệp đi và cũng không ngăn ai đó đọc nội dung. Việc nó làm là tạo ra từ nội dung tệp một dấu vân tay ngắn, có độ dài cố định. Chỉ cần một byte trong tệp thay đổi, dấu vân tay đó sẽ khác hoàn toàn. Vì vậy, so sánh dấu vân tay là cách nhanh để kiểm tra xem một lượt tải về đã hoàn tất đúng chưa, hoặc một tệp có khớp với phiên bản mà ai đó đang mong đợi hay không.

MD5 (viết tắt của Message-Digest Algorithm 5) là một trong những hàm băm lâu đời và được biết đến rộng rãi nhất. Đến nay nó vẫn được dùng cho các bước kiểm tra tính toàn vẹn cơ bản, dù đã nhiều năm rồi nó không còn được xem là an toàn cho mật khẩu hay cho mục đích bảo vệ bằng mật mã. Hiểu rõ MD5 thật sự làm gì, chỗ nào nó vẫn hữu ích và chỗ nào tuyệt đối không nên dùng sẽ giúp giáo viên, học sinh và bộ phận công nghệ thông tin của trường đưa ra quyết định tốt hơn về an toàn tệp.

Công cụ tạo hash MD5 biến văn bản nhập vào thành một dấu vân tay thập lục phân có độ dài cố định

MD5 thực sự làm gì

MD5 nhận đầu vào kích thước bất kỳ, từ một đoạn chữ ngắn, một đoạn văn đến cả tệp nặng vài gigabyte, rồi tạo ra đầu ra kích thước cố định: một giá trị 128 bit, hầu như luôn được viết thành chuỗi 32 ký tự gồm chữ cái và chữ số. Đầu ra này được gọi là giá trị băm, digest hoặc tổng kiểm tra.

Ba tính chất khiến điều này hữu ích:

  • Đầu ra luôn có cùng độ dài. Một tệp văn bản dài một dòng và một tệp PDF dày 500 trang đều cho ra giá trị băm MD5 gồm 32 ký tự.
  • Cùng một đầu vào luôn cho cùng một đầu ra. Băm một tệp hai lần trên hai máy tính khác nhau thì kết quả phải giống hệt nhau, miễn là bản thân tệp đó không khác gì nhau.
  • Một thay đổi rất nhỏ ở đầu vào sẽ tạo ra đầu ra hoàn toàn khác. Đổi một ký tự, một dấu cách hay một byte ở bất kỳ đâu trong tệp cũng làm thay đổi toàn bộ giá trị băm, chứ không chỉ một phần.

Chính tính chất cuối này khiến MD5 hữu ích cho việc đối chiếu. Nếu giáo viên công bố gói tài liệu kèm giá trị băm MD5, mà bản học sinh tải về cho ra giá trị khác, thì đã có gì đó thay đổi trong lúc tải, tệp bị thiếu, hoặc đó không phải cùng một tệp. Giá trị băm không cho biết cái gì đã thay đổi, nó chỉ cho biết là đã có thay đổi.

Bạn muốn tạo giá trị băm MD5 từ văn bản của mình hoặc từ thông tin của một tệp?

Dùng thử Công Cụ Tạo Hash MD5

MD5 vẫn thật sự hữu ích ở đâu

MD5 mang tiếng xấu trong các cuộc thảo luận về bảo mật, và trong một số bối cảnh nói ở phần dưới thì tiếng xấu đó là có cơ sở. Nhưng gạt bỏ nó hoàn toàn lại bỏ qua mất những chỗ mà nó vẫn làm tròn vai.

Trường hợp sử dụng MD5 có phải lựa chọn hợp lý không? Vì sao
Kiểm tra lượt tải về đã hoàn tất mà không hỏng Ở đây không ai cố tình làm giả một giá trị băm trùng khớp; mục tiêu chỉ là phát hiện những lỗi vô tình.
Xác nhận hai tệp là hai bản sao giống hệt nhau Một cách nhanh chóng để so sánh các tệp lớn mà không phải mở ra rồi dò từng byte bằng tay.
Lưu mật khẩu tài khoản của học sinh hoặc của nhân viên Không MD5 chạy nhanh và mặc định không có muối, khiến mật khẩu đã lưu dễ bị tấn công. Hãy dùng một thuật toán được thiết kế riêng cho việc đó (xem bên dưới).
Xác minh rằng một tệp không bị kẻ tấn công cố ý can thiệp Không Va chạm MD5 có thể được dàn dựng có chủ đích, nên một kẻ tấn công quyết tâm hoàn toàn có thể tạo ra tệp khác mà giá trị băm vẫn trùng.
Dạy khái niệm băm trong một tiết tin học MD5 đơn giản, nhanh và có nhiều tài liệu, nên nó là ví dụ đầu tiên dễ tiếp cận trước khi giới thiệu SHA-256.

Trường hợp 1: Kiểm tra gói tài liệu dùng chung đã tải về đúng chưa

Tình huống: Một tổ trưởng chuyên môn tải lên ổ đĩa dùng chung một gói lớn gồm phiếu bài tập, slide và bảng tiêu chí chấm để các giáo viên khác tải về trước khi vào học kỳ.

Vấn đề: Một số giáo viên phản ánh rằng có tệp trong thư mục không mở được, hoặc một tài liệu hiện ra bị cắt cụt. Không rõ là lượt tải về bị lỗi hay tệp gốc vốn đã hỏng sẵn.

Giải pháp: Tổ trưởng tạo giá trị băm MD5 của tệp ZIP gốc trước khi chia sẻ và gửi kèm giá trị đó trong tin nhắn. Giáo viên nào chưa yên tâm về bản tải của mình có thể tạo giá trị băm cho bản sao đó bằng Công Cụ Tạo Hash MD5 rồi so với giá trị của bản gốc.

Kết quả: Hai giá trị không khớp tức là bản tải về bị thiếu hoặc bị hỏng, nên giáo viên biết mình cần tải lại thay vì loay hoay xử lý một tệp vốn chưa bao giờ nguyên vẹn.

Trường hợp 2: Xác nhận tệp cài đặt khớp với bản gốc của nhà cung cấp

Tình huống: Cán bộ công nghệ thông tin của một trường nhận tệp cài đặt cho phần mềm dùng trong lớp, lấy từ trang web của nhà cung cấp hoặc từ một máy chủ sao lưu của bên thứ ba.

Vấn đề: Cài phần mềm chưa được kiểm chứng lên thiết bị của trường là việc có rủi ro, nếu tệp đã bị sửa đổi hoặc hỏng ở đâu đó trên quãng đường từ nhà cung cấp tới liên kết tải về.

Giải pháp: Nhiều nhà cung cấp công bố kèm theo bản tải về một tổng kiểm tra, khi thì bằng MD5, khi thì bằng một thuật toán mạnh hơn như SHA-256. Cán bộ phụ trách sẽ băm tệp vừa tải và đối chiếu với giá trị nhà cung cấp công bố trước khi cài lên máy của trường.

Kết quả: Một kết quả trùng khớp đã được xác nhận giúp yên tâm hơn rằng tệp không bị hỏng trên đường truyền. Nếu nhà cung cấp công bố cụ thể một tổng kiểm tra SHA-256 thay vì MD5 thì nên dùng thuật toán mạnh hơn đó, vì nó còn bảo vệ được trước hành vi can thiệp có chủ đích.

Trường hợp 3: Dạy khái niệm băm trong tiết tin học

Tình huống: Một giáo viên giới thiệu ý tưởng về hàm băm và muốn học sinh thấy tận mắt một thay đổi nhỏ trong văn bản tạo ra đầu ra khác hẳn như thế nào.

Vấn đề: Các khái niệm mật mã dễ trở nên trừu tượng nếu trong tiết học không có gì để học sinh tự tay thử.

Giải pháp: Học sinh băm một câu ngắn, sau đó đổi một chữ cái rồi băm lại, và đặt hai kết quả cạnh nhau để so sánh. Cách này cho thấy hiệu ứng thác đổ, khi một thay đổi rất nhỏ ở đầu vào tạo ra đầu ra trông chẳng liên quan gì, mà học sinh không cần hiểu các phép toán trên bit nằm bên dưới.

Kết quả: Học sinh hình thành cách hiểu trực quan và thực tế về việc băm trước khi chuyển sang tìm hiểu giá trị băm được dùng ra sao trong các hệ thống thật, kể cả những chỗ MD5 còn thiếu sót.

Vì sao MD5 không an toàn cho mật khẩu hay cho các mục đích trọng yếu về bảo mật

MD5 được thiết kế từ năm 1991, và ngành mật mã học đã tiến rất xa kể từ đó. Hai điểm yếu đã được ghi nhận đầy đủ giải thích vì sao không nên tin tưởng nó trong bất cứ việc gì nhạy cảm về bảo mật:

  • Tấn công va chạm. Các nhà nghiên cứu đã chứng minh rằng hai đầu vào khác nhau có thể được dựng lên có chủ đích để cho ra cùng một giá trị băm MD5. Nghĩa là kẻ tấn công có thể tạo tệp độc hại có giá trị băm trùng với tệp hợp lệ, làm mất ý nghĩa của việc đối chiếu khi có đối thủ thật sự.
  • Tốc độ quay lại chống lại chính sự an toàn của mật khẩu. MD5 được thiết kế để chạy nhanh, điều này tốt cho tổng kiểm tra nhưng lại dở khi lưu mật khẩu. Phần cứng hiện nay có thể thử hàng tỷ phép tính MD5 mỗi giây, khiến các giá trị băm MD5 của mật khẩu đã lưu tương đối dễ bị phá, nhất là khi mỗi mật khẩu không có muối riêng.

Với mật khẩu, nhà trường và lập trình viên nên dùng một thuật toán băm mật khẩu chuyên dụng như bcrypt, scrypt hoặc Argon2, vốn được làm cho chậm một cách có chủ ý và được thiết kế để chống lại việc dò đoán trên quy mô lớn. Còn để xác minh rằng một tệp không bị can thiệp có chủ đích, SHA-256 là chuẩn hiện nay. MD5 chỉ còn hợp lý trong việc phát hiện hỏng hóc vô tình, khi không có ai đang chủ động tìm cách làm giả một kết quả trùng khớp.

Cách tạo và kiểm tra một giá trị băm MD5

  1. Mở Công Cụ Tạo Hash MD5.
  2. Dán văn bản, hoặc thông tin tệp có liên quan, vào ô nhập liệu.
  3. Tạo giá trị băm và sao chép kết quả gồm 32 ký tự.
  4. Đối chiếu kết quả đó với giá trị băm do nguồn gốc cung cấp, chẳng hạn tổng kiểm tra mà nhà cung cấp công bố hoặc giá trị băm tệp gốc của một đồng nghiệp.
  5. Nếu hai giá trị băm khớp nhau thì nội dung là giống hệt nhau. Nếu không khớp, hãy xem tệp đó là thiếu, hỏng hoặc khác với bản gốc, rồi tải lại hoặc yêu cầu gửi lại.
  6. Với bất cứ việc gì liên quan đến mật khẩu hoặc chống can thiệp có chủ đích, hãy dùng thuật toán mạnh hơn, làm riêng cho mục đích đó, thay vì MD5.

Những vấn đề thường gặp được giải quyết

  • Một gói tài liệu hoặc tệp cài đặt đã tải về không mở lên đúng cách.
  • Hai thành viên trong nhóm không chắc mình có cùng một phiên bản của tệp hay không.
  • Một tệp cần được kiểm tra tính toàn vẹn nhanh mà không phải so nội dung từng dòng bằng tay.
  • Một tiết tin học cần một ví dụ về băm vừa đơn giản vừa thực hành được.
  • Một trường học cần hiểu vì sao tuyệt đối không nên dùng MD5 để lưu mật khẩu.

Những lỗi thường gặp nên tránh

  • Dùng MD5 để lưu mật khẩu của học sinh hoặc của nhân viên.
  • Cho rằng một giá trị băm MD5 trùng khớp là bằng chứng tệp không bị kẻ tấn công cố ý can thiệp.
  • Xem MD5 và mã hóa bảo mật là một; giá trị băm MD5 không thể đảo ngược về nội dung ban đầu, nhưng nó cũng không hề che giấu hay bảo vệ nội dung đó.
  • Bỏ qua tổng kiểm tra SHA-256 mà nhà cung cấp công bố để chọn một giá trị MD5 dễ tìm hơn.
  • Chia sẻ nội dung tệp nhạy cảm vì tưởng giá trị băm đem lại phần nào tính riêng tư; thực tế là không.

Câu hỏi thường gặp

Ngày nay MD5 được dùng để làm gì?

Chủ yếu cho những lần kiểm tra nhanh, nơi không có ai chủ đích chống lại bạn: xác nhận lượt tải về đã hoàn tất đúng, kiểm tra xem hai tệp có phải bản sao giống hệt nhau không, và dạy khái niệm băm. Nó không được khuyến nghị cho mật khẩu hay cho việc chống can thiệp có chủ đích.

MD5 có phải là mã hóa bảo mật không?

Không. Mã hóa bảo mật có thể đảo ngược nếu có đúng khóa, nên nội dung ban đầu lấy lại được. Băm MD5 thì chỉ đi một chiều; bạn không thể biến giá trị băm trở lại thành tệp hay văn bản gốc. Nó cũng không nhằm giữ bí mật nội dung, mà chỉ nhằm lấy dấu vân tay của nội dung đó.

Vì sao MD5 bị coi là không an toàn?

Các nhà nghiên cứu đã cho thấy những đầu vào khác nhau có thể được dựng lên có chủ đích để cho ra cùng một giá trị băm MD5, hiện tượng này gọi là va chạm. Nghĩa là không thể tin vào MD5 để phát hiện can thiệp có chủ ý, mà chỉ để phát hiện thay đổi vô tình hoặc hỏng hóc.

Trường học có nên dùng MD5 để lưu mật khẩu không?

Không. MD5 chạy nhanh và nếu không có lớp bảo vệ bổ sung thì rất dễ bị tấn công dò đoán trên quy mô lớn. Việc lưu mật khẩu nên dùng thuật toán chuyên dụng như bcrypt, scrypt hoặc Argon2, vốn được làm chậm có chủ ý để chống đúng kiểu tấn công này.

Nên dùng gì thay cho MD5 khi cần xác minh các tệp quan trọng?

SHA-256 là chuẩn hiện nay cho việc kiểm tra tính toàn vẹn ở những nơi bảo mật thật sự quan trọng, chẳng hạn khi xác minh phần mềm tải về. MD5 chỉ còn chấp nhận được với những lần kiểm tra cơ bản, ít rủi ro, như xác nhận rằng lượt tải về không bị hỏng.

Hai tệp khác nhau có thật sự cho ra cùng một giá trị băm MD5 không?

Có, đó gọi là va chạm. Các nhà nghiên cứu đã chứng minh nhiều lần, và đó là lý do chính khiến MD5 không còn được tin dùng cho những khâu xác minh trọng yếu về bảo mật, dù va chạm ngẫu nhiên vẫn cực kỳ khó xảy ra.

Dùng công cụ tạo MD5 trực tuyến cho văn bản nhạy cảm có an toàn không?

Hãy tránh dán thông tin riêng tư, cá nhân hay của học sinh vào bất kỳ công cụ trực tuyến nào nếu bạn chưa nắm được công cụ đó xử lý dữ liệu nhập vào ra sao. Khi minh họa trên lớp, hãy dùng văn bản ví dụ trung tính thay cho dữ liệu thật của học sinh.

Điều đọng lại

MD5 không phải là công cụ bảo mật theo nghĩa hiện đại, nhưng nó vẫn là một dấu vân tay hữu dụng để bắt những trục trặc vô tình của tệp: tải về dở dang, các bản sao không khớp nhau và những lần truyền tệp bị hỏng. Điều quan trọng là biết rõ ranh giới. Hãy dùng nó cho các lần kiểm tra tính toàn vẹn nhanh, ít rủi ro và cho việc dạy khái niệm băm. Còn với mật khẩu, và với việc xác minh rằng một tệp không bị người khác cố ý sửa đổi, hãy dùng những thuật toán được tạo ra đúng cho mục đích đó.

Công Cụ Tạo Hash MD5 icon Bài báo này nói về Công Cụ Tạo Hash MD5 Mở công cụ
Đăng trong:
Dành cho giáo viênDành cho học sinh