Về mặt kỹ thuật, thuật ngữ "chữ ký" được dành riêng cho, tốt, chữ ký và hàm băm không tính toán được.
Để đảm bảo rằng dữ liệu không bị thay đổi khi chuyển tiếp, với hàm băm, thì bạn phải có một cách an toàn ngoài băng để truyền giá trị băm; việc thêm giá trị băm trong tiêu đề HTTP sẽ không làm, bởi vì bất kỳ ai có thể thay đổi dữ liệu được truyền có thể tính toán lại băm theo ý muốn, và thay đổi các tiêu đề HTTP khi nó thấy phù hợp.
Với mật mã, bạn có thể "tập trung" để đảm bảo việc truyền dẫn ngoài băng tần thành khóa có thể sử dụng lại được. Nếu máy khách và máy chủ có một giá trị bí mật được chia sẻ, không biết đến kẻ tấn công được cho là, thì từ viết tắt là MAC, như trong "Mã xác thực thư"; một MAC thông thường là HMAC.
Trong nhiều trường hợp thực tế, không thể sử dụng MAC vì MAC yêu cầu bí mật dùng chung và bí mật được chia sẻ quá nhiều lần không thực sự bí mật nữa. Mỗi người giữ bí mật đều có khả năng tính toán lại MAC. Nếu mỗi khách hàng biết bí mật, thì về cơ bản nó không phải là một bí mật và nó là an toàn để giả định rằng kẻ tấn công cũng biết điều đó. Do đó, bạn có thể tiến thêm một bước và sử dụng các chữ ký số số (thực tế, những người sử dụng RSA, DSS, ECDSA ...) trong đó máy chủ sử dụng khóa riêng (chỉ máy chủ biết) và khách hàng chỉ biết khóa công khai tương ứng. Kiến thức về khóa công khai là đủ để xác minh chữ ký, nhưng không phải để tạo ra các chữ ký mới, và khóa riêng không thể được tính toán lại từ khóa công khai (mặc dù chúng được liên kết toán học với nhau).Tuy nhiên, việc thực hiện một chữ ký số và sử dụng nó đúng cách thì khó hơn nhiều so với nó thường được giả định; đặt cược tốt nhất của bạn là sử dụng giao thức đã được sửa lỗi, với các triển khai hiện có và giao thức đó xảy ra được gọi là "SSL".
Điểm ở đây là không có SSL, rất có thể là bất cứ điều gì bạn làm sẽ không ngăn chặn kẻ tấn công được xác định; nó sẽ chỉ sử dụng các chu trình CPU và băng thông mạng, và cho bạn cảm giác mờ ấm áp.
Nguồn
2010-02-02 14:45:07
@Pablo: Bạn cũng cần ký các tiêu đề? – Thilo
@Thilo chỉ nội dung sẽ là OK –
@BalusC không biết vẫn còn nếu đó là cách tiếp cận tôi sẽ thực hiện nhưng lớp đó 'HttpServletResponseWrapper' là __NICE__ (+1) –