Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 122 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
122
Dung lượng
814,16 KB
Nội dung
http://kilobooks.com ĐỒ ÁN BẢO MẬT THÔNG TIN THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN HỆ MÃ DES OBO OK S CO M MỤC LỤC KIL I Giới thiệu I.2 Các Hệ Mã Thông Dụng: e Phương pháp Affine f Phương pháp Vigenere I.2 LẬP MÃ DES 14 I THÁM MÃ DES 17 I.3.1 Thám mã hệ DES - vòng 20 II.3.2 Thám mã hệ DES 6-vòng 24 II.3 Các thám mã vi sai khác 28 III CÀI ĐẶT THÁM MÃ DES VÒNG 28 III.1 Giao Diện 28 III.2 XỬ LÝ NGÔ THỊ TUYẾT HÀ – T012825 http://kilobooks.com THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN KIL OBO OKS CO M ĐỒ ÁN BẢO MẬT THÔNG TIN HỆ MÃ DES LỜI NÓI ĐẦU Hiện nay, nước ta giai đoạn tiến hành công nghiệp hóa, đại hóa đất nước Tin học xem ngành mũi nhọn Tin học đóng góp nhiều cho xã hội khía cạnh sống Mã hóa thông tin ngành quan trọng có nhiều ứng dụng đời sống xã hội Ngày nay, ứng dụng mã hóa bảo mật thông tin sử dụng ngày phổ biến lónh vực khác Thế giới, từ lónh vực an ninh, quân sự, quốc phòng…, lónh vực dân thương mại điện tử, ngân hàng… Ứng dụng mã hóa bảo mật thông tin hệ thống thương mại điện tử, giao dòch chứng khoán,… trở nên phổ biến giới ngày trở nên quen thuộc với người dân Việt Nam Tháng 7/2000, thò trường chứng khoán lần hình thành Việt Nam; thẻ tín dụng bắt đầu sử dụng, ứng dụng hệ thống thương mại điện tử bước đầu quan tâm xây dựng Do đó, nhu cầu ứng dụng mã hóa bảo mật thông tin trở nên cần thiết NGÔ THỊ TUYẾT HÀ – T012825 http://kilobooks.com I THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN KIL OBO OKS CO M ĐỒ ÁN BẢO MẬT THÔNG TIN HỆ MÃ DES MỘT SỐ PHƯƠNG PHÁP MÃ HÓA I Giới thiệu Đònh nghóa 1.1: Một hệ mã mật (cryptosystem) bộ-năm (P, C, K, E, D) thỏa mãn điều kiện sau: P không gian rõ tập hợp hữu hạn tất mẩu tin nguồn cần mã hóa có C không gian mã tập hợp hữu hạn tất mẩu tin có sau mã hóa K không gian khoá tập hợp hữu hạn khóa sử dụng Với khóa k∈K, tồn luật mã hóa ek∈E luật giải mã dk∈D tương ứng Luật mã hóa ek: P → C luật giải mã ek: C → P hai ánh xạ thỏa mãn d k ( ek ( x ) ) = x, ∀ x ∈ P Tính chất tính chất quan trọng hệ thống mã hóa Tính chất bảo đảm việc mã hóa mẩu tin x∈P luật mã hóa ek∈E giải mã xác luật dk∈D Đònh nghóa 1.2: Zm đònh nghóa tập hợp {0, 1, , m-1}, trang bò phép cộng (ký hiệu +) phép nhân (ký hiệu ×) Phép cộng phép nhân Zm thực tương tự Z, ngoại trừ kết 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 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 Zm Phép cộng đóng Zm, i.e., ∀ a, b ∈ Zm, a+b ∈ Zm Tính giao hoán phép cộng Zm, i.e., ∀ a, b ∈ Zm, a+b =b+a Tính kết hợp 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 0, i.e., ∀ a ∈ Zm, a+0=0+a=a Mọi phần tử a Zm có phần tử đối m – a Phép nhân đóng Zm, i.e., ∀ a, b ∈ Zm, b∈ Zm Tính giao hoán phép cộng Zm, i.e., ∀ a, b ∈ Zm, b=b×a Tính kết hợp phép cộng Zm, i.e., ∀ a, b, c ∈ Zm, (b)×c =(b×c) Zm có phần tử đơn vò 1, i.e., ∀ a ∈ Zm, 1=1×a=a 10 Tính phân phối phép nhân phép cộng, i.e., ∀ a, b, c ∈ Zm, (a+b)×c =(c)+(b×c) 11 Zm 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ó tính chất (1) – (10) nên tạo thành vành I.2 Các Hệ Mã Thông Dụng: a Hệ Mã Đầy (Shift Cipher ) NGÔ THỊ TUYẾT HÀ – T012825 http://kilobooks.com ĐỒ ÁN BẢO MẬT THÔNG TIN THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN HỆ MÃ DES Shift Cipher phương pháp lâu đời sử dụng để mã hóa Thông điệp mã hóa cách dòch chuyển (xoay vòng) ký tự k vò trí bảng chữ KIL OBO OKS CO M Phương pháp Shift Cipher Cho P = C = K = Z26 Với ≤ K ≤ 25, ta đònh nghóa eK = x + K mod 26 dK = y - K mod 26 (x,y ∈ Z26) 26 số ký tự bảng chữ La tinh, cách tương tự đònh nghóa cho bảng chữ Đồng thời ta dễ dàng thấy mã đẩy hệ mật mã dK(eK(x)) = x với x∈Z26 b Hệ KEYWORD-CEASAR Trong hệ mã khóa từ chọn trước, ví dụ PLAIN Từ xác đònh dãy số nguyên Z26 (15,11,0,8,13) tương ứng với vò trí chữ chữ chọn bảng chữ Bây rõ mã hóa cách dùng hàm lập mã theo thứ tự: e15, e11, e0, e8, e13, e15, e11, e0, e8, e, với eK hàm lập mã hệ mã chuyển c Hệ Mã Vuông (SQUARE) Trong hệ từ khóa dùng theo cách khác hẳn Ta dùng bảng chữ tiếng Anh (có thể bỏ chữ Q, muốn tổng số chữ số số phương) đòi hỏi chữ từ khóa phải khác Bây chữ bảng chữ viết dạng hình vuông, khóa chữ lại theo thứ tự bảng chữ d Mã vò Một hệ mã khác tiếng Hệ mã sử dụng hàng trăm năm Phương pháp : Cho P = C = Z26 K gồm tất hoán vò có 26 ký hiệu 0, ,25 Với hoán vò π∈K, ta đònh nghóa: eπ(x) = π(x) đònh nghóa dπ(y) = π-1(y) với π -1 hoán vò ngược hoán vò π Trong mã vò ta lấy P C bảng chữ La tinh Ta sử dụng Z26 mã đẩy lập mã giải mã phép toán đại số e Phương pháp Affine Cho P = C = Z26 cho NGÔ THỊ TUYẾT HÀ – T012825 http://kilobooks.com THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN ĐỒ ÁN BẢO MẬT THÔNG TIN 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 dK = a-1(y-b) mod 26 KIL OBO OKS CO M HỆ MÃ DES (x,y ∈ Z26) Phương pháp Affine lại trường hợp đặc biệt khác Substitution Cipher Để giải mã xác thông tin mã hóa hàm ek∈ E ek phải song ánh Như vậy, với giá trò y∈Z26, phương trình ax+b≡y (mod 26) phải có nghiệm x∈Z26 Phương trình ax+b≡y (mod 26) tương đương với ax≡(y–b ) (mod 26) Vậy, ta cần khảo sát phương trình ax≡(y–b ) (mod 26) Đònh lý1.1: Phương trình ax+b≡y (mod 26) có nghiệm x∈Z26 với giá trò b∈Z26 a 26 nguyên tố Vậy, điều kiện a 26 nguyên tố bảo đảm thông tin mã hóa hàm ek giải mã giải mã cách xác Gọi φ(26) số lượng phần tử thuộc Z26 nguyên tố với 26 m Đònh lý 1.2: Nếu n = ∏ piei với pi số nguyên tố khác ei ∈ Z+, ≤ i ≤ m i =1 m φ (n ) = ∏ ( piei − piei −1 ) i =1 Trong phương pháp mã hóa Affine , ta có 26 khả chọn giá trò b, φ(26) khả chọn giá trò a Vậy, không gian khóa K có tất nφ(26) phần tử Vấn đề đặt cho phương pháp mã hóa Affine Cipher để giải mã thông tin 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 từ khóa (keyword) có độ dài m Có thể xem phương pháp mã hóa Vigenere Cipher bao gồm m phép mã hóa Shift Cipher áp dụng luân phiên theo chu kỳ Không gian khóa K phương pháp Vigenere có số phần tử 26, lớn hẳn phương pháp số lượng phần tử 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 mã hóa khó khăn phương pháp Shift Cipher Phương pháp mã hóa Vigenere Cipher 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 khóa k = (k0, k1, , kr-1) ∈ K, đònh nghóa: NGÔ THỊ TUYẾT HÀ – T012825 http://kilobooks.com THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN ĐỒ ÁN BẢO MẬT THÔNG TIN HỆ MÃ DES 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 KIL OBO OKS CO M g Hệ mã Hill Phương pháp Hill Cipher 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 m thành phần, thành phần thuộc Z26 Ý tưởng phương pháp sử dụng m tổ hợp tuyến tính m thành phần 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 K tập hợp ma trận m×m khả nghòch k1,1 k 2,1 Với khóa k = M k m,1 L k1,m L k ,m ∈ K , đònh nghóa: M k m, L k m,m k1,1 k1, L k1,m k 2,1 L L k 2,m ek ( x ) = xk = ( x1 , x2 , , xm ) với x=(x1, x2, , xm) ∈ P M M M k m,1 k m, L k m ,m k1, L M dk(y) = yk–1 với y∈ C Mọi phép toán số học thực Zn h Mã hoán vò Những phương pháp mã hóa nêu dựa ý tưởng chung: thay ký tự thông điệp nguồn ký tự khác để tạo thành thông điệp mã hóa Ý tưởng phương pháp mã hoán vò giữ nguyên ký tự thông điệp nguồn mà thay đổi vò trí ký tự; nói cách khác thông điệp nguồn mã hóa cách xếp lại 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 K tập hợp hoán vò m phần tử {1, 2, , m} Với khóa π ∈ K, đònh nghóa: eπ ( x1 , x , , x m ) = xπ (1) , xπ (2 ) , xπ (m ) ( NGÔ THỊ TUYẾT HÀ – T012825 ) http://kilobooks.com THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN ĐỒ ÁN BẢO MẬT THÔNG TIN ( dπ ( y1 , y , , y m ) = yπ −1 (1) , yπ −1 (2 ) , yπ −1 (m ) HỆ MÃ DES ) với π–1 hoán vò ngược π KIL OBO OKS CO M Phương pháp mã hoán vò trường hợp đặc biệt phương pháp Hill Với hoán vò π 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π ma trận mà dòng cột có phần tử mang giá trò 1, phần tử lại ma trận Ma trận thu cách hoán vò hàng hay cột ma trận đơn vò Im nên kπ ma trận khả nghòch Rõ ràng, mã hóa phương pháp Hill với ma trận kπ hoàn toàn tương đương với mã hóa phương pháp mã hoán vò với hoán vò π d Mã vòng Trong hệ trước cách thức phần tử rõ mã hóa với khóa K Như xâu mã y có dạng sau: y = y1y2 = eK(x1) eK(x2) Các hệ mã loại thường gọi mã khối (block cipher) Còn hệ mã dòng Ý tưởng sinh chuỗi khóa z = z1z2 , sử dụng để mã hóa xâu rõ x = x1x2 theo qui tắc sau: y = y1 y = e z1 ( x1 )e z2 ( x ) I.3 Quy trình thám mã: Cứ phương pháp mã hoá ta lại có phương pháp thám mã tương ứng nguyên tắc chung để việc thám mã thành công yêu cầu người thám mã phải biết hệ mã dùng hoá Ngoài ta phải biết mã rõ ứng nhìn chung hệ mã đối xứng dễ cài đặt với tốc độ thực thi nhanh Tính an toàn phụ thuộc vào yếu tố : • Không gian khoá phải đủ lớn • với phép trộn thích hợp hệ mã đối xứng tạo hệ mã có tính an toàn cao • bảo mật cho việc truyền khóa cần xử lý cách nghiêm túc Và hệ mã hoá liệu đời (DES) DES xem chuẩn mã hóa liệu cho ứng dụng từ ngày 15 tháng năm 1977 Ủy ban Quốc gia Tiêu chuẩn Mỹ xác nhận năm lần lại có chỉnh sửa, bổ sung DES hệ mã trộn phép hoán vò với phép trộn thích hợp việc giải mã lại toán khó Đồng thời việc cài đặt hệ mã cho ứng dụng thực tế lại thuận lợi Chính lý ứng dụng rộng rãi DES suốt 20 năm qua, Mỹ mà khắp giới Mặc dù theo công bố (năm 1998) hệ DES, với khả máy tính nay, bẻ khóa Tuy nhiên DES mô hình chuẩn cho ứng dụng bảo mật thực tế NGÔ THỊ TUYẾT HÀ – T012825 http://kilobooks.com THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN ĐỒ ÁN BẢO MẬT THÔNG TIN HỆ MÃ DES II HỆ MÃ CHUẨN DES (Data Encryption Standard) KIL OBO OKS CO M II.1 Đặ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 từ có y 64 bit Thuật 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) cách hoán vò bit từ x theo 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 x0, R0 gồm 32 bit bên phải x0 L0 R0 x0 Hình.1 Biểu diễn dãy 64 bit x thành thành phần L R Xác đònh 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 hai dãy bit, K1, K2, , K16 dãy 48 bit phát sinh từ khóa K cho trước (Trên thực tế, khóa Ki phát sinh cách hoán vò bit khóa K cho trước) Li-1 Ri-1 f Ki ⊕ Li Ri Hình.2 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 dãy bit R16L16, thu từ y gồm 64 bit Như vậy, y = IP-1 (R16L16) NGÔ THỊ TUYẾT HÀ – T012825 http://kilobooks.com THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN HỆ MÃ DES KIL OBO OKS CO M ĐỒ ÁN BẢO MẬT THÔNG TIN Hàm f sử dụng bước A J E E(A) + B1 B2 B3 S1 S2 S3 C1 B4 B5 S5 S4 B7 S6 B8 S7 C2 C3 C4 C5 C6 C7 C8 P f(A,J) NGÔ THỊ TUYẾT HÀ – T012825 B6 S8 http://kilobooks.com THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN ĐỒ ÁN BẢO MẬT THÔNG TIN HỆ MÃ DES KIL OBO OKS CO M Hàm f có gồm tham số: Tham số thứ A dãy 32 bit, tham số thứ hai J dãy 48 bit Kết hàm f dãy 32 bit Các bước xử lý hàm f(A, J)như sau: • Tham số thứ A (32 bit) mở rộng thành dãy 48 bit hàm mở rộng E Kết hàm E(A) dãy 48 bit phát sinh từ A cách hoán vò theo thứ tự đònh 32 bit A, có 16 bit A lập lại lần E(A) • Thực phép toán XOR cho dãy 48 bit E(A) J, ta thu dãy 48 bit B Biểu diễn B thành nhóm bit sau:B = B1B2B3B4B5B6B7B8 • Sử dụng ma trận S1, S2, , S8, ma trận Si có kích thước 4×16 dòng ma trận nhận đủ 16 giá trò từ đến 15 Xét dãy gồm bit Bj = b1b2b3b4b5b6, Sj(Bj) xác đònh giá trò phần tử dòng r cột c Sj, đó, số dòng r có biểu diễn nhò phân b1b6, số cột c có biểu diễn nhò phân b2b3b4b5 Bằng cách này, ta xác đònh dãy bit Cj = Sj(Bj), ≤ j ≤ • Tập hợp dãy bit Cj lại ta có dãy 32 bit C = C1C2C3C4C5C6C7C8 Dãy 32 bit thu cách hoán vò C theo quy luật P đònh kết hàm F(A, J) hàm sử dụng DES Hoán vò khởi tạo IP sau: IP 58 60 62 64 57 59 61 63 50 52 54 56 49 51 53 55 42 44 46 48 41 43 45 47 34 36 38 40 33 35 37 39 26 28 30 32 25 27 29 31 18 20 22 24 17 19 21 23 10 12 14 16 11 13 15 Điều có nghóa bit thứ 58 x bit IP(x); bit thứ 50 x bit thứ hai IP(x) v.v Hoán vò ngược IP-1 là: 40 39 38 37 36 35 NGÔ THỊ TUYẾT HÀ – T012825 48 47 46 45 44 43 IP-1 16 15 14 13 12 11 56 55 54 53 52 51 24 23 22 21 20 19 64 63 62 61 60 59 32 31 30 29 28 27 http://kilobooks.com ĐỒ ÁN BẢO MẬT THÔNG TIN THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN HỆ MÃ DES Hàm tạo khoá vòng Function khoavong3() As String KIL OBO OKS CO M 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 lbthongbao.Text = "Nhạp thêm bạn mã bạn rõ, chạa xác đạnh đạạc phạn tạ max jhạp" btthamma.Enabled = False txtbanro.Focus() n += 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 NGÔ THỊ TUYẾT HÀ – T012825 http://kilobooks.com ĐỒ ÁN BẢO MẬT THÔNG TIN THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN HỆ MÃ DES Exit Function End If Next KIL OBO OKS CO M khoav3 += binary(vitrimax, 6) 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 chuỗi khoá Sub taochuoikhoa(ByVal c As String) If flag = False Then Exit Sub NGÔ THỊ TUYẾT HÀ – T012825 http://kilobooks.com ĐỒ ÁN BẢO MẬT THÔNG TIN THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN HỆ MÃ DES End If Dim chuoibinary(255) As String KIL OBO OKS CO M 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 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() NGÔ THỊ TUYẾT HÀ – T012825 http://kilobooks.com ĐỒ ÁN BẢO MẬT THÔNG TIN THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN HỆ MÃ DES Dim tam(63), b, bsao, c, csao, cphaytam As String Dim i As Integer KIL OBO OKS CO M 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) 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ý kiện Private Sub btthamma_Click(ByVal sender As System.Object, ByVal ee As System.EventArgs) Handles btthamma.Click ReDim banro(n) NGÔ THỊ TUYẾT HÀ – T012825 http://kilobooks.com ĐỒ ÁN BẢO MẬT THÔNG TIN THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN HỆ MÃ DES ReDim banma(n) ReDim e((n - 1) / 2) KIL OBO OKS CO M 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 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 NGÔ THỊ TUYẾT HÀ – T012825 http://kilobooks.com ĐỒ ÁN BẢO MẬT THÔNG TIN THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN HỆ MÃ DES Dim strbanro As String strbanro += "748502CD38451097" + Chr(13) + Chr(10) KIL OBO OKS CO M 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 cuối 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) NGÔ THỊ TUYẾT HÀ – T012825 http://kilobooks.com ĐỒ ÁN BẢO MẬT THÔNG TIN THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN HỆ MÃ DES Next i=i+8 KIL OBO OKS CO M 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)) NGÔ THỊ TUYẾT HÀ – T012825 http://kilobooks.com ĐỒ ÁN BẢO MẬT THÔNG TIN THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN HỆ MÃ DES Next i End Sub KIL OBO OKS CO M Hàm xử lý chuỗi 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) 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) NGÔ THỊ TUYẾT HÀ – T012825 http://kilobooks.com THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN ĐỒ ÁN BẢO MẬT THÔNG TIN HỆ MÃ DES Dim a As String = f(r(i - 1), daykhoa(i)) For j = To 31 KIL OBO OKS CO M 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 1)).ToString Next += (hv.Substring(i, 1) Xor daykhoa_k.Substring(i, Dim b(7) As String Dim c As String For i = To b(i) = e.Substring(i * 6, 6) 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) NGÔ THỊ TUYẾT HÀ – T012825 http://kilobooks.com ĐỒ ÁN BẢO MẬT THÔNG TIN THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN Next Return hoanvi_p(c) Hàm đổi chữ KIL OBO OKS CO M 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 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 - NGÔ THỊ TUYẾT HÀ – T012825 HỆ MÃ DES http://kilobooks.com ĐỒ ÁN BẢO MẬT THÔNG TIN THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN so = For j = i To i + KIL OBO OKS CO M If tam.Substring(j, 1) = Then so += ^ (3 - (j - i)) End If Next tam1 += chucai(so) i=i+4 End While Return tam1 End Function Chữ 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" NGÔ THỊ TUYẾT HÀ – T012825 HỆ MÃ DES http://kilobooks.com ĐỒ ÁN BẢO MẬT THÔNG TIN THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN Case Return "7" KIL OBO OKS CO M Case Return "8" Case Return "9" Case 10 Return "A" Case 11 Return "B" Case 12 Return "C" Case 13 Return "D" Case 14 Return "E" Case 15 Return "F" End Select End Function Hàm chuyển mã asc Function asc(ByVal a As Char) Select Case a Case "0" asc = Case "1" asc = Case "2" NGÔ THỊ TUYẾT HÀ – T012825 HỆ MÃ DES http://kilobooks.com ĐỒ ÁN BẢO MẬT THÔNG TIN THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN asc = Case "3" KIL OBO OKS CO M 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 Case "D" asc = 13 Case "E" asc = 14 Case "F" asc = 15 End Select NGÔ THỊ TUYẾT HÀ – T012825 HỆ MÃ DES http://kilobooks.com ĐỒ ÁN BẢO MẬT THÔNG TIN THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN HỆ MÃ DES End Function Hàm chọn khoá KIL OBO OKS CO M 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 NGÔ THỊ TUYẾT HÀ – T012825 http://kilobooks.com ĐỒ ÁN BẢO MẬT THÔNG TIN THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN btthamma.Enabled = True lbthongbao.Text = "" End Class KIL OBO OKS CO M End Sub NGÔ THỊ TUYẾT HÀ – T012825 HỆ MÃ DES [...]... J2J5J6J7J8 độ dài 30 là được đề xuất bởi cặp nếu Jj ∈ testj với j = 2,5,6,7,8 Số các cặp được đề xuất là: ∏ test j j∈ 2 , 5 , 6 , 7 , 8 Đó là bình thường với số xâu bit được đề xuất là khá lớn (Chẳng hạn lớn hơn 80000) Giả sử, ta lập bảng cho tất cả các xâu được đề xuất nhận được từ N cặp, mà không bò loại bởi phép lọc Với mỗi cặp đúng, thì xâu bit đúng J2J5J6J7J8 sẽ là xâu được đề xuất Xâu bit đúng sẽ... còn lại PC-2 là một hoán vò cố đònh khác Việc tính lòch khóa được minh họa như hình vẽ sau: K PC-1 C0 LS1 C1 LS2 D0 LS1 D1 PC-2 K1 PC-2 K16 LS2 LS16 C16 LS16 D16 Các hoán vò PC-1 và PC-2 được sử dụng trong việc tính lòch khóa là như sau: PC-1 57 1 10 49 58 2 NGÔ THỊ TUYẾT HÀ – T012825 41 50 59 33 42 51 25 34 43 17 26 35 9 18 27 http://kilobooks.com THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN ĐỒ ÁN BẢO MẬT THÔNG TIN... 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ỉ đượ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... http://kilobooks.com ĐỒ ÁN BẢO MẬT THÔNG TIN THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN HỆ MÃ DES KIL OBO OKS CO M Ta hãy xét đặc trưng sau một cách chi tiết hơn Khi f(R0, K1) và f(R0*, K1) được tính, bước đầu tiên là mở rộng R0 và R0* Xâu x-or kết quả của hai mở rộng là: 001100 0 Tức là xâu x-or nhập cho S1 là 001100 và các xâu x-or cho bảy S-hộp khác đều là 000000 Các xâu xuất x-or cho S2 đến S8 đều là 0000 Xâu xuất... T012825 http://kilobooks.com THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN ĐỒ ÁN BẢO MẬT THÔNG TIN HỆ MÃ DES KIL OBO OKS CO M mỗi byte chứa số lẻ các số 1 Vì vậy, từng lỗi có thể được phát hiện trong mỗi 8 bit Các bit kiểm tra sự bằng nhau là được bỏ qua khi tính lòch khóa 1 Cho khóa 64 bit K, loại bỏ các bit kiểm tra và hoán vò các bit còn lại của K tương ứng với hoán vò (cố đònh) PC-1 Ta viết PC-1(K) = C0D0, với C0 bao... TỬ TRỰC TUYẾN ĐỒ ÁN BẢO MẬT THÔNG TIN HỆ MÃ DES ∑T i j i∈ I KIL OBO OKS CO M Nếu cặp thứ i là cặp đúng cho mỗi i∈I, thì tập I là chấp nhận được Do đó ta cho rằng tập chấp nhận được có kích thước (xấp xỉ) 3N/16, là tập đề xuất và ta hy vọng là chỉ gồm các bit khóa đúng chứ không có các xâu khác Điều này làm đơn giản hóa cho việc xây dựng tất cả các tập chấp nhận được I bằng một thuật toán đệ qui II.3...http://kilobooks.com THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN ĐỒ ÁN BẢO MẬT THÔNG TIN 34 33 2 1 HỆ MÃ DES 42 41 10 9 50 49 18 17 58 57 26 25 KIL OBO OKS CO M Hàm mở rộng E được đặc tả theo bảng sau: 32 4 8 12 16 20 24 28 1 5 9 13 17 21 25 29 E – bảng chọn bit 2 3 6 7 10 11 14 15 18 19 22 23 26 27 30 31 4 8 12 16 20 24 28 32 5 9 13 17 21 25 29 1 Tám S-hộp và hoán vò P sẽ được biểu diễn như sau: S1 14 0 4 15 4 15... http://kilobooks.com THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN ĐỒ ÁN BẢO MẬT THÔNG TIN HỆ MÃ DES KIL OBO OKS CO M Input: L0R0, L0*R0*, L6R6 và L6*R6*; với L0’ = 4008000016 và R0’ = 0400000016 1 Tính C’ = P-1(R6’ ⊕ 0400000016) 2 Tính E = E(L6) và E* = E(L6*) 3 for j ∈ {2,5,6,7,8} do tính testj( Ej, Ej*, Cj’) Ta cũng sẽ xác đònh 30 bit khóa trong J2, J5, J6, J7 và J8 như trong thám mã 3-vòng Bài toán, để xâu xuất x-or giả đònh cho... ∈ (Z2) 6 } NGÔ THỊ TUYẾT HÀ – T012825 http://kilobooks.com THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN ĐỒ ÁN BẢO MẬT THÔNG TIN HỆ MÃ DES KIL OBO OKS CO M Với mỗi cặp trong ∆(Bj’), ta có thể tính xâu x-or xuất của Sj và lập được phân bố kết quả Có 64 xâu xuất x-or, được phân bố trong 24 = 16 giá trò có thể có Tính không đồng đều của các phân bố đó là cơ sở để mã thám Ví dụ 3.1: Giả sử ta xét S1 là S-hộp đầu tiên và... khoảng 3N/16 lần Xâu bit sai thường xuất hiện ít hơn, bởi vì chúng xuất hiện ngẫu nhiên và có khoảng 230 khả năng (Là một số rất lớn.) Ta nhận được một bảng cực lớn tất cả các xâu được đề xuất, nên ta sử dụng một thuật toán chỉ đòi hỏi một không gian và thời gian ít nhất Ta có thể mã hóa bất kỳ một tập testj nào thành một véc tơ Tj có độ dài 64, với tọa độ thứ i của Tj được đặt bằng 1 (0≤ i≤63), nếu xâu ... Ln’, Rn’, pn thỏa mãn điều kiện sau: Li’ = Ri-1’ với ≤ i ≤ n Cho ≤ i ≤ n Li-1, Ri-1 L*i-1, R*i-1 chọn cho Li-1 ⊕ L*i-1 = L’i-1 Ri-1 ⊕ R*i-1 = R’i-1 Giả sử Li, Ri Li* , Ri* tính nhờ việc áp dụng... với hoán vò (cố đònh) PC-1 Ta viết PC-1(K) = C0D0, với C0 bao gồm 28 bit PC-1(K) D0 28 bit lại Với i nằm khoảng từ đến 16, ta tính Ci = LSi(Ci-1) Di = LSi(Di-1) Ki = PC-2(CiDi), LSi biểu diễn... trường hợp lại PC-2 hoán vò cố đònh khác Việc tính lòch khóa minh họa hình vẽ sau: K PC-1 C0 LS1 C1 LS2 D0 LS1 D1 PC-2 K1 PC-2 K16 LS2 LS16 C16 LS16 D16 Các hoán vò PC-1 PC-2 sử dụng việc tính