4.3 .Hệ mật Rabin
4.3.1 .Mô tả giải thuật Rabin
a. Tạo khóa
Mỗi đầu tạo một khóa cơng khai và một khóa bí mật tương ứng theo các bước sau: (1) Tạo hai số nguyên lớn, ngẫu nhiên và phân biệt p và q có kích thước xấp xỉ
nhau (2) Tính n=pq
(3) Khóa cơng khai là n, khóa bí mật là cặp số (p,q) b. Mã hóa
A phải thực hiện các bước sau: (1) Nhận khóa cơng khai của B: n
(2) Biểu thị bản tin dưới dạng một số nguyên m nằm trong dải [0,n-1] (3) Tính c=m2 mod n
(4) Gửi bản mã c cho B c. Giải mã
Để khôi phục bản rõ m từ c, B phải thực hiện các bước sau: Tìm 4 căn bậc hai của c mod n là m1, m2, m3 hoặc m4
Thông báo cho người gửi là một trong 4 giá trị m1, m2, m3 hoặc m4 , bằng một cách nào đó B sẽ quyết định m là giá trị nào
Ví dụ
Tạo khóa:B chọn các số nguyên tố p=277 và q=331. B tính n=277*331= 91687.Khóa cơng khai của B là 91687. Khóa bí mật của A là cặp số (p=277, q=331)
Mã hóa:Giả sử 6 bit cuối cùng của bản gốc được lặp lại trước khi thực hiện mã hóa. Việc thêm vào các bit thừa này nhằm giúp cho bên giải mã nhận biết được bản mã đúng
Để mã hóa ban tin 10 bit m=1001111001, A sẽ lặp lại 6 bit cuối cùng của m để có được bản tin 16 bit sau: m=1001111001111001, biểu diễn thập phân tương ứng là m=40569
Sau đó A tính c = m2 mod n = 405692 mod 91687 = 62111 rồi gửi c cho B Giải mã:Để giải mã bản mã c, B tính bốn giá trị căn bậc hai của c mod n: m1 = 69654, m2 = 220033, m3 = 40596, m4 = 51118
Biểu diễn nhị phân tương ứng của các số trên là : m1 = 10001000000010110, m2 = 101011000010001,
m3 = 1001111001111001, m4 = 1100011110101110
vì chỉ có m3 mơi scos độ thừa cần thiết nên B sẽ giải mã c bằng m3 và khôi phục bản tin gốc là m = 1001111001