Checksum là gì?

Bài viết được dịch từ bài gốc What are Checksums?

Hãy tưởng tượng, bạn cần gửi một lá thư quan trọng cho người bạn qua đường bưu điện.

Trước khi gửi, bạn niêm phong thư và chụp hình lá thư trước khi gửi.

Sau khi bạn của bạn nhận được lá thư này, trước khi unbox thư để đọc, bạn của bạn sẽ chụp hình lá thư này lại và gửi hình này cho bạn xem.

Nếu hai tấm hình trước và sau giống nhau, bạn biết rằng lá thư không bị can thiệp hoặc hư hỏng trong quá trình vận chuyển.

Nếu chúng không khớp, đó là dấu hiệu rõ ràng rằng có điều gì đó không ổn đã xảy ra - có thể lá thư đã bị thay đổi, hoặc một phần của nó đã bị mất hoặc hư hỏng.

Trong thế giới kỹ thuật số (digital world), checksums phục vụ mục đích tương tự như những bức ảnh đó.

Việc chụp bức hình trước khi gửi và sau khi nhận giúp chúng ta trả lời câu hỏi: Liệu rằng lá thư này có bị chỉnh sửa hoặc bị hư hỏng không? Và mã checksum sẽ trả lời cho câu hỏi: Dữ liệu này có bị thay đổi vô tình hoặc cố ý kể từ khi nó được tạo ra, lưu trữ, hoặc truyền đi không?

Trong bài viết hôm nay chúng ta sẽ cùng đi tìm hiểu checksum là gì, cách thức hoạt động của nó, có bao nhiêu loại checksum khác nhau, ứng dụng thực tế trong ngành phần mềm như thế nào?

Checksum là gì?

Checksum là một “dấu vân tay độc nhất” đại diện cho data trước khi nó được gửi đi. Khi data đã đến phía người nhận, dấu vân tay này sẽ được tính lại để đảm bảo nó khớp với dấu vân tay ban đầu. Bạn hãy hiểu như này, khi con người sinh ra họ sẽ có 1 dấu vân tay độc nhất trên thế giới, tương tự khi data này được ra, nó sẽ có 1 dấu vân tay đại diện cho nó.

Nếu mã checksum của data khớp với ban đầu, lúc này bạn có thể tự tin phán rằng data này là nguyên gốc, chưa bị chỉnh sửa hoặc bị mất mát dữ liệu.

Ví dụ data bạn gửi đi, nhưng bị hacker hack được, lúc này hacker chèn thêm mã độc vào, nhưng vì khi thay đổi nội dung data, mã checksum sẽ bị thay đổi theo, dẫn đến không khớp => data dã bị chỉnh sửa.

Mã checksume được tính toán bằng cách thực hiện một phép toán trên dữ liệu, ví dụ như cộng tất cả byte dữ liệu hoặc dùng một hàm băm để tính.

image

Checksum hoạt động như thế nào?

Quá trình sử dụng checksum để phát hiện lỗi rất đơn giản:

  • Tính toán: Trước khi gửi hoặc lưu trữ dữ liệu, dữ liệu ban đầu được xử lý qua một thuật toán cụ thể để tạo ra một giá trị checksum.

  • Truyền/Lưu trữ: Checksum được đính kèm vào dữ liệu và gửi qua mạng hoặc lưu vào bộ nhớ.

  • Xác minh: Khi truy xuất hoặc nhận được, checksum được tính toán lại bằng cùng thuật toán trên dữ liệu nhận được. Checksum mới tính toán này được so sánh với checksum ban đầu.

  • Phát hiện lỗi: Nếu hai giá trị checksum khớp nhau, dữ liệu được coi là nguyên vẹn. Nếu chúng không khớp, điều đó chỉ ra rằng dữ liệu đã bị thay đổi hoặc mất mát trong quá trình truyền hoặc lưu trữ.

Các loại Checksum

Có nhiều loại checksum, mỗi loại có điểm mạnh và điểm yếu riêng. Dưới đây là một vài loại phổ biến:

  • Parity Bit: Parity bit là một bit duy nhất được thêm vào một nhóm các bit để làm cho tổng số 1s là chẵn (chẵn lẻ) hoặc lẻ (lẻ lẻ). Mặc dù nó có thể phát hiện lỗi bit đơn, nhưng sẽ thất bại nếu một số bit chẵn bị lật.

  • CRC (Cyclic Redundancy Check): Hoạt động bằng cách xem dữ liệu như một số nhị phân lớn và chia nó cho một số chia xác định trước. Phần dư của phép chia này trở thành checksum. CRC được thiết kế để phát hiện các lỗi phổ biến do nhiễu trong kênh truyền dẫn.

  • Hàm băm mã hóa: Đây là các hàm một chiều tạo ra một giá trị băm có kích thước cố định từ dữ liệu. Các ví dụ phổ biến bao gồm MD5, SHA-1, và SHA-256.

Ứng dụng trong thực tế

  • Tải xuống tập tin: Checksum xác minh rằng các tập tin tải xuống là đầy đủ và không bị hỏng.

  • Sao lưu dữ liệu: Checksum đảm bảo rằng dữ liệu sao lưu là chính xác và đáng tin cậy.

  • Giao tiếp mạng: Checksum đảm bảo rằng các gói dữ liệu được truyền tải chính xác, ngăn chặn lỗi và hỏng hóc, mất mát dữ liệu

Tóm lại, checksum đóng vai trò quan trọng trong việc kiểm tra xem dữ liệu này có phải dữ liệu gốc, có bị hỏng hay bị thay đổi hay chưa.

Từ việc tải xuống tập tin và lưu trữ dữ liệu đến truyền tải mạng và cài đặt phần mềm, checksum làm việc không ngừng để phát hiện lỗi, ngăn chặn hỏng hóc và mang lại cho chúng ta sự tin tưởng vào độ chính xác của thông tin kỹ thuật số của chúng ta.

Tham khảo

 Comments
Comment plugin failed to load
Loading comment plugin