Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 22 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
22
Dung lượng
208,65 KB
Nội dung
Chơng Vài ứng dụng vào lí thuyết mật mã Cho đến khoảng cuối năm 70, số học đợc xem ngành lí thuyết tuý toán học, hầu nh ứng dụng thực tế Quan niệm thay đổi hẳn sau số học đợc áp dụng để xây dựng hệ mật mã khoá công khai Các lí thuyết số học, đặc biệt số học thuật toán, tìm thấy ứng dụng trực tiếp vào thực tiễn Vì dành chơng trình bày điểm lí thuyết mật mã, để qua đó, độc giả thấy đợc vai trò quan trọng vấn đề xét đến lí thuyết số thuật toán, nh vấn đề độ phức tạp thuật toán phân tích số nguyên dơng thừa số, hay vấn đề kiểm tra nguyên tố Đ1 Mã Ceasar Có thể nói, mật mã có từ thời cổ đại Ngời ta cho rằng, ngời áp dụng mật mã cách có hệ thống để đảm bảo bí mật thông tin quân nhà quân thiên tài La Mã cổ đại, Julius Ceasar Sự phát triển xã hội dẫn đến việc ngày mật mã đợc dùng bí mật quân ngoại giao, mà dùng, chủ yếu dùng bí mật kinh tế, thơng mại Vì xuất đòi hỏi hệ mật mã đại, khác nguyên tắc so với mật mã thờng dùng trớc Khác với hoạt động quân ngoại giao, hoạt động kinh doanh, số lợng đơn vị phải trao đổi thông tin thờng lớn Thậm chí, ngời cha quen biết có nhu cầu trao đổi thông tin mật với Bởi thế, hệ thống mật mã xây dựng theo nguyên tắc cũ khó thích hợp: hệ mã đó, biết khoá lập mã, ta dễ dàng tìm khoá giải mã Hiển nhiên, muốn gửi thông báo mật cho đối tợng đó, ta cần phải biết khoá lập mã họ, thế, ngời dùng hệ mã biết hết bí mật Khi bí mật có nhiều ngời biết không bí mật Các hệ thống mật mã đại, mật mã khoá công khai, khắc phục đợc nhợc điểm đó: ngời tham gia hệ thống cần giữ bí mật khoá giải mã mình, khoá lập mã đợc thông báo công khai Việc biết khoá lập mã không cho phép tìm khoá giả mã thời gian chấp nhận đợc, sử dụng máy tính đại Những mật mã khoá công khai tìm thấy mật mã dùng hàm số học Có đièu thú vị là, nói cho cùng, hệ mật mã đại cải tiến mật mã Ceasar! Vì bắt đầu việc trình bày mật mã Ceasar Trớc hết cần thống số danh từ 97 Văn tức thông báo cần chuyển, đợc viết ngôn ngữ thông thờng đây, ta xem văn đợc viết tiếng Việt Việc chuyển thông báo thành dạng mật mã đợc gọi mã hóa Bản mã hoá văn đợc gọi văn mật Giải mã tức chuyển văn mật thành văn ban đầu Ceasar chuyển thông báo mật cách sau Trớc tiên, lập tơng ứng chữ với số Nhờ bảng tơng ứng đó, ta chuyển văn thành dạng chữ số Sau ta cộng thêm vào chữ số nhận đợc Lại nhờ bảng tơng ứng chữ số, ta biến bảng chữ số dạng chữ viết Nh ta nhận đợc văn mật cần chuyển Đây trình mã hoá Khi nhận đợc văn mật, ta giải mã cách biến thành dạng chữ số nhờ bảng tơng ứng chữ số, sau trừ chữ số lại chuyển dạng chữ để lại có văn ban đầu Chú ý phép cộng trừ đa ta vợt khỏi giới hạn bảng tơng ứng, ta thay số thặng d dơng bé modulo số phần tử bảng tơng ứng chữ số Sau ta xét ví dụ cụ thể Trớc hết ta lập tơng ứng chữ với số theo bảng sau: a ă â b c d đ e ê g h 10 11 i k l m n o ô p q 12 13 14 15 16 17 18 19 20 21 r s t u v x y 22 23 24 25 26 27 28 29 Bảng Dĩ nhiên ta thêm số để dấu, nhng để đơn giản , ta tạm thời viết văn không dấu Nh mã Ceasar đợc thành lập theo công thức sau: C P+3(mod 29) (6.1) P chữ số văn bản, C chữ số tơng ứng văn mật Chẳng hạn ta muốn mã hoá thông báo sau đây: 98 LY THUYÊT MÂT MA KHÔNG CO GI KHO Trớc hết nhằm nâng cao tính bảo mật, ta tách thông báo thành nhóm chữ cái, để tránh việc số từ thông báo dễ bị phát vào số chữ Nh thông báo cần mã hoá là: LYTHU YÊTMÂ TMAKH ÔNGCO GIKHO Nhờ bảng 1, ta chuyển thông báo thành dạng chữ số: 14 29 24 11 25 29 24 15 24 15 13 11 18 16 10 18 10 12 13 11 18 Ap dung công thức (6.1), bảng chữ số đợc chuyển thành: 17 27 14 28 11 27 18 27 18 16 14 21 19 13 21 13 15 16 14 21 Để có văn mật, ta cần chuyển lại thành dạng chữ theo Bảng 1: OÂVLU ÂHVÔÂ VÔBNL QƠKEQ KMNLQ Số công thức (6.1) đợc gọi khoá mã Ceasar, đợc dùng để mã hoá nh giải mã Ta lập hệ mật mã cách thay số công thức (6.1) số k tuỳ ý khác 29: C P+k (mod 29) (6.2) Trong trờng hợp này, khoá mã k Việc mã hoá giải mã đợc tiến hành hoàn toàn tơng tự nh Ta lập mã tổng quát chút cách thay công thức (6.2) công thức sau đây: C aP+b(mod 29), a, b số nguyên, (a, 29)=1 Những mã nh đợc gọi mã biến đổi aphin Việc giải mã đợc tiến hành cách giải phơng trình đồng d (6.2), biết c, a, b Phân tích sau cho thấy tính bảo mật mã Ceasar không cao Khi bắt đợc văn mật, ngời ta dựa vào tần suất xuất chữ để đoán khoá mã Chẳng hạn chữ a nói chung xuất nhiều văn chữ có mặt nhiều văn mật có nhiều khả chữ a, từ đoán khoá Hơn nữa, có 29 cách khác để chọn khoá cho loại mã nói trên, nên để dàng tìm khoá mã, áp dụng máy tính Đối với mã biến đổi aphin, cần dựa vào tần suất xuất từ để tìm hai chữ tơng ứng với chữ văn mật, ta tìm a, b cách giải hệ hai phơng trình đồng d Ngoài ra, việc giải hệ mã biến đổi aphin dễ dàng máy tính Nh vậy, với yêu cầu bảo mật cao hơn, ngời ta phải dùng hệ mật mã phức tạp Sau vài hệ mã thờng dùng, từ đơn giản đến phức tạp 99 Đ2 Mã khối Mã khối xuất nhằm chống lại việc sử dụng tần suất xuất chữ văn để dò khoá giải mã Khác với hệ mã trình bày mục trên, ta không mã hoá chữ văn bản, mà mã hoá khối chữ Trớc tiên ta xét trờng hợp mã khối chữ Để dễ hiểu ta xét ví dụ sau Giả sử thông báo cần mã hoá KHÔNG CO ĐIÊU BI MÂT NAO GIƯ ĐƯƠC LÂU Trớc hết ta tách thông báo thành khối hai chữ: KH ÔN GC OĐ ÊU BI MÂ TN AO GI ƯĐ ƯƠ CL ÂU Sau chữ đợc chuyển thành chữ số tơng ứng: 13 11 18 15 10 17 25 25 12 16 24 15 17 1012 26 19 14 Với mã khối hai chữ, ta chọn ma trận cấp hai làm khoá mã Chẳng hạn ma trận 23 11 A= 12 Khi khối hai chữ số P1P2 văn đợc chuyển thành khối hai chữ số C1C2 văn mật theo công thức sau đây: C1 23P1+11P2(mod 29) C2 9P1+12P2(mod 29) (6.3) Nh thông báo đợc chuyển thành: 14 17 28 23 24 5 18 21 21 19 10 14 24 27 10 25 Trở lại chữ tơng ứng, ta đợc văn mật: LO XS TC BC ÔB QD TD QƠ ĐG LI TV EG UE Để giải mã, ta cần giải hệ phơng trình đồng d (6.3) để tìm P1,P2 Điều thực đợc nhờ định lí sau đây: Định lí 6.1 Cho hệ phơng trình đồng d ax+by r(mod m) cx+dy s(mod m) Đặt =ad-bc (mod m) Khi đó, ( ,m)=1 hệ phơng trình xét tồn nghiệm modulo m, cho công thức sau: x -1(dr-bs) (mod m), y -1(as-cr) (mod m), 100 -1 nghịch đảo modulo m Định lí đợc chứng minh hoàn toàn tơng tự nh đại số tuyến tính (chỉ cần thay điêù kiện ( ,m)=1 điều kiện 0) Trong ví dụ đây, 3(mod 29), -1 10(mod 29) Nh vậy, có khối C1C2 văn mật biết mã khoá ma trận A, ta tìm đợc khối chữ tơng ứng văn P1P2 theo công thức sau: P1=10(12C1-11C2) 4C1+6C2(mod 29) P2=10(23C2-9C1) 26C1+27C2(mod 29) Tóm lại, việc mã hoá giải mã đợc tiến hành nhờ công thức: C1 23 11 P1 P1 C1 = ; = C2 12 P2 P2 26 27 C2 Nh vậy, việc sử dụng mã khối nâng cao nhiều tính bảo mật Tuy vậy, khoá mã bị khám phá nhờ việc nghiên cứu tần suất xuất khối chữ Chẳng hạn ta dùng mã khối hai chữ, có thảy 292=641 khối tiếng Việt, nh khả khám phá khoá mã nhờ máy tính đại Trong trờng hợp ta sử dụng mã khối với khối nhiều chữ cái, việc tìm khoá tần suất khối chữ thực tế không sử dụng đợc: Chẳng hạn dùng mã khối 10 chữ cái, số khối chữ 2910, vợt khả thăm dò tần suất xuất khối chữ ngôn ngữ Các mã khối n chữ đợc lập giải hoàn toàn tơng tự nh trên, ma trận C,P ma trận n cột, A ma trận vuông cấp n Ma trận nghịch đảo A tồn định thức A nguyên tố với 29, ma trận P đợc tính quy tắc Kramer nh đại số tuyến tính (chỉ cần thay dấu = (mod 29)) Sau ta trình bày loại hệ mã mới, mặt có tính bảo mật cao, Mặt khác sở cho hệ mã hoàn toàn mới: hệ mã khoá công khai Đ3 Mã mũ Hệ mã đợc Pohlig Hellman đa năm 1978 Giả sử p số nguyên tố lẻ, giả sử khoá lập mã e số nguyên dơng cho (e,p-1)=1 Cũng nh trớc đây, để mã hoá thông báo, trớc tiên ta chuyển chữ thành dạng chữ số tơng ứng (thêm số vào trớc số có chữ số) Ta dùng bảng sau đây: a ă â b c d đ e ê g h 01 02 03 04 05 06 07 08 09 10 11 i k l m n o ô p q 12 13 14 15 16 17 18 19 20 21 101 r s t u v x y 22 23 24 25 26 27 28 29 Sau ta nhóm số nhận đợc thành nhóm 2m chữ số theo nguyên tắc sau: 2m số nguyên chẵn lớn cho số tơng ứng với m chữ (xét nh số nguyên có 2m chữ số) nhỏ p Để dễ hiểu, ta giả sử p số nguyên tố khoảng 2929 subs ({1=a,2=aw,3=aa,4=b,5=c,6=d,7=dd,8=e,9=ee,10=g,11=h,12=i ,13=k,14=l,15=m,16=n,17=o,18=oo,19=ow,20=p,21=q,22=r,23= s,24=t,25=u,26=uw,27=v,28=x,0=y}, [seq (msolve ({xa1*L[2*k-1]-a2*L[2*k],y-a3*L[2*k-1]-a4*L[2*k]},29),k=1 N)]); Sau dấu (;) ấn phím Enter hình lên chữ tơng ứng văn mật Ta viết lại theo thứ tự thích hợp đợc văn mật cần chuyển Nh vậy, đơn giản, để mã hoá văn ta cần thay chữ văn vào vị trí P (với ý chữ phải tách biệt dấu (,)) dòng lệnh thứ nhất, thứ hai thay số a1a2,a3,a4 khoá lập mã vào dòng lệnh thứ t Để dễ hiểu ta theo dõi thí dụ sau đây: Chú ý: Đối với hệ mã ta cho tơng ứng chữ y với số Thí dụ 1: Mã hoá câu CHUC BAN THANH CÔNG mã khối với khoá lập mã 23 11 12 Ta thực nh sau: [>nops([c,h,u,c,b,a,n,t,h,a,n,h,c,oo,n,g]); 16 16 số chẵn ta thực tiếp dòng lệnh thứ hai mà không cần phải thêm chữ vào [>L:= subs({a=1,aw=2,aa=3,b=4,c=5,d=6,dd=7,e=8,ee=9,g=10,h=11, i=12,k=13,l=14,m=15,n=16,o=17,oo=18,ow=19,p=20,q=21,r=22 ,s=23,t=24,u=25,uw=26,v=27,x=28,y=0},[c,h,u,c,b,a,n,t,h, a,n,h,c,oo,n,g]): [> N:=nops(L)/2: [>subs ({1=a,2=aw,3=aa,4=b,5=c,6=d,7=dd,8=e,9=ee,10=g,11=h,12=i ,13=k,14=l,15=m,16=n,17=o,18=oo,19=ow,20=p,21=q,22=r,23= s,24=t,25=u,26=uw,27=v,28=x,0=y}, [seq (msolve ({x23*L[2*k-1]-11*L[2*k],y-9*L[2*k-1]12*L[2*k]},29),k=1 N)]); [{y = aa, x = b},{y = t, x = q},{y = ow, x = n},{y = uw, x = s},{y = t, x = aa},{x = u, y = m},{y = y, x = s},{x = l, y = aa}] 112 Vậy ta có văn mật tơng ứng BÂ QT NƠ SƯ ÂT UM SY LÂ Thí dụ 2: Mã hoá câu LY THUYÊT MÂT MA KHÔNG CO GI KHO mã khối với khoá lập mã 17 11 Ta thực nh sau: [>nops([l,y,t,h,u,y,ee,t,m,aa,t,m,a,k,h,oo,n,g,c,o,g,i,k ,h,o]); 25 25 số lẻ ta phải thêm chữ x vào văn P [>L:=subs({a=1,aw=2,aa=3,b=4,c=5,d=6,dd=7,e=8,ee=9,g=10, h=11,i=12,k=13,l=14,m=15,n=16,o=17,oo=18,ow=19,p=20,q=21 ,r=22,s=23,t=24,u=25,uw=26,v=27,x=28,y=0},[l,y,t,h,u,y,e e,t,m,aa,t,m,a,k,h,oo,n,g,c,o,g,i,k,h,o,x]): [> N:=nops(L)/2: [>subs({1=a,2=aw,3=aa,4=b,5=c,6=d,7=dd,8=e,9=ee,10=g,11= h,12=i,13=k,14=l,15=m,16=n,17=o,18=oo,19=ow,20=p,21=q,22 =r,23=s,24=t,25=u,26=uw,27=v,28=x,0=y},[seq (msolve ({x8*L[2*k]-4*L[2*k-1],y-17*L[2*k]-11*L[2*k1]},29),k=1 N)]); [{x = v, y = ee}, {x = g, y = n}, {x = k, y = l}, {x = u, y = l},{x = uw, y = k}, {x = k, y = uw}, {x = q, y = y}, {x = l, y = q},{y = v, x = x}, {x = h, y = u}, {x = p, y = t}, {y = h, x = t},{x = aw, y = u}] Vậy ta có văn mật tơng ứng VÊ GN KL UL ƯK KƯ QY LQ XV HU PT TH ĂU Giải mã: Giả sử ta nhận đợc văn mật C, cần giải mã C với khoá ma trận a1 a A= ta thực trình tự bớc nh sau: a3 a4 Bớc 1: Lập tơng ứng chữ văn mật với số dòng lệnh nh trình lập mã [>L:= subs({a=1,aw=2,aa=3,b=4,c=5,d=6,dd=7,e=8,ee=9,g=10,h=11, i=12,k=13,l=14,m=15,n=16,o=17,oo=18,ow=19,p=20,q=21,r=22 ,s=23,t=24,u=25,uw=26,v=27,x=28,y=0},[C]): Sau dấu (:) ấn phím Enter hình xuất dấu nhắc lệnh ([>), ta thực tiếp bớc Bớc 2: Thực dòng lệnh: [>N:=nops(L)/2: 113 (Lệnh nops(L) dùng để tính số phần tử L ) Sau dấu (:) ấn phím Enter hình xuất dấu nhắc lệnh ([>), ta thực tiếp bớc Bớc 3: Thực dòng lệnh: [>subs ({1=a,2=aw,3=aa,4=b,5=c,6=d,7=dd,8=e,9=ee,10=g,11=h,12=i ,13=k,14=l,15=m,16=n,17=o,18=oo,19=ow,20=p,21=q,22=r,23= s,24=t,25=u,26=uw,27=v,28=x,0=y}, [seq (msolve ({L[2*k1]-a1*x-a2*y,L[2*k]-a3*x-a4*y},29),k=1 N)]); Sau dấu (;) ấn phím Enter hình lên chữ tơng ứng văn Ta viết lại theo thứ tự thích hợp đợc văn ban đầu Nh vậy, đơn giản, để giải mã văn mật C biết khoá ma trận A ta cần thay chữ văn mật vào vị trí C (với ý chữ phải tách biệt dấu (,)) dòng lệnh thứ thay số a1a2,a3,a4 khoá lập mã vào dòng lệnh Để dễ hiểu ta theo dõi thí dụ sau đây: Thí dụ: Giải mã văn mật BÂ QT NƠ SƯ ÂT UM SY LÂ mã khối với khoá 23 11 lập mã 12 Ta thực nh sau: [>L:=subs({a=1,aw=2,aa=3,b=4,c=5,d=6,dd=7,e=8,ee=9,g=10, h=11,i=12,k=13,l=14,m=15,n=16,o=17,oo=18,ow=19,p=20,q=21 ,r=22,s=23,t=24,u=25,uw=26,v=27,x=28,y=0},[b,aa,q,t,n,ow ,s,uw,aa,t,u,m,s,y,l,aa]): [> N:=nops(L)/2: [>subs ({1=a,2=aw,3=aa,4=b,5=c,6=d,7=dd,8=e,9=ee,10=g,11=h,12=i ,13=k,14=l,15=m,16=n,17=o,18=oo,19=ow,20=p,21=q,22=r,23= s,24=t,25=u,26=uw,27=v,28=x,0=y}, [seq (msolve ({L[2*k1]-23*x-11*y,L[2*k]-9*x-12*y},29),k=1 N)]); [{y = h, x = c}, {y = c, x = u}, {y = a, x = b}, {y = t, x = n},{x = h, y = a}, {y = h, x = n}, {y = oo, x = c}, {y = g, x = n}] Nh ta có văn CHUC BAN THANH CÔNG II Thực hành lập mã giải mã mũ Lập mã: Đối với hệ mã mũ, ta ứng chữ văn với số, chuyển số thành hệ thống số khác thông qua khoá lập mã, sau lại dùng bảng tơng ứng số vừa tìm đợc ta đợc văn mật cần chuyển Giả sử p số nguyên tố lẻ (để đảm bảo tính an toàn số p đợc chọn phải số nguyên tố tơng đối 114 lớn, chẳng hạn lớn 2929), e khoá lập mã (trong (e,p-1)=1) Để chuyển văn cho đối tợng có khoá lập mã (e,p) tiến hành lập mã theo bớc sau: Bớc 1: Tìm m (là số nguyên lớn cho số tơng ứng với m chữ nhỏ p) Ta thực dòng lệnh sau: [>Lp:=length(p); Sau dấu (;) ấn phím Enter hình lên kết Nếu kết số lẻ lấy m =(Lp-1)/2 Nếu kết số chẵn xét p=2929 29 số chữ số p số chữ số p, ta thực tiếp dòng lệnh: [>p-p; Sau dấu (;) ấn phím Enter hình lên kết Nếu kết số dơng lấy m=Lp/2 Nếu kết số âm lấy m=(Lp-2)/2 Bớc 2: Đặt tơng ứng chữ văn P với số, ta dùng dòng lệnh sau: [>subs({a=1,aw=2,aa=3,b=4,c=5,d=6,dd=7,e=8,ee=9,g=10,h=1 1,i=12,k=13,l=14,m=15,n=16,o=17,oo=18,ow=19,p=20,q=21,r= 22,s=23,t=24,u=25,uw=26,v=27,x=28,y=29},[P]); Sau dấu (:) ấn phím Enter hình kết Bớc 3: Chia số tơng ứng tìm đợc thành nhóm m số, số 1,2,3,4,5,6,7,8,9 thay 01,02,03,04,05,06,07,08,09 Nếu nhóm cuối cha đủ m số ta thêm vào số 28 (tơng ứng với chữ x) Công việc ta thực tay đơn giản Rồi tìm chữ tơng ứng văn mật Ta thực dòng lệnh: [>L:=[nhóm thứ nhất, nhóm thứ hai, ]:seq (msolve (xL[k]&^e,p),k=1 nops(L)); Sau dấu (:) ấn phím Enter hình kết Nh vậy, đơn giản, để mã hoá văn ta cần thay chữ văn vào vị trí P (với ý chữ phải tách biệt dấu (,)) dòng lệnh bớc 2, thay số p,e khoá lập mã vào dòng lệnh bớc 1, bớc Để dễ hiểu ta theo dõi thí dụ sau đây: Thí dụ: Với khoá lập mã p=2938,e=31 Mã hoá thông báo sau: ĐI HA NÔI NGAY Ta thực nh sau: [>length(2839); 4 số chẵn ta phải thực tiếp lệnh thử với p=2929 [> 2939-2929; 115 10 10 số dơng lấy m=4/2=2 [>subs({a=1,aw=2,aa=3,b=4,c=5,d=6,dd=7,e=8,ee=9,g=10,h=1 1,i=12,k=13,l=14,m=15,n=16,o=17,oo=18,ow=19,p=20,q=21,r= 22,s=23,t=24,u=25,uw=26,v=27,x=28,y=29},[dd,i,h,a,n,oo,i ,n,g,a,y]); [7, 12, 11, 1, 16, 18, 12, 16, 10, 1, 29] [> L:=[0712,1101,1618,1216,1001,2928]:seq(msolve (L[k]&^31-x,2939),k=1 nops(L)); {x = 898}, {x = 1853}, {x = 1003}, {x = 2156}, {x = 1786}, {x = 2614} Vậy ta có văn mật 898 1853 1003 2156 1786 2614 Giải mã: Khi nhận đợc văn mật C gửi cho mình, ta dùng khoá giải mã (d,n) để tìm nội dung nhận đợc Ta thực dòng lệnh nh sau: Bớc 1: Tìm lại khối P (tơng ứng số) văn bản, ta dùng dòng lệnh: [>L:=[C]: seq (msolve (x-L[k]&^d,p),k=1 nops(L)); Chú ý thay C vào dòng lệnh khối phải cách (,) Sau dấu (;) ấn phím Enter hình lên khối số tơng ứng P Bớc 2: Để nhận đợc P ta tách khối P nhận đợc thành nhóm có hai số tơng ứng nhóm với chữ Ta thực nh sau: [>P:=[P]:subs({1=a,2=aw,3=aa,4=b,5=c,6=d,7=dd,8=e,9=ee, 10=g,11=h,12=i,13=k,14=l,15=m,16=n,17=o,18=oo,19=ow,20=p ,21=q,22=r,23=s,24=t,25=u,26=uw,27=v,28=x,29=y},[seq((P[ i] mod 29),i=1 nops(P))]); Ta xét thí dụ sau: Thí dụ: Hãy giải mã văn mật 898 1853 1003 2156 1786 2614 biết khoá giải mã (853,2939) Ta thực nh sau: [>L:=[898,1853,1003,2156,1786,2614]:seq(msolve(xL[k]&^853,2939),k=1 nops(L)); {x = 712}, {x = 1101}, {x = 1618}, {x = 1216}, {x = 1001}, {x = 2928} [>P:= [07,12,11,1,16,18,12,16,10,1,29,28]:subs({1=a,2=aw,3=aa, 4=b,5=c,6=d,7=dd,8=e,9=ee,10=g,11=h,12=i,13=k,14=l,15=m, 116 16=n,17=o,18=oo,19=ow,20=p,21=q,22=r,23=s,24=t,25=u,26=u w,27=v,28=x,0=y},[seq((P[i] mod 29),i=1 nops(P))]); [dd, i, h, a, n, oo, i, n, g, a, y, x] Vậy văn nhận đợc ĐI HA NÔI NGAY II Thực hành lập mã giải mã RSA Quá trình đợc thực tơng tự hệ mã mũ, ta cần thêm vào chữ kí Đối với hệ mã này, khoá lập mã (e,n) n tích hai số nguyên tố lớn, khoá giải mã (e,d) Ta xét thí dụ sau đây: Lập mã: Thí dụ : Linh có khoá lập mã (19,221), Lan có khoá lập mã (13,1457) Linh muốn gửi cho Lan lời nhắn sau: Anh muốn gặp em, Linh Anh ta thực nh sau: Bớc 1: ứng chữ lời nhắn với số, thực dòng lệnh: [>subs({a=1,aw=2,aa=3,b=4,c=5,d=6,dd=7,e=8,ee=9,g=10,h=1 1,i=12,k=13,l=14,m=15,n=16,o=17,oo=18,ow=19,p=20,q=21,r= 22,s=23,t=24,u=25,uw=26,v=27,x=28,y=29},[a,n,h,m,u,oo,n, g,aw,p,e,m,l,i,n,h]); Sau ấn phím Enter ta nhận đợc kết quả: [1, 16, 11, 15, 25, 18, 16, 10, 2, 20, 8, 15, 14, 12, 16, 11] Bớc 2: Linh kí tên mình, trình Linh dùng đến khoá giải mã (91,221) [>L:=[14,12,16,11]:seq(msolve(L[k]&^91x,221),k=1 nops(L)); {x = 27}, {x = 142}, {x = 16}, {x = 80} Bớc 3: Thực mã hoá số nhận đợc, kể chữ kí Linh [>L:=[1,16,11,15,25,18,16,10,2,20,8,15,14,12,16,11,27,14 2,16,80]:seq(msolve (L[k]&^13-x,1457),k=1 nops(L)); {x = 1}, {x = 237},{x = 1287}, {x = = 207},{x = = 252}, {x = 207}, {x = 1360}, {x = 862}, {x 252}, {x = 226}, {x = 907}, {x = 1002}, {x = 1360}, {x = 679}, {x = 1040}, {x = 252}, {x 1207}, {x = 330}, {x = 252}, {x = 919} Vậy Linh gửi cho Lan lời nhắn 252 207 252 226 907 1002 1287 1360 679 1207 330 252 919 117 1360 862 1040 252 237 207 Giải mã: Thí dụ : Khi nhận đợc lời nhắn Lan giải mã theo bớc sau: (khoá giải mã Lan (637,1457): [>L:=[1,252,207,1360,862,237,252,226,907,1002,1287,1360, 679,1040, 252, 207,1207,330,252,919]:seq(msolve (L[k]&^637-x,1457),k=1 nops(L)); {x = 1}, {x = 16}, {x = 11}, {x = 15}, {x = 25}, {x = 18}, {x = 16},{x = 10}, {x = 2}, {x = 20}, {x = 8}, {x = 15}, {x = 14},{x = 12}, {x = 16}, {x = 11}, {x = 27}, {x = 142}, {x = 16},{x = 80} [>P:=[1,16,11,15,25,18,16,10,2,20,8,15,14,12,16,11,27,14 2,16,80]:subs({1=a,2=aw,3=aa,4=b,5=c,6=d,7=dd,8=e,9=ee,1 0=g,11=h,12=i,13=k,14=l,15=m,16=n,17=o,18=oo,19=ow,20=p, 21=q,22=r,23=s,24=t,25=u,26=uw,27=v,28=x,0=y},[seq((P[i] mod 29),i=1 nops(P))]); [a, n, h, m, u, oo, n, g, aw, p, e, m, l, i, n, h, v, uw, n, r] Lan giải đợc lời nhắn Anh muốn gặp em Linh v n r, nh ngời nhắn Linh chữ cuối chữ kí Linh Để kiểm tra xem có thật hay không, Lan thực tiếp dòng lệnh: [>L:=[27,142,16,80]:seq(msolve(L[k]&^19x,221),k=1 nops(L)); {x = 14}, {x = 12}, {x = 16}, {x = 11} [>P:=[14,12,16,11]:subs({1=a,2=aw,3=aa,4=b,5=c,6=d,7=dd, 8=e,9=ee,10=g,11=h,12=i,13=k,14=l,15=m,16=n,17=o,18=oo,1 9=ow,20=p,21=q,22=r,23=s,24=t,25=u,26=uw,27=v,28=x,0=y}, [seq((P[i] mod 29),i=1 nops(P))]); [l, i, n, h] Vậy ngời gửi Linh 118 [...]... chữ trong văn bản Bản đã mã hoá của văn bản gọi là văn bản mật, C chữ số tơng ứng trong văn bản mật Giải mã tức là chuyển văn bản mật C thành văn bản ban đầu P Do trong Maple không có chế độ tiếng Việt, nên ta dùng kí hiệu aw, aa, dd, ee, oo, ow, uw thay cho các chữ ă, â, đ, ê, ô, ơ, tơng ứng II 1 Thực hành lập mã và giải mã khối 1 Lập mã: Đối với hệ mã khối và mã mũ, ta ứng các chữ trong văn bản... chuyên về lí thuyết mật mã Trong chơng tiếp theo, ta sẽ quay về với lí thuyết mật mã khoá công khai khi nghiên cứu các đờng cong elliptic Cùng với sự phát triển của mật mã khoá công khai, có lẽ sẽ đến lúc bên cạnh địa chỉ và điện thoại của mỗi cơ quan, công ty, còn ghi thêm khoá lập mã của họ! 108 Bài tập và tính toán thực hành chơng 6 I Bài tập 6.1 Biết rằng thông báo sau đây đã đợc mã hoá bằng mã Ceasar... sử A, B là các ma trận vuông cấp hai Quá trình mã hoá đợc thực hiện bởi công thức C AP+B(mod 29) Hãy viết công thức giả mã và cho một ví dụ cụ thể 6.5 Mã hoá câu sau đây bằng mã mũ với p=3137, e=31: ĐÊN NƠI AN TOAN 6.6 Hãy giải mã văn bản mật sau đây, nếu biết nó đợc mã hoá bằng mã mũ với p=3137, e=31: 0206 0248 1345 2200 6.7 Chứng minh rằng, khi lập mã RSA, nếu xẩy ra trờng hợp có một từ P nào đó... bản nhận đợc là ĐI HA NÔI NGAY II 3 Thực hành lập mã và giải mã RSA Quá trình này đợc thực hiện tơng tự đối với hệ mã mũ, ta chỉ cần thêm vào chữ kí của mình Đối với hệ mã này, khoá lập mã là (e,n) trong đó n là tích của hai số nguyên tố lớn, khoá giải mã là (e,d) Ta xét thí dụ sau đây: 1 Lập mã: Thí dụ : Linh có khoá lập mã là (19,221), Lan có khoá lập mã là (13,1457) Linh muốn gửi cho Lan lời nhắn sau:... hành lập mã và giải mã mũ 1 Lập mã: Đối với hệ mã mũ, ta ứng các chữ trong văn bản với các số, chuyển các số đó thành hệ thống số khác thông qua khoá lập mã, sau đó lại dùng bảng tơng ứng các số vừa tìm đợc ta đợc văn bản mật cần chuyển Giả sử p là một số nguyên tố lẻ (để đảm bảo tính an toàn số p đợc chọn ở đây phải là số nguyên tố tơng đối 114 lớn, chẳng hạn lớn hơn 2929), e là khoá lập mã (trong... khoá lập mã, sau đó lại dùng bảng tơng ứng các số vừa tìm đợc ta đợc văn bản mật cần chuyển a1 a 2 Giả sử ta cần mã hoá văn bản P bằng mã khối 2 chữ với khoá lập mã là a3 a4 Khoá lập mã đợc dùng ở đây là ma trận cấp 2 ì 2, nên nếu số các chữ trong văn bản P là số chẵn thì việc mã hoá xảy ra bình thờng nhng nếu số các chữ trong văn bản P là số lẻ thì chữ cuối cùng của văn bản P sẽ không đợc mã hoá... y = t}, {y = h, x = t},{x = aw, y = u}] Vậy ta có văn bản mật tơng ứng là VÊ GN KL UL ƯK KƯ QY LQ XV HU PT TH ĂU 2 Giải mã: Giả sử ta nhận đợc văn bản mật C, cần giải mã C với khoá ma trận a1 a 2 A= ta thực hiện trình tự từng bớc nh sau: a3 a4 Bớc 1: Lập tơng ứng mỗi chữ cái trong văn bản mật với một số bằng dòng lệnh nh quá trình lập mã [>L:= subs({a=1,aw=2,aa=3,b=4,c=5,d=6,dd=7,e=8,ee=9,g=10,h=11,... tơng ứng của văn bản Ta viết lại theo thứ tự thích hợp sẽ đợc văn bản ban đầu Nh vậy, rất đơn giản, để giải mã văn bản mật C khi biết khoá ma trận A ta chỉ cần thay các chữ cái trong văn bản mật vào vị trí của C (với chú ý các chữ cái phải tách biệt nhau bởi dấu (,)) trong dòng lệnh thứ nhất và thay các số a1a2,a3,a4 của khoá lập mã vào dòng lệnh Để dễ hiểu ta theo dõi thí dụ sau đây: Thí dụ: Giải mã. .. tích mã có thể phân tích đợc n ra thừa số nguyên tố, và do đó, tìm đợc khoá giải mã 6.8 Chứng minh rằng, nếu các số q, p đợc chọn đủ lớn thì trờng hợp rủi ro nói trong bài tập 6.7 xảy ra với xác suất rất nhỏ 6.9 Dùng khoá với n=3233, e=17 để mã hoá câu 109 CHUC MƯNG NĂM MƠI 110 II Thực hành tính toán trên máy Để làm giảm nhẹ các thao tác trong việc lập mã và giải mã văn bản đối với mã khối và mã mũ... tơng ứng của văn bản mật Ta viết lại theo thứ tự thích hợp sẽ đợc văn bản mật cần chuyển Nh vậy, rất đơn giản, để mã hoá văn bản nào đó ta chỉ cần thay các chữ cái trong văn bản vào vị trí của P (với chú ý các chữ cái phải tách biệt nhau bởi dấu (,)) trong dòng lệnh thứ nhất, thứ hai và thay các số a1a2,a3,a4 của khoá lập mã vào dòng lệnh thứ t Để dễ hiểu ta theo dõi thí dụ sau đây: Chú ý: Đối với hệ mã