Tổng kiểm tra là gì và bạn có thể làm gì với nó?

Bạn chuẩn bị nhấp vào nút tải xuống và nhận thấy một đoạn mã trông kỳ lạ bên cạnh. Nó dường như không có bất cứ điều gì liên quan đến độ lớn của tệp hoặc liệu đó có phải là thứ mà bạn nên ghi chú hay không. Vì vậy, bạn tiếp tục, lấy tệp và thảm họa! Nó dường như không giống như những gì bạn mong đợi.

Giá như có một cách nhanh chóng để xem liệu mục bạn vừa tải xuống có hoàn toàn giống với tệp trên trang web hay không. Vâng, có. Chào mừng đến với thế giới của tổng kiểm tra!

TL; DR: Tổng kiểm tra là một số, ở dạng giá trị nhị phân hoặc thập lục phân, được lấy từ một nguồn dữ liệu. Các bit quan trọng cần biết: tổng kiểm tra thường nhỏ hơn nhiều so với nguồn dữ liệu và nó cũng gần như hoàn toàn duy nhất. Có nghĩa là khả năng một số dữ liệu khác đưa ra tổng kiểm tra chính xác là rất khó xảy ra.

Chúng ta hãy xem một số ví dụ, ví dụ đầu tiên là một tệp văn bản đơn giản (bên dưới), chứa một số thông tin quan trọng! Tất cả các tệp chứa dữ liệu không chỉ bao gồm văn bản mà chúng ta có thể nhìn thấy – sẽ có các bit được phân bổ để cho chúng ta biết loại tệp đó là gì, dữ liệu được sắp xếp như thế nào, v.v…

svg+xml,%3Csvg%20xmlns= Tổng kiểm tra là gì và bạn có thể làm gì với nó?

Tất cả những điều này được xử lý trong quá trình tạo tổng kiểm tra và chúng tôi sẽ chỉ cho bạn cách hoạt động cũng như cách bạn có thể tự thực hiện ở phần sau của bài viết này.

Nhưng bây giờ, hãy xem giá trị chúng ta nhận được:

798B38084999FA50E7D1861E07E45F4E3AA39668DC6A12A84A058CAAA32DE0EB

Bản thân mã đó không cho chúng ta biết bất cứ điều gì. Chúng tôi không thể đảo ngược ‘hack’ nó để tìm ra mẫu của các số 1 và 0 mà tệp văn bản bao gồm. Tuy nhiên, nó được cho là dành riêng cho tệp cụ thể đó, vì vậy bây giờ hãy thay đổi tệp văn bản gốc bằng cách sắp xếp lại một số từ.

svg+xml,%3Csvg%20xmlns= Tổng kiểm tra là gì và bạn có thể làm gì với nó?

Hình ảnh trên cho thấy rõ ràng rằng nó vẫn là cùng một văn bản và về mặt kỹ thuật là cùng một dữ liệu, nhưng trình tự của các bit hiện đã khác. Và tổng kiểm tra lần này là:

Đọc thêm:  CPU AMD so với Intel để tải trò chơi

22698AA81AFF43B48ADA1BCC7E26D641F0077C0AA24B5B19C8C801147A41B30D

Lưu ý rằng nó có cùng độ dài – đây là khía cạnh quan trọng của quá trình lấy mã – nhưng nó hoàn toàn là một tổng kiểm tra khác. Cùng một dữ liệu, thứ tự khác nhau, tổng kiểm tra hoàn toàn mới.

Nhưng có lẽ điều đó nên được mong đợi; xét cho cùng, những thay đổi đối với tệp không hoàn toàn tầm thường. Vì vậy, hãy xem điều gì sẽ xảy ra khi chúng ta chỉ thay đổi một chữ cái trong toàn bộ nội dung: xem bạn có thể phát hiện ra chữ cái nào không!

svg+xml,%3Csvg%20xmlns= Tổng kiểm tra là gì và bạn có thể làm gì với nó?

Đưa ra cuộn trống ở chế độ nền, khi chúng tôi xem xét tổng kiểm tra cho tệp hầu như không bị thay đổi này.

790DD6BF0733981E4EBF9BA116970D943D91C2CDD3531CF877E30F3E92F29453

Sự thay đổi chỉ một chữ cái đó đã một lần nữa cho chúng ta một mã duy nhất khác. Khi nói đến tổng kiểm tra, đó là toàn bộ điểm của hệ thống: bất kỳ thay đổi nào đối với nguồn dữ liệu gốc, bất kể chúng nhỏ đến đâu, sẽ dẫn đến một tổng kiểm tra hoàn toàn mới và giúp bạn cực kỳ dễ dàng nhận biết liệu có điều gì đó đã bị thay đổi hay không.

Với cách đó, hãy xem mọi thứ hoạt động như thế nào sau đó!

Trọng tâm của tổng kiểm tra là thuật toán phần mềm được sử dụng để tạo mã mà chúng ta đã thấy. Trong trường hợp các ví dụ của chúng tôi, chúng tôi đã sử dụng một cái rất phổ biến được gọi là SHA-256 ( Thuật toán băm an toàn – 256 bit ). Thuật toán này là một loại hàm băm mật mã (CHF), với dữ liệu nguồn được gắn nhãn là thông báo và đầu ra được gọi là giá trị băm hoặc chỉ hàm băm (trong trường hợp này là tổng kiểm tra).

Được NSA phát triển và phát hành cách đây gần 20 năm, SHA-256 thuộc nhóm CHF đang được sử dụng rộng rãi trên toàn thế giới. Sự phổ biến của chúng là do chúng hoạt động nhanh chóng và chúng kiên cường chống lại các nỗ lực ‘hack’ mã – mặc dù ngày nay có nhiều mã tốt hơn.

Đọc thêm:  7 dự đoán công nghệ cho năm 2019

svg+xml,%3Csvg%20xmlns= Tổng kiểm tra là gì và bạn có thể làm gì với nó?

Mỗi thuật toán có cách thực hiện riêng, nhưng chúng ta sẽ chỉ tập trung vào những gì SHA-256 làm. Quá trình này luôn đưa ra hàm băm có độ dài cố định (256 bit trong trường hợp này), bất kể thông báo lớn đến mức nào, mặc dù về mặt kỹ thuật, nó thực sự có 8 giá trị, mỗi giá trị có kích thước 32 bit.

Vì vậy, tổng kiểm tra cho tệp test1 của chúng tôi thực sự là 798B3808 4999FA50 E7D1861E 07E45F4E 3AA39668 DC6A12A8 4A058CAA A32DE0EB . Điều này đã được viết ở dạng thập lục phân – viết nó ra dưới dạng một chuỗi gồm 256 số 1 và 0 sẽ rất tẻ nhạt!

Bước đầu tiên trong trình tự của thuật toán là xử lý thông báo, do đó, đó là một tập hợp các khối, mỗi khối có kích thước 512 bit. Đối với các tệp không phải là bội số nguyên của 512 hoặc nếu tệp nhỏ hơn kích thước này, thủ thuật gọi là phần đệm được sử dụng . Đây là nơi toàn bộ chồng số 0 được thêm vào sau khi các bit của thông báo kết thúc, để biến nó thành một vòng 512.

svg+xml,%3Csvg%20xmlns= Tổng kiểm tra là gì và bạn có thể làm gì với nó?

Ví dụ: giả sử chúng tôi đang cố gắng tìm tổng kiểm tra của một tệp có tổng kích thước là 10145 bit. Điều này sẽ cắt thành 19 toàn bộ khối, để lại 417 bit còn lại để lấp đầy. Để chỉ ra nơi dữ liệu kết thúc và phần đệm bắt đầu, chuỗi bit tạo nên nguồn có thêm 1 vào cuối. Vì vậy, ở đây, phần đệm sẽ thêm 352 số 0.

Đợi đã, tại sao không phải là 416? Phần cuối cùng của khối cuối cùng là một số 64 bit đặc biệt: độ dài của tệp gốc. Điều đó có nghĩa là, ví dụ của chúng tôi, khối thứ 20 sẽ phải kết thúc với giá trị nhị phân là 10145, dẫn đến thông báo chỉ yêu cầu 402 bit không gian trống để lấp đầy.

Khi đã xong, thuật toán lấy khối 512 bit đầu tiên và chia nó thành 16 phần, mỗi phần dài 32 bit; mỗi giá trị này sẽ được sử dụng trong quá trình tính toán hàm băm.

Đọc thêm:  Chúng tôi đã hỏi GPT một số câu hỏi về công nghệ, bạn có thể cho biết câu trả lời nào là của con người không?

Cho đến thời điểm này, đây là phần dễ dàng: phần còn lại của quá trình liên quan đến rất nhiều phép toán.

svg+xml,%3Csvg%20xmlns= Tổng kiểm tra là gì và bạn có thể làm gì với nó?

Tất cả đều nằm ngoài phạm vi của bài viết này nhưng nếu bạn muốn tìm hiểu chi tiết hơn về nó, bạn có thể đọc thêm về nó tại đây. Nhưng để cung cấp cho bạn một cái nhìn tổng quan ngắn gọn, nó liên quan đến việc tạo một hàm băm bắt đầu trước, sử dụng 8 số nguyên tố đầu tiên. Chúng được chạy thông qua một phương trình để đưa ra giá trị dài 256 bit, sau đó được sửa đổi nhiều lần, vì phần còn lại của thuật toán hoạt động theo cách của nó thông qua tất cả các phần, trong mỗi khối, từ dữ liệu nguồn đã xử lý.

Nghe có vẻ phức tạp kinh khủng, phải không? Tuy nhiên, đối với một CPU hiện đại, đó là một miếng bánh.

Chỉ mất không quá một chục chu kỳ bộ xử lý, cho mỗi byte dữ liệu nguồn, để tạo hàm băm.

TL; DR: Tổng kiểm tra cho phép bạn dễ dàng kiểm tra tính toàn vẹn của dữ liệu tạo thành tệp.

Hình dung tình huống này: bạn cần tải xuống một tệp quan trọng, tệp này rất quan trọng để vận hành máy tính. Thực sự quan trọng, đến mức bạn không muốn nó có bất kỳ sai sót hay trục trặc nào trong đó. Bạn cũng có kết nối internet chậm và không ổn định và bạn lo lắng rằng nó có thể ảnh hưởng đến tệp khi tải xuống.

Máy chủ của tệp biết tất cả những điều này, vì vậy họ chạy thuật toán tổng kiểm tra trên tệp và đặt câu trả lời trên trang web tải xuống. Khi bạn đã có nó, bạn có thể chạy cùng một quy trình và so sánh các giá trị – nếu chúng giống nhau, bạn sẽ biết tệp bạn đã tải xuống hoàn toàn ổn.

Đọc thêm:  Compaq: Đã ra đi nhưng không bị lãng quên

svg+xml,%3Csvg%20xmlns= Tổng kiểm tra là gì và bạn có thể làm gì với nó?

Và đây là cách sử dụng chính của tổng kiểm tra: kiểm tra tính toàn vẹn của dữ liệu tạo nên một tập tin. Nó có thể được thực hiện thủ công, như chúng ta sẽ sớm thấy, hoặc nó có thể là một phần của hoạt động tự động. Valve sử dụng tổng kiểm tra trên nền tảng Steam như một phần của quy trình xác minh tệp.

Tất cả các hệ điều hành chính đều có công cụ tổng kiểm tích hợp.

Để chạy tổng kiểm tra trong Windows, cách dễ nhất là sử dụng PowerShell: nhấp chuột phải vào nút Menu Bắt đầu hoặc nhấn Win + X. Nếu đang chạy phiên bản Windows cũ hơn, bạn có thể tải xuống PowerShell từ đây.

Nhập lệnh get-filehash theo sau là vị trí tệp. Ngoài ra, nhập lệnh rồi kéo và thả tệp vào cửa sổ PowerShell. Đây là cách tập tin thử nghiệm đầu tiên của chúng tôi đã được thực hiện.

svg+xml,%3Csvg%20xmlns= Tổng kiểm tra là gì và bạn có thể làm gì với nó?

Theo mặc định, PowerShell sử dụng SHA-256 để tạo tổng kiểm tra, nhưng bạn có thể sử dụng các mã khác như SHA-512 hoặc MD5. Tất cả những thứ này sẽ tạo ra một hàm băm khác nhau, nhưng nó vẫn sẽ là duy nhất cho tệp đó. Để sử dụng một chức năng khác, hãy thêm lệnh -algorithm theo sau là mã cho chức năng đó.

Đối với tổng kiểm tra, việc sử dụng một hàm băm khác không mang lại bất kỳ lợi ích đáng kể nào, mặc dù một số hàm cũ hơn (ví dụ: MD5, SHA-1) đã được chứng minh là tạo ra cùng một hàm băm cho các tệp khác nhau – một sự cố được gọi là xung đột . Các thuật toán mới hơn có khả năng chống va chạm tốt hơn, đó là lý do tại sao PowerShell mặc định là SHA-256.

svg+xml,%3Csvg%20xmlns= Tổng kiểm tra là gì và bạn có thể làm gì với nó?

Lý do chính cần chuyển sang một chức năng khác là do máy chủ lưu trữ tệp chọn sử dụng thứ gì đó không phải SHA-256, vì vậy bạn sẽ cần chuyển sang chức năng này để so sánh các tệp.

Việc so sánh hai chuỗi số và chữ cái dài có thể hơi khó thực hiện, nhưng với một chút lập trình nhỏ, bạn có thể khiến PowerShell đánh giá tổng kiểm tra cho bạn. Hãy sử dụng mã MD5 ở trên làm ví dụ và giả sử rằng hàm băm của tệp gốc thực sự kết thúc bằng số 8.

Đọc thêm:  Cập nhật giá và tính khả dụng của GPU: Tháng 7 năm 2022

Hình ảnh bên dưới hiển thị các dòng mã bạn cần nhập, sử dụng Shift+Enter sau mỗi dòng.

svg+xml,%3Csvg%20xmlns= Tổng kiểm tra là gì và bạn có thể làm gì với nó?

Xem cách nó nói ‘ Sai ‘? Điều đó cho bạn biết rằng tệp không giống nhau. Nếu bạn chắc chắn rằng bạn có hàm băm chính xác cho tệp bạn muốn, thì mọi nghi ngờ đều đổ dồn vào dữ liệu.

Lưu ý rằng tổng kiểm tra không thể cho bạn biết các tệp khác nhau như thế nào – đó là một thử nghiệm rất nhị phân, nếu bạn tha thứ cho cách chơi chữ. Nhưng nó là một công cụ hữu ích và có một số chức năng tổng kiểm tra rất cụ thể (chẳng hạn như số kiểm tra và bit kiểm tra) được sử dụng mọi lúc để tìm ra các lỗi trong dữ liệu.

Microsoft đã cung cấp PowerShell cho macOS 10.13 trở lên và Linux cũng vậy, nhưng nếu ý nghĩ sử dụng thứ gì đó có nguồn gốc từ Windows mang lại cho bạn sự ghen tị, hãy biết rằng bạn cũng có thể làm điều tương tự trên cả hai hệ điều hành.

Đối với người dùng Mac, bạn cần kích hoạt ứng dụng Terminal nằm trong thư mục Tiện ích trong Ứng dụng. Các lệnh để nhập là shasum -a 256 , theo sau là địa chỉ của tệp bạn muốn kiểm tra (hoặc chỉ cần kéo và thả vào cửa sổ Terminal).

svg+xml,%3Csvg%20xmlns= Tổng kiểm tra là gì và bạn có thể làm gì với nó?

Lệnh shasum tương đương với Get-FileHash trong PowerShell và phần ‘-a 256’ ở đó để cho biết thuật toán nào sẽ sử dụng: 1 cho SHA-1, 256 cho SHA-256 và 512 cho SHA-512.

Lưu ý cách nó cung cấp cho chúng tôi tổng kiểm tra tương tự cho tệp kiểm tra, như chúng tôi đã sử dụng PowerShell trong Windows? Đó là sức mạnh thực sự của nó: bất kể bạn sử dụng máy tính hay hệ thống tệp nào, miễn là thuật toán giống nhau, bạn sẽ luôn nhận được các giá trị băm có thể so sánh trực tiếp.

Đọc thêm:  Cập nhật giá và tính khả dụng của GPU: Tháng 11 năm 2021

Nếu bạn thích sự thú vị của Linux, bạn sẽ hài lòng khi biết rằng đó là quy trình tương tự như trên – kích hoạt Terminal và nhập sha1sum , sha256sum hoặc sha512sum theo sau là địa chỉ của tệp để tạo hàm băm cần thiết.

svg+xml,%3Csvg%20xmlns= Tổng kiểm tra là gì và bạn có thể làm gì với nó?

Một lần nữa, bạn có thể thấy rằng chúng ta có tổng kiểm tra giống nhau cho tệp văn bản của mình. Tất cả các lần chạy đang thực hiện cùng một phép toán để tạo ra hàm băm, vì vậy không có điều gì trong số này gây ngạc nhiên, nhưng thật thoải mái khi biết rằng tổng kiểm tra có thể được thực hiện trên bất kỳ thiết bị máy tính nào.

Dựa vào mức độ nhanh chóng và dễ dàng của tổng kiểm tra, có lẽ hơi ngạc nhiên khi chúng tôi không thực hiện chúng thường xuyên hơn hoặc hoàn toàn không.

Mặc dù những dịch vụ như Steam tự động xử lý quy trình cho chúng tôi, nhưng chúng tôi phụ thuộc vào các máy chủ lưu trữ tệp cung cấp tổng kiểm tra chính xác cho dữ liệu mà họ cung cấp. Ví dụ: trong trường hợp tải xuống TechSpot, chúng tôi không cung cấp tổng kiểm tra một cách rõ ràng nhưng các công cụ mà chúng tôi sử dụng để xác nhận rằng các bản tải xuống sạch, chẳng hạn như VirusTotal, sử dụng tổng kiểm tra để xác minh tính toàn vẹn của tệp và dữ liệu tổng hợp khi một số bên quét cùng một tệp theo thời gian.

Một số trang web cung cấp tổng kiểm tra cho mọi tệp, trong khi những trang khác chỉ làm điều đó cho các mục quan trọng hoặc rất lớn (ví dụ: Microsoft trong phần tải xuống an toàn của họ), nhưng điều này ngày càng trở nên hiếm gặp. Có nhiều lý do có thể xảy ra cho việc này, chẳng hạn như mọi người chỉ đơn giản là không nhận thức được chúng.

Nhưng ở những nơi máy chủ cung cấp nó, thì ít nhất bây giờ bạn biết cách bạn có thể sử dụng hàm băm – bất kỳ điều bổ sung nào giúp bạn yên tâm hơn một chút luôn là một điều tốt.