Hàm băm mật mã (CHF) đã tồn tại từ những năm 1980 và tìm thấy tiện ích rộng rãi trong mật mã, xác minh tính toàn vẹn dữ liệu, lập chỉ mục cơ sở dữ liệu và nhiều lĩnh vực khác.
Khi tính toán hàm băm mật mã, dữ liệu có độ dài tùy ý được nhập vào và hàm tương ứng sẽ chuyển đổi nó thành giá trị đầu ra có độ dài cố định. Việc chuyển đổi này liên quan đến việc áp dụng các thao tác khác nhau cho các phân đoạn khác nhau của dữ liệu đầu vào, thường được gọi là Hash. Kết quả đầu ra được gọi là giá trị băm, với chính hoạt động đó được gọi là hàm băm.
Một ví dụ minh họa là Thuật toán MD5, thường được sử dụng trong các trình tải xuống P2P, có đặc điểm là độ dài 128 bit. Người dùng có thể so sánh giá trị băm của tệp đã tải xuống với giá trị do nguồn cung cấp; sự trùng khớp cho biết khả năng toàn vẹn của tệp.
Một ứng dụng phổ biến khác là xác thực mật khẩu trên các trang web. Để bảo vệ mật khẩu người dùng, hầu hết các nền tảng đều lưu trữ mật khẩu băm thay vì các mục nhập văn bản gốc. Khi người dùng đăng nhập, hệ thống sẽ tính toán hàm băm của mật khẩu đã nhập và so sánh nó với giá trị được lưu trữ liên quan đến tên người dùng. Các biện pháp bảo vệ tự nhiên không thể thay đổi của hàm băm mật mã chống lại việc giải mã mật khẩu ngay cả khi tin tặc lấy được các giá trị băm cơ sở dữ liệu.
Tìm kiếm 'SHA256 Generator' cho thấy rằng các trang web khác nhau sử dụng cùng một thuật toán luôn tạo ra các giá trị băm giống nhau cho các văn bản đầu vào tương tự.
Hơn nữa, việc thay đổi kiểu chữ của văn bản đầu vào sẽ dẫn đến các giá trị băm đầu ra hoàn toàn khác biệt, được gọi là Hiệu ứng Avalanche. Các đặc điểm sau đánh giá tính bảo mật của hàm băm mật mã:
Trong ví dụ nói trên, việc xây dựng lại mật khẩu của người dùng từ các giá trị băm bị đánh cắp gặp khó khăn đáng kể. Các hoạt động phức tạp và nén thông tin trong các hàm băm mật mã cản trở kỹ thuật đảo ngược, nhấn mạnh tính chất một chiều của chúng.
Khả năng chống hình ảnh thứ hai: Việc xác định một giá trị đầu vào khác tạo ra cùng giá trị băm cho đầu vào ban đầu là rất khó khăn. **Tính năng này được gọi là khả năng chống va chạm yếu.
Khả năng chống va chạm: Việc khám phá hai giá trị riêng biệt mang lại giá trị băm giống hệt nhau là một thách thức và được gọi là xung đột băm mật mã. Đặc tính này biểu thị khả năng chống va chạm mạnh.
Lấy MD5 được đề cập làm ví dụ, liệu các tệp khác nhau có thể tạo ra cùng một giá trị băm không? Câu trả lời là có nhưng xác suất xảy ra là cực kỳ thấp. Hiện tượng này được gọi là xung đột băm mật mã, có thể xảy ra do vô tình hoặc do bị tấn công có chủ ý. Xác suất va chạm tiêu chuẩn cho thuật toán MD5 là khoảng 1/2¹²⁸, khiến cho việc xảy ra tình cờ là rất khó xảy ra. Tuy nhiên, MD5 được coi là dễ bị tổn thương trước các cuộc tấn công va chạm có chủ ý, vì việc tạo ra cùng một giá trị băm cho hai bản rõ khác nhau là tương đối dễ dàng. Do đó, mặc dù thuật toán MD5 vẫn có thể được sử dụng cho các tác vụ không liên quan đến bảo mật nhưng nó không còn phù hợp với các tác vụ xác thực bảo mật (chẳng hạn như xác thực khóa hoặc chữ ký số).
Ethereum sử dụng hàm băm mật mã KECCAK-256 mà nhiều người nhầm lẫn là SHA-3 (bao gồm cả trong luận án tiến sĩ của người sáng lập Celestia) vì hàm này ban đầu được viết là 'sha3' trong Solidity. Do nhầm lẫn nên sau đó nó đã được đổi tên thành Keccak256.
MetaMask sử dụng nhiều hàm băm mật mã khác nhau trong hoạt động của mình:
Bitcoin sử dụng hàm băm mật mã SHA-256. Ở đây, chúng tôi sẽ làm sáng tỏ quá trình mà các công cụ khai thác Bitcoin tham gia vào các hàm băm mật mã trong các hoạt động khai thác.
Trong khai thác Bitcoin, người khai thác hợp nhất dữ liệu giao dịch với tiêu đề khối, bao gồm chi tiết giao dịch cùng với siêu dữ liệu như dấu thời gian và số ngẫu nhiên. Người khai thác cố gắng tạo ra hàm băm SHA-256 cụ thể bằng cách điều chỉnh lặp đi lặp lại các số ngẫu nhiên (được gọi là “nonce”), trong tiêu đề khối nhằm đáp ứng các tiêu chí cụ thể, thường bắt đầu bằng một số số 0 đứng đầu đã đặt. Do tính chất của hàm băm SHA-256, phương pháp duy nhất để khám phá hàm băm tuân thủ là thông qua thử nghiệm liên tục với các số ngẫu nhiên khác nhau.
Sau khi tìm thấy hàm băm đáp ứng các yêu cầu, người khai thác có thể nối khối đó vào chuỗi khối của mạng Bitcoin và nhận một lượng Bitcoin được chỉ định làm phần thưởng. Quá trình này, được gọi là “khai thác”, bao gồm việc thực hiện liên tục các hàm băm để xác định giá trị băm đáp ứng các tiêu chí đã chỉ định.
Ngoài việc khai thác, các hàm băm mật mã đóng vai trò then chốt trong việc thiết lập liên kết giữa các khối và theo dõi các thay đổi giao dịch trong hệ thống blockchain. Con trỏ băm đóng vai trò là cấu trúc dữ liệu tạo điều kiện cho việc lập chỉ mục, truy xuất và xác minh các sửa đổi dữ liệu. Mỗi giao dịch trong chuỗi khối đều trải qua quá trình băm trước khi được tổ chức thành các khối. Sau đó, một con trỏ băm kết nối từng khối với khối trước đó bằng cách lưu trữ hàm băm của dữ liệu của khối trước đó. Bản chất liên kết của các khối đảm bảo tính bất biến trong chuỗi khối; bất kỳ sửa đổi nào đối với giao dịch đều dẫn đến một giá trị băm riêng biệt, do đó làm thay đổi giá trị băm của tất cả các khối tiếp theo. Ví dụ: hãy xem xét một blockchain bao gồm hai khối:
Khối 1: bao gồm các giá trị băm của giao dịch T1, T2 và T3.
Khối 2: có hàm băm của các giao dịch T4, T5 và T6, cùng với hàm băm của Khối 1.
Nếu một cá nhân cố gắng giả mạo giao dịch T1 trong Khối 1, họ sẽ cần phải hiệu chỉnh lại giá trị băm của Khối 1 và cập nhật giá trị mới trong Khối 2. Tuy nhiên, do tính chất đơn hướng và tính chất kháng tiền ảnh của các hàm băm mật mã, giao dịch đảo ngược T1 trong Khối 1 dựa trên giá trị băm của Khối 2 tỏ ra đầy thách thức.
Hơn nữa, do Khối 2 kết hợp giá trị băm của Khối 1, việc giả mạo Khối 1 sẽ làm thay đổi giá trị băm của Khối 2. Điều này đòi hỏi phải giả mạo đồng thời tất cả các khối tiếp theo đối với bất kỳ sửa đổi nào trong chuỗi khối – một nhiệm vụ khó khăn. Do đó, các hàm băm mật mã duy trì hiệu quả tính mạch lạc và tính toàn vẹn của dữ liệu blockchain.
Trong lĩnh vực blockchain, hàm băm mật mã thực hiện một số vai trò thiết yếu:
Liên kết khối: Tiêu đề của mỗi khối chứa giá trị băm của khối trước đó, tạo điều kiện cho chuỗi khối được kết nối đảm bảo tính toàn vẹn bằng chứng giả mạo.
Xác thực giao dịch: Dữ liệu giao dịch trải qua quá trình băm, với giá trị băm kết quả được bao gồm trong khối, xác thực tính xác thực và tính toàn vẹn của giao dịch.
Cơ chế đồng thuận: Trong cơ chế đồng thuận Bằng chứng công việc (PoW), người khai thác phải xác định giá trị nonce đáp ứng các yêu cầu về độ khó bằng cách thực thi các hàm băm.
Vào ngày 2 tháng 9 năm 2022, Vitalik đăng một câu hỏi trên Twitter (X), hỏi hàm băm mật mã nào sẽ vẫn an toàn nếu một máy tính lượng tử sử dụng thuật toán của Shor được phát minh.
Nguồn: Tweet của Vitalik
Ông chỉ ra rằng một máy tính lượng tử có khả năng sử dụng thuật toán của Shor có thể vượt qua RSA (một hệ thống mật mã khóa công khai lâu đời) hoặc bất cứ thứ gì dựa trên hệ số hóa, đường cong elip và các nhóm không xác định thứ tự. Tuy nhiên, các giá trị băm (như SHA-256) hoạt động tốt trong bối cảnh điện toán lượng tử, mặc dù tính bảo mật của chúng sẽ giảm đi phần nào, nên nên sử dụng các giá trị băm dài hơn.
Các hàm băm mật mã như SHA-256 mạnh đến mức nào? “256” trong SHA-256 đại diện cho 2 được nâng lên lũy thừa 256, một con số quá lớn đến mức khó có thể nắm bắt một cách cụ thể.
Nguồn: 3Blue1Brown
Tuy nhiên, 3Blue1Brown đã trình bày một sự tương tự sống động để hỗ trợ hiểu được tính bảo mật của hàm băm mật mã: hình dung một kịch bản trong đó 4 tỷ cá nhân trên Trái đất mỗi người sở hữu một máy tính có khả năng tính toán đặc biệt, tương đương với sức mạnh tính toán của Google trên toàn thế giới gấp 1.000 lần. Đồng thời, hãy hình dung một vũ trụ có 4 tỷ hành tinh và 4 tỷ thiên hà giống như Dải Ngân hà! Ngay cả trong những điều kiện khắc nghiệt này, sẽ phải mất hơn 500 tỷ năm mới có 1 trên 4 tỷ cơ hội đoán chính xác “đầu vào cụ thể cần thiết để tạo ra giá trị băm đầu ra SHA-256”.
Hàm băm mật mã (CHF) đã tồn tại từ những năm 1980 và tìm thấy tiện ích rộng rãi trong mật mã, xác minh tính toàn vẹn dữ liệu, lập chỉ mục cơ sở dữ liệu và nhiều lĩnh vực khác.
Khi tính toán hàm băm mật mã, dữ liệu có độ dài tùy ý được nhập vào và hàm tương ứng sẽ chuyển đổi nó thành giá trị đầu ra có độ dài cố định. Việc chuyển đổi này liên quan đến việc áp dụng các thao tác khác nhau cho các phân đoạn khác nhau của dữ liệu đầu vào, thường được gọi là Hash. Kết quả đầu ra được gọi là giá trị băm, với chính hoạt động đó được gọi là hàm băm.
Một ví dụ minh họa là Thuật toán MD5, thường được sử dụng trong các trình tải xuống P2P, có đặc điểm là độ dài 128 bit. Người dùng có thể so sánh giá trị băm của tệp đã tải xuống với giá trị do nguồn cung cấp; sự trùng khớp cho biết khả năng toàn vẹn của tệp.
Một ứng dụng phổ biến khác là xác thực mật khẩu trên các trang web. Để bảo vệ mật khẩu người dùng, hầu hết các nền tảng đều lưu trữ mật khẩu băm thay vì các mục nhập văn bản gốc. Khi người dùng đăng nhập, hệ thống sẽ tính toán hàm băm của mật khẩu đã nhập và so sánh nó với giá trị được lưu trữ liên quan đến tên người dùng. Các biện pháp bảo vệ tự nhiên không thể thay đổi của hàm băm mật mã chống lại việc giải mã mật khẩu ngay cả khi tin tặc lấy được các giá trị băm cơ sở dữ liệu.
Tìm kiếm 'SHA256 Generator' cho thấy rằng các trang web khác nhau sử dụng cùng một thuật toán luôn tạo ra các giá trị băm giống nhau cho các văn bản đầu vào tương tự.
Hơn nữa, việc thay đổi kiểu chữ của văn bản đầu vào sẽ dẫn đến các giá trị băm đầu ra hoàn toàn khác biệt, được gọi là Hiệu ứng Avalanche. Các đặc điểm sau đánh giá tính bảo mật của hàm băm mật mã:
Trong ví dụ nói trên, việc xây dựng lại mật khẩu của người dùng từ các giá trị băm bị đánh cắp gặp khó khăn đáng kể. Các hoạt động phức tạp và nén thông tin trong các hàm băm mật mã cản trở kỹ thuật đảo ngược, nhấn mạnh tính chất một chiều của chúng.
Khả năng chống hình ảnh thứ hai: Việc xác định một giá trị đầu vào khác tạo ra cùng giá trị băm cho đầu vào ban đầu là rất khó khăn. **Tính năng này được gọi là khả năng chống va chạm yếu.
Khả năng chống va chạm: Việc khám phá hai giá trị riêng biệt mang lại giá trị băm giống hệt nhau là một thách thức và được gọi là xung đột băm mật mã. Đặc tính này biểu thị khả năng chống va chạm mạnh.
Lấy MD5 được đề cập làm ví dụ, liệu các tệp khác nhau có thể tạo ra cùng một giá trị băm không? Câu trả lời là có nhưng xác suất xảy ra là cực kỳ thấp. Hiện tượng này được gọi là xung đột băm mật mã, có thể xảy ra do vô tình hoặc do bị tấn công có chủ ý. Xác suất va chạm tiêu chuẩn cho thuật toán MD5 là khoảng 1/2¹²⁸, khiến cho việc xảy ra tình cờ là rất khó xảy ra. Tuy nhiên, MD5 được coi là dễ bị tổn thương trước các cuộc tấn công va chạm có chủ ý, vì việc tạo ra cùng một giá trị băm cho hai bản rõ khác nhau là tương đối dễ dàng. Do đó, mặc dù thuật toán MD5 vẫn có thể được sử dụng cho các tác vụ không liên quan đến bảo mật nhưng nó không còn phù hợp với các tác vụ xác thực bảo mật (chẳng hạn như xác thực khóa hoặc chữ ký số).
Ethereum sử dụng hàm băm mật mã KECCAK-256 mà nhiều người nhầm lẫn là SHA-3 (bao gồm cả trong luận án tiến sĩ của người sáng lập Celestia) vì hàm này ban đầu được viết là 'sha3' trong Solidity. Do nhầm lẫn nên sau đó nó đã được đổi tên thành Keccak256.
MetaMask sử dụng nhiều hàm băm mật mã khác nhau trong hoạt động của mình:
Bitcoin sử dụng hàm băm mật mã SHA-256. Ở đây, chúng tôi sẽ làm sáng tỏ quá trình mà các công cụ khai thác Bitcoin tham gia vào các hàm băm mật mã trong các hoạt động khai thác.
Trong khai thác Bitcoin, người khai thác hợp nhất dữ liệu giao dịch với tiêu đề khối, bao gồm chi tiết giao dịch cùng với siêu dữ liệu như dấu thời gian và số ngẫu nhiên. Người khai thác cố gắng tạo ra hàm băm SHA-256 cụ thể bằng cách điều chỉnh lặp đi lặp lại các số ngẫu nhiên (được gọi là “nonce”), trong tiêu đề khối nhằm đáp ứng các tiêu chí cụ thể, thường bắt đầu bằng một số số 0 đứng đầu đã đặt. Do tính chất của hàm băm SHA-256, phương pháp duy nhất để khám phá hàm băm tuân thủ là thông qua thử nghiệm liên tục với các số ngẫu nhiên khác nhau.
Sau khi tìm thấy hàm băm đáp ứng các yêu cầu, người khai thác có thể nối khối đó vào chuỗi khối của mạng Bitcoin và nhận một lượng Bitcoin được chỉ định làm phần thưởng. Quá trình này, được gọi là “khai thác”, bao gồm việc thực hiện liên tục các hàm băm để xác định giá trị băm đáp ứng các tiêu chí đã chỉ định.
Ngoài việc khai thác, các hàm băm mật mã đóng vai trò then chốt trong việc thiết lập liên kết giữa các khối và theo dõi các thay đổi giao dịch trong hệ thống blockchain. Con trỏ băm đóng vai trò là cấu trúc dữ liệu tạo điều kiện cho việc lập chỉ mục, truy xuất và xác minh các sửa đổi dữ liệu. Mỗi giao dịch trong chuỗi khối đều trải qua quá trình băm trước khi được tổ chức thành các khối. Sau đó, một con trỏ băm kết nối từng khối với khối trước đó bằng cách lưu trữ hàm băm của dữ liệu của khối trước đó. Bản chất liên kết của các khối đảm bảo tính bất biến trong chuỗi khối; bất kỳ sửa đổi nào đối với giao dịch đều dẫn đến một giá trị băm riêng biệt, do đó làm thay đổi giá trị băm của tất cả các khối tiếp theo. Ví dụ: hãy xem xét một blockchain bao gồm hai khối:
Khối 1: bao gồm các giá trị băm của giao dịch T1, T2 và T3.
Khối 2: có hàm băm của các giao dịch T4, T5 và T6, cùng với hàm băm của Khối 1.
Nếu một cá nhân cố gắng giả mạo giao dịch T1 trong Khối 1, họ sẽ cần phải hiệu chỉnh lại giá trị băm của Khối 1 và cập nhật giá trị mới trong Khối 2. Tuy nhiên, do tính chất đơn hướng và tính chất kháng tiền ảnh của các hàm băm mật mã, giao dịch đảo ngược T1 trong Khối 1 dựa trên giá trị băm của Khối 2 tỏ ra đầy thách thức.
Hơn nữa, do Khối 2 kết hợp giá trị băm của Khối 1, việc giả mạo Khối 1 sẽ làm thay đổi giá trị băm của Khối 2. Điều này đòi hỏi phải giả mạo đồng thời tất cả các khối tiếp theo đối với bất kỳ sửa đổi nào trong chuỗi khối – một nhiệm vụ khó khăn. Do đó, các hàm băm mật mã duy trì hiệu quả tính mạch lạc và tính toàn vẹn của dữ liệu blockchain.
Trong lĩnh vực blockchain, hàm băm mật mã thực hiện một số vai trò thiết yếu:
Liên kết khối: Tiêu đề của mỗi khối chứa giá trị băm của khối trước đó, tạo điều kiện cho chuỗi khối được kết nối đảm bảo tính toàn vẹn bằng chứng giả mạo.
Xác thực giao dịch: Dữ liệu giao dịch trải qua quá trình băm, với giá trị băm kết quả được bao gồm trong khối, xác thực tính xác thực và tính toàn vẹn của giao dịch.
Cơ chế đồng thuận: Trong cơ chế đồng thuận Bằng chứng công việc (PoW), người khai thác phải xác định giá trị nonce đáp ứng các yêu cầu về độ khó bằng cách thực thi các hàm băm.
Vào ngày 2 tháng 9 năm 2022, Vitalik đăng một câu hỏi trên Twitter (X), hỏi hàm băm mật mã nào sẽ vẫn an toàn nếu một máy tính lượng tử sử dụng thuật toán của Shor được phát minh.
Nguồn: Tweet của Vitalik
Ông chỉ ra rằng một máy tính lượng tử có khả năng sử dụng thuật toán của Shor có thể vượt qua RSA (một hệ thống mật mã khóa công khai lâu đời) hoặc bất cứ thứ gì dựa trên hệ số hóa, đường cong elip và các nhóm không xác định thứ tự. Tuy nhiên, các giá trị băm (như SHA-256) hoạt động tốt trong bối cảnh điện toán lượng tử, mặc dù tính bảo mật của chúng sẽ giảm đi phần nào, nên nên sử dụng các giá trị băm dài hơn.
Các hàm băm mật mã như SHA-256 mạnh đến mức nào? “256” trong SHA-256 đại diện cho 2 được nâng lên lũy thừa 256, một con số quá lớn đến mức khó có thể nắm bắt một cách cụ thể.
Nguồn: 3Blue1Brown
Tuy nhiên, 3Blue1Brown đã trình bày một sự tương tự sống động để hỗ trợ hiểu được tính bảo mật của hàm băm mật mã: hình dung một kịch bản trong đó 4 tỷ cá nhân trên Trái đất mỗi người sở hữu một máy tính có khả năng tính toán đặc biệt, tương đương với sức mạnh tính toán của Google trên toàn thế giới gấp 1.000 lần. Đồng thời, hãy hình dung một vũ trụ có 4 tỷ hành tinh và 4 tỷ thiên hà giống như Dải Ngân hà! Ngay cả trong những điều kiện khắc nghiệt này, sẽ phải mất hơn 500 tỷ năm mới có 1 trên 4 tỷ cơ hội đoán chính xác “đầu vào cụ thể cần thiết để tạo ra giá trị băm đầu ra SHA-256”.