Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 52 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
52
Dung lượng
1,25 MB
Nội dung
Chương - MậtmãkhoácôngkhaiChương III - MậTMãKHOáCÔNGKHAI 3.1 gIớI THIệU Về MậTMãKHOáCÔNGKHAI Trong mô hình mậtmã cổ điển trước mà nghiên cứu Alice (người gửi) Bob (người nhận) chọn cách bí mậtkhoá K Sau dùng K để tạo luật mã hoá e k luật giải mã 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 mã hoàn toàn tương tự trình mã 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 mã 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ậtkhoácôngkhai (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 mã e k côngkhai cách công bố danh bạ (bởi nên có thuật ngữ hệ mậtkhoácông khai) Ưu điểm hệ mậtkhoácôngkhai chỗ Alice (hoặc ai) gửi tin mã cho Bob (mà không cần thông tin trước khoá mật) cách dùng mậtmãcôngkhai e k Người nhận A người giải mã 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 mãkhoá số ý tưởng hệ mậtkhoácôngkhai 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ậtkhoácôngkhai sau: 92 Chương - Mậtmãkhoácôngkhai - 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 mã đại số coi an toàn Hệ mật McEliece dựa toán giải mã cho mã 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ậtkhoácôngkhai khác Một ý quan trọng hệ mậtkhoácôngkhai 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 mã tin rõ luật mã hoá côngkhai e k tìm rõ x đảm bảo y = e k ( x ) Bản rõ kết giải mã y Bởi vậy, ta nghiên cứu độ mậtmặt tính toán hệ mật 93 Chương - Mậtmãkhoácôngkhai Một khái niệm có ích nghiên cứu hệ mậtkhoácôngkhaikhá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 mãkhoácôngkhai 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ậtmã học, chúng quan trọng hệ mậtkhoácôngkhai 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 mã RSA, sau ta nói nhiều nó) Để xây dựng hệ mậtkhoácôngkhai 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 mã 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 mã 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ậtmãkhoácôngkhai (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ậtmãkhoácôngkhai ( 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 mà 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 mà tính số nguyên x y thoả mãn ax + by = d 98 Chương - Mậtmãkhoácôngkhai - 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ậtmãkhoácôngkhai 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ậtmãkhoácôngkhai 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ậtmãkhoácôngkhai 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ậtmãkhoácôngkhai 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ậtmãkhoácôngkhai ( 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ậtmãkhoácôngkhai 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ậtmãkhoácôngkhai 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ậtmã đường cong Elliptic Trong hệ mật rõ M 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ôngkhai Mỗi người dùng chọn khóa riêng n A < n tính khóacôngkhai 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 mã PC cách dùng khóacôngkhai 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ậtmãkhoácôngkhai ( 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 mã thành điểm rõ PM ) PM = ( 443, 253) ∈ E 751( − 1, 188) A phải dùng khóacôngkhai B để mã hóa Giả sử khóa bí mật B n B = 85 , khóacôngkhai B là: PB = n BG = 85 ( 0, 376) PB = ( 671, 558) A chọn số ngẫu nhiên k = 113 dùng PB để mã 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ậtmãkhoácôngkhai ( 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 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 mã 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 mã cho mã sửa sai (nhị phân) tuyến tính nói chung Tuy nhiên, nhiều lớp mã đặc biệt tồn thuật toán giải mã với thời gian đa thức Một lớp mãmã Goppa, chúng dùng làm sở cho hệ mật McEliece 3.9.1 Định nghĩa 135 Chương - Mậtmãkhoácôngkhai Giả sử k, n số nguyên dương, k ≤ n Mã 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 mã 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ạ độ mà x y khác Khoảng cách mã C định nghĩa sau: d ( C ) = min{ d( x , y ) : x , y ∈ C , x ≠ y} Mã [ n , k ] có khoảng cách d ký hiệu mã [ n , k , d ] Mã 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 mã [ n , k , d ] , x véctơ nhị phân k chiều cần truyền Người gửi Alice mã 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 mã r chiến thuật giải mã "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 mã 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 mã thực nào? Vì C = k nên Bob so sánh r với từ mã 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 mã thực tế) dựa khái niệm syndrom Ma trận kiểm tra tính chẵn lẻ mã C[ n , k , d ] (có ma trận sinh G) mã 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 mã đố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ậtmãkhoácôngkhai 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 mã [ 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ừ mã 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ừ mã x Khi r biểu diễn vectơ thu Định lý phát biểu syndrom phụ thuộc vào sai số mà không phụ thuộc vào từ mã cụ thể truyền Điều gợi ý tới cách giải mã gọi giải mã theo syndrom Trước tiên tính s = H r T s vectơ không, ta giải mã 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 mã 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 mã cho vectơ nhận nhiều n n + + + d − bước 1 Phương pháp làm việc mã tuyến tính Đối với số loại mã đặc biệt, thủ tục giải mã nhanh chóng Tuy nhiên, thực tế, cách giải cho chiến thuật giải mã "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 mã 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 mã lớp mã Goppa Trên thực tế, mã có thuật toán giải mã hữu hiệu Hơn các, mã dễ tạo có số lượng lớn mã Goppa tương đương có tham số 137 Chương - Mậtmãkhoácôngkhai Các tham số mã Goppa có dạng n = m , d = t + k = n − mt Để áp dụng thực tế cho hệ mậtkhoácông khai, McEliece đề nghị chọn m = 10 t = 50 Điều ứng với mã Goppa [1024 , 524 ,101] Mỗi rõ mọt véctơ nhị phân cấp 524 mã véctơ nhị phân cấp 1024 Khoácôngkhaima 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 mã 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ôngkhai 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 mãmã y ∈ ( Z ) theo bước sau: n Tính y1 = y P −1 Giải mã (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 mã giải mã (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 mã Hamming [ , , 3] Giả sử Bob chọn ma trận S ma trận P sau: 138 Chương - Mậtmãkhoácôngkhai 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ôngkhai là: 1 1 G' = 0 1 1 0 1 1 1 0 0 1 0 Bây giả sử Alice mã 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 mã 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 mã 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 mã 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ậtmãkhoácôngkhai 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õ mã Alice mã 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ậtmãkhoácôngkhai 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ũ mã hoá) Hãy tính số mũ giải mã d c Hãy mã hoá giải mã cho số 49 12 12 Người ta biết hệ mật RSA, tập rõ tập mã 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 mã 32767 Xác định giải mãmã 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á bí mật b Bản tin dạng nhị phân có dạng 011000_110101_101110 Chương - Mậtmãkhoácôngkhai Hãy tính mã giải mã để 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 mã 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 mà Bob giải mã cho mã sau: (K, H) (P,X) (N,K) (H, R) (T, F) (V, Y) (E, H) (F, A) (T, W) (J, D) (V, J) 16 Mã 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 mã cho vectơ nhân sau phương pháp giải mã 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ậtmãkhoácôngkhai 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 =