Băm đề cập đến quá trình tạo đầu ra có kích thước cố định từ đầu vào có kích thước thay đổi. Phương pháp như vậy được thực hiện thông qua việc sử dụng các công thức toán học được gọi là hàm băm (được triển khai dưới dạng thuật toán băm).

Mặc dù không phải tất cả các hàm băm đều sử dụng mật mã một cách nhất quán, nhưng các hàm băm mật mã là trọng tâm của tiền điện tử. Thông qua các tính năng này, chuỗi khối và các loại hệ thống phân tán khác có thể đạt được mức độ toàn vẹn và bảo mật dữ liệu đáng kể.

Hàm băm thông thường và mật mã có tính xác định. Điều này có nghĩa là miễn là đầu vào không thay đổi thì thuật toán băm sẽ luôn tạo ra cùng một đầu ra (còn được gọi là hàm băm hoặc hàm băm).

Thông thường, các thuật toán băm tiền điện tử được thiết kế dưới dạng hàm một chiều, nghĩa là chúng không thể dễ dàng bị thu hồi nếu không có lượng lớn thời gian và tài nguyên máy tính. Nói cách khác, việc tạo đầu ra từ đầu vào là khá dễ dàng, nhưng lại tương đối khó để đi theo hướng ngược lại (chỉ tạo đầu vào từ đầu ra). Nhìn chung, càng khó tìm mục nhập thì thuật toán băm càng được xem xét an toàn hơn.


Hàm băm hoạt động như thế nào?

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

Để minh họa, hãy áp dụng hàm băm SHA-256 (được sử dụng cho Bitcoin) cho các từ Binance và binance.

SHA-256

Cổng vào

Xuất kích (256 bit)

Binance

f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191

binance

59bba357145ca539dcd1ac957abc1ec58339ddcae7f5e8b5da0c36624784b2


Lưu ý rằng một thay đổi nhỏ (ở đây là trường hợp của chữ cái đầu tiên) đã dẫn đến một giá trị băm hoàn toàn khác. Vì chúng tôi đang sử dụng SHA-256 nên đầu ra sẽ luôn có kích thước cố định là 256 bit (hoặc 64 ký tự) - bất kể kích thước của đầu vào. Ngoài ra, cho dù người ta áp dụng thuật toán này cho những từ cụ thể này bao nhiêu lần thì cả hai kết quả đầu ra sẽ luôn giống nhau.

Mặt khác, nếu chúng ta sử dụng các mục tương tự thông qua thuật toán băm SHA-1, chúng ta sẽ thu được các kết quả sau:

SHA-1

Cổng vào

Xuất kích (160 bit)

Binance

7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1

binance

e58605c14a76ff98679322cca0eae7b3c4e08936


Từ viết tắt SHA là viết tắt của Thuật toán băm an toàn. Điều này đề cập đến một tập hợp các hàm mật mã bao gồm thuật toán SHA-0 và SHA-1 cũng như các nhóm SHA-2 và SHA-3. SHA-256 là một phần của nhóm SHA-2, cùng với SHA-512 và các biến thể khác. Hiện tại, chỉ có nhóm SHA-2 và SHA-3 được coi là an toàn.


Tại sao chúng lại quan trọng?

Các hàm băm thông thường có nhiều trường hợp sử dụng, bao gồm tìm kiếm cơ sở dữ liệu, phân tích tệp lớn và quản lý dữ liệu. Mặt khác, hàm băm mật mã đượ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 tin nhắn và in dấu vân tay. Khi nói đến Bitcoin, hàm băm mật mã là một phần thiết yếu trong quá trình khai thác và cũng đóng vai trò tạo địa chỉ và khóa mới.

Sức mạnh thực sự của băm được bộc lộ khi xử lý lượng thông tin khổng lồ. Ví dụ: người ta có thể chạy một tệp hoặc tập dữ liệu thông qua hàm băm và sau đó sử dụng đầu ra 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 có thể thực hiện được do tính chất xác định của hàm băm: đầu vào sẽ luôn dẫn đến đầu ra được đơn giản hóa, cô đọng (băm). Kỹ thuật như vậy loại bỏ nhu cầu lưu trữ và ghi nhớ lượng lớn dữ liệu.

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


Hàm băm mật mã

Hàm băm triển khai các kỹ thuật mã hóa có thể được định nghĩa là hàm băm mật mã. Thông thường, việc phá vỡ hàm băm mật mã đòi hỏi vô số nỗ lực mạnh mẽ. Để một cá nhân đảo ngược hàm băm mật mã, họ sẽ cần phải đoán đầu vào là gì qua nhiều lần thử và thất bại cho đến khi tạo ra đầu ra chính xác. Tuy nhiên, cũng có khả năng các đầu vào khác nhau tạo ra cùng một đầu ra, trong trường hợp đó xảy ra sự thông đồng.

Về mặt kỹ thuật, hàm băm mật mã phải tuân theo ba thuộc tính để được coi là an toàn hiệu quả. Chúng ta có thể mô tả điều này như sau: khả năng chống va chạm, khả năng chống tiền ảnh và khả năng chống tiền ảnh thứ hai.

Trước khi thảo luận về từng thuộc tính, hãy tóm tắt logic của chúng trong ba câu ngắn.

  • Khả năng chống va chạm: Không thể tìm thấy hai đầu vào riêng biệt tạo ra cùng một hàm băm như đầu ra.

  • Cường độ tiền ảnh: Không thể đảo ngược hàm băm (tìm đầu vào từ một đầu ra nhất định).

  • Khả năng chống tiền ảnh thứ hai: Không thể tìm thấy đầu vào thứ hai va chạm với đầu vào được chỉ định.


Chống va chạm

Như đã đề cập, xung đột xảy ra khi các đầu vào khác nhau tạo ra cùng một hàm băm. Vì vậy, hàm băm được coi là có khả năng chống va chạm cho đến khi ai đó tìm thấy xung đột. Lưu ý rằng xung đột sẽ luôn tồn tại đối với bất kỳ hàm băm nào vì đầu vào có thể có là vô hạn, trong khi đầu ra có thể có là hữu hạn.

Nói cách khác, hàm băm có khả năng chống va chạm khi cơ hội tìm thấy va chạm thấp đến mức đòi hỏi hàng triệu năm tính toán. Vì vậy, mặc dù không có hàm băm không xung đột nhưng một số trong số chúng đủ mạnh để được coi là mạnh mẽ (ví dụ: SHA-256).

Trong số các thuật toán SHA khác nhau, nhóm SHA-0 và SHA-1 không còn được coi là an toàn vì đã phát hiện thấy xung đột. Hiện tại, SHA-2 và SHA-3 được coi là có khả năng chống va chạm.


Kháng tiền ảnh

Đặc tính kháng tiền ảnh có liên quan đến khái niệm hàm một chiều. Hàm băm được coi là chống hình ảnh khi có xác suất rất thấp để tìm thấy đầu vào tạo ra một đầu ra cụ thể.

Lưu ý rằng thuộc tính này khác với thuộc tính trước, vì ở đây kẻ tấn công giả định sẽ cố gắng đoán đầu vào bằng cách nhìn vào đầu ra nhất định. Mặt khác, xung đột xảy ra khi ai đó tìm thấy hai đầu vào khác nhau tạo ra cùng một đầu ra, nhưng việc sử dụng đầu vào nào không quan trọng.

Thuộc tính kháng tiền ảnh có giá trị trong việc bảo vệ dữ liệu vì chỉ cần băm một tin nhắn là có thể chứng minh tính xác thực của nó mà không cần phải tiết lộ nội dung của nó. Trong thực tế, nhiều nhà cung cấp dịch vụ và ứng dụng web lưu trữ và sử dụng các giá trị băm được tạo từ mật khẩu thay vì mật khẩu văn bản thuần túy.


Khả năng chống lại hình ảnh thứ hai

Để đơn giản hóa, chúng ta có thể nói rằng lực cản tiền ảnh thứ hai nằm ở đâu đó giữa hai tính chất còn lại. Cuộc tấn công tiền ảnh thứ hai xảy ra khi ai đó có thể tìm thấy một đầu vào cụ thể tạo ra đầu ra giống như một đầu vào khác mà họ đã biết.

Nói cách khác, cuộc tấn công tiền ảnh thứ hai liên quan đến việc tìm ra xung đột, nhưng thay vì tìm kiếm hai đầu vào ngẫu nhiên tạo ra cùng một hàm băm, chúng ta tìm kiếm một đầu vào tạo ra cùng một hàm băm với một đầu vào cụ thể khác.

Do đó, bất kỳ hàm băm chống va chạm nào cũng có khả năng chống lại các cuộc tấn công tiền ảnh thứ hai, bởi vì những cuộc tấn công này sẽ luôn liên quan đến xung đột. Tuy nhiên, người ta vẫn có thể thực hiện tấn công tiền ảnh vào chức năng chống va chạm, vì nó liên quan đến việc tìm một đầu vào từ một đầu ra duy nhất.


Khai thác mỏ

Có nhiều bước trong quá trình khai thác Bitcoin liên quan đến các hàm băm, chẳng hạn như kiểm tra số dư, liên kết đầu vào/đầu ra của giao dịch và băm các giao dịch thành một khối để tạo thành Cây Merkle. Nhưng một trong những lý do chính khiến chuỗi khối Bitcoin an toàn là vì thợ đào phải thực hiện vô số thao tác băm để tìm giải pháp hợp lệ cho việc tạo và thêm khối.

Cụ thể, người khai thác phải thử một số đầu vào khác nhau khi tạo giá trị băm cho khối mà họ đang đăng ký. Về bản chất, họ sẽ chỉ có thể xác thực khối của mình nếu họ tạo ra hàm băm đầu ra bắt đầu bằng một số số 0 nhất định. Số lượng số 0 là yếu tố quyết định độ khó khai thác và nó thay đổi tùy thuộc vào tốc độ băm dành cho mạng.

Trong trường hợp này, tỷ lệ băm biểu thị lượng năng lượng tính toán được đầu tư vào việc khai thác Bitcoin. Nếu tốc độ băm mạng tăng, giao thức Bitcoin sẽ tự động điều chỉnh độ khó khai thác để thời gian trung bình cần thiết để khai thác một khối vẫn ở mức gần 10 phút. Mặt khác, nếu một số thợ mỏ quyết định ngừng khai thác, dẫn đến tốc độ băm giảm đáng kể, thì độ khó khai thác sẽ được điều chỉnh, điều này sẽ giúp việc khai thác trở nên dễ dàng hơn (cho đến khi thời gian khối trung bình giảm xuống còn 10 phút).

Lưu ý rằng người khai thác không cần kiểm tra các xung đột có thể xảy ra vì có nhiều giá trị băm mà họ có thể tạo dưới dạng đầu ra hợp lệ (bắt đầu bằng một số số 0 cụ thể). Vì vậy, có một số giải pháp khả thi cho một khối nhất định và người khai thác phải tìm ra một giải pháp - theo ngưỡng được xác định bởi độ khó khai thác.

Vì khai thác Bitcoin là một nhiệm vụ có chi phí cao nên những người khai thác không có lý do gì để gian lận trong hệ thống vì điều này sẽ dẫn đến tổn thất tài chính đáng kể. Càng có nhiều thợ mỏ trong một blockchain, và do đó nó càng lớn thì nó càng trở nên mạnh hơn.


Để kết luận

Không còn nghi ngờ gì nữa, hàm băm là công cụ thiết yếu trong điện toán, đặc biệt là khi xử lý lượng dữ liệu khổng lồ. Kết hợp với mật mã, thuật toán băm có thể khá linh hoạt, đặc biệt là về bảo mật và xác thực theo nhiều cách. Do đó, các hàm băm mật mã rất quan trọng đối với hầu hết các mạng tiền điện tử, vì vậy việc hiểu các thuộc tính và cơ chế hoạt động của chúng chắc chắn hữu ích cho bất kỳ ai quan tâm đến công nghệ blockchain.