Băm là 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. Quá trình này được thực hiện thông qua một công thức toán học gọi là "hàm băm" (được triển khai dưới dạng thuật toán băm).

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 “hàm băm mật mã” là trọng tâm của tiền điện tử. Nhờ các hàm băm mật mã, có thể đạt được mức độ toàn vẹn và bảo mật dữ liệu cao trong blockchain và các hệ thống phân tán khác.

Cả hàm băm truyền thống và hàm băm mật mã đều có tính xác định. Tính xác định đề cập đến thực tế là thuật toán băm sẽ luôn tạo ra cùng một đầu ra (còn được gọi là "giá trị băm" hoặc "giá trị băm") miễn là đầu vào không thay đổi.

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


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

Các hàm băm khác nhau 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ủa mỗi thuật toán băm luôn giống nhau. Ví dụ: thuật toán SHA-256 chỉ có thể tạo ra đầu ra 256 bit, trong khi SHA-1 luôn tạo ra bản tóm tắt 160 bit.

Để minh họa điều này, chúng tôi đã 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

đi vào

Đầu ra (256 bit)

Binance

f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191

binance

59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2


Lưu ý rằng một thay đổi nhỏ trong cách viết hoa của chữ cái đầu tiên sẽ tạo ra giá trị băm hoàn toàn khác. Bất kể độ dài của giá trị đầu vào là bao nhiêu, đầu ra sử dụng SHA-256 luôn có độ dài cố định là 256 bit (hoặc 64 ký tự). Hơn nữa, cho dù thuật toán có chạy hai từ này bao nhiêu lần thì đầu ra của cả hai vẫn giữ nguyên.

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

SHA-1

đi vào

Đầu ra (160 bit)

Binance

7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1

binance

e58605c14a76ff98679322cca0eae7b3c4e08936


Xin lưu ý rằng "SHA" là từ viết tắt của Thuật toán băm an toàn. Thuật toá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 như các bộ SHA-2 và SHA-3. SHA-256, cùng với SHA-512 và các biến thể khác, là một phần của nhóm SHA-2. Hiện tại chỉ có nhóm SHA-2 và SHA-3 được coi là an toàn.


Tầm quan trọng của hàm băm là gì?

Hàm băm truyền thống có nhiều trường hợp sử dụng khác nhau, 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. 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 như xác thực tin nhắn và lấy dấu vân tay kỹ thuật số. Trong trường hợp Bitcoin, các hàm băm mật mã là một phần không thể thiếu trong quá trình khai thác, ảnh hưởng đến cả địa chỉ mới và việc tạo khóa.

Hoạt động băm thực sự mạnh mẽ khi xử lý lượng lớn thông tin. Ví dụ: chạy một tệp hoặc tập dữ liệu lớn thông qua hàm băm, sau đó sử dụng đầu ra của nó để nhanh chóng xác minh tính chính xác và đầy đủ của dữ liệu. Hàm băm hoạt động vì chúng có tính xác định: đầu vào luôn tạo ra đầu ra được nén, đơn giản hóa (tức là giá trị băm). Công nghệ này giúp loại bỏ nhu cầu lưu trữ và “ghi nhớ” lượng lớn dữ liệu.

Hoạt động băm đặc biệt hữu ích trong lĩnh vực công nghệ blockchain. Chuỗi khối Bitcoin có nhiều hoạt động liên quan đến hoạt động băm, hầu hết trong số đó là một phần của quy 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 để kết nối các nhóm giao dịch và nén chúng thành các khối, đồng thời tạo ra các liên kết mật mã giữa các khối riêng lẻ, tạo ra một chuỗi khối một cách hiệu quả.


hàm băm mật mã

Tương tự như vậy, các hàm băm triển khai các kỹ thuật mã hóa có thể được định nghĩa là các 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ẽ. Để "khôi phục" hàm băm mật mã, hãy đoán đầu vào thông qua thử và sai cho đến khi tạo ra đầu ra tương ứng. Tuy nhiên, cũng có thể các đầu vào khác nhau lại tạo ra cùng một đầu ra, do đó xảy ra "xung đột".

Về mặt kỹ thuật, hàm băm mật mã cần có ba thuộc tính để được coi là có hiệu quả trong việc đảm bảo an ninh. Ba thuộc tính chính là chống va chạm, chống tiền ảnh và chống tiền ảnh thứ hai.

Trước khi thảo luận riêng từng thuộc tính, hãy tóm tắt ngắn gọn logic của từng thuộc tính.

  • Khả năng chống va chạm: Không thể có hai đầu vào khác nhau tạo ra cùng một đầu ra giá trị băm.

  • Chống khả năng tưởng tượng: Không thể "khôi phục" hàm băm (tức là không thể tìm thấy đầ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 khác xung đột với đầu vào cụ thể.


kháng cự xung đột

Như đã đề cập trước đó, xung đột xảy ra khi các đầu vào khác nhau tạo ra cùng một giá trị băm. Do đó, hàm băm được coi là có khả năng chống va chạm miễn là không ai phát hiện ra xung đột. Lưu ý rằng vì đầu vào có thể có là vô hạn và đầu ra có thể có là hữu hạn nên luôn có xung đột với hàm băm.

Giả sử rằng xác suất tìm thấy va chạm thấp tới hàng triệu năm, hàm băm có thể nói là có khả năng chống va chạm. Do đó, mặc dù trên thực tế không có hàm băm không va chạm nhưng một số trong số chúng (chẳng hạn như SHA-256) được coi là có khả năng chống va chạm miễn là chúng đủ mạnh.

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


Chống hình ảnh

Đặc tính phản biểu tượng có liên quan đến khái niệm hàm số một chiều. Hàm băm được cho là chống hình ảnh, giả sử rằng xác suất tìm thấy đầu vào tạo ra đầu ra cụ thể là cực kỳ thấp.

Lưu ý rằng kẻ tấn công nhìn vào một đầu ra nhất định để đoán đầu vào, vì vậy thuộc tính này khác với khả năng chống va chạm. Hơn nữa, hai đầu vào khác nhau tạo ra cùng một đầu ra sẽ xung đột, nhưng việc sử dụng đầu vào nào không thực sự quan trọng.

Các đặc tính chống khả năng hình ả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 một tin nhắn có thể chứng minh tính xác thực của nó mà không 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 hàm băm được tạo từ mật khẩu thay vì mật khẩu ở dạng văn bản rõ ràng.


Khả năng chống lại tiền ảnh thứ hai

Nói tóm lại, khả năng chống lại tiền ảnh thứ hai nằm ở đâu đó giữa hai đặc tính được đề cập ở trên. Cuộc tấn công tiền ảnh thứ hai xảy ra nếu ai đó có thể tìm thấy một đầu vào cụ thể tạo ra đầu ra giống với một đầu vào đã biết khác.

Nói cách khác, cuộc tấn công tiền ảnh thứ hai có liên quan đến việc tìm kiếm 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 giá trị băm, bạn tìm kiếm một đầu vào khác tạo ra cùng giá trị băm cho đầu vào cụ thể.

Cuộc tấn công tiền ảnh thứ hai thường có nghĩa là có xung đột. 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. Tuy nhiên, có khả năng chống va chạm có nghĩa là có thể tìm thấy một đầu vào từ một đầu ra duy nhất, do đó kẻ tấn công vẫn có thể thực hiện một cuộc tấn công tiền ảnh nhằm vào chức năng chống va chạm.


Khai thác tiền mã hoá

Hàm băm được sử dụng trong một số bước trong quá trình khai thác Bitcoin, chẳng hạn như kiểm tra số dư, nối đầu vào và đầu ra giao dịch cũng như băm các giao dịch trong cùng một khối để tạo thành cây Merkle. Tuy nhiên, một trong những lý do chính khiến chuỗi khối Bitcoin an toàn là vì thợ đào cần thực hiện vô số thao tác băm trước khi cuối cùng họ có thể 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 băm khối ứng viên. Về cơ bản, người khai thác chỉ có thể xác thực một khối nếu hàm băm đầu ra được tạo bắt đầu bằng một số số 0 nhất định. Số 0 xác định độ khó khai thác và thay đổi theo tốc độ băm dành riêng cho mạng.

Trong trường hợp này, tỷ lệ băm thể hiện lượng sức mạnh tính toán được đưa vào khai thác Bitcoin. Nếu tốc độ băm của 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 để tạo khối vẫn ở mức gần 10 phút. Ngược lại, nếu nhiều thợ mỏ quyết định ngừng khai thác khiến hash rate giảm đáng kể thì độ khó khai thác sẽ giảm xuống cho đến khi thời gian khối trung bình trở về 10 phút.

Lưu ý rằng thợ mỏ có thể tạo nhiều giá trị băm dưới dạng đầu ra hợp lệ (bắt đầu bằng một số số 0 nhất định), do đó họ không cần tìm kiếm xung đột. Có nhiều giải pháp khả thi cho một khối, nhưng tùy thuộc vào ngưỡng độ khó khai thác, người khai thác chỉ phải tìm một trong các giải pháp.

Khai thác bitcoin là một nhiệm vụ có chi phí cao và người khai thác không cần phải gian lận hệ thống, thay vào đó sẽ gây ra tổn thất tài chính đáng kể. Càng nhiều người khai thác tham gia chuỗi khối, chuỗi khối càng trở nên lớn hơn và mạnh mẽ hơn.


Tóm tắt

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