
SHA-256 (Secure Hash Algorithm 256-bit) là hàm băm mật mã chuyển đổi dữ liệu đầu vào bất kỳ thành kết quả đầu ra cố định 256 bit, thường gọi là mã băm hoặc dấu vân tay số. SHA-256 dùng để xác minh tính toàn vẹn dữ liệu, không phải để phục hồi hay mã hóa dữ liệu. Với cùng một đầu vào, SHA-256 luôn tạo ra kết quả đầu ra giống nhau.
Một cách hình dung trực quan là dấu vân tay số. Chỉ cần thay đổi một bit trong dữ liệu gốc sẽ tạo ra kết quả băm hoàn toàn khác. Tính nhạy này giúp hệ thống phát hiện sửa đổi dữ liệu ngay lập tức và là cơ chế tin cậy nền tảng cho các môi trường phân tán, đối kháng như blockchain.
SHA-256 tạo nền tảng tin cậy cho Web3 bằng cách cho phép xác minh dữ liệu nhất quán với chi phí thấp trên mạng phi tập trung. Nhờ đó, các nút có thể tự xác thực khối, giao dịch và thông điệp mà không cần bên trung gian tập trung.
Trên blockchain, mỗi khối tham chiếu mã băm của khối trước, tạo thành chuỗi liên kết mật mã. Trong hệ thống Proof of Work, thợ đào liên tục tính toán mã băm SHA-256 để đáp ứng độ khó của mạng. Ví, nút và trình khách dựa vào so sánh mã băm để xác nhận dữ liệu truyền đi không bị thay đổi, đảm bảo phối hợp không cần niềm tin ở quy mô toàn cầu.
SHA-256 xử lý dữ liệu đầu vào qua chuỗi thao tác theo tiêu chuẩn SHA-2. Thuật toán sẽ đệm dữ liệu, chia thành các khối cố định, rồi thực hiện nhiều vòng thao tác bitwise, phép cộng mô-đun và hàm logic để tạo ra duy nhất một kết quả đầu ra 256 bit.
Thuật toán này đảm bảo ba thuộc tính bảo mật cốt lõi:
SHA-256 được định nghĩa trong tiêu chuẩn FIPS PUB 180-4 của NIST (xuất bản năm 2001, cập nhật năm 2015). Đến năm 2025, chưa ghi nhận tấn công va chạm thực tế nào với SHA-256, và thuật toán này vẫn được phê duyệt cho các ứng dụng bảo mật cao và tài chính.
Bitcoin dùng SHA-256 cho xác thực khối và bảo mật mạng. Khi khai thác, người tham gia liên tục băm tiêu đề khối và thay đổi nonce cho đến khi kết quả băm nhỏ hơn mục tiêu độ khó hiện tại. Chỉ mã băm đạt điều kiện này mới hợp lệ.
Mỗi tiêu đề khối chứa mã băm của khối trước đó, tạo tính bất biến thông qua sự phụ thuộc. Các giao dịch trong khối được tổ chức thành cây Merkle, nơi các mã băm giao dịch được kết hợp thành một Merkle root duy nhất. Merkle root này lưu trong tiêu đề khối, giúp xác thực giao dịch hiệu quả. Từ khối gốc Bitcoin năm 2009, SHA-256 là thuật toán băm duy nhất được sử dụng cho các quy trình này.
Trong hệ thống kiểu Bitcoin, địa chỉ ví được tạo bằng cách băm khóa công khai rồi thêm mã kiểm tra lỗi (checksum) để phát hiện lỗi. Mã kiểm tra này được tạo bằng SHA-256 hai lần, lấy bốn byte đầu thêm vào dữ liệu địa chỉ. Cơ chế này giúp phát hiện lỗi nhập và giảm nguy cơ gửi tiền sai địa chỉ.
Khi xác thực giao dịch, các nút sẽ băm dữ liệu giao dịch và so sánh dấu vân tay kết quả. Bất kỳ thay đổi nào với giao dịch sẽ đổi mã băm, khiến mạng từ chối hoặc coi đó là giao dịch mới. Quá trình xác thực này hoàn toàn dựa trên tính toán, không cần bên trung gian tin cậy.
Trên nền tảng tập trung và API, SHA-256 thường dùng để xác thực yêu cầu và kiểm tra toàn vẹn dữ liệu. Nhiều sàn giao dịch triển khai HMAC-SHA-256 để ký API, kết hợp khóa bí mật với dữ liệu yêu cầu để tạo chữ ký xác minh.
Khi làm việc với API Gate, chữ ký phải được tạo theo đặc tả của Gate bằng hàm băm mật mã quy định trong tài liệu. Hệ thống backend cũng tính mã băm SHA-256 cho tệp, hồ sơ nạp tiền và thông điệp để phát hiện thay đổi bất thường. Triển khai đúng và quản lý khóa bảo mật là yếu tố then chốt khi xử lý tài sản người dùng.
Bước 1: Xác định rõ dữ liệu đầu vào, bao gồm tiêu chuẩn mã hóa cho văn bản hoặc nhị phân.
Bước 2: Chọn công cụ hoặc thư viện phù hợp, như sha256sum trên Linux, hashlib của Python hoặc module crypto của Node.js.
Bước 3: Tính mã băm và lưu kết quả hệ thập lục phân cùng dữ liệu gốc.
Bước 4: Xác minh bằng cách băm lại cùng dữ liệu đầu vào và so sánh kết quả.
Bước 5: Để xác thực, dùng HMAC-SHA-256 bằng cách kết hợp khóa bí mật với thông điệp và xác minh chữ ký phía máy chủ.
SHA-256 thuộc họ SHA-2 và bảo mật mạnh hơn nhiều so với SHA-1, vốn đã bị phá vỡ. SHA-3, dựa trên Keccak, dùng cấu trúc nội bộ khác và ngày càng phổ biến trong hệ thống mới. BLAKE2 và BLAKE3 chú trọng tốc độ và xử lý song song.
| Thuật toán | Trạng thái bảo mật | Ứng dụng điển hình |
|---|---|---|
| SHA-1 | Đã bị phá vỡ | Chỉ dùng cho hệ thống cũ |
| SHA-256 | Bảo mật | Bitcoin, API, kiểm tra toàn vẹn |
| SHA-3 | Bảo mật | Thiết kế blockchain mới |
Lựa chọn thuật toán cần cân nhắc khả năng tương thích hệ sinh thái, hiệu suất và tiêu chuẩn hóa.
Lỗi 1: Nhầm SHA-256 với mã hóa. Băm không che giấu dữ liệu.
Lỗi 2: Lưu mật khẩu chỉ bằng SHA-256 thuần. Hệ thống bảo mật cần dùng thêm muối và kéo dài như PBKDF2 hoặc Argon2.
Lỗi 3: Dùng SHA-256 thuần cho xác thực thông điệp. Cần dùng HMAC-SHA-256 để ngăn tấn công mở rộng độ dài.
Lỗi 4: Quản lý khóa kém khi ký API. Rò rỉ khóa hoặc xử lý sai tham số có thể gây mất mát tài chính.
Dù điện toán lượng tử có thể lý thuyết làm giảm khả năng chống brute-force, triển khai đúng và quản lý khóa vẫn là yếu tố bảo mật quan trọng nhất hiện nay.
SHA-256 cung cấp dấu vân tay số xác định, chống sửa đổi, là nền tảng bảo mật của blockchain. Thuật toán này hỗ trợ khai thác Bitcoin, liên kết khối, xác thực giao dịch, kiểm tra checksum địa chỉ và xác thực API. Sử dụng đúng đòi hỏi hiểu rõ khi nên dùng băm, HMAC hoặc các thuật toán chuyên dụng cho mật khẩu. Nếu triển khai đúng, SHA-256 vẫn là hàm mật mã ổn định, đáng tin cậy cho hệ thống Web3.
SHA-256 bảo đảm toàn vẹn bằng cách giúp phát hiện mọi thay đổi dữ liệu ngay lập tức. Chỉ cần sửa một bit cũng tạo ra mã băm hoàn toàn khác, nên dữ liệu giả mạo không thể đóng vai trò dữ liệu gốc nếu không tính toán lại toàn bộ mã băm phụ thuộc, điều này không khả thi trong hệ thống blockchain.
SHA-256 là hàm nén một chiều. Thông tin bị loại bỏ vĩnh viễn trong quá trình băm, nên không thể tính ngược lại dữ liệu gốc. Phục hồi bằng brute-force sẽ cần nguồn lực tính toán khổng lồ ngoài thực tế.
Dữ liệu giao dịch được băm bằng SHA-256 để bảo đảm toàn vẹn khi truyền tải. Địa chỉ ví được tạo từ khóa công khai đã băm, bảo đảm chỉ khóa bí mật tương ứng mới xác nhận chi tiêu từ địa chỉ ví đó.
Có. SHA-256 là một chiều và dùng để xác minh, còn mã hóa là hai chiều và dùng để bảo mật thông tin. Blockchain dựa vào băm để bảo đảm tính bất biến, không phải bí mật dữ liệu.
Trường hợp này gọi là va chạm. Về lý thuyết có thể xảy ra, nhưng xác suất cực nhỏ, cần khoảng 2128 lần thử. Đến nay chưa ghi nhận va chạm thực tế với SHA-256, và thuật toán này vẫn được tin dùng cho tài chính và mật mã.


