Hàm băm: bộ máy thầm lặng bên dưới mọi thứ trong tiền mã hóa

·4 phút đọc·Bởi SSP Editorial Team
Ảnh bìa SSP Academy: hàm băm hoạt động thế nào trong tiền mã hóa

Hàm băm: bộ máy thầm lặng bên dưới mọi thứ trong tiền mã hóa

Nếu tháo một chuỗi khối ra thành những bộ phận cốt lõi, bạn sẽ thấy hai loại mật mã làm gần như toàn bộ công việc. Chữ ký số quyết định ai được chi tiêu. Hàm băm giữ mọi thứ còn lại gắn kết — khối, địa chỉ, việc đào, mã giao dịch, thậm chí cả cách một chiếc ví giải mã thứ bạn sắp ký.

Hàm băm hiếm khi được giải thích, vì hiếm khi được để ý. Chúng xứng đáng mười phút, vì một khi hiểu chúng, một phần đáng ngạc nhiên của tiền mã hóa thôi trông như phép màu.

Hàm băm làm gì

Một hàm băm nhận bất kỳ dữ liệu đầu vào nào — một từ, một tệp, cả một khối giao dịch — và tạo ra một dấu vân tay có kích thước cố định. SHA-256, hàm Bitcoin dùng, luôn cho ra 256 bit, thường viết thành 64 ký tự thập lục phân, dù bạn đưa vào một chữ cái hay một gigabyte.

Ba tính chất khiến nó hữu ích:

Tất định. Cùng một đầu vào luôn cho cùng một đầu ra. Bất kỳ ai, ở đâu, cũng tính lại và kiểm tra được.

Một chiều. Có dấu vân tay rồi cũng không có cách thực tế nào lần ngược về đầu vào. Cách duy nhất là đoán đầu vào cho đến khi khớp, và với một hàm băm tốt thì điều đó là vô vọng.

Kháng va chạm. Không thể tìm ra hai đầu vào khác nhau có cùng dấu vân tay. Đổi một ký tự thôi, đầu ra thay đổi hoàn toàn và không đoán trước được.

Hàm băm chỉ có vậy: một dấu vân tay ngắn, kiểm chứng được và không thể giả mạo của một thứ lớn hơn.

Nơi bạn gặp hàm băm mà không để ý

Mã giao dịch. Txid đơn giản là giá trị băm của một giao dịch. Vì vậy nó là duy nhất, và vì vậy đó là thứ bạn dán vào trình duyệt khối — nó chỉ đúng một giao dịch, và không ai tạo được giao dịch khác có cùng mã.

Chính chuỗi khối. Mỗi khối chứa giá trị băm của khối trước. Đổi bất cứ gì trong một khối cũ, giá trị băm của nó thay đổi, cắt đứt liên kết với mọi khối phía sau. Chuỗi dấu vân tay ấy khiến lịch sử lộ ra mọi sự can thiệp.

Việc đào. Bằng chứng công việc là một cuộc xổ số băm: thợ đào băm tiêu đề khối lặp đi lặp lại, mỗi lần đổi một con số, cho tới khi tìm được kết quả dưới một ngưỡng. Vì giá trị băm không đoán trước được, không có lối tắt — chỉ có thêm lượt thử, và đó là lý do bằng chứng công việc tốn năng lượng thật và chi phí ấy mua được an toàn.

Địa chỉ. Phần lớn địa chỉ là giá trị băm của thứ gì đó. Một địa chỉ Bitcoin kiểu cổ điển là giá trị băm của một khóa công khai. Địa chỉ Bitcoin của SSP là P2WSH: giá trị băm SHA-256 của kịch bản nhân chứng mô tả quy tắc chi tiêu 2-trên-2. Thứ nằm trên chuỗi trước khi bạn tiêu là dấu vân tay ấy, không phải chính các khóa.

Hàm băm bên trong ví

Băm không chỉ là khái niệm ở tầng chuỗi. Nó có mặt trong phần mềm bạn dùng để ký.

Khi SSP Key giải mã một giao dịch Ethereum trước khi bạn phê duyệt, nó nhận ra lệnh gọi làm gì nhờ bộ chọn hàm — bốn byte đầu của giá trị băm Keccak-256 của chữ ký hàm. transfer(address,uint256) cho giá trị bắt đầu bằng a9059cbb; approve(address,uint256) cho giá trị bắt đầu bằng 095ea7b3. Khi bộ giải mã thấy bốn byte ấy ở đầu giao dịch, nó biết hàm nào đang được gọi và có thể cho bạn thấy bằng lời thường rằng bạn đang gửi token hay đang cấp một phê duyệt.

Đó là minh họa đẹp cho công dụng của hàm băm: một dấu vân tay gọn và không mơ hồ cho thứ dài hơn. Nó cũng là lời nhắc về giới hạn của chúng, vì bốn byte ít đến mức hai hàm khác nhau có thể dùng chung một bộ chọn. Đó là một lý do bộ giải mã cố ý hỏng theo hướng đóng — mọi điều bất ngờ đều lùi về dữ liệu thô thay vì một phỏng đoán đầy tự tin.

Những gì hàm băm không làm được

Chúng không che giấu đầu vào nhỏ. Băm là một chiều, nhưng nếu đầu vào đến từ một tập nhỏ khả năng, kẻ tấn công có thể băm từng khả năng rồi so sánh. Vì vậy một mã PIN hay mật khẩu ngắn đã băm bảo vệ rất ít, và vì vậy cụm từ khôi phục là những từ dài, ngẫu nhiên thay vì thứ dễ nhớ.

Chúng không chứng minh gì về ý nghĩa. Một giá trị băm chứng minh hai thứ giống hệt nhau. Nó chẳng nói gì về việc thứ nào trung thực. Giá trị băm được kiểm chứng hoàn hảo của một giao dịch độc hại vẫn là một giao dịch độc hại.

Chúng không phải mã hóa. Bạn không thể «giải mã» một giá trị băm để lấy lại bản gốc. Thứ gì tự nhận đảo ngược được giá trị băm là đang đoán.

Vì sao điều này liên quan tới bạn

Bạn hiếm khi tự tay tính một giá trị băm. Nhưng hiểu chúng giải thích vài điều mà nếu không sẽ trông như quy tắc phải học thuộc:

Vì sao txid chứng minh một khoản thanh toán tồn tại. Vì sao bạn không sửa được giao dịch đã xác nhận. Vì sao việc đào tiêu tốn năng lượng. Vì sao một địa chỉ chưa tiêu để lộ dấu vân tay chứ không phải khóa của bạn. Vì sao một cụm từ dài, ngẫu nhiên thì an toàn còn một cụm ngắn, khéo léo thì không.

Hàm băm là phần của tiền mã hóa cứ thế vận hành, lặng lẽ, hàng tỷ lần mỗi ngày. Biết chúng bảo đảm điều gì — và không bảo đảm điều gì — là một trong những cách rẻ nhất để hiểu hệ thống mà bạn gửi gắm tiền của mình.

Chia sẻ bài viết này

Bài viết liên quan