Đại diện thông điệp (Message Digests)
Một trong những phê phán về các phương pháp mã hóa đó là chúng thường có hai chức năng: xác thực và giữ bí mật. Thông thường, xác thực là cần thiết, nhưng giữ bí mật thì không. Vì mã hóa là chậm, nên ta thường muốn gửi các văn bản gốc được ký. Sau đây chúng ta sẽ mô tả lược đồ xác thực không yêu cầu mã hóa toàn bộ thông điệp.
Lược đồ này dựa vào ý tưởng hàm băm một chiều, nó sẽ lấy một mẩu ngẫu nhiên của văn bản gốc và tính ra một chuỗi bit có chiều dài cố định. Hàm băm này thường được gọi là đại diện thông điệp, có ba thuộc tính quan trọng sau:
1. Với P đã cho, dễ tính được MD(P). 2. Với MD(P) đã cho, không thể tìm ra P.
3. Không thể có hai thông điệp có cùng đại diện thông điệp
Để thỏa mãn điều kiện thứ 3, hàm băm nên có độ dài ít nhất 128 bit. Việc tính một đại diện thông điệp từ một mẩu bản rõ là nhanh hơn mã hóa bản rõ với thuật toán khóa công khai, vì vậy đại diện thông điệp có thể được sử dụng để tăng tốc độ các thuật toán chữ ký số.
Xem lại hình vẽ 3-28, thay vì ký P với KBB(A, t, P), bây giờ BB sẽ tính đại diện thông điệp bởi việc áp dụng MD cho P, ta được MD(P). Sau đó BB sẽ gửi KBB(A, t, MD(P)) thay cho phần tử thứ năm trong danh sách được mã hóa bởi KB để gửi tới Bob thay cho KBB(A, t, P).
Việc sử dụng đại diện thông điệp sẽ tiết kiệm được thời gian mã hóa cũng như chi phí vận chuyển và lưu trữ thông điệp.
Đại diện thông điệp cũng có thể hoạt động theo hệ mã hóa khóa công khai. Khi đó, Alice sẽ tính đại diện thông điệp cho bản rõ của cô ta, sau đó ký vào đại diện thông điệp và gửi cả đại diện thông điệp được ký và bản rõ tới Bob.