Mật mã hóa dữ liệu bằng phương pháp mã hóa DES – Luận văn, đồ án, đề tài tốt nghiệp
59 trang | Chia sẻ : lvcdongnoi
| Lượt xem: 6992
| Lượt tải : 5
Bạn đang xem trước 20 trang tài liệu Mật mã hóa dữ liệu bằng phương pháp mã hóa DES, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
key Khóa bí hiểm Substtution Cipher Mã hóa thay thế sửa chữa D E DES Data Encryption Standard Chuẩn mã hóa dữ liệu EP Expansion Permutation Hoán vị lan rộng ra I IP Initial Permutation Hoán vị đầu P Permutation Mã hóa hoán vị DANH MỤC HÌNH VẼ Hình 2.1 : Mô hình mạng lưới hệ thống mã hóa quy ước 7 Hình 2.2 : Biểu diễn dãy 64 bit thành 2 thành phần L và R 14 Hình 2.3 : Trình phát sinh dãy Li Ri từ dãy Li-1 Ri-1 và khóa Ki 15 Hình 3.1 : Chuẩn mã dữ liệu DES 16 Hình 3.2 : Sơ đồ khối chương trình DES 20 Hình 3.3 : Sơ đồ khối quy trình sinh khóa 21 Hình 3.4 : Sơ đồ mã hóa DES 23 Hình 3.5 : Sơ đồ một vòng DES 24 Hình 3.6 : Sơ đồ hàm F 27 Hình 3.7 : Sơ đồ tạo khóa con 28 Hình 3.8 : Sơ đồ của hàm lan rộng ra 30 Hình 4.1 : Sơ đồ tính năng của chương trình mô phỏng 40 Hình 4.2 : Biểu đồ hoạt động giải trí của chương trình mô phỏng 41 Hình 4.3 : Giao diện chính của chương trình 43 DANH MỤC BẢNG Bảng 3.1 : Các khóa yếu của DES 18 Bảng 3.2 : Các khóa nửa yếu của DES 18 Bảng 3.3 : Hoán vị IP 25 Bảng 3.4 : Hoán vị IP-1 25 Bảng 3.5 : Hoán vị PC-1 29 Bảng 3.6 : Bảng dịch bit tại những vòng lặp của DES 29 Bảng 3.7 : Hoán vị PC-2 30 Bảng 3.8 : Hàm lan rộng ra E 31 Bảng 3.9 : 8 hộp S-Box 33 Bảng 3.10 : Bảng hoán vị P 34 CHƯƠNG 1 TỔNG QUAN. MẬT MÃ HỌC : Mật mã là ngành khoa học ứng dụng toán học vào việc biến hóa thông tin thành một dạng khác với mục tiêu che dấu nội dung, ý nghĩa thông tin cần mã hóa. Đây là một ngành quan trọng và có nhiều ứng dụng trong đời sống xã hội. Ngày nay, những ứng dụng mã hóa vào bảo mật thông tin thông tin đang được sử dụng ngày càng thông dụng hơn trong những nghành khác nhau trên quốc tế, từ những nghành bảo mật an ninh, quân sự chiến lược, quốc phòng …, cho đến những nghành dân sự như trong thương mại điện tử, ngân hàng nhà nước … Cùng với sự tăng trưởng của khoa học máy tính và internet, những điều tra và nghiên cứu và ứng dụng của khoa học mật mã ngày càng trở nên phong phú hơn, mở ra nhiều hướng điều tra và nghiên cứu nâng cao vào từng nghành ứng dụng đặc trưng với những đặc trưng riêng. Ứng dụng của khoa học mật mã không chỉ đơn thuần là mã hóa và giải thuật thông tin mà còn gồm có nhiều yếu tố khác nhau cần được điều tra và nghiên cứu và xử lý : xác nhận nguồn gốc nội dung thông tin ( kỹ thuật chữ ký điện tử ), ghi nhận tính xác nhận về người sở hữu mã khóa ( ghi nhận khóa công cộng ), những tiến trình giúp trao đổi thông tin và triển khai thanh toán giao dịch điện tử bảo đảm an toàn trên mạng … Những tác dụng nghiên cứu và điều tra về mật mã cũng đã được đưa vào trong những mạng lưới hệ thống phức tạp hơn, phối hợp với những kỹ thuật khác để phân phối nhu yếu phong phú của những mạng lưới hệ thống ứng dụng khác nhau trong trong thực tiễn, ví dụ như mạng lưới hệ thống bỏ phiếu bầu cử qua mạng, mạng lưới hệ thống giảng dạy từ xa, mạng lưới hệ thống quản trị bảo mật an ninh của những đơn vị chức năng với hướng tiếp cận sinh trắc học, mạng lưới hệ thống phân phối dịch vụ multinedia trên mạng với nhu yếu cung ứng dịch vụ và bảo vệ bản quyền sở hữu trí tuệ so với thông tin số … 1. 2. HỆ THỐNG MÃ HÓA ( CRYPTOSYSTEM ) Định nghĩa 1.1 : Hệ thống mã hóa ( cryptosystem ) là một bộ băm ( P, C, K, E, D ) thỏa mãn nhu cầu những điều kiện kèm theo sau : Tập nguồn P là tập hữu hạn toàn bộ những mẫu tin nguồn cần mã hóa hoàn toàn có thể có Tập đích C là tập hữu hạn tổng thể những mẫu tin hoàn toàn có thể có sau khi mã hóa Tập khóa K là tập hữu hạn những khóa hoàn toàn có thể có được sử dụng E và D lần lượt là tập luật mã hóa và giải thuật. Với mỗi khóa KÎ D tương ứng Luật mã hóa ek : P ® C và luật giải thuật ek : C ® P là hai ánh xạ thỏa mãn Tính chất 4, là chính chất chính và quan trọng của một mạng lưới hệ thống mã hóa. Tính chất này bảo vệ một mẩu tin xÎP được mã hóa bằng luật mã hóa ekÎE hoàn toàn có thể giải thuật đúng chuẩn bằng luật dkÎD. Định nghĩa 1. 2 : Zm được định 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 x ). Phép cộng và phép nhân trong Zm được triển khai tương tự như như trong Z, ngoại trừ tác dụng thống kê giám sát theo modulo m Ví dụ : Giả sử cần tính giá trị 11×13 trong Z16. Trong Z, ta có hiệu quả của phép nhân 11×13 = 143. Do 143 º15 ( mod 16 ) nên 11×13 = 15 trong Z16. Một số đặc thù của Zm Phép cộng đóng trong Zm, i. e., ” a, b Î Zm, a + b Î Zm Tính giao hoán của phép cộng trong Zm, i. e., ” a, b Î Zm, a + b = b + a Tính tích hợp của phép cộng trong Zm, i. e., ” a, b, c Î Zm, ( a + b ) + c. = a + ( b + c ) Zm có phần trung hòa là 0, i. e., ” a Î Zm, a + 0 = 0 + a = a Mọi thành phần a trong Zm đều có phẩn tử đối là m-a Phép nhân đóng trong Zm, i. e., ” a, b Î Zm, a ´ bÎ Zm Tính giao hoán của phép cộng trong Zm, i. e., ” a, b Î Zm, a ´ b = b ´ a Tính phối hợp của phép cộng trong Zm, i. e., ” a, b, c Î Zm, ( a ´ b ) ´ c. = a ´ ( b ´ c ) Zm, có thành phần đơn vị chức năng là 1, i. e., ” a Î Zm, a ´ 1 = 1 ´ a = a Tính phân phối của phép nhân so với phép cộng, i. e., ” a, b, c Î Zm ,. . ( a + b ) ´ c = ( a ´ c ) + ( b ´ c ) Zm, có những đặc thù 1, 3, – 5 nên tạo thành 1 nhóm, Do Zm, có đặc thù 2 nên tạo thành nhóm Abel, Zm, có những đặc thù ( 1 ) – ( 10 ) nên tạo thành 1 vành 1. 3. HỆ THỐNG MÃ HÓA QUY ƯỚC : Trong mạng lưới hệ thống mã hóa quy ước, quy trình mã hóa và giải thuật một thông điệp sử dụng cùng một mã khóa gọi là KHÓA BÍ MẬT ( secret key ) hay KHÓA ĐỐI XỨNG ( symmetric key ). Do đó yếu tố bảo mật thông tin thông tin đã mã hóa trọn vẹn phụ thuộc vào vào việc giữ bí hiểm nội dung của mã khóa đã được sử dụng. Với vận tốc và năng lực giải quyết và xử lý ngày càng được nâng cao của những bộ vi giải quyết và xử lý lúc bấy giờ, chiêu thức mã hóa chuẩn ( Data Encyption Standard – DES ) đã trở nên không bảo đảm an toàn trong bảo mật thông tin thông tin. Do đó, Viện tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ ( National Institute of Standard and Technology – NIST ) đã quyết định hành động chọn một chuẩn mã hóa mới với độ bảo đảm an toàn cao nhằm mục đích ship hàng nhu yếu bảo mật thông tin thông tin liên lạc của nhà nước Hoa Kỳ cũng như trong những ứng dụng dân sự. thuật toán Rijndael do Vincent Rijmen và Joan Daeman đã được chính thức chọn trở thành chuẩn mã hóa nâng cao ( Advanced Encyption Standard – AES ) từ 02 tháng 10 năm 2000 1.4. HỆ THỐNG MÃ HÓA CÔNG CỘNG ( MÃ HÓA BẤT ĐỐI XỨNG ) : Nếu như yếu tố khó khăn vất vả đặt ra so với những giải pháp mã hóa quy ước chính là bài toán trao đổi mã khóa thì ngược lại, những chiêu thức mã hóa công cộng giúp cho việc trao đổi mã khóa trở nên thuận tiện hơn. Nội dung của khóa công cộng ( public key ) không cần giữ bí hiểm như so với khóa bí hiểm trong những chiêu thức mã hóa quy ước. Sử dụng khóa công cộng, tất cả chúng ta hoàn toàn có thể thiết lập một tiến trình bảo đảm an toàn để truy đổi khóa bí hiểm được sử dụng trong mạng lưới hệ thống mã hóa quy ước. Những năm gần đây, những chiêu thức mã hóa công cộng, đặc biệt quan trọng là giải pháp RSA [ 45 ], được sử dụng ngày càng nhiều trong những ứng dụng mã hóa trên quốc tế và hoàn toàn có thể xem đây là chiêu thức chuẩn được sử dụng thông dụng nhất trên Internet, ứng dụng trong việc bảo mật thông tin thông tin liên lạc cũng như trong nghành nghề dịch vụ thương mại điện tử. KẾT HỢP MÃ HÓA QUY ƯỚC VÀ MÃ HÓA CÔNG CỘNG Các chiêu thức mã hóa quy ước có ưu điểm giải quyết và xử lý rất nhanh và năng lực bảo mật thông tin cao so với những chiêu thức mã hóa công cộng nhưng lại gặp phải yếu tố khó khăn vất vả trong việc trao đổi mã khóa. trái lại, những chiêu thức mã hóa khóa công cộng tuy giải quyết và xử lý thông tin chậm hơn nhưng lại được cho phép người sử dụng trao đổi mã khóa thuận tiện hơn. Do đó, trong những ứng dụng trong thực tiễn, tất cả chúng ta cần phối hợp được ưu điểm của mỗi giải pháp mã hóa để kiến thiết xây dựng mạng lưới hệ thống mã hóa và bảo mật thông tin thông tin hiệu suất cao và bảo đảm an toàn. CHƯƠNG 2 MỘT SỐ PHƯƠNG PHÁP MÃ HÓA QUY ƯỚC 2.1. HỆ THỐNG MÃ HÓA QUY ƯỚC Hệ thống mã hóa quy ước là mạng lưới hệ thống mã hóa trong đó quy trình tiến độ mã hóa và giải thuật đều được sử dụng chung một khóa – khóa bí hiểm. Việc bảo mật thông tin thông tin nhờ vào vào việc bảo mật thông tin khóa Trong mạng lưới hệ thống mã hóa quy ước, thông điệp nguồn được mã hóa với mã khóa k được thống nhất trước giữa người gửi A và người nhận B. Người A sẽ sử dụng mã khóa k để mã hóa thông điệp x thành thông điệp y và gửi y cho người B, người B sẽ sử dụng khóa k để giải thuật thông điệp y này. Vấn đề bảo đảm an toàn bảo mật thông tin thông tin được mã hóa nhờ vào vào việc giữ bí hiểm nội dung mã khóa k. Nếu người C biết được khóa k thì C hoàn toàn có thể “ mở khóa ” thông điệp đã được mã hóa mà người A gửi cho người B. Hình 2.1. Mô hình mạng lưới hệ thống mã hóa quy ước PHƯƠNG PHÁP MÃ HÓA DỊCH CHUYỂN Phương pháp mã hóa di dời là một trong những giải pháp truyền kiếp nhất được sử dụng để mã hóa. Thông điệp được mã hóa bằng cách di dời xoay vòng từng ký tự đi k vị trí trong bảng chử cái. Trong trường hợp đặc biệt quan trọng k = 3, giải pháp mã hóa bằng di dời được gọi là chiêu thức mã hóa Caesar Cho P = C = K = Zn Với mỗi khóa k Î K, định nghĩa : ek ( x ) = ( x + k ) mod n và dk ( y ) = ( y-k ) mod n với x, y Î Zn E = { ek, k Î K } và D = { dk, k Î K } Thuật toán 2.1. Phương pháp mã hóa dịch chuyển Mã hóa di dời là một chiêu thức mã hóa đơn thuần, thao tác giải quyết và xử lý mã hóa và giải thuật được triển khai nhanh gọn. Tuy nhiên, trên trong thực tiễn, giải pháp này hoàn toàn có thể thuận tiện bị phá vỡ bằng cách thử mọi năng lực khóa k Î K. Điều này trọn vẹn hoàn toàn có thể triển khai được do khoảng trống khóa K chỉ có n thành phần để lựa chọn Ví dụ : Để mã hóa một thông điệp được trình diễn bằng những vần âm từ A đến Z ( 26 vần âm ). Ta sử dụng P = C = K = Z26. Khi đó, thông điệp được mã hóa sẽ không bảo đảm an toàn và hoàn toàn có thể thuận tiện bị giải thuật bằng cách thử lần lượt 26 giá trị khóa kÎK. Tính trung bình, thông điệp đã được mã hóa hoàn toàn có thể bị giải thuật sau khoảng chừng n / 2 lần thử khóa kÎK 2.3. PHƯƠNG PHÁP MÃ HÓA THAY THẾ Phương pháp mã hóa thay thế sửa chữa ( Substtution Cipher ) là một trong những chiêu thức mã hóa nổi tiếng và đã được sử dụng từ hàng trăm năm nay. Phương pháp này thực thi việc mã hóa thông điệp bằng cách hoán vị những thành phần trong bảng vần âm hay tổng quát hơn là hoán vị những thành phần trong tập nguồn P. Cho P = C = Z K là tập hợp toàn bộ những hoán vị của n thành phần 0,1, …, n-1. Như vậy, mỗi khóa p Î K là một hoán vị của n thành phần 0,1, …, n-1. Với mỗi khóa p Î K, định nghĩa : ep ( x ) = p ( x ) và dp ( y ) = p-1 ( y ) với x, y Î Zn E = { ep, pÎ K } và D = { Dp, pÎK } Thuật toán 2.2. giải pháp mã hóa bằng sửa chữa thay thế Đây là chiêu thức đơn thuần, thao tác mã hóa và giải thuật được thực thi nhanh gọn. Phương pháp này khắc phục điểm hạn chế của chiêu thức mã hóa bằng di dời là có khoảng trống khóa K nhỏ nên thuận tiện bị giải thuật bằng cách thử nghiệm lần lượt n giá trị khóa kÎK. Trong chiêu thức mã hóa sửa chữa thay thế có khoảng trống khóa K rất lớn với n ! thành phần nên không hề bị giải thuật bằng cách ‘ vét cạn ’ mọi trường hợp khóa k. Tuy nhiên, trên thực tiễn thông điệp được mã hóa bằng giải pháp này vẫn hoàn toàn có thể bị giải thuật nếu như hoàn toàn có thể thiết lập được bảng tần số Open của những ký tự trong thông điệp hay nắm được một số ít từ, ngữ trong thông điệp nguồn bắt đầu 2.4. PHƯƠNG PHÁP AFFINE Nếu như giải pháp bằng di dời là một trường hợp đặc biệt quan trọng của giải pháp mã hóa bằng thay thế sửa chữa, trong đó chỉ sử dụng n giá trị khóa k trong số n ! thành phần, thì chiêu thức Affine lại là một trường hợp đặc biệt quan trọng khác của mã hóa bằng sửa chữa thay thế Cho P = C = Zn K = { ( a, b ) ÎZn x Zn : gcd ( a, b ) = 1 } Với mỗi khóa k = ( a, b ) Î K, định nghĩa : ek ( x ) = ( ax + b ) mod n và dk ( x ) = ( a-1 ( y-b ) ) mod n với x, yÎZn E = { ek, kÎK } và D = { Dk, k Î K } Thuật toán 2.3 Phương pháp Affine Để hoàn toàn có thể giải thuật đúng mực thông tin đã được mã hóa bằng hàm ek ÎE thì ek phải là một tuy nhiên ánh. Như vậy, với mỗi giá trị yÎ Zn, phương trình ax + bºy ( mod n ) phải có nghiệm duy nhất xÎ Zn Phương trình ax + bºy ( mod n ) tương tự với axº ( y-b ) ( mod n ). Vậy, ta chỉ cần khảo sát phương trình axº ( y-b ) ( mod n ) Định lý 2.1 : Phương trình ax + bºy ( mod n ) có nghiệm duy nhất xÎZn với mỗi giá trị bÎ Zn, khi và chỉ khi a và n nguyên tố cùng nhau. Vậy, điều kiện kèm theo a và n nguyên tố cùng nhau bảo vệ thông tin được mã hóa bằng hàm ek, hoàn toàn có thể được giải thuật một cách đúng mực Gọi f ( n ) Zn và nguyên tố cùng nhau với n. Trong giải pháp mã hóa Affine, ta có n năng lực chọn giá trị b, f ( n ) năng lực chọn giá trị a. vậy khoảng trống khóa K có tổng thể nf ( n ) thành phần. Vấn đề đặt ra cho chiêu thức mã hóa Affine là để hoàn toàn có thể giải thuật được thông tin đã được mã hóa cần phải tính giá trị thành phần nghịch đảo a-1ÎZn. Thuật toán Euclide lan rộng ra hoàn toàn có thể xử lý toàn vẹn yếu tố này. Trước tiên cần khảo sát thuật toán Euclide ( ở dạng cơ bản ) sử dụng trong việc tìm ước số chung lớn nhất của hai số nguyên dương r0 và r1 với r0 > r1. Thuật toán Euclide gồm có một dãy những phép chia. r0 = q1r1 + r2, 0 < r2 < r1 r1 = q2r2 + r3, 0 < r3 < r2. .. rm-2 = qm-1rm-1+rm, 0 < rm < rm-1 rm-1 = qmrm Dễ dàng nhận thấy rằng gcd ( r0, r1 ) = gcd ( r1, r2 ) = ... = gcd ( rm-1, rm ) = rm Như vậy, ước số chung lớn nhất của r0, r1 là rm Xây dựng dãy số t0, t1, ... tm theo công thức truy hồi sau : t0 = 0 t1 = 1 tj = ( tj-2 – qj-1. tj-1 ) mod r0 với j ≥ 2 Định lý 2.3 : Với mọi j, 0 ≤ j ≤ m, ta có rj º tj r1 ( mod 0 ), với qj và rj được xác lập theo thuật toán Euclide và tj được xác lập theo công thức truy hồi nêu trên. Định lý 2.4 : nếu r0 và r1 nguyên tố cùng nhau ( với r1 > r1 ) thì tm là thành phần nghịch đảo của r1 trong Zr0. Gcd ( r0, r1 ) = 1 => tm = r1 – 1 mod r0 Trong thuật toán Euclide, dãy số { tj } hoàn toàn có thể được tính đồng thời với dãy số { qj } và { rj }. Thuật toán Euclide lan rộng ra dưới đây được sử dụng để xác lập thành phần nghịch đảo ( nếu có ) của 1 số ít nguyên dương a ( modulo n ). trong thuật toán không cần sử dụng đến cấu trúc tài liệu mảng để lưu giá trị của dãy số { tj }, { qj } hay { rj } vì tại mỗi thời gian, ta chỉ cần chăm sóc đến giá trị của hai thành phần ở đầu cuối mỗi dãy tại thời gian đang xét. n0 = n a0 = a t0 = 0 q = 1 r = n0 – qa0 while r > 0 do temp = t0 – qt if temp ³ 0 then temp = temp mod n end if if temp < 0 then temp = n – ( ( - temp ) mod n ) end if t0 = t t = temp n0 = a0 a0 = r q = 1 r = n0 – qa0 end while if a0 ¹ 1 then a không có thành phần nghịch đảo modulo n else a-1 = t mod n end if Thuật toán 2.4 Thuật toán Euclide lan rộng ra xác lập thành phần nghịch đảo của a ( modulo n ) 2.5. PHƯƠNG PHÁP VIGENERE Trong chiêu thức mã hóa bằng thay thế sửa chữa cũng như những trường hợp đặc biệt quan trọng của giải pháp này ( mã hóa bằng di dời, mã hóa Affine … ), ứng với một khóa k được chọn, mỗi thành phần xÎP được ánh xạ vào duy nhất một thành phần yÎC. Nói cách khác, ứng với mỗi khóa kÎK, một tuy nhiên ánh được thiết lập từ P vào C. Khác với hướng tiếp cận này, giải pháp Vigenere sử dụng một từ khóa có độ dài m. Có thể xem như chiêu thức mã hóa Vigenere Cipher gồm có m phép mã hóa bằng di dời được vận dụng luân phiên nhau theo chu kỳ luân hồi. Không gian khóa K của giải pháp Vigenere Cipher có số thành phần là “ n ”, lớn hơn hẳn giải pháp số lượng thành phần của khoảng trống khóa K trong giải pháp mã hóa bằng di dời. Do đó, việc tìm ra mã khóa k để giải thuật thông điệp đã được mã hóa sẽ khó khăn vất vả hơn so với chiêu thức mã hóa bằng di dời. Chọn số nguyên dương m. Định nghĩa P = C = K = ( Zn ) m K = { ( k0, k1, …, kr-1 ) Î ( Zn ) r } Với mỗi khóa k = ( k0, k1, …, kr-1 ) ÎK, định nghĩa : Ek ( x1, x2, …, xm ) = ( ( x1 + k1 ) mod n, ( x2 + k2 ) mod n, …, ( xm + km ) mod n ) Dk ( y1, y2, …, ym ) = ( ( y1 – k1 ) mod n, ( y2 - k2 ) mod n, ..., ( ym – km ) mod n ) Với x, y Î ( Zn ) m Thuật toán 2.5. Phương pháp mã hóa Vigenere 2.6. PHƯƠNG PHÁP HILL Phương pháp Hill được Lester S.Hill công bố năm 1929 : Cho số nguyên dương m, định nghĩa P = C = ( Zn ) m. Mỗi thành phần x Î P là một bộ m thành phần, mỗi thành phần thuộc Zn. Ý tưởng chính của giải pháp này là sử dụng m tổng hợp tuyến tính của m thành phần trong mỗi thành phần x Î P để phát sinh ra m thành phần tạo thành phần tử yÎC. Chọn số nguyên dương m. Định nghĩa : P = C = ( Z26 ) m Và K à tập hợp những ma trận m x m khả nghịch với mỗi khóa, định nghĩa : với x = ( x1, x2, ..., xm ) Î P và dk ( y ) = yk – 1 với yÎ C mọi phép toán số học đều được thực thi trên Zn Thuật toán 2.6. Phương pháp mã hóa Hill 2.7. PHƯƠNG PHÁP MÃ HÓA HOÁN VỊ Những giải pháp mã hóa nêu trên đều dựa trên ý tưởng sáng tạo chung : thay thế sửa chữa mỗi ký tự trong thông điệp nguồn 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 chiêu thức mã hóa hoán vị ( Permutation ) là vẫn giữ nguyên những ký tự trong thông điệp nguồn mà chỉ biến hóa vị trí những ký tự, nói cách khác thông điệp nguồn được mã hóa bằng cách sắp xếp lại những ký tự trong đó Chọn số nguyên dương m. Định nghĩa : P = C = ( Z26 ) m và K là tập hợp những hoán vị của m thành phần { 1, 2, ..., m } Với mỗi khóa p Î K, định nghĩa : và Với p – 1 hoán vị ngược của p Thuật toán 2.7. Phương pháp mã hóa bằng hoán vị Phương pháp mã hóa bằng hoán vị chính là một trường hợp đặc biệt quan trọng của giải pháp Hill. Với mỗi hoán vị p của tập hợp { 1,2, …, m }, ta xác lập ma trận kp = ( ki, j ) theo công thức sau : Ma trận kp là ma trận mà mỗi dòng và mỗi cột có đúng một thành phần mang giá trị 1, những thành phần còn lại trong ma trận đều bằng 0. Ma trận này hoàn toàn có thể thu được bằng cách hoán vị những hàng hay những cột của ma trận đơn vị chức năng Im nên kp là ma trận khả nghịch. Rõ ràng, mã hóa bằng giải pháp Hill với ma trận kp trọn vẹn tương tự với mã hóa bằng giải pháp hoán vị với hoán vị p. 2.8. PHƯƠNG PHÁP DES ( DATA ENCYPTION STANDARD ) 2.8.1 Phương pháp DES Khoảng những năm 1970, Tiến sĩ Horst Feistel đã đặt nền móng tiên phong cho chuẩn mã hóa dữ liệu DES với giải pháp mã hóa Feistel Cipher. Vào năm 1976 Cơ quan bảo mật thông tin Quốc gia Hoa kỳ ( NSA ) đã công nhận DES dựa trên giải pháp Feistel là chuẩn mã hóa dữ liệu. Kích thước khóa của DES khởi đầu là 128 bit nhưng tại bản công bố FIPS kích cỡ khóa được rút xuống còn 56 bit. Trong chiêu thức DES, kích thước khối là 64 bit. DES thực thi mã hóa dữ liệu qua 16 vòng lặp mã hóa, mỗi vòng sử dụng một khóa chu kỳ luân hồi 48 bit được tạo ra từ khóa khởi đầu có độ dài 56 bit. DES sử dụng 8 bảng hằng số S-box để thao tác Quá trình mã hóa của DES hoàn toàn có thể tóm tắt như sau : Biểu diễn thông điệp nguồn xÎ P bằng dãy 64 bit. Khóa k có 56 bit. Thực hiện mã hóa theo 3 quá trình : Tạo dãy 64 bit x0 bằng cách hoán vị x theo hoán vị 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. L0 R0 X0 Hình 2.2 : Biểu diễn dãy 64 bit x thành 2 thành phần L và R 2. Thực hiện 16 vòng lặp từ 64 bit thu được và 56 bit của khóa k ( chỉ sử dụng 48 bit của khóa k trong mỗi vòng lặp ). 64 bit tác dụng thu được qua mỗi vòng lặp sẽ là nguồn vào cho vòng lặp sau. Các cặp từ 32 bit Li, Ri ( với 1 ≤ I ≤ 16 ) được xác lập theo quy tắc sau : Li = Ri-1 Ri = Li-1Å f ( Ri-1, Ki ) Với Å màn biểu diễn phép toán XOR trên hai dãy bit, K1, K2, ..., K16 là những dãy 48 bit phát sinh từ khóa K cho trước ( Trên trong thực tiễn, mỗi khóa Ki được phát sinh bằng cách hoán vị những bit trong khóa K cho trước ) 3. Áp dụng hoán vị ngược IP-1 so 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 2 là hàm số gồm 2 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 giải quyết và xử lý của hàm f ( A, J ) như sau : Tham số thứ nhất A ( 32 bit ) được lan rộng ra thành 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, trong đó có 26 bit của A được lặp lại 2 lần trong E ( A ). Li-1 Ri-1 Li Ri f Ki Å Hình 2.3 : Quy trình phát sinh dãy Li Ri từ dãy Li-1 Ri-1 và khóa Ki Thực hiện phép toán XOR cho hai 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 6 bit như sau : B = B1 B2 B3 B4 B5 B6 B7 B8 Sử dụng 8 ma trận S1, S2, ..., S8 mỗi ma trận Si có kích cỡ 4x16 và mỗi dòng của ma trận nhận đủ 16 giá trị từ 0 đến 15. Xét dãy gồm 6 bit Bj = b1 b2 b3 b4 b5 b6, Sj ( Bj ) được xác lập bằng giá trị của thành phần tại dòng r cột c của Sj, trong đó, chỉ số dòng r có trình diễn nhị phân là b1 b6, chỉ số cột c có trình diễn nhị phân là b2 b3 b4 b5. Bằng cách này, ta xác lập được những dãy 4 bit Cj = Sj ( Bj ), 1 ≤ j ≤ 8. Tập hợp những dãy 4 bit Cj lại, ta có được dãy 32 bit C = C1 C 2 C3 C4 C5 C6 C7 C8. Dãy 32 bit thu được bằng cách hoán vị C theo một quy luật P nhất định chính là tác dụng của hàm F ( A, J ). Quá trình giải thuật chính là triển khai theo thứ tự đảo ngược toàn bộ những thao tác của quy trình mã hóa. CHƯƠNG 3 MẬT MÃ HÓA DES 3.1. LỊCH SỬ Vào thập niên 60, hệ mã Lucifer đã được đưa ra bởi Horst Feistel. Hệ mã này gắn liền với hãng IBM nổi tiếng. Sau đó Ủy ban tiêu chuẩn Hoa kỳ đã dàn xếp với IBM để thuật toán mã hóa này thành không lấy phí và tăng trưởng nó thành chuẩn mã hóa dữ liệu và công bố vào ngày 15/02/1977 3.2. PHƯƠNG PHÁP BẢO MẬT DES là thuật toán mã hóa với input là khối 64 bit, output cũng là khối 64 bit. Khóa mã hóa có độ dài 56 bit, thực ra đúng chuẩn hơn phải là 64 bit với những bit ở vị trí chia hết cho 8 hoàn toàn có thể sử dụng là những bit kiểm tra tính chẵn lẻ. Số khóa của khoảng trống khóa K là 256 Hình 3.1. Chuẩn mã dữ liệu DES Thuật toán triển khai 16 vòng. Từ khóa input K, 16 khóa con 48 bit Ki sẽ được sinh ra, mỗi khóa cho mỗi vòng triển khai trong quy trình mã hóa. Trong mỗi vòng, 8 ánh xạ thay thế sửa chữa 6 bit thành 4 bit Si ( còn gọi là hộp Si ) được lựa chọn kỹ càng và cố định và thắt chặt, ký hiệu chung là S sẽ được sử dụng. Bản rõ 64 bit sẽ được sử dụng chia thành 2 nữa L0 và R0. Các vòng có công dụng giống nhau, nhận input là Li-1 và Ri-1 từ vòng trước và sinh ra output là những xâu 32 bit Li và Ri như sau : Li = Ri-1 ; Ri = Li-1 Å f ( Ri-1 ) trong đó f ( Ri-1, Ki ) = P ( S ( E ( Ri-1 ) ÅKi ) ) ; Trong đó : - Å là ký hiệu của phép tuyển loại trừ ( XOR ) của hai xâu bit theo modulo 2. - Hàm f là một hàm phi tuyến - E là hoán vị lan rộng ra ánh xạ Ri-1 từ 32 bit thành 48 bit ( nhiều lúc toàn bộ những bit sẽ được sử dụng hoặc một bit sẽ được sử dụng hai lần ) - P là hoán vị cố định và thắt chặt khác của 32 bit Một hoán vị khởi đầu ( IP ) được sử dụng cho vòng tiên phong, sau vòng sau cuối nửa trái và phải sẽ được đổi cho nhau và xâu ở đầu cuối tác dụng sẽ được hoán vị lần cuối bởi hoán vị ngược của IP ( IP-1 ). Quá trình giải thuật diễn ra tựa như nhưng với những khóa con ứng dụng vào những vòng theo thứ tự ngược lại Có thể tưởng tượng đơn thuần là phần bên phải trong mỗi vòng ( sau khi lan rộng ra input 32 bit thành 8 ký tự 6 bit – xâu 48 bit ) sẽ thực thi một giám sát sửa chữa thay thế nhờ vào khóa trên mỗi ký tự trong xâu 48 bit, và sau đó sử dụng một phép chuyển bit cố định và thắt chặt để phân bổ lại những bit của những ký tự tác dụng hình thành nên output 32 bit. Các khóa con Ki ( chứa 48 bit của K ) được tính bằng cách sử dụng những bảng PC1 và PC2 ( Permutation Choice 1 và 2 ). Trước tiên 8 bit ( K8, K16, …, K64 ) của K bị bỏ đi ( vận dụng PC1 ). 56 bit còn lại được hoán vị và gán cho hai biến 28 bit C và D sẽ được quay 1 hoặc 2 bit, và những khóa con 48 bit Ki được chọn từ hiệu quả của việc ghép hai xâu với nhau. Như vậy, ta hoàn toàn có thể miêu tả hàng loạt thuật toán sinh mã DES dưới dạng công thức như sau : Y = IP-1 · f16 · T · f15 · T · ... · f2 · T · f1 · IP ( X ) Trong đó : - T diễn đạt phép hoán vị của những khối Li, RI ( 1 £ i £ 15 ). - fi miêu tả việc dùng hàm f với khóa Ki ( 1 £ i £ 16 ) 3.3. ƯU NHƯỢC ĐIỂM 3.3.1. Ưu điểm : - Có tính bảo mật thông tin cao - Công khai, dễ hiểu - Nó hoàn toàn có thể tiến hành trên thiết bị điện tử có size nhỏ 3.3.2. Các yếu điểm của DES : 3.3.2. 1. Tính bù Nếu ta ký hiệu là phần bù của u ( ví dụ : 0100101 là phần bù của 1011010 ) thì des có đặc thù sau y = DES ( x, k ) ® = DES (, ) Cho nên nếu ta biết mã y được mã hóa từ thông tin x với khóa K thì ta suy được bản mã được mã hóa từ bản rõ với khóa. Tính chất này là một yếu điểm của DES chính do qua đó đối phương hoàn toàn có thể loại bỏ đi 1 số ít khóa phải thử khi thực thi thử giải thuật theo kiểu vét cạn 3.3.2. 2. khóa yếu Khóa yếu là những khóa mà theo thuật toán sinh khóa con thì tổng thể 16 khóa con đều như nhau : K1 = K2 = ... = K16 Điều đó khiến cho việc mã hóa và giải thuật so với khóa yếu là giống hệt nhau Khóa yếu ( Hex ) C0 D0 0101 0101 0101 0101 FEFE FEFE FEFE FEFE 1F1 F 1F1 F 0E0 E 0E0 E E0E0 E0E0 F1F1 F1F1 { 0 } 28 { 1 } 28 { 0 } 28 { 1 } 28 { 0 } 28 { 1 } 28 { 1 } 28 { 0 } 28 Bảng 3.1. Các khóa yếu của DES Đồng thời còn có 6 cặp khóa nửa yếu ( semi-weak key ) khác với thuộc tính như sau : y = DES ( x, k1 ) và y = DES ( x, k2 ) Nghĩa là với 2 khóa khác nhau nhưng mã hóa cùng một bản mã từ cùng một bản rõ : C0 D0 Semi-weak key ( Hex ) C0 D0 { 01 } 14 { 01 } 14 { 01 } 14 { 01 } 14 { 0 } 28 { 1 } 28 { 01 } 14 { 10 } 14 { 0 } 28 { 1 } 28 { 01 } 14 { 01 } 14 01FE 01FE 01FE 01FE 1FE0 1FE0 1FE0 1FE0 01E0 01E0 01F1 01F1 1FFE 1FFE 0EFE 0EFE 011F 011F 010E 010E E0FE E0FE F1FE F1FE FE01 FE01 FE01 FE01 E01F E01F E01F E01F E001 E001 F101 F101 FE1F FE1F FE0E FE0E 1F01 1F01 0E01 0E01 FEE0 FEE0 FEF1 EF1 { 10 } 14 { 10 } 14 { 10 } 14 { 10 } 14 { 0 } 28 { 1 } 28 { 10 } 14 { 01 } 14 { 0 } 28 { 1 } 28 { 10 } 14 { 10 } 14 Bảng 3.2. Các khóa nửa yếu của DES 3.3.3. 3. DES có cấu trúc đại số Với 64 bit khối bản rõ hoàn toàn có thể được ánh xạ lên tổng thể những vị trí của khối 64 bit khối bản mã trong 264 cách. Trong thuật toán DES, với 56 bit khóa hoàn toàn có thể cho tất cả chúng ta 256 ( khoảng chừng 1017 ) vị trí ánh xạ. Với việc đa mã hóa thì khoảng trống ánh xạ còn lớn hơn. Tuy nhiên điều này chỉ đúng nếu việc mã hóa DES là không cấu trúc Với DES có cấu trúc đại số thì việc đa mã hóa sẽ được xem ngang bằng với việc đơn mã hóa. Ví dụ như có hai khóa bất kỳ K1 và K2 thì sẽ luôn được khóa K3 như sau : EK2 ( EK1 ( X ) ) = EK3 ( X ) Nói một cách khác, việc mã hóa DES mang đặc thù “ nhóm ”, tiên phong mã hóa bản rõ bằng khóa K1 sau đó là khóa K2 sẽ giống với việc mã hóa ở khóa K3. Điều này thực sự quan trọng nếu sử dụng DES trong đa mã hóa. Nếu một “ nhóm ” được phát với cấu trúc hàm quá nhỏ thì tính bảo đảm an toàn sẽ giảm. 3.3.3. 4. Không gian khóa K DES có 256 = 1017 khóa. Nếu tất cả chúng ta biết được một cặp “ tin / mã ” thì tất cả chúng ta hoàn toàn có thể thử toàn bộ 1017 năng lực này để tìm ra khóa cho hiệu quả khớp nhất. Giả sử như một phép thử mất 10-6 s, thì chúng sẽ mất 1011 s, tức 7300 năm. Nhưng với những máy tính được sản xuất theo giải quyết và xử lý song song. Chẳng hạn với 107 con chip mã DES chạy song song thì giờ đây mỗi một con chipset chỉ phải chịu nghĩa vụ và trách nhiệm thống kê giám sát với 1010 phép thử. Chipset mã DES ngày này hoàn toàn có thể giải quyết và xử lý vận tốc 4.5 x107 bit / s tức hoàn toàn có thể làm được hơn 105 phép mã DES trong một giây. Vào năm 1976 và 1977, Dieffie và Hellman đã ước đạt rằng hoàn toàn có thể sản xuất được một máy tính chuyên sử dụng để vét cạn khoảng trống khóa DES trong ½ ngày với cái giá 20 triệu đô la. Năm 1984, chipset mã hóa DES với vận tốc mã hóa 256000 lần / giây. Năm 1987, đã tăng lên 512000 lần / giây. Vào năm 1993, Michael Wiener đã phong cách thiết kế một máy tính chuyên được dùng với giá 1 triệu đô la sử dụng chiêu thức vét cạn để giải thuật DES trung bình trong vòng 3,5 giờ ( và chậm nhất là 7 giờ ). Đến năm 1990, hai nhà toán học người Do Thái – Biham và Shamir – đã ý tưởng ra giải pháp mã hóa vi sai ( diferential cryptanalyis ), đây là một kỹ thuật sử dụng những phỏng đoán khác nhau trong bản rõ để đưa ra những thông tin trong bản mã. Với chiêu thức này, Biham và Shamir đã chứng tỏ rằng nó hiệu suất cao hơn cả giải pháp vét cạn. Phá mã vi sai là thuật toán xem xét những cặp mã khóa khác nhau, đây là những cặp mã hóa mà bản mã của chúng là độc lạ. Người ta sẽ nghiên cứu và phân tích tiến trình đổi khác của những cặp mã này trải qua những vòng của DES khi chúng được mã hóa với cùng một khóa K. Sau đó sẽ chọn hai bản rõ khác nhau một cách ngẫu nhiên hài hòa và hợp lý nhất. Sử dụng sự khác nhau của hiệu quả bản mã và gán cho những khóa khác nhau một cách tương thích nhất. Khi nghiên cứu và phân tích nhiều hơn những cặp bản mã, tất cả chúng ta sẽ tìm ra một khóa được xem là đúng nhất. 3.4. SƠ ĐỒ KHỐI Hình 3.2. Sơ đồ khối chương trình DES Hình 3.3. Sơ đồ khối quy trình sinh khóa 3.5. THUẬT TOÁN DES là thuật toán mã hóa khối, nó giải quyết và xử lý từng khối thông tin của bản rõ có độ dài xác lập là 64 bit. Trước khi đi vào 16 quy trình chính, khối tài liệu cần bảo mật thông tin được “ bẻ ” ra từng khối 64 bit, và từng khối 64 bit này sẽ được lần lượt đưa vào 16 vòng mã hóa DES để thực thi Input : bản rõ M = m1m2 … m64, là một khối 64 bit, khóa 64 bit K = k1k2. .. k64 ( gồm có cả 8 bit chẵn lẻ, việc thêm bit chẵn lẻ sao cho những đoạn khóa 8 bit có số bit 1 là lẻ ) Output : bản mã 64 bit C = c1 c2 … c64 Sinh khóa con. Tính những khóa con theo thuật toán sinh khóa con ( L0, R0 ) ¬ IP ( m1 mét vuông. .. m64 ) ( sử dụng bản hoán vị IP để hoán vị những bit, tác dụng nhận được chia thành 2 nửa là L0 = m58 m50. .. m8, R0 = m57 m49. .. m7 ) Với i chạy từ i = 1 đến 16 triển khai : Tính những Li và Ri theo công thức : Li = Ri-1 ; Ri = Li-1 Å f ( Ri-1 ) trong đó f ( Ri-1, Ki ) = P ( S ( E ( Ri-1 ) Å Ki ) ) ; Việc tính f ( Ri-1 ) = P ( S ( E ( Ri-1 ) Å Ki ) ) được triển khai như sau : è Mở rộng Ri-1 = r1r2. .. r32 từ 32 bit thành 48 bit bằng cách sử dụng hoán vị lan rộng ra E. T ¬ E ( Ri-1 ). ( Vì thế T = r32 r1 r2. .. r32 r1 ) è T ’ ¬ T Å Ki. Biểu diễn T ’ như thể những xâu gồm 8 ký tự 6 bit T ’ = ( B1 ,. .., B8 ) è T ’ ’ ¬ ( S1 ( B1 ), S2 ( B2 ) ,. .., S8 ( B8 ) ). Trong đó Si ( Bi ) ánh xạ b1b2. .. b6 thành những xâu 4 bit của thành phần thuộc hàng r và cột c của những bảng Si ( S box ) trong đó r = 2 * b1 + b6 và c = b2 b3 b4 b5 là một số ít nhị phân từ 0 tới 15. Chẳng hạn S1 ( 011011 ) sẽ cho r = 1 và c = 3 và tác dụng là 5 màn biểu diễn dưới dạng nhị phân là 0101. è T ’ ’ ’ ¬ P ( T ’ ’ ) trong đó P là hoán vị cố định và thắt chặt để hoán vị 32 bit của T ’ ’ = t1 t2. .. t32 sinh ra t16 t7. .. t25 Khối từ b1 b2. .. b64 ¬ ( R16, L16 ) ( đổi vị trí những khối ở đầu cuối L16, R16 ) C ¬ IP-1 ( b1 b2. .. b64 ) ( Biến đổi sử dụng IP-1, C = b40 b8. .. b25 ). Hình 3.4. Sơ đồ mã hóa DES 3.5.1 Quá trình mã hóa : Hình 3.5. Sơ đồ một vòng DES Chia làm 3 tiến trình : 3.5.1. 1. Giai đoạn 1 : Với bản rõ cho trước x, 1 xâu x ' sẽ được tạo ra bằng cách hoán vị những bit của x theo hoán vị khởi đầu IP : x ' = IP ( x ) = L0 R0 L0 : 32 bit đầu R0 : 32 bit cuối IP : 58 50 42 34 26 18 10 260 52 44 36 28 20 12 462 54 46 38 30 22 14 664 56 48 40 32 24 16 857 49 41 33 25 17 9 159 51 43 35 27 19 11 361 53 45 37 29 21 13 563 55 47 39 31 23 15 7 Bảng 3.3. Hoán vị IP 3.5.1. 2. Giai đoạn 2 : Tính toán 16 lần lập theo 1 hàm xác lập. Ta sẽ tính LiRi ( 1 ≤ i ≤ 16 ) theo quy tắc : Li = Ri-1 Ri = Li-1Å f ( Ri-1, Ki ) Å là toán tử Xor k1, k2, k3 ..... k16 là xâu bit độ dài 48 bit được tính qua hàm khóa K ( trong thực tiễn thì Ki là 1 phép hoán vị bit trong K ) 3.5.1. 3. Giai đoạn 3 : Áp dụng hoán vị ngược IP-1 cho xâu bit R16 L16 ta thu được bản mã y : y = IP-1 ( R16 L16 ) + Chú ý vị trí của R16 và L16. IP-1 40 8 48 16 56 24 64 3239 7 47 15 55 23 63 3138 6 46 14 54 22 62 3037 5 45 13 53 21 61 2936 4 44 12 52 20 60 2835 3 43 11 51 19 59 2734 2 42 10 50 18 58 2633 1 41 9 49 17 57 25 Bảng 3.4. Hoán vị IP-1 3.5.2. Quá trình giải thuật : Do là 1 thuật toán đối xứng nên quy trình giải thuật và mã hóa cũng gần giống nhau chỉ khác ở : Li = Ri-1 Ri = Li-1Å f ( Ri-1, K16-i ) Khóa K của hàm F sẽ đi từ 16 -> 0 3.5.3. Hàm F Đầu vào hàm f có 2 biến : biến 1 : R là xâu bit có độ dài 32 bit, biến 2 : K là xâu bit có độ dài 48 bit. Đầu ra của f là xâu bit có độ dài 32 bit. – Biến thứ nhất Ri-1 được lan rộng ra thành một xâu bit có độ dài 48 bit theo một hàm lan rộng ra cố đinh E. Thực chất hàm lan rộng ra E ( Ri-1 ) là một hoán vị có lặp trong đó lặp lại 16 bit của Ri-1 – Tính E ( Ri-1 ) Å Ki và viết hiệu quả thành 8 xâu 6 bit B1B2B3B4B5B6B7B8 – Đưa khối 8 bit Bi vào 8 bảng S1, S2, …. S8 ( được gọi là những hộp S-Box ). Mỗi hộp S-Box là một bảng 4 * 16 cố định và thắt chặt có những cột từ 0 đến 15 và những hàng từ 0 đến 3. Với mỗi xâu 6 bit Bi = b1b2b3b4b5b6, ta tính được Si ( B i ) như sau : hai bit b1b6 xác lập hàng r trong trong hộp Si, bốn bit b2b3b4b5 xác lập cột c trong hộp Si. Khi đó, Si ( Bi ) sẽ xác lập thành phần Ci = Si ( r, c ), thành phần này viết dưới dạng nhị phân 4 bit. Như vậy, 8 khối 6 bit Bi ( 1 £ i £ 8 ) sẽ cho ra 8 khối 4 bit Ci với ( 1 £ i £ 8 ) – Xâu bit C = C1C2C3C4C5C6C7C8 có độ dài 32 bit được hoán vị theo phép toán hoán vị P ( hộp P-Box ). Kết quả P ( C ) sẽ là tác dụng của hàm f ( Ri-1, Ki ), và cũng chính Ri cho vòng sau Hình 3.6. Sơ đồ hàm F 3.5.4. Quá trình tạo khóa con – Mười sáu vòng lặp DES chạy cùng thuật toán như nhau nhưng với 16 khóa con khác nhau. Các khóa con đều được sinh ra từ khóa chính của DES bằng một thuật toán sinh khóa con. Hình 3.7. Sơ đồ tạo khóa con K là xâu có độ dài 64 bit, một bit trong 8 bit của byte sẽ được lấy ra dùng để kiểm tra phát hiện lỗi ( thường thì những bit này ở vị trí 8, 16, 24, …, 64 ) tạo ra chuỗi 56 bit. Sau khi bỏ những bit kiểm tra ta sẽ hoán vị chuối 56 bit, 2 bước trên được thực thi trải qua hóa vị ma trận PC1. PC-1 57 49 41 33 25 17 91 58 50 42 34 26 1810 2 59 51 43 35 2719 11 3 60 52 44 3663 55 47 39 31 23 157 62 54 46 38 30 2214 6 61 53 45 37 2921 13 5 28 20 12 4 Bảng 3.5. Hoán vị PC-1 Ta chia PC-1 thành 2 phần : C0 : 28 bit đầu D0 : 28 bit cuối Mỗi phần sẽ được giải quyết và xử lý 1 cách độc lập. Ci = LSi ( Ci-1 ) Di = LSi ( Ci-1 ) với 1 ≤ i ≤ 16 + LSi màn biểu diễn phép dịch bit vòng ( cyclic shift ) sang trái 1 hoặc 2 vị trí tùy thuộc vào i. Cyclic shift sang trái 1 bit nếu i = 1, 2, 9, 16 hoặc sang trái 2 bit nếu i thuộc những vị trí còn lại. Ki = PC-2 ( CiDi ). Số bit dịch của những vòng : Bảng 3.6. Bảng dịch bit tại những vòng lặp của DES + PC-2 là hoán vị cố định và thắt chặt sẽ hoán vị chuỗi CiDi 56 bit thành chuỗi 48 bit. PC-2 14 17 11 24 1 53 28 15 6 21 1023 19 12 4 26 816 7 27 20 13 241 52 31 37 47 5530 40 51 45 33 4844 49 39 56 34 5346 42 50 36 29 32 Bảng 3.7. Hoán vị PC-2 3.5.5. Hàm ( ánh xạ ) lan rộng ra ( E ) Hàm lan rộng ra ( E ) sẽ tăng độ dài từ Ri từ 32 bit lên 48 bit bằng cách biến hóa những thứ tự của những bit cũng như lặp lại những bit. Việc triển khai này nhằm mục đích hai mục tiêu : – Làm độ dài của Ri cùng cỡ với khóa K để thực thi việc cộng modulo XOR. – Cho tác dụng dài hơn để hoàn toàn có thể được nén trong suốt quy trình sửa chữa thay thế Tuy nhiên, cả hai mục tiêu này nhằm mục đích một tiềm năng chính là bảo mật thông tin tài liệu. Bằng cách được cho phép 1 bit hoàn toàn có thể chèn vào hai vị trí sửa chữa thay thế, sự phụ thuộc vào của những bit đầu ra với những bit nguồn vào sẽ trải rộng ra. DES được phong cách thiết kế với điều kiện kèm theo là mỗi bit của bản mã nhờ vào vào mỗi bit của bản rõ và khóa. Hình 3.8. Sơ đồ của hàm lan rộng ra Bảng 3.8. Hàm lan rộng ra E Đôi khi nó được gọi là hàm E-Box, mỗi 4 bit của khối vào, bit thứ nhất và bit thứ tư tương ứng với 2 bit của đầu ra, trong khi bit thứ hai và ba tương ứng với 1 bit ở đầu ra 3.5.6. Hộp S – Box – Mỗi hàng trong mỗi hộp S là hoán vị của những số nguyên từ 0 đến 15 – Không có hộp S nào là hàm Affine hay tuyến tính so với những nguồn vào của nó – Sự đổi khác của một bit nguồn vào sẽ dẫn đến sự biến hóa tối thiểu hai bit đầu ra – Đối với hộp S bất kể và với nguồn vào x ( một xâu bit có độ dài bằng 6 bit ) bất kể, thì S ( x ) và S ( x Å 001100 ) phải khác nhau tối thiểu là 2 bit Sau khi cộng modulo với khóa K, hiệu quả thu được chuỗi 48 bit chia làm 8 khối đưa vào 8 hộp S-Box. Mỗi hộp S-Box có 6 bit đầu vào và 4 bit đầu ra ( tổng bộ nhớ nhu yếu cho 8 hộp S-Box chuẩn DES là 256 bytes ). Kết quả thu được là một chuỗi 32 bit liên tục vào hộp P-Box S1 14 0 4 15 4 15 1 12 13 7 14 8 1 4 8 2 2 14 13 4 15 2 6 9 11 13 2 1 8 1 11 7 3 10 15 5 10 6 12 11 6 12 9 3 12 11 7 14 5 9 3 10 9 5 10 0 0 3 5 6 7 8 0 13 S2 15 3 0 13 1 13 14 8 8 4 7 10 14 7 11 1 6 15 10 3 11 2 4 15 3 8 13 4 4 14 1 2 9 12 5 11 7 0 8 6 2 1 12 7 13 10 6 12 12 6 9 0 0 9 3 5 5 11 2 14 10 5 15 9 S3 10 13 13 1 0 7 6 10 9 0 4 13 14 9 9 0 6 3 8 6 3 4 15 9 15 6 3 8 5 10 0 7 1 2 11 4 13 8 1 15 12 5 2 14 7 14 12 3 11 12 5 11 4 11 10 5 2 15 14 2 8 1 7 12 S4 7 13 10 3 13 8 6 15 14 11 9 0 3 5 0 6 0 6 12 10 6 15 11 1 9 0 7 13 10 3 13 8 1 4 15 9 2 7 1 4 8 2 3 5 5 12 14 11 11 1 5 12 12 10 2 7 4 14 8 2 15 9 4 14 S5 2 14 4 11 12 11 2 8 4 2 1 12 1 12 11 7 7 4 10 0 10 7 13 14 11 13 7 2 6 1 8 13 8 5 15 6 5 0 9 15 3 15 12 0 15 10 5 9 13 3 6 10 0 9 3 4 14 8 0 5 9 6 14 3 S6 12 10 9 4 1 15 14 3 10 4 15 2 15 2 5 12 9 7 2 9 2 12 8 5 6 9 12 15 8 5 3 10 0 6 7 11 13 1 0 14 3 13 4 1 4 14 10 7 14 0 1 6 7 11 13 0 5 3 11 8 11 8 6 13 S7 4 13 1 6 11 0 4 11 2 11 11 13 14 7 13 8 15 4 12 1 0 9 3 4 8 1 7 10 13 10 14 7 3 14 10 9 12 3 15 5 9 5 6 0 7 12 8 15 5 2 0 14 10 15 5 2 6 8 9 3 1 6 2 12 S8 13 1 7 2 2 15 11 1 8 13 4 14 4 8 1 7 6 10 9 4 15 3 12 10 11 7 14 8 1 4 2 13 10 12 0 15 9 5 6 12 3 6 10 9 14 11 13 0 5 0 15 3 0 14 3 5 12 9 5 6 7 2 8 11 Bảng 3.9. 8 hộp S-Box 3.5.7. Hộp P-Box Việc hoán vị này mang tính đơn ánh, nghĩa là một bit đầu vào sẽ cho một bit ở đầu ra, không bit nào được sử dụng 2 lần hay bị bỏ lỡ. Hộp P-Box thực ra chỉ là tính năng sắp xếp đơn thuần theo bảng sau : Bảng 3.10. Bảng hoán vị P 3.6. LẬP MÃ DES Đây là ví dụ về việc 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ó những bit kiểm tra sẽ là : 00010010011010010101101111001001101101111011011111111000. Áp dụng IP, ta nhận được L0 và R0 ( trong dạng nhị phân ) L0 L1 = R0 = = 11001100000000001100110011111111 11110000101010101111000010101010 16 vòng lặp mã được biểu lộ như sau : E ( R0 ) K1 E ( R0 ) Å K1 S-box output f ( R0, K1 ) L2 = R1 = = = = = = 011110100001010101010101011110100001010101010101 000110110000001011101111111111000111000001110010 011000010001011110111010100001100110010100100111 01011100100000101011010110010111 00100011010010101010100110111011 11101111010010100110010101000100 E ( R1 ) K2 E ( R1 ) Å K2 S-box output f ( R1, K2 ) L3 = R2 = = = = = = 011101011110101001010100001100001010101000001001 011110011010111011011001110110111100100111100101 000011000100010010001101111010110110001111101100 11111000110100000011101010101110 00111100101010111000011110100011 11001100000000010111011100001001 E ( R2 ) K3 E ( R2 ) Å K3 S-box output f ( R2, K3 ) L4 = R3 = = = = = = 111001011000000000000010101110101110100001010011 010101011111110010001010010000101100111110011001 101100000111110010001000111110000010011111001010 00100111000100001110000101101111 01001101000101100110111010110000 10100010010111000000101111110100 E ( R3 ) K4 E ( R3 ) Å K4 S-box output f ( R3, K4 ) L5 = R4 = = = = = = 010100000100001011111000000001010111111110101001 011100101010110111010110110110110011010100011101 001000101110111100101110110111100100101010110100 00100001111011011001111100111010 10111011001000110111011101001100 011101110 E ( R4 ) K5 E ( R4 ) Å K5 S-box output f ( R4, K5 ) L6 = R5 = = = = = = 101110101110100100000100000000000000001000001010 011111001110110000000111111010110101001110101000 110001100000010100000011111010110101000110100010 01010000110010000011000111101011 00101000000100111010110111000011 10001010010011111010011000110111 E ( R5 ) K6 E ( R5 ) Å K6 S-box output f ( R5, K6 ) L7 = R6 = = = = = = 110001010100001001011111110100001100000110101111 011000111010010100111110010100000111101100101111 101001101110011101100001100000001011101010000000 01000001111100110100110000111101 10011110010001011100110100101100 11101001011001111100110101101001 E ( R6 ) K7 E ( R6 ) Å K7 S-box output f ( R6, K7 ) L8 = R7 = = = = = = 111101010010101100001111111001011010101101010011 111011001000010010110111111101100001100010111100 000110011010111110111000000100111011001111101111 00010000011101010100000010101101 10001100000001010001110000100111 00000110010010101011101000010000 E ( R7 ) K8 E ( R7 ) Å K8 S-box output f ( R7, K8 ) L9 = R8 = = = = = = 000000001100001001010101010111110100000010100000 111101111000101000111010110000010011101111111011 111101110100100001101111100111100111101101011011 01101100000110000111110010101110 00111100000011101000011011111001 11010101011010010100101110010000 E ( R8 ) K9 E ( R8 ) Å K9 S-box output f ( R8, K9 ) L10 = R9 = = = = = = 011010101010101101010010101001010111110010100001 111000001101101111101011111011011110011110000001 100010100111000010111001010010001001101100100000 00010001000011000101011101110111 00100010001101100111110001101010 00100100011111001100011001111010 E ( R9 ) K10 E ( R9 ) Å K10 S-box output f ( R9, K10 ) L11 = R10 = = = = = = 000100001000001111111001011000001100001111110100 101100011111001101000111101110100100011001001111 101000010111000010111110110110101000010110111011 11011010000001000101001001110101 01100010101111001001110000100010 10110111110101011101011110110010 E ( R10 ) K11 E ( R10 ) Å K11 S-box output f ( R10, K11 ) L12 = R11 = = = = = = 010110101111111010101011111010101111110110100101 001000010101111111010011110111101101001110000110 011110111010000101111000001101000010111000100011 01110011000001011101000100000001 11100001000001001111101000000010 11000101011110000011110001111000 E ( R11 ) K12 E ( R11 ) Å K12 S-box output f ( R11, K12 ) L13 = R12 011000001010101111110000000111111000001111110001 011101010111000111110101100101000110011111101001 000101011101101000000101100010111110010000011000 01111011100010110010011000110101 11000010011010001100111111101010 01110101101111010001100001011000 E ( R12 ) K13 E ( R12 ) Å K13 S-box output f ( R12, K13 ) L14 = R13 = = = = = = 001110101011110111111010100011110000001011110000 100101111100010111010001111110101011101001000001 101011010111100000101011011101011011100010110001 10011010110100011000101101001111 11011101101110110010100100100010 00011000110000110001010101011010 E ( R13 ) K14 E ( R13 ) Å K14 S-box output f ( R13, K14 ) L15 = R14 = = = = = = 000011110001011000000110100010101010101011110100 010111110100001110110111111100101110011100111010 010100000101010110110001011110000100110111001110 01100100011110011001101011110001 10110111001100011000111001010101 11000010100011001001011000001101 E ( R14 ) K15 E ( R14 ) Å K15 S-box output f ( R14, K15 ) L16 = R15 = = = = = = 111000000101010001011001010010101100000001011011 101111111001000110001101001111010011111100001010 010111111100010111010100011101111111111101010001 10110010111010001000110100111100 01011011100000010010011101101110 01000011010000100011001000110100 E ( R15 ) K16 E ( R15 ) Å K16 S-box output f ( R15, K16 ) R16 = = = = = = 001000000110101000000100000110100100000110101000 110010110011110110001011000011100001011111110101 111010110101011110001111000101000101011001011101 10100111100000110010010000101001 11001000110000000100111110011000 00001010010011001101100110010101 Cuối cùng, vận dụng IP-1 cho ta nhận được bản mã trong dạng thập lục phân như sau : 85E813540 F0AB405 CHƯƠNG 4 MÔ PHỎNG VÀ KẾT QUẢ 4.1. PHÂN TÍCH BÀI TOÁN Chương trình nhu yếu những công dụng sau : Mã hóa file ( word ) Giải mã file ( word ) Mã hóa văn bản Giải mã văn bản 4.1.1. Đầu vào của chương trình : – Khối văn bản cần mã hóa : Không phân biệt chữ hoa, chữ thường, dùng bảng mã chuẩn ASCII ( mã Unicode ) – Văn bản : nhập trực tiếp văn bản cần mã hóa từ giao diện của chương trình – Khóa : Nhập theo đúng quy cách mã hóa tức gồm 16 ký tự theo kiểu Hexa từ 0 ¨ 9, ABCDEF hoặc abcdef MÃ HÓA FILE GIẢI MÃ FILE MÃ HÓA VĂN BẢN MÃ HÓA VĂN BẢN CHỌN FILE TEXT CẦN GIẢN MÃ NHẬP KHÓA MÃ HÓA CHỌN VĂN BẢN MÃ HÓA NHẬP KHÓA MÃ HÓA CHỌN FILE TEXT CẦN GIẢI MÃ NHẬP KHÓA GIẢI MÃ CHỌN VĂN BẢN GIẢI MÃ NHẬP KHÓA GIẢI MÃ CHƯƠNG TRÌNH MÃ HÓA VÀ GIẢI MẬT Hình 4.1. Sơ đồ công dụng của chương trình mô phỏng GIẢI MÃ FILE TEXT MÃ HÓA FILE TEXT GIẢI MÃ FILE TEXT THÀNH CÔNG FILE TEXT CẦN MÃ HÓA MÃ HÓA FILE TEXT THÀNH CÔNG FILE TEXT CẦN GIẢI MÃ Hình 4.2. Biểu đồ hoạt động giải trí của chương trình mô phỏng 4.2. PHẠM VI ỨNG DỤNG CHƯƠNG TRÌNH Chương trình được thiết lập nhằm mục đích để triển khai ứng dụng mã hóa thông tin để mã hóa và giải thuật file, văn bản sử dụng hệ mã DES 4.3. KẾT QUẢ MÔ PHỎNG 4.3.1. Thiết kế kiến trúc : 4.3.1. 1 Ngôn ngữ thiết lập : C # 4.3.1. 2 Môi trường thiết lập : Visual Studio 2005 4.3.1. 3 Giao diện : Windows Form. 4.3.1. 4 Các mạng lưới hệ thống con : – Hệ thống mã hóa và giải thuật file. – Hệ thống mã hóa và giải thuật văn bản. 4.3.2. Thiết kế giao diện : Hình 4.3. Giao diện chính của chương trình 4.3.2. 1. Sử dụng công dụng mã hóa file – Người sử dụng chọn file văn bản cần mã hóa, tiếp theo chọn hệ mã ( DES ). – Người sử dụng chọn tính năng mã hóa file, file chứa nội dung đã mã hóa được lưu cùng thư mục với file khởi đầu. – Nếu người dùng không nhập khóa hoặc khóa sai thì chương trình thông tin nhập khóa. trái lại, chương trình triển khai mã hóa file và thông tin mã hóa thành công xuất sắc. – Kết quả nhập sai khóa : – Kết quả nhập đúng khóa và quy trình mã hóa thành công xuất sắc : 4.3.2. 2. Sử dụng tính năng giải thuật file : – Người sử dụng chọn file văn bản đã mã hóa, cần giải thuật, tiếp theo chọn hệ mã ( DES ). – Người sử dụng chọn công dụng giải thuật file, file chứa nội dung đã giải thuật được lưu cùng thư mục với file khởi đầu. – Nếu người dùng không nhập khóa hoặc khóa sai thì chương trình thông tin nhập khóa. trái lại, chương trình thực thi giải thuật file và thông tin giải thuật thành công xuất sắc. – Kết quả nhập sai khóa : – Kết quả nhập đúng khóa và quy trình giải thuật thành công xuất sắc : 4.3.2. 3. Sử dụng tính năng mã hóa văn bản : – Người sử dụng nhập văn bản cần mã hóa, tiếp theo chọn hệ mã ( DES ). – Người sử dụng chọn công dụng mã hóa văn bản – Nếu người dùng không nhập khóa hoặc khóa sai thì chương trình thông tin nhập khóa. trái lại, chương trình thực thi mã hóa và thông tin mã hóa thành công xuất sắc. – Kết quả nhập sai khóa : – Kết quả nhập đúng khóa và quy trình mã hóa thành công xuất sắc : 4.3.2. 4. Sử dụng công dụng giải thuật văn bản : – Người sử dụng nhập văn bản cần giải thuật, tiếp theo chọn hệ mã ( DES ). – Người sử dụng chọn công dụng giải mãvăn bản – Nếu người dùng không nhập khóa hoặc khóa sai thì chương trình thông tin nhập khóa. trái lại, chương trình triển khai giải thuật và thông tin giải thuật thành công xuất sắc. – Kết quả nhập sai khóa : – Kết quả nhập đúng khóa và quy trình giải thuật thành công xuất sắc : 4.4. KIỂM THỬ STT Dữ Liệu Vào Xử Lý Kết Quả Lỗi Nguyên Nhân Lỗi 1 File văn bản Mã hóa file File đã mã hóa lưu tại cùng thư mục Không 2 File đã mã hóa, cần giải thuật Giải mã files File được giải thuật như nội dung trước khi mã hóa Không 3 Chuỗi : Hồ Thị Minh Phú Mã hóa văn bản 100001001111100011111111001000110010111010100000100100011011111100010000100111101001011001001000110100010010100101111010110101001011101011101111000000001101101010000000000000011001110001000000 Không 4 Chuỗi nhị phân : 100001001111100011111111001000110010111010100000100100011011111100010000100111101001011001001000110100010010100101111010110101001011101011101111000000001101101010000000000000011001110001000000 Giải mã văn bản Hôÿ Thiÿ Minh Phuÿ Có Lỗi font chữ KẾT LUẬN NHỮNG VẤN ĐỀ ĐÃ LÀM ĐƯỢC – Tìm hiểu nguyên tắc, thuật toán của hệ mã DES – Xây dựng chương trình DeMo – Cài đặt chương trình DeMo để mã hóa file, văn bản NHỮNG VẤN ĐỀ CHƯA LÀM ĐƯỢC – Chương trình chỉ mã hóa được file văn bản ( word ), không mã hóa được những file khác ( pdf, PowerPoint, … ) – Chưa tìm hiểu và khám phá được thám mã 3 vòng, thám mã 16 vòng của hệ mã DES – Kết quả giải thuật bị lỗi Font, vẫn chưa khắc phục được HƯỚNG PHÁT TRIỂN ĐỀ TÀI – Tìm hiểu thám mã 3 vòng, thám mã 16 vòng cho hệ mã DES – Tìm hiểu mã hóa RSA, AES, và một số ít hệ mã khác – Tìm hiểu chử ký điện tử và bảo mật thông tin cơ sở tài liệu TÀI LIỆU THAM KHẢO [ 1 ] Trần Minh triết ( 2004 ), Nghiên cứu 1 số ít yếu tố bảo mật thông tin thông tin và ứng dụng, Đại học Khoa học Tự nhiên, Đại học Quốc gia TP. Hồ Chí Minh [ 2 ] Bảo mật thông tin, quy mô và ứng dụng, Nguyễn Xuân Dũng, 2007, Nhà xuất bản thống kê [ 3 ] FIPS ( 1993 ), Data Encyption Standard ( DES ) [ 4 ] NIST ( 1999 ), Recommended elliptic curves for federal government use [ 5 ] Các địa chỉ trên Internet : PHỤ LỤC KHAI BÁO CÁC NAMESPACE : – SimpleCryptographer. DES { } : Chứa những lớp dùng cho hệ mã DES. KHAI BÁO CÁC LỚP CHÍNH : – class BaseTransform { } : Lớp đổi khác những hệ mã cơ bản. – class FileIO { } : Lớp nhập xuất file – class Keys { } : Lớp tạo khóa. – class TransformTables { } : Lớp quy đổi giữa những hộp S-box dùng trong hệ mã DES. – class DESData { } : Lớp dữ liệu dùng cho hệ mã DES. – abstract class CommonProcess { } : Lớp trừu tượng của tiến trình. – class Cryptographer { } : Lớp mã hóa và giải thuật. – class Algorithms { } : Lớp giải thuật. KHAI BÁO CÁC HÀM CHÍNH : – public static string FromTextToHex ( string text ) { } : Hàm đổi khác văn bản thành hệ Hexa. – public static string FromHexToText ( string hexstring ) { } : Hàm đổi khác văn bản dạng Hexa sang văn bản. – public static string FromBinaryToText ( string binarystring ) { } : Hàm đổi khác văn bản dạng nhị phân sang văn bản. – public static string setTextMutipleOf64Bits ( string text ) { } : Hàm thiết lập chiều dài của văn bản thánh khối 64 bit. – public static string FromDeciamlToBinary ( int binary ) { } : Hàm biến hóa thập phân sang nhị phân. – public static byte FromBinaryToByte ( string binary ) { } Hàm đổi khác nhị phân sang byte. – public static string FromHexToBinary ( string hexstring ) { } : Hàm biến hóa Hexa sang nhị phân. – public static string FromBinaryToHex ( string binarystring ) { } : Hàm đổi khác nhị phân sang Hexa. – public static string setTextMutipleOf128Bits ( string text ) { } : Hàm tạo văn bản thành khối 128 bit. – public static string FileReadToBinary ( string filename ) { } Hàm đọc tài liệu từ file và chuyển sang nhị phân. – public static void WriteBinaryToFile ( string filename, string binaryText ) { } : Hàm viết tài liệu dạng nhị phân vào file. – public void setCipherKey ( Matrix CipherKey ) { } : Hàm tạo khóa. – public string EncryptionStart ( string text, string key, bool IsBinary ) { } : Hàm mã hóa. – public string DecryptionStart ( string text, string key, bool IsBinary ) { } : Hàm mã hóa .
Các file đính kèm theo tài liệu này :
- Mật mã hóa dữ liệu bằng phương pháp mã hóa DES.doc
Source: https://thomaygiat.com
Category : Kỹ Thuật Số
Chuyển vùng quốc tế MobiFone và 4 điều cần biết – MobifoneGo
Muốn chuyển vùng quốc tế đối với thuê bao MobiFone thì có những cách nào? Đừng lo lắng, bài viết này của MobiFoneGo sẽ giúp…
Cách copy dữ liệu từ ổ cứng này sang ổ cứng khác
Bạn đang vướng mắc không biết làm thế nào để hoàn toàn có thể copy dữ liệu từ ổ cứng này sang ổ cứng khác…
Hướng dẫn xử lý dữ liệu từ máy chấm công bằng Excel
Hướng dẫn xử lý dữ liệu từ máy chấm công bằng Excel Xử lý dữ liệu từ máy chấm công là việc làm vô cùng…
Cách nhanh nhất để chuyển đổi từ Android sang iPhone 11 | https://thomaygiat.com
Bạn đã mua cho mình một chiếc iPhone 11 mới lạ vừa ra mắt, hoặc có thể bạn đã vung tiền và có một chiếc…
Giải pháp bảo mật thông tin trong các hệ cơ sở dữ liệu phổ biến hiện nay
Hiện nay, với sự phát triển mạnh mẽ của công nghệ 4.0 trong đó có internet và các thiết bị công nghệ số. Với các…
4 điều bạn cần lưu ý khi sao lưu dữ liệu trên máy tính
08/10/2020những chú ý khi tiến hành sao lưu dữ liệu trên máy tính trong bài viết dưới đây của máy tính An Phát để bạn…