1. Trang chủ
  2. » Công Nghệ Thông Tin

Các hệ thống khóa công khai thác phần 1 potx

5 304 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 119,88 KB

Nội dung

Vietebooks Nguyn Hong Cng Trang 1 Chơng 5 Các hệ mật khoá công khai khác Trong chơng này ta sẽ xem xét một số hệ mật khoá công khai khác. Hệ mật Elgamal dựa trên bài toán logarithm rời rạc là bài toán đợc dùng nhiều trong nhiều thủ tục mật mã. Bởi vậy ta sẽ dành nhiều thời gian để thảo luận về bài toán quan trọng này. ở các phần sau sẽ xem xét sơ lợc một số hệ mật khoá công khai quan trọng khác bao gồm các hệ thoóng loại Elgamal dựa trên các trờng hữu hạn và các đờng cong elliptic, hệ mật xếp ba lô Merkle-Helman và hệ mật McElice. 5.1. Hệ mật Elgamal và các logarithm rời rạc. Hệ mật Elgamal đợc xây dựng trên bài toán logảithm rời rạc . Chúng ta sẽ bắt đầu băng việc mô tả bài toán bài khi thiết lập môi trờng hữu hạn Z p , p là số nguyên tố ( hình 5.1) ( Nhớ lại rằng nhóm nhân Z p * là nhóm cyclic và phần tử sinh của Z p * đợc gọi là phần tử nguyên thuỷ). Bài toán logarithm rời rạc trong Zp là đối tợng trong nhiều công trình nghiên cứu và đợc xem là bài toán khó nếu p đợc chọn cẩn thận. Cụ thể không có một thuật toán thời gian đa thức nào cho bài toán logarithm rời rạc. Để gây khó khăn cho các phơng pháp tấn công đã biết p phải có ít nhất 150 chữ số và (p-1) phải có ít nhất một thừa số nguyên tố lớn. Lợi thế của bài toán logarithm rời rạc trong xây dợng hệ mật là khó tìm đợc các logarithm rời rạc ,song bài toán ngợc lấy luỹ thừa lại có thể tính toán hiệu quả theo thuật toán "bình phơng và nhân". Nói cách khác , luỹ thừa theo modulo p là hàm một chiều với các số nguyên tố p thích hợp. Elgamal đã phát triển một hệ mật khoá công khai dựa trên bài toán logarithm rời rạc. Hệ thống này đợc trình bày trên hình 5.2. Hệ mật này là một hệ không tất định vì bản mã phụ thuộc vào cả bản rõ x lẫn giá trị ngẫu nhiên k do Alice chọn. Bởi vậy, sẽ có nhiều bản mã đợc mã từ cùng bản rõ. Vietebooks Nguyn Hong Cng Trang 2 Hình 2.6 Bài toán logarithm rời rạc trong Zp Hình 2.7 Hệ mật khoá công khai Elgamal trong Zp * Sau đây sẽ nmô tả sơ lợc cách làm việc của hệ mật Elgamal .Bản rõ x đợc "che dấu" bằng cách nhân nó với k để tạo y 2 . Giá trị k cũng đợc gửi đi nh một phần của bản mã. Bob -ngời biết số mũ bí mật a có thể tính đợc k từ k . Sau đó anh ta sẽ "tháo mặt nạ" bằng cách chia y 2 cho k để thu đợc x. Ví dụ 5.1 Đặc trơng của bài toán: I = (p, , ) trong đó p là số nguyên tố, Zp là phần tử nguyên thuỷ , Zp * Mục tiêu:Hãy tìm một số nguyên duy nhất a, 0 a p-2 sao cho: a (mod p) Ta sẽ xác định số nguyên a bằng log Cho p là số nguyên tố sao cho bài toán logarithm rời rạc trong Zp là khó giải. Cho Zp * là phần tử nguyên thuỷ.Giả sử P = Zp * , C = Zp * ì Zp * . Ta định nghĩa: K = {(p, ,a,): a (mod p)} Các giá trị p, , đợc công khai, còn a giữ kín Với K = (p, ,a,) và một số ngẫu nhiên bí mật k Z p-1, ta xác định: e k (x,k) = (y 1 ,y 2 ) trong đó y 1 = k mod p y 2 = x k mod p với y 1 ,y 2 Zp * ta xác định: d k (y 1 ,y 2 ) = y 2 (y 1 a ) -1 mod p Vietebooks Nguyn Hong Cng Trang 3 Cho p = 2579, = 2, a = 765. Khi đó = 2 765 mod 2579 = 949 Bây giờ ta giả sử Alice muốn gửi thông báo x = 1299 tới Bob. Giả sử số ngẫu nhiên k mà cô chọn là k = 853. Sau đó cô ta tính y 1 = 2 853 mod 2579 = 435 y2 = 1299 ì 949853 mod 2579 = 2396 Khi đó Bob thu đợc bản mã y = (435,2396), anh ta tính x = 2396 ì (435 765 ) -1 mod 2579 = 1299 Đó chính là bản rõ mà Alice đã mã hoá. 5.1.1. Các thuật toán cho bài toán logarithm rời rạc. Trong phần này ta xem rằng p là số nguyên tố, là phần tử nguyên thuỷ theo modulo p. Ta thấy rằng p và là các số cố định. Khi đó bài toán logarithm rời rạc có thể đợc phát biểu dới dạng sau: tìm một số mũ a duy nhất, 0 a p-2 sao cho a (mod p), với Z p * cho trớc. Rõ ràng là bài toán logarithm rời rạc (DL) có thể giải bằng một phép tìm kiếm vét cạn với thời gian cỡ O(p) và không gian cỡ O(1) ( bỏ qua các thừa số logarithm). Bằng cách tính toán tất cả các giá trị a có thể và sắp xếp các cặp có thứ tự (a, a mod p) có lu ý đến các tạo độ thứ hai của chúng, ta có thể giải bài toán DL với thời gian cỡ O(1) bằng O(p) phép tính toán trớc và O(p) bộ nhớ ( vẫn bỏ qua các thừa số logarithm). Thuật toán không tầm thờng đầu tiên mà chúng ta sẽ mô tả là thuật toán tối u hoá thời gian - bộ nhớ của Shanks. Thuật toán Shanks Vietebooks Nguyn Hong Cng Trang 4 Hình 5.3. Thuật toán Shanks cho bài toán DL. 1. Tính mj mod p, 0 j m-1 2. Sắp xếp m cặp thứ tự ( j, mj mod p) có lu ý tới các tạo độ thứ hai của các cặp này, ta sẽ thu đợc một danh sách L 1 3. Tính -i mod p, 0 i m-1 4. Sắp xếp m cặp thứ tự (i, -i mod p) có lu ý tới các toạ độ thứ hai của các cặp đợc sắp này, ta sẽ thu đợc một danh sách L 2 5. Tìm một cặp (j,y) L 1 và một cặp (i,y) L 2 ( tức là một cặp có tạo độ thứ hai nh nhau). 6. Xác định log = mj + i mod (p-1) 7. - Nếu cần, các bớc 1 và 2 có thể tính toán trớc ( tuy nhiên, điều này không ảnh hởng tới thời gian chạy tiệm cận) - Tiếp theo cần để ý là nếu (j,y) L 1 và (i,y) L 2 thì mj = y = -i Bởi vậy mj+i = nh mong muốn. Ngợc lại, đối với bất kì ta có thể viết log = mj+i trong đó 0 j,i m-1. Vì thế phép tìm kiếm ở bớc 5 chắc chắn thành công. Có thể áp dụng thuật toán này chạy với thời gian O(m) và với bộ nhớ cỡ O(m) ( bỏ qua các thừa số logarithm). Chú ý là bớc 5 có thể thực hiện một cách ( đồng thời ) qua từng danh sách L 1 và L 2 . Sau đây là một ví dụ nhỏ để minh hoạ. Ví dụ 5.2. Giả sử p = 809 và ta phải tìm log 3 525. Ta có = 3, = 525 và m = 808 = 29. Khi đó: Vietebooks Nguyn Hong Cng Trang 5 29 mod 809 = 99 Trớc tiên tính các cặp đợc sắp (j,99 j mod 809) với 0 j28. Ta nhận đợc danh sách sau: (0,1) (1,99) (2,93) (3,308) (4,559) (5,329) (6,211) (7,664) (8,207) (9,268) (10,644) (11,654) (12,26) (13,147) (14,800) (15,727) (16,781) (17,464) (18,314) (19,275) (20,582) (21,496) (22,564) (23,15) (24,676) (25,586) (26,575) (27,295) (28,81) Danh sách này sẽ đợc sắp xếp để tạo L 1 . Danh sách thứ hai chứa các cặp đợc sắp (i,525ì(3 i ) -1 mod 809), với 0 i 28. Danh sách này gồm: (0,525) (1,175) (2,328) (3,379) (4,396) (5,132) (6,44) (7,554) (8,724) (9,511) (10,440) (11,686) (12,768) (13,256) (14,,355) (15,388) (16,399) (17,133) (18,314) (19,644) (20,754) (21,496) (22,564) (23,15) (24,676) (25,356) (26,658) (27,489) (28,163) Sau khi sắp xếp danh sách này, ta có L 2 . Bây giờ nếu xử lý đồng thời qua cả hai danh sách, ta sẽ tìm đợc ( 10,644) trong L 1 và (19,644) trong L 2 . Bây giờ ta có thể tính log 3 525 = 29ì10+19 = 309 Có thể kiểm tra thấy rằng quả thực 3 309 525 (mod 809). Thuật toán Pohlig - Hellman. Thuật toán tiếp theo mà ta nghiên cứu là thuật toán Pohlig - Hellman. Giả sử p i là số nguyên tố đặc biệt. Giá trị a = log đợc xác định một cách duy nhất theo modulo p-1. Trớc hết nhận xét rằng, nếu có thể tính a mod p i c i với . (13 ,14 7) (14 ,800) (15 ,727) (16 ,7 81) (17 ,464) (18 , 314 ) (19 ,275) (20,582) ( 21, 496) (22,564) (23 ,15 ) (24,676) (25,586) (26,575) (27,295) (28, 81) Danh sách này sẽ đợc sắp xếp để tạo L 1 . . các cặp đợc sắp (i,525ì(3 i ) -1 mod 809), với 0 i 28. Danh sách này gồm: (0,525) (1, 175) (2,328) (3,379) (4,396) (5 ,13 2) (6,44) (7,554) (8,724) (9, 511 ) (10 ,440) (11 ,686) (12 ,768) (13 ,256). tính các cặp đợc sắp (j,99 j mod 809) với 0 j28. Ta nhận đợc danh sách sau: (0 ,1) (1, 99) (2,93) (3,308) (4,559) (5,329) (6, 211 ) (7,664) (8,207) (9,268) (10 ,644) (11 ,654) (12 ,26) (13 ,14 7)

Ngày đăng: 31/07/2014, 17:20

w