Phát hiện ảnh bị chỉnh sửa bằng mã băm SHA-256
SHA-256 giải thích dễ hiểu: khớp chứng minh gì, lệch nói lên gì, vì sao ảnh qua Zalo, Messenger luôn lệch mã băm và cách so sánh file đúng.
Muốn biết một file ảnh có bị chỉnh sửa so với bản gốc hay không, cách chắc chắn nhất là so sánh mã băm SHA-256 của hai file: khớp nghĩa là giống nhau đến từng byte, không khớp nghĩa là file đã thay đổi. Nhưng “thay đổi” không đồng nghĩa với “bị làm giả”: chỉ cần gửi ảnh qua Zalo hay Messenger là mã băm đã khác. Bài này giải thích SHA-256 bằng ngôn ngữ đời thường, những gì nó chứng minh và không chứng minh, cùng quy trình so sánh thực tế.
Lưu ý: Bài viết chỉ mang tính thông tin chung, không phải tư vấn pháp lý. Việc đánh giá chứng cứ trong từng vụ việc thuộc về cơ quan có thẩm quyền.
SHA-256 là gì, nói cho dễ hiểu
Hãy hình dung SHA-256 như một chiếc máy làm dấu vân tay cho file. Bạn đưa vào bất kỳ file nào, một tấm ảnh 3 MB hay một video 2 GB, máy trả ra một chuỗi cố định gồm 64 ký tự, ví dụ bắt đầu bằng 9f2c1a…. Thuật toán này được chuẩn hóa trong tiêu chuẩn FIPS 180-4 của NIST (Hoa Kỳ) và được dùng rộng rãi trong ngân hàng, phần mềm và bảo mật.
Ba tính chất quan trọng:
- Cùng file, cùng dấu vân tay. Tính bao nhiêu lần, trên máy nào, cũng ra đúng chuỗi đó.
- Đổi một chút, khác hoàn toàn. Đổi một điểm ảnh, xóa một dòng metadata, dấu vân tay mới không còn giống bản cũ chút nào. Không có khái niệm “gần giống”.
- Không đi ngược được. Từ dấu vân tay không thể dựng lại ảnh, và trên thực tế không thể cố tình tạo một file khác có cùng dấu vân tay.
Nhờ đó, chỉ cần lưu 64 ký tự lúc nhận ảnh là sau này có thể kiểm tra một file bất kỳ có đúng là file đó không, mà không cần giữ hay gửi lại bản thân tấm ảnh.
Khớp thì chứng minh gì, không khớp thì nói lên gì
| Kết quả | Chứng minh được | Không chứng minh được |
|---|---|---|
| Khớp | File bạn đang giữ giống từng byte với file đã được lưu dấu vân tay | Cảnh trong ảnh là thật; ảnh không được dàn dựng trước khi chụp |
| Không khớp | File đã khác bản gốc theo một cách nào đó | Ai đó đã cố ý chỉnh sửa nội dung |
Điểm thứ hai rất hay bị hiểu sai. File có thể khác bản gốc vì rất nhiều lý do vô hại:
- Ứng dụng chat nén lại ảnh: Zalo, Messenger và nhiều ứng dụng khác thu nhỏ và nén ảnh khi gửi ở dạng “ảnh”.
- Mạng xã hội nén và xóa metadata khi đăng.
- Chụp màn hình ảnh thay vì gửi file.
- Xoay, cắt, chỉnh sáng dù chỉ một chút trong ứng dụng thư viện ảnh.
- Chuyển định dạng, ví dụ từ HEIC sang JPEG, hoặc “lưu thành” từ một trình xem ảnh.
Vì vậy, khi thấy không khớp, câu hỏi đúng không phải “ảnh này giả à?” mà là “file này đã đi qua những kênh nào?”.
Vì sao ảnh qua Zalo, Messenger luôn bị lệch mã băm
Để tiết kiệm dung lượng và băng thông, các ứng dụng nhắn tin thường mã hóa lại ảnh JPEG: giảm độ phân giải, tăng mức nén, bỏ bớt metadata. Hình nhìn bằng mắt gần như y hệt, nhưng các byte bên trong đã khác hoàn toàn, nên SHA-256 khác.
| Cách gửi | Thường giữ nguyên file? | So sánh SHA-256 |
|---|---|---|
| Gửi dạng “ảnh” qua ứng dụng chat | Không, bị nén lại | Gần như chắc chắn không khớp |
| Gửi dạng “tệp/file” qua ứng dụng chat | Thường giữ nguyên | Thường khớp |
| Đính kèm email | Thường giữ nguyên | Thường khớp |
| Tải bản gốc từ Google Drive, OneDrive | Có | Khớp |
| Chụp màn hình | Không | Không khớp |
Lưu ý mã QR in trên ảnh thường vẫn quét được sau khi nén, nên người nhận vẫn tra được thời điểm chụp và khu vực ngay cả khi không so được mã băm. Xem bài xác thực ảnh bằng QR.
Quy trình so sánh file trong thực tế
Bên gửi ảnh (nhà thầu, kỹ thuật viên, nhân viên hiện trường)
- Gửi ảnh nhanh qua chat cho tiện trao đổi hằng ngày, không sao cả.
- Với ảnh quan trọng (nghiệm thu, bàn giao, hồ sơ bồi thường), gửi thêm bản gốc dạng tệp, qua email hoặc thư mục chia sẻ.
- Không chỉnh sửa, cắt hay xoay ảnh trước khi gửi bản gốc.
- Ghi kèm mã SnapID trong tin nhắn để bên nhận đối chiếu nhanh.
Bên nhận ảnh (chủ đầu tư, khách hàng, quản lý, bảo hiểm)
- Quét QR hoặc mở trang xác thực từ mã trên ảnh.
- Đối chiếu thời điểm chụp, khu vực và các cờ kiểm tra.
- Bấm so sánh với file của tôi, chọn file bản gốc đã nhận.
- Khớp: file nguyên vẹn. Không khớp: kiểm tra xem file có đi qua kênh nén không, rồi xin lại bản gốc.
- Nếu vẫn không khớp với bản gốc gửi qua kênh không nén, hãy hỏi người gửi và xem kỹ ảnh thu nhỏ trên trang xác thực.
Tự tính SHA-256 trên máy tính
Nếu muốn tự kiểm tra hoặc lưu hồ sơ, bạn có thể tính mã băm bằng công cụ có sẵn:
- Windows (Command Prompt):
certutil -hashfile anh.jpg SHA256 - macOS (Terminal):
shasum -a 256 anh.jpg - Linux:
sha256sum anh.jpg
So sánh chuỗi kết quả với chuỗi bên gửi cung cấp. Chỉ cần lệch một ký tự là hai file khác nhau.
Cách SnapID Mark dùng SHA-256
Khi một ảnh SnapID Mark được tải lên, máy chủ lưu dấu vân tay SHA-256 của ảnh gốc và ảnh đã đóng dấu. Trang xác thực công khai hiển thị dấu vân tay này cùng thời điểm chụp tin cậy, khu vực đã làm tròn và các cờ toàn vẹn. Nút “so sánh với file của tôi” tính SHA-256 ngay trong trình duyệt của người nhận, file ảnh không bị tải lên, sau đó đối chiếu với giá trị đã lưu. Trang cũng giải thích trường hợp file bị nén lại bởi ứng dụng chat để người nhận không kết luận vội.
Kết hợp ba lớp: giờ tin cậy cho biết khi nào (xem giờ chuẩn và giờ điện thoại), mã SnapID và QR dẫn tới bản ghi độc lập, SHA-256 cho biết file có còn nguyên vẹn. Tìm hiểu thêm ở phần bảo mật hoặc thử demo xác thực.
Cần nhớ: đây là công cụ kiểm tra kỹ thuật, không phải chữ ký số hay dấu thời gian được chứng thực. Bài giá trị chứng cứ của ảnh có dấu thời gian bàn kỹ hơn về khía cạnh này.
Nếu bạn cần gửi ảnh mà bên nhận tự kiểm tra được tính nguyên vẹn, hãy tải SnapID Mark và thử so sánh một file gốc với một file đã gửi qua chat.
Câu hỏi thường gặp
Mã băm SHA-256 có lộ nội dung ảnh không?
Không. Từ 64 ký tự không thể dựng lại ảnh, nên hiển thị dấu vân tay công khai không làm lộ hình ảnh.
Ảnh gửi qua Zalo bị lệch mã băm thì có phải ảnh giả không?
Không. Zalo nén lại ảnh khi gửi dạng “ảnh”, làm file khác đi dù nội dung nhìn y hệt. Hãy xin bản gốc gửi dạng tệp hoặc email để so sánh.
Khi so sánh trên trang xác thực, ảnh của tôi có bị tải lên máy chủ không?
Không. Trình duyệt tự tính dấu vân tay trên máy của bạn; file ảnh không rời khỏi thiết bị.
Mã băm khớp có nghĩa là ảnh chắc chắn thật không?
Khớp chỉ chứng minh file giống hệt file đã lưu lúc tải lên. Nó không chứng minh cảnh trong ảnh không được dàn dựng. Hãy xem thêm thời điểm, khu vực và các cờ kiểm tra.
Xuất PDF từ ảnh có so sánh mã băm được không?
Không nên dùng PDF để so sánh, vì ảnh trong PDF là một file khác. Hãy so sánh bằng file ảnh JPEG gốc.