Sanyanggae LogoSanyanggae

☁️ Điện toán đám mây và bảo mật

Hàm băm tệp chứng minh điều gì? Phân biệt tính toàn vẹn và tính xác thực bằng SHA-256

Tìm hiểu nguyên lý SHA-256 so sánh byte thay vì tên tệp và cách xác minh tệp tải xuống. Phân biệt nguyên nhân giá trị băm không khớp và lý do cần giá trị tham chiếu đáng tin cậy cùng chữ ký số.

사냥개 (Sanyanggae)Đăng Cập nhật 12 phút

Đây là bản dịch từ nguyên bản tiếng Hàn. Bản gốc tiếng Hàn · Rà soát bản dịch: AI rà soát

Sơ đồ giải thích việc so sánh byte của tệp, nguồn giá trị băm tham chiếu và giới hạn diễn giải kết quả
Sơ đồ giải thích do Sanyanggae tạo, tách biệt việc so sánh byte, nguồn giá trị tham chiếu và phạm vi xác minh. Không phải kết quả đo thực tế hay chứng thư chữ ký số.

1. Tệp cùng tên khác với tệp cùng nội dung

Khi tên và dung lượng tệp cài đặt vừa tải xuống giống như trên trang hướng dẫn, ta dễ cho rằng đã nhận đúng tệp. Tuy nhiên, tên có thể đổi, và các tệp cùng dung lượng vẫn có thể khác nội dung. Ngược lại, sao chép một tệp ảnh sang tên khác không có nghĩa các byte bên trong nhất thiết sẽ thay đổi. Lúc này, hàm băm giúp so sánh bằng cách đưa nội dung tệp qua một phép tính đã định và biểu diễn nó bằng một giá trị ngắn. Câu hỏi cần xác minh không phải tên tệp có vẻ hợp lý hay không, mà là các byte nhận được có khớp với một giá trị tham chiếu đáng tin cậy hay không. Khi chuyển tệp sao lưu sang thiết bị lưu trữ khác, ta cũng có thể đặt câu hỏi tương tự.

SHA-256 là thuật toán tạo giá trị băm 256 bit từ đầu vào. Kết quả thường được hiển thị bằng 64 chữ số thập lục phân vì mỗi chữ số thập lục phân biểu diễn 4 bit. Dù tệp lớn hơn, độ dài kết quả không tăng tỷ lệ thuận với dung lượng tệp. Áp dụng cùng thuật toán cho cùng các byte sẽ cho cùng kết quả. Tuy nhiên, vì mọi đầu vào đều được ánh xạ vào giá trị có độ dài hữu hạn, về nguyên tắc vẫn tồn tại va chạm: các đầu vào khác nhau cho cùng giá trị. Cần phân biệt việc dùng để so sánh trong thực tế với khẳng định rằng mỗi tệp được gán một tên duy nhất về mặt toán học. RFC 6234 cung cấp cách tính hàm băm và dữ liệu kiểm thử, bao gồm SHA-256.

2. Hàm băm không phải mã hóa hay bản sao thu nhỏ của tệp

Biết giá trị băm không mang lại một nút giải mã để khôi phục tài liệu hay ảnh gốc. Mã hóa được thiết kế để lấy lại bản rõ bằng khóa phù hợp, còn hàm băm mật mã không phải định dạng lưu trữ nhằm khôi phục đầu vào gốc. Điều đó cũng không có nghĩa chỉ công khai giá trị băm thì mọi đầu vào đều được giữ bí mật. Nếu chỉ có vài đầu vào khả dĩ, ta có thể tính giá trị băm cho từng đầu vào rồi so sánh. Vì vậy, không được mở rộng lời giải thích về SHA-256 dùng kiểm tra tệp thành lời khuyên rằng chỉ băm trực tiếp mật khẩu rồi lưu là đủ. Kiểm tra tính toàn vẹn, giữ bí mật và lưu trữ mật khẩu là những công việc có yêu cầu khác nhau.

Khi tính trên toàn bộ tệp, ta cũng không chỉ so sánh các chữ nhìn thấy trên màn hình. Dù trông như cùng một câu, các byte có thể khác nếu kiểu xuống dòng, mã hóa ký tự hoặc siêu dữ liệu bên trong tài liệu khác nhau. Tệp thu được sau khi giải nén là đối tượng so sánh khác với tệp nén ban đầu. Nếu chuẩn hóa ký tự hoặc đổi kiểu xuống dòng trước khi tính, ta nhận được giá trị băm của dữ liệu đã biến đổi. Nếu nhà phân phối cung cấp giá trị cho tệp nén gốc, trước hết phải so sánh với chính tệp nén đã nhận. Đây là ví dụ áp dụng sự khác biệt giữa hiển thị và byte trong bài Unicode và UTF-8 trước đó vào việc xác minh tệp thực tế.

3. So sánh tệp tải xuống bằng cùng thuật toán và giá trị tham chiếu

Trước khi xác minh, hãy kiểm tra đồng thời phiên bản đích, hệ điều hành, tên tệp và thuật toán băm trong hướng dẫn phân phối chính thức của bên tạo tệp. Tệp cài đặt cho hệ điều hành khác hoặc giá trị của phiên bản khác không thể làm mốc so sánh. Trong PowerShell, có thể dùng Get-FileHash -LiteralPath '.\download.zip' -Algorithm SHA256 để đọc và tính trên tệp cục bộ. Lệnh này không thực thi nội dung tại đường dẫn đó. Tài liệu chính thức của Microsoft giải thích rằng giá trị được tính từ nội dung tệp và chỉ đổi tên thì không làm giá trị thay đổi. Hãy sửa tên và đường dẫn cho đúng tệp thực sự đã nhận, đồng thời không sửa tệp trong lúc tính.

Trong kết quả xuất ra, đối chiếu đầy đủ 64 chữ số ở trường Hash với giá trị SHA-256 do nhà phân phối công bố. Không kết luận toàn bộ khớp chỉ vì vài chữ số đầu hoặc cuối giống nhau. Chữ cái hoa và thường trong hệ thập lục phân biểu diễn cùng một số, nhưng nếu lẫn ký tự khác hoặc thiếu chữ số, trước tiên hãy kiểm tra giá trị đã sao chép. Kết quả khớp củng cố sự nhất quán giữa các byte nhận được và giá trị tham chiếu mà bạn tin cậy. Đây không phải kết quả kiểm tra sự thật trong tài liệu, chất lượng chương trình hay hành vi độc hại. Nếu bản thân tệp tham chiếu có vấn đề, bản sao giống hệt cũng có cùng giá trị băm. Việc tính thành công và việc có nên sử dụng tệp hay không phải được đánh giá riêng.

4. Không khớp là tín hiệu cần điều tra, không phải bằng chứng chắc chắn về tấn công

Ví dụ, giả sử so sánh tệp phân phối nhận hôm qua với giá trị trong hướng dẫn hôm nay và thấy khác nhau. Đây là ví dụ minh họa, không phải hồ sơ sự cố thực tế. Trước hết, hãy kiểm tra hướng dẫn có chỉ cùng phiên bản không, có tải nhầm tệp cho thiết bị khác không và có tính trước khi tải xuống xong không. Cũng có thể bạn tính trên tệp đã giải nén thay vì tệp nén, hoặc trình soạn thảo đã lưu lại tài liệu. Như vậy, cần tách trường hợp đối tượng so sánh thay đổi khỏi trường hợp nội dung thay đổi trong quá trình truyền hoặc lưu trữ. Chỉ từ việc hai giá trị khác nhau, không thể biết ai đã đổi gì vào lúc nào.

Đừng lập tức chạy tệp cài đặt không khớp để kiểm tra. Hãy kiểm tra lại hướng dẫn phân phối chính thức và giá trị tham chiếu, rồi so sánh với tệp mới tải lại. Nếu vẫn khác, nên xem thông báo đính chính hoặc kênh hỗ trợ của nhà phân phối và ghi lại kết quả. Bản ghi cần có thời điểm kiểm tra, địa chỉ nguồn, phiên bản tệp, thuật toán và giá trị đã tính. Kết quả giống nhau qua nhiều lần tính là dấu hiệu cho thấy tệp cục bộ hiện tại được đọc theo cùng cách, nhưng không giải quyết được lỗi trong giá trị nhà phân phối đăng hoặc vấn đề của đường phân phối. Ghi đè bản ghi tham chiếu bằng giá trị mong đợi sẽ làm mất cơ sở xác định có thay đổi về sau hay không.

5. Cơ sở tin cậy giá trị tham chiếu và vai trò của chữ ký số

Nếu kẻ tấn công có thể đổi cả tệp và giá trị băm đi kèm trong hướng dẫn, họ có thể tính giá trị băm của tệp đã sửa và đăng làm mốc mới. NIST SP 800-175B giải thích giới hạn này khi dùng riêng hàm băm mà không có khóa hay chữ ký. Lấy giá trị từ trang HTTPS tại địa chỉ chính thức giúp kiểm tra nguồn và đường truyền, nhưng không bảo đảm loại bỏ cả khả năng máy chủ phân phối đã bị xâm nhập. Điều quan trọng không phải chuỗi băm trông dài hay không, mà là giá trị tham chiếu được lấy từ đâu và qua quy trình tin cậy nào. Hai giá trị sao chép từ cùng màn hình khớp nhau không tự xác nhận được danh tính bên tạo tệp.

Chữ ký số cho phép xác minh mối quan hệ giữa chữ ký và dữ liệu, chẳng hạn bằng khóa công khai được thu nhận theo cách đáng tin cậy. Nếu nhà phân phối cung cấp quy trình kiểm tra chữ ký, hãy làm theo hướng dẫn chính thức, bao gồm cách xác nhận chủ sở hữu và dấu vân tay của khóa. Tin ngay khóa công khai lần đầu thấy cạnh một tệp không rõ nguồn gốc không giải quyết được điểm khởi đầu của niềm tin. HMAC dùng khóa bí mật dùng chung cũng là công cụ xác thực khác với hàm băm thông thường, nhưng không phải chức năng có thể tùy ý thêm vào mọi tệp tải xuống để giải quyết vấn đề. Chữ ký hợp lệ không có nghĩa chương trình không có lỗi hoặc nội dung tài liệu là đúng. Sự khớp nhau của byte, xác nhận nguồn và đánh giá nội dung có liên quan nhưng mỗi việc đều cần cơ sở kiểm tra riêng.

6. Với sao lưu và cộng tác, hãy ghi cả phạm vi so sánh

Khi sao lưu ảnh cá nhân, lưu giá trị SHA-256 của tệp gốc rồi so sánh với bản sao giúp kiểm tra có thay đổi trong quá trình di chuyển hay không. Đồng thời, cần giữ danh sách tham chiếu để nó không bị mất hoặc ghi đè cùng tệp gốc. Nếu phần mềm quản lý ảnh ghi lại thông tin xoay hoặc siêu dữ liệu chụp ảnh, giá trị băm tệp có thể thay đổi dù ảnh nhìn vẫn tương tự. Vì vậy, trước hết cần phân biệt mục đích là bảo toàn từng byte hay xác nhận ý nghĩa của ảnh đã chỉnh sửa còn giống nhau. Muốn kiểm tra toàn bộ thư mục, không thể dừng ở giá trị băm của một tệp; cần quản lý cùng danh sách tệp được đưa vào, đường dẫn tương đối và giá trị của từng tệp.

Trong việc rà soát tài liệu cộng tác, giá trị băm cũng có thể làm dấu mốc cố định phiên bản đã rà soát. Tuy nhiên, kiểm tra giá trị băm khớp nhau không thay thế được bằng chứng rằng có người thực sự đọc toàn văn hoặc đối chiếu bản dịch. Cần ghi đã rà soát gì, khi nào, bằng phương pháp nào, rồi liên kết bản ghi với giá trị của tệp tương ứng thì mới có ý nghĩa. Hình trong bài này là sơ đồ giải thích tự tạo, hệ thống hóa việc so sánh byte, nguồn giá trị tham chiếu và phạm vi xác minh; không phải kết quả đo thực tế hay chứng thư. Khi kiểm tra tệp, hãy lần lượt ghi đối tượng và thuật toán, nguồn tham chiếu, cùng giới hạn những điều có thể kết luận từ kết quả. Như vậy, bạn có thể tránh phóng đại ý nghĩa của việc khớp hoặc không khớp và để người tiếp theo tái hiện cùng quy trình.

Nguồn và tài liệu tham khảo

Bài viết giải thích dựa trên tài liệu công khai. Trích dẫn một tổ chức không có nghĩa tổ chức đó đã thẩm định hay chứng nhận bài viết.

Thông tin đơn vị vận hành và liên hệ

Bài cùng chủ đề