Hàm băm: Yếu tố cơ bản trong tiền điện tử

Quá trình hàm băm bao gồm việc tạo ra một đầu ra có kích thước cố định từ một đầu vào biến đổi. Điều này được thực hiện thông qua một công thức toán học được gọi là hàm băm, được triển khai dưới dạng một thuật toán.

Mặc dù không phải tất cả các hàm băm đều liên quan đến mật mã, nhưng các hàm băm mật mã là rất cần thiết trong thế giới tiền điện tử. Nhờ có chúng, các blockchain và các 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 cao.

Cả hàm băm thông thường và hàm băm mật mã đều chia sẻ một đặc điểm quan trọng: chúng là xác định. Điều này có nghĩa là, miễn là đầu vào không thay đổi, thuật toán hàm 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 hàm băm).

Cụ thể, thuật toán Hàm băm được sử dụng trong tiền điện tử được thiết kế như một hàm một chiều, điều này có nghĩa là gần như không thể đảo ngược nó mà không cần một lượng lớn thời gian và tài nguyên tính toán. Nói cách khác, rất dễ dàng để có được kết quả từ các đầu vào, nhưng cực kỳ phức tạp để làm ngược lại. Thông thường, càng khó khăn để suy đoán đầu vào, thì thuật toán Hàm băm càng an toàn.

Hoạt động của hàm băm

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

Để minh họa điều này, hãy áp dụng thuật toán Hàm băm SHA-256 ( được sử dụng trong Bitcoin ) cho các từ "Gate" và "Gate".

SHA-256

Nhập

Output (256 bits)

Cổng

9e14f90f0831e9d9c9f4f90df9e9f90c9f4f90df9e9f90c9f4f90df9e9f90c9

Cổng

1e9d9c9f4f90df9e9f90c9f4f90df9e9f90c9f4f90df9e9f90c9f4f90df9e9f

Quan sát cách những biến thể nhỏ ( như việc chuyển đổi chữ hoa thành chữ thường ) dẫn đến các giá trị Hàm băm hoàn toàn khác nhau. Tuy nhiên, khi sử dụng SHA-256, đầ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 là bao nhiêu. Hơn nữa, không quan trọng chúng ta xử lý hai từ này bao nhiêu lần với thuật toán, cả hai đầu ra sẽ giữ nguyên.

Mặt khác, nếu chúng ta áp dụng thuật toán Hàm băm SHA-1 cho cùng một đầu vào, chúng ta sẽ nhận được các kết quả sau:

SHA-1

Nhập

Output (160 bits)

Cổng

c9f4f90df9e9f90c9f4f90df9e9f90c9f4f90df

Cổng

f90df9e9f90c9f4f90df9e9f90c9f4f90df9e9

Các chữ cái SHA có nghĩa là Thuật toán Hàm băm Bảo mật, đề 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 thuộc nhóm SHA-2, cùng với SHA-512 và các biến thể khác. Hiện tại, chỉ có các nhóm SHA-2 và SHA-3 được coi là an toàn.

Tầm quan trọng của các hàm băm

Các hàm băm thông thường có một loạt các ứng dụng, bao gồm tìm kiếm trong cơ sở dữ liệu, phân tích big data và quản lý thông tin. Trong khi đó, cá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, như xác thực tin nhắn và tạo dấu vân tay. Trong bối cảnh của Bitcoin, các hàm băm mật mã là rất quan trọng trong quá trình khai thác và góp phần vào việc tạo ra các địa chỉ và khóa mới.

Tiềm năng thực sự của Hàm băm được thể hiện khi xử lý khối lượng lớn thông tin. Ví dụ, có thể xử lý một tệp lớn hoặc một tập dữ liệu thông qua một hàm băm và sử dụng đầu ra để nhanh chóng kiểm tra độ chính xác và tính toàn vẹn của dữ liệu. Điều này khả thi nhờ vào bản chất quyết định của các hàm băm: đầu vào luôn tạo ra một đầu ra đơn giản và ngắn gọn (Hàm băm). Các kỹ thuật như vậy loại bỏ nhu cầu lưu trữ và "nhớ" một khối lượng lớn thông tin.

Đặc biệt, Hàm băm rất hữu ích trong công nghệ blockchain. Chuỗi khối của Bitcoin liên quan đến nhiều quy trình sử dụng Hàm băm, chủ yếu trong quy trình khai thác. Thực tế, hầu như tất cả các giao thức tiền điện tử đều dựa vào Hàm băm để nhóm các giao dịch thành các khối và 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.

Các hàm băm mật mã

Một hàm băm được triển khai bằng các kỹ thuật mật mã được định nghĩa là hàm băm mật mã. Nói chung, việc phá vỡ một hàm băm mật mã đòi hỏi một nỗ lực đáng kể từ việc tấn công brute force. Nếu ai đó cố gắng "hoàn nguyên" một hàm băm mật mã, họ phải đoán đầu vào bằng cách thử và sai cho đến khi có được đầu ra chính xác. Tuy nhiên, cũng có thể có những đầu vào khác nhau tạo ra chính xác cùng một đầu ra, điều này được gọi là "va chạm".

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

Tóm tắt logic này trong ba câu ngắn gọn:

  • Kháng cự va chạm: Rất khó để tìm hai đầu vào khác nhau tạo ra cùng một Hàm băm làm đầu ra.

  • Kháng cự trước hình ảnh: Rất khó để "đảo ngược" một hàm băm ( và suy ra đầu vào từ đầu ra có sẵn ).

  • Kháng cự trước hình ảnh thứ hai: Rất khó để tìm thấy một đầu vào thứ hai va chạm với một đầu vào cụ thể.

Kháng cự va chạm

Một va chạm xảy ra khi các đầu vào khác nhau tạo ra cùng một Hàm băm. Do đó, một hàm băm được coi là kháng va chạm cho đến khi xảy ra một va chạm. Cần lưu ý rằng những va chạm này sẽ luôn tồn tại cho bất kỳ hàm băm nào, vì các đầu vào có thể là vô hạn, trong khi các đầu ra có thể là hữu hạn.

Nói cách khác, một hàm băm được coi là chống va chạm khi xác suất tìm thấy một va chạm là cực kỳ thấp, đòi hỏi hàng triệu năm tính toán. Do đó, mặc dù không có hàm băm nào miễn phí khỏi va chạm, một số hàm rất mạnh và có thể được coi là mạnh mẽ (ví dụ: SHA-256).

Giữa các thuật toán SHA khác nhau, các nhóm SHA-0 và SHA-1 không còn được coi là an toàn, vì đã phát hiện ra các va chạm. Hiện tại, các nhóm SHA-2 và SHA-3 được coi là kháng va chạm.

Kháng cự trước ảnh

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

Điều quan trọng cần lưu ý là thuộc tính này khác với thuộc tính trước, vì ở đây kẻ tấn công cố gắng đoán đầu vào bằng cách quan sát đầu ra có sẵn. Một va chạm, mặt khác, xảy ra khi ai đó tìm ra hai đầu vào khác nhau tạo ra cùng một đầu ra, bất kể đầu vào nào được sử dụng.

Tính năng kháng tiền tố của hàm băm rất hữu ích để bảo vệ dữ liệu, vì một hàm băm đơn giản của một thông điệp có thể chứng minh tính xác thực của nó mà không tiết lộ thông tin. Trên 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 hàm băm kết quả của mật khẩu thay vì mật khẩu dạng văn bản.

Kháng cự trước hình ảnh thứ hai

Tóm lại, chúng ta có thể nói rằng tính kháng chịu với hình ảnh thứ hai nằm giữa hai thuộc tính đã đề cập ở trên. Một cuộc tấn công hình ảnh thứ hai xảy ra khi ai đó thành công trong việc tìm ra một đầu vào cụ thể tạo ra cùng một đầu ra với một đầu vào khác đã biết.

Nói cách khác, tấn công tiền hình thứ hai bao gồm việc tìm các va chạm, nhưng thay vì tìm hai đầu vào ngẫu nhiên tạo ra cùng một Hàm băm, người ta tìm các đầu vào tạo ra cùng một Hàm băm được sinh ra bởi một đầu vào cụ thể khác.

Vì vậy, bất kỳ hàm băm nào kháng cự với va chạm cũng đều kháng cự với các cuộc tấn công hình ảnh trước thứ hai. Tuy nhiên, một cuộc tấn công hình ảnh có thể vẫn được thực hiện đối với một hàm kháng cự với va chạm, vì điều này liên quan đến việc tìm ra một đầu vào duy nhất từ một đầu ra duy nhất.

Khai thác

Có nhiều bước trong việc khai thác bitcoin liên quan đến các hàm băm, như kiểm tra số dư, liên kết các giao dịch đầu vào và đầu ra, và 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 an toàn là thực tế là các thợ mỏ phải thực hiện một lượng lớn các phép toán hàm băm để cuối cùng tìm ra giải pháp đúng cho khối tiếp theo.

Cụ thể, một thợ mỏ phải thử nhiều đầu vào khác nhau để tạo ra các giá trị Hàm băm cho các khối ứng cử viên của mình. Về cơ bản, anh ta chỉ có thể xác thực khối của mình nếu sản xuất một Hàm băm đầu ra bắt đầu bằng một số lượng nhất định các số không. Số lượng số không xác định độ khó của việc khai thác, và điều này thay đổi tùy theo tỷ lệ Hàm băm cụ thể của mạng.

Trong bối cảnh này, tỷ lệ Hàm băm đại diện cho mức độ sức mạnh tính toán được sử dụng để khai thác Bitcoin. Nếu tỷ lệ Hàm 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 giữ gần 10 phút. Ngược lại, nếu một số thợ mỏ quyết định rời bỏ hoạt động, dẫn đến sự giảm sút mạnh mẽ trong tỷ lệ Hàm băm, độ khó khai thác sẽ được điều chỉnh, làm cho nó dễ hơn ( cho đến khi thời gian trung bình của khối trở lại 10 phút ).

Điều quan trọng là phải hiểu rằng các thợ mỏ không cần phải tìm kiếm các va chạm, vì có nhiều Hàm băm có thể tạo ra đầu ra hợp lệ ( bắt đầu với một số lượng nhất định của các số không ). Do đó, có nhiều giải pháp khả thi cho một khối cụ thể, và các thợ mỏ chỉ cần tìm một giải pháp đáp ứng ngưỡng do mức độ khó của việc khai thác xác định.

Vì việc khai thác Bitcoin là một nhiệm vụ tốn kém, các thợ mỏ không có động lực để lừa dối hệ thống, điều này sẽ dẫn đến tổn thất tài chính đáng kể. Càng nhiều thợ mỏ tham gia vào chuỗi khối, nó sẽ càng lớn và mạnh mẽ hơn.

Suy ngẫm cuối cùng

Không còn nghi ngờ gì nữa, các hàm băm là một công cụ cơ bản trong tin học, đặc biệt khi nói đến khối lượng dữ liệu lớn. Khi được kết hợp với mật mã, các thuật toán hàm băm có thể linh hoạt và cung cấp sự bảo mật cũng như tính xác thực theo nhiều cách khác nhau. Do đó, các hàm băm mật mã là thiết yếu cho gần như tất cả 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 là cực kỳ hữu ích cho bất kỳ ai quan tâm đến công nghệ blockchain.

Xem bản gốc
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
  • Phần thưởng
  • Bình luận
  • Đăng lại
  • Chia sẻ
Bình luận
0/400
Không có bình luận
  • Ghim
Giao dịch tiền điện tử mọi lúc mọi nơi
qrCode
Quét để tải xuống ứng dụng Gate
Cộng đồng
Tiếng Việt
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)