Mô tả thuật toán

Một phần của tài liệu Đồ án an toàn và bảo mật thông tin (Trang 57)

DES thực hiện trên từng khối 64 bít bản rõ. Sau khi thực hiện hoán vị khởi đầu, khối dữ liệu được chia làm hai nửa trái L0 và phải R0, mỗi nửa 32 bít. Từ L0 và R0 sẽ lặp 16 vòng, tại mỗi vòng tính:

Li=Ri-1

Ri=Li-1⊕f(Ri-1,Ki) với i= 1, 2,…,16

Tại vòng thứ 16, R16 đổi chỗ cho L16. Sau đó ghép 2 nửa R16, K16 cho đi qua hoàn vị nghịch đảo của hoàn vị IP sẽ tính được bản mã. Bản mã cũng có độ dài 64 bít. Trong đó hàm f được thực hiện như sau:

Khối Ri-1 có độ dài 32 bít cho đi qua hoàn vị mở rộng E được một khối có độ dài 48 bít. Khối này XOR với khóa Ki, kết quả được một khối có độ dài 48 bit. Khối này sẽ được chia làm 8 khối B1, B2,…., B8. Mỗi khối này có độ dài là 6 bít. Từng khối Bi cho đi qua hộp Si sẽ biến một khối có độ dài 6 bit thành một khối Ci có độ dài 4 bít. Các khối Ci ghép lại được một khối có độ dài 32 bit. Khối này cho đi qua hoàn vị P cho ra kết quả của hàm f(Ri-1, Ki).

Mỗi hộp S là một bảng gồm 4 hàng và 16 cột được đánh số từ 0. Như vậy mỗi hộp S có hàng 0,1,2,3. Cột 0,1,2,…,15. Mỗi phần tử của hộp là

B1B2B3B4B5B6B7B8 c1c2c3c4c5c6c7c8 Ri-1 Ki E E(R i-1) + S1 S2 S3 S4 S5 S6 S7 S8 f(Ri-1,Ki)

một số 4 bít. Sáu bít vào hộp S sẽ xác định số hàng và số cột để tìm kết quả ra.

Mỗi khối Bi có 6 bít kí hiệu là b1, b2, b3, b4, b5 và b6. Bít b1 và b6 được kết hợp thành một số 2 bít, nhận giá trị từ 0 đến 3, tương ứng với một hàng trong bảng S. Bốn bít ở giữa, từ b2 tới b5, được kết hợp thành một số 4 bít, nhận giá trị từ 0 đến 15, tương ứng với một cột trong bảng S.

Ví dụ, giả sử khối B6 là 110010 ta đưa qua hộp S6. Bít đầu tiên và bít cuối cùng kết hợp thành 10, tương ứng với hàng thứ 2 của hộp S6. Bốn bít giữa kết hợp thành 1001, tương ứng với cột thứ 9 của hộp S6. Phần tử hàng 2 cột 9 của hộp S6 là 0. Giá trị 0000 được thay thế cho 110010.

Sơ đồ tính khóa K1, K2, …, K16 K PC-1 C0 D0 D0 LS1 LS1 C 1 D 1 D 1 PC-2 K 1 . . LS 16 LS 16 C16 D16 D16 PC-2 K16

Từ khóa K bí mật có độ dài 64 bít đi qua hoán vị chọn PC1 cho một khối có độ dài 56 bit. Khối này chia làm 2 nửa C0 và D0 mỗi nửa 28 bít. Từ khối này sẽ thực hiện qua 16 vòng lặp. C0 và D0 sẽ dịch vòng trái LS1 bít cho khối C1 và D1. Hai khối C1 và D1 sẽ ghép lại thành một khối 56 bít rồi cho qua hoán vị chọn PC2 được khóa K1 có độ dài 48 bít. Từ khối C1 và D1 dịch vòng trái LS2 bít được khối C2 và D2, ghép 2 khối C2 và D2 được một khối 56 bit. Cho khối này qua hoán vị chọn PC2 được khóa K2 cũng có độ dài 48 bít. Tương tự cho đến khóa K16.

Trong đó bảng số bít dịch trái tại mỗi vòng là:

Vòng i 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Số bít dịch 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1

3.3.Hoán vị khởi đầu

Hoán vị khởi đầu đổi chỗ khối dữ liệu vào, thay đổi vị trí của các bít trong khối dữ liệu vào. Bảng hoán vị khởi đầu này, và tất cả các bảng khác sau này, được đọc từ trái qua phải, từ trên xuống dưới. Ví dụ, hoán vị khởi đầu chuyển bít 1 thành bít 58, bít 2 thành bít 50, bít 3 thành bít 42,...

Bảng hoán vị khởi đầu.

58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4

62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8

57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3

61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7

Hoán vị khởi đầu và tương ứng là hoán vị ngược không làm ảnh hưởng đến sự an toàn của DES.

Một phần của tài liệu Đồ án an toàn và bảo mật thông tin (Trang 57)

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

(126 trang)