Một vài nét về hàm băm
Hàm băm là một thuật toán số học chuyển đổi dữ liệu đầu vào thành một giá trị băm. Đặc điểm quan trọng của hàm băm là nó tạo ra một đầu ra có độ dài cố định không phụ thuộc vào kích thước đầu vào ban đầu. Ngoài ra, một tính chất quan trọng của hàm băm là nếu có một sự thay đổi nhỏ trong dữ liệu đầu vào, giá trị băm đầu ra sẽ khác hoàn toàn. Hàm băm có rất nhiều ứng dụng quan trọng trong các lĩnh vực khác nhau. Dưới đây là một số ví dụ về ứng dụng của hàm băm:
Bảo vệ mật khẩu: hàm băm được sử dụng để lưu trữ mật khẩu một cách an toàn. Thay vì lưu trữ mật khẩu trực tiếp, chỉ cần lưu trữ giá trị băm của mật khẩu. Khi người dùng đăng nhập, hệ thống sẽ tính toán giá trị băm của mật khẩu nhập vào và so sánh nó với giá trị băm đã lưu trữ. Điều này giúp bảo vệ mật khẩu của người dùng khỏi các cuộc tấn công lấy cắp mật khẩu.
Kiểm tra tính toàn vẹn dữ liệu: hàm băm được sử dụng để kiểm tra tính toàn vẹn của dữ liệu trong các quá trình truyền tải. Nếu bất kỳ phần nào của dữ liệu bị thay đổi trong quá trình truyền, giá trị băm sẽ khác so với giá trị băm ban đầu. Điều này cho phép người nhận kiểm tra xem liệu dữ liệu có bị biến đổi hay không.
Xác thực tập tin: hàm băm được sử dụng để tạo ra mã hash duy nhất cho mỗi tập tin. Khi tập tin được tải lên hoặc truyền tải, người nhận có thể tính toán giá trị băm của tập tin và so sánh nó với giá trị băm đã biết trước đó. Nếu giá trị băm khớp, người nhận có thể tin tưởng rằng tập tin không bị thay đổi.
Tìm kiếm và xếp hạng: hàm băm được sử dụng trong các hệ thống tìm kiếm và xếp hạng để tạo ra các chỉ mục nhanh chóng và hiệu quả. Thay vì tìm kiếm dựa trên toàn bộ nội dung, chỉ cần tìm kiếm trong các giá trị băm, giúp giảm thiểu thời gian và tài nguyên tìm kiếm.
Công nghệ chuỗi khối (blockchain): hàm băm chủ yếu được sử dụng trong công nghệ chuỗi khối để tạo ra mã băm cho các khối dữ liệu. Mã băm này được sử dụng để xác minh tính toàn vẹn của khối và liên kết giữa các khối với nhau, tạo nên tính chất không thể thay đổi của blockchain.
Ứng dụng hàm băm trong chính phủ số
Chính phủ số là khái niệm mô tả việc sử dụng công nghệ thông tin và truyền thông (ICT) để cung cấp dịch vụ công, tương tác và quản lý thông tin trong hoạt động của chính phủ. Chính phủ số tập trung vào việc tạo ra một môi trường điện tử thuận lợi cho người dân, doanh nghiệp và tổ chức khác để tiếp cận thông tin, thực hiện các thủ tục hành chính và tương tác với chính phủ.
Trong chính phủ số, hàm băm đóng vai trò quan trọng trong việc đảm bảo tính toàn vẹn của dữ liệu, xác thực người dùng và quản lý các chứng chỉ. Cụ thể:
Xác thực tính toàn vẹn của dữ liệu: hàm băm được sử dụng để xác minh tính toàn vẹn của dữ liệu trong chính phủ số. Khi một tập tin hoặc thông tin được tạo ra, hàm băm sẽ tạo ra một giá trị băm duy nhất dựa trên nội dung của dữ liệu đó. Nếu bất kỳ thay đổi nào được thực hiện trong tập tin hay thông tin đó, giá trị băm sẽ thay đổi. Do đó, bằng cách so sánh giá trị băm của dữ liệu gốc với giá trị băm hiện tại, ta có thể xác thực xem dữ liệu có bị thay đổi hay không.
Quản lý danh sách truy cập: hàm băm có thể được sử dụng để tạo ra danh sách truy cập (access list) trong chính phủ số. Mỗi người hay thức thể có thể được xác định bằng một giá trị băm duy nhất dựa trên thông tin nhập vào, như một mã biến động hay thông tin về quyền truy cập. Khi cần xác minh quyền truy cập, hàm băm có thể được sử dụng để so sánh giá trị băm của người dùng với giá trị băm được lưu trữ trong danh sách truy cập.
Xác thực dữ liệu: hàm băm có thể được sử dụng để xác thực dữ liệu trong chính phủ số. Khi một dữ liệu được gửi đi, hàm băm có thể được sử dụng để tạo ra một giá trị băm duy nhất. Khi dữ liệu được nhận, giá trị băm của dữ liệu này có thể được so sánh với giá trị băm nhận được để xác minh tính toàn vẹn của dữ liệu.
Quản lý chứng chỉ: hàm băm có thể được sử dụng để quản lý các chứng chỉ số. Mỗi chứng chỉ có thể được biểu diễn bằng một giá trị băm duy nhất dựa trên các thuộc tính của chứng chỉ đó. Giá trị băm này có thể được sử dụng để tìm kiếm, sắp xếp và xác minh tính toàn vẹn của các chứng chỉ trong hệ thống quản lý chứng chỉ.
Ứng dụng trong chữ ký số: nhằm nâng cao hiệu suất chữ ký số do với các thông điệp đầu vào có chiều dài khác nhau vẫn cho ra các mã băm có cùng độ dài. Việc sử dụng hàm băm trong việc tạo và kiểm tra chữ ký số được mô tả ở hình 1.
Hình 1. Hàm băm trong quá trình tạo và kiểm tra chữ ký.
Khuyến nghị tiêu chuẩn hàm băm cho chính phủ số ở Việt Nam
Theo Thông tư số 06/2015/TT-BTTTT ngày 23/03/2015 của Bộ trưởng Bộ Thông tin và Truyền thông quy định danh Mục tiêu chuẩn bắt buộc áp dụng về chữ ký số và dịch vụ chứng thực chữ ký số: Các chữ ký số (CA) công cộng hoàn thành việc chuyển đổi chứng thư số sử dụng chuẩn hàm băm an toàn SHA-1 sang SHA-256 trước ngày 31/12/2016. Như vậy, với những hệ thống cần bảo vệ thông tin nhạy cảm, chúng ta có thể áp dụng tiêu chuẩn hàm băm là SHA-256 như mô tả ở bảng 1.
Bảng 1. Tổng hợp khuyến nghị tiêu chuẩn hàm băm an toàn
STT
|
Thuật toán
|
Kích thước đầu ra (bit)
|
Lĩnh vực áp dụng
|
Khuyến nghị mức độ mật
|
Xung đột
|
1
|
MD2
|
128
|
- Xây dựng cấu trúc dữ liệu để tối ưu việc tìm kiếm: Hashtable
- Lưu và kiểm tra password
- Kiểm tra tính toán vẹn của dữ liệu
- Sinh mã OTP
|
- Thông tin nhạy cảm
- Chủ yếu dùng cho xác thực
|
Khả năng cao
|
2
|
MD4
|
128
|
Có
|
3
|
MD5
|
128
|
Có
|
4
|
SHA-0
|
160
|
Không
|
5
|
SHA-1
|
160
|
Có lỗi
|
6
|
SHA-256
|
256
|
- Trong các giao thức: SSL, TLS , IP Sec
- Chứng thư số
- Chữ ký số
- Giao dịch điện tử
|
Mật
|
Không
|
7
|
SHA-224
|
224
|
Mật
|
Không
|
8
|
SHA-384
|
384
|
Tối mật
|
Không
|
9
|
SHA-512
|
512
|
Tuyệt mật
|
Không
|
Căn cứ vào bộ tiêu chuẩn FIPS của Viện Tiêu chuẩn và Công nghệ quốc gia Mỹ (NIST), các thông tin bí mật có thể chia thành các mức: mật, tối mật và tuyệt mật. Căn cứ vào chức năng, nhiệm vụ của hệ thống mật mã dân sự, hệ thống chứng thực số chuyên dụng và chứng thực số cho xã hội. Đồng thời, căn cứ vào tiêu chuẩn SP 800-107, tiêu chuẩn quốc gia về mật mã và các yêu cầu về an toàn trong chính phủ số, chúng ta có thể đưa ra hai khuyến nghị sau: Với các hệ thống mật mã dân sự và hệ thống chứng thực số cho kinh tế - xã hội có thể sử dụng tiêu chuẩn hàm băm SHA-256. Với khối an ninh quốc phòng và hệ thống chứng thực số chuyên dụng cần sử dụng tiêu chuẩn hàm băm cao hơn, tối thiểu là SHA-384 với cấp độ mật như mô tả ở bảng 1.