Nguyên lý thay đổi hàm băm của tệp
Các hàm băm mật mã điển hình bao gồm: MD5, SHA-1/256, v.v. Đặc điểm cốt lõi trong thiết kế của hàm băm mật mã là “hiệu ứng tuyết lở” - bất kỳ thay đổi rất nhỏ nào ở đầu vào cũng sẽ dẫn đến thay đổi rất lớn ở đầu ra. Điều này có nghĩa là dù chỉ sửa một byte, toàn bộ giá trị băm cũng sẽ hoàn toàn khác. Ví dụ, bạn viết một tài liệu 2000 chữ và lưu thành tệp word; chỉ cần thay đổi một ký tự trong đó, chẳng hạn thêm một dấu cách, thì md5 của tệp này sẽ thay đổi hoàn toàn. Vì vậy, bản chất của việc “thay đổi hàm băm tệp” là thay đổi chính nội dung tệp, chứ không phải các thuộc tính bên ngoài như tên tệp. Đặc tính này khiến việc sửa đổi hàm băm ở cấp độ tệp tương đối dễ thực hiện.
Các hệ thống và định dạng khác nhau có cách quy định khác nhau về “siêu dữ liệu”: nếu siêu dữ liệu được nhúng trong dữ liệu tệp (như thẻ trong JPEG/vùng chứa video), việc thay đổi nó sẽ làm thay đổi hàm băm; nếu siêu dữ liệu được lưu trong luồng dữ liệu hoặc thuộc tính bên ngoài của hệ thống tệp, việc thay đổi nó không ảnh hưởng đến hàm băm được tính theo nội dung tệp. Điều này giải thích hiện tượng thường gặp: “đổi tên tệp thì hàm băm không đổi, sửa siêu dữ liệu nhúng thì hàm băm sẽ đổi”.
Chuyển mã trên nền tảng video và “nhận biết có sửa hàm băm hay không”
Sau khi người dùng tải video lên nền tảng video, nền tảng sẽ thực hiện với video đó:
Tiếp nhận tệp gốc
Kiểm tra và xác minh định dạng
Xử lý chuyển mã (chuyển đổi định dạng, điều chỉnh độ phân giải, nén)
Trích xuất khung hình chính
Tính toán hàm băm nhiều lớp
Đây là một quy trình chuyển mã “tách ghép kênh → giải mã → xử lý → mã hóa lại → ghép kênh” nhằm tạo ra nhiều phiên bản với nhiều bitrate/nhiều độ phân giải để phát thích ứng. Bản thân quá trình này sẽ thay đổi chuỗi byte của tệp và mọi hàm băm mật mã trước khi tải lên.
Ở cấp độ hàm băm tệp: trong quá trình chuyển mã, nền tảng sẽ tạo lại tệp, nên hàm băm của tệp gốc tự nhiên sẽ thay đổi. Vì vậy, hàm băm tệp mà người dùng đã sửa trước đó không còn ý nghĩa sau khi chuyển mã. Do đó nền tảng sẽ không nhận biết xem tệp của bạn có từng sửa md5 hay không, vì điều đó hoàn toàn không có ý nghĩa!
Khâu khử trùng lặp/kiểm tra bản quyền không dựa vào hàm băm tệp của người tải lên, mà do nền tảng tính toán “dấu vân tay âm thanh-video/hàm băm cảm nhận” riêng trên nội dung sau khi giải mã, rồi so khớp với dấu vân tay tham chiếu trong cơ sở dữ liệu; ví dụ Content ID của YouTube sẽ “lấy dấu vân tay” nội dung tải lên và đối chiếu với dữ liệu tham chiếu do chủ sở hữu quyền cung cấp.
Vì vậy, nền tảng không phải “nhận biết hàm băm đã bị sửa”, mà là “bỏ qua hàm băm tải lên, tính lại dấu vân tay nội dung và so khớp”. Điều này khiến việc chỉ sửa byte của tệp hoặc siêu dữ liệu vùng chứa để thay đổi MD5/SHA không thể vượt qua các cơ chế kiểm tra dựa trên nội dung.