Skip to content

Dashboard

Nguyên lý hoạt động về ứng dụng hàm băm

Created by Admin

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óa
  • H(M): hash - hàm hash message M
  • E(M): encrypt - hàm mã hóa message M
  • D(M): decrypt – hàm giải mã message M
  • K: 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 MH(M) lại với nhau, sau đó mang kết quả đó đi mã hóa E(M) với khóa K, 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óa K nhận được 2 phần là thông điệp MH(M) nối với nhau. Tính hash của thông điệp M ta được H, so sánh H với H(M) để kiểm tra.

  • Source A: mã hóa E(H(M)) với khóa K, sau đó mang kết quả E(H(M)) kết hợp với thông điệp M là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 ME(H(M)) kết hợp với nhau. Mang E(H(M)) giải mã D(H(M)) với khóa K để được H, so sánh HH(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 MS thành một (M || S), sau đó tính hash của (M || S) được H(M || S). Kết hợp H(M || S)M thà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 MH(M || S) kết hợp với nhau. Ghép M nhận được với S, tính hash của (M || S) được H'(M || S), sau đó so sánh H'(M || S) với H(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) được H(M || S). Kết hợp H(M || S)M thành một, sau đó mang đi mã hóa E(H(M || S)) với khóa K rồ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óa K nhận được thông điệp MH(M || S). Kết hợp M với S với nhau rồi mang đi hash tạo thành H'(M || S). Sau đó so sánh H'(M || S)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 M trướ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 H còn (a) và (d) mã hóa cả thông điệp M kế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 S chỉ đượ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óa
  • H(M): hash - hàm hash message M
  • E-asym(M): encrypt - hàm mã hóa message M (mã hóa kiểu bất đối xứng)
  • E-aym(M): encrypt - hàm mã hóa message M (mã hóa kiểu đối xứng)
  • D-asym(M): decrypt – hàm giải mã message M kiểu bất đối xứng
  • D-sym(M): decrypt – hàm giải mã message M kiểu đối xứng
  • PR: private key – khóa riêng tư sử dụng để mã hóa bất đối xứng
  • PU: public key - khóa công khai sử dụng để mã hóa bất đối xứng
  • K: 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óa E-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ệp M vớ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 ME-asym(H(M)) kết hợp với nhau. Mang E-asym(H(M)) đi giải mã D-asym(H(M)) bằng khóa công khai PU nhận được H(M). Tính hash của thông điệp M được H'(M). Sau đó so sánh H(M) với H'(M) để kiểm tra.

  • Source A: mang H(M) đi mã hóa E-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ệp M với nhau (M || E-asym(H(M))) rồi mã hóa E-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óa K được thông điệp ME-asym(H(M)). Giải mã D-asym(H(M)) với khóa công khai PU nhận được H(M). Tính hash của thông điệp M được H'(M). So sánh H(M) với H'(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 M trướ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.

Source: https://viblo.asia/p/nguyen-ly-hoat-dong-ve-ung-dung-ham-bam-Qbq5QEgm5D8