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. Điều nà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 liên quan đến việc sử dụng mật mã, nhưng cái gọi là hàm băm mật mã là cốt lõi của tiền điện tử. Nhờ chúng, chuỗi khối và các hệ thống phân tán khác có thể đạt được mức độ bảo mật và toàn vẹn dữ liệu đáng kể.

Cả hai hàm băm thông thường và mật mã đều có tính xác định. Mang tính xác định 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à tóm tắt hoặc băm).

Thông thường, các thuật toán băm của 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 hoàn nguyên nếu không có lượng lớn thời gian và tài nguyên tính toán. 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). Nói chung, càng khó tìm đầu vào thì thuật toán băm càng được coi là an toà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ó cho mỗi thuật toán băm luôn không đổi. Chẳng hạn, thuật toán SHA-256 chỉ có thể tạo ra kết quả đầu ra 256 bit, trong khi SHA-1 sẽ luôn tạo ra bản tóm tắt 160 bit.

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

SHA-256

Đầu vào

Đầu ra (256 bit)

Binance

f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191

binance

59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2


Lưu ý rằng một thay đổi nhỏ (cách viết hoa của chữ cái đầu tiên) sẽ dẫn đến giá trị băm hoàn toàn khác. Nhưng 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 đầu vào. Ngoài ra, không quan trọng chúng ta chạy hai từ đó bao nhiêu lần trong thuật toán, hai kết quả đầu ra sẽ không đổi.

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

SHA-1

Đầu vào

Đầu ra (160 bit)

Binance

7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1

binance

e58605c14a76ff98679322cca0eae7b3c4e08936


Đáng chú ý, từ viết tắt SHA là viết tắt của Thuật toán băm an toàn. Nó đề cập đến một tập hợp các hàm băm mật mã bao gồm các thuật toán SHA-0 và SHA-1 cùng với 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 quan trọng?

Hàm băm thông 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, 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à lấy dấu vân tay kỹ thuật số. Khi nói đến Bitcoin, hàm băm mật mã là một phần thiết yếu của quy trình khai thác và cũng đóng vai trò trong việc tạo địa chỉ và khóa mới.

Sức mạnh thực sự của việc băm xuất hiện khi xử lý lượng thông tin khổng lồ. Chẳng hạn, người 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 đầ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 chúng đều nằm trong quá trình khai thác. Trên thực tế, gần như 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, đồng thời tạo ra các liên kết mật mã giữa mỗi khối, tạo ra một chuỗi khối một cách hiệu quả.


Hàm băm mật mã

Một lần nữa, 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ã. Nói chung, việc phá vỡ hàm băm mật mã đòi hỏi vô số nỗ lực mạnh mẽ. Để một người “hoàn nguyên” hàm băm mật mã, họ sẽ cần phải đoán đầu vào là gì bằng cách thử và sai cho đến khi tạo ra đầu ra tương ứng. 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 đó sẽ xảy ra “sự xung đột”.

Về mặt kỹ thuật, hàm băm mật mã cần tuân theo ba thuộc tính để được coi là an toàn hiệu quả. Chúng ta có thể mô tả những điều đó là 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 bất kỳ hai đầu vào riêng biệt nào tạo ra cùng một hàm băm như đầu ra.

  • Khả năng chống tiền ảnh: không thể “hoàn nguyên” hàm băm (tìm đầu vào từ một đầu ra nhất định).

  • Khả năng chống tiền hình ảnh thứ hai: không thể tìm thấy bất kỳ đầu vào thứ hai nào 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. Do đó, hàm băm được coi là có khả năng chống va chạm cho đến thời điểm 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 khả năng 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ù thực tế là không có hàm băm không xung đột, một số trong số chúng đủ mạnh để được coi là có khả năng chống lại (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 an toàn vì đã phát hiện thấy xung đột. Hiện tại, nhóm SHA-2 và SHA-3 được coi là có khả năng chống va chạm.


Kháng tiền ảnh

Tính chất 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à có khả năng chống tiền ảnh khi có xác suất rất thấp về việc ai đó 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ì kẻ tấn công sẽ cố đoán đầu vào là gì bằng cách xem đầ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.

Đặc tính chống tiền ảnh có giá trị trong việc bảo vệ dữ liệu vì một hàm băm đơn giản của tin nhắn có thể chứng minh tính xác thực của nó mà không cần tiết lộ thông tin. 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 ở dạng văn bản gốc.


Kháng tiền ảnh thứ hai

Để đơn giản hóa, chúng ta có thể nói rằng điện trở 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 cùng một đầu ra của một đầu vào khác mà họ đã biết.

Nói cách khác, một 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 tìm kiếm một đầu vào tạo ra cùng một hàm băm được tạo bởi một đầu vào cụ thể khác.

Do đó, bất kỳ hàm băm nào có khả năng chống va chạm cũng có khả năng chống lại các cuộc tấn công tiền ảnh thứ hai, vì tấn công sau sẽ luôn hàm ý một 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ó ngụ ý 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 hàm băm, chẳng hạn như kiểm tra số dư, liên kết đầu vào và đầu ra của giao dịch cũng như băm các giao dịch trong 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 trở nên an toàn là do thợ đào cần thực hiện vô số hoạt động băm để cuối cùng tìm ra giải pháp hợp lệ cho khối tiếp theo.

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 ứng viên của họ. 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 theo tốc độ băm dành cho mạng.

Trong trường hợp này, tỷ lệ băm thể hiện lượng điện năng máy tính đang được đầu tư vào việc khai thác Bitcoin. Nếu tốc độ băm của mạng tăng lên, 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. Ngược lại, nếu một số thợ mỏ quyết định ngừng khai thác, khiến tốc độ băm giảm đáng kể, độ khó khai thác sẽ được điều chỉnh, 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 quay trở lại 10 phút).

Lưu ý rằng người khai thác không phải tìm xung đột 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 nhất định). 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 chỉ phải tìm một trong số chúng - theo ngưỡng được xác định bởi độ khó khai thác.

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


Bớt tư tưởng

Không còn nghi ngờ gì nữa, hàm băm là công cụ thiết yếu trong khoa học máy tính, đặc biệt là khi xử lý lượng dữ liệu khổng lồ. Khi kết hợp với mật mã, thuật toán băm có thể khá linh hoạt, cung cấp tính bảo mật và xác thực theo nhiều cách khác nhau. 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.