Nghiên cứu, và thực hiện một số test để đánh giá độ an toàn của DES
Lời mở đầu
Máy tính đợc phát minh vào năm 1942, lúc đó nó nằm ngoài tầm tay của
các tổ chức, cá nhân vì nó yêu cầu cao về chi phí, kích cỡ, năng lợng Ngày nay,
máy tính đã rất phổ biến và ngời ta không sử dụng một máy tính đơn lẻ nữa mà kết
nối các máy tính với nhau nhằm tăng khả năng làm việc, trao đổi và cập nhật thông
tin. Các máy tính đợc kết nối với nhau đợc gọi là mạng.
Trên phạm vi toàn cầu ngời ta dung mạng Internet, ở mỗi quốc gia đều có những
mạng riêng của minh (Intranet) với rất nhiều những mạng mang tính bộ phận( có
thể là LAN( Local Area Network- Mạng cục bộ) hoặc WAN( Wide Area Network-
Mạng diện rộng) hoặc MAN(Metropolitan Area Network- Mạng vùng Thành phố)).
Nhiều dịch vụ của mạng nh : th điện tử, chuyển và nhận tiền, thơng mại điện tử
đã đợc sử dụng rộng rãi.
Khi tham gia vào mạng, vấn đề quan trọng đặt ra là làm thế nào để bảo mật
thông tin, dữ liệu. Thông tin trên mạng dù đang chuyển hay đợc lu trữ đều cần đợc
bảo vệ. Hoặc các thông tin đó cần đợc giữ bí mật hoặc chúng phải cho phép ngời ta
kiểm tra để tin tởng rằng chúng không bị sửa đổi so với dạng nguyên thuỷ của
mình.
Trớc yêu cầu đó một số giải pháp kỹ thuật đã đợc xây dựng nhằm đảm bảo
tính an toàn dữ liệu tại nơi lu trữ cũng nh dữ liệu đợc truyền qua mạng. Các giải
pháp đó là ngời ta sử dụng các hệ mật. Có các hệ mật cổ điển nh : mật mã thay thế,
mật mã dịch chuyển, mật mã Affine, mật mã Vigenere , và các hệ mật hiện đại
1
Nghiên cứu, và thực hiện một số test để đánh giá độ an toàn của DES
nh : mật mã khoá công khai RSA, chữ ký số, chuẩn mã dữ liệu DES Nh ng khi sử
dụng các hệ mật để mã hoá dữ liệu cần phải quan tâm đến độ an toàn của các hệ
mật mà mình đã sử dụng.
Trong đề tài này tôi nghiên cứu về cách đánh giá độ an toàn của chuẩn mã
dữ liệu DES . Để kiểm tra đánh giá độ an toàn của DES ta có hai cách. Đó là phơng
pháp tấn công DES và phơng pháp đánh giá các tính chất của DES. Sự khác nhau
giữa hai phơng pháp này là một phơng pháp thì tấn công trực tiếp vào DES, nếu phá
vỡ DES thì ta có thể nói rằng DES không an toàn và ngợc lại; phơng pháp đánh giá
tính chất thì kiểm tra các tính chất của DES, nếu thoả mãn điều kiện thì có thể nói
là an toàn và ngợc lại. Và tôi đi sâu nghiên cứu phơng pháp đánh giá các tính chất
của DES.
2
Nghiên cứu, và thực hiện một số test để đánh giá độ an toàn của DES
Chơng I
TổNG QUAN Về NGÔN NGữ C
I.1. Lịch sử hình thành và phát triển
Ngôn ngữ C do Brian W.Kernighan và Dennis M.Ritchie phát triển vào đầu
những năm 70 tại phòng thí nghiệm BELL ( Hoa Kỳ) với mục đích ban đầu là để
phát triển hệ điều hành UNIX. Bối cảnh ra đời xuất phát từ nhu cầu cần phải có một
ngôn ngữ lập trình hệ thống thay thế cho hợp ngữ (Assembly) vốn nặng nề, độ tin
cậy thấp và khó chuyển đổi giữa các hệ máy tính khác nhau.
Ngoài việc C đợc dùng để viết hệ điều hành UNIX, ngời ta nhanh chóng
nhận ra sức mạnh của C trong việc xử lý các vấn đề hiện đại của tin học: xử lý số,
văn bản, cơ sở dữ liệu, lập trình hớng đối tợng. C đã trở thành một chuẩn mặc nhiên.
Liên quan đến sự hình thành và phát triển của ngôn ngữ, có thể kể đến một
số sự kiện sau:
- Năm 1978, cuốn giáo trình dạy lập trình bằng ngôn ngữ C The C
programming langguage do chính 2 tác giả của ngôn ngữ Brian W.Kernighan và
Dennis M.Ritchie biên soạn đã đợc xuất bản và đợc phổ biến rộng rãi.
- Năm 1983 một tiểu ban của viện tiêu chuẩn quốc gia Mỹ (ANSI) đợc thành
lập nhằm đề xuất ra một chuẩn cho ngôn ngữ C.
- Năm 1988 chuẩn ANSI C chính thức đợc ban hành. Chuẩn này bao gồm các
mô tả về ngôn ngữ theo Brian W.Kernighan và Dennis M.Ritchie và quy định các
th viện chuẩn của ngôn ngữ C, nhờ đó tăng tính khả chuyển của chơng trình viết
bằng C.
3
Nghiên cứu, và thực hiện một số test để đánh giá độ an toàn của DES
- Trong thế giới máy vi tính có các hệ chơng trình dịch C nổi tiếng nh: Turbo
C, Borland C của Borland Inc; MSC, VC của Microsoft Corp; Lattice C của Lattice.
I. 2. Các tính chất đặc trng của ngôn ngữ
C là một ngôn ngữ lập trình vạn năng đợc dùng để viết các hệ điều hành nh
UNIX cũng nh các chơng trình ứng dụng nh quản lý văn bản, cơ sở dữ liệu.
C là một ngôn ngữ có mức độ thích nghi cao, gọn và không nhất thiết phải
cần tới hợp ngữ.
C độc lập với bất kỳ kiến trúc máy đặc thù nào và với một chút thận trọng
vẫn dễ dàng viết đợc các chơng trình khả chuyển (portability) tức là những chơng
trình có thể chạy mà không cần phải thay đổi gì khi có sự thay đổi về phần cứng.
C đợc sử dụng rộng rãi trong các lĩnh vực chuyên nghiệp vì đáp ứng đợc các
yêu cầu: hiệu quả cao trong soạn thảo chơng trình và dịch ra mã máy; tiếp cận trực
tiếp với các thiết bị phần cứng.
C không đa ra các phép toán xử lý trực tiếp các đối tợng hợp thành nh là đối
tợng toàn vẹn; không xác định bất kỳ một phơng tiện cấp phát bộ nhớ nào khác
ngoài cấp phát tĩnh, cấp phát động theo nguyên tắc xếp chồng cho các biến cục bộ
của hàm; không cung cấp cơ chế I/O, không có phơng pháp truy nhập tệp. Tất cả các
cơ chế này đợc thực hiện bằng những lời gọi hàm trong th viện.
C đa ra các kết cấu điều khiển cơ bản cần cho các chơng trình có cấu trúc
nh: nhóm tuần tự các câu lệnh, chọn quyết định (if); chu trình với phép kiểm tra kết
thúc ở đầu (for, while), hoặc ở cuối (do...while); và việc lựa chọn một trong các tr-
ờng hợp có thể (switch).
C cung cấp con trỏ và khả năng định địa chỉ số học. Các đối của hàm đợc
truyền bằng cách sao chép giá trị đối và hàm đợc gọi không thể thay đổi đợc giá trị
của đối hiện tại.
C cho phép hàm đợc gọi đệ quy và các biến cục bộ của hàm sẽ tự động
sinh ra hoặc tạo mới với mỗi lần gọi mới. Các định nghĩa hàm không đợc lồng nhau
4
Nghiên cứu, và thực hiện một số test để đánh giá độ an toàn của DES
nhng các biến có thể đợc khai báo theo kiểu cấu trúc khối. Các hàm có thể dịch tách
biệt. Các biến có thể trong hoặc ngoài hàm. Hàm chỉ
biết đợc các biến ngoài trong cùng một tệp gốc, hoặc biến tổng thể extern. Các biến
tự động có thể đặt trong các thanh ghi để tăng hiệu quả, nhng việc khai báo thanh
ghi chỉ là một hớng dẫn cho chơng trình dịch và không liên quan gì đến các thanh
ghi đặc biệt của máy.
C không phải là một ngôn ngữ có kiểu mạnh mẽ theo nghĩa của PASCAL
hoặc ALGOL/68. Nó tơng đối thoải mái trong chuyển đổi dữ liệu nhng không tự
động chuyển các kiểu dữ liệu một cách phóng túng nh của PL/I. Các chơng trình
dịch hiện có đều không đa ra cơ chế kiểm tra chỉ số mảng, kiểu đối số
Mặc dù vậy, C vẫn còn tồn tại một số nhợc điểm nh một số phép toán có thứ
tự thực hiện cha đúng; một số phần cú pháp có thể làm tốt hơn; hiện có nhiều phiên
bản của ngôn ngữ, chỉ khác nhau ở một vài chi tiết.
Tóm lại, C vẫn tỏ ra là một ngôn ngữ cực kỳ hiệu quả và đầy sức diễn cảm đối
với nhiều lĩnh vực ứng dụng lập trình. Hơn nữa, ta biết rằng hệ mật chuẩn hay chữ
ký số luôn cần một bộ số rất lớn tức là kích cỡ của không gian khoá rất lớn khoảng
trên 300 số thập phân. Do đó, ngôn ngữ C đủ mạnh để có thể đáp ứng đợc điều đó.
Chơng II
Các hệ mật cổ điển
5
Nghiên cứu, và thực hiện một số test để đánh giá độ an toàn của DES
II.1 Các hệ mật
Mục tiêu cơ bản của mật mã là cho phép hai ngời, thờng đợc đề cập đến nh
Alice và Bob, liên lạc trên kênh không an toàn theo cách mà đối thủ nh Oscar
không thể hiểu cái gì đang đợc nói. Kênh này có thể là đờng điện thoại hoặc máy
tính chẳng hạn.
Định nghĩa : Hệ mật là một bộ năm thành phần (P,C,K,E,D) thoả mãn các
điều kiện sau:
1) P là tập hữu hạn các bản rõ có thể
2) C là tập hữu hạn các bản mã có thể
3) K là tập hữu hạn các khoá có thể
4) Với mỗi k K, tồn tại một quy tắc mã e
k
E và một quy tắc giải mã
tơng ứng d
k
D. Mỗi e
k
: P C và d
k
: C P thoả mãn :
d
k
(e
k
(x)) = x với mỗi bản rõ x P
Điều kiện 4 là điều kiện chính. Nó có nghĩa là nếu bản rõ x ( plaintext ) đợc
mã hoá sử e
k
và sau đó bản mã ( ciphertext ) kết quả đợc giải mã sử dụng d
k
thu đợc
kết quả là bản rõ nguyên bản x.
Giả sử, Alice muốn gửi cho Bob một thông báo nào đấy mà không cho ngời
khác xem, thông báo đó có thể là bài tiếng Anh, dữ liệu sô v.v có cấu trúc tuỳ ý.
Thông tin đó đợc gọi là bản rõ.
Alice và Bob phải thống nhất chọn một hệ mật và chọn khoá ngẫu nhiên k
K. Họ làm điều này một cách an toàn, chẳng hạn khi họ ở cùng một chỗ và không
bị Oscar quan sát hoặc họ dùng kênh an toàn khi ở xa nhau.
Sau đó, giả sử Alice muốn gửi thông báo cho Bob trên kênh không an toàn.
Thông báo đó là dòng:
6
Nghiên cứu, và thực hiện một số test để đánh giá độ an toàn của DES
x = x
1
, x
2
, , x
n
với n 1, x
i
P, 1 i n
Mỗi x
i
đợc mã hoá sử dụng quy tắc e
k
đợc định rõ bởi khoá định trớc K. Từ
đó, Alice tính:
y
i
= e
k
( x
i
), với 1 i n, và bản mã thu đợc là dòng:
y = y
1
, y
2
, , y
n
Alice gửi nó trên kênh, Oscar dù thấy bản mã này trên kênh không an toàn
cũng không thể xác định đợc bản rõ là gì. Khi Bob nhận đợc y = y
1
, y
2
, , y
n
, sẽ sử
dụng d
k
để giả mã, thu đợc bản rõ ban đầu x = x
1
,x
2
, ,x
n
.
Rõ ràng, với x
1
x
2
thì e
k
(x
1
) e
k
(x
2
). Nếu y = e
k
(x
1
)= e
k
(x
2
) khi x
1
= x
2
thì
Bob không biết đợc y phải gải mã cho x
1
hay x
2
. Chú ý rằng P = C thì mỗi hàm mã
hoá e
k
là một phép hoán vị. Có nghĩa là, nếu tập các bản rõ và bản mã là tơng tự thì
mỗi hàm mã hóa chỉ sắp xếp ( hay hoán vị ) lại các phần tử của tập này.
X y y x
k k
Sau đây là các hệ mật mà Alice và Bob có thể dùng.
II.1.1 Mật mã dịch chuyển
Định nghĩa : Cho P = C = K = Z
26
Với 0 k 25, xác định :
e
k
(x) = x + k mod 26
và d
k
(y) = y + k mod 26 với x,y Z
26
Ví dụ : Giả sử khoá k = 11 và bản rõ là :
7
Oscar
Alice Bộ mã hoá Bộ giải mã Bob
Kênh an toàn
Nguồn khoá
Nghiên cứu, và thực hiện một số test để đánh giá độ an toàn của DES
WEWILLMEETATMIDNIGHT
Trớc hết, phải số hoá nó thu đợc nh sau
22 4 22 8 11 11 12 4 4 19
0 19 12 8 3 13 8 6 7 19
Tiếp theo, cộng 11 vào mỗi giá trị, rút gọn mỗi tổng theo modulo 26
7 15 7 19 22 22 23 15 15 4
11 4 23 19 14 24 19 17 18 4
Cuối cùng chuyển dãy số thành dãy chữ
H P H T W W X T P E L E X T O Y T R S E
Để giải mã, Bob thực hiện theo trình tự ngợc lại. Trớc hết chuyển bản mã
thành dãy các số, tiếp theo trừ mỗi giá trị cho 11( rút gọn cho modulo 26) và cuối
cùng chuyển dãy số thành dãy chữ.
Một hệ mật đợc sử dụng trong thực tế, nó phải thoả mãn hai tính chất sau:
1) e
k
và d
k
khi tác động vào x hoặc y là có hiệu quả tính toán
2) Một đối thủ khi có bản mã y, sẽ không thể xác định khoá k đợc sử dụng hoặc
bản rõ x
II.1.2 Mật mã thay thế
Định nghĩa : Cho P = C = Z
26
, K gồm tất cả các hoán vị trên tập 26 phần tử
từ 0,1, ,25. Với mỗi hoán vị K, xác định :
e
(x) = (x) và d
(y) =
-1
(y) với
-1
là hoán vị ngợc của
Ví dụ :
=
8
Abcdefghij Klmnopqrst Uvwxyz
Xnyahpogzq Wbtsflrcvm Uekjdi
Nghiên cứu, và thực hiện một số test để đánh giá độ an toàn của DES
e
(a) = (a) = x
e
(b) = (b) = n
-1
=
d
(x) =
-1
(x) = a và d
(n) =
-1
(n) = b
II.1.3 Mật mã Affine
Mật mã dịch chuyể là trờng hợp đặc biệt của mật mã thay thế. Mật mã affine
cũng là một trờng hợp của mật mã thay thế.
Trong mật mã affine, hàm mã có dạng :
E(x) = ax + b mod 26 với a,b Z
26
Hàm này đợc gọi là hàm affine
Khi a = 1 ta đợc mật mã dịch chuyển.
Để giải mã đợc, hàm affine phải song ánh, nghĩa là với mọi y Z
26
, phơng
trình ax + b = y (mod 26) phải có nghiệm duy nhất. Đồng d thức này tơng đối với :
ax = y b (mod 26). Phơng trình này có nghiệm duy nhất khi và chỉ khi (a,26) =
1.
Để tìm nghiệm x, trớc tiên ta tìm số a
-1
a
26
thoả mãn : a.a
-1
= 1 mod 26 .
Khi đó d(y) = a
-1
(y - b) mod (26)
Định nghĩa : Cho P = C = Z
26
và K = {(a,b) Z
26
* Z
26
: (a,26) = 1}
với k = (a,b) K, xác định :
e
k
(x) = ax + b mod 26 và d
k
(y) = a
-1
(y - b) mod 26 với x,y Z
26
II.1.4 Mật mã Vigenere
9
Abcdefghij Klmnopqrst Uvwxyz
Dlryvohezx Wptbgfjqnm Uskaci
Nghiên cứu, và thực hiện một số test để đánh giá độ an toàn của DES
Mật mã Vigenere là mật mã đa biểu, tức là một ký tự mã có thể đợc ánh xạ
thành nhiều ký tự khác.
Định nghĩa : Cho m là số nguyên dơng cố định, P = C = K = (Z
26
)
m
với khoá
K = (k
1
,k
2
, .,k
m
), chúng ta xác định :
e
k
(x
1
,x
2
, .,x
m
) = (x
1
+k
1
,x
2
+k
2
, .,x
m
+k
m
)
và d
k
(y
1
,y
2
, .,y
m
) = (y
1
- k
1
,y
2
- k
2
, .,y
m
- k
m
)
tất cả các hoạt động đợc tiến hành trong Z
26
Ví dụ : m = 6, khoá k = CIPHER = (2,8,15,7,4,17)
Thông báo : THISCRIPTOSYSTEMISNOTSECURE
Ta chuyển thành số :
2 8 18 13 14 19 18 4 20 17 4
7 4 17 2 8 15 7 4 2 8 15
19 12 19 15 22 8 25 8 22 25 19
Đa về chữ :
V P X Z G I A X I V W P U B T T M J P W I Z I T W Z T
II.1.5 Mật mã hoán vị
10
19 7 8 18 2 17 24 15 19 14 19 18 19 4
2 8 15 7 4 17 2 8 15 7 4 2 8 15
21 15 23 25 6 8 0 23 8 21 23 20 1 19
Nghiên cứu, và thực hiện một số test để đánh giá độ an toàn của DES
ý tởng của mật mã hoán vị là giữ các kí tự trên bản rõ không thay đổi, nhng
thay đổi vị trí của chúng bằng cách sắp xếp lại
Định nghĩa : Cho m là số nguyên dơng cố định, P = C = (Z
26
)
m
và K gồm tất
cả các hoán vị của {1,2, .,m}. Với mỗi khoá , xác định
e
(x
1
, .,x
m
) = (x
(1)
, .,x
(m)
)
và d
(y
1
, .,y
m
) = (y
(1)
, .,y
(m)
)
với
-1 là
hoán vị ngợc của
Ví dụ : Giả sử m = 6 và khoá là hoán vị sau:
=
và hoán vị ngợc của
-1
=
Thông báo : H O O F C H I S M I N H
Trớc tiên gom thành nhóm 6 phần tử : H O O F C H I S M I N H
x
1
= h, x
2
= o, x
3
= o, x
4
= f, x
5
= c, x
6
= h
khi đó nhóm thứ nhất đợc mã thành x
3
x
5
x
1
x
6
x
4
x
2
= O C H H F O
tơng tự, nhóm thứ hai là : M N I H I S
Vậy bản mã là : O C H H F O M N I H I S
II.1.6 Mật mã dòng
ý tởng cơ bản là sinh dòng khoá z = z
1
z
2
và mã dòng rõ x = x
1
x
2
theo
cách :
y = y
1
y
2
= e
z1
(x
1
) e
z2
(x
2
)
11
1 2 3 4 5 6
3 5 1 6 4 2
1 2 3 4 5 6
3 6 1 5 2 4
Nghiên cứu, và thực hiện một số test để đánh giá độ an toàn của DES
Mật mã dòng hoạt động nh sau : giả sử k là khoá và x
1
x
2
là dòng rõ, f
i
là
hàm của k và i là một đặc trng rõ.
z
i
= f
i
(k,x
1
, .,x
i-1
) (x
i đợc
chon trớc của hai bên)
y
i
= e
zi
(x
i
) i = 2,3,
Do đó, để mã dòng rõ x
1
x
2
ta tính liên tiếp : z
1
,y
1
,z
2
,y
2
, Việc giải mã đ -
ợc làm tơng tự z
1
,x
1
,z
2
,x
2
,
Nếu z
i
= k với mọi i thì ta có thể nghĩ mật mã khối nh trờng hợp đặc biệt của
mật mã dòng .
Sau đây là một số trờng hợp đặc biệt quan trọng của mật mã dòng :
- Mật mã đồng bộ z
i
= f
i
(k) với i = 1,2,
- Mật mã tuần hoàn với chu kỳ d : z
i
+d = z
i
, i 1
Mật mã dòng đợc chú ý nhiều hơn cả là trờng hợp P = C = Z
2
. Khi đó phép
mã hoá và giải mã là cộng theo modulo 2.
e
2
(x) = x+z mod 2
d
2
(y) = y- z mod 2
- Mật mã tự động
Định nghĩa : P = C = K = Z
26
, z
1
= k,z
i
= x
i-1
(i2)
với 0 z 25, xác định :
e
z
(x) = x+z mod 26
d
z
(y) = y- z mod 26 với x,y Z
26
Ví dụ : k = 8 , thông báo là : H A I R P H O N G F
Trớc tiên, chuyển thông báo rõ thành dãy số nguyên
7 0 8 17 15 7 14 13 6 5
Dòng khoá nh sau :
8 7 0 8 17 15 7 14 13 6 5
Cộng dãy khoá và dãy rõ : y
i
= x
i
+ z
i
mod 26, với i= 1,2, ta đ ợc
12
Nghiên cứu, và thực hiện một số test để đánh giá độ an toàn của DES
15 7 8 25 6 22 21 1 19 11
và chuyển thành chữ : P H I Z G W V B T L
Với bản mã này và k = 8, ta giải mã nh sau :
Chuyển bản mã thành dãy số và trừ lần lợt
15 7 8 25 6 22 21 1 19 11
8 7 0 8 17 15 7 14 13 6
7 0 8 17 15 7 14 13 6 5
chuyển dãy số thành dãy chữ : H A I R P H O N G F
Trên đây là các hệ mật cổ điển thờng đợc dùng để mã hoá thông tin khi
muốn gửi đi trên các kênh không an toàn hay thông tin đang đợc lu trữ cố định.
Chơng III
13
Nghiên cứu, và thực hiện một số test để đánh giá độ an toàn của DES
Chuẩn mã dữ liệu DES
( Data Ecryption STandard )
Chuẩn mã dữ liệu ( Data Ecryption Standard ) đợc uỷ ban tiêu chuẩn quốc
gia Hoa Kỳ ( the National Bureau ò Standard ) chấp nhận và đợc công bố lần đầu
tiên trên công báo liên bang ngày 17 03 1975. Sau các cuộc thảo luận công
khai, DES đợc chấp nhận nh cho các ứng dụng bảo mật vào ngày 1501- 1977.
DES trở thành một hệ bảo mật đợc sử dụng rộng rãi nhất trên thế giới.
III.1 Mô tả DES
DES mã hoá một dòng bit rõ x có độ dài 64 với k là dòng 56 bit, đa ra bản
mã y cũng là một dãy bit có độ dài 64.
x = 64, y = 64,k = 56
III.1.1 Thuật toán mã hoá
Gồm ba giai đoạn :
a. Cho bản rõ x, ta tinh đợc x
0
qua việc
hoán vị các bit của x theo hoán vị đầu IP :
x
0
= IP( x ) = L
0
R
0
L
0
là 32 bit đầu tiên của x
0
còn R
0
là 32 bit còn lại, và IP
là hoán vị đầu cố định.
b. Lặp 16 vòng :
Chúng ta tính L
i
R
i
với 1 i 16, theo quy tắc sau :
L
i
= R
i-1
14
IP
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
Nghiên cứu, và thực hiện một số test để đánh giá độ an toàn của DES
R
i
= L
i-1
^ f( R
i-1
, K
i
)
Dấu (^) thể hiện phép toán hoặc loại trừ hai dãy bit, f là một hàm mà
chúng ta sẽ đề cập đến sau, k
i
là những dãy dài 48 bit đợc tạo từ khoá K bởi thuật
toán riêng.
áp dụng phép hoán vị ngợc IP
-1
cho L
16
R
16
ta tính đợc bản mã y :
y = IP
-1
( L
16
R
16
) , chú ý đảo ngợc vị trí của L
16
và R
16
.
III.1.2 Hàm f( A, J )
Đầu vào của hàm f là đối số A, một dãy 32 bit, và đối số thứ hai là J, là dãy
48 bit, kết quả thu đợc là dãy có độ dài 32 bit. Các bớc đợc thực hiện :
a. Mở rộng A từ 32 bit thành 48 bit
theo hàm mở rộng E. E( A ) gồm 32 bit
của A, đợc hoán vị theo cách cụ thể và
với 16 bit của các bit xuất hiện hai lần.
b. Tính B = E( A ) ^ J và kết quả B đợc
tách thành các khối 6 bit liên tiếp.
B = B
1
B
2
B
3
B
4
B
5
B
6
B
7
B
8
15
IP
-1
40 8 48 16 56 24 64 32
39 7 47 15 55 23 63 31
38 6 46 14 54 22 62 30
37 5 44 13 53 21 60 29
36 4 43 12 52 20 59 28
35 3 42 11 51 19 58 27
34 2 41 10 50 18 57 26
33 1 40 9 49 17 56 25
E
32 1 2 3 4 5
4 5 6 7 8 9
8 9 10 11 12 13
12 13 14 15 16 17
16 17 18 19 20 21
20 21 22 23 24 25
24 25 26 27 28 29
28 29 30 31 32 1
L
i-1
R
i-1
L
i
R
i
f
+
k
i