Thuật toán mã hóa

Một phần của tài liệu nâng cao tốc độ tính toán của phương pháp mã hóa khóa công khai rabin (Trang 68 - 78)

- Bước 1: Xác định : = 0, nếu J M 0 N hoặc 1 và M 0, 1 2 N = 1, nếu J M 0 N hoặc 1 và M 1, 1 2 N N = 2, nếu J M 1 N và M 0, 1 2 N = 3, nếu J M 1 N và M 1, 1 2 N N

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

C = 4 (M2 MOD N) +

2.4.3 Thuật toán giải mã

- Bước 1: Tính = C MOD 4 = C DIV 4

- Bước 2: Xác định nghiệm x1, x2 của phương trình: X2 = mod N

- Bước 3: Bản rõ M sẽ là một trong bốn nghiệm trên, tùy thuộc vào giá trị của mỗi nghiệm và giá trị . Cụ thể như sau:

1. = 0 Nếu x1 0, 1 2 N thì M = x1 , trái lại M = N - x1 2. = 1 Nếu x1 1, 1 2 N N thì M = x1 , trái lại M = N - x1 3. = 2 Nếu x1 0, 1 2 N thì M = x2 , trái lại M = N - x2 4. = 3 Nếu x1 1, 1 2 N N thì M = x2 , trái lại M = N - x2 2.4.4 Chứng minh tính đúng đắn

Từ Bước 2 thuật toán mã hóa và Bước 1 thuật toán giải mã suy ra = và X2 =M2 mod N. Như vậy, là thặng dư bình phương của N, nên phương trình ở Bước 2 trong thuật toán giải mã chính là phương trình Rabin và bốn nghiệm x1, x2, x3, x4 hoàn toàn tính được.

Mặt khác, bản rõ M hiển nhiên là 1 nghiệm của phương trình này. Do đó, M phải trùng với một trong 4 nghiệm nói trên. Vì = , nên có thể nhận một trong 4 giá trị từ 0 đến 3. Ta sẽ lần lượt xét từng trường hợp trong Bước 3 của thuật toán giải mã.

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

(1) Nếu = 0, thì từ Bước 1 thuật toán mã hóa suy ra J M 0

N hoặc 1 và

M thuộc nửa trên 0, 1 2

N

. Nên theo bổ đề 2, M = x1 hoặc M = N - x1. Vì vậy, M = x1 nếu x1 thuộc nửa trên và M = N - x1 nếu trái lại.

(2) Nếu = 1, lập luận tương tự chỉ khác M thuộc nửa dưới. Do đó M = x1 nếu x1 thuộc nửa dưới và M = N - x1 nếu trái lại.

(3) Nếu = 2, thì từ Bước 1 thuật toán mã hóa suy ra J M 1

N và M

thuộc nửa trên 0, 1 2

N

. Nên theo bổ đề 2, M = x2 hoặc M = N - x2. Vì vậy, M = x2 nếu x2 thuộc nửa trên và M = N - x2 nếu trái lại.

(4) Nếu = 3, lập luận tương tự = 2, chỉ khác M thuộc nửa dưới. Do đó M = x2 nếu x2 thuộc nửa trên và M = N - x2 nếu trái lại.

Vậy tính đúng đắn của sơ đồ đã được chứng minh. Ví dụ: Với các tham số như sau: p=11, q=7 và M=8

Mã hóa: n=77, J(M/N) = J(8/77) = -1 Do M thuộc [0, N/2] =>α=2 C=4 (M2 mod N) + α =4 (64 mod 77) + 2=258 Giải mã α=C mod 4=258 mod 4=2 θ= C div 4 =258 mod 4=64

a= θ mod p =64 mod 11=9 => xp=a(p+1)/4 mod p = 93 mod 11 =3 b= θ mod q =64 mod 7=1 => xq=a(q+1)/4 mod q = 12 mod 7 =1 Do α=2, Giải hệ

=> X=8

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

2.5. So sánh các sơ đồ cải tiến phƣơng pháp mã hóa khóa công khai Rabin

2.5.1. Độ phức tạp tính toán

Độ phức tạp tính toán của thuật toán mã hóa trong cả 3 sơ đồ cải tiến trên là tương đương vì đều cần phải tính J M (adsbygoogle = window.adsbygoogle || []).push({});

N và M2 mod N. Vì vậy, chúng ta chỉ so sánh độ phức tạp tính toán của các thuật toán giải mã.

Trước hết dễ dàng nhận thấy, những tính toán chủ yếu của thuật toán giải mã Shimada gồm:

(1) Tính L C

pL C

q . Các đại lượng này, trong trường hợp tổng quát, tính theo công thức: ( 1)/2 mod p C L C p p và ( 1)/2 mod q C L C q q

Nếu xem phép tính cơ bản là phép nhân và phép chia mod, thì theo [1], số phép tính cần thực hiện xấp xỉ bằng 2 log2 1 2 log2 1 2 log2 1 1

2 2

p q

p q

(2) Tính các nghiệm x1, x2, x3, x4 của phương trình X2 = mod N theo các công thức trong mục 2.4.1. Trong số đó, hai công thức phức tạp nhất là :

( 1)/ 4 ( 1)/ 4 mod , mod p q p p x a p x b q Cũng theo [1] thì phép tính cần dùng xấp xỉ bằng 2 2 2 1 1

2 log 2 log 2 log 1 1

4 4

p q

p q

(3) Tính hai hàm te(x) và ue(x) đối với ít nhất một nghiệm, nhiều nhất 4 nghiệm. Do đó, trung bình phải tính te(x) và ue(x) đối với hai trong số bốn nghiệm x1, x2, x3, x4 nên số phép tính xấp xỉ bằng

2 2 2

1 1

2 log 2 log 2 log 1 1

4 4

p q

p q

Từ (1), (2) và (3) suy ra, độ phức tạp tính toán của thuật toán giải mã Shimada xấp xỉ bằng

2

8 log p 1 q 1

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

(3), nên độ phức tạp xấp xỉ bằng: 2

4 log p 1 q 1

Thuật toán giải mã trong sơ đồ THA chỉ phải thực hiện các phép tính trong (2), nên độ phức tạp xấp xỉ bằng:

2 (adsbygoogle = window.adsbygoogle || []).push({});

2 log p 1 q 1

Các kết quả phân tích trên được trình bày trong bảng sau:

Sơ đồ Số phép toán cơ bản

THA 2 log2 p 1 q 1

Chen-Tsu 4 log2 p 1 q 1

Shimada 8 log2 p 1 q 1

Bảng 2.1: Độ phức tạp tính toán của các thuật toán giải mã 2.5.2. Mức độ bảo mật

Trong cả 3 sơ đồ, khóa bí mật là hai số nguyên tố p, q và khóa công khai là N=pxq. Do vậy, mức độ bảo mật của chúng chính là độ khó của bài toán phân tích một số ra thừa số nguyên tố.

2.5.3. Phạm vi ứng dụng

Trong cả 2 sơ đồ của Shimada và Chen-Tsu đều cần dùng tính chất te(M) = td(C) và ue(M) = ud(C). Để có được tính chất này thì, cần chọn p dạng 7(mod 8) và q dạng 3(mod 8). Cả 2 dạng này đều là các trường hợp riêng của dạng 3(mod 4). Thực tế cho thấy tập các số nguyên dạng 7(mod 8) và 3(mod 8) nhỏ hơn nhiều so với tập số nguyên 3(mod 4). Sơ đồ THA sử dụng dạng 3(mod 4) nên phạm vi ứng dụng rộng hơn so với 2 sơ đồ trước.

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Chương 3

PHẦN MỀM THỬ NGHIỆM Cài đặt chƣơng trình

Để so sánh tốc độ thực hiện của các thuật toán cải tiến được trình bày trong luận văn với nhau, tác giả đã tiến hành cài đặt các phương pháp này bằng ngôn ngữ lập trình Csharp trên Net Framework 4.0.

Nội dung cài đặt bao gồm các module sau:

a)Module sinh số nguyên tố có độ dài hàng trăm chữ số. Trong mudule này, tác giả sử dụng thuật toán kiểm tra số nguyên tố của Miller – Rabin để sản sinh các dạng số nguyên tố khác nhau ứng với mỗi sơ đồ cải tiến.

b)Module mã hóa của ba phương pháp Shimada, Chen-Tsu và THA. c)Module giải mã của ba phương pháp Shimada, Chen-Tsu và THA.

Chi tiết về giao diện, các thao tác sử dụng của các module này sẽ được mô trả trong các phần kế tiếp.

3.1. Sinh và kiểm tra số nguyên tố làm khóa

Hình 3.1: Sinh số nguyên tố và tạo khóa

Với giao diện như trên, người dùng thực thiện tuần tự các bước như sau : Bước 1: Chọn độ dài cho hai số nguyên tố p và q

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Bước 2: Chọn chức năng Rabin hoặc Shimada&Tsu để chương trình sản sinh hai số nguyên tố có dạng tương ứng với từng sơ đồ mã hóa.

Bước 3: Chọn chức năng Tạo Khóa để chương trình sinh ra cặp khóa công khai và khóa bí mật, hai khóa này được lưu trữ vào hai tệp khóa tương ứng trên giao diện.

Bên cạnh đó, trong module còn cung cấp cho người dùng giao diện để thực hiện chức năng kiểm tra dạng của số nguyên tố cho trước như sau :

Hình 3.2: Kiểm tra số nguyên tố

3.2. Mã hóa theo sơ đồ cải tiến của Shimada

Các sơ đồ cải tiến đều có giao diện và thao tác sử dụng tương đối giống nhau, vì vậy sau đây chỉ xin trình bày giao diện một sơ đồ cải tiến của Shimada.

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Với giao diện như trên, người dùng thực thiện tuần tự các bước sau : Bước 1: Nạp khóa công khai N để thực hiện mã hóa. (adsbygoogle = window.adsbygoogle || []).push({});

Bước 2: Nạp tệp bản rõ cần mã hóa.

Bước 3: Chọn chức năng Mã hóa để chương trình thực hiện mã hóa, bản mã được lưu với tên tương ứng trên giao diện. Chương trình thông báo mã hóa thành công khi kết thúc quá trình mã hóa.

3.3. Giải mã theo sơ đồ cải tiến của Shimada

Hình 3.4: Giải mã theo sơ đồ cải tiến của Shimada

Với giao diện như trên, người dùng thực thiện tuần tự các bước sau : Bước 1: Nạp khóa công bí mật p, q để thực hiện giải mã.

Bước 2: Nạp tệp bản mã.

Bước 3: Chọn chức năng Giải mã để chương trình thực hiện giải mã, bản rõ được lưu với tên tương ứng trên giao diện. Chương trình thông báo thời gian và giải mã thành công khi kết thúc quá trình giải mã.

3.4. Kết quả thực nghiệm

Để so sánh thời gian thực hiện của các thuật toán cải tiến, tác giả đã sử dụng cố định cặp số nguyên tố p, q cho tất cả các sơ đồ. Hai số nguyên tố p, q được sử dụng có độ dài khoảng 60 chữ số cụ thể như sau:

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

p=17940613248426056992444596099059329882824054832508914788524842691 637599

q = 60817366542854590443814656698938261640013625642547

Quá trình thực nghiệm được thực hiện trên 8 bản rõ có kích thức khác nhau và được thực hiện trên máy tính ASUS X83V, kết quả chạy máy được trình bày trong bảng sau:

Bảng 3.1: Thời gian thực hiện các thuật toán giải mã

STT Kích thƣớc tệp Thời gian giải mã (giây) Shimada Chen-Tsu THA

1 4KB 0.195 0.070 0.032 2 120KB 21.824 7.254 3.385 3 202KB 41.012 13.447 6.193 4 223KB 43.570 14.430 6.739 5 609KB 118.592 32.454 20.704 6 787KB 164.564 51.745 24.117 7 1.09MB 224.297 73.694 33.992

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

KẾT LUẬN VÀ KIẾN NGHỊ 1. Kết luận

Sau thời gian thực hiện luận văn, với sự cố gắng của bản thân, cùng sự giúp đỡ tận tình của thầy giáo hướng dẫn, các thầy cô trong trường Đại học CNTT &TT Thái Nguyên, các đồng nghiệp và các bạn bè, gia đình luận văn đã thực hiện theo đúng nhiệm vụ được giao và đúng thời hạn theo yêu cầu. Trong thời gian nghiên cứu và thực hiện luận văn tốt nghiệp, bản thân đã thu được một số kết quả sau:

- Hiểu khái quát về mật mã và mật mã khóa công khai. Nắm được một số kiến thức cơ sở toán học của lý thuyết mật mã.

- Tìm hiểu rõ hơn về số nguyên tố, phương pháp kiểm tra và sinh số nguyên tố. - Nghiên cứu một số cải tiến hệ mật mã Rabin.

- Cài đặt một số cải tiến hệ mật mã khóa công khai Rabin và đánh giá các phương pháp cải tiến.

2. Kiến nghị

Hướng phát triển tiếp theo của luận văn là kết hợp mật mã khóa công khai với các nội dung bảo mật an toàn thông tin khác như giấu tin, thủy vân số.

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

TÀI LIỆU THAM KHẢO

Tiếng Việt

[1] Phạm Văn Ất, Nguyễn Văn Long, Nguyễn Hiếu Cường, Đỗ Văn Tuấn, Cao Thị Luyên, Trần Đăng Hiên, Đề xuất thuật toán xử lý số nguyên lớn và ứng dụng trong các hệ mật mã khóa công khai, Kỷ yếu hội thảo quốc gia lần thứ XII, Một số vấn đề chọn lọc Công nghệ thông tin và Truyền thông, Đồng Nai - 8/2009, tr 107-118.

[2] Phan Đình Diệu (2006), Lý thuyết mật mã và An toàn thông tin, NXB ĐHQG HN.

[3] Hà Huy Khoái, Phạm Huy Điển (2003), Số học thuật toán: Cơ sở lý thuyết và tính toán thực hành, NXB ĐHQG HN. (adsbygoogle = window.adsbygoogle || []).push({});

[4] Hà Huy Khoái, Phạm Huy Điển (2004), Mã hoã thông tin: Cơ sở toán học và ứng dụng, NXB ĐHQG HN.

[5] Đỗ Văn Tuấn, Trần Đăng Hiên, Phạm Văn Ất, Một sơ đồ cải tiến hệ mật mã khóa công khai Rabin, Kỷ yếu hội thảo quốc gia lần thứ XIV, Một số vấn đề chọn lọc Công nghệ thông tin và Truyền thông, Cần Thơ - 2011, tr 280-289.

Tiếng Anh

[6] Chin-Chen Chang and Sun-Min Tsu (2000), “An improvement on Shimada’s public-key cryptosystem”, Journal of Science and Engineering, vol. 3, no. 2, pp. 75-79.

[7] Harn, and Kiesler (1989), “Improved Rabin’s scheme with high efficiency”, Electron. Lett., 25, (1 l), pp. 726-728

[8] Rabin, M. O (1980), “Probabilistic algorithm for testing primality”, J. Number theory, 12(1): 128 – 183.

[9] Safuat Hamdy (2005), “The Miller – Rabin Primality Test”, United Arab Emirates University College of IT.

[10] Shimada, M (1992), "Another Practical Public-Key Cryptosystem", {\em Electronics Letters}, Vol.28, No.23, pp.2146-2147.

Một phần của tài liệu nâng cao tốc độ tính toán của phương pháp mã hóa khóa công khai rabin (Trang 68 - 78)