Nâng cao tính an toàn và hiệu quả cho hai lược đồ Rabin-Schnorr

Một phần của tài liệu Luận án Tiến sĩ Nghiên cứu phát triển giải pháp xác thực an toàn và quản lý khoá cho cơ sở dữ liệu thuê ngoài (Trang 72 - 74)

và RSA-Schnorr

2.3.5.1. Nâng cao tính an toàn cho lược đồ Rabin-Schnorr và RSA-Schnorr Sau khi đề xuất lược đồ 2.2, luận án nhận thấy lược đồ này còn những vấn đề như sau:

❼ Thứ nhất. Với n là tích của hai số nguyên tố khác nhau q và q′ ta có: gcd(a, n) 6= 1 ⇔ (a mod q = 0) hoặc (a mod q′ = 0). Vì vậy, nếu gcd(a, n) 6= 1thì lược đồ sẽ giảm độ an toàn do chỉ còn dựa vào bài toán logarit rời rạc.

❼ Thứ hai. Nếu a là một thặng dư bậc hai thì sẽ có hai nghiệm là s và −s thoả mãn phương trình a = s2 mod n. Nói cách khác, nếu (r, s) được chấp nhận bởi thuật toán 2.3 thì (r,−s) cũng được chấp nhận. Do đó, để tăng tính an toàn, luận án chỉ cần giữ lại một giá trị nghiệm s trong thuật toán tạo chữ ký.

Để nâng cao tính an toàn cho các thuật toán đề xuất, luận án cải tiến, bổ sung tại bước 3 và bước 6 của thuật toán 2.2 như sau:

3. a = (t−H(m||r)x) modn; if (gcd(a, n) 6= 1) then goto 1. 6. s ← CRT(sq, sq′); if (s ≥ n/2) then s= n−s.

Tương ứng với việc bổ sung ở bước 6 trong thuật toán 2.2 thì thuật toán 2.3 và 2.4 phải thêm điều kiện s < n/2.

Lược đồ RSA-Schnorr cũng có vấn đề như vấn đề thứ nhất của lược đồ Rabin-Schnorr nên cũng thêm điều kiện gcd(s, n) 6= 1 ở bước 3 trong thuật toán 2.5.

2.3.5.2. Nâng cao tính hiệu quả cho lược đồ Rabin-Schnorr và RSA-Schnorr Xuất phát từ lược đồ ElGamal, các lược đồ phát triển của nó như DSA, GOST, Schnorr,... nhằm đạt được tính hiệu quả cao đều có chung một giải pháp đó là đưa thêm vào tham số miền N vừa đủ lớn sao cho bài toán tìm

các logarit trong nhóm hgi có kích thước N-bít là "khó". Luận án có một số khuyến nghị như sau:

❼ Thứ nhất. Đưa vào tham số miền N cho các lược đồ cải tiến nếu nó được lấy tương ứng với L theo bảng 2.2, khi này bước 1 của các thuật toán ký nên chỉ là t ∈R (2N−1,2N). Tương tự tham số mật x cũng chỉ cần là x ∈R (2N−1,2N). Tham số h = N.

❼ Thứ hai. Số mũ công khai e nên có dạng 2k+ 1, thậm chí lấy cố định là 216+ 1 như khuyến cáo đối với lược đồ RSA.

❼ Thứ ba. Đối với lược đồ Rabin-Schnorr, người ký tính sẵn và lưu như một tham số mật giá trị c = q.(q−1 mod p). Khi này chi phí cho việc tính CRT(x, y) chỉ còn là tm(L).

Các tham số Các tham số cho lược đồ Rabin-Schnorr và RSA-Schnorr giống như nêu trong mục 2.3.2 với một số bổ sung sau:

❼ Hàm tóm lược H:{0,1}∞

→ {0,1}N. ❼ Tham số mật x ∈R (2N−1,2N).

❼ Số mũ công khai e = 216+ 1 dùng cho RSA-Schnorr.

❼ Tham số mật của người ký c = q.(q−1 mod p) dùng cho Rabin-Schnorr. Khi đó khóa ký và khóa kiểm tra chữ ký:

❼ Trong lược đồ Rabin-Schnorr lần lượt là: (p, n, q, q′, x, c) và (p, n, y). ❼ Trong lược đồ RSA-Schnorr lần lượt là: (p, n, q, q′, d, x) và (p, n, e, y).

Lược đồ Rabin-Schnorr cải tiến: Thuật toán 2.8, 2.9, 2.10.

Thuật toán 2.8:Thuật toán tạo chữ ký Rabin-Schnorr cải tiếnInput: m∈M Input: m∈M Output: (r, s)∈S 1 t ∈R (2N−1,2N) 2 r ←gt mod p 3 a←(t−H(m||r)x) mod n 4 aq ←amodq; a′q ←amod q′

5 if ((aq = 0) or (aq′ = 0)) then goto 1. (thay cho gcd(a, n)6= 1)

6 if ((aq) =−1) or ((qa′) = −1) then goto 1

7 sq ←(aq)(q+1)/4 mod q; s′q ←(aq′)(q′+1)/4 mod q′ 8 s←(c.(sq−sq′) +sq′) mod n

9 if (s≥n/2) then s←n−s 10 return (r, s)

Thuật toán 2.9:Thuật toán kiểm tra chữ ký Rabin-Schnorr cải tiến

Input: (m,(r, s))∈M ×S

Output: "Accept" nếu chữ ký là hợp lệ và "Reject" trong trường hợp ngược lại

1 if (s≥n/2) then return "Reject" 2 a←s2 mod n

3 r′←ga.yH(m||r) mod p

4 if (r=r′) then return "Accept" 5 else return "Reject"

Một phần của tài liệu Luận án Tiến sĩ Nghiên cứu phát triển giải pháp xác thực an toàn và quản lý khoá cho cơ sở dữ liệu thuê ngoài (Trang 72 - 74)

Tải bản đầy đủ (PDF)

(127 trang)