Hệ mã Rabin

Một phần của tài liệu GIÁO TRÌNH LÝ THUYÊT THÔNG TIN-THÁI NGUYÊN – NĂM 2010 potx (Trang 125 - 128)

ðây là hệ mật có ñộ an toàn cao về mặt tính toán chống lại ñược cách tấn công bản rõ

126

Thut toán

To khoá: Mỗi thực thể tạo một khoá công khai và một khoá riêng tương ứng. Mỗi thực thể A cần thực hiện các công việc sau:

1. Tạo hai số nguyên tố lớn p và q có cỡ xấp xỉ nhau. 2. Tính n=p×q.

3. Khoá công khai của A là n, khoá riêng của A là (p,q).

Mã hoá: B mã hoá văn bản m gửi cho A.

1. Nhận ñược khoá công khai xác thực của A là n.

2. Biểu diễn ñoạn văn bản là một số nguyên trong miền: {0, 1, . . , n-1} 3. Tính c = m2 mod n.

4. Gửi bản mã c cho A.

Gii mã: Khôi phục bản rõ m từ c, cần phải dùng thuật toán tìm căn bậc hai theo modulo n từ số nguyên tố p và q ñã cho ñể tính ra 4 căn bậc hai m1, m2, m3 và m4 của c theo modulo n. Khi ñó văn bản ñã gửi là một trong các giá trị m1, m2, m3 hoặc m4. A bằng cách này hay cách khác quyết ñịnh ñâu là m.

Chú ý : Giả sử p và q ñều ñược chọn sao cho ≡ 3 (mod 4) thì việc tính toán 4 căn bậc 2 của c theo modulo n ñược thực hiện ñơn giản theo thuật toán sau:

+ Sử dụng thuật toán Euclid mở rộng ñể tìm số nguyên a và b thoả mãn a×p + b×q = 1. Chú ý rằng a và b có thể ñược tính chỉ 1 lần trong suốt quá trình tạo khoá.

+ Tính r = c(p + 1)/4 mod p. + Tính s = c(q + 1)/4 mod q. + Tính x = (aps + bqr) mod n. + Tính y = (aps - bqr) mod n.

+ Bốn căn bậc 2 của c theo modulo n lần lượt là x, -x mod n, y và -y mod n.

127

Ví d

To khoá: Chọn số nguyên tố p = 277, q = 331, tính n = p×q = 91687. Khoá công khai của A là n = 91687, khoá riêng là (p = 277, q= 331).

Mã hoá: Giả sử rằng 6 bit cuối cùng của văn bản gốc là quy ñịnh ñể tái tạo trước khi mã hoá. Yêu cầu mã hoá 10 bit văn bản m= 1001111001,B tái tạo lại 6 bit cuối cùng của m ñể thu ñược 16 bit văn bảnm = 1001111001111001, biểu diễn ở dạng thập phân là m = 40569 sau ñó B tính c = m2 mod n = 405692 mod 91687 = 62111.

Gii mã: ðể giải mã c, A dùng thuật toán tính ñược 4 căn bậc hai của c mod n là m1 = 69654, m2 = 22033, m3 = 40569, m4 = 51118 biểu diễn ở dạng nhị phân là:

m1 = 10001000000010110, m2 = 101011000010001 m3 = 1001111001111001, m4 = 1100011110101110

Ta thấy chỉ m3 có phần mở rộng quy ñịnh, khi ñó A tiến hành giải mã c (hay m3 ) ñể khôi phục văn bản gốc m= 1001111001.

Tính bo mt ca h mã khoá công khai Rabin

Do việc phân tích n thành thừa số là rất khó nên lược ñồ mã khoá công khai Rabin là minh chứng bảo ñảm chống lại sự tấn công của ñối phương. Tuy nhiên, lược ñồ mã khoá công khai Rabin không chống lại ñược sự tấn công bản mã chọn trước. Mặt hạn chế của lược ñồ mã khoá công khai Rabin là người nhận phải lựa chọn chính xác bản rõ từ 4 khả năng. Sự nhập nhằng trong giải mã có thể dễ dàng khắc phục trong thực tế bằng cách thêm phần mở rộng vào bản rõ trước khi mã hoá. Khi ñó, với xác suất cao, chính xác một trong bốn căn bậc 2: m1, m2, m3, m4 của bản mã c sẽ có phần mở rộng này, và người nhận sẽ chọn ñó là bản rõ mong ñợi. Nếu không có căn bậc 2 nào của c có phần mở rộng này thì người nhận từ chối. Nếu phần mở rộng ñược sử dụng

128 như ñã nói ở trên, lược ñồ Rabin không dễ bị tấn công bằng bản mã chọn trước.

Một phần của tài liệu GIÁO TRÌNH LÝ THUYÊT THÔNG TIN-THÁI NGUYÊN – NĂM 2010 potx (Trang 125 - 128)