Hàm băm (hash)

Hash có nghĩa là băm, cụ thể trong khoa học máy tính là Hash Function nghĩa là giải thuật nhằm băm dữ liệu ra một giá trị băm cụ thể. Tức là chuyển đổi dữ liệu này thành một dạng dữ liệu khác. Việc băm một dữ liệu có thể được sử dụng với nhiều mục đích khác nhau như nhằm mã hóa mật mã (cryptography), nén (compression), tạo tổng kiểm tra (checksum generation) và lập chỉ mục dữ liệu (data indexing).

Các hàm băm khác nhau sẽ tạo ra các kết quả đầu ra có kích thước khác nhau, nhưng kích thước của các kết quả đầu ra có thể nhận được luôn cố định, không đổi. Ví dụ, thuật toán SHA-256 chỉ có thể tạo ra các kết quả đầu ra có kích thước 256 bit, trong khi thuật toán SHA-1 sẽ luôn tạo ra một kết quả đại diện có kích thước 160-bit.

Để minh họa, hãy chạy các từ “Binance” và “binance” qua thuật toán băm SHA-256 (thuật toán được sử dụng trong Bitcoin).


SHA-256. (Nguồn: academy.binance.com)

Có thể thấy một thay đổi nhỏ (viết hoa chữ cái đầu tiên) dẫn đến một giá trị băm hoàn toàn khác. Tuy nhiên, do chúng ta đang sử dụng SHA-256, các kết quả đầu ra luôn có kích thước cố định là 256-bit (hoặc 64 ký tự) - cho dù kích thước dữ liệu đầu vào là bao nhiêu. Hai kết quả đầu ra này vẫn giữ nguyên cho dù chúng ta chạy hai từ này qua thuật toán này bao nhiêu lần.

Ngược lại, khi chúng ta chạy các dữ liệu đầu vào này qua thuật toán băm SHA-1, chúng ta sẽ thu được các kết quả sau:


SHA-1. (Nguồn: academy.binance.com)

SHA là từ viết tắt của Secure Hash Algorithms (Thuật toán Băm Bảo mật). Đây là một tập hợp các hàm băm mật mã hóa, bao gồm các hàm băm SHA-0, SHA-1 và các nhóm hàm băm SHA-2 và SHA-3. SHA-256, cùng với SHA-512 và các hàm băm khác, thuộc về nhóm hàm băm SHA-2. Hiện nay, chỉ các nhóm SHA-2 và SHA-3 được xem là các nhóm hàm băm bảo mật.



Các hàm băm truyền thống có nhiều trường hợp sử dụng, bao gồm tra cứu cơ sở dữ liệu, phân tích tệp lớn và quản lý dữ liệu. Mặt khác, các hàm băm mật mã còn được sử dụng rộng rãi trong các ứng dụng bảo mật thông tin, chẳng hạn như xác thực thông điệp và dấu vân tay kỹ thuật số. Khi được sử dụng trong Bitcoin, các hàm băm mật mã là một phần thiết yếu của quá trình đào và cũng góp phần tạo ra các địa chỉ và khóa mới.

Băm thật sự là một công cụ mạnh mẽ khi cần xử lý một lượng thông tin lớn. Ví dụ, chúng ta có thể chạy một tệp hoặc tập dữ liệu lớn thông qua hàm băm và sau đó sử dụng kết quả đầu ra từ của nó để nhanh chóng xác minh tính chính xác và tính toàn vẹn của dữ liệu. Điều này là có thể bởi vì tính chất tất định của các hàm băm: đầu vào sẽ luôn dẫn đến một đầu ra ngắn gọn, đơn giản hóa (băm). Nhờ vào kỹ thuật này, sẽ không còn phải lưu trữ và “ghi nhớ” một lượng thông tin lớn nữa.

Băm là quy trình đặc biệt hữu ích trong công nghệ blockchain. Blockchain Bitcoin có một số hoạt động sử dụng quy trình băm, hầu hết các hoạt động đó là trong quá trình đào. Trên thực tế, gần như tất cả các giao thức tiền mã hóa đều dựa vào băm để liên kết và rút gọn các nhóm giao dịch thành các khối và cũng để tạo ra các liên kết mật mã giữa mỗi khối, tạo ra một blockchain một cách hiệu quả.

Trong lĩnh vực công nghệ thông tin, không có gì là không thể bị hack, nhưng hàm băm đã gần chạm đến giới hạn đó. Trong thời điểm hiện tại, sẽ mất hàng triệu hoặc hàng tỷ năm để hack một hàm băm. Nhưng vẫn còn đó những mối lo ngại về máy tính lượng tử. Về lý thuyết, điều này có thể phá vỡ các hàm băm được sử dụng bởi Bitcoin. Các nhà phát triển sẽ quản lý để bảo mật mạng để ngăn chặn điều này.