GhienCoin.comGhiền Coin
Blockchain hoạt động thế nào

Hàm băm là gì? Dấu vân tay của dữ liệu trong blockchain

Hàm băm là một phép tính biến bất kỳ dữ liệu nào thành một chuỗi ký tự có độ dài cố định, giống như dấu vân tay: cùng dữ liệu thì luôn ra cùng dấu vân tay, đổi một chút là dấu vân tay đổi hẳn, và không thể lần ngược từ dấu vân tay ra dữ liệu gốc.

🎙️
📑 Nội dung theo chương
  1. 0:31 Một chiếc máy xay kỳ lạ
  2. 1:11 Ba đặc tính làm nên một hàm băm tốt
  3. 1:49 Hàm băm giữ cho các khối dính chặt vào nhau
  4. 2:25 Hàm băm khác mã hoá ở chỗ nào
  5. 3:04 Hàm băm và công việc đào
  6. 3:42 Điều cần nhớ khi nghe về hàm băm
  7. 4:15 Câu hỏi thường gặp
🔊 Bản audio (lồng nhạc nền)

Ghiền Coin xin chào. Hàm băm, tiếng Anh là hash, là một phép tính biến bất kỳ dữ liệu nào, dù là một chữ hay cả một cuốn sách, thành một chuỗi ký tự có độ dài cố định. Nó giống dấu vân tay: cùng dữ liệu thì luôn ra cùng dấu vân tay, đổi một dấu chấm là dấu vân tay đổi hoàn toàn, và không ai lần ngược được từ dấu vân tay ra dữ liệu gốc.

Ở tập trước mình nói các trang trong sổ cái nối với nhau bằng dấu vân tay. Hôm nay mình mở cái dấu vân tay đó ra xem nó hoạt động thế nào và vì sao nó quan trọng đến vậy.

Một chiếc máy xay kỳ lạ

Hãy tưởng tượng một chiếc máy xay. Bạn bỏ vào một quả cam, nó ra một ly nước có màu và vị rất riêng. Bỏ vào đúng quả cam đó lần nữa, ra đúng ly nước đó. Nhưng nhìn ly nước, bạn không thể dựng lại quả cam.

Hàm băm giống chiếc máy xay ấy, chỉ khác là nó xay dữ liệu. Bỏ vào một câu văn, nó ra một chuỗi ký tự trông như ngẫu nhiên. Bỏ vào cả một bộ phim, nó vẫn ra một chuỗi cùng độ dài.

Điều kỳ lạ nhất là chỉ cần thay một chữ trong câu văn, chuỗi kết quả thay đổi hoàn toàn, không giống bản cũ chút nào. Người ta gọi đây là hiệu ứng tuyết lở: thay đổi nhỏ ở đầu vào gây thay đổi lớn ở đầu ra.

Chính đặc tính này làm cho hàm băm trở thành công cụ tuyệt vời để phát hiện ai đó có sửa dữ liệu hay không.

Ba đặc tính làm nên một hàm băm tốt

Thứ nhất là tính tất định: cùng đầu vào thì luôn cùng đầu ra. Nếu không có tính này, dấu vân tay sẽ vô dụng vì không thể so sánh.

Thứ hai là tính một chiều: biết đầu ra không suy ngược được đầu vào. Muốn tìm lại đầu vào, cách duy nhất là thử mò từng khả năng, mà số khả năng nhiều đến mức không máy tính nào thử hết.

Thứ ba là khó va chạm: rất khó tìm được hai dữ liệu khác nhau cho ra cùng một dấu vân tay. Nếu dễ tìm, kẻ gian có thể thay dữ liệu thật bằng dữ liệu giả có cùng dấu vân tay.

Bitcoin dùng một hàm băm tên là SHA hai trăm năm mươi sáu, được thiết kế để có đủ ba đặc tính này. Bạn không cần nhớ tên, chỉ cần nhớ ba đặc tính.

Hàm băm giữ cho các khối dính chặt vào nhau

Mỗi khối trong blockchain chứa dấu vân tay của khối ngay trước nó. Nếu ai đó sửa một giao dịch trong khối cũ, dấu vân tay của khối cũ đổi, và dấu vân tay ghi trong khối sau sẽ không còn khớp.

Muốn che giấu việc sửa, kẻ gian phải tính lại dấu vân tay cho khối sau, rồi khối sau nữa, cứ thế đến khối mới nhất. Và trong các mạng lưới như Bitcoin, việc tạo mỗi khối lại tốn rất nhiều công sức tính toán.

Vì thế càng lùi về quá khứ, việc sửa càng tốn kém. Đó là lý do người ta nói giao dịch càng nằm sâu trong chuỗi thì càng chắc chắn.

Toàn bộ sự bền vững của sổ cái dựa trên một phép tính tưởng như đơn giản này.

Hàm băm khác mã hoá ở chỗ nào

Nhiều người nhầm hàm băm với mã hoá. Mã hoá là biến dữ liệu thành dạng khó đọc nhưng có thể giải mã lại nếu có chìa khoá. Hàm băm thì không giải ngược được, kể cả có chìa khoá cũng không.

Mã hoá dùng để giữ bí mật: bạn muốn chỉ người có chìa khoá đọc được. Hàm băm dùng để kiểm tra toàn vẹn: bạn muốn biết dữ liệu có bị đổi hay không.

Trong đời thường, hàm băm có mặt ở rất nhiều nơi bạn không để ý. Các trang web tử tế thường không lưu mật khẩu của bạn, mà chỉ lưu dấu vân tay của mật khẩu. Khi bạn đăng nhập, họ băm mật khẩu bạn gõ rồi so dấu vân tay.

Blockchain không phát minh ra hàm băm. Nó chỉ dùng một công cụ đã có từ lâu trong mật mã học theo một cách rất khéo.

Hàm băm và công việc đào

Trong một số blockchain, việc viết khối mới đòi hỏi tìm một con số sao cho dấu vân tay của khối nhỏ hơn một ngưỡng nhất định. Vì hàm băm không đoán trước được, cách duy nhất là thử rất nhiều con số.

Đó chính là công việc mà người ta gọi là đào. Thợ đào không đào gì cả, họ cho máy tính thử băm hàng tỉ lần để tìm một kết quả đạt yêu cầu.

Tìm thì khó, nhưng kiểm tra thì dễ: ai cũng có thể băm một lần để xác nhận kết quả đúng. Sự lệch nhau giữa khó tìm và dễ kiểm là chìa khoá của cơ chế gọi là bằng chứng công việc.

Mình sẽ nói kỹ về bằng chứng công việc ở danh mục về Bitcoin. Ở đây chỉ cần thấy hàm băm có mặt ở cả việc nối khối lẫn việc tạo khối.

Điều cần nhớ khi nghe về hàm băm

Hàm băm là dấu vân tay của dữ liệu: tất định, một chiều, khó va chạm. Nó giúp phát hiện mọi sự thay đổi, dù nhỏ nhất.

Trong blockchain, nó nối các khối thành chuỗi và làm cho việc sửa lịch sử trở nên quá đắt. Ở một số mạng lưới, nó còn là nền tảng của việc tạo khối mới.

Hàm băm không làm cho tài sản của bạn an toàn nếu bạn làm lộ chìa khoá. Sự an toàn của sổ cái và sự an toàn của ví cá nhân là hai chuyện khác nhau, mình sẽ nói ở danh mục ví và bảo mật.

Tập sau, mình trả lời câu hỏi: làm sao hàng nghìn máy tính không quen biết nhau lại đồng ý với cùng một trang sổ.

Câu hỏi thường gặp

Hàm băm có giải ngược được không?

Không. Hàm băm là phép tính một chiều. Muốn tìm lại dữ liệu gốc chỉ có cách thử mò từng khả năng, và số khả năng quá lớn để thử hết.

Hàm băm và mã hoá khác nhau thế nào?

Mã hoá có thể giải ngược nếu có chìa khoá, dùng để giữ bí mật. Hàm băm không giải ngược được, dùng để kiểm tra dữ liệu có bị thay đổi không.

Bitcoin dùng hàm băm nào?

Bitcoin dùng hàm băm SHA 256, được thiết kế để tất định, một chiều và rất khó tìm hai dữ liệu khác nhau cho cùng kết quả.

Vì sao chỉ đổi một chữ mà dấu vân tay đổi hoàn toàn?

Đó là hiệu ứng tuyết lở của hàm băm tốt: thay đổi nhỏ ở đầu vào gây thay đổi lớn và không đoán trước được ở đầu ra, giúp phát hiện mọi chỉnh sửa.

Hàm băm có bảo vệ ví tiền mã hoá của tôi không?

Không trực tiếp. Hàm băm giữ cho sổ cái khó bị sửa, còn ví của bạn an toàn hay không phụ thuộc vào việc bạn giữ kín chìa khoá và cụm từ khôi phục.

Cần tư vấn cụ thể cho trường hợp của bạn?

Chúng tôi sẽ liên hệ trong vòng 24 giờ.

Đăng ký tư vấn ngay

Bài viết liên quan

Bạn cần hỗ trợ thêm?

Để lại thông tin, chúng tôi sẽ liên hệ trong 24 giờ.