Những điểm chính cần ghi nhớ

  • Hàm băm là quá trình chuyển đổi bất kỳ dữ liệu đầu vào nào thành dữ liệu đầu ra có kích thước cố định bằng cách sử dụng một hàm toán học, và nó là nền tảng của tiền điện tử và công nghệ blockchain.

  • Các hàm băm mật mã phải thỏa mãn ba thuộc tính cốt lõi: khả năng chống va chạm, khả năng chống tìm ảnh ngược và khả năng chống tìm ảnh ngược thứ hai.

  • Bitcoin sử dụng SHA-256 cho việc khai thác, xác minh giao dịch và tạo địa chỉ, trong khi Ethereum sử dụng Keccak-256 cho việc quản lý trạng thái và các hoạt động của hợp đồng thông minh.

  • Các hàm băm hiện đại như SHA-256 và SHA-3 vẫn đảm bảo an toàn trước các mối đe dọa từ điện toán lượng tử đã biết, chỉ cần kích thước đầu ra lớn hơn chứ không cần đến các thuật toán hoàn toàn mới.

Binance Academy courses banner

Giới thiệu

Hàm băm (hashing) đề cập đến quá trình tạo ra đầu ra có kích thước cố định từ đầu vào có kích thước thay đổ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 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ã học, nhưng các hàm băm mật mã là cốt lõi của công nghệ blockchain và an ninh mạng hiện đại. Nhờ chúng, 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. Hiểu cách thức hoạt động của hàm băm rất hữu ích cho bất kỳ ai quan tâm đến cách thức hoạt động của tiền điện tử.

Cách thức hoạt động của hàm băm

Các hàm băm khác nhau tạo ra đầu ra có kích thước khác nhau, nhưng mỗi thuật toán luôn tạo ra đầu ra có độ dài cố định bất kể kích thước đầu vào. Ví dụ, SHA-256 luôn tạo ra đầu ra 256 bit (64 ký tự thập lục phân), trong khi SHA-1 tạo ra bản tóm tắt 160 bit.

Điều quan trọng cần lưu ý là băm (hashing) không giống với mã hóa (encryption). Mã hóa là một quá trình hai chiều, trong đó dữ liệu có thể được mã hóa và sau đó giải mã trở lại dạng ban đầu bằng một khóa. Băm là một hàm một chiều: bạn có thể tạo ra giá trị băm từ dữ liệu đầu vào, nhưng trên thực tế, bạn không thể đảo ngược quá trình để khôi phục dữ liệu đầu vào ban đầu chỉ từ giá trị băm đó.

Để minh họa, việc chạy hai từ "Binance" và "binance" qua thuật toán SHA-256 sẽ tạo ra kết quả hoàn toàn khác nhau:

  • "Binance" tạo ra: f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191

  • "binance" tạo ra: 59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2

Một thay đổi nhỏ (chữ hoa/chữ thường của chữ cái đầu tiên) có thể dẫn đến giá trị băm hoàn toàn khác. Thuộc tính này được gọi là hiệu ứng thác lũ, và nó là yếu tố cơ bản đối với bảo mật. Thêm vào đó, cả hai kết quả đầu ra sẽ luôn giữ nguyên bất kể từ ngữ được xử lý qua thuật toán bao nhiêu lần, chứng tỏ tính chất xác định của các hàm băm.

Họ thuật toán SHA (Thuật toán băm an toàn) bao gồm nhiều thế hệ. SHA-0 và SHA-1 hiện không còn được coi là an toàn vì đã phát hiện ra hiện tượng xung đột thuật toán. Hiện nay, chỉ có họ SHA-2 (bao gồm SHA-256 và SHA-512) và họ SHA-3 (dựa trên thuật toán Keccak) được coi là an toàn về mặt mật mã.

Hàm băm mật mã

Hàm băm mật mã là một hàm băm đáp ứng các yêu cầu bảo mật bổ sung, làm cho nó phù hợp với các ứng dụng như chữ ký số, xác minh tính toàn vẹn dữ liệu và cơ chế đồng thuận blockchain. Việc phá vỡ một hàm như vậy đòi hỏi một số lượng lớn các lần thử tấn công vét cạn.

Để một hàm băm mật mã được coi là an toàn, nó phải thỏa mãn ba thuộc tính chính: khả năng chống va chạm, khả năng chống tìm ảnh ngược và khả năng chống tìm ảnh ngược thứ hai.

Khả năng chống va chạm

Va chạm xảy ra khi hai đầu vào khác nhau tạo ra cùng một đầu ra băm. Một hàm băm được coi là chống va chạm khi việc tìm ra va chạm như vậy là bất khả thi về mặt tính toán, ngay cả khi về mặt toán học, va chạm vẫn phải tồn tại (vì tập hợp các đầu vào có thể là vô hạn trong khi đầu ra có độ dài cố định).

Trên thực tế, khả năng chống va chạm có nghĩa là sẽ mất hàng triệu năm tính toán để tìm ra hai đầu vào tạo ra cùng một giá trị băm. SHA-256 yêu cầu khoảng 2 mũ 128 phép toán để tìm ra va chạm (giới hạn sinh nhật), vượt xa khả năng tính toán hiện tại.

Khả năng chống ảnh trước

Khả năng chống tìm ảnh ngược có nghĩa là, khi cho trước một kết quả băm, việc tìm ra bất kỳ dữ liệu đầu vào nào tạo ra kết quả đó là bất khả thi về mặt tính toán. Đây là điều khiến các hàm băm trở nên "một chiều". Kẻ tấn công khi nhìn thấy một giá trị băm không thể xác định dữ liệu nào đã tạo ra nó.

Thuộc tính này rất cần thiết cho các ứng dụng như lưu trữ mật khẩu: một dịch vụ có thể lưu trữ mã băm của mật khẩu thay vì chính mật khẩu đó, và ngay cả khi cơ sở dữ liệu mã băm bị lộ, mật khẩu gốc vẫn được bảo vệ.

Kháng cự tiền ảnh thứ hai

Khả năng chống tìm ảnh ngược thứ hai có nghĩa là, với một đầu vào cụ thể và giá trị băm của nó, việc tìm một đầu vào khác tạo ra cùng một giá trị băm là bất khả thi. Mặc dù có liên quan đến khả năng chống va chạm, thuộc tính này giải quyết một kịch bản tấn công có mục tiêu cụ thể hơn.

Bất kỳ hàm băm nào có khả năng chống va chạm cũng đều có khả năng chống tìm ảnh ngược thứ hai, vì việc tìm thấy ảnh ngược thứ hai sẽ cấu thành việc tìm thấy một va chạm. Tuy nhiên, một hàm có thể chống tìm ảnh ngược mà không có khả năng chống va chạm.

Hàm băm trong Blockchain

Hàm băm được sử dụng rộng rãi trong các hệ thống blockchain. Trong Bitcoin, SHA-256 bảo mật mạng lưới thông qua bằng chứng công việc, trong đó các thợ đào phải tìm ra đầu ra băm nhỏ hơn một giá trị mục tiêu cụ thể. Quá trình này đòi hỏi nỗ lực tính toán khổng lồ để hoàn thành nhưng lại rất dễ xác minh, tạo ra một mô hình bảo mật bất đối xứng.

Hàm băm cũng được sử dụng để xây dựng cây Merkle: cấu trúc dữ liệu trong đó các giao dịch được băm theo từng cặp cho đến khi một hàm băm gốc duy nhất tóm tắt toàn bộ một khối giao dịch. Điều này cho phép các ứng dụng khách nhẹ xác minh rằng một giao dịch cụ thể được bao gồm trong một khối mà không cần tải xuống tất cả dữ liệu giao dịch.

Bitcoin cũng sử dụng hàm băm để tạo địa chỉ. Khóa công khai được xử lý thông qua SHA-256, sau đó là RIPEMD-160 để tạo ra định dạng địa chỉ ngắn gọn và dễ quản lý hơn. Cách tiếp cận này bổ sung thêm một lớp bảo mật và giảm kích thước dữ liệu cần thiết cho các giao dịch.

Ethereum sử dụng một biến thể gọi là Keccak-256 (có liên quan mật thiết đến chuẩn SHA-3) cho việc quản lý trạng thái, chọn chức năng hợp đồng thông minh, ghi nhật ký sự kiện và tạo địa chỉ. Mỗi nền tảng blockchain lựa chọn hàm băm dựa trên mô hình bảo mật và yêu cầu hiệu năng cụ thể của mình.

Khai thác và Tốc độ băm

Trong khai thác Bitcoin, thách thức cốt lõi là tìm ra một dữ liệu đầu vào (bằng cách thay đổi giá trị nonce trong tiêu đề khối) tạo ra hàm băm SHA-256 dưới ngưỡng mục tiêu. Ngưỡng mục tiêu này được điều chỉnh sau mỗi 2.016 khối để duy trì thời gian tạo khối trung bình là 10 phút, bất kể mạng lưới có bao nhiêu sức mạnh tính toán. Đây chính là điều làm cho blockchain trở nên an toàn.

Tốc độ băm (hash rate) thể hiện tổng sức mạnh tính toán dành cho việc khai thác. Tính đến đầu năm 2026, mạng Bitcoin hoạt động ở mức khoảng 800 đến 900 exahash mỗi giây (EH/s), nghĩa là các thợ đào cùng nhau thực hiện hàng trăm triệu tỷ phép tính băm mỗi giây.

Các thợ đào không cần phải tìm kiếm các xung đột. Họ chỉ cần tìm bất kỳ đầu vào nào tạo ra giá trị băm thấp hơn mục tiêu độ khó hiện tại. Vì có nhiều đầu ra hợp lệ có thể tồn tại, nhiệm vụ này tập trung vào hiệu suất tính toán hơn là khai thác điểm yếu trong chính thuật toán SHA-256.

Vì việc khai thác đòi hỏi nhiều tài nguyên tính toán, nên những người khai thác có động lực kinh tế mạnh mẽ để tuân thủ các quy tắc thay vì cố gắng tấn công mạng lưới. Càng nhiều người khai thác tham gia, chuỗi khối càng trở nên an toàn hơn.

Hàm băm trong kỷ nguyên hậu lượng tử

Một mối lo ngại phổ biến là liệu máy tính lượng tử có thể phá vỡ các hàm băm được sử dụng trong chuỗi khối hay không. Câu trả lời ngắn gọn: các hàm băm có khả năng chống lại các cuộc tấn công lượng tử tốt hơn nhiều so với mật mã khóa công khai.

Thuật toán Grover, cuộc tấn công lượng tử quan trọng nhất vào các hàm băm, chỉ cung cấp tốc độ tăng theo bậc hai. Điều này có nghĩa là một hàm băm 256 bit sẽ chỉ cung cấp khoảng 128 bit bảo mật chống lại kẻ thù lượng tử, điều này vẫn được coi là không khả thi về mặt tính toán để phá vỡ. Để so sánh, các thuật toán khóa công khai được sử dụng trong blockchain (ECDSA, EdDSA) hoàn toàn bị phá vỡ bởi thuật toán Shor trên một máy tính lượng tử đủ mạnh.

Vào tháng 8 năm 2024, NIST đã công bố FIPS 205 (SLH-DSA), một tiêu chuẩn chữ ký số dựa trên hàm băm được phát triển từ SPHINCS+. Tiêu chuẩn này xây dựng tính bảo mật hoàn toàn dựa trên sức mạnh của các hàm băm, thể hiện sự chứng thực mạnh mẽ từ các tổ chức rằng SHA-2 và SHA-3 vẫn đáng tin cậy trong thế giới hậu lượng tử.

Tính đến năm 2025, sự đồng thuận giữa NIST, EU và các tổ chức tiêu chuẩn khác là rõ ràng: không cần thiết phải có các thuật toán "băm hậu lượng tử" mới. SHA-256 và SHA-3 với đầu ra 256 bit trở lên dự kiến ​​sẽ vẫn an toàn trong tương lai gần. Nỗ lực chuyển đổi hậu lượng tử cấp bách tập trung vào việc thay thế mật mã khóa công khai, chứ không phải các hàm băm.

Mã hóa mật khẩu và tạo khóa

Mặc dù SHA-256 và SHA-3 là những hàm băm mật mã đa năng tuyệt vời, nhưng chúng không phù hợp để lưu trữ mật khẩu. Lý do là tốc độ: các hàm này được thiết kế để hoạt động nhanh, điều đó có nghĩa là kẻ tấn công có quyền truy cập vào cơ sở dữ liệu mật khẩu bị rò rỉ có thể thử hàng tỷ lần đoán mật khẩu mỗi giây bằng cách sử dụng GPU hoặc phần cứng chuyên dụng.

Các hàm băm mật khẩu chuyên dụng giải quyết vấn đề này bằng cách cố tình hoạt động chậm và tiêu tốn nhiều bộ nhớ. Tiêu chuẩn được khuyến nghị hiện nay là Argon2id, đã giành chiến thắng trong Cuộc thi Băm Mật khẩu năm 2015. Các lựa chọn được sử dụng rộng rãi khác bao gồm bcrypt và scrypt.

Các hàm này cũng sử dụng một "muối" ngẫu nhiên duy nhất cho mỗi mật khẩu, ngăn chặn kẻ tấn công sử dụng các bảng tra cứu được tính toán trước (bảng cầu vồng). Sự kết hợp giữa chi phí tính toán, yêu cầu bộ nhớ và việc sử dụng muối khiến các cuộc tấn công vét cạn trở nên không khả thi về mặt kinh tế ngay cả khi cơ sở dữ liệu băm bị xâm phạm.

Câu hỏi thường gặp

Sự khác biệt giữa hàm băm và mã hóa là gì?

Hàm băm là một hàm một chiều tạo ra đầu ra có kích thước cố định và không thể đảo ngược. Mã hóa là một quá trình hai chiều, trong đó dữ liệu được biến đổi bằng khóa và có thể được giải mã trở lại dạng ban đầu bằng khóa tương ứng. Hàm băm được sử dụng để xác minh tính toàn vẹn và xác thực, trong khi mã hóa được sử dụng để bảo mật thông tin.

Liệu hai dữ liệu đầu vào khác nhau có thể tạo ra cùng một mã băm không?

Về mặt lý thuyết, điều này hoàn toàn có thể xảy ra và được gọi là xung đột (collision). Tuy nhiên, đối với các hàm băm an toàn như SHA-256, việc tìm ra xung đột như vậy đòi hỏi khoảng 2 mũ 128 phép toán (giới hạn sinh nhật), điều này là bất khả thi về mặt tính toán với công nghệ hiện tại hoặc trong tương lai. Các hàm băm mà xung đột đã được chứng minh trên thực tế, như MD5 và SHA-1, được coi là đã bị phá vỡ và không nên được sử dụng cho mục đích bảo mật.

Tại sao Bitcoin lại sử dụng SHA-256?

SHA-256 được chọn cho Bitcoin vì nó có khả năng chống va chạm mạnh, được cộng đồng mật mã học phân tích kỹ lưỡng, tạo ra đầu ra có kích thước phù hợp để điều chỉnh độ khó của bằng chứng công việc, và đã được triển khai rộng rãi khi Bitcoin ra mắt vào năm 2009. Nó vẫn an toàn và không có cuộc tấn công thực tế nào được biết đến nhắm vào nó.

Liệu máy tính lượng tử có thể phá vỡ thuật toán băm của blockchain?

Máy tính lượng tử gây ra rủi ro tối thiểu cho các hàm băm. Thuật toán Grover có thể tăng tốc độ tìm kiếm băm bằng phương pháp vét cạn, nhưng chỉ tăng theo hệ số căn bậc hai: một hàm băm 256 bit vẫn cung cấp 128 bit bảo mật lượng tử, được coi là an toàn. Mối đe dọa lượng tử thực sự đối với blockchain là đối với các lược đồ chữ ký khóa công khai (ECDSA), chứ không phải đối với các hàm băm.

Ethereum sử dụng hàm băm nào?

Ethereum sử dụng Keccak-256, có liên quan mật thiết đến chuẩn NIST SHA-3 nhưng sử dụng phương pháp đệm hơi khác. Nó được sử dụng để tạo địa chỉ, tạo khóa cây trạng thái, chọn hàm hợp đồng thông minh và băm chủ đề sự kiện. Giống như SHA-256, Keccak-256 không có cuộc tấn công thực tế nào được biết đến và được coi là an toàn về mặt mật mã.

Lời kết

Hàm băm là những khối xây dựng thiết yếu của khoa học máy tính hiện đại và an ninh mạng. Khi kết hợp với các thuộc tính mật mã như khả năng chống va chạm và khả năng chống tìm ảnh ngược, chúng cho phép đảm bảo an ninh, điều kiện tiên quyết giúp mạng lưới blockchain hoạt động.

Từ khai thác Bitcoin đến hợp đồng thông minh Ethereum và các lược đồ chữ ký hậu lượng tử, hàm băm vẫn là một công nghệ nền tảng. Hiểu cách thức hoạt động của các hàm băm, các thuộc tính bảo mật cốt lõi và các ứng dụng thực tế của chúng sẽ giúp bất kỳ ai quan tâm đến công nghệ blockchain hiểu được lý do tại sao các hệ thống này được coi là an toàn.

Đọc thêm

  • Thuật toán đồng thuận Blockchain là gì?

  • Bitcoin là gì và nó hoạt động như thế nào?

  • Bằng chứng công việc (Proof of Work - PoW) so với Bằng chứng cổ phần (Proof of Stake - PoS)

  • Nguyên tắc an ninh chung

  • Giới thiệu về Bitcoin Script

Tuyên bố miễn trừ trách nhiệm: Nội dung này được cung cấp cho bạn trên cơ sở "nguyên trạng" chỉ nhằm mục đích thông tin chung và giáo dục, không kèm theo bất kỳ sự đảm bảo hoặc cam kết nào. Nội dung này không nên được hiểu là lời khuyên về tài chính, pháp lý hoặc chuyên môn khác, cũng như không nhằm mục đích khuyến nghị mua bất kỳ sản phẩm hoặc dịch vụ cụ thể nào. Bạn nên tìm kiếm lời khuyên từ các cố vấn chuyên nghiệp phù hợp. Trường hợp nội dung được đóng góp bởi bên thứ ba, vui lòng lưu ý rằng những quan điểm được thể hiện thuộc về bên thứ ba đó và không nhất thiết phản ánh quan điểm của Binance Academy. Giá tài sản kỹ thuật số có thể biến động. Giá trị khoản đầu tư của bạn có thể giảm hoặc tăng và bạn có thể không thu hồi được số tiền đã đầu tư. Bạn hoàn toàn chịu trách nhiệm về các quyết định đầu tư của mình và Binance Academy không chịu trách nhiệm cho bất kỳ tổn thất nào bạn có thể phải chịu. Để biết thêm thông tin, vui lòng xem Điều khoản sử dụng, Cảnh báo rủi ro và Điều khoản của Binance Academy.