Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 34 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
34
Dung lượng
2,04 MB
Nội dung
Chương CÁC HỆ MẬT MÃ KHĨA CƠNG KHAI • Khái qt chung • Hệ mật ba lơ (Knapsack) • Hệ mật RSA • Hệ mật Hệ mật Elgamal 3.1 Khái qt chung Các hệ mật khố cơng khai có tính chất chung khố mã hố khố giải mã khơng trùng nhau, khố mã hố cơng khai tồn hệ thống cịn khố giải mã giữ bí mật cho riêng thành viên tham gia hệ thống Nói cách khác, việc biết khố mã hố khó tìm khố giải mã Sơ đồ chung hệ mật mã khố cơng khai cho bởi: S = (P , C , K , E , D ) (1) P tập ký tự rõ, C tập ký tự mã, K tập khố Mỗi khố K gồm có hai phần K =(K’, K''), K' khố cơng khai dành cho việc lập mật mã, cịn K'' khố bí mật dành cho việc giải mã Với ký tự rõ x, thuật toán lập mã E cho ta ký tự mã tương ứng y = E(K', x), với ký tự mã y thuật toán giải mã D cho ta lại ký tự rõ x: D(K'', y) = D(K'', E(K', x)) =x 3.1 Khái quát chung Sơ đồ hoạt động hệ mật KCK Nguyên tắc hoạt động hệ mật khóa cơng khai bên tham gia truyền tin có cặp khóa K=(K’ , K”) Mơt khóa gọi khóa bí mật (K”), khóa cịn lại K’ khóa cơng khai K” dùng để giải mã giữ bí mật, K’ dùng để sinh mã công khai hệ thống để sử dụng để gửi tin cho người chủ hệ khóa (K’ , K”).Với hệ mã khóa cơng khai việc phân phối khóa trở nên dễ dàng qua kênh cung cấp khóa cơng cộng, số lượng khóa hệ thống quản lý (m khóa cho m người tham gia) 3.1 Khái quát chung • Các yêu cầu loại hệ mã này: - Việc sinh K’, K” phải dễ dàng; - Việc tính E(K’, M) dễ dàng; - Nếu có C = E(K’, M) K” việc tìm rõ dễ; - Nêu biêt K’ việc dị tìm K” khó; - Việc khơi phục rõ từ mã khó khơng biết K” • Một người A muốn gửi cho B tin, A dùng khố cơng khai người B để mã hố tin gửi tin mã hoá cho B, B nhận tin mã hố dùng khố bí mật để giải mã tin nhận tin ban đầu 3.2 Hệ mật ba lơ (Knapsack) Bài tốn ba lơ xuất phát Bài tốn ba lơ siêu tăng Xáo trộn tốn ba lơ siêu tăng Q trình mã hóa Q trình giải mã Bài tốn ba lơ xuất phát • Cho n số ngun dương phân biệt A=(a1, , an) số nguyên dương c Hãy xác định có hay khơng tập A có tổng c Tức tìm giá trị xi { 0,1 } cho n C xi i 1 • Đây tốn có độ phức tạp tính tốn T(n) = O(2n) • Ta định nghĩa véc tơ A=(a1, , an) véc tơ ba lơ • Một véc tơ ba lơ dùng làm khố lập mã sau: Bản rõ biểu diễn theo bits chia thành khối n bits Mỗi khối B xem véc tơ n chiều (gồm số 1) mã hoá thành số C = (a1, , an) B • Nếu khố lập mã mã biết thám mã phải tập trung giải tốn ba lơ Bài tốn ba lơ siêu tăng • Một véc tơ ba lơ (a1, , an) gọi véc tơ ba lô siêu tăng số vượt tổng số đứng trước • Mặc dù việc giải tốn ba lơ có độ phức tạp tính tốn O(2n) việc giải tốn ba lơ siêu tăng lại dễ dàng ( O(n)) Thật vậy, giả sử A' = (a1', , an') tập số nguyên dương thỏa mãn véc tơ ba lô siêu tăng Với số nguyên dương C ta tìm xi sau: + Nếu C >= a’n chắn phải chọn a’n (vì khơng chọn cho dù có chọn tất a’i cịn lại khơng đủ a’n, nên khơng thể C), xn =1 thể tích ba lơ cịn C-a’n Ngược lại C< a’n chắn khơng chọn a’n, xn=0 + Lặp lại q trình i=n-1, n-2, , ta tìm dãy xi cần tìm Xáo trộn tốn balơ siêu tăng • Bây ta xét véc tơ ba lô siêu tăng A' = (a1', , an') • Chọn số nguyên M> 2an' lấy làm modunlo Ta chọn số nguyên u nguyên tố với M, tồn u-1 theo modunlo M • Tiếp theo ta xáo trộn véc tơ cho A' thành véc tơ ba lô A cách nhân thành phần A' với u theo modulo M ta được: A = (u.a1' mod M, , u.an' mod M) = (a1, , an) Q trình mã hóa Với hệ mật ba lơ khố cơng khai véc tơ ba lô A = (a1, , an) M Để mã hố thơng báo x, trước hết ta biểu diễn x thành dãy m bit mà khối gồm n bit, tức x = (B1, , Bm) Sau mã hố khối cách nhân với véc tơ ba lô A theo modunlo M, ta mã: y = (A.B1 mod M, , A.Bm mod M) = (y1, , ym) Quá trình giải mã • Khố giải mã véc tơ ba lơ siêu tăng A‘ (thực chất u, u-1) • Để giải mã y thành x, trước hết ta khôi phục lại dãy bits biểu diễn x qua bước: + Tính y’ = y.u-1 mod M; + Giải tốn xếp ba lơ với y’ theo A’ sau: • Với yi ta tìm Bi cách so sánh yi với thành phần A' (từ thành phần cuối đến thành phần đầu tiên), yi lớn bit cuối Bi đồng thời trừ yi lượng an' , ngược lại bit cuối Bi 0, Quá trình kết thúc ta tìm đươc Bi dạng dãy n bit • Việc tìm khối bits cịn lại x hồn tồn tương tự • Sau khôi phục x dạng biểu diễn dãy bit, ta chuyển lại giá trị ban đầu x Sơ đồ hệ mật Elgamal • Trong mạng truyền thông bảo mật với việc dùng sơ đồ mật mã ElGamal, người tham gia tự chọn cho tham số p, , a, tính , sau lập cơng bố khố cơng khai K' =(p, , ), phải giữ tuyệt mật khố bí mật K'' = a Bài tốn biết khố cơng khai tìm khố bí mật tốn tính lơgarit rời rạc, chưa có thuật toán làm việc thời gian đa thức giải • Thí dụ: Chọn p = 2579, a = 765, =2, ta tính = 2765 mod2579 = 949 Ta có khố cơng khai (2579, 2, 949) khố bí mật 765 Giả sử để lập mật mã cho x =1299, ta chọn ngẫu nhiên k =853, có: y = (y1; y2) = (2853 mod 2579 ; 1299.949853 mod 2579) = (435; 2396) Giải mã? Tính an tồn hệ mật Elgamal Như trình bày trên, ta xem tính an tồn hệ mật mã ElGamal việc giữ tuyệt mật khố bí mật K'', ta n tâm tốn phát khố bí mật có độ khó tương đương với tốn tính lơgarit rời rạc, mà tốn mục trước chứng tỏ, chưa có thuật toán làm việc thời gian đa thức giải Có điều cảnh báo nên ý chọn môđuyn p số nguyên tố cho p -1 có ước số ngun tố lớn Điều thực số nguyên tố p chọn số nguyên tố Sophie Germain (tức có dạng 2q +1, với q số ngun tố lớn) Tính an tồn hệ mật Elgamal • Ngồi ra, cịn có khả khố bí mật K'' = a bị lộ cẩu thả việc sử dụng số ngẫu nhiên k, đặc biệt để lộ số k dùng Thực vậy, để lộ số k, khố bí mật a tính theo cơng thức sau đây: • a = (x - k.y2) y1-1 mod (p-1) Như vậy,một người thám mã có khả cơng theo kiểu “biết rõ” phát khố a biết k • Một trường hợp khác làm tính an tồn hệ mật mã ElGamal việc dùng số k cho nhiều lần lập mật mã Thực vậy, giả sử dùng số ngẫu nhiên k cho hai lần lập mã, lần cho x1 , lần cho x2 , mã tương ứng (y1,y2) (z1,z2) Vì dùng số k nên y1=z1 Và theo cơng thức lập mã ta có z2/y2 = x2/x1, tức x2 = x1.z2/y2 Như vậy, người thám mã, lần “biết rõ” dễ dàng phát rõ lần sau Bài tập chương Bài 3.1 Cho hệ mã Knapsack có A’ = {11, 15, 30, 60}, M = 150 u = 77 a) Hãy tìm khóa cơng khai K’, khóa bí mật K” hệ mã b) Dùng bit để biểu diễn ký tự Tiếng Anh thành xâu nhị phân, tương ứng với biểu diễn dạng nhị phân số nguyên từ đến 25 Ký tự A B C D E Xâu bít 00000 00001 00010 00011 00100 Ký tự H I J K L Xâu bít 00111 01000 01001 01010 01011 Ký tự O P Q R S Xâu bít 01110 01111 10000 10001 10010 F 00101 M 01100 T 10011 G 00110 N 01101 U 10100 Ký tự V W X Y Z Xâu bít 10101 10110 10111 11000 11001 Ví dụ xâu ABCD chuyển thành 00000 00001 00010 00011 Nếu dùng hệ mật ta cắt xâu nhị phân thành xâu có độ dài để thực mã hóa Kết thu mã dãy số Ỵ ZM Hãy thực mã hóa xâu x = “ANTI” c) Giả sử mã thu y = Hãy thực giải mã mã để thu thông điệp ban đầu Bài tập chương Bài 3.2: Cho hệ mã RSA có p = 31, q = 41, e = 271 a) Hãy tìm khóa hệ mã b) Cho rõ x = 132 Hãy tìm mã y x (y = 442) c) Cho mã y = 321 Hãy tìm rõ x (x = 104 ) Bài tập chương Bài 3.2: Cho hệ mã RSA có p = 31, q = 41, e = 271 a) Hãy tìm khóa hệ mã b) Cho rõ x = 132 Hãy tìm mã y x c) Cho mã y = 321 Hãy tìm rõ x Giải 3.2: a) n = p*q = 1271; φ(n) = (p-1)(q-1) = 1200; d = 1/e mod φ(n) = 31 K’ = (1271, 271), K” = 31 b) y = xe mod n = 132271 mod 1271 = … = 442 c) x = yd mod n = 32131 mod 1271 = … = 104 Bài tập chương Bài 3.3: Cho hệ mã RSA có p = 13, q = 17, e = 91 a) Hãy tìm khóa hệ mã (d=19) b) Cho rõ x = 100 Hãy tìm mã y x (y = 9) c) Cho mã y = 210 Hãy tìm rõ x (x = 63 ) Bài tập chương Bài 3.4: Cho hệ mã RSA có p = 11, q = 17, e = 37 a) Hãy tìm khóa hệ mã (d=13) b) Cho rõ x = 123 Hãy tìm mã y x (y = 106) c) Cho mã y = 111 Hãy tìm rõ x (x = 144 ) Bài tập chương Bài 3.5: Cho hệ mã RSA có p = 31, q = 41, e = 271 a) Hãy tìm khóa hệ mã b) Để mã hóa thơng điệp viết tiếng Anh người ta dùng hàm chuyển đổi ký tự thành số thập phân có hai chữ số sau: Ký tự A B C D E F G H I J K L M Mã hóa 00 01 02 03 04 05 06 07 08 09 10 11 12 Ký tự N O P Q R S T U V W X Y Z Mã hóa 13 14 15 16 17 18 19 20 21 22 23 24 25 Khi ví dụ xâu ABC chuyển thành 00 01 02 sau cắt thành số có chữ số 000 (bằng 0) 102 để mã hóa Bản mã thu tập số ϵ Zn Hãy thực mã hóa xâu P = ”SERIUS” c) Giả sử mã thu y = thực giải mã để tìm thơng điệp rõ ban đầu Bài tập chương Giải 3.5: a) N = p*q = 1271; j (n) = (p-1)(q-1) = 1200; d = e-1 mod φ(n) = 31 => K’ = (1271, 271), K” = 31 b) “SERIUS” =18 04 17 08 20 18 = 180 |417 | 082 | 018 =(x1, x2, x3, x4) = x y1 = x1e mod n = 180271 mod 1271 = 180; y2 = x2e mod n = 417271 mod 1271 = 634; y3 = x3e mod n = 82271 mod 1271 = 82; y4 = x4e mod n = 18271 mod 1271 = 18; => y = (180, 634, 82, 18) c) y = (201, 793, 442, 18) = (y1, y2, y3, y4) x1 = y1d mod n = 20131 mod 1271 = 201; x2 = y2d mod n = 79331 mod 1271 = 700; x3 = y3d mod n = 44231 mod 1271 = 132; x4 = y4d mod n = 1831 mod 1271 = 18; => x = 201 | 700 | 132 | 018 = 20 17 00 13 20 18 = “URANUS” Bài tập chương Bài 3.6: Cho hệ mã ElGamma có p = 83, α = phần tử nguyên thuỷ Z*p , a = 37 a) Hãy tìm khóa hệ mã ( = 66) b) Để mã hóa rõ x = 72 người ta chọn k = 23, mã hóa đưa mã (y=(19; 1)) c) Giả sử mã nhận y = (19, 26), tìm rõ x y (x=46) d) Hãy tìm tất phần tử nguyên thuỷ Z*p • Chú ý: Nếu b phần tử nguyên thuỷ Z*p tất số g = bi mod p (trong i nguyên tố với p-1) phần tử nguyên thuỷ Z*p Vậy theo tập phần tử nguyên thuỷ cần tìm là: {5i , 1≤ i ≤ p-2 gcd(i, p-1) =1} = {5i mod p, i =1,3,5,7,9,11,13,15,17,19,21,23,25,27, 29,31,33,35,37,39,43,45,47,49,51,53,55,57,59,61,63,6 5,67,69,71,73,75,77,79,81} = {5, 42, 54, 22, 52, 55, 47, 13, 76, 74, 24, 19, 60, 6, 67, 15, 43, 79, 66, 73, 58, 39, 62, 56, 72, 57, 14, 18, 35, 45, 46, 71, 32, 53, 80, 8, 34, 20, 2, 50} Bài tập chương Giải 3.6: a) β = 537 mod83 = 66 => K’ = (83, 5, 66) ; K” = 37 b) y1 = 523 mod83 = 19; y2 = 72.6623 mod83 = => y = (19, 1) c) x = 26 (1937) -1 mod 83 = 46 d) {5i , 1≤ i ≤ p-2 gcd(i, p-1) =1} = {5i mod p, i = 1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37 ,39,43,45,47,49,51,53,55,57,59,61,63,65,67,69,71,7 3,75,77,79,81} {5, 42, Bài tập chương Bài 3.7: Cho hệ mã ElGamma có p = 83, α = phần tử nguyên thủy Z*p, a = 13 a) Tìm khóa hệ mã (β=19) b) Để mã hóa rõ x = 63 người ta chọn k = 17 Tìm mã (y = (56, 76)) c) Giả sử mã thu y = (29, 42) Tìm rõ x y (x = 45) Bài tập chương Bài 3.8: Cho hệ mã mật ElGamma có p = 1187, α = 79 phần tử nguyên thuỷ Z*p, a = 113 a) Hãy tìm khóa hệ mã b) Để mã hóa thơng điệp viết tiếng Anh ta chuyển xâu ký tự thành dãy số chữ số 3.5 Ký tự A B C D E F G H I J K L M Mã hóa 00 01 02 03 04 05 06 07 08 09 10 11 12 Ký tự N O P Q R S T U V W X Y Z Mã hóa 13 14 15 16 17 18 19 20 21 22 23 24 25 Hãy thực mã hóa xâu m = ”TAURUS” với giá trị < k < 19 c) Giả sử thu mã tập cặp (y1, y2) Hãy giải mã đưa thông điệp ban đầu ... hệ mật KCK Nguyên tắc hoạt động hệ mật khóa cơng khai bên tham gia truyền tin có cặp khóa K=(K’ , K”) Mơt khóa gọi khóa bí mật (K”), khóa cịn lại K’ khóa cơng khai K” dùng để giải mã giữ bí mật, ... sinh mã công khai hệ thống để sử dụng để gửi tin cho người chủ hệ khóa (K’ , K”).Với hệ mã khóa cơng khai việc phân phối khóa trở nên dễ dàng qua kênh cung cấp khóa cơng cộng, số lượng khóa hệ. .. chung Các hệ mật khố cơng khai có tính chất chung khố mã hố khố giải mã khơng trùng nhau, khố mã hố cơng khai tồn hệ thống cịn khố giải mã giữ bí mật cho riêng thành viên tham gia hệ thống Nói cách