Bài toán để giải hệ mật mã Rabin được đưa ra như sau:
Cho trước 2 số nguyên tố p và q phân biệt và đủ lớn (có độ dài mỗi số khoảng 572 bít). Tính n =p.q
Khóa công khai của Rabin A là n còn khóa riêng là p và q
- Mã hóa: Giả sử thực thể B có một thông báo m ∈ Zn muốn gửi bí mật cho
A. B làm như sau:
Bước 1: Lấy khóa công khai n của A Bước 2: Tính c = m2 mod n
Bước 3: Gửi c cho A
- Giải mã: Sau khi nhận được bản mã c, A thực hiện các bước sau:
Bước 1: Dùng thuật toán tìm căn bậc 2 bình phương theo modulon bằng cách giải phương trình đồng dư toàn phương theo mod p và theo mod q. Kết quả sẽ có 4 nghiệm khác nhau mà ta ký hiệu là: M1, M2, M3, M4 của c mod n
Bước 2: Bức thông điệp m chính là 1 trong 4 nghiệm M1, M2, M3, M4. - Chú ý: Để khẳng định mi (i =1, 2, 3, 4) nào trong các nghiệm là thông điệp m, A qui định trước lúc mã hóa cần lặp lại một số bít đầu của m vào phần đuôi của
m thành m’ rồi mới mã hóa, chẳng hạn bức thông điệp m đổi sang cơ số 2 thành:
m = m1m2 … mk với mi∈ {0, 1}, (i =1, 2, … , k) và
m’ = m1m2 … mkm1m2 … mb Với số b do bên A quy định. Thực tế, qui định đó không làm tăng độ mật cho Rabin mà chỉ làm dễ dàng cho thực thể A khi xác định bản thông báo.
3.1.4. Kết luận
Để giải được hệ mật mã Rabin chính là giải bài toán căn bậc 2 ở trên. Vấn đề phân tích ra thừa số n và tính căn bă ̣c 2 theo module n là tương đương về mă ̣t
tính toán. Nên ta có thể thấy mật mã RSA có độ phức tạp lớn hơn mật mã Rabin.