Trong bài viết này, mình sẽ trình bày về nguyên lý hoạt động về ứng dụng hàm băm cho việc xác thực thông tin và cho chữ ký số, giải thích, cũng như so sánh ưu, khuyết điểm của mỗi loại.
1. Nguyên lý hoạt động về ứng dụng hàm băm cho việc xác thực thông tin
Chú thích:
M: message – nội dung thông điệp cần mã hóaH(M): hash - hàm hash messageME(M): encrypt - hàm mã hóa messageMD(M): decrypt – hàm giải mã messageMK: khóa sử dụng để mã hóa và giải mã (mã hóa đối xứng)
Giải thích nguyên lý hoạt động về ứng dụng hàm băm cho việc xác thực thông tin:

-
Source A: nối thông điệp
MvàH(M)lại với nhau, sau đó mang kết quả đó đi mã hóaE(M)với khóaK, sử dụng mã hóa đối xứng và gửi cho Destination B. -
Destination B: nhận nội dung gửi từ Source A, giải mã tin nhắn
D(M)với khóaKnhận được 2 phần là thông điệpMvàH(M)nối với nhau. Tính hash của thông điệpMta đượcH, so sánhHvớiH(M)để kiểm tra.

-
Source A: mã hóa
E(H(M))với khóaK, sau đó mang kết quảE(H(M))kết hợp với thông điệpMlàm một và gửi cho Destination B. -
Destination B: nhận nội dung gửi từ Source A là thông điệp
MvàE(H(M))kết hợp với nhau. MangE(H(M))giải mãD(H(M))với khóaKđể đượcH, so sánhHvàH(M)để kiểm tra.

Bên Source A và Destination B cùng sử dụng một giá trị S chung (secret key)
-
Source A: kết hợp thông điệp
MvàSthành một(M || S), sau đó tính hash của(M || S)đượcH(M || S). Kết hợpH(M || S)vàMthành một rồi gửi cho Destination B. -
Destination B: nhận nội dung gửi từ Source A là thông điệp
MvàH(M || S)kết hợp với nhau. Ghép M nhận được vớiS, tính hash của(M || S)đượcH'(M || S), sau đó so sánhH'(M || S)vớiH(M || S)để kiểm tra.

Bên Source A và Destination B cùng sử dụng một giá trị S chung (secret key)
-
Source A: kết hợp thông điệp M và S thành một
(M || S), sau đó tính hash của(M || S)đượcH(M || S). Kết hợpH(M || S)vàMthành một, sau đó mang đi mã hóaE(H(M || S))với khóaKrồi gửi cho Destination B. -
Destination B: nhận nội dung gửi từ Source A là mã hóa
E(H(M || S)). Giải mãD(H(M || S))với khóaKnhận được thông điệpMvàH(M || S). Kết hợpMvớiSvới nhau rồi mang đi hash tạo thànhH'(M || S). Sau đó so sánhH'(M || S)vàH(M || S)để kiểm tra.
So sánh ưu, khuyết điểm của mỗi dạng:
-
Về tính bảo mật (confidentiality), cả (b) và (c) đều không đảm bảo do không mã hóa thông điệp
Mtrước khi gửi đi. -
Về tốc độ tính toán (computation), do (c) không thực hiện mã hóa, nên tốc độ nhanh nhất. Tiếp đến là tốc độ của (b) sẽ nhanh hơn (a) và (d) do (b) chỉ mã hóa
Hcòn (a) và (d) mã hóa cả thông điệpMkết hợp với một nội dung khác. (a) lại nhanh hơn (d) do (a) chỉ thực hiện mã hóa 1 lần trong khi (d) là 2. Vì vậy, (c) > (b) > (a) > (d). -
Về tính toàn vẹn (integrity), do (c) và (d) có sử dụng thêm khóa bí mật
Schỉ được biết bởi 2 bên nên sẽ đảm bảo toàn vẹn dữ liệu hơn (a) và (b).
2. Nguyên lý hoạt động về ứng dụng hàm băm cho chữ ký số
Chú thích:
M: message – nội dung thông điệp cần mã hóaH(M): hash - hàm hash message ME-asym(M): encrypt - hàm mã hóa messageM(mã hóa kiểu bất đối xứng)E-aym(M): encrypt - hàm mã hóa messageM(mã hóa kiểu đối xứng)D-asym(M): decrypt – hàm giải mã messageMkiểu bất đối xứngD-sym(M): decrypt – hàm giải mã messageMkiểu đối xứngPR: private key – khóa riêng tư sử dụng để mã hóa bất đối xứngPU: public key - khóa công khai sử dụng để mã hóa bất đối xứngK: khóa sử dụng để mã hóa và giải mã (mã hóa đối xứng)
Giải thích nguyên lý hoạt động về ứng dụng hàm băm cho chữ ký số:

-
Source A: mang
H(M)đi mã hóaE-asym(H(M))với khóa riêng tưPR, sau đó mang kết quả kết hợp với thông điệpMvới nhau rồi gửi cho Destination B. -
Destination B: nhận nội dung gửi từ Source A là thông điệp
MvàE-asym(H(M))kết hợp với nhau. MangE-asym(H(M))đi giải mãD-asym(H(M))bằng khóa công khaiPUnhận đượcH(M). Tính hash của thông điệpMđượcH'(M). Sau đó so sánhH(M)vớiH'(M)để kiểm tra.

-
Source A: mang
H(M)đi mã hóaE-asym(H(M))với khóa riêng tưPR, sau đó mang kết quả kết hợp với thông điệpMvới nhau(M || E-asym(H(M)))rồi mã hóaE-sym(M || E-asym(H(M)))sau đó gửi cho Destination B. -
Destination B: nhận nội dung gửi từ Source A là mã hóa
E-sym(M || E-asym(H(M))). Giải mãD-sym(M || E-asym(H(M)))với khóaKđược thông điệpMvàE-asym(H(M)). Giải mãD-asym(H(M))với khóa công khaiPUnhận đượcH(M). Tính hash của thông điệpMđượcH'(M). So sánhH(M)vớiH'(M)để kiểm tra.
So sánh ưu, khuyết điểm của mỗi dạng:
-
Về tính bảo mật (confidentiality), (a) không đảm bảo do không mã hóa thông điệp
Mtrước khi gửi đi -
Về tốc độ tính toán (computation), (a) nhanh hơn (b) do (a) chỉ thực hiện mã hóa 1 lần trong khi (d) là 2.