Hàm băm đề cập đến quá trình tạo ra một đầu ra có kích thước cố định từ một đầu vào có kích thước biến đổi. Điều 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 hàm băm ).
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ã được gọi là rất quan trọng trong thế giới tiền điện tử. Nhờ chúng, các blockchain và các hệ thống phân tán khác đạt được mức độ toàn vẹn và an ninh dữ liệu đáng kể, điều mà tôi thấy thật hấp dẫn.
Các hàm băm thông thường và mật mã đều có tính xác định. Điều này có nghĩa là, khi đầu vào không thay đổi, thuật toán sẽ luôn tạo ra cùng một đầu ra ( còn được gọi là tóm tắt hoặc hàm băm ). Tôi thấy thật đáng kinh ngạc khi một thứ phức tạp như vậy có thể lại dễ đoán đến vậy.
Các hàm băm trong tiền điện tử được thiết kế như những hàm một chiều, có nghĩa là chúng không thể bị đảo ngược dễ dàng mà không cần một lượng tài nguyên tính toán khổng lồ. Thật đơn giản để tạo ra đầu ra từ đầu vào, nhưng gần như không thể làm ngược lại. Nói chung, càng khó tìm đầu vào thì hàm băm càng được coi là an toàn. Và hãy tin tôi, một số trong những hàm băm này gần như không thể xuyên thủng.
Hàm băm hoạt động như thế nào?
Các hàm băm khác nhau tạo ra đầu ra với kích thước khác nhau, nhưng kích thước đầu ra cho mỗi thuật toán luôn là hằng số. Ví dụ, SHA-256 chỉ có thể tạo ra đầu ra 256 bit, trong khi SHA-1 luôn tạo ra một tóm tắt 160 bit.
Để minh họa, hãy chạy các từ "Binance" và "binance" qua thuật toán SHA-256 ( được sử dụng trong Bitcoin).
Bạn có thấy một sự thay đổi nhỏ (chữ cái đầu tiên viết hoa) dẫn đến một hàm băm hoàn toàn khác không? Tôi bị cuốn hút bởi sự nhạy cảm này. Nhưng sử dụng SHA-256, các đầu ra sẽ luôn có kích thước cố định là 256 bit (64 ký tự) bất kể kích thước đầu vào.
Mặt khác, nếu chúng ta thực hiện các đầu vào giống nhau qua SHA-1, chúng ta sẽ nhận được:
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 SHA-0, SHA-1, SHA-2 và SHA-3. SHA-256 thuộc nhóm SHA-2. Hiện tại, chỉ có SHA-2 và SHA-3 được coi là an toàn, điều này khiến tôi tự hỏi tại sao một số hệ thống vẫn sử dụng các thuật toán cũ hơn.
Tại sao chúng quan trọng?
Các hàm băm thông thường có nhiều ứng dụng: tìm kiếm trong cơ sở dữ liệu, phân tích tập tin lớn và quản lý dữ liệu. Các hàm băm mật mã được sử dụng rộng rãi trong bảo mật máy tính, xác thực thông điệp và nhận dạng kỹ thuật số. Trong Bitcoin, chúng rất quan trọng cho việc khai thác và tạo địa chỉ cũng như khóa.
Sức mạnh thực sự của Hàm băm xuất hiện với một lượng lớn thông tin. Bạn có thể chạy một tệp khổng lồ qua một hàm băm và sử dụng đầu ra của nó để nhanh chóng xác minh độ chính xác và toàn vẹn của dữ liệu. Điều này loại bỏ nhu cầu lưu trữ và "nhớ" một lượng lớn thông tin, điều mà tôi coi là tuyệt vời trong sự đơn giản của nó.
Hàm băm đặc biệt hữu ích trong blockchain. Chuỗi Bitcoin có nhiều hoạt động liên quan đến hàm băm, chủ yếu là trong khai thác. Hầu hết tất cả các giao thức tiền điện tử đều phụ thuộc vào hàm băm để liên kết các giao dịch trong các khối và tạo ra các liên kết mật mã giữa chúng, hình thành hiệu quả một blockchain.
Hàm băm mật mã
Một hàm băm thực hiện các kỹ thuật mật mã có thể được định nghĩa là hàm băm mật mã. Việc phá vỡ một trong những hàm này đòi hỏi vô số thử nghiệm brute force. Để "đảo ngược" một hàm băm mật mã, ai đó sẽ cần đoán đầu vào thông qua thử nghiệm và sai sót cho đến khi tạo ra đầu ra tương ứng. Tuy nhiên, có khả năng các đầu vào khác nhau tạo ra chính xác cùng một đầu ra, gây ra một "va chạm".
Về mặt kỹ thuật, một hàm băm mật mã phải tuân theo ba thuộc tính để được coi là an toàn:
Kháng cự 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
Kháng cự với tiền hình: không thể "hoàn nguyên" hàm băm
Kháng cự trước hình ảnh thứ hai: không thể tìm thấy một đầu vào khác 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. Một hàm băm được coi là chống va chạm cho đến khi ai đó tìm thấy một. Sẽ luôn có cá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 là hữu hạn.
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 thấp đến mức sẽ cần hàng triệu năm để tính toán. SHA-0 và SHA-1 không còn an toàn nữa vì đã phát hiện ra các va chạm. Hiện tại, SHA-2 và SHA-3 được coi là chống va chạm.
Kháng cự trước hình ảnh
Thuộc tính này 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à chống lại hình ảnh trước khi có rất ít khả năng ai đó tìm thấy đầu vào đã tạo ra một đầu ra cụ thể.
Thuộc tính này rất quý giá để bảo vệ dữ liệu vì một hàm băm đơn giản có thể chứng minh tính xác thực của một thông điệp mà không tiết lộ thông tin. Nhiều nhà cung cấp web lưu trữ hàm băm của mật khẩu thay vì mật khẩu dưới dạng văn bản thuần, điều mà theo tôi mọi người nên làm.
Kháng cự lại hình ảnh trước thứ hai
Một cuộc tấn công tiền hình thứ hai xảy ra khi ai đó tìm thấy một đầu vào cụ thể tạo ra cùng một đầu ra như một đầu vào đã biết khác. Nó liên quan đến việc tìm kiếm một va chạm, nhưng 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.
Bất kỳ hàm băm nào kháng lại va chạm cũng đều kháng lại các cuộc tấn công ảnh trước thứ hai. Tuy nhiên, vẫn có thể thực hiện một cuộc tấn công ảnh trước trên một hàm kháng va chạm.
Khai thác
Việc khai thác Bitcoin liên quan đến nhiều hoạt động hàm băm: xác minh số dư, liên kết đầ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. Nhưng điều thực sự đảm bảo chuỗi khối Bitcoin là các thợ mỏ phải thực hiện vô số hoạt động hàm băm để tìm ra một giải pháp hợp lệ cho khối tiếp theo.
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. Chỉ khi tạo ra một Hàm băm bắt đầu bằng một số lượng nhất định các số không, họ mới có thể xác thực khối của mình. Số lượng này xác định độ khó của việc khai thác và thay đổi theo hashrate được dành cho mạng.
Hàm băm đại diện cho lượng sức mạnh tính toán được đầu tư vào việc khai thác. Nếu tăng lên, giao thức Bitcoin sẽ tự động điều chỉnh độ khó để giữ thời gian khai thác trung bình khoảng 10 phút. Nếu một số thợ mỏ ngừng khai thác, độ khó sẽ giảm xuống.
Các thợ mỏ không cần phải tìm các va chạm vì có nhiều Hàm băm hợp lệ ( bắt đầu bằng một số lượng nhất định các số không ). 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.
Vì việc khai thác 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 đáng kể. Càng có nhiều thợ mỏ trong một blockchain, mạng lưới càng trở nên mạnh mẽ.
Không còn nghi ngờ gì nữa, các hàm băm là công cụ thiết yếu trong lĩnh vực công nghệ thông tin, đặc biệt là với lượng dữ liệu lớn. Kết hợp với mật mã, chúng cung cấp sự bảo mật và xác thực theo nhiều cách khác nhau. Chúng 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 rõ các thuộc tính và cơ chế của chúng là hữu ích cho bất kỳ ai quan tâm đến blockchain.
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.
¿Qué es Hàm băm?
Hàm băm đề cập đến quá trình tạo ra một đầu ra có kích thước cố định từ một đầu vào có kích thước biến đổi. Điều 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 hàm băm ).
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ã được gọi là rất quan trọng trong thế giới tiền điện tử. Nhờ chúng, các blockchain và các hệ thống phân tán khác đạt được mức độ toàn vẹn và an ninh dữ liệu đáng kể, điều mà tôi thấy thật hấp dẫn.
Các hàm băm thông thường và mật mã đều có tính xác định. Điều này có nghĩa là, khi đầu vào không thay đổi, thuật toán sẽ luôn tạo ra cùng một đầu ra ( còn được gọi là tóm tắt hoặc hàm băm ). Tôi thấy thật đáng kinh ngạc khi một thứ phức tạp như vậy có thể lại dễ đoán đến vậy.
Các hàm băm trong tiền điện tử được thiết kế như những hàm một chiều, có nghĩa là chúng không thể bị đảo ngược dễ dàng mà không cần một lượng tài nguyên tính toán khổng lồ. Thật đơn giản để tạo ra đầu ra từ đầu vào, nhưng gần như không thể làm ngược lại. Nói chung, càng khó tìm đầu vào thì hàm băm càng được coi là an toàn. Và hãy tin tôi, một số trong những hàm băm này gần như không thể xuyên thủng.
Hàm băm hoạt động như thế nào?
Các hàm băm khác nhau tạo ra đầu ra với kích thước khác nhau, nhưng kích thước đầu ra cho mỗi thuật toán luôn là hằng số. Ví dụ, SHA-256 chỉ có thể tạo ra đầu ra 256 bit, trong khi SHA-1 luôn tạo ra một tóm tắt 160 bit.
Để minh họa, hãy chạy các từ "Binance" và "binance" qua thuật toán SHA-256 ( được sử dụng trong Bitcoin).
SHA-256 Entrada: Binance Salida: f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191
Entrada: binance Salida: 59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2
Bạn có thấy một sự thay đổi nhỏ (chữ cái đầu tiên viết hoa) dẫn đến một hàm băm hoàn toàn khác không? Tôi bị cuốn hút bởi sự nhạy cảm này. Nhưng sử dụng SHA-256, các đầu ra sẽ luôn có kích thước cố định là 256 bit (64 ký tự) bất kể kích thước đầu vào.
Mặt khác, nếu chúng ta thực hiện các đầu vào giống nhau qua SHA-1, chúng ta sẽ nhận được:
SHA-1 Entrada: Binance Salida: 7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1
Entrada: binance Salida: e58605c14a76ff98679322cca0eae7b3c4e08936
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 SHA-0, SHA-1, SHA-2 và SHA-3. SHA-256 thuộc nhóm SHA-2. Hiện tại, chỉ có SHA-2 và SHA-3 được coi là an toàn, điều này khiến tôi tự hỏi tại sao một số hệ thống vẫn sử dụng các thuật toán cũ hơn.
Tại sao chúng quan trọng?
Các hàm băm thông thường có nhiều ứng dụng: tìm kiếm trong cơ sở dữ liệu, phân tích tập tin lớn và quản lý dữ liệu. Các hàm băm mật mã được sử dụng rộng rãi trong bảo mật máy tính, xác thực thông điệp và nhận dạng kỹ thuật số. Trong Bitcoin, chúng rất quan trọng cho việc khai thác và tạo địa chỉ cũng như khóa.
Sức mạnh thực sự của Hàm băm xuất hiện với một lượng lớn thông tin. Bạn có thể chạy một tệp khổng lồ qua một hàm băm và sử dụng đầu ra của nó để nhanh chóng xác minh độ chính xác và toàn vẹn của dữ liệu. Điều này loại bỏ nhu cầu lưu trữ và "nhớ" một lượng lớn thông tin, điều mà tôi coi là tuyệt vời trong sự đơn giản của nó.
Hàm băm đặc biệt hữu ích trong blockchain. Chuỗi Bitcoin có nhiều hoạt động liên quan đến hàm băm, chủ yếu là trong khai thác. Hầu hết tất cả các giao thức tiền điện tử đều phụ thuộc vào hàm băm để liên kết các giao dịch trong các khối và tạo ra các liên kết mật mã giữa chúng, hình thành hiệu quả một blockchain.
Hàm băm mật mã
Một hàm băm thực hiện các kỹ thuật mật mã có thể được định nghĩa là hàm băm mật mã. Việc phá vỡ một trong những hàm này đòi hỏi vô số thử nghiệm brute force. Để "đảo ngược" một hàm băm mật mã, ai đó sẽ cần đoán đầu vào thông qua thử nghiệm và sai sót cho đến khi tạo ra đầu ra tương ứng. Tuy nhiên, có khả năng các đầu vào khác nhau tạo ra chính xác cùng một đầu ra, gây ra một "va chạm".
Về mặt kỹ thuật, một hàm băm mật mã phải tuân theo ba thuộc tính để được coi là an toàn:
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. Một hàm băm được coi là chống va chạm cho đến khi ai đó tìm thấy một. Sẽ luôn có cá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 là hữu hạn.
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 thấp đến mức sẽ cần hàng triệu năm để tính toán. SHA-0 và SHA-1 không còn an toàn nữa vì đã phát hiện ra các va chạm. Hiện tại, SHA-2 và SHA-3 được coi là chống va chạm.
Kháng cự trước hình ảnh
Thuộc tính này 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à chống lại hình ảnh trước khi có rất ít khả năng ai đó tìm thấy đầu vào đã tạo ra một đầu ra cụ thể.
Thuộc tính này rất quý giá để bảo vệ dữ liệu vì một hàm băm đơn giản có thể chứng minh tính xác thực của một thông điệp mà không tiết lộ thông tin. Nhiều nhà cung cấp web lưu trữ hàm băm của mật khẩu thay vì mật khẩu dưới dạng văn bản thuần, điều mà theo tôi mọi người nên làm.
Kháng cự lại hình ảnh trước thứ hai
Một cuộc tấn công tiền hình thứ hai xảy ra khi ai đó tìm thấy một đầu vào cụ thể tạo ra cùng một đầu ra như một đầu vào đã biết khác. Nó liên quan đến việc tìm kiếm một va chạm, nhưng 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.
Bất kỳ hàm băm nào kháng lại va chạm cũng đều kháng lại các cuộc tấn công ảnh trước thứ hai. Tuy nhiên, vẫn có thể thực hiện một cuộc tấn công ảnh trước trên một hàm kháng va chạm.
Khai thác
Việc khai thác Bitcoin liên quan đến nhiều hoạt động hàm băm: xác minh số dư, liên kết đầ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. Nhưng điều thực sự đảm bảo chuỗi khối Bitcoin là các thợ mỏ phải thực hiện vô số hoạt động hàm băm để tìm ra một giải pháp hợp lệ cho khối tiếp theo.
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. Chỉ khi tạo ra một Hàm băm bắt đầu bằng một số lượng nhất định các số không, họ mới có thể xác thực khối của mình. Số lượng này xác định độ khó của việc khai thác và thay đổi theo hashrate được dành cho mạng.
Hàm băm đại diện cho lượng sức mạnh tính toán được đầu tư vào việc khai thác. Nếu tăng lên, giao thức Bitcoin sẽ tự động điều chỉnh độ khó để giữ thời gian khai thác trung bình khoảng 10 phút. Nếu một số thợ mỏ ngừng khai thác, độ khó sẽ giảm xuống.
Các thợ mỏ không cần phải tìm các va chạm vì có nhiều Hàm băm hợp lệ ( bắt đầu bằng một số lượng nhất định các số không ). 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.
Vì việc khai thác 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 đáng kể. Càng có nhiều thợ mỏ trong một blockchain, mạng lưới càng trở nên mạnh mẽ.
Không còn nghi ngờ gì nữa, các hàm băm là công cụ thiết yếu trong lĩnh vực công nghệ thông tin, đặc biệt là với lượng dữ liệu lớn. Kết hợp với mật mã, chúng cung cấp sự bảo mật và xác thực theo nhiều cách khác nhau. Chúng 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 rõ các thuộc tính và cơ chế của chúng là hữu ích cho bất kỳ ai quan tâm đến blockchain.