Lý thuyết mật mã Đề tài Thuật toán Euclidean và mật mã Affine

18 8 0
Lý thuyết mật mã Đề tài Thuật toán Euclidean và mật mã Affine

Đ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

Đại Học Bách Khoa Hà Nội Viện Điện tử viễn thông ********** BÁO CÁO BÀI TẬP LỚN MÔN Lý thuyết mật mã Đề tài Thuật toán Euclidean và mật mã Affine Giáo viên hướng dẫn Hồ Mạnh Linh Sinh viên MSSV 1 Trị[.]

Đại Học Bách Khoa Hà Nội Viện Điện tử viễn thơng ********** BÁO CÁO BÀI TẬP LỚN MƠN Lý thuyết mật mã Đề tài: Thuật toán Euclidean mật mã Affine Giáo viên hướng dẫn: Hồ Mạnh Linh Sinh viên MSSV Trịnh Thị Nga Lê Duy Nhật Nguyễn Thị Oanh Đinh Ngọc Phú Nguyễn Đình Phúc Vương Văn Phúc Phạm Hồng Minh Nguyễn Hữu Phúc 20162883 20163037 20163104 20163167 20163188 20167332 20132311 20167332 *Hà Nội 2018* NỘI DUNG Phần I : Cơ Sở Lý Thuyết Chung giải thuật Euclid 1.1 Giới thiệu chung giải thuật Euclid 1.2 Nguyên lý giải thuật .3 1.3 Xây dựng thuật toán 1.4 Ứng dụng Phần II: MẬT MÃ AFFINE 2.1 Bài toán mật mã Affine 2.2 Mã hóa Affine 2.3 Giải mã Affine 2.4 Tìm hiểu thám mã nói chung thám mã mật mã Affine nói riêng .9 2.5 Thực hành thám mã hệ mã Affine văn tiếng Việt 12 2.6 Phương pháp xác suất .12 Câu hỏi mở rộng 14 Câu 1: Cơ sở toán học thuật toán Euclide .14 Câu 2: s,t có phải hay khơng? .16 Câu 3: Chuyện xảy gcd(k,n) ≠ 1? 17 Phần I : Cơ Sở Lý Thuyết Chung giải thuật Euclid 1.1 Giới thiệu chung giải thuật Euclid Giải thuật Euclid hay thuật tốn Euclid giải thuật giúp tìm ước số chung lớn nhất( GCD- Greatest Common Divisor) hai số cách hiệu Giải thuật biết đến từ khoảng 300 năm trước cơng ngun Nhà tốn học Hy Lạp cổ Euclid viết giải thuật sách tiếng Elements 1.2 Nguyên lý giải thuật Ở dạng đơn giản nhất, thuật toán Euclid bắt đầu với cặp số nguyên dương, tạo cặp số nguyên dương bao gồm số nhỏ phần phép chia hai số ban đầu Nguyên lý thuật tốn ước số chung lớn cặp số không thay đổi với hiệu hai số Ví dụ USCLN 252 105 ước số chung lớn 147( = 252-105) 105 Vì số lớn cặp số bị giảm giá trị nên việc lặp lặp lại thuật toán giúp tạo số ngày nhỏ đến lúc q trình kết thúc- cặp số cịn lại nhau( q trình thực thêm bước nữa, có hai số trở thành số 0) 1.3 Xây dựng thuật toán Thuật toán Euclid dựa hai định lý: Định lí 1: gcd( a, 0)= a Định lí 2: gcd(a, b)= gcd (b, r), r thương phép chia a cho b Quy trình: Giải thuật tìm gcd (a, b): Bước 1: A=a, B=b Bước 2: If B=0 return A Bước 3: r= A mod B Bước 4: A= B Bước 5: B= r Bước 6: Lặp lại bước Ví dụ: Tìm gcd(2740, 1760) Qua bảng ta có r 1=2740,r 2=1760 , q giá trị phép tính r 1=q r 2+ r Từ tìm gcd( 2740, 1760)= 20 *Thuật toán Euclid mở rộng: Cho hai số nguyên a b, tồn hai số nguyên s t cho : s × a + t × b = gcd (a, b) Thuật tốn Euclid mở rộng tính gcd(a, b) đồng thời tính giá trị s t Giải thuật hình Ví dụ: Cho a= 161 b= 28, tìm gcd(a, b) giá trị s t Qua bảng ta tìm gcd(161, 28)= 7, s= -1 t= 1.4 Ứng dụng Thuật toán có nhiều ứng dụng lý thuyết thực tế Một ứng dụng quan trọng thuật tốn Euclid mở rộng tìm nghịch đảo modulo: Nghịch đảo nhân: Xét số nguyên dương m Xét số nguyên modulo m (từ đến m−1) Với số nguyên a,ta gọi nghịch đảo modulo m (modular multiplicative inverse) a a−1 số nguyên thoả mãn: a∗a−1 ≡1(mod m) Ta cần ý khơng phải lúc a tồn Ví dụ, với m=4, a=2, ta khơng thể tìm a thoả mãn đẳng thức o Có thể chứng minh a luôn tồn gcd (a,m)=1 o Số nghịch đảo theo modulo n o Nếu USCLN (a, n) = ln tồn b (b < n) cho: b = a-1 mod n hay ab ≡ (mod n) Ta gọi b số nghịch đảo a theo modulo n Ví dụ: × ≡ (mod 9) hay = mod Ngồi ra, dùng để tạo gần tất nhịp điệu âm nhạc truyền thống sử dụng nhiều văn hóa khác tồn giới Nó thành phần then chốt thuật tốn mã hóa RSA, mật mã hóa cơng khai sử dụng rộng rãi thương mại điện tử Thuật toán áp dụng để giải phương trình Diophantine Phần II: MẬT MÃ AFFINE Khái niệm: Mật mã Affine dạng mật mã thay dùng bảng chữ cái, chữ ánh xạ tới số sau mã hóa qua hàm số tốn học đơn giản Một phép dịch Caesar mật mã Afinne, chữ mã hóa với hàm (x+b)mod (26), với b bước dịch 2.1 Bài toán mật mã Affine Phát biểu toán hệ mật mã affine: • Khơng gian rõ mã hệ mã xâu hình thành từ bảng chữ A có độ dài N Khi khơng gian khóa hệ mã affine xác định sau: • Khơng gian khóa hệ mã cặp số (a,b) với a,b Z ∈ N ước chung lớn a N • Hoặc: K = { (a,b): a,b Z ∈ N ,UCLN(a,N) =1} • Ước chung lớn số a, b số nguyên dương d lớn thỏa mãn điều kiện d ước hai số nguyên a, b Ký hiệu: UCLN( a, b) GCD( a, b) • Trong vành Z N với a,b Z ∈ N a>=1, N>=2 UCLN(a,b)=1 ta gọi a b số nguyên tố Câu hỏi: Trong bảng chữ tiếng anh có 26 chữ( tức N =26), ta đánh số chữ bảng chữ từ đến 25( hình vẽ dưới) Hỏi ta có chữ số a, b thỏa mãn yêu cầu tốn mã affine khơng gian khóa hệ mã affine với bảng chữ bao gồm số? Lời giải: • Chữ số a theo yêu cầu toán phải thỏa mãn điều kiện: a ∈ Z26 gcd( a, 26) =1 Các số thỏa mãn yêu cầu a ={1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25} Như có tất 12 chữ số a thỏa mãn u cầu tốn • Chữ số b cần thỏa mãn điều kiện b ∈ Z26 suy racó 26 chữ số b thỏa mãn yêu cầu tốn • Có 12 cách chọn chữ số a, 26 cách chọn chữ số b suy không gian khóa K bảng chữ tiếng anh gồm 12 x 26 = 312 khóa Đây số tương đối nhỏ 2.2 Mã hóa Affine • Để mã hóa người ta đánh số chữ bảng chữ từ →N-1 tiến hành mã hóa, giải mã ký tự • Hàm mã hóa affine có dạng sau: EK(x) = (ax +b)mod N với (a,b) ∈ K Ký tự rõ có số thứ tự x chuyển thành ký tự có số ký tự (ax+b)mod N bảng chữ A Với a = 1: ta hệ mật mã dịch vịng Ví dụ: Mã hóa rõ WAR hệ mật mã affine với K=(7,10) bảng chữ tiếng anh có 26 ký tự Lời giải: o Đổi chữ xâu WAR thành chữ số tương ứng: 22, 0, 17 o K=(7,10) tức ta có a= b=10, áp dụng vào hàm mã hóa affine ta được: Ek(22) = (7×22+10) mod 26 = → I o Ek(0) = (7×0+10) mod 26 = 10 →K o Ek(17) = (7×17+10) mod 26 = 25 → Z  Kết : IKZ 2.3 Giải mã Affine • Với tốn mã hóa: EK(x) = (ax +b)mod N với (a,b) ∈ K giải mã tốn Phân tích: Giả sử gọi x số nguyên thể ký tự ghi rõ y số nguyên thể hiện ký tự ghi mã ký tự x Và gọi a−1 nghịch đảo a theo module N Ta có: y = (ax +b)mod N ↔ ax = (y-b) mod N ( áp dụng tính chất kết hợp, phân phối giao hoán ) ↔ a−1 ax =a−1 (y-b) mod N ( nhân vế vớia−1) ↔x = a−1 (y-b) mod N • Với a,b,y biết ta tính x → ký tự tương ứng với vị trí x bảng ký tự • Hàm giải mã là: dK(y) =a−1 (y-b) mod 26 Ví dụ: Giải mã thông điệp “FBWGC” mã Affine với a = b = chữ tiếng Anh (N = 26) o Chuyển ký tự thành số: 22 o Ta tính a−1trong module 26 Ta có 7−1= 15 o Áp dụng công thức giải mã ta được:  dK(5) = 7−1 (5-7) mod 26 = (-30) mod 26 = (-30+ 2×26) mod 26 = 22 →W  dK(1) = 7−1 (1-7) mod 26 = (-90) mod 26 = (-90 +4×26) mod 26 = 14 → O  dK(22) = 7−1 (22-7) mod 26 = 225 mod 26 = 17 → R  dK(6) = 7−1 (6-7) mod 26 = (-15) mod 26 = (-15+1×26) mod 26 = 11→ L  dK(2) = 7−1 (2-5) mod 26 = (-75) mod 26 = (-75 +3×26) mod 26 = → D  Thơng điệp giải mã là: WORLD 2.4 Tìm hiểu thám mã nói chung thám mã mật mã Affine nói riêng Thám mã (Cryptanalysis): trình khơi phục lại rõ khóa có mã tương ứng cho trước (khơng biết khóa quy tắc mã/dịch) gọi thám mã 2.4.1 Đặc trưng rõ : Ở ngôn ngữ, loại văn có đặc trưng riêng dựa quy luật tần số, quy luật trùng lắp, quy luật văn phong Muốn thám mã, đặc biệt mã truyền thống ta cần nắm đặc trưng a Tần số (Frequency): Tần số xuất ký tự, nhóm ký tự, từ hay vần… văn số lần xuất ký tự, nhóm ký tự, từ, vần văn cho Tần suất (hay gọi tần số tương đối – relative frequency) ký tự văn xác suất ký tự xuất so với ký tự khác Nó tính việc lấy số lần xuất ký tự văn chia cho độ dài văn b Sự trùng lặp: Sự trùng lặp quy luật ngơn ngữ tự nhiên Đó đặc trưng thứ hai ngôn ngữ thể văn thông báo (bản rõ) c Quy luật hành văn văn bản: Mỗi loại văn bản, văn hành thường có cấu trúc chung Đây điểm cần ý thực thám mã d Quy luật tình huống: Để chống lại việc thám mã đối phương, nhà mật mã phải thiết kế cách thức mã hóa cho thơng tin khóa và rõ không lộ rõ mã Tuy nhiên chứa đựng mâu thuẫn nội mà nhà mã thám dựa vào để khai thác, là: trình độ mật mã nước khác khác nhau, khóa mã khơng phải ln bảo vệ cẩn thận theo quy định e Tiêu chuẩn rõ: Tiêu chuẩn rõ loại văn thống kê thể quy luật tần số, quy luật trùng lặp loại văn 2.4.2 Thám mã luật mã truyền thống văn tiếng Việt a Các bước để tiến hành thám mã: Khi nhận số mã, nhà thám mã cần thực loạt bước nghiên cứu nhằm khơi phục rõ (hoặc khóa) từ mã nhận Ta tìm hiểu bước là:  Bước Phân loại mã  Bước Xác định mã pháp  Bước Thám mã Sau xác định mã pháp, ta chuyển qua bước thám mã với Một hai cơng đoạn sau: • Thám mã trực tiếp :Nếu mã pháp thuộc luật mã truyền thống ta thám mã trực tiếp thám mã thủ cơng hay tự động hóa lập trình máy tính • Xây dựng phương pháp thám mã (đối với hệ mã đại) - Phương pháp phân tích - Phương pháp dự đoán “Từ chừng” b Thám mã hệ mã cổ điển Giả thiết chung coi người thám mã biết hệ mật mã dùng Giả thiết gọi nguyên lý Kerekhoff Có nhiều kỹ thuật thám mã sử dụng tính chất thống kê ngơn ngữ Tức số ký tự có tần suất xuất cao số ký tự khác Tương tự, số cặp đôi, cặp ba số âm vần xuất nhiều cặp đôi, cặp ba, hay âm vần khác Tiếng Việt có tính chất giống Cơng việc tiến hành thám mã xây dựng tiêu chuẩn rõ c Xây dựng tiêu chuẩn rõ tiếng việt: Dựa vào gợi ý phần đặc trưng rõ ta xây dựng tiêu chuẩn rõ cho văn tiếng Việt o Bộ ký tự tiếng Việt 10 Với 29 ký tự bảng chữ tiếng Việt, số dấu nguyên âm tạo nên ký tự đặc trưng tiếng Việt, với số ký hiệu đặc biệt thường xuất văn tiếng Việt, khuôn khổ luận văn ta tiến hành thám mã văn biểu diễn ký tự chữ thường, ký tự cách trống hai dấu chấm câu dấu chấm dấu phảy Tổng cộng ta có 96 mã ký tự (93 mã chữ thường, ký tự cách trống hai dấu chấm câu chấm phảy) o Xây dựng bảng tần suất đơn, đơi móc xích tần suất âm vần chuẩn tiếng Việt * Tần suất đơn tần suất đơi móc xích Ta thống kê tần số đơn tần số đơi móc xích tiếng Việt dựa văn thu tạp chí Theo thống kê, ký tự: cách trống, n, h, c, t, i, g ký tự xuất nhiều văn tiếng Việt, 16 ký tự đặc thù tiếng Việt ỹ, ỵ ký tự f, j, w, z xuất hiện… 2.4.3 Hàm phù hợp fitness văn tiếng Việt Ta có hàm đo phù hợp R Spillman đưa thực văn tiếng Anh (với 26 ký tự chữ A Z):   (1  Fitness=  26 26    SF [ i ]  DF [i]  SDF [i, j ]  DDF [i,j]  /     i 1  i 1   Trong đó: SF = (SF[1], SF[2],…, SF[26]) bảng tần suất đơn tiếng Anh chuẩn (tức số đơn tiếng Anh chuẩn tính tỷ lệ phần tram) ´ bảng tần suất đôi móc xích tiếng Anh chuẩn SDF = ( SDF [ i , j ] )i , j=1,26 tính sau: SDF[i,j] = mi , j M Với m i , j tần số đơi móc xích (i,j) với i,j= 1,2,…26 Còn M tống dố đơi móc xích ´ ký hiệu DF = (DF[1], DF[2],…DF[26]) DDF = ( DDF [ i , j ] )i , j=1,26 tính tốn hoàn toàn tương tự SF SDF trên, có khác chínhc tính văn cụ (thường “bản rõ” có từ mã sau giải mã khoá đó) Với văn tiếng Việt quy định , hàm fitness điều chỉnh lại sau: 11   (1  Fitness=  96 96    SF [ i ]  DF [i]  SDF [i, j ]  DDF [i,j]  /     i 1  i 1   Các giá trị SF[i], DF[i], SDF[i,j] DDF[i,j] tính tốn tương tự với i,j= 1,2,3,…96 2.5 Thực hành thám mã hệ mã Affine văn tiếng Việt 2.5.1 Mã hóa giải mã o Mã hóa: EK(x) = (ax + b) mod N o Giải mã: DK(y) = a^(-1) (y - b) mod N o Với văn tiếng Việt ta có N = 96 2.5.2 Thám mã * Thám mã thủ cơng Ta dựa vào quy luật tần suất kết hợp với hàm mã hóa để tiến hành thám mã * Thám mã với trợ giúp máy tính Hệ mã Affine có tổng số khóa khơng nhiều hồn tồn xác định Vì ta thám mã cách thử tất khóa Ta có thuật toán sau: Dữ liệu vào: Bản mã Dữ liệu ra: Bản rõ tiếng Việt khóa (a, b) tương ứng Thuật toán: Bắt đầu a = 0; b = ; FitMax = 0; Vòng lặp Nếu (ƯSCLN(a, 96) == 1) Vịng lặp Giải mã mã với khóa (a, b); Tính độ phù hợp rõ vừa thu (Fitness); Nếu Fitness>FitMax Gán FitMax=Fitness; Cập nhật khóa (a, b); Tăng b lên Về đầu vòng lặp bb>0 Đặt r0 = a, r1 = b, chia r0 cho r1 số dư r2 Nếu r2 = dừng, r2 khác không, chia r1 cho r2 số dư r3, Vì dãy ri giảm thực nên sau hữu hạn bước ta số dư rm = r0 = q1 × r1 + r2, < r2 < r1; r1 = q2 × r2 + r3, < r3 < r2; ……………………… ; rm − = qm × rm + rm + 10 < rm + < rm rm = qm + × rm + Trong số dư cuối khác rm + = d Bài toán đặt tìm x, y cho 15 a × x + b × y = rm+ 1( = d) Để làm điều này, ta tìm x,y theo cơng thức truy hồi, nghĩa tìm xi yi cho: a × xi + b × yi = ri với i = 0,1, Ta có: a × + b × = a = r0 a × + b × = b = r1, Nghĩa là: x0 = 1, x1 = y0 = 0, y1 = (1) Tổng quát, giả sử có: o a × xi + b × yi = ri với i = 0,1,… o a × xi + + b × yi + = ri + với i = 0,1, Khi từ ri = qi + × ri + + ri + Suy ra: o ri – qi + × ri + = ri + o (a × xi+ b × yi) – qi + × (a × xi + + b × yi + 1) = ri + o a × (xi – qi + × xi + 1) + b × (yi – qi + × yi + 1) = ri + Từ đó, chọn: o xi + = xi – qi + × xi + (2) o yi + = yi – qi + × yi + (3) Khi i = m − ta có xm + ym + Các công thức (1), (2), (3) cơng thức truy hồi để tính x, y Câu 2: s,t có phải hay khơng? Thuật tốn Euclid giúp tìm nghiệm phương trình ax + by = d Từ tiếp tục đưa họ nghiệm phương trình ax + by = d Theo công thức: kb ka a(x0 + d )+ b(y0 −¿ d ) = a×x0 +by0 =c 16 Ví dụ: cho a= 4864 b= 2458 a 4864 3458 1406 646 114 76 38 b 3458 1406 646 114 76 38 q r 2 x 1406 642 114 76 38 y −¿2 −¿27 32 −¿91 −¿1 −¿7 38 −¿45 128 x1 x2 y1 y2 −¿2 −¿27 32 −¿91 1 −¿2 −¿27 32 −¿1 −¿7 38 −¿45 128 −¿1 −¿7 38 −¿45 a × x0 + b × y0 = gcd(a,b) ⇒ 4864 × 32 + 3458 × (−¿45) = 38 Vậy họ (x,y) : kb ka a(x0+ d )+b(y0 −¿ d )= d, thay vào: a (32+91k) + b (−¿45−¿128k) = 38 Thử k = ⇒ a (32+91) + b (−¿45−¿128) = 38 (Thỏa mãn) Thử k = ⇒ a (32+91.2) + b (−¿45−¿128.2) = 38 (Thỏa mãn) Câu 3: Chuyện xảy gcd(k,n) ≠ 1? Khi hàm affine khơng đơn ánh khơng đảm bảo tính tồn vẹn sau giải mã Chúng ta chứng minh sau:  Định nghĩa: Mã tuyến tính Affiinne (P,C,K,E,D) thỏa mãn: Cho P=C=Z26 giả sử P= {(a,b) ϵ Z26 x Z26 ; UCLN(a,26) = 1} 17 - Với k=(a,b)ϵ K, ta định nghĩa: Ek(x)=ax +b×mod26 Và Dk(y) =a−1 ( y −b ) mod 26, x,yϵ Z26 - Để việc giải mã thực được, yêu cầu cần thiết hàm Affine phải đơn ánh Nói cách khác, với yϵ Z26, ta muốn có đồng thức sau: ax+¿b≡y(mod26) - Vì y thay đổi Z26 nên y−¿b thay đổi Z26.Bởi vậy, ta cần nghiên cứu phương trình phương trình đồng dư: ax≡y(mod26) (yϵ Z26) Ta biết phương trình có nghiệm y UCLN(a,26)=1 Chứng minh: Trước tiên ta giả sử rằng, UCLN(a,26)=d>1 Khi đó, đồng dư thức ax≡0(mod26) có hai nghiệm phân biệt Z26 x=0 x=26/d Trong trường hợp này, E(x)=ax+¿b(mod26) hàm đớn ánh khơng thể hàm mã hóa hợp lệ Ví dụ UCLN(4,26)=2 nên 4x+7 khơng hàm mã hóa hợp lệ:x x+13 mã hóa thành giá trị xϵ Z26  Ta giả thiết UCLN(a,26)=1.Giả sử với x1 x2 thỏa mãn: ax1 ≡ ax2(mod26) Khi đó: a(x1-x2)≡ (mod26) Bởi 26| a(x1 -x2 ) | Khi a(x1-x2)≡0(mod26) Bây ta sử dụng tính chất phép chia sau: Nếu UCLN(a,b)=1 a|bc a | c Vì 26 | a(x1 −¿x2) UCLN(a,26)=1 nên ta có: 26 | (x1−¿x2) Tức x1≡x2 (mod26) Tới ta chứng minh, UCLN(a,26)=1 đồng dư thức dạng ax ≡y (mod26) có(nhiều nhất) nghiệm Z26 Do đó, ta cho x thay đổi Z26 ax mod 26 nhận 26 giá trị khác theo mudule 26 đồng dư thức ax≡y (mod26) có nghiệm y 18

Ngày đăng: 05/10/2023, 23:13

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

Tài liệu liên quan