1. Trang chủ
  2. » Công Nghệ Thông Tin

Đồ án bảo mật thông tin mã hóa DES

122 627 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 122
Dung lượng 3,32 MB

Nội dung

Mã hóa thông tin là 1 ngành quan trọng và có nhiều ứng dụng trong đờ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 trong các lĩnh vực khác nhau trên thế giới

MỤC LỤC I Giới thiệu I.2 Các Hệ Mã Thông Dụng: e Phương pháp Affine .4 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 23 II.3 Các thám mã vi sai khác 28 III HỆ MÃ DES VÒNG 28 III.1 Giao Diện ( Package GiaoDien) 28 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 I 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ó 2.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 4.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 ) 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ữ 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 Z 26 (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 Z 26 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 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 (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 i Đònh lý 1.2: Nếu n = ∏ pi với pi số nguyên tố khác ei ∈ Z+, ≤ i ≤ m m ( φ ( n ) = ∏ piei − piei −1 i =1 e 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: 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 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 k = Với khóa    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   m,1 k m,  k m,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 , , xm ) = xπ ( 1) , xπ ( ) , xπ ( m ) ( ( ) d π ( y1 , y , , y m ) = yπ −1 ( 1) , yπ −1 ( ) , yπ −1 ( m ) ) với π–1 hoán vò ngược π 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 = z 1z2 , 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ế II HỆ MÃ CHUẨN DES (Data Encryption Standard) 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 L R 0 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) L i-1 R i-1 K f i ⊕ L i R i 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) Hàm f sử dụng bước A J E E(A) + B1 B2 S1 B3 S2 C1 S3 B4 B5 B6 S5 S4 B7 B8 S6 S7 S8 C2 C3 C4 C5 C6 C7 C8 P f(A,J) 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 34 33 48 47 46 45 44 43 42 41 IP-1 16 15 14 13 12 11 10 56 55 54 53 52 51 50 49 Hàm mở rộng E đặc tả theo bảng sau: 24 23 22 21 20 19 18 17 64 63 62 61 60 59 58 57 32 31 30 29 28 27 26 25 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 lbthongbao.Text = "Nhập thêm mã rõ, chưa xác đ ịnh 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 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 chuỗi khoá Sub taochuoikhoa(ByVal c As String) If flag = False Then Exit Sub End If Dim chuoibinary(255) As String 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() 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) 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) 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 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 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) Next i=i+8 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ý 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) 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) 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 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" Case Return "7" 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" 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 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 [...]... việc tính lòch khóa Như đã nhận xét ở trên, mỗi vòng sử dụng khóa 48 bit tương ứng với 48 bit trong K Các thành phần trong các bảng sau sẽ chỉ ra các bit trong K được sử dụng trong các vòng khác nhau I.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ò... dụng IP-1 cho R16L16 ta nhận được bản mã trong dạng thập lục phân như sau: 85E813540F0AB405 I 3 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ỉ được sử dụng để thám các hệ DES có ít vòng hơn Bây giờ ta sẽ mô... 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 x-or (exclusive-or) của hai bản rõ với x-or của hai bản mã tương ứng Nói chung, ta sẽ quan... 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 đó xác đònh được 48 bit trong K3, là khóa cho vòng ba 56 bit trong 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... bit khóa chưa biết Khóa đầy đủ (trong dạng thập lục phân, gồm cả bit kiểm tra) sẽ là: 1A624C89520DEC46 II.3.2 Thám mã hệ DES 6-vòng Bây giờ ta sẽ mô tả việc mở rộng ý tưởng trên cho việc thám mã trên hệ DES 6-vòng Ý tưỏng ở đây là lựa chọn một cách cẩn thận cặp bản rõ với xâu x-or đặc thù và sau đó xác đònh các xác suất của các dãy đặc thù của các xâu x-or qua các vòng lập mã Bây giờ ta cần đònh nghóa... 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 3 Các thám mã vi sai khác Phương pháp thám mã vi sai còn có thể áp dụng để thám các hệ DES nhiều vòng hơn Với hệ DES 8-vòng đòi hỏi 214 bản rõ chọn và các hệ 10-, 12-, 14- và 16-vòng đòi hỏi có tương ứng 224, 231, 239 và 247 bản mã chọn Nên nói... xác đònh tùy ý (nhưng cố đònh) được đặc tả bằng xâu x-or, với 48 bit khóa cho một vòng lập mã DES là có 248 khả năng Do đó việc thám mã sẽ nhằm vào việc xác đònh khóa cố đònh (nhưng chưa biết) Do đó cần cố chọn các bản mã ngẫu nhiên (nhưng chúng có các xâu xor được đặc tả), hy vọng rằng các xác suất để các xâu x-or trong n vòng lập mã trùng hợp với các xâu x-or, được đặc tả trong đặc trưng, từng đôi... thám mã vi sai được Biham và Shamir phát triển Các phương pháp thám mã DES khác đã được Matsui sử dụng như là thám mã tuyến tính III HỆ MÃ DES 3 VÒNG Chương trình gồm hai phần: • Phần Giao Diên (chứa trong thư mục GiaoDien): Có chức năng xử lý giao diện • Phần Xử Lý (chứa trong thư mục XuLy): có chức năng hộ trợ các hàm xử lý III.1 Giao Diện ( Package GiaoDien) a Màn hình chính (Mainform.vb) Form lập mã. .. bộ ba cụ thể Cho t bộ ba, 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 I.3.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,... Lý (chứa trong thư mục XuLy): có chức năng hộ trợ các hàm xử lý III.1 Giao Diện ( Package GiaoDien) a Màn hình chính (Mainform.vb) Form lập mã và giải mã DES( Des.vb) 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 'Dim iptru() As String Dim e() As String

Ngày đăng: 12/06/2016, 11:37

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w