Hàm băm: Khái niệm cơ bản trong mật mã học và blockchain

Hàm băm là một quá trình biến đổi dữ liệu có bất kỳ kích thước nào thành một chuỗi có độ dài cố định. Quy trình này được thực hiện thông qua 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.

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 được gọi là 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 chuỗi khối và các hệ thống phi tập trung khác đạt được mức độ toàn vẹn và an ninh dữ liệu cao.

Các hàm băm, cả thông thường và mật mã, đều là xác định. Điều này có nghĩa là, chỉ cần đầu vào không thay đổi, thuật toán sẽ luôn tạo ra cùng một đầu ra ( cũng được gọi là giá trị băm hoặc hàm băm ).

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

Chức năng của một 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 khả thi cho mỗi thuật toán hàm băm luôn là cố định. Ví dụ, thuật toán SHA-256 chỉ có thể tạo ra kết quả 256 bit, trong khi SHA-1 luôn tạo ra một giá trị băm 160 bit.

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

SHA-256

Nhập

Salida (256 bits)

Cổng

e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

Cổng

b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9

Lưu ý rằng một thay đổi tối thiểu (chữ hoa của chữ cái đầu tiên) đã dẫn đến một giá trị Hàm băm hoàn toàn khác. Tuy nhiên, khi sử dụng SHA-256, các đầ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. Hơn nữa, không quan trọng chúng ta chạy hai từ qua thuật toán bao nhiêu lần, hai đầu ra sẽ vẫn không thay đổi.

Trong khi đó, nếu chúng ta thực hiện các đầu vào giống nhau thông qua thuật toán Hàm băm SHA-1, chúng ta sẽ nhận được các kết quả sau:

SHA-1

Nhập

Salida (160 bits)

Cổng

3a7bd3e2360a3d29eea436fcfb7e44c735d117c4

Cổng

5df9954f1ca26eabf18c663cc9258ba7f7712c45

Điều quan trọng cần đề cập là SHA có nghĩa là Thuật toán Hàm băm Bảo mật. 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ó cá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

Các hàm băm thông thường có nhiều ứng dụng, bao gồm tìm kiếm trong cơ sở dữ liệu, phân tích tệp lớn và quản lý dữ liệu. Ngược lại, 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 Bitcoin, các 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ò quan trọng trong việc tạo ra các địa chỉ và khóa mới.

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

Hàm băm đặc biệt hữu ích trong bối cảnh công nghệ blockchain. Chuỗi khối của Bitcoin có nhiều hoạt động liên quan đến hàm băm, hầu hết trong số đó nằm trong quá trình khai thác. 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ô đặ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 hiệu quả một chuỗi khối.

Hàm băm criptográficas

Một hàm băm thực hiện các kỹ thuật mã hóa có thể được định nghĩa là một hàm băm mật mã. Nói chung, việc phá vỡ một hàm băm mật mã yêu cầu vô số nỗ lực brute force. Để một người "đảo ngược" một hàm băm mật mã, họ sẽ phải đoán đầu vào là gì thông qua thử nghiệm và sai sót cho đến khi nhận được đầ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 kết quả, trong trường hợp đó sẽ xảy ra một "va chạm".

Về mặt kỹ thuật, một hàm băm mật mã phải đáp ứng ba thuộc tính để được coi là an toàn hiệu quả. Chúng ta có thể mô tả chúng như 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.

Trước khi phân tích từng thuộc tính, hãy tóm tắt logic của nó 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 khác nhau tạo ra cùng một Hàm băm như đầu ra.

  • Kháng cự trước hình ảnh: không thể "hoàn tác" hàm băm ( để tìm đầu vào của một đầu ra xác định ).

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

Khả năng chống 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à chống lại va chạm cho đến khi ai đó tìm thấy một va chạm. Điều quan trọng cần lưu ý là sẽ luôn có va chạm 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 là kháng va chạm khi khả năng tìm thấy một va chạm thấp đến mức cần hàng triệu năm tính toán. Vì vậy, mặc dù không có hàm băm nào hoàn toàn không có va chạm, một số trong số chúng đủ mạnh để được coi là kháng (ví dụ, SHA-256).

Trong số 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 hình ảnh

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

Đ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ì một kẻ tấn công sẽ cố gắng đoán xem đầu vào nào đã được sử dụng bằng cách quan sát một đầu ra nhất định. Một sự 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, nhưng không quan trọng đầu vào nào đã được sử dụng.

Thuộc tính kháng lại hình ảnh trước là rất quý giá để 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 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 hàm băm được tạo ra từ mật khẩu thay vì mật khẩu dưới dạng văn bản thuần túy.

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

Để đơn giản hóa, chúng ta có thể nói rằng sức kháng của hình ảnh trước thứ hai nằm ở một điểm trung gian giữa hai thuộc tính khác. Một cuộc tấn công hình ảnh trước thứ hai xảy ra khi ai đó có khả năng tìm thấy một đầu vào cụ thể tạo ra cùng một đầu ra từ 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 hình thứ hai liên quan đến việc tìm kiếm một 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, họ tìm một đầu vào tạo ra cùng một Hàm băm được sản xuất 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 lại va chạm cũng sẽ chống lại các cuộc tấn công hình ảnh trước thứ hai, vì những cuộc tấn công sau này luôn liên quan đến một va chạm. Tuy nhiên, vẫn có thể thực hiện một cuộc tấn công hình ảnh trước đối với một hàm băm có khả năng chống va chạm, vì nó liên quan đến việc tìm một đầu vào duy nhất từ một đầu ra duy nhất.

Khai thác và hàm băm

Quá trình khai thác Bitcoin liên quan đến nhiều hoạt động Hàm băm, như xác minh số dư, liên kết các đầu vào và đầu ra của giao dịch, và Hàm băm các giao dịch trong một khối để tạo thành một 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à thực tế rằng các thợ mỏ cần thực hiện một lượng lớn các hoạt động Hàm băm để cuối cùng tìm ra một giải pháp hợp lệ cho khối tiếp theo.

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

Trong bối cảnh này, tỷ lệ Hàm băm đại diện cho bao nhiêu sức mạnh tính toán được đầu tư vào việc 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 ngừng khai thác, khiến tỷ lệ Hàm băm giảm đáng kể, độ khó khai thác sẽ được điều chỉnh, làm cho việc khai thác ( trở nên dễ dàng hơn cho đến khi thời gian trung bình của khối quay trở lại 10 phút ).

Điều quan trọng cần lưu ý là 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 mà họ có thể tạo ra như một đầu ra hợp lệ ( bắt đầu với một số lượng nhất định của số không ). Do đó, có nhiều giải pháp khả thi cho một khối nhất định, và các thợ mỏ chỉ cần tìm một trong số chúng, theo ngưỡng được xác định bởi độ khó của việc khai thác.

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

Những suy nghĩ cuối cùng

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

EL0.04%
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
  • Retweed
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)