Hàm băm mật mã (Cryptographic Hash Function)
1. Tổng quan
Định nghĩa: Hàm băm mật mã (Cryptographic Hash Function) là một hàm một chiều ánh xạ thông điệp đầu vào có độ dài tùy ý thành một giá trị tóm tắt có độ dài cố định (giá trị băm, digest), được thiết kế sao cho việc tìm tiền ảnh, tiền ảnh thứ hai và va chạm là khó về mặt tính toán.
Trong hệ thống thông tin, các câu hỏi như "dữ liệu có bị thay đổi khi truyền hay lưu trữ không", "mật khẩu người dùng cung cấp có trùng với mật khẩu đã đăng ký không", "tài liệu này có đúng là tài liệu lúc ký không" liên tục phát sinh. Tất cả các câu hỏi này chỉ thực tiễn khi có thể xác định tính đồng nhất bằng một dấu vân tay (fingerprint) ngắn mà không cần so sánh lại toàn bộ bản gốc. Hàm băm mật mã chính là nguyên thủy cơ bản tạo ra dấu vân tay này, thấm vào hầu hết mọi tầng của an ninh hiện đại — chữ ký số, xác thực thông điệp, kiểm tra toàn vẹn, lưu trữ mật khẩu, blockchain và khử trùng lặp.
Checksum đơn giản (CRC, parity) cũng tạo giá trị tóm tắt độ dài cố định, nhưng chúng chỉ nhắm đến phát hiện lỗi ngẫu nhiên, nên kẻ tấn công có thể cố ý tạo ra dữ liệu khác có cùng giá trị. Ngược lại, hàm băm mật mã lấy ngăn chặn giả mạo có chủ đích làm yêu cầu cốt lõi: dù dồn tài nguyên tính toán, kẻ tấn công cũng khó tìm được đầu vào thỏa mãn một giá trị tóm tắt mong muốn. Khác biệt này tạo ra các mức bảo đảm hoàn toàn khác nhau dưới cùng một từ "băm".
Hàm băm mật mã quan trọng vì nó cho phép nén lòng tin. Một ảnh đĩa nhiều gigabyte, hàng triệu giao dịch, hay một chuỗi chứng chỉ độ dài tùy ý có thể được tóm tắt thành một giá trị 256-bit duy nhất; chỉ cần truyền giá trị đó qua kênh tin cậy thì phần dữ liệu khổng lồ còn lại vẫn có thể đi qua đường không tin cậy mà vẫn phát hiện được giả mạo. Ví dụ, một bản phân phối Linux chỉ đăng một giá trị SHA-256 duy nhất (chuỗi thập lục phân 64 ký tự) cho tệp ISO nhiều GB trên trang chính thức, và người dùng tự băm tệp nhận từ máy chủ mirror rồi đối chiếu. Bài toán so sánh mười triệu bản ghi trở thành bài toán so sánh 32 byte.
Bối cảnh ra đời và sự cần thiết
Mật mã học thuở đầu tập trung vào tính bí mật (mã hóa), nhưng khi mạng lan rộng, nhu cầu về toàn vẹn và xác thực bùng nổ — chứng minh "nội dung không thay đổi" và "người gửi là thật" hơn là chỉ che giấu nội dung. Chữ ký khóa công khai làm chi phí ký trở thành hằng số bằng cách ký không phải toàn bộ thông điệp mà là giá trị băm của nó, nhờ đó băm trở thành bước tiền xử lý bắt buộc của các hệ chữ ký.
Ngoài ra, lưu mật khẩu dạng văn bản thuần khiến mọi tài khoản bị chiếm ngay khi cơ sở dữ liệu rò rỉ, nên mật khẩu phải được lưu ở dạng không thể khôi phục. Băm có tính một chiều cung cấp cách lưu "có lưu nhưng không thể đảo ngược", trở thành phương tiện chuẩn để bảo vệ mật khẩu. Như sẽ thấy ở sau, dùng trực tiếp hàm băm đa dụng là nguy hiểm và cần hàm băm mật khẩu chuyên dụng — một điểm chuyên sâu quan trọng.
Định nghĩa vấn đề theo góc nhìn Kỹ sư chuyên nghiệp
Trong bài luận, mô tả hàm băm chỉ như "hàm rút gọn về độ dài cố định" là thất bại. Cốt lõi là kết nối ba thuộc tính an ninh (kháng tiền ảnh, tiền ảnh thứ hai, va chạm) với các ứng dụng sụp đổ khi mỗi thuộc tính bị phá, và phân biệt sự giảm một nửa độ mạnh an ninh do nghịch lý ngày sinh, lỗ hổng mở rộng độ dài của cấu trúc Merkle–Damgård, và khác biệt mục đích giữa băm đa dụng và băm mật khẩu. Tức là lấy trục "ứng dụng nào cần thuộc tính nào và tại sao".
2. Các thuộc tính an ninh cốt lõi và đặc tính yêu cầu
Để nói một hàm băm mật mã H là an toàn, nó phải thỏa ba điều kiện khó về mặt tính toán. Sơ đồ cấu trúc dưới đây trình bày luồng đầu vào, xử lý và đầu ra cùng với các tấn công mà mỗi thuộc tính phòng thủ.
flowchart TD
M["Thong diep do dai tuy y M"] --> P["Dem (padding) + chia khoi"]
P --> C["Qua trinh nen/hap thu (lap vong)"]
C --> D["Digest do dai co dinh H(M)"]
D --> U1["Kiem tra toan ven (tep/firmware)"]
D --> U2["Tien xu ly chu ky so"]
D --> U3["Luu tru mat khau"]
D --> U4["Blockchain/Merkle root"]
A1["Tan cong tien anh: khoi phuc M tu H(M)"] -. phong thu .-> C
A2["Tien anh thu hai: tim M khac cung gia tri bam"] -. phong thu .-> C
A3["Va cham: cap bat ky voi H(M1)=H(M2)"] -. phong thu .-> C
A. Kháng tiền ảnh (Preimage Resistance)
Kháng tiền ảnh nghĩa là, cho trước một giá trị băm y, phải khó tìm được đầu vào M sao cho H(M)=y; thường gọi là tính một chiều (one-wayness). Lưu trữ mật khẩu dựa vào thuộc tính này. Chỉ từ digest lưu trong cơ sở dữ liệu thì không được khôi phục mật khẩu gốc, để kẻ tấn công không thể đăng nhập bằng giá trị băm bị rò rỉ.
Chi phí tấn công tiền ảnh của một hàm băm lý tưởng là khoảng 2^n lần thử cho đầu ra n-bit. Do đó SHA-256 đòi hỏi chi phí khoảng 2^256 trước tấn công tiền ảnh, mức không khả thi với năng lực tính toán hiện tại và tương lai gần. Tuy nhiên, nếu chính không gian đầu vào nhỏ (entropy của mật khẩu con người đặt thường là 20–40 bit), nó bị phá bằng vét cạn (brute-force) bất kể độ mạnh lý thuyết của hàm băm. Điểm này là cơ sở của bài học thực tiễn "dùng băm mạnh vẫn không bảo vệ được mật khẩu yếu".
Trong thực tế, sự tự tin thái quá vào kháng tiền ảnh thường dẫn đến lưu các định danh nhạy cảm (số căn cước, email) băm không muối; khi phân bố giá trị hẹp, nó bị truy ngược bằng bảng tính sẵn, nên tính một chiều thực tế bị phá. Nói cách khác, kháng tiền ảnh là thuộc tính có điều kiện phải được đánh giá cùng với phân bố đầu vào.
B. Kháng tiền ảnh thứ hai và kháng va chạm
Kháng tiền ảnh thứ hai (Second Preimage Resistance) nghĩa là, khi cho trước một thông điệp cụ thể M, phải khó tìm một M' khác có cùng giá trị băm. Ngược lại, kháng va chạm (Collision Resistance) là yêu cầu mạnh hơn: phải khó để kẻ tấn công tự do tìm bất kỳ cặp nào với H(M1)=H(M2).
Khác biệt giữa hai thuộc tính rất rõ rệt về chi phí tấn công. Tiền ảnh thứ hai gần 2^n, nhưng va chạm giảm mạnh xuống khoảng 2^(n/2) do nghịch lý ngày sinh (birthday paradox). Giống như trực giác rằng chỉ 23 người là xác suất trùng ngày sinh vượt 50%, thu thập khoảng 2^(n/2) giá trị ngẫu nhiên thì khả năng hai giá trị trùng nhau tăng cao. Vì vậy để nhắm độ mạnh an ninh 128-bit, đầu ra băm phải ít nhất 256 bit. Đó là lý do SHA-256 được đánh giá là "kháng va chạm cấp 128-bit".
Nơi kháng va chạm bị đòi hỏi nghiêm trọng nhất là chữ ký số. Nếu kẻ tấn công có thể làm cho "hợp đồng thiện chí" và "hợp đồng ác ý" có cùng giá trị băm, thì giá trị chữ ký nạn nhân tạo trên cái trước vẫn hợp lệ trên cái sau. Thực tế, năm 2012 mã độc Flame đã khai thác va chạm MD5 để tạo chứng chỉ ký mã giả mạo và lan truyền qua Windows Update, là ví dụ tiêu biểu cho thấy việc mất kháng va chạm có thể dẫn đến tấn công toàn cầu như thế nào.
C. Hiệu ứng tuyết lở, tính tất định và hiệu quả
Một hàm băm tốt thể hiện hiệu ứng tuyết lở (avalanche effect), trong đó đảo chỉ một bit đầu vào cũng đảo khoảng một nửa số bit đầu ra một cách không dự đoán được. Điều này loại bỏ tương quan thống kê giữa đầu vào và đầu ra, ngăn kẻ tấn công suy luận thông tin bộ phận. Đồng thời băm là tất định (deterministic) — cùng đầu vào phải luôn cho cùng giá trị (tiền đề của khả năng kiểm chứng) — và phải hiệu quả về tính toán để áp dụng được cho cả khối lượng dữ liệu lớn.
Một căng thẳng thú vị nằm ở đây. Băm cho toàn vẹn/chữ ký thì càng nhanh càng tốt, nhưng băm cho mật khẩu thì ngược lại nên cố ý chậm để làm khó việc vét cạn của kẻ tấn công. Cùng một "băm" nhưng mục tiêu thiết kế lại trái ngược tùy mục đích. Không nhận ra căng thẳng này mà lưu mật khẩu bằng SHA-256 thì khi rò rỉ gần như không có phòng thủ, vì GPU có thể tính hàng tỷ lần băm mỗi giây.
3. Các thuật toán tiêu biểu và cấu trúc bên trong
Cấu trúc bên trong của băm chia rộng thành cấu trúc Merkle–Damgård (MD) và cấu trúc bọt biển (sponge). Sơ đồ quy trình chi tiết dưới đây biểu diễn khác biệt về luồng xử lý giữa hai cấu trúc.
flowchart LR
subgraph MD["Cau truc Merkle-Damgard (MD5/SHA-1/SHA-2)"]
direction LR
IV["Gia tri khoi tao IV"] --> F1["Ham nen f (khoi 1)"]
F1 --> F2["Ham nen f (khoi 2)"]
F2 --> F3["Ham nen f (khoi n)"]
F3 --> OUT1["Gia tri chaining cuoi = digest"]
end
subgraph SP["Cau truc bot bien (SHA-3/Keccak)"]
direction LR
S0["Khoi tao trang thai"] --> AB["Hap thu (absorb): XOR thong diep roi hoan vi f"]
AB --> SQ["Vat ra (squeeze): trich dau ra tu trang thai"]
SQ --> OUT2["Digest do dai thay doi"]
end
A. Sự biến đổi của thuật toán qua các thế hệ
Thuật toán băm đã trải qua nhiều lần thay thế thế hệ, bị kỹ thuật tấn công tiến bộ rượt đuổi. MD5 (128-bit) và SHA-1 (160-bit) từ lâu là chuẩn trên thực tế, nhưng va chạm đã được chứng minh và chúng bị loại khỏi mục đích an ninh; hiện SHA-2 là chủ lực và SHA-3 được chuẩn hóa như phương án thay thế vì sự đa dạng cấu trúc. Bảng dưới đây so sánh các thuật toán chính.
| Thuật toán | Độ dài đầu ra (bit) | Cấu trúc bên trong | Kháng va chạm (bit) | Trạng thái |
|---|---|---|---|---|
| MD5 | 128 | Merkle–Damgård | thực tế là 0 (va chạm trong vài giây) | loại bỏ |
| SHA-1 | 160 | Merkle–Damgård | đã bị phá (≤≈2^63) | loại bỏ |
| SHA-256 | 256 | Merkle–Damgård | 128 | khuyến nghị |
| SHA-512 | 512 | Merkle–Damgård | 256 | khuyến nghị |
| SHA-3-256 | 256 | bọt biển (Keccak) | 128 | khuyến nghị |
| SHAKE128/256 | thay đổi | bọt biển (XOF) | 128/256 | khuyến nghị |
B. Cấu trúc Merkle–Damgård và lỗ hổng mở rộng độ dài
Cấu trúc MD chia thông điệp thành các khối kích thước cố định và áp dụng hàm nén f lặp lại như một chuỗi xích, chuyển đầu ra của khối trước (giá trị chaining) làm đầu vào cho khối sau. Nó được dùng rộng rãi nhờ cài đặt đơn giản và khả năng quy kháng va chạm về độ an toàn của hàm nén như một chứng minh.
Tuy nhiên, cấu trúc này có một điểm yếu đặc thù gọi là tấn công mở rộng độ dài (length-extension attack). Nếu kẻ tấn công biết giá trị H(secret || M) và độ dài thông điệp, họ có thể tính H(secret || M || padding || M') mà không cần biết giá trị bí mật secret. Vì vậy, dùng trực tiếp "băm(bí mật||thông điệp)" cho xác thực thông điệp cho phép giả mạo; để ngăn điều này, cấu trúc băm kép HMAC (H(key⊕opad || H(key⊕ipad || M))) đã trở thành chuẩn. Việc SHA-512/256 (SHA-512 bị cắt ngắn) và SHA-3 cấu trúc bọt biển miễn nhiễm với mở rộng độ dài cũng là yếu tố cân nhắc quan trọng khi chọn thuật toán.
C. Cấu trúc bọt biển và ý nghĩa của SHA-3
SHA-3 (Keccak) là thuật toán NIST chuẩn hóa thành FIPS 202 năm 2015 sau một cuộc thi công khai từ 2007 đến 2012, và giá trị cốt lõi của nó là bản thân cấu trúc khác với SHA-2. Dù tương lai có đột phá nhắm vào cấu trúc MD của SHA-2, thì SHA-3 với cấu trúc bọt biển hoàn toàn khác vẫn tồn tại ngay lập tức như phương án thay thế — chuẩn bị một bảo hiểm cho tính linh hoạt mật mã (crypto-agility).
Cấu trúc bọt biển hấp thu (absorb) thông điệp vào một trạng thái nội bộ lớn bằng XOR rồi áp dụng hoán vị, và vắt ra (squeeze) đầu ra tùy nhu cầu, nên tự nhiên hỗ trợ đầu ra độ dài thay đổi (XOF: SHAKE128/256). Đặc tính đầu ra thay đổi này được tận dụng linh hoạt trong chữ ký hậu lượng tử (SPHINCS+) và dẫn xuất khóa.
4. Các ứng dụng chính và lưu trữ mật khẩu
Ứng dụng của băm dễ hiểu nhất khi phân loại theo thuộc tính yêu cầu. Kiểm tra toàn vẹn (đối chiếu băm tệp/firmware) dựa vào kháng tiền ảnh thứ hai, chữ ký số và chứng chỉ dựa vào kháng va chạm, xác thực thông điệp (HMAC) dựa vào tính giả ngẫu nhiên, còn bằng chứng công việc (proof-of-work) và Merkle root của blockchain dựa vào kháng tiền ảnh/va chạm. Khử trùng lặp dữ liệu (dedup) và lưu trữ định địa chỉ theo nội dung (content-addressable storage) cũng lấy thuộc tính "nội dung giống nhau thì băm giống nhau" làm địa chỉ.
A. Lưu trữ mật khẩu: muối, tiêu và kéo giãn khóa
Lưu trữ mật khẩu là lĩnh vực tiêu biểu mà không được dùng trực tiếp băm đa dụng. Thứ nhất, nếu cùng mật khẩu cho cùng giá trị băm, kẻ tấn công có thể truy ngược hàng loạt bằng bảng cầu vồng (rainbow table) tính sẵn. Cơ chế ngăn điều này là một muối (salt) ngẫu nhiên khác nhau cho mỗi người dùng; trộn muối vào đầu vào băm làm cho cùng mật khẩu cũng thành digest khác nhau, vô hiệu hóa tấn công tính sẵn. Thứ hai, một hàm băm nhanh như SHA-256 bị thử hàng tỷ lần mỗi giây trên GPU, nên cần kéo giãn khóa (key stretching) cố ý làm chậm.
Để đáp ứng yêu cầu này, các hàm băm mật khẩu chuyên dụng đã phát triển. PBKDF2 nâng chi phí bằng số lần lặp nhưng tương đối yếu với GPU/ASIC; bcrypt dựa trên Blowfish và dùng một chút bộ nhớ; scrypt và Argon2 dùng thiết kế tốn bộ nhớ (memory-hard) làm tăng mạnh chi phí tấn công phần cứng song song quy mô lớn. Argon2 (đặc biệt Argon2id kháng tấn công kênh bên), người thắng Password Hashing Competition 2015, là khuyến nghị hàng đầu hiện nay. OWASP hướng dẫn cấu hình Argon2id với khoảng 19 MiB bộ nhớ, 2 lần lặp và mức song song 1, hoặc PBKDF2-HMAC-SHA256 với khoảng 600.000 lần lặp. Tổ chức vận hành còn kết hợp thêm một giá trị bí mật chỉ lưu trên máy chủ — một tiêu (pepper) — dưới dạng HMAC để thêm một tuyến phòng thủ phòng khi chỉ cơ sở dữ liệu bị rò rỉ.
B. Băm trong chữ ký số và chứng chỉ
Chữ ký số ký không phải toàn bộ thông điệp mà là digest của nó, nên kháng va chạm của băm trực tiếp bằng với tính không thể giả mạo của chữ ký. Chứng chỉ công nhận, ký mã và chuỗi chứng chỉ TLS đều chỉ rõ thuật toán băm được ký, và việc ngành công nghiệp loại bỏ đồng loạt các chứng chỉ ký SHA-1 vào khoảng năm 2017 là phản ứng trực tiếp với va chạm đã được chứng minh thấy ở trên.
5. So sánh và các vụ tấn công
Đơn giản hóa lựa chọn thuật toán thành "đầu ra càng dài càng tốt" sẽ làm hỏng thiết kế thực tiễn. Việc miễn nhiễm mở rộng độ dài, hỗ trợ tăng tốc phần cứng, sự phù hợp chuẩn/quy định và hiệu năng đều là biến số. Bảng dưới đây sắp xếp các trục cân nhắc khi lựa chọn và lý do của chúng.
| Trục cân nhắc | Câu hỏi cốt lõi | Hàm ý thực tiễn |
|---|---|---|
| Độ mạnh an ninh | Cần bao nhiêu bit kháng va chạm | Cấp 128-bit dùng SHA-256; lưu trữ dài hạn / giá trị cao dùng SHA-384/512 |
| Đa dạng cấu trúc | Có miễn nhiễm mở rộng độ dài không | Xác thực dùng HMAC, hoặc chọn SHA-3/SHA-512-256 |
| Phù hợp mục đích | Nhanh hơn tốt hay chậm hơn tốt | Toàn vẹn dùng SHA-2, mật khẩu dùng Argon2id |
| Phù hợp quy định | Có phải thuật toán được chuẩn trong/ngoài nước phê duyệt | Chữ ký điện tử Hàn Quốc yêu cầu SHA-256 trở lên; quốc tế xét phê duyệt FIPS |
Các vụ tấn công cho thấy sinh động cơ sở của lựa chọn này. Sau khi nhóm của Vương Tiểu Vân công bố va chạm thực tiễn cho MD5 năm 2004, việc tạo va chạm trong vài giây trở nên khả thi, và năm 2008 một chứng chỉ CA giả mạo đã được tạo. SHA-1 bị công bố va chạm thực chứng năm 2017 qua tấn công SHAttered của Google và CWI, với hai tệp PDF khác nhau có cùng giá trị băm SHA-1 ở chi phí khoảng 9,2×10^18 (khoảng 2^63) phép toán, và đến năm 2020 chi phí va chạm tiền tố chọn trước đã giảm xuống mức hàng chục nghìn đô la. Những con số này dạy rằng khoảng cách giữa "bị phá về lý thuyết" và "khai thác được trong thực tế" ngắn hơn ta tưởng.
6. Chuyên sâu: thay đổi chuẩn và hàm băm trong kỷ nguyên hậu lượng tử
Vấn đề mới nhất xoay quanh hàm băm mật mã là mối đe dọa của tính toán lượng tử và việc đánh giá lại các chuẩn theo đó. Mật mã khóa công khai (RSA, ECC) có thể bị phá trong thời gian đa thức bởi thuật toán Shor nên thực tế cần thay thế toàn bộ, nhưng khóa đối xứng và băm chỉ bị thuật toán Grover tăng tốc ở mức căn bậc hai, vốn tăng tốc tìm tiền ảnh từ 2^n xuống 2^(n/2). Do đó kháng tiền ảnh của SHA-256 chỉ giảm xuống khoảng cấp 128-bit trong môi trường lượng tử, nên kết hợp với kháng va chạm (vốn đã 128-bit), khuyến nghị thận trọng là nâng lên SHA-384/SHA-512. Tức là ngay cả trong kỷ nguyên lượng tử, băm là một nguyên thủy tương đối vững chắc mà ta ứng phó không phải bằng "loại bỏ" mà bằng "đầu ra dài hơn".
Nghịch lý thay, băm cũng là một giải pháp cho mật mã hậu lượng tử. Trong số các chữ ký hậu lượng tử NIST chuẩn hóa năm 2024, SPHINCS+ (FIPS 205, SLH-DSA) là một chữ ký dựa trên băm chỉ dựa vào độ an toàn của hàm băm, không có giả định toán học mới như lưới hay mã, và được tin cậy một cách thận trọng nhất vì có ít giả định toán học hơn. Các chữ ký băm có trạng thái như XMSS và LMS cũng đang được áp dụng cho ký firmware và tương tự. Theo cách này, băm giữ địa vị kép là "đối tượng bị tấn công" và "nền tảng của phòng thủ".
Về phía chuẩn, NIST FIPS 180-4 (SHA-1/2) và FIPS 202 (SHA-3) là nền tảng, và năm 2022 NIST công bố kế hoạch dần dần ngừng hoàn toàn việc dùng SHA-1 đến năm 2030. Tại Hàn Quốc, việc dùng SHA-256 trở lên ngày càng được bắt buộc trong chữ ký điện tử và hệ thống công, và TLS 1.3 loại bỏ các tổ hợp băm/MAC dễ bị tấn công ở mức giao thức để ép dùng băm an toàn.
7. Các điểm cân nhắc và hàm ý
- Bảo đảm tính linh hoạt mật mã (crypto-agility): Mã hóa cứng một thuật toán băm cụ thể vào mã và định dạng dữ liệu làm chi phí thay thế bùng nổ khi có đột phá tương lai. Hãy tách định danh thuật toán thành siêu dữ liệu và thiết kế để hỗ trợ song song nhiều thuật toán, trên tiền đề rằng lịch sử thay thế MD5→SHA-1→SHA-256 sẽ lặp lại.
- Nguyên tắc tách thuật toán theo mục đích: Từ bỏ ảo tưởng "một hàm băm tốt duy nhất" và quy định thành quản trị việc lựa chọn theo công dụng — SHA-2/3 nhanh cho toàn vẹn/chữ ký, Argon2id tốn bộ nhớ và chậm cho mật khẩu, HMAC cho xác thực. Việc mô thức phản mẫu lưu mật khẩu bằng SHA-256 vẫn còn phổ biến là một cảnh báo.
- Kết hợp entropy đầu vào với muối và tiêu: Đừng chỉ tin vào độ mạnh lý thuyết của băm; với đầu vào entropy thấp (mật khẩu, định danh), luôn kết hợp muối theo từng người dùng, tiêu phía máy chủ và một hệ số công việc (work factor) đủ lớn. Hệ số công việc cần một quy trình vận hành để nâng định kỳ theo tiến bộ phần cứng.
- Đánh đổi và chiến lược lưu trữ dài hạn: Kéo dài đầu ra thì an toàn hơn nhưng tăng chi phí lưu trữ/truyền và giảm hiệu năng. Tài liệu lưu trữ dài hạn và hồ sơ điện tử có thể thấy thuật toán lúc ký trở nên yếu sau vài chục năm, nên hãy đưa thủ tục băm lại và ký lại (chữ ký lưu trữ dài hạn, ví dụ làm mới token dấu thời gian) vào kiến trúc.
- Công nghệ liên kết và triển vọng: Băm gắn chặt với cây Merkle, blockchain, HMAC, chữ ký số, KDF, khử trùng lặp và lưu trữ định địa chỉ theo nội dung, nên hãy truy vết tác động lan tỏa của việc thay thế một thuật toán lên các giao thức bậc trên bằng phân tích ảnh hưởng (impact analysis). Về khía cạnh kháng lượng tử, nên phản ánh việc nâng lên SHA-384 trở lên và đưa chữ ký dựa trên băm (SPHINCS+) vào lộ trình trung hạn.
Tài liệu tham khảo
- NIST, FIPS 180-4 Secure Hash Standard(SHS), https://doi.org/10.6028/NIST.FIPS.180-4
- NIST, FIPS 202 SHA-3 Standard, https://doi.org/10.6028/NIST.FIPS.202
- NIST, FIPS 205 Stateless Hash-Based Digital Signature Standard(SLH-DSA), https://doi.org/10.6028/NIST.FIPS.205
- OWASP, Password Storage Cheat Sheet, https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html
- Stevens et al., The first collision for full SHA-1(SHAttered), https://shattered.io/
- NIST, Transitioning the Use of Cryptographic Algorithms and Key Lengths(SP 800-131A), https://csrc.nist.gov/pubs/sp/800/131/a/r2/final
Tóm tắt một câu: Hàm băm mật mã là hàm tóm tắt một chiều có kháng tiền ảnh, tiền ảnh thứ hai và va chạm; hiểu sự giảm một nửa độ mạnh an ninh do nghịch lý ngày sinh và lỗ hổng mở rộng độ dài của Merkle–Damgård, ta áp dụng SHA-2/3 cùng HMAC cho toàn vẹn/chữ ký/xác thực và muối, tiêu cùng Argon2id tốn bộ nhớ cho mật khẩu theo mục đích, và trong kỷ nguyên lượng tử ứng phó bằng đầu ra dài hơn và chữ ký dựa trên băm — một nguyên thủy cốt lõi của an ninh hiện đại.