Tìm hiểu xây dựng chương trình mã hoá và bảo mật thông tin hệ mã chuẩn DES

96 687 2
Tìm hiểu xây dựng chương trình mã hoá và bảo mật thông tin hệ mã chuẩn DES

Đ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

§å ¸n tèt nghiƯp GVHD: Th.s Lª V¨n Minh TRƯỜNG ĐẠI HỌC VINH KHOA CƠNG NGHỆ THƠNG TIN  ĐỒ ÁN TỐT NGHIỆP Đề Tài: TÌM HIỂU XÂY DỰNG CHƯƠNG TRÌNH Mà HĨA VÀ BẢO MẬT THƠNG TIN HỆ Mà CHUẨN DES GVHD Th.s: Lê Văn Minh SVTH: Dương Khắc Linh Vinh, ngày 15/05/2009 Sinh viªn thùc hiƯn: D¬ng Kh¾c Linh §å ¸n tèt nghiƯp GVHD: Th.s Lª V¨n Minh LêI C¶M ¥ N Trong qu¸ tr×nh thùc hiƯn ®å ¸n tèt nghiƯp, t«i lu«n nhËn ®ỵc sù ®éng viªn vµ gióp ®ì cđa q thÇy c« khoa c«ng nghƯ th«ng tin trêng ®¹i häc vinh, gia ®×nh, b¹n bÌ vµ nh÷ng ngêi th©n §Ỉc biƯt, t«i xin c¶m ¬n ThÇy gi¸o Lª V¨n Minh ®· tËn t×nh híng dÉn vµ gióp ®ì t«i st thêi gian t«i thùc hiƯn ®å ¸n tèt nghiƯp nµy Trong qu¸ tr×nh thùc hiƯn ®å ¸n tèt nghiƯp, thêi gian vµ kh¶ n¨ng cã h¹n nªn ®å ¸n tèt nghiƯp cđa t«i kh«ng thĨ tr¸nh khái nh÷ng sai sãt RÊt mong ®ỵc sù gãp ý ch©n thµnh cđa q thÇy c« vµ c¸c b¹n T«i xin ch©n thµnh c¶m ¬n ! Vinh,tháng năm 2009 Sinh Viên Dương Khắc Linh MơC Lơc I Giíi thiƯu I C¸c HƯ M· Th«ng Dơng: .5 II LËp M· DES .14 Ch¬ng III: TH¸M M· DES 17 III Th¸m M· HƯ DES - Vßng 19 III Ch¬ng Tr×nh HƯ M· DES - Vßng 22 Giao DiƯn ( Package GiaoDien) 23 Ch¬ng IV: §¸NH GI¸ KÕT QU¶ Vµ H¦íNG PH¸T TRIĨN 94 Sinh viªn thùc hiƯn: D¬ng Kh¾c Linh §å ¸n tèt nghiƯp GVHD: Th.s Lª V¨n Minh LêI NãI §ÇU HƯ thèng m¹ng m¸y tÝnh hiƯn trë nªn phỉ biÕn mçi c¬ quan, doanh nghiƯp, vµ trªn toµn thÕ giíi, vÊn ®Ị qu¶n lý tµi nguyªn m¹ng vµ ®¶m b¶o an toµn th«ng tin c¸c tỉ chøc doanh nghiƯp vµ nhµ níc ngµy cµng trë nªn cÊp thiÕt vµ quan träng thêi ®¹i ngµy M· hãa th«ng tin lµ mét ngµnh quan träng vµ cã nhiỊu øng dơng ®êi sèng x· héi Ngµy nay, c¸c øng dơng m· hãa vµ b¶o mËt th«ng tin ®ang ®ỵc sư dơng ngµy cµng phỉ biÕn h¬n c¸c lÜnh vùc kh¸c trªn thÕ giíi, tõ c¸c lÜnh vùc an ninh, qu©n sù, qc phßng…, cho ®Õn c¸c lÜnh vùc d©n sù nh th¬ng m¹i ®iƯn tư, ng©n hµng… Ứng dơng m· hãa vµ b¶o mËt th«ng tin c¸c hƯ thèng th¬ng m¹i ®iƯn tư, giao dÞch chøng kho¸n,… ®· trë nªn phỉ biÕn trªn thÕ giíi vµ sÏ ngµy cµng trë nªn quen thc víi ngêi d©n ViƯt Nam Th¸ng 7/2000, thÞ trêng chøng kho¸n lÇn ®Çu tiªn ®ỵc h×nh thµnh t¹i ViƯt Nam; c¸c thỴ tÝn dơng b¾t ®Çu ®ỵc sư dơng, c¸c øng dơng hƯ thèng th¬ng m¹i ®iƯn tư ®ang ë bíc ®Çu ®ỵc quan t©m vµ x©y dùng Do ®ã, nhu cÇu vỊ c¸c øng dơng m· hãa vµ b¶o mËt th«ng tin trë nªn rÊt cÇn thiÕt ThÊy ®ỵc sù cÇn thiÕt cđa viƯc b¶o mËt th«ng tin, nªn qu¸ tr×nh thùc tËp vµ lµm ®å ¸n tèt nghiƯp ci khãa, t«i ®· chän ®Ị tµi: “T×m HiĨu X©y Dùng Ch¬ng Tr×nh M· Hãa Vµ B¶o MËt Th«ng Tin HƯ M· Chn DES” Néi dung §Ị Tµi gåm PhÇn: PhÇn 1: T×m HiĨu C¸c HƯ M· Vµ HƯ M· Chn DES PhÇn 2: X©y Dùng Ch¬ng Tr×nh M· Hãa DES Sinh viªn thùc hiƯn: D¬ng Kh¾c Linh §å ¸n tèt nghiƯp GVHD: Th.s Lª V¨n Minh Ch¬ng I: PH¦¥NG PH¸P M· HãA Vµ GI¶I M· I Giíi thiƯu - M· hãa lµ ph¬ng ph¸p ®Ĩ biÕn th«ng tin (phim ¶nh, v¨n b¶n, h×nh ¶nh ) tõ ®Þnh d¹ng b×nh thêng sang d¹ng th«ng tin kh«ng thĨ hiĨu ®ỵc nÕu kh«ng cã ph¬ng tiƯn gi¶i m· - Gi¶i m· lµ ph¬ng ph¸p ®Ĩ ®a tõ d¹ng th«ng tin ®· ®ỵc m· hãa vỊ d¹ng th«ng tin ban ®Çu, qu¸ tr×nh ngỵc cđa m· hãa - M· hãa lµ qu¸ tr×nh chun b¶n râ thµnh b¶n m·, th«ng th¬ng bao gåm viƯc ¸p dơng tht to¸n m· hãa vµ mét sè qu¸ tr×nh xư lý th«ng tin kÌm theo - Gi¶i m· chun b¶n m· thµnh b¶n râ, ®©y lµ qu¸ tr×nh ngỵc l¹i cđa m· hãa - Th¸m m· nghiªn cøu c¸c nguyªn lý vµ ph¬ng ph¸p gi¶i m· mµ kh«ng biÕt khãa Th«ng thêng ®a c¸c m· m¹nh lµm chn dïng chung gi÷a c¸c ngêi sư dơng, c¸c m· ®ã ®ỵc c¸c kỴ th¸m m· còng nh nh÷ng ngêi ph¸t triĨn m· t×m hiĨu nghiªn cøu c¸c ph¬ng ph¸p gi¶i mét phÇn b¶n m· víi c¸c th«ng tin kh«ng ®Çy ®đ Mét hƯ thèng m· hãa bao gåm c¸c thµnh phÇn: th«ng tin tríc m· hãa, kÝ hiƯu lµ P th«ng tin sau m· hãa, kÝ hiƯu lµ C ch×a khãa, kÝ hiƯu lµ K ph¬ng ph¸p m· hãa/gi¶i m·, kÝ hiƯu lµ E/D Qu¸ tr×nh m· hãa ®ỵc tiÕn hµnh b»ng c¸ch ¸p dơng hµm to¸n häc E lªn th«ng tin P, vèn ®ỵc biĨu diƠn díi d¹ng sè, ®Ĩ trë thµnh th«ng tin ®· m· hãa C Qu¸ tr×nh gi¶i m· ®ỵc tiÕn hµnh ngỵc l¹i: ¸p dơng hµm D lªn th«ng tin C ®Ĩ ®ỵc th«ng tin ®· gi¶i m· P §Þnh nghÜa 1.1: Mét hƯ m· mËt (cryptosystem) lµ mét bé-n¨m (P, C, K, E, D) tháa m·n c¸c ®iỊu kiƯn sau: P lµ kh«ng gian b¶n râ tËp hỵp h÷u h¹n tÊt c¶ c¸c mÈu tin ngn cÇn m· hãa cã thĨ cã 2.C lµ kh«ng gian b¶n m· tËp hỵp h÷u h¹n tÊt c¶ c¸c mÈu tin cã thĨ cã sau m· hãa 3.K lµ kh«ng gian kho¸ tËp hỵp h÷u h¹n c¸c khãa cã thĨ ®ỵc sư dơng 4.Víi mçi khãa k∈K, tån t¹i lt m· hãa ek∈E vµ lt gi¶i m· dk∈D t¬ng øng Lt m· hãa ek: P → C vµ lt gi¶i m· ek: C → P lµ hai ¸nh x¹ tháa m·n d k ( ek ( x ) ) = x, ∀ x ∈ P TÝnh chÊt lµ tÝnh chÊt chÝnh vµ quan träng cđa mét hƯ thèng m· hãa TÝnh chÊt nµy b¶o ®¶m viƯc m· hãa mét mÈu tin x∈P b»ng lt m· hãa ek∈E cã thĨ ®ỵc gi¶i m· chÝnh x¸c b»ng lt dk∈D §Þnh nghÜa 1.2: Zm ®ỵc ®Þnh nghÜa lµ tËp hỵp {0, 1, , m-1}, ®ỵc trang bÞ phÐp céng (ký hiƯu +) vµ phÐp nh©n (ký hiƯu lµ ×) PhÐp céng vµ phÐp nh©n Zm ®ỵc thùc hiƯn t¬ng tù nh Z, ngo¹i trõ kÕt qu¶ tÝnh theo modulo m VÝ dơ: Gi¶ sư ta cÇn tÝnh gi¸ trÞ 11 × 13 Z16 Trong Z, ta cã kÕt qu¶ cđa phÐp nh©n 11×13=143 Do 143≡15 (mod 16) nªn 11×13=15 Z16 Mét sè tÝnh chÊt cđa Zm PhÐp céng ®ãng Zm, i.e., ∀ a, b ∈ Zm, a+b ∈ Zm Sinh viªn thùc hiƯn: D¬ng Kh¾c Linh §å ¸n tèt nghiƯp GVHD: Th.s Lª V¨n Minh TÝnh giao ho¸n cđa phÐp céng Zm, i.e., ∀ a, b ∈ Zm, a+b =b+a TÝnh kÕt hỵp cđa phÐp céng Zm, i.e., ∀ a, b, c ∈ Zm, (a+b)+c =a+(b+c) Zm cã phÇn tư trung hßa lµ 0, i.e., ∀ a ∈ Zm, a+0=0+a=a Mäi phÇn tư a Zm ®Ịu cã phÇn tư ®èi lµ m – a PhÐp nh©n ®ãng Zm, i.e., ∀ a, b ∈ Zm, b∈ Zm TÝnh giao ho¸n cđa phÐp céng Zm, i.e., ∀ a, b ∈ Zm, b=b×a TÝnh kÕt hỵp cđa phÐp céng Zm, i.e., ∀ a, b, c ∈ Zm, (b)×c =(b×c) Zm cã phÇn tư ®¬n vÞ lµ 1, i.e., ∀ a ∈ Zm, 1=1×a=a 10 TÝnh ph©n phèi cđa phÐp nh©n ®èi víi phÐp céng, i.e., ∀ a, b, c ∈ Zm, (a+b)×c =(c)+ (b×c) 11 Zm cã c¸c tÝnh chÊt 1, – nªn t¹o thµnh nhãm Do Zm cã tÝnh chÊt nªn t¹o thµnh nhãm Abel Zm cã c¸c tÝnh chÊt (1) – (10) nªn t¹o thµnh vµnh I C¸c HƯ M· Th«ng Dơng: a HƯ M· §Çy (Shift Cipher ) Shift Cipher lµ mét nh÷ng ph¬ng ph¸p l©u ®êi nhÊt ®ỵc sư dơng ®Ĩ m· hãa Th«ng ®iƯp ®ỵc m· hãa b»ng c¸ch dÞch chun (xoay vßng) tõng ký tù ®i k vÞ trÝ b¶ng ch÷ c¸i Ph¬ng ph¸p Shift Cipher Cho P = C = K = Z26 Víi ≤ K ≤ 25, ta ®Þnh nghÜa vµ eK = x + K mod 26 dK = y - K mod 26 (x,y ∈ Z26) ®ã 26 lµ sè ký tù b¶ng ch÷ c¸i La tinh, mét c¸ch t¬ng tù còng cã thĨ ®Þnh nghÜa cho mét b¶ng ch÷ c¸i bÊt kú §ång thêi ta dƠ dµng thÊy r»ng m· ®Èy lµ mét hƯ mËt m· v× dK(eK(x)) = x víi mäi x∈Z26 b HƯ KEYWORD-CEASAR Trong hƯ m· nµy khãa lµ mét tõ nµo ®ã ®ỵc chän tríc, vÝ dơ PLAIN Tõ nµy x¸c ®Þnh d·y sè nguyªn Z26 (15,11,0,8,13) t¬ng øng víi vÞ trÝ c¸c ch÷ c¸i cđa c¸c ch÷ ®ỵc chän b¶ng ch÷ c¸i B©y giê b¶n râ sÏ ®ỵc m· hãa b»ng c¸ch dïng c¸c hµm lËp m· theo thø tù: e15, e11, e0, e8, e13, e15, e11, e0, e8, e, víi eK lµ hµm lËp m· hƯ m· chun c HƯ M· Vu«ng (SQUARE) Trong hƯ nµy c¸c tõ khãa ®ỵc dïng theo mét c¸ch kh¸c h¼n Ta dïng b¶ng ch÷ c¸i tiÕng Anh (cã thĨ bá ®i ch÷ Q, nÕu mn tỉng sè c¸c ch÷ sè lµ mét sè chÝnh ph¬ng) vµ ®ßi hái mäi ch÷ tõ khãa ph¶i kh¸c B©y giê mäi ch÷ cđa b¶ng ch÷ c¸i ®ỵc viÕt díi d¹ng mét h×nh vu«ng, b¾t ®Çu b»ng tõ khãa vµ tiÕp theo lµ nh÷ng ch÷ c¸i cßn l¹i theo thø tù cđa b¶ng ch÷ d M· ThÕ VÞ Mét hƯ m· kh¸c kh¸ nỉi tiÕng HƯ m· nµy ®· ®ỵc sư dơng hµng tr¨m n¨m Ph¬ng ph¸p : Sinh viªn thùc hiƯn: D¬ng Kh¾c Linh §å ¸n tèt nghiƯp GVHD: Th.s Lª V¨n Minh Cho P = C = Z 26 K gåm tÊt c¶ c¸c ho¸n vÞ cã thĨ cã cđa 26 ký hiƯu 0, ,25 Víi mçi ho¸n vÞ π∈K, ta ®Þnh nghÜa: eπ(x) = π(x) vµ ®Þnh nghÜa dπ(y) = π-1(y) víi π -1 lµ ho¸n vÞ ngỵc cđa ho¸n vÞ π Trong m· thÕ vÞ ta cã thĨ lÊy P vµ C lµ c¸c b¶ng ch÷ c¸i La tinh Ta sư dơng Z26 m· ®Èy v× lËp m· vµ gi¶i m· ®Ịu lµ c¸c phÐp to¸n ®¹i sè e Ph¬ng Ph¸p Affine vµ Cho P = C = Z26 vµ cho K = {(a,b) ∈ Z26 × Z26 : gcd(a,26) = 1} Víi K = (a,b) ∈ K, ta x¸c ®Þnh eK(x) = ax+b mod 26 (x,y ∈ Z26) dK = a-1(y-b) mod 26 Ph¬ng ph¸p Affine l¹i lµ mét trêng hỵp ®Ỉc biƯt kh¸c cđa Substitution Cipher §Ĩ cã thĨ gi¶i m· chÝnh x¸c th«ng tin ®· ®ỵc m· hãa b»ng hµm ek∈ E th× ek ph¶i lµ mét song ¸nh Nh vËy, víi mçi gi¸ trÞ y∈Z26, ph¬ng tr×nh ax+b≡y (mod 26) ph¶i cã nghiƯm nhÊt x∈Z26 Ph¬ng tr×nh ax+b≡y (mod 26) t¬ng ®¬ng víi ax≡(y–b ) (mod 26) VËy, ta chØ cÇn kh¶o s¸t ph¬ng tr×nh ax≡(y–b ) (mod 26) §Þnh lý1.0: Ph¬ng tr×nh ax+b≡y (mod 26) cã nghiƯm nhÊt x∈Z26 víi mçi gi¸ trÞ b∈Z26 vµ chØ a vµ 26 nguyªn tè cïng VËy, ®iỊu kiƯn a vµ 26 nguyªn tè cïng b¶o ®¶m th«ng tin ®ỵc m· hãa b»ng hµm ek cã thĨ ®ỵc gi¶i m· vµ gi¶i m· mét c¸ch chÝnh x¸c Gäi φ(26) lµ sè lỵng phÇn tư thc Z26 vµ nguyªn tè cïng víi 26 m e §Þnh lý 1.0: NÕu n = ∏ pi i víi pi lµ c¸c sè nguyªn tè kh¸c vµ ei ∈ Z+, ≤ i ≤ i =1 e e −1 m th× φ ( n ) = ∏ ( pi i − pi i ) m i =1 Trong ph¬ng ph¸p m· hãa Affine , ta cã 26 kh¶ n¨ng chän gi¸ trÞ b, φ(26) kh¶ n¨ng chän gi¸ trÞ a VËy, kh«ng gian khãa K cã tÊt c¶ nφ(26) phÇn tư VÊn ®Ị ®Ỉt cho ph¬ng ph¸p m· hãa Affine Cipher lµ ®Ĩ cã thĨ gi¶i m· ®ỵc th«ng tin ®· ®ỵc m· hãa cÇn ph¶i tÝnh gi¸ trÞ phÇn tư nghÞch ®¶o a–1 ∈ Z26 f Ph¬ng Ph¸p Vigenere ph¬ng ph¸p m· hãa Vigenere sư dơng mét tõ khãa (keyword) cã ®é dµi m Cã thĨ xem nh ph¬ng ph¸p m· hãa Vigenere Cipher bao gåm m phÐp m· hãa Shift Cipher ®ỵc ¸p dơng lu©n phiªn theo chu kú Kh«ng gian khãa K cđa ph¬ng ph¸p Vigenere cã sè phÇn tư lµ 26, lín h¬n h¼n ph¬ng ph¸p sè lỵng phÇn tư cđa kh«ng gian khãa K ph¬ng ph¸p Shift Cipher Do ®ã, viƯc t×m m· khãa k ®Ĩ gi¶i m· th«ng ®iƯp ®· ®ỵc m· hãa sÏ khã kh¨n h¬n ®èi víi ph¬ng ph¸p Shift Cipher Ph¬ng ph¸p m· hãa Vigenere Cipher Sinh viªn thùc hiƯn: D¬ng Kh¾c Linh §å ¸n tèt nghiƯp GVHD: Th.s Lª V¨n Minh Chän sè nguyªn d¬ng m §Þnh nghÜa P = C = K = (Z26)m K = { (k0, k1, , kr-1) ∈ (Z26)r} Víi mçi khãa k = (k0, k1, , kr-1) ∈ K, ®Þnh nghÜa: ek(x1, x2, , xm) = ((x1+k1) mod 26, (x2+k2) mod n, , (xm+km) mod 26) dk(y1, y2, , ym) = ((y1–k1) mod n, (y2–k2) mod n, , (ym–km) mod 26) víi x, y ∈ (Z26)m g HƯ M· Hill Ph¬ng ph¸p Hill Cipher ®ỵc Lester S Hill c«ng bè n¨m 1929: Cho sè nguyªn d¬ng m, ®Þnh nghÜa P = C = (Z26)m Mçi phÇn tư x∈P lµ mét bé m thµnh phÇn, mçi thµnh phÇn thc Z26 ý tëng chÝnh cđa ph¬ng ph¸p nµy lµ sư dơng m tỉ hỵp tun tÝnh cđa m thµnh phÇn mçi phÇn tư x∈P ®Ĩ ph¸t sinh m thµnh phÇn t¹o thµnh phÇn tư y∈C Ph¬ng ph¸p m· hãa Hill Cipher Chän sè nguyªn d¬ng m §Þnh nghÜa: P = C = (Z26)m vµ K lµ tËp hỵp c¸c ma trËn m×m kh¶ nghÞch  k1,1   k 2,1 Víi mçi khãa k =    k  m ,1 k1,  k1,m     k ,m  ∈ K , ®Þnh nghÜa:     k m,  k m ,m   k1,1 k1,  k1,m     k 2,1   k 2,m  ek ( x ) = xk = ( x1 , x2 , , x m )  víi x=(x1, x2, , xm) ∈ P       k  k  k m, m,m   m,1 vµ dk(y) = yk–1 víi y∈ C Mäi phÐp to¸n sè häc ®Ịu ®ỵc thùc hiƯn trªn Zn h M· Ho¸n VÞ Nh÷ng ph¬ng ph¸p m· hãa nªu trªn ®Ịu dùa trªn ý tëng chung: thay thÕ mçi ký tù th«ng ®iƯp ngn b»ng mét ký tù kh¸c ®Ĩ t¹o thµnh th«ng ®iƯp ®· ®ỵc m· hãa ý tëng chÝnh cđa ph¬ng ph¸p m· ho¸n vÞ lµ vÉn gi÷ nguyªn c¸c ký tù th«ng ®iƯp ngn mµ chØ thay ®ỉi vÞ trÝ c¸c ký tù; nãi c¸ch kh¸c th«ng ®iƯp ngn ®ỵc m· hãa b»ng c¸ch s¾p xÕp l¹i c¸c ký tù ®ã Ph¬ng ph¸p m· hãa m· ho¸n vÞ Chän sè nguyªn d¬ng m §Þnh nghÜa: P = C = (Z26)m vµ K lµ tËp hỵp c¸c ho¸n vÞ cđa m phÇn tư {1, 2, , m} Víi mçi khãa π ∈ K, ®Þnh nghÜa: eπ ( x1 , x , , xm ) = xπ ( 1) , xπ ( ) , xπ ( m ) vµ ( ( ) d π ( y1 , y , , y m ) = yπ −1 ( 1) , yπ −1 ( ) , yπ −1 ( m ) ) víi π–1 ho¸n vÞ ngỵc cđa π Sinh viªn thùc hiƯn: D¬ng Kh¾c Linh §å ¸n tèt nghiƯp GVHD: Th.s Lª V¨n Minh Ph¬ng ph¸p m· ho¸n vÞ chÝnh lµ mét trêng hỵp ®Ỉc biƯt cđa ph¬ng ph¸p Hill Víi mçi ho¸n vÞ π cđa tËp hỵp {1, 2, , m} , ta x¸c ®Þnh ma trËn kπ = (ki, j ) theo c«ng thøc sau: 1, i = π ( j ) ki, j =  0, trường hợp ngược lại Ma trËn kπ lµ ma trËn mµ mçi dßng vµ mçi cét cã ®óng mét phÇn tư mang gi¸ trÞ 1, c¸c phÇn tư cßn l¹i ma trËn ®Ịu b»ng Ma trËn nµy cã thĨ thu ®ỵc b»ng c¸ch ho¸n vÞ c¸c hµng hay c¸c cét cđa ma trËn ®¬n vÞ Im nªn kπ lµ ma trËn kh¶ nghÞch Râ rµng, m· hãa b»ng ph¬ng ph¸p Hill víi ma trËn kπ hoµn toµn t¬ng ®¬ng víi m· hãa b»ng ph¬ng ph¸p m· ho¸n vÞ víi ho¸n vÞ π i M· Vßng Trong c¸c hƯ tríc ®Ịu cïng mét c¸ch thøc lµ c¸c phÇn tư kÕ tiÕp cđa b¶n râ ®Ịu ®ỵc m· hãa víi cïng mét khãa K Nh vËy x©u m· y sÏ cã d¹ng sau: y = y1y2 = eK(x1) eK(x2) C¸c hƯ m· lo¹i nµy thêng ®ỵc gäi lµ m· khèi (block cipher) Cßn ®èi víi c¸c hƯ m· dßng ý tëng ë ®©y lµ sinh mét chi khãa z = z1z2 , vµ sư dơng nã ®Ĩ m· hãa x©u b¶n râ x = x1x2 theo qui t¾c sau: y = y1 y = e z1 ( x1 )e z2 ( x ) I Quy Tr×nh Th¸m M·: Cø mçi ph¬ng ph¸p m· ho¸ ta l¹i cã mét ph¬ng ph¸p th¸m m· t¬ng øng nhng nguyªn t¾c chung ®Ĩ viƯc th¸m m· ®ỵc thµnh c«ng th× yªu cÇu ngêi th¸m m· ph¶i biÕt hƯ m· nµo ®ỵc dïng kho¸ Ngoµi ta cßn ph¶i biÕt ®ỵc b¶n m· vµ b¶n râ øng nh×n chung c¸c hƯ m· ®èi xøng lµ dƠ cµi ®Ỉt víi tèc ®é thùc thi nhanh TÝnh an toµn cđa nã phơ thc vµo c¸c u tè : • Kh«ng gian kho¸ ph¶i ®đ lín • Víi c¸c phÐp trén thÝch hỵp c¸c hƯ m· ®èi xøng cã thĨ t¹o ®ỵc mét hƯ m· míi cã tÝnh an toµn cao • B¶o mËt cho viƯc trun khãa còng cÇn ®ỵc xư lý mét c¸ch nghiªm tóc Vµ mét hƯ m· ho¸ d÷ liƯu ®êi (DES) DES ®ỵc xem nh lµ chn m· hãa d÷ liƯu cho c¸c øng dơng tõ ngµy 15 th¸ng n¨m 1977 đy ban Qc gia vỊ Tiªu chn cđa Mü x¸c nhËn vµ cø n¨m mét lÇn l¹i cã chØnh sưa, bỉ sung DES lµ mét hƯ m· ®ỵc trén bëi c¸c phÐp thÕ vµ ho¸n vÞ víi phÐp trén thÝch hỵp th× viƯc gi¶i m· nã l¹i lµ mét bµi to¸n kh¸ khã §ång thêi viƯc cµi ®Ỉt hƯ m· nµy cho nh÷ng øng dơng thùc tÕ l¹i kh¸ thn lỵi ChÝnh nh÷ng lý ®ã nã ®ỵc øng dơng réng r·i cđa DES st h¬n 20 n¨m qua, kh«ng nh÷ng t¹i Mü mµ cßn lµ hÇu nh trªn kh¾p thÕ giíi MỈc dï theo c«ng bè míi nhÊt (n¨m 1998) th× mäi hƯ DES, víi nh÷ng kh¶ n¨ng cđa m¸y tÝnh hiƯn nay, ®Ịu cã thĨ bỴ khãa h¬n giê Tuy nhiªn DES cho ®Õn vÉn lµ mét m« h×nh chn cho nh÷ng øng dơng b¶o mËt thùc tÕ Sinh viªn thùc hiƯn: D¬ng Kh¾c Linh §å ¸n tèt nghiƯp GVHD: Th.s Lª V¨n Minh Ch¬ng II: HƯ M· CHN DES (Data Encryption Standard) II §Ỉc T¶ DES Ph¬ng ph¸p DES m· hãa tõ x cã 64 bit víi khãa k cã 56 bit thµnh mét tõ cã y 64 bit Tht to¸n m· hãa bao gåm giai ®o¹n: Víi tõ cÇn m· hãa x cã ®é dµi 64 bit, t¹o tõ x0 (còng cã ®é dµi 64 bit) b»ng c¸ch ho¸n vÞ c¸c bit tõ x theo mét ho¸n vÞ cho tríc IP (Initial Permutation) BiĨu diƠn x0 = IP(x) = L0R0, L0 gåm 32 bit bªn tr¸i cđa x0, R0 gåm 32 bit bªn ph¶i cđa x0 L R 0 x0 H×nh BiĨu diƠn d·y 64 bit x thµnh thµnh phÇn L vµ R X¸c ®Þnh c¸c cỈp tõ 32 bit Li, Ri víi 1≤ i ≤ 16theo quy t¾c sau: Li = Ri-1 Ri = Li-1⊕ f (Ri-1, Ki) víi ⊕ biĨu diƠn phÐp to¸n XOR trªn hai d·y bit, K1, K2, , K16 lµ c¸c d·y 48 bit ph¸t sinh tõ khãa K cho tríc (Trªn thùc tÕ, mçi khãa Ki ®ỵc ph¸t sinh b»ng c¸ch ho¸n vÞ c¸c bit khãa K cho tríc) L i- R i-1 K f i ⊕ L i R i H×nh Quy tr×nh ph¸t sinh d·y 64 bit LiRi tõ d·y 64 bit Li-1Ri-1vµ khãa Ki ¸p dơng ho¸n vÞ ngỵc IP-1 ®èi víi d·y bit R16L16, thu ®ỵc tõ y gåm 64 bit Nh vËy, y = IP-1 (R16L16) Hµm f ®ỵc sư dơng ë bíc lµ Sinh viªn thùc hiƯn: D¬ng Kh¾c Linh §å ¸n tèt nghiƯp GVHD: Th.s Lª V¨n Minh A J E E(A) + B1 B2 S1 B3 S2 C1 S3 B4 B5 B6 S5 S4 B7 S6 B8 S7 S8 C2 C3 C4 C5 C6 C7 C8 P f(A,J) Hµm f cã gåm tham sè: Tham sè thø nhÊt A lµ mét d·y 32 bit, tham sè thø hai J lµ mét d·y 48 bit KÕt qu¶ cđa hµm f lµ mét d·y 32 bit C¸c bíc xư lý cđa hµm f(A, J)nh sau: • Tham sè thø nhÊt A (32 bit) ®ỵc më réng thµnh d·y 48 bit b»ng hµm më réng E KÕt qu¶ cđa hµm E(A) lµ mét d·y 48 bit ®ỵc ph¸t sinh tõ A b»ng c¸ch ho¸n vÞ theo mét thø tù nhÊt ®Þnh 32 bit cđa A, ®ã cã 16 bit cđa A ®ỵc lËp l¹i lÇn E(A) • Thùc hiƯn phÐp to¸n XOR cho d·y 48 bit E(A) vµ J, ta thu ®ỵc mét d·y 48 bit B BiĨu diƠn B thµnh tõng nhãm bit nh sau:B = B1B2B3B4B5B6B7B8 • Sư dơng ma trËn S1, S2, , S8, mçi ma trËn Si cã kÝch thíc 4×16 vµ mçi dßng cđa ma trËn nhËn ®đ 16 gi¸ trÞ tõ ®Õn 15 XÐt d·y gåm bit Bj = b1b2b3b4b5b6, Sj(Bj) ®ỵc x¸c ®Þnh b»ng gi¸ trÞ cđa phÇn tư t¹i dßng r cét c cđa Sj, ®ã, chØ sè dßng r cã biĨu diƠn nhÞ ph©n lµ b1b6, chØ sè cét c cã biĨu diƠn nhÞ ph©n lµ b2b3b4b5 B»ng c¸ch nµy, ta x¸c ®Þnh ®ỵc c¸c d·y bit Cj = Sj(Bj), ≤ j ≤ • TËp hỵp c¸c d·y bit Cj l¹i ta cã ®ỵc d·y 32 bit C = C1C2C3C4C5C6C7C8 D·y 32 bit thu ®ỵc b»ng c¸ch ho¸n vÞ C theo mét quy lt P nhÊt ®Þnh chÝnh lµ kÕt qu¶ cđa hµm F(A, J) c¸c hµm ®ỵc sư dơng DES Ho¸n vÞ khëi t¹o IP sÏ nh sau: Sinh viªn thùc hiƯn: D¬ng Kh¾c Linh 10 §å ¸n tèt nghiƯp GVHD: Th.s Lª V¨n Minh Next End Sub Function bi_so(ByVal a As Integer) As String Dim i As Integer Dim tam(5) As Char For i = To tam(i) = (a Mod 2).ToString a \= Next Array.Reverse(tam) Return tam End Function Function thapphan(ByVal b As String) As Integer Dim i As Integer Dim tam As Integer = For i = To b.Length - If b.Substring(i, 1) = Then tam += ^ (b.Length - - i) End If Next Return tam End Function Function binary(ByVal a As Integer, ByVal n As Integer) As String Dim i As Integer Dim tam(n - 1) As Char For i = To n - tam(i) = (a Mod 2).ToString a=a\2 Next Array.Reverse(tam) Return tam End Function Hµm t¹o tËp test Function tap_test() As String() Dim i, j, k As Integer Dim ee(7) As String Dim eephay(7) As String Sinh viªn thùc hiƯn: D¬ng Kh¾c Linh 82 §å ¸n tèt nghiƯp GVHD: Th.s Lª V¨n Minh Dim ccphay(7) As String Dim test(63) As String For i = To (n - 1) / For j = To ee(j) = e(i).Substring(j * 6, 6) eephay(j) = ephay(i).Substring(j * 6, 6) ccphay(j) = cphay(i).Substring(j * 4, 4) test = tap_in(ee(j), eephay(j), ccphay(j), s(j)) For k = To 63 If test(k) = Then jhop(j, k) += End If Next Next Next End Function Hµm t¹o kho¸ vßng Function khoavong3() As String Dim khoav3 As String Dim i, j As Integer Dim count As Integer = Dim vitrimax As Integer For i = To count = Dim max As Integer = (n + 1) / For j = To 63 If jhop(i, j) = max Then count += vitrimax = j End If Next If count > Then max jhép" lbthongbao.Text = "NhËp thm b¶n m v b¶n r, v× cha xc ®Þnh ®ỵc phÇn tư btthamma.Enabled = False txtbanro.Focus() n += Sinh viªn thùc hiƯn: D¬ng Kh¾c Linh 83 §å ¸n tèt nghiƯp GVHD: Th.s Lª V¨n Minh ReDim banro(n) ReDim banma(n) ReDim e((n - 2) / 2) ReDim esao((n - 2) / 2) ReDim ephay((n - 2) / 2) ReDim cphay((n - 2) / 2) flag = False Exit Function End If khoav3 += binary(vitrimax, 6) Next txtkhoav3.Text = khoav3 Return khoav3 End Function Hµm Xư lý kho¸ Function xulikhoa() As String Dim khoa As String = khoavong3() If flag = False Then Exit Function End If khoa = hoanvi_pc2tru(khoa) Dim haitambitdau As String = khoa.Substring(0, 28) Dim haitambitcuoi As String = khoa.Substring(28, 28) haitambitdau = dichphai(haitambitdau, 4) haitambitcuoi = dichphai(haitambitcuoi, 4) khoa = haitambitdau + haitambitcuoi Dim i As Integer khoa = hoanvi_pc1tru(khoa) txtkhoa.Text = khoa Return khoa 'khoa 56 bit End Function Hµm t¹o chi kho¸ Sub taochuoikhoa(ByVal c As String) If flag = False Then Exit Sub End If Dim chuoibinary(255) As String Sinh viªn thùc hiƯn: D¬ng Kh¾c Linh 84 §å ¸n tèt nghiƯp GVHD: Th.s Lª V¨n Minh Dim i As Integer For i = To 255 chuoibinary(i) = binary(i, 8) chuoikhoa(i) = taotungkhoa(c, chuoibinary(i)) Next End Sub Hµm t¹o tõng kho¸ Function taotungkhoa(ByVal a As String, ByVal b As String) As String Dim i As Integer Dim j As Integer = Dim tam(63) As Char For i = To 63 tam(i) = a.Substring(i, 1) If tam(i) = "?" Then tam(i) = b.Substring(j, 1) j += End If Next Return tam End Function Hµm dÞch ph¶i Function dichphai(ByVal s As String, ByVal n As Integer) As String Return s.Substring(s.Length - n, n) + s.Substring(0, s.Length - n) End Function Function tap_in(ByVal e As String, ByVal ephay As String, ByVal cphay As String, ByVal s As DataTable) As String() Dim tam(63), b, bsao, c, csao, cphaytam As String Dim i As Integer For i = To 63 b = bi_so(i) Dim haibitcuoi As String = b.Substring(0, 1) + b.Substring(5, 1) Dim bonbitgiua As String = b.Substring(1, 4) Dim srow = thapphan(haibitcuoi) Dim scol = thapphan(bonbitgiua) Dim sij As Integer = s.Rows(srow).Item(scol) c = binary(sij, 4) bsao = phay(ephay, b) Sinh viªn thùc hiƯn: D¬ng Kh¾c Linh 85 §å ¸n tèt nghiƯp GVHD: Th.s Lª V¨n Minh haibitcuoi = bsao.Substring(0, 1) + bsao.Substring(5, 1) bonbitgiua = bsao.Substring(1, 4) srow = thapphan(haibitcuoi) scol = thapphan(bonbitgiua) sij = s.Rows(srow).Item(scol) csao = binary(sij, 4) cphaytam = phay(c, csao) If cphaytam = cphay Then tam(thapphan(phay(e, b))) = End If Next Return tam End Function Mét sè Hµm cho xư lý sù kiƯn Private Sub btthamma_Click(ByVal sender As System.Object, ByVal ee As System.EventArgs) Handles btthamma.Click ReDim banro(n) ReDim banma(n) ReDim e((n - 1) / 2) ReDim esao((n - 1) / 2) ReDim ephay((n - 1) / 2) ReDim cphay((n - 1) / 2) flag = True If gandulieu() = False Then Exit Sub End If If kiemtra() = False Then Exit Sub End If bi_banro_banma() xuli_e_esao_ephay() xuli_cphay() tap_test() taochuoikhoa(xulikhoa()) If flag = False Then Exit Sub End If Sinh viªn thùc hiƯn: D¬ng Kh¾c Linh 86 §å ¸n tèt nghiƯp GVHD: Th.s Lª V¨n Minh chonkhoadung() End Sub Private Sub btthoat_Click(ByVal sender As System.Object, ByVal ee As System.EventArgs) Handles btthoat.Click Me.Close() End Sub Private Sub thammades_Load(ByVal sender As System.Object, ByVal ee As System.EventArgs) Handles MyBase.Load Dim strbanro As String strbanro += "748502CD38451097" + Chr(13) + Chr(10) strbanro += "3874756438451097" + Chr(13) + Chr(10) strbanro += "486911026ACDFF31" + Chr(13) + Chr(10) strbanro += "375BD31F6ACDFF31" + Chr(13) + Chr(10) strbanro += "357418DA013FEC86" + Chr(13) + Chr(10) strbanro += "12549847013FEC86" txtbanro.Text = strbanro Dim strbanma As String strbanma += "03C70306D8A09F10" + Chr(13) + Chr(10) strbanma += "78560A0960E6D4CB" + Chr(13) + Chr(10) strbanma += "45FA285BE5ADC730" + Chr(13) + Chr(10) strbanma += "134F7915AC253457" + Chr(13) + Chr(10) strbanma += "D8A31B2F28BBC5CF" + Chr(13) + Chr(10) strbanma += "0F317AC2B23CB944" txtbanma.Text = strbanma khoitao() End Sub 'des Hµm c¾t bit ci Function catbitcuoi(ByVal k As String) As String 'dua vao 64 bit tra 56 bit Dim i As Integer = Dim j As Integer Dim tam As String While i < 63 For j = i To i + tam += k.Substring(j, 1) Next i=i+8 Sinh viªn thùc hiƯn: D¬ng Kh¾c Linh 87 §å ¸n tèt nghiƯp GVHD: Th.s Lª V¨n Minh End While Return tam End Function Function ls(ByVal s As String, ByVal n As Integer) As String Return s.Substring(n, s.Length - n) + s.Substring(0, n) End Function Hµm t¹o d·y kho¸ Sub taodaykhoa(ByVal khoa As String) khoa = hoanvi_pc1(khoa) Dim d(2) As String Dim c(2) As String c(0) = khoa.Substring(0, 28) c(0) = ls(c(0), 1) d(0) = khoa.Substring(28, 28) d(0) = ls(d(0), 1) daykhoa(0) = hoanvi_pc2(c(0) + d(0)) Dim i As Integer For i = To If i = Then c(i) = ls(c(i - 1), 1) d(i) = ls(d(i - 1), 1) Else c(i) = ls(c(i - 1), 2) d(i) = ls(d(i - 1), 2) End If daykhoa(i) = hoanvi_pc2(c(i) + d(i)) Next i End Sub Hµm xư lý chi nhËp Function bi_acsii(ByVal int As Integer) As String Dim tam(7) As Char Dim i As Integer For i = To tam(i) = (int Mod 2).ToString int \= Next Array.Reverse(tam) Sinh viªn thùc hiƯn: D¬ng Kh¾c Linh 88 §å ¸n tèt nghiƯp GVHD: Th.s Lª V¨n Minh Return tam End Function Hµm m· ho¸ Function mahoa(ByVal x As String) As String Dim i, j As Integer Dim l(2) As String Dim r(2) As String 'x = hoanvi_ip(x) Dim l0 As String = x.Substring(0, 32) Dim r0 As String = x.Substring(32, 32) l(0) = r0 For i = To 31 r(0) += (l0.Substring(i, 1) Xor f(r0, daykhoa(0)).Substring(i, 1)).ToString Next For i = To l(i) = r(i - 1) Dim a As String = f(r(i - 1), daykhoa(i)) For j = To 31 r(i) += (l(i - 1).Substring(j, 1) Xor a.Substring(j, 1)).ToString Next j Next i Dim t As String = l(2) + r(2) Return t 'Return hoanvi_iptru(r(2) + l(2)) End Function Hµm t¹o hµm f Function f(ByVal r As String, ByVal daykhoa_k As String) As String Dim i As Integer Dim e As String Dim hv As String = hoanvi_e(r) For i = To 47 e += (hv.Substring(i, 1) Xor daykhoa_k.Substring(i, 1)).ToString Next Dim b(7) As String Dim c As String For i = To b(i) = e.Substring(i * 6, 6) Sinh viªn thùc hiƯn: D¬ng Kh¾c Linh 89 §å ¸n tèt nghiƯp GVHD: Th.s Lª V¨n Minh Dim haibitdaucuoi As String = b(i).Substring(0, 1) + b(i).Substring(5, 1) Dim bonbitgiua As String = b(i).Substring(1, 4) Dim srow = thapphan(haibitdaucuoi) Dim scol = thapphan(bonbitgiua) Dim sij As Integer = s(i).Rows(srow).Item(scol) c += binary(sij, 4) Next Return hoanvi_p(c) End Function Hµm ®ỉi ch÷ 'Function doirachu(ByVal y As String) As String 'Dim tam As String = y 'Dim tam1 As String = "" 'Dim so As Integer 'Dim i As Integer 'Dim j As Integer 'While i < tam.Length - 'so = 'For j = i To i + 'If tam.Substring(j, 1) = Then 'so += ^ (7 - (j - i)) 'End If 'Next 'tam1 += Chr(so) 'i = i + 'End While 'Return tam1 'End Function Function doirachu(ByVal y As String) As String Dim tam As String = y Dim tam1 As String = "" Dim so As Integer Dim i, j As Integer While i < tam.Length - so = For j = i To i + If tam.Substring(j, 1) = Then Sinh viªn thùc hiƯn: D¬ng Kh¾c Linh 90 §å ¸n tèt nghiƯp GVHD: Th.s Lª V¨n Minh so += ^ (3 - (j - i)) End If Next tam1 += chucai(so) i=i+4 End While Return tam1 End Function Ch÷ c¸i Function chucai(ByVal so As Integer) As Char Select Case so Case Return "0" Case Return "1" Case Return "2" Case Return "3" Case Return "4" Case Return "5" Case Return "6" Case Return "7" Case Return "8" Case Return "9" Case 10 Return "A" Case 11 Return "B" Case 12 Return "C" Sinh viªn thùc hiƯn: D¬ng Kh¾c Linh 91 §å ¸n tèt nghiƯp GVHD: Th.s Lª V¨n Minh Case 13 Return "D" Case 14 Return "E" Case 15 Return "F" End Select End Function Hµm chun m· asc Function asc(ByVal a As Char) Select Case a Case "0" asc = Case "1" asc = Case "2" asc = Case "3" asc = Case "4" asc = Case "5" asc = Case "6" asc = Case "7" asc = Case "8" asc = Case "9" asc = Case "A" asc = 10 Case "B" asc = 11 Case "C" asc = 12 Sinh viªn thùc hiƯn: D¬ng Kh¾c Linh 92 §å ¸n tèt nghiƯp GVHD: Th.s Lª V¨n Minh Case "D" asc = 13 Case "E" asc = 14 Case "F" asc = 15 End Select End Function Hµm chän kho¸ Sub chonkhoadung() Dim i As Integer Dim x As String = banro(0) 'For i = To banro(0).Length - 'x += binary(asc(banro(0).Substring(i, 1)), hebit) 'Next For i = To 255 taodaykhoa(chuoikhoa(i)) Dim banma1 As String = doirachu(mahoa(x)) If banma1 = doirachu(banma(0)) Then chuoikhoa(i) = chuoikhoa(i).Replace("#", "0") txtkhoa.Text = doirachu(chuoikhoa(i)) Exit Sub End If Next MessageBox.Show("khong tim duoc khoa") End Sub Private Sub txtbanro_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtbanro.TextChanged btthamma.Enabled = True lbthongbao.Text = "" End Sub Private Sub txtbanma_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtbanma.TextChanged btthamma.Enabled = True lbthongbao.Text = "" End Sub End Class Sinh viªn thùc hiƯn: D¬ng Kh¾c Linh 93 §å ¸n tèt nghiƯp GVHD: Th.s Lª V¨n Minh Ch¬ng IV: §¸NH GI¸ KÕT QU¶ Vµ H¦íNG PH¸T TRIĨN A KÕT QU¶ §¹T §¦ỵC: - Ch¬ng tr×nh nµy ®· ®¸p øng ®ỵc c¸c yªu cÇu ®· ®Ỉt ®· m· hãa ®ỵc th«ng tin vµ b¶o mËt th«ng tin - Ch¬ng tr×nh ®· ph©n tÝch vµ thiÕt kÕ kh¸ kü vỊ tõng chøc n¨ng cđa ch¬ng tr×nh, d÷ liƯu cđa ch¬ng tr×nh còng ®· ®ỵc chn ho¸ - Giao diƯn cđa ch¬ng tr×nh ®ỵc thiÕt kÕ rÊt gÇn gòi, th©n thiƯn víi ngêi sư dơng - §©y lµ mét ch¬ng tr×nh phÇn mỊm nªn bao giê còng chøa nã nh÷ng thiÕu sãt mµ ngêi ph¸t triĨn phÇn mỊm (ngêi trùc tiÕp lµm phÇn mỊm ch¬ng tr×nh ®ã) cã thĨ kh«ng biÕt, ®ã rÊt cÇn cã sù ®ãng gãp cđa ngêi sư dơng ch¬ng tr×nh B NH÷NG MỈT H¹N CHÕ: - Mét sè chøc n¨ng cha ®ỵc bỉ sung - Ch¬ng tr×nh vµ giao diƯn ®ang ®¬n gi¶n - HiƯn DES ®ỵc xem lµ kh«ng ®đ an toµn cho nhiỊu øng dơng Nguyªn nh©n chđ u lµ ®é dµi 56 bit cđa khãa lµ qu¸ nhá Khãa DES ®· tõng bÞ ph¸ vßng cha ®Çy 24 giê §· cã rÊt nhiỊu kÕt qu¶ ph©n tÝch cho thÊy nh÷ng ®iĨm u vỊ mỈt lý thut cđa m· hãa cã thĨ dÉn ®Õn ph¸ khãa, chóng kh«ng kh¶ thi thùc tiƠn Tht to¸n ®ỵc tin tëng lµ an toµn thùc tiƠn cã d¹ng Triple DES (thùc hiƯn DES ba lÇn), mỈc dï trªn lý thut ph¬ng ph¸p nµy vÉn cã thĨ bÞ ph¸ GÇn ®©y DES ®· ®ỵc thay thÕ b»ng AES (Advanced Encryption Standard, hay Tiªu chn M· hãa Tiªn tiÕn) Sinh viªn thùc hiƯn: D¬ng Kh¾c Linh 94 §å ¸n tèt nghiƯp GVHD: Th.s Lª V¨n Minh Trong mét sè tµi liƯu, ngêi ta ph©n biƯt gi÷a DES (lµ mét tiªu chn) vµ tht to¸n DEA (Data Encryption Algorithm, hay Tht to¸n M· hãa D÷ liƯu) - tht to¸n dïng chn DES C H¦íNG PH¸T TRIĨN: - Dïng ng«n ng÷ Visual Basic kÕt hỵp víi c¸c hƯ qu¶n trÞ c¬ së d÷ liƯu kh¸c lín h¬n nh SQL sever, Oracle, - X©y dùng mét ch¬ng tr×nh hoµn thiƯn h¬n, cã nhiỊu chøc n¨ng xư lý tèt h¬n, Do vèn kiÕn thøc chđ u lµ t×m hiĨu nªn ch¬ng tr×nh nãi chung vỊ ph©n tÝch, giao diƯn vµ c¸c kü tht x©y dùng hƯ thèng cßn h¹n chÕ Do ®ã viƯc s¸ng t¹o phÇn mỊm ®Ĩ gi¶i qut yªu cÇu thùc tÕ mµ bµi to¸n ®Ỉt cßn cha tèi u Ch¾c ch¾n cßn nhiỊu thiÕu sãt, rÊt mong nhËn ®ỵc sù chØ b¶o cđa c¸c ThÇy, C« gi¸o vµ c¸c b¹n Mét lÇn n÷a em xin ch©n thµnh c¶m ¬n sù híng dÉn tËn t×nh cđa ThÇy Gi¸o Th.S Lª V¨n Minh, vµ c¸c ThÇy C« gi¸o khoa C«ng nghƯ Th«ng tin, ®· gióp ®ì em hoµn thµnh ®å ¸n nµy TµI LIƯU THAM KH¶O Lª V¨n Minh - Bµi gi¶ng m«n häc An Toµn vµ B¶o MËt Th«ng Tin ViƯn C«ng nghƯ th«ng tin – Trung t©m Khoa häc kü tht vµ C«ng nghƯ Qu©n sù - Bé qc phßng, Tµi liƯu chuyªn s©u vỊ an ninh m¹ng C¸c gi¶i ph¸p lËp tr×nh C# - Ngun Ngäc B×nh Ph¬ng, Th¸i Thanh Phong Ngun ThÞ Ngäc Mai - Visual Basic 6.0 & LËp tr×nh c¬ së d÷ liƯu - Nhµ xt b¶n Lao §éng X· héi 2002 (Ch¬ng tr×nh cã sư dơng mét sè tµi liƯu khai th¸c trªn m¹ng Internet) Sinh viªn thùc hiƯn: D¬ng Kh¾c Linh 95 §å ¸n tèt nghiƯp Sinh viªn thùc hiƯn: D¬ng Kh¾c Linh GVHD: Th.s Lª V¨n Minh 96 [...]... mà chỉ đợc sử dụng để thám các hệ DES có ít vòng hơn Bây giờ ta sẽ mô tả những ý tởng cơ bản của kỹ thuật này Để đạt mục đích thám mã, ta có thể bỏ qua hoán vị khởi tạo IP và hoán vị đảo của nó (bởi vì điều đó không cần thiết cho việc thám mã) Nh đã nhận xét ở trên, ta xét các hệ DES n vòng, với n 16 Trong cài đặt ta có thể coi L0R0 là bản rõ và LnRn nh là bản mã Thám mã vi sai đòi hỏi phải so sánh... ta hy vọng tìm đợc duy nhất một bộ đếm có trị t; trị đó sẽ tơng ứng với trị đúng của các bit khóa trong J1 III 1 Thám Mã Hệ DES - 3 Vòng Bây giờ ta sẽ xét ý tởng vừa trình bày cho việc thám mã hệ DES - ba vòng Ta sẽ bắt đầu với cặp bản rõ và các bản mã tơng ứng: L0R0, L0*R0*, L3R3 và L3*R3* Ta có thể biểu diễn R3 nh sau: R3 = L2 f(R2, K3) = R1 f(R2, K3) = L0 f(R0, K1) f(R2, K3) R3* có thể biểu... R16L16 ta nhận đợc bản mã trong dạng thập lục phân nh sau: 85E813540F0AB405 Sinh viên thực hiện: Dơng Khắc Linh 16 Đồ án tốt nghiệp GVHD: Th.s Lê Văn Minh Chơng III: THáM Mã DES Một phơng pháp rất nổi tiếng trong thám mã DES là thám mã vi sai (differential cryptanalysic) do Biham và Shamir đề xuất Đó là phơng pháp thám với bản rõ đợc chọn Nó không đợc sử dụng trong thực tế để thám mã DES 16 vòng, mà chỉ... ba và ta có thể tiếp tục xây dựng các tập test1, , test8 của các trị có thể có cho các bit khóa trong J1,., J8 Giải thuật vừa xét có thể biểu diễn bởi các mã sau: Input: L0R0, L0*R0*, L3R3 và L3*R3*, với R0 = R0* 1 Tính C = P-1(R3 L0) 2 Tính E = E(L3) và E* = E(L*) 3 for j = 1 to 8 do compute testj(Ej, Ej*, Cj) Việc mã thám sẽ sử dụng một số bộ ba E, E*, C nh vậy Ta sẽ lập tám bảng các bộ đếm và do... Đồ án tốt nghiệp GVHD: Th.s Lê Văn Minh Giao Diện ( Package GiaoDien) Màn hình chính (Mainform.vb) Form lập mã và giải mã DES( Des.vb) Sinh viên thực hiện: Dơng Khắc Linh 23 Đồ án tốt nghiệp GVHD: Th.s Lê Văn Minh Source code một số hàm chính trong form giai mã Des Imports System.IO Public Class des Inherits System.Windows.Forms.Form khai bao bien Dim str As String Dim s(7) As DataTable Dim ip() As String... khóa khi đó có thể tìm đợc hoàn toàn từ 28 = 256 khả năng cho 8 bit khóa Bây giờ ta sẽ minh họa điều đó qua ví dụ sau Ví dụ 3.3 Giả sử ta có ba cặp bản rõ và bản mã, với các bản mã cùng có các xâu x-or đợc mã hóa bởi cùng một khóa Để ngắn gọn ta sử dụng hệ thập lục phân: Bản rõ 748502CD38451097 3874756438451097 486911026ACDFF31 375BD31F6ACDFF31 357418DA013FEC86 12549847013FEC86 Bản mã 03C70306D8A09F10... , K1), và do đó: R3 = L0 f(R2, K3) f(R2*, K3) Sinh viên thực hiện: Dơng Khắc Linh 19 Đồ án tốt nghiệp GVHD: Th.s Lê Văn Minh ở điểm này R3 là đợc biết khi nó có thể tính đợc từ hai bản mã, và L 0 là biết đợc khi nó có thể tính đợc từ hai bản rõ Nghĩa là ta có thể tính đợc f(R2,K3)f(R2*,K3) từ phơng trình: f(R2, K3) f(R2*, K3) = R3 L0 Bây giờ f(R2, K3) = P(C) và f(R2*, K3) = P(C*), với C và C* tơng... là hoán vị đợc biết công khai) Nên: P(C) P(C*) = R3 L0 và kết quả là: C = C C* = P-1(R3 L0) (1) Đó là xâu xuất x-or cho tám S-hộp trong vòng ba Bây giờ, R2 = L3 và R2* = L3* là đã biết (chúng là một phần của các bản mã) Từ đây ta có thể tính: E = E(L3) (2) và E* = E(L3*) (3) sử dụng hàm mở rộng E đợc biết công khai Chúng là những xâu nhập cho các Shộp cho vòng ba Nh vậy giờ ta đã biết E, E*, và. .. sử dụng trong các vòng khác nhau II 2 Lập Mã DES Đây là ví dụ về việc lập mã sử dụng DES Giả sử ta mã hóa bản rõ sau trong dạng thập lục phân (Hexadecimal) 0123456789ABCDEF sử dụng khóa thập lục phân 133457799BBCDFF1 Khóa trong dạng nhị phân không có các bit kiểm tra sẽ là: 00010010011010010101101111001001101101111011011111111000 Ap dụng IP, ta nhận đợc L0 và R0 (trong dạng nhị phân) : L0 L1 = R 0... GVHD: Th.s Lê Văn Minh E = E1E2E3E4E5E6E7E8 J = J1J2J3J4J5J6J7J8 * và ta cũng sẽ viết B và E* nh vậy Bây giờ giả sử là ta đã biết các trị E j và Ej* với một j nào đó, 1 j 8, và trị của xâu xuất x-or cho S j, Cj = Sj(Bj) Sj(Bj* ) Khi đó sẽ là: Ej Jj INj(Ej, Cj), * với Ej = Ej Ej Định nghĩa 3.4: Giả sử Ej và Ej* là các xâu bit độ dài 6, và C j là xâu bit độ dài 4 Ta định nghĩa: testj(Ej, Ej*, Cj) = ... M· Th«ng Dơng: .5 II LËp M· DES .14 Ch¬ng III: TH¸M M· DES 17 III Th¸m M· HƯ DES - Vßng 19 III Ch¬ng Tr×nh HƯ M· DES - Vßng 22 Giao DiƯn ( Package... Ch¬ng Tr×nh M· Hãa Vµ B¶o MËt Th«ng Tin HƯ M· Chn DES Néi dung §Ị Tµi gåm PhÇn: PhÇn 1: T×m HiĨu C¸c HƯ M· Vµ HƯ M· Chn DES PhÇn 2: X©y Dùng Ch¬ng Tr×nh M· Hãa DES Sinh viªn thùc hiƯn: D¬ng Kh¾c... häc E lªn th«ng tin P, vèn ®ỵc biĨu diƠn díi d¹ng sè, ®Ĩ trë thµnh th«ng tin ®· m· hãa C Qu¸ tr×nh gi¶i m· ®ỵc tiÕn hµnh ngỵc l¹i: ¸p dơng hµm D lªn th«ng tin C ®Ĩ ®ỵc th«ng tin ®· gi¶i m· P

Ngày đăng: 15/12/2015, 08:27

Từ khóa liên quan

Mục lục

  • E bảng chọn bit

  • P

  • PC-1

    • PC-2

    • Bản rõ

  • Chương IV: ĐáNH GIá KếT QUả Và HƯớNG PHáT TRIểN

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

  • Đang cập nhật ...

Tài liệu liên quan