Chương 3 mật mã KHOá CÔNG KHAI

52 264 0
Chương 3 mật mã KHOá CÔNG KHAI

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Chương - Mật khoá công khai Chương III - MậT KHOá CÔNG KHAI 3.1 gIớI THIệU Về MậT KHOá CÔNG KHAI Trong mô hình mật cổ điển trước nghiên cứu Alice (người gửi) Bob (người nhận) chọn cách bí mật khoá K Sau dùng K để tạo luật hoá e k luật giải d k Trong hệ mật d k giống e k dễ dàng nhận từ (ví dụ hệ DES trình giải hoàn toàn tương tự trình thủ tục khoá ngược lại) Các hệ mật thuộc loại gọi hệ khoá bí mật, để lộ e k làm cho hệ thống an toàn Nhược điểm hệ mật yêu cầu phải có thông tin trước khoá K Alice Bob qua kênh an toàn trước gửi Trên thực tế điều khó đảm bảo Chẳng hạn Alice Bob cách xa họ liên lạc với thư tín điện tử (E.mail) Trong tình Alice Bob tạo kênh bảo mật với giá phải ý tưởng xây dựng hệ mật khoá công khai (hay dùng chung) tìm hệ mật khả tính toán để xác định d k biết e k Nếu quy tắc e k công khai cách công bố danh bạ (bởi nên có thuật ngữ hệ mật khoá công khai) Ưu điểm hệ mật khoá công khai chỗ Alice (hoặc ai) gửi tin cho Bob (mà không cần thông tin trước khoá mật) cách dùng mật công khai e k Người nhận A người giải sử dụng luật giải bí mật d k Có thể hình dung hệ mật tương tự sau Alice đặt vật vào hộp kim loại khoá lại khoá số Bob để lại Chỉ có Bob người mở hộp có biết tổ hợp khoá số ý tưởng hệ mật khoá công khai Diffie Hellman đưa vào năm 1976 Còn việc thực hoá Rivesrt, Shamir Adleman đưa lần vào năm 1977, họ tạo nên hệ mật tiếng RSA (sẽ nghiên cứu chương này) Kể từ công bố số hệ, độ mật chúng dựa tính toán khác Trong đó, quan trọng hệ mật khoá công khai sau: 92 Chương - Mật khoá công khai - Hệ mật RSA: Độ bảo mật hệ RSA dựa độ khó việc phân tích thừa số nguyên lớn Hệ mô tả phần 4.2 - Hệ mật xếp ba lô Merkle - Hellman: Hệ hệ liên quan dựa tính khó giải toán tổng tập (bài toán toán NP đầy đủ - lớp lớn toán giải thuật biết thời gian đa thức) Tuy nhiên tất hệ mật xếp ba lô khác bị chứng tỏ không mật (ngoại trừ hệ mật Chor-Rivest) - Hệ mật McEliece: Hệ dựa lý thuyết đại số coi an toàn Hệ mật McEliece dựa toán giải cho tuyến tính (cũng toán NP đầy đủ) Hệ mật McEliece trình bày phần 4.6 - Hệ mật ElGamal: Hệ mật ElGamal dựa tính khó giải toán logarithm rời rạc trường hữu hạn - Hệ mật Chor-Rivest: Hệ mật Chor-Rivest xem mọt hệ mật xếp ba lô Tuy nhiên coi an toàn - Hệ mật đường cong Elliptic: Các hệ mật biến tướng hệ mật khác (chẳng hạn hệ mật ElGamal), chúng làm việc đường cong Elliptic trường hữu hạn Hệ mật đảm bảo độ mật với số khoá nhỏ hệ mật khoá công khai khác Một ý quan trọng hệ mật khoá công khai không đảm bảo độ mật tuyệt đối (an toàn vô điều kiện) Sở dĩ đối phương nghiên cứu mã, y tin rõ luật hoá công khai e k tìm rõ x đảm bảo y = e k ( x ) Bản rõ kết giải y Bởi vậy, ta nghiên cứu độ mật mặt tính toán hệ mật 93 Chương - Mật khoá công khai Một khái niệm có ích nghiên cứu hệ mật khoá công khai khái niệm hàm cửa sập chiều Ta định nghĩa khái niệm cách không hình thức Hàm khoá công khai e k Bob phải hàm dễ tính toán Song việc tìm hàm ngược (hàm giải mã) khó khăn (đối với Bob) Đặc tính dễ tính toán hàm ngược thường gọi đặc tính chiều Bởi điều kiện cần thiết e k phải hàm chiều Các hàm chiều đóng vai trò quan trọng mật học, chúng quan trọng hệ mật khoá công khai nhiều lĩnh vực khác Đáng tiếc có nhiều hàm coi hàm chiều không tồn hàm chứng minh hàm chiều Sau ví dụ hàm coi hàm chiều Giả sử n tích hai số nguyên tố lớn p q, giả sử b số nguyên dương Khi ta xác định ánh xạ f : Z n → Z n f ( x ) = x b mod n (với b n chọn thích hợp hàm RSA, sau ta nói nhiều nó) Để xây dựng hệ mật khoá công khai việc tìm hàm chiều chưa đủ Ta không muốn e k hàm chiều Bob phải có khả giải tin nhận cách hiệu Điều cần thiết Bob phải có cửa sập chứa thông tin bí mật cho phép dễ dàng tìm hàm e k Như Bob giải cách hữu hiệu có hiểu biết tuyệt mật K Bởi hàm gọi cửa sập chiều hàm chiều trở nên dễ tính ngược biết cửa sập định 3.2 Số học modulo 3.2.1 Số nguyên Tập số nguyên { , − 3, − 2, − 1, 0,1, 2, 3,} = Z - Định nghĩa 3.2.1: Cho a , b∈Ζ a ước b ∃c ∈Ζ : b = a.c Ký hiệu a b - Các tính chất chia hết ∀ a , b, c ∈Ζ ta có: (i) a a 94 Chương - Mật khoá công khai (ii) Nếu a b b c a c (iii) Nếu a b a c a ( bx + cy ) với ∀ x , y ∈Ζ (iv) Nếu a b b a a = ±b - Định nghĩa 3.2.2 (Thuật toán chia số nguyên) Nếu a b số nguyên với b ≥ a = qb + r , 0≤r n ln ln n 3.2.2 Các thuật toán Z Cho a b số nguyên không âm nhỏ n Cần ý số bit biểu diễn nhị phân n [ lg n ] + số xấp xỉ lg n Số phép toán bit bốn phép toán số cộng, trừ, nhân chia sử dụng thuật toán kinh điển tóm lược bảng sau Các kỹ thuật tinh tế phép toán nhân chia có độ phức tạp nhỏ hơn: Phép toán Nhân a+b a −b a b Chia a = qb + r Cộng Trừ Độ phức tạp bit ( lg a + lg b ) = ( lg n ) ( lg a + lg b ) = ( lg n ) ( ) ( ( lg a ) ( lg b ) ) = ( ( lg n ) ) ( ( lg a ) ( lg b ) ) = ( lg n ) 2 Bảng 3.1: Độ phức tạp bit phép toán Z ƯCLN số nguyên a b tính theo định lý sau: - Định lý 3.2.2: Nếu a = p1e1 p e22  p ekk , b = p1ƒ1 p 2ƒ  p kƒ k ei ≥ , ƒ i ≥ ( e2 , ƒ ) ( ek , ƒ k ) UCLN( a , b ) = p1min ( e1 , ƒ1 ) p  p k 97 Chương - Mật khoá công khai ( e2 , ƒ ) ( ek , ƒ k ) BCNN( a , b ) = p1max ( e1 , ƒ1 ) p max  p max k Ví dụ: Cho a = 4864 = 19 , b = 3458 = 2.7.13.19 Khi UCLN( a , b ) = ( 4864 , 3458) = 2.19 = 38 BCNN( a , b ) = ( 4864 , 3458) = 28.7.13.19 = 442624 - Định lý 3.2.3: Nếu a b số nguyên dương với a >b UCLN( a , b ) = UCLN( b , a mod b ) Thuật toán Euclide sau cho ta cách tính ƯCLN hiệu không cần phải phân tích thừa số nguyên tố - Thuật toán Euclide: Tính UCLN số nguyên Vào : Hai số nguyên không âm a b với a > b Ra: ƯCLN a b (1) While (2) Return - b ≠ r ← a mod b , a ← b , b ← r (a) Định lý 3.2.4: Thuật toán có thời gian chạy chừng ( ( lg n ) ) phép toán bit Ví dụ: Sau bước chia thuật toán tính: ( 4864 , 3458) = 38 4864 = 1.3458 +1406 3458 = 2.1406 + 646 1406 = 2.646 + 76 646 = 5.114 + 38 76 = 2.38 +0 Thuật toán mở rộng để tính ƯCLN số nguyên a b tính số nguyên x y thoả mãn ax + by = d 98 Chương - Mật khoá công khai - Thuật toán Euclide mở rộng: : Hai số nguyên không âm a b với a ≥ b Vào : d = UCLN( a , b ) số nguyên x y thoả mãn ax + by = d Ra (1) Nếu b = đặt d ← a , x ← , y ← return ( d, x , y ) (2) Đặt x ← , x1 ← , y ← , y1 ← (3) While b > 3.1 q ←  a / b  , r ← a − qb , x ← x − qx1 , y ← y − qy1 3.2 a ← b , b ← r , x ← x1 , x1 ← x , y ← y1 , y1 ← y (4) Đặt - d ← a , x ← x , y ← y return ( d, x , y ) Định lý 3.2.5: Thuật toán có thời gian chạy cỡ ( ( lg n ) ) phép toán bit Ví dụ: Bảng sau bước thuật toán với giá trị vào a = 4864 b = 3458 Q − 2 r − 1406 646 114 76 38 x − −2 −27 32 −91 y − −1 −7 38 −45 128 a b x2 x1 y2 y1 4864 3458 1406 646 114 76 38 3458 1406 646 114 76 38 1 −2 −27 32 −2 −27 32 −91 −1 −7 38 −45 −1 38 −45 128 Bảng 3.2: Thuật toán Euclide mở rộng với đầu vào a = 4864 b = 3458 Bởi ta có UCLN( 4864 , 3458) = 38 ( 4864 ) ( 32 ) + ( 3458)( − 45) = 38 3.2.3 Các số nguyên modulo n - Định nghĩa 3.2.9: Nếu a b số nguyên a gọi đồng dư với b theo modulo (ký hiệu a ≡ b mod n ) n ( a − b ) Số nguyên n gọi modulo đồng dư 99 Chương - Mật khoá công khai Ví dụ: - 24 ≡ mod 24 −9 = 3.5 −11 ≡17 mod −11 −17 = −4.7 Các tính chất: Đối với a , a , b, b1 , c ∈Ζ ta có: (1) a ≡ b( mod n ) a b có phần dư chia cho n (2) Tính phản xạ (3) Tính đối xứng (4) Tính bắc cầu : a ≡ a ( mod n ) : Nếu a ≡ b( mod n ) b ≡ a ( mod n ) : Nếu a ≡ b( mod n ) b ≡ c( mod n ) a ≡ c( mod n ) (5) Nếu a ≡ a1 ( mod n ) b ≡ b1 ( mod n ) a + b ≡ a1 + b1 ( mod n ) a.b ≡ a1.b1 ( mod n ) Lớp tương đương số nguyên a tập số nguyên đồng dư với a modulo n Từ tính chất (2), (3) (5) ta thấy n cố định, quan hệ đồng dư theo modulo n phân hoạch Z thành lớp tương đương Nếu a = qn + r với ≤ r ≤ n a ≡ r ( mod n ) Bởi số nguyên a đồng dư theo modulo n với số nguyên nằm khoảng từ tới n −1 , số gọi thặng dư tối thiểu a mod n Như a r dùng để biểu thị cho lớp tương đương - Định nghĩa 3.2.10: Các số nguyên modulo n (ký hiêu Zn) tập (các lớp tương đương) số nguyên { 0,1, 2, , n −1} Các phép cộng , trừ, nhân Zn thực theo modulo n Ví du: Z 25 = { 0, 1,  , 24} Trong Z 25 ta có: 13 + 16 = 13 + 16 = 29 ≡ ( mod 25) Tương tự 13.16 = Z 25 - Định nghĩa 3.2.11 (Phần tử nghịch đảo) Cho a ∈ Z n , Phần tử nghịch đảo (ngược theo phép nhân) a mod n số nguyên x ∈ Z n cho: a x ≡ 1( mod n ) 100 Chương - Mật khoá công khai Nếu x tồn nhất, a gọi khả nghịch Phần tử nghịch đảo a ký hiệu a −1 - Định nghĩa 3.2.12: Phép chia với a cho b mod n tích a b −1 mod n tích xác định b phần tử khả nghịch - Định lý 3.2.6: Cho a ∈ Z n , a khả nghịch : ( a , n ) = Ví dụ: Các phần tử khả nghịch Z9 1, 2, 3, 4, 5, Chẳng hạn −1 = 4.7 ≡ ( mod ) - Định lý 3.2.7: Cho d = ( a , n ) Phương trình đồng dư ax ≡ b( mod n ) có nghiệm x d b , trường hợp có d nghiệm nằm n −1 , nghiệm tất đồng dư theo modulo n d - Định lý 3.2.8 (Phần dư China) Nếu số nguyên n1 , n ,  , n k nguyên tố đôi hệ phương trình đồng dư: x ≡ a ( mod n1 ) x ≡ a ( mod n ) x ≡ a k ( mod n k ) có nghiệm theo modulo n - ( n = n1 n  n k ) Thuật toán Gausse Nghiệm x hệ phương trình đồng dư định lý phần dư China đươc tính bằng: k x = ∑a i N i M i mod n i =1 Trong N i = n / n i M i = N i−1 mod n i 101 Chương - Mật khoá công khai Hình 3.1: Các đường cong y = x + x + y = x − x + 3.8.2 Các đường cong Elliptic trường Galois Một nhóm E trường Galois E p ( a , b ) nhận cách tính x + ax + b mod p với ≤ x < p Các số a, b số nguyên không âm nhỏ số nguyên tố p thỏa mãn điều kiện: 4a + 27 b mod p ≠ Với giá trị x ta cần xác định xem có thặng dư bậc hai hay không? Nếu x thặng dư bậc hai có giá trị nhóm Elliptic Nếu x không thặng dư bậc điểm không nằm nhóm E p ( a , b ) Ví dụ: (cấu trúc nhóm E) Giả sử p = 23 , a = b = Trước tiên ta kiểm tra lại: 4a + 27b mod p = 4.13 + 27.12 mod 23 = + 27, od 23 = 31mod 23 =8≠0 Sau ta xác định thặng dư bậc Q 23 từ Z 23 129 x mod p p − ( x ) mod p = 12 mod 23 22 mod 23 2 mod 23 212 mod 23 32 mod 23 20 mod 23 mod 23 19 mod 23 16 mod 23 182 mod 23 Chương - Mật khoá công khai Bởi tập mod 23 17 mod 23 13 mod 23 16 mod 23 mod 23 152 mod 23 18 mod 23 14 mod 23 12 10 mod 23 132 mod 23 112 mod 23 12 mod 23 p −1 = 11 thặng dư bậc Q 23 bằng: Q 23 = {1, 2, 3, 4, 6, 8, 9,12,13,16,18} Với ≤ x < p ta tính y = x + x + xác định xem liệu y có nằm tập thặng dư bậc Q 23 không x 10 11 y2 11 16 16 15 22 y ∈ Q 23 ? c c k c k c c c k c k c y1 10 4 11 y2 22 16 13 19 19 12 16 20 x 12 13 14 15 16 17 18 19 20 21 22 y2 16 22 10 19 9 17 14 22 y ∈ Q 23 ? c c k k k c c c k k k y1 3 y2 19 16 20 20 18 Nhóm Elliptic E p ( a , b ) = E 23 (1,1) gồm điểm sau: 130 Chương - Mật khoá công khai  ( 0,1)  (5, 4)  E 23 (1,1) =  ( 9,16 ) (17, 3) ( 0,22) (1, ) (1,16) ( 5,19) ( 6,4) ( 6,19) (11,3) (11, 20) (12, 4) (17, 20) (18, 3) (18, 20) ( 3,10) ( 7,11) ( 3,13) ( 4, 0)  ( 7,12) ( 9, )  (12,19) (13, ) (13,16)   (19,5) (19,18) 24 22 20 18 16 14 12 10 02468101214161820 Hình 3.2: Nhóm 3.8.3 Các phép toán cộng nhân nhóm E ( ) ( ) Giả sử P = x1 , y1 , Q = x , y điểm nhóm E p ( a , b ) , O điểm vô cực Các quy tắc phép cộng nhóm E p ( a , b ) sau: (1) P + O = O + P = P (2) Nếu x = x1 y = − y1 tức Q = ( x , y ) = ( x1,− y1 ) = −P P + Q = ( ) (3) Nếu Q ≠ − P tổng P + Q = x , y cho bởi: x = λ2 − x1 − x mod p ( ) y = λ x1 − x − y1 mod p Trong đó: 131 P = ( x1, y1 ) Chương - Mật khoá công khai  y − y1   x − x1 λ ∆   3x1 + a  2y  nÕuP ≠ Q nÕuP = Q Ví dụ: Phép nhân nhóm E p ( a , b ) Phép nhân nhóm E p ( a , b ) thực tương tự phép lũy thừa modulo RSA ( ) Giả sử P = ( 3,10 ) ← E 23 (1,1) , dó 2P = x , y bằng: 2P = P + P = ( x1 , y1 ) + ( x1, y1 ) Vì P = Q x = x1 nên giá trị α , x y là: λ = 3x12 + a y1 3.32 + mod p = mod 23 = mod 23 = −1 mod 23 = 2.10 20 x = λ2 − x1 − x mod p = − − mod 23 = 30 mod 23 = y = λ x1 − x − y1 mod p = 6( − ) − 10 mod 23 = −34 mod 23 = 12 ( ( ) ) Bởi 2P = x , y = ( 7,12 ) Phép nhân kP nhận cách thực lặp k lần phép cộng k y − y1 λ= x − x1 λ = 10 11 3x12 + a y1 (nếu P ≠ Q ) (nếu P = Q ) 12 11 19 21 x3 y3 λ2 − x − x mod 23 λ x1 − x − y1 mod 23 ( x , y3 ) 12 19 16 20 (3,10) (7,12) (19,5) (17,3) (9,16) (12,4) (11,3) (13,16) (0,1) (6,4) (18,20) 19 17 12 11 13 18 ( ) kP 132 Chương - Mật khoá công khai 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 16 20 13 13 20 16 21 19 11 12 5 18 13 11 12 17 19 7 16 19 19 22 20 19 20 18 11 13 (5,4) (1,7) (4,0) (1,16) (5,19) (18,3) (6,19) (0,22) (13,7) (11,20) (12,19) (9,7) (17,20) (19,18) (7,11) (3,13) 3.8.4 Mật đường cong Elliptic Trong hệ mật rõ M hóa thành điểm PM tập hữu hạn điểm nhóm E p ( a , b ) Trước hết ta phải chọn điểm sinh G ∈ E p ( a , b ) cho giá trị nhỏ n đảm bảo nG = phải số nguyên tố lớn Nhóm E p ( a , b ) điểm sinh G đưa công khai Mỗi người dùng chọn khóa riêng n A < n tính khóa công khai PA sau: PA = n A G Để gửi thông báo PM cho bên B, A chọn số nguyên ngẫu nhiên k tính cặp PC cách dùng khóa công khai PB B: [ PC = ( kG ) , ( PM + kPB ) ] Sau thu cặp điểm PC , B nhân điểm ( kG ) với khóa riêng n B cộng kết với điểm thứ hai cặp điểm PC (Điểm ( PM + kPB ) ); 133 Chương - Mật khoá công khai ( PM + kPB ) − n B ( kG ) = ( PM + kn BG ) − n B ( kG ) = PM Đây điểm tương ứng với rõ M Chỉ có B có khóa riêng n B tách n B ( kG ) khỏi điểm thứ hai PC để thu thông tin rõ PM Ví dụ: Xét đường cong E sau: y = x + ax + b mod p y = x − x + 188 mod 751 ( a = −1, b = 188, p = 751) Nhóm E tạo từ đường cong E là: E p ( a , b ) = E 751( − 1, 188) Cho điểm sinh G = ( 0, 376 ) Khi phép nhân kG G (1 ≤ k ≤ 751) G = ( 0, 376) 5G = (188, 657 ) 9G = ( 582, 736) 2G = (1, 376 ) 6G = ( 6, 390 ) 10G = ( 57, 332) 3G = ( 750, 375) 7G = ( 667, 571)  4G = ( 2, 373) 8G = (121, 39) 761G = ( 565, 312) 766G = ( 3, 370) 767G = (1, 377 ) 768G = ( 0, 375) 769G = 0( diÓmv«cùc) 762G = ( 328, 569) 763G = ( 677, 158) 764G = (196, 681) 765G = ( 417, 320) Nếu A muốn gửi cho B rõ m (được thành điểm rõ PM ) PM = ( 443, 253) ∈ E 751( − 1, 188) A phải dùng khóa công khai B để hóa Giả sử khóamật B n B = 85 , khóa công khai B là: PB = n BG = 85 ( 0, 376) PB = ( 671, 558) A chọn số ngẫu nhiên k = 113 dùng PB để hóa PM thành cặp điểm mã: [ PC = ( kG ) ; ( PM + kPB ) ] PC = [113 ( 0,376) , ( 443,253) + ( 47, 416) ] PC = [ ( 34,633) , ( 443,253) + ( 47, 416 ) ] PC = [ ( 34, 633) , ( 217, 606 ) ] Dựa vào PC nhận được, B dùng khóa riêng n B = 85 để tính PM sau: 134 Chương - Mật khoá công khai ( PM + kPB ) − n B ( kG ) = ( 217, 606) − [85 ( 34, 633) ] = ( 217, 606 ) − [ ( 47, 416) ] = ( 217, 606 ) + ( 47, − 16) (vì − P = ( x1,− y1 ) ) = ( 217, 606 ) + ( 47, 335) (vì − 416 ≡ 335 mod 751 ) = ( 443, 253) Sau B ánh xạ điểm - điểm rõ PM trở lại thông báo gốc M 3.8.5 Độ an toàn hệ mật đường cong Elliptic Sức mạnh ECC nằm khó khăn thám phải xác định số ngẫu nhiên bí mật k từ kP P Phương pháp nhanh để giải tóan phương pháp phân tích S - Pollard Để phá ECC độ phức tạp tính toán dùng phương pháp S – Pollard 3,8.1010 MIPS - năm với kích thước khóa 150 bít (đây số năm cần thiết với hệ thống tính toán có tốc độ hàng triệu lệnh/giây) Để so sánh với phương pháp nhanh phá RSA (là phương pháp sàng trừng số để phân tích hợp số n thành tích số nguyên tố p q) ta thấy với n có kích thước 768 bít độ phức tạp tính toán là: 2.108 MIPS - năm , với n có kích thước 1024 bít, độ phức tạp tính toân 3.1011 năm Nếu độ dài khóa RSA tăng lên tới 2048 bít cần 3.10 20 MIPS - năm, với ECC cần độ dài khóa 234 bít phải yêu cầu tới 1,6.1028 MIPS - năm 3.9 hệ mật McElice Hệ mật McEliece sử dụng nguyên lý tương tự hệ mật Merkle-Hellman Phép giải trường hợp đặc biệt toán NP đầy đủ nguỵ trang giống trường hợp chung toán Trong hệ thống toán NP áp dụng toán giải cho sửa sai (nhị phân) tuyến tính nói chung Tuy nhiên, nhiều lớp đặc biệt tồn thuật toán giải với thời gian đa thức Một lớp Goppa, chúng dùng làm sở cho hệ mật McEliece 3.9.1 Định nghĩa 135 Chương - Mật khoá công khai Giả sử k, n số nguyên dương, k ≤ n C[ n , k ] không gian k chiều ( Z ) n (không gian véctơ tất véctơ nhị phân n chiều) Ma trận sinh C[ n , k ] ma trận nhị phân k x n , hàng ma trận tạo nên sở C Giả sử x , y ∈ ( Z ) n , x = ( x1 ,  , x n ) y = ( y1 ,  , y n ) Ta xác định khoảng cách Hamming: d ( x , y ) = { i : ≤ i ≤ n , x i ≠ y i } tức số toạ độ x y khác Khoảng cách C định nghĩa sau: d ( C ) = min{ d( x , y ) : x , y ∈ C , x ≠ y} [ n , k ] có khoảng cách d ký hiệu [ n , k , d ] sửa sai dùng để sửa sai ngẫu nhiên xảy truyền số liệu (nhị phân) qua kênh có nhiễu Điều thực sau: Giả sử G ma trận sinh [ n , k , d ] , x véctơ nhị phân k chiều cần truyền Người gửi Alice hoá x thành véctơ n chiều y = x G truyền y qua kênh Giả sử Bob nhận véctơ n chiều r không giống y, Bob giải r chiến thuật giải "người láng giềng gần nhất" Theo chiến thuật này, Bob tìm thấy từ y' có khoảng cách tới r nhỏ Sau giải r thành y' , xác định véctơ k chiều x' cho y' = x ' G Bob hy vọng y' = y x ' = x (tức Bob tin sai số đường truyền sửa) Dễ dàng thấy rằng, sai số đường truyền nhiều ( d − 1) / thực tế chiến thuật sửa tất sai Ta xét thực tế, thuật toán giải thực nào? Vì C = k nên Bob so sánh r với từ phải kiểm tra k véctơ số lớn theo hàm mũ so với k Nói cách khác, thuật toán thuật toán chạy thời gian đa thức Một biện pháp khác (tạo sở cho nhiều thuật toán giải thực tế) dựa khái niệm syndrom Ma trận kiểm tra tính chẵn lẻ C[ n , k , d ] (có ma trận sinh G) trận nhị phân ( n − k ) x n chiều (ký hiệu H) Các hàng H tạo sở cho phần bù trực giao C (ký hiệu C ⊥ ) gọi đối ngẫu với C Nói cách khác, hàng H véctơ độc lập tuyến tính, G H ⊥ ma trận không cấp k x ( n − k ) 136 Chương - Mật khoá công khai Cho véctơ r ∈ ( Z ) n , ta xác định syndrom r H r ⊥ Syndrom H r ⊥ véctơ cột có ( n − k ) thành phần 3.9.2 Định lý Giả sử C [ n , k ] có ma trận sinh G ma trận kiểm tra tính chẵn lẻ H Khi x ∈ ( Z ) n từ H x T = [ 0  0] T Hơn x ∈ C , e ∈ ( Z ) n r = x + e H x T = H e T Ta coi e vectơ sai xuất trình truyền từ x Khi r biểu diễn vectơ thu Định lý phát biểu syndrom phụ thuộc vào sai số không phụ thuộc vào từ cụ thể truyền Điều gợi ý tới cách giải gọi giải theo syndrom Trước tiên tính s = H r T s vectơ không, ta giải r thành r Nếu không ta tạo tất véctơ sai có trọng số Với véctơ này, ta tính H e T Nếu có véctơ e thoả mãn H e T = s ta giải r thành r − e Ngược lại, lại tiếp tục tạo vectơ sai có trọng số 2, 3,  , [ ( d − 1) / 2] Theo thuật toán này, giải cho vectơ nhận nhiều  n  n   +   +  +  d −  bước   1   Phương pháp làm việc tuyến tính Đối với số loại đặc biệt, thủ tục giải nhanh chóng Tuy nhiên, thực tế, cách giải cho chiến thuật giải "người láng giếng gần nhất" toán NP đầy đủ Như vậy, chưa có thuật toán giải thời gian đa thức biết cho toán giải theo "người láng giềng gần nhất" tổng quát (Khi số sai số không bị giới hạn [ ( d − 1) / 2] ) Cũng giống toán tổng tập con, trường hợp đặc biệt "dễ", sau nguỵ trang cho giống với toán chung "khó" Để đưa lý thuyết dài dòng, ta tóm lược kết Một trường hợp dễ McEliece đề nghị dùng lớp Goppa Trên thực tế, có thuật toán giải hữu hiệu Hơn các, dễ tạo có số lượng lớn Goppa tương đương có tham số 137 Chương - Mật khoá công khai Các tham số Goppa có dạng n = m , d = t + k = n − mt Để áp dụng thực tế cho hệ mật khoá công khai, McEliece đề nghị chọn m = 10 t = 50 Điều ứng với Goppa [1024 , 524 ,101] Mỗi rõ mọt véctơ nhị phân cấp 524 véctơ nhị phân cấp 1024 Khoá công khai ma trận nhị phân cấp 524 x 1024 Hình 3.3 mô tả hệ mật McEliece Cho G ma trận sinh Goppa C[ n , k , d ] , n = m , d = t + k = n − mt Cho s ma trận khả nghịch cấp k x k Z Giả sử P ma trận hoán vị cấp n x n , ta đặt G ' = S G P Cho P = ( Z ) , n C = ( Z ) ký hiệu: K = { ( G , S , P , G ')} Trong G, S, P xây dựng mô tả giữ kín, G' công khai Với K = ( G , S , P , G ') , ta định nghĩa : e k ( x , e ) = x G '+e đây, e ∈ ( Z ) véctơ ngẫu nhiên có trọng số t n Bob giải y ∈ ( Z ) theo bước sau: n Tính y1 = y P −1 Giải (Decode) y1 , Bob tìm y1 = x + e1 , x ∈ C k Tính x ∈ ( Z ) cho x G = x Tính x = x S−1 Hình 3.3: Hệ mật McEliece Để minh hoạ cho thủ tục giải (code and decode), xét ví dụ sau: Ví dụ 1: Ma trận: 1  0 G=  0 0 0 0 0 1 1 1 0  1 1   ma trận sinh Hamming [ , , 3] Giả sử Bob chọn ma trận S ma trận P sau: 138 Chương - Mật khoá công khai 1  1 S=  1 1 0 0  0 0  P = 1 0  0  0 1  1 1   0 0 0 0 0 0 0 0 0 0 0 0 0 0  0 1  0  0  0 Khi ma trận sinh công khai là: 1  1 G' =   0 1 1 0 1 1 1 0  0 1   0 Bây giả sử Alice hoá rõ x = (1, 1, 0, 1) cách dùng vectơ sai ngẫu nhiên trọng số có dạng: e = ( 0, 0, 0, 0, 1, 0, ) Bản tính là: y = x G' + e 1  1 = (1, 1, 0, 1)   0 1 1 0 1 1 1 0 0  0 + ( 0, 0, 0, 0, 1, 0, ) 1   = ( 0, 1, 1, 0, 0, 1, ) + ( 0, 0, 0, 0, 1, 0, ) = ( 0, 1, 1, 0, 1, 1, ) Khi Bob nhận y, trước hết tính 0  1 0  y1 = y P −1 = ( 0, 1, 1, 0, 1, 1, )  0  0  0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0  0 0   = (1, 0, 0, 0, 1, 1, 1)  0  0 Tiếp theo Bob giải y1 để nhận x = (1, 0, 0, 0, 1, 1, ) (Cần để ý e1 ≠ e phép nhân với P −1 ) Sau lập x = (1, 0, 0, ) (bốn thành phần x ) 139 Chương - Mật khoá công khai Cuối Bob tính: 1  1 −1 x = S x0 =   1 1 0 1  0 (1, 0, 0, 0) = (1, 1, 0, 1) 1   Đây rõ Alice 3.10 tập Sử dụng thuật toán Euclide mở rộng để tìm ước chung lớn hai số a = 1573, b = 308 Hãy tính 322 mod23 cách dùng thuật toán nhân bình phương có lặp Hãy tính bậc hai 12mod37 * Tìm tất phần tử nguyên thuỷ nhóm nhân Z19 Tìm phần tử nghịch đảo Z*31 Với m,n,s∈ N pi số nguyên tố Hãy chứng minh tính chất sau hàm ϕ -Euler ( ) 1 s s a ϕ p = p  1−   p b ϕ ( m,n) = ϕ ( m) ϕ ( n) UCLN ( m,n) =  1  1 c ϕ ( n) = m 1−   1−  m = p1e1 per1 phân tích m thành  p1   pr  tích thừa số nguyên tố Hãy tính ϕ ( 490) ϕ ( 768) Giải hệ phương trình đồng dư sau: 5x ≡ 20mod6 6x ≡ 6mod5 4x ≡ 5mod77 Hãy dùng thuật toán Euclide mở rộng để tính phần tử nghịch đảo sau: a 17−1 mod101 b 357−1 mod1234 140 Chương - Mật khoá công khai c 3125−1 mod9987 10 Ta nghiên cứu số tính chất phần tử nguyên thuỷ: a 97 số nguyên tố Hãy chứng minh x ≠ phần tử nguyên thuỷ theo modulo 97 khi: x32 ≠ 1mod97 x48 ≠ 1mod97 b Hãy dùng phương pháp để tìm phần tử nguyên thuỷ nhỏ theo modulo 97 c Giả sử p số nguyên tố p − có phân tích luỹ thừa nguyên tố sau: n p − = ∏ peii i =1 pi số nguyên tố khác Hãy chứng tỏ x ≠ phần tử nguyên thuỷ theo modulo p x( p−1) pi ≠ 1modp với ≤ i ≤ n 11 Ví dụ hệ mật RSA Cho p = q = 17 a Tính n b.Cho e (số mũ hoá) Hãy tính số mũ giải d c Hãy hoá giải cho số 49 12 12 Người ta biết hệ mật RSA, tập rõ tập Tuy nhiên bạn có cho số giá trị không gian thông báo (bản rõ) không mong muốn? 13 a b c 14 141 Trong hệ mật Rabin, giả sử p = 199, q = 211 Xác định bậc hai mod n, n = p.q Tính 32767 Xác định giải Xét trường hợp đơn giản hệ mật Merkle-Hellman sử dụng phép hoán hoán vị đồng Giả sử dãy siêu tăng chọn (2, 6, 13, 27, 52) giá trị ngẫu nhiên w chọn 31, modulo M chọn 105 a Hãy xác định khoámật b Bản tin dạng nhị phân có dạng 011000_110101_101110 Chương - Mật khoá công khai Hãy tính giải để tìm lại tin ban đầu ( ) 15 Đây ví dụ hệ mật ElGamal áp dụng GF Đa thức x3 + x2 + đa thức bất khả quy Z3[ x] Z3[ x] ( x + x + 1) GF ( ) Ta gắn 26 chữ bảng chữ 3 tiếng Anh với 26 phần tử khác không trường hoá văn thông thường theo cách truyền thống Ta dùng thứ tự theo từ điển đa thức khác không để thiết lập tương ứng A ↔1 B↔2 C↔x D ↔ x+1 E ↔ x+ F ↔ 2x G ↔ 2x + H ↔ 2x + I ↔ x2 J ↔ x2 + K ↔ x2 + L ↔ x2 + x M ↔ x2 + x + N ↔ x2 + x + O ↔ x2 + 2x P ↔ x2 + 2x + Q ↔ x2 + 2x + R ↔ 2x2 S ↔ 2x2 + T ↔ 2x2 + U ↔ 2x2 + x V ↔ 2x2 + x + W ↔ 2x2 + x + X ↔ 2x2 + 2x Y ↔ 2x2 + 2x + Z ↔ 2x2 + 2x + Giả sử Bob dùng α = x a = 11 hệ mật ElGamal, α a = x + Hãy cách Bob giải cho sau: (K, H) (P,X) (N,K) (H, R) (T, F) (V, Y) (E, H) (F, A) (T, W) (J, D) (V, J) 16 BCH (15, 7, 5) có ma trận kiểm tra sau: 1  0 0  H= 1  0 0  0 0 0 1 1 1  0 1 1 1 0 0 1 1 1 0  0 0 1 1 1 1 0 1 0 1 0 1  0 1 0 1 0 1 1 0 1 0 1 0  1 1 1 1 1 1 Hãy giải cho vectơ nhân sau phương pháp giải theo syndrom: a r = ( 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,) b r = ( 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0) 142 Chương - Mật khoá công khai c 143 r = ( 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0) ... (3) Khoá công khai n, khoá bí mật cặp số (p, q) 3. 4.2 Thuật toán 2: Mã hoá công khai Rabin 3. 4.2.1 Mã hoá: B phải thực bước sau: (1) Nhận khoá công khai A: n 117 Chương - Mật mã khoá công khai. .. thoả mãn ed ≡ 1( mod Φ ) Khoá công khai A cặp số ( n = 6012707 , e = 36 74911 ), khoá bí mật A d = 422191 3. 3.4.2 115 Mã hoá Chương - Mật mã khoá công khai Để mã hoá thông báo m = 5 234 6 73, B... mod p 3. 5 .3 Ví dụ 3. 5 .3. 1 Tạo khoá A chọn p = 235 7 phần tử sinh α = Z* 235 7 A chọn khoá bí mật a = 1751 tính α a mod p = 21751 mod 235 7 = 1185 Khoá công khai A (p = 235 7, α = , α 3. 5 .3. 2 a =

Ngày đăng: 04/10/2017, 08:58

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan