4. Nội dung luận văn
2.3.3 Lược đồ chữ ký RSA
Trong phần này mô tả lược đồ chữ ký RSA. Độ an toàn của lược đồ chữ ký RSA dựa vào độ an toàn của hệ mã RSA. Lược đồ bao gồm cả chữ ký số kèm theo bản rõ và tự khôi phục thông điệp từ chữ ký số.
Như đã biết không gian thông điệp và không gian bản mã của lược đồ mã hóa công khai RSA là Zn = {0, 1, …, n-1}, ở đây n = p*q là tích của hai số nguyên tố lớn khác nhau. Chữ ký số được tạo bởi việc đảo ngược vai trò của quá trình mã hóa và quá trình giải mã. Lược đồ chữ ký số RSA là lược đồ chữ ký thuộc dạng 2: Lược đồ chữ ký số tự khôi phục bản rõ. Không gian ký và không gian xác thực chữ ký đều là Zn.
Hàm R: M Zn (là hàm dùng để số hóa thông điệp). 2.3.3.1 Thuật toán sinh khóa cho lược đồ chữ ký RSA
Mỗi cá thể trong hệ thống thực hiện các bước sau: (1) Sinh ngẫu nhiên hai số nguyên tố lớn p và q. (2) Tính n = p*q và φ(n) = (p-1)*(q-1)
(3) Chọn một số tự nhiên e sao cho 1 < e < φ(n) và là số nguyên tố cùng nhau với φ(n).
(4) Dùng thuật toán Euclide mở rộng tính d sao cho: d*e ≡ 1 (mod φ(n)) với 1< d < φ(n).
(5) Khóa công khai (e, n), khóa bí mật (d, n). 2.3.3.2. Thuật toán sinh chữ ký RSA
Tóm lược: Cá thể A ký một thông điệp P và một cá thể B bất kỳ có thể chứng thực chữ ký có đúng là của A hay không. Đồng thời khôi phục lại thông điệp từ chữ ký. Cá thể A thực hiện:
(a) Số hóa thông điệp P thành số nguyên m [0, n-1]; m = R(P). (b) Tính s = md mod n.
(c) Chữ ký của A lên thông điệp P là s, gửi s cho B. 2.3.3.3. Thuật toán chứng thực chữ ký RSA
Để xác thực chữ ký s có phải là của A và khôi phục thông điệp P thì B thực hiện như sau:
(a) Nhận khóa công khai của A là (e, n). (b) Tính m = se mod n.
(c) Xác nhận chữ ký nếu m MR, ngược lại chối bỏ chữ ký của A. (d) Khôi phục lại P = R-1(m).
* Chứng minh quá trình chúng thực chữ ký
Nếu s là chữ ký cho thông điệp P thì:
s = md mod n, với m = R(P).
Từ e*d ≡ 1 (mod φ(n)), se = me*d mod n = m mod n. Cuối cùng ta có: R-1(m) = R-1(R(P)) = P.
Ví dụ:
Giả sử A ký một chữ ký s lênthông điệp P = 31229978 sau đó gửi cho B. Cá thể B bất kỳ có thể chứng thực chữ ký có đúng là của A hay không và khôi phục lại thông điệp P từ chữ ký s.
Quá trình sinh khóa:
Cá thể A thực hiên các bước sau:
1. Chọn hai số nguyên tố p = 7927, q = 6997. 2. Tính: n = p*q = 7927*6997 = 55465219 φ(n) = 7926*6996 = 55450296 3. Chọn e = 5, 1< e < 55450296. 4. Tính d: Từ e*d = 1 mod 55450296, tìm được d = 44360237. Khóa công khai là (e, n) = (5, 55450296);
Khóa bí mật (d, n) = (44360237, 55450296).
Quá trình sinh chữ ký:
Giả sử M = Zn và hàm R: MZn xác định R(P) = P với mọi P M. P = 31229978 khi đó A thực hiện:
(a) Số hóa thông điệp P: Tính m = R(P) = 31229978, (b) Tính chữ ký s = md mod n
= 3122997844360237 mod 55465219 = 30729435. (c) Gửi s cho B.
Quá trình chứng thực chữ ký:
B thực hiện các bước sau:
(a) Nhận khóa công khai của A là (5, 55465219) (b) Tính m = se mod n
= 307294355 mod 55465219 = 31229978
(c) Kiểm tra m = 31229978[0, 55465219]. Xác nhận chữ ký s là của A. (d) Khôi phục P = R-1(m) = 31229978.