Xác thực thông điệp là một thủ tục nhằm kiểm tra các thông điệp nhận được, xem chúng có đến từ một nguồn hợp lệ và có bị sửa đổi hay không. Xác thực thông điệp cũng có thể kiểm tra trình tự và tính đúng lúc. Có nhiều kỹ thuật để xác thực thông điệp: Ngay trong hệ mã bí mật người ta cũng đã đề cập đến việc xác thực thông điệp, chữ ký số cũng là một kỹ thuật xác thực, nó cũng bao gồm nhiều biện pháp để chống lại việc chối bỏ đã gửi hay nhận thông điệp.
Các hàm xác thực có thể được sử dụng để tạo ra dấu xác thực có thể chia thành ba loại: Mã hoá thông điệp, mã xác thực thông điệp và các hàm băm. ([3], [10])
3.3.1 Mã hoá thông điệp
Mã hoá thông điệp đảm bảo tính bí mật lẫn xác thực, quy trình thực hiện như sau: i) Trước tiên A sử dụng khoá riêng của mình mã hoá thông điệp P để có
P E
s
a
kd
(thực hiện ký thông điệp)
ii) Tiếp tục dùng khoá công khai của B (nhằm đảm bảo tính bí mật) mã hoá chữ ký s để được bản mã s E E P E C b e b e b e k k k , C được gửi đến B.
B sử dụng khoá riêng của mình để giải mã thông điệp và sau đó dùng khoá công khai của A để xác thực chữ ký.
3.3.2 Kỹ thuật xác thực dùng khoá bí mật
Một kỹ thuật xác thực dùng khoá bí mật (hệ mã bí mật) để tạo ra một khối dữ liệu nhỏ có kích thước cố định được gọi là MAC. Có thể trình bày ngắn gọn như sau:
A và B có chung một khoá bí mật k. Khi A muốn gửi một thông điệp P cho B, quy trình được thực hiện như sau:
i) A tính toán MAC qua một hàm C với khoá k: MAC = Ck(P)
ii) Thông điệp P cùng với MAC được gửi cho B, B tiến hành tính toán MAC trên thông điệp nhận được tương tự như A đã tính, sau đó so sánh MAC tính được với MAC nhận được từ A. Nếu trùng khớp thì:
- B tin chắc rằng thông điệp không bị sửa đổi
- B đảm bảo được rằng thông điệp được gửi một cách hợp pháp từ A (vì chỉ có 2 người biết khoá bí mật nên không ai có thể chuẩn bị một thông điệp với một MAC hợp lệ)
Mã hoá đối xứng cung cấp tính xác thức và được sử dụng rộng rãi (nhưng không cung cấp chữ ký số vì cả A và B cùng dung chung một khoá).
Để đảm bảo tính bí mật trong truyền thông cần phải mã hoá thông điệp trước hoặc sau khi tính toán MAC. Trong trường hợp này, A và B cần phải có 2 khoá.
3.3.3 Các hàm băm
Một biến thể của MAC là hàm băm một chiều (one – way hash). Với các dữ liệu có độ dài khác nhau bất kỳ khi được cho qua một thuật toán one way hash thì sẽ được “băm” ra thành các chuỗi có chiều dài khá nhỏ và cố định như nhau được gọi là dấu vết thông điệp (message digest). Thuật toán này bảo đảm rằng, nếu nội dung dữ liệu bị thay đổi (dù chỉ là 1 bit) thì kết quả của dấu vết thông điệp cũng sẽ thay đổi. Các giải thuật băm MD2, MD4, MD5 cho ra dấu vết thông điệp với chiều dài cố định là 128 bit,
còn SHA, SHA-1 là 160 bit, đây chính là yếu tố then chốt để kiểm tra tính toàn vẹn của dữ liệu.
Người ta thường sử dụng sự hỗ trợ của các hàm băm mật mã trong quá trình số hoá của các lược đồ ký. Hàm băm mật mã phải có tính chất sau:
Là hàm một chiều
Không tìm được xung đột: tức là rất khó để tìm hai văn bản P và P’ có cùng mã băm.
Một dấu vết thông điệp phải có hai thuộc tính thiết yếu sau:
Nếu một bit hoặc một vài bit của dữ liệu bị thay đổi thì dấu vết thông điệp cũng bị thay đổi.
Một ai đó có muốn giả mạo thì cũng không thể đưa ra một thông điệp giả cùng với một dấu vết thông điệp tương ứng giống như bản gốc trong thời gian chấp nhận được.
Một số các thuật toán đã từng được thiết kế để tính toán các dấu vết thông điệp. Có hai thuật toán tốt nhất được biết đến là MD5- một thuật toán được phát minh bởi Ronald Rivest của MIT và SHA-1 được phát triển bởi National Institute of Standard and Technology.
3.4 Lƣợc đồ chữ ký số dùng mật mã khoá công khai 3.4.1 Hoạt động của chữ ký số