Chuẩn mã hóa dƣ̃ liệu DES

Một phần của tài liệu Giáo trình: An toàn và bảo mật Thông tin ppsx (Trang 45 - 47)

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ột 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ố đi ̣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 hai nƣ̉a L0 và R0. Các vịng có chức năng giớng nhau , nhận input là L i-1 và Ri-1 tƣ̀ vòng trƣớc và sinh ra output là các xâu 32 bit Li và Ri nhƣ sau:

Li = Ri-1; (1)

Ri = Li-1  f(Ri-1, Ki) trong đó f(Ri-1, Ki) = P( S( E(Ri-1)  Ki ) ); (2) 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 vi ̣ mở rộng ánh xạ Ri-1tƣ̀ 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).

 P là hoán vi ̣ cố đi ̣nh khác của 32 bit.

Một hoán vi ̣ bit 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à cuối cùng xâu kết quả sẽ đƣợc hoán vi ̣ bit lần cuối bởi hoán vi ̣ 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 khoá con ứng dụng vào các vòng trong 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 một ký tƣ̣ trong xâu 48 bit, và sau đó sử dụng mợt phép chủ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 khoá 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 vi ̣ và gán cho hai biến 28 bit C và D , và sau đó trong 16 vòng lặp cả 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-1f16Tf15T ... f2Tf1IP(x)

Trong đó:

 T mô tả phép hoán vị của các khối LiRi (1 ≤ i ≤ 15).

 fi mô tả việc dùng hàm f với khoá Ki (1 ≤ i ≤ 16).

Thuật toán chi tiết:

Output: bản mã 64 bit C = c1c2…c64

1. Sinh khóa con. Tính các khóa con theo thuật toán sinh khóa con bên dƣới 2. (L0,R0)  IP(m1m2…m64) (Sƣ̉ dụng bảng hoán vi ̣ IP để hoán vi ̣ các bit , kết quả nhận đƣợc chia thành hai nƣ̉a là L0 = m58m50…m8, R0 = m57m49…m7.)

3. (16 vòng) for i = 1 to 16

Tính các Li và Ritheo các công thƣ́c (1) và (2), việc tính f(Ri-1, Ki) = P( S( E(Ri-1)  Ki ) ) đƣợc thƣ̣c hiện nhƣ sau:

a) Mở rộng Ri-1 = r1r2…r32 tƣ̀ 32 bit thành 48 bit bằng cách sƣ̉ dụng hoán vi ̣ mở rợng E.

T  E(Ri-1). (Vì thế T = r32r1r2…r32r1)

b) T’  T  Ki. Biểu diễn T’ nhƣ là các xâu gồm 8 ký tự 6 bit T’ = (B1,…,B8)

c) T’’  (S1(B1), S2(B2),…,S8(B8)). Trong đó Si(Bi) ánh xạ b1b2…b6 thành các xâu 4 bit của phần tƣ̉ thuộc hàng r và cột c của các bảng Si (S box) trong đó r = 2 * b1 + b6 và c = b2b3b4b5 là một số nhị phân từ 0 tới 15. Chẳng hạn S1(011011) sẽ cho r = 1 và c = 13 và kết quả là 5 biểu diễn dƣới dạng nhi ̣ phân là 0101.

d) T’’’  P(T’’) trong đó P là hoán vi ̣ cố đi ̣nh để hoán vi ̣ 32 bit của T’’ = t1t2…t32 sinh ra t16t7…t25.

4. b1b2…b64  (R16, L16) (đổi vi ̣ trí các khối cuối cùng L16, R16 5. C  IP-1(b1b2…b64) (Biến đổi sƣ̉ dụng IP-1, C = b40b8…b25) Sơ đờ 16 vịng lặp của DES:

Một phần của tài liệu Giáo trình: An toàn và bảo mật Thông tin ppsx (Trang 45 - 47)

Tải bản đầy đủ (PDF)

(148 trang)