4. Tổng quan luận văn
2.7.1. Hàm băm (hash function)
Chữ ký được xác định cho từng khối của văn bản và nếu văn bản gồm nhiều khối thì chữ ký cho toàn văn bản cũng phải do ghép chữ ký trên từng khối lại với nhau mà thành, chữ ký trên từng khối văn bản thường có độ dài bằng ( hoặc thậm chí gấp đôi ) độ dài của khối văn bản, do đó chữ ký chung cũng có độ dài tương đương với độ dài văn bản, đó là một điều bất tiện. Ta mong muốn, như trong trường hợp viết tay, chữ ký chỉ có độ dài ngắn và hạn chế cho dù văn bản có thể dài bao nhiêu cũng được. Đối với chữ ký điện tử, vì chữ ký phải được “ký” cho từng bit của văn bản nên muốn có chữ ký độ dài hạn chế trên văn bản có độ dài tùy ý thì phải tìm cách rút ngắn độ dài văn bản. Nhưng bản thân văn bản không thể rút ngắn được nên chỉ còn cách là tìm cho mỗi văn bản một bản “tóm lược” có độ dài hạn chế rồi thay cho việc ký trên toàn bộ văn bản, ta ký trên bản tóm lược đó, xem chữ ký trên bản tóm lược có tư cách là chữ ký trên văn bản. Giả sử là
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
tập hợp tất cả các văn bản có thể có (tất nhiên trong một lĩnh vực nào đó), và ∆ là tập hợp tất cả các bản “tóm lược” có thể được sử dụng. Việc tìm cho mỗi văn bản một bản tóm lược tương ứng xác định một hàm h : → ∆. Một hàm h như vậy người ta gọi là một hàm băm (hash function). Thông thường, là tập hợp các dãy bit có độ dài tuỳ ý, và ∆ là tập hợp các dãy bit có một độ dài n cố định, nên người ta cũng định nghĩa hàm băm là các hàm h
: → ∆ với các tập hợp và ∆ đó (tức các hàm h : {0,1}∗ → {0,1}n
).
Dùng hàm băm h , ta xem z = h(x) là “tóm lược” của x , đại diện cho x và ta sẽ xem chữ ký trên z là chữ ký trên văn bản x, vì z có độ dài hạn chế nên chữ ký trên x cũng có độ dài hạn chế.
Một vấn đề được đặt ra là: vậy hàm h : → ∆ phải thoả mãn những điều kiện gì để h(x) xứng đáng được xem là đại diện của x trong việc tạo lập chữ ký ? Hai điều kiện sau đây thường được xem là hai điều kiện chủ yếu cho một hàm băm:
1. Hàm băm phải là hàm một phía, nghĩa là cho x tính z = h(x) là việc dễ nhưng ngược lại, biết z tính x là việc cực khó (có thể qui ước dễ hay khó theo nghĩa tính được trong thời gian đa thức hay không).
2. Hàm băm phải là hàm không va chạm mạnh theo nghĩa sau đây:
không có thuật toán tính được trong thời gian đa thức giải bài toán “ tìm x1 và x2 thuộc sao cho x1 ≠ x2 và h (x1) =h (x2)”; nói cách khác, tìm hai văn bản khác nhau có cùng một đại diện là rất khó. (Còn có một khái niệm không va chạm yếu được định nghĩa như sau: Cho x ∈ . Hàm h là không va chạm yếu đối với x nếu rất khó tìm được x′ ∈ ,x′ ≠ x và h ( x′ ) = h (x )).Ta mong muốn độ dài của chữ ký là ngắn, tức là độ dài của các tóm lược cũng ngắn. Nhưng ngắn bao nhiêu là vừa? Ngắn bao nhiêu thì có thể bảo đảm tính không va chạm mạnh? Và ở đây ta gặp một kiểu “tấn công”, thường được
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
gọi là “tấn công ngày sinh” có liên quan đến khả năng va chạm mạnh, nói rằng trong một nhóm gồm 23 người được chọn một cách ngẫu nhiên thì ít nhất có hai người có cùng ngày sinh (tức có va chạm mạnh). Một cách tổng quát, người ta chứng minh được rằng: Nếu có tất cả n bản tóm lược và , thì trong k văn bản được chọn ngẫu nhiên có ít nhất một va chạm mạnh. Trở lại với vấn đề chọn độ dài (của biểu diễn nhị phân) cho các tóm lược, nếu ta lấy chẳng hạn độ dài 40 bit, thì n = 240, và do đó từ k ≈ 220 (khoảng một triệu) văn bản sẽ có một va chạm mạnh với xác suất 1/2, như vậy khó bảo đảm được an toàn. Nhưng nếu ta lấy dộ dài của bản tóm lược là 128, tức n =2128, thì va chạm mạnh có thể xẩy ra với xác suất 1/2 khi số các văn bản có thể là k ≈ 264, một con số khá lớn (so với số văn bản có thể nẩy sinh trong thực tế), do đó hy vọng tính an toàn sẽ được bảo đảm. Có thể vì vậy mà trong chuẩn DSS người ta chọn độ dài của các tóm lược là 160 bit.