5.SỬ DỤNG JAVA DEMO CÀI ĐẶT MÃ HÓA DES

Một phần của tài liệu Tìm hiểu ngôn ngữ java và viết demo ứng dụng (Trang 39 - 42)

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 miễn phắ và phát triển nó thành chuẩn mã hóa dữ liệu và công bố vào ngày 15/02/1977

5.2. PHƯƠNG PHÁP BẢO MẬT

DESlà 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 chắnh xác hơn phải là 64 bit với các bit ở vị trắ chia hết cho 8 có thể sử dụng là các bit kiểm tra tắnh chẵn lẻ. Số khóa của không gian khóa K là 256

Hình 3.1. Chuẩn mã dữ liệu DES

Thuật toán thực hiện 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 thực hiện trong quá trình mã hóa. Trong mỗi vòng, 8 ánh xạ thay thế 6 bit thành 4 bit Si ( còn gọi là hộp Si) được chọn lựa kỹ càng và cố định, 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ó chức năng giống nhau, nhận input là Li-1 và Ri-1 từ vòng truớc và sinh ra output là các 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ị mở rộng ánh xạ Ri-1 từ 32 bit thành 48 bit (đôi khi tất cả các bit sẽ được sử dụng hoặc một bit sẽ được sử dụng hai lần)

Một hoán vị khởi đầu (IP) được sử dụng cho vòng đầu tiên, sau vòng cuối cùng nửa trái và phải sẽ được đổi cho nhau và xâu cuối cùng kết quả 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 mã diễn ra tương tự nhưng với các khóa con ứng dụng vào các vòng theo thứ tự ngược lại

Có thể hình dung đơn giản là phần bên phải trong mỗi vòng (sau khi mở rộng input 32 bit thành 8 ký tự 6 bit Ờ xâu 48 bit) sẽ thực hiện một tắnh toán thay thế phụ thuộc 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 để phân bố lại các bit của các ký tự kết quả 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 các 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 (áp 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à các khóa con 48 bit Ki được chọn từ kết quả của việc ghép hai xâu với nhau.

Như vậy, ta có thể mô tả toàn bộ 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 mô tả phép hoán vị của các khối Li, RI (1 ≤ i ≤ 15). - fi mô tả việc dùng hàm f với khóa Ki (1 ≤ i≤ 16)

4.3. ƯU NHƯỢC ĐIỂM4.3.1. Ưu điểm: 4.3.1. Ưu điểm:

- Có tính bảo mật cao - Công khai, dễ hiểu

- Nó có thể triển khai trên thiết bị điện tử có kích thước nhỏ

4.3.2. Các yếu điểm của DES:4.3.2.1. Tắnh bù 4.3.2.1. Tắnh bù

Nếu ta ký hiệu u là phần bù của u (vắ dụ : 0100101 là phần bù của 1011010) thì des có tắnh chất sau

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ã y được mã hóa từ bản rõ x với khóa k. Tắnh chất này là một yếu điểm của DES bởi vì qua đó đối phương có thể loại bỏ đi một số khóa phải thử khi tiến hành thử giải mã theo kiểu vét cạn

4.3.2.2. khóa yếu

Khóa yếu là các khóa mà theo thuật toán sinh khóa con thì tất cả 16 khóa con đều như nhau : K1=K2=... =K16

Điều đó khiến cho việc mã hóa và giải mã đối với khóa yếu là giống hệt nhau

Khóa yếu (Hex) C0 D0

Một phần của tài liệu Tìm hiểu ngôn ngữ java và viết demo ứng dụng (Trang 39 - 42)