Khúa mật mó đối xứng sử dụng cựng một khúa cho việc mó húa và giải mó. Khúa đối xứng cú thể phõn thành hai loại là mó hoỏ khối và mó hoỏ luồng. Mó hoỏ luồng mó hoỏ húa một bit tại một thời điểm, mó hoỏ khối là phƣơng thức cho phộp thực hiện mó hoỏ trờn một nhúm cỏc bit (khối) với độ dài nào đú trong một lần. Cỏc mó hoỏ khối nhƣ DES, IDEA,AES, và mó hoỏ luồng nhƣ RC4, là những loại mó hoỏ khúa đối xứng nổi tiếng nhất.
II.1.2.1Cỏc chế độ sử dụng mó khối [1]
Thuật toỏn mó khối là khối biến đổi mó hoỏ với khối đầu vào và đầu ra là cỏc khối cú độ dài cố định. Để mó hoỏ một khối dữ liệu cú đầu vào cú độ dài tuỳ ý ta phải cắt khối dữ liệu thành nhiều khối đơn vị và mó hoỏ chỳng nhiều lần, do đú dẫn đến chế độ sử dụng thuật toỏn khỏc nhau. Thụng thƣờng chỳng ta cú hai chế độ sau đõy:
II.1.2.1.1Chế độ bảng tra mó điện tử (ECB)
Trong chế độ này cỏc khối mó hoỏ đƣợc mó riờng biệt. Nhƣ vậy những khối tin giống nhau sẽ đƣợc mó hoỏ thành những khối mó giống nhau.
- 24 -
II.1.2.1.2Chế độ mó múc xớch (CBC)
Trong chế độ này mỗi khối tin trƣớc khi đƣợc mó hoỏ thỡ đƣợc XOR với khối mó sinh ra từ bƣớc trƣớc đú:
X1 = X‟1 XOR IV
X2 = X‟2 XOR Y1
….
Xi = X‟i XOR Yi-1
tại bƣớc đầu tiờn khi chƣa cú khối mó sinh ra từ bứơc trƣớc thỡ khối tin sẽ đƣợc XOR với một vectơ ngẫu nhiờn ký hiệu là IV.
Hỡnh 2.1: Mụ tả quỏ trỡnh hoạt động của chế độ CBC
II.1.2.2 Thuật toỏn DES[1,2,4,5] II.1.2.2.1Mụ tả thuật toỏn mó hoỏ
DES là thuật toỏn mó húa khối. Trong thuật toỏn DES, độ dài mỗi khối là 64 bit, khúa dựng trong DES cú độ dài toàn bộ là 64 bit tuy nhiờn chỉ cú 56 bit thực sự đƣợc sử dụng; 8 bit cũn lại chỉ dựng cho việc kiểm tra. Vỡ thế, độ dài thực tế của khúa chỉ là 56 bit.DES đƣợc cấu tạo bởi 16 vũng lặp và cú sự tỏc động bởi hàm phi tuyến f.
E E
P1 P2
C1 C2
- 25 -
1. Từ bản rừ x biến thành x0 nhờ phộp hoỏn vị IP (Phụ lục 1.1.), khi đú x0
= IP(x) = L0R0. Trong đú L0 là 32 bit đầu tiờn của x0 và R0 là 32 bit sau
của x0
2. Tớnh 16 phần tử tiếp theo của LiRi (1≤i≤16) bởi cụng thức sau:
Li = Ri-1
Ri = Li-1 + f(Ri-1,Ki)
Trong đú phộp cộng là phộp cộng XOR , f là một hàm phi tuyến. K1,K2,…,K16
là cỏc xõu cú độ dài 48 bit.
3. Đƣa ra bản mó y=IP-1(R16L16) (Phụ lục 1.2.)
Hỡnh 2.2: Sơ đồ giải thuật sinh mó DES
Xỏc định hàm f : Hàm f nhƣ đƣợc miờu tả ở Hỡnh 2.3, hoạt động trờn khối 32 bit và bao gồm bốn giai đoạn:
- 26 -
Hỡnh 2.3: Hàm F dựng trong DES
1. Mở rộng: 32 bit đầu vào đƣợc mở rộng thành 48 bit sử dụng thuật toỏn
hoỏn vị mở rộng với việc nhõn đụi một số bit. Giai đoạn này đƣợc ký hiệu là E (Phụ lục 1.3) trong sơ đồ.
2. Trộn khúa: 48 bit thu đƣợc sau quỏ trỡnh mở rộng đƣợc XOR với khúa
con. Mƣời sỏu khúa con 48 bit đƣợc tạo ra từ khúa chớnh 56 bit theo một chu trỡnh tạo khúa con.
3. Thay thế: 48 bit sau khi trộn đƣợc chia làm 8 khối con 6 bit và đƣợc xử
lý qua hộp thay thế S-box (Phụ lục 1.4). Đầu ra của mỗi khối 6 bit là một khối 4 bit theo một chuyển đổi phi tuyến đƣợc thực hiện bẳng một bảng tra. Khối S-box đảm bảo phần quan trọng cho độ an toàn của DES. Nếu khụng cú S-box thỡ quỏ trỡnh sẽ là tuyến tớnh và việc phỏ mó sẽ rất đơn giản.
4. Hoỏn vị: Cuối cựng, 32 bit thu đƣợc sau S-box sẽ đƣợc sắp xếp lại theo
một thứ tự cho trƣớc P-box (Phụ lục 1.5).
Quỏ trỡnh luõn phiờn sử dụng S-box và sự hoỏn vị cỏc bớt cũng nhƣ quỏ trỡnh mở rộng đó thực hiện đƣợc tớnh chất gọi là sự xỏo trộn và khuyếch tỏn Đõy là yờu cầu cần cú của một thuật toỏn mó hoỏ .
- 27 -
Hỡnh 2.4:Quỏ trỡnh tạo khúa con trong DES
Trƣớc tiờn, từ 64 bit ban đầu của khúa, 56 bit đƣợc chọn PC-1 (Phụ lục 1.6); 8 bit cũn lại bị loại bỏ. 56 bit thu đƣợc đƣợc chia làm hai phần bằng nhau, mỗi phần đƣợc xử lý độc lập. Sau mỗi chu trỡnh, mỗi phần đƣợc dịch chuyển (sang trỏi) 1 hoặc 2 bit (tựy thuộc từng chu trỡnh). Dịch chuyển 1 bớt nếu đang ở chu trỡnh 1.2.9.16 và dịch chuyển 2 bit đối với cỏc chu trỡnh cũn lại. Cỏc khúa con 48 bit đƣợc tạo thành bởi thuật toỏn lựa chọn 2 PC-2 (Phụ lục 1.2.2.7) gồm 24 bit từ mỗi phần. Quỏ trỡnh dịch bit (đƣợc ký hiệu là “<<<” trong sơ đồ) khiến cho cỏc khúa con sử dụng cỏc bit khỏc nhau của khúa chớnh; mỗi bit đƣợc sử dụng trung bỡnh ở 14 trong tổng số 16 khúa con.
Quỏ trỡnh tạo khúa con khi thực hiện giải mó cũng diễn ra tƣơng tự nhƣng cỏc khúa con đƣợc tạo theo thứ tự ngƣợc lại. Ngoài ra sau mỗi chu trỡnh, khúa sẽ đƣợc dịch phải thay vỡ dịch trỏi nhƣ khi mó húa.
II.1.2.2.2Thụõt toỏn giải mó
Thuật toỏn giải mó đƣợc xõy dựng giống hệt thuật toỏn sinh mó nhƣng cỏc
khoỏ con K đƣợc sử dụng theo thứ tự ngƣợc lại. Tức là dựng khoỏ K16 cho
- 28 -
II.1.2.2.3An toàn của DES
Tấn cụng bằng phƣơng phỏp vột cạn: DES cú 256
= 1017 khúa . Với một cặp
TIN/MÃ thỡ chỳng ta cú thể thử tất cả 1017
khả năng để tỡm ra khoỏ cho kết
quả khớp. Giả sử nhƣ một phộp thử mất quóng 10-6
s (mỏy tớnh thụng thƣờng) thỡ muốn tỡm ra khoỏ chỳng ta sẽ mất 7300 năm. Tuy nhiờn hiện nay với những loại mỏy tớnh chuyờn dụng phỏ khoỏ với giỏ trị thiết kế khoảng 100,000$ thỡ cú thể cho kết quả trong 1,5 ngày.
Điểm yếu cơ bản của DES là tớnh bự: Ta ký hiệu u là phần bự của u thỡ DES
cú tớnh chất sau: y=DESZ(x) thỡ y=DESZ(x). Nhƣ vậy nếu ta biết nếu mó y là
đƣợc mó hoỏ từ thụng tin x với khoỏ z thỡ ta cú thể suy ra y là đƣợc mó hoỏ
từ thụng tin x với khoỏ z. Với tớnh chất này thỡ kẻ tấn cụng cú thể loại trừ
một nửa số khoỏ cần phải thử khi tiến hành phộp thử giải mó bằng phƣơng phỏp vột cạn.
So với thuật toỏn RSA thuật toỏn này là thời gian thực hiện mó hoỏ/giải mó nhanh và ngốn ớt tài nguyờn bộ vi xử lý mỏy tớnh, hiệu quả cao với dữ liệu cú dung lƣợng lớn .
II.1.2.3 Thuật toỏn AES [4,6]
AES làm việc với khối dữ liệu 128 bit và khúa cú độ dài 128, 192 hoặc 256 bit ngƣời ta đặt tờn thuật toỏn mó hoỏ tƣơng ứng với tờn là AES-128, AES- 192, AES-256. Cỏc khúa con sử dụng trong cỏc chu trỡnh đƣợc tạo ra bởi quỏ trỡnh tạo khúa con Rijndael. AES làm việc với từng khối dữ liệu 4ì4 byte (state).
Cỏc tham số trong thuật toỏn
Nb: Số lƣợng khối dữ liệu 32 bit trong khối mó hoỏ.
Nk: Số lƣợng khối dữ liệu 32 bit trong khối khoỏ mó hoỏ.
- 29 -
II.1.2.3.1 Mụ tả thụõt toỏn mó hoỏ.
Quỏ trỡnh mó húa bao gồm 4 bƣớc:
1. AddRoundKey - mỗi byte của khối đƣợc kết hợp với khúa con, cỏc
khúa con này đƣợc tạo ra từ quỏ trỡnh tạo khúa con Rijndael.
Hỡnh 2.5: Mụ tả hoạt động bƣớc AddRoundKey
2. SubBytes - đõy là quỏ trỡnh thay thế (phi tuyến) trong đú mỗi byte sẽ
đƣợc thay thế bằng một byte khỏc theo bảng tra (Rijndael S-box - Phụ lục II.1.2.3.1).
Hỡnh 2.6: Mụ tả hoạt động bƣớc SubBytes
3. ShiftRows - đổi chỗ, cỏc hàng trong khối đƣợc dịch vũng.
- 30 -
4. MixColumns - quỏ trỡnh trộn làm việc theo cỏc cột trong khối theo một
chuyển đổi tuyến tớnh.
Hỡnh 2.8: Mụ tả hoạt động bƣớc MixColumns
Tại chu trỡnh cuối thỡ bƣớc MixColumns đƣợc thay thế bằng bƣớc AddRoundKey.
Thuật toỏn mó hoỏ
INPUT: M 128 bit, w[Nb*(Nr+1)] --- w là mảng khoỏ , M là khối dữ liệu rừ OUTPUT: Y 128 bit -- Khối dữ liệu đó đƣợc mó hoỏ
TIẾN TRèNH XỬ Lí: State:=in; AddRoundKey(State,w[0,Nb-1]); for i in 1..Nr-1 loop SubByte(state); ShiftRows(state); MixColums(state); AddRoundKey(state,w[i*Nb],(i+1)*Nb-1); end loop; SubByte(state); ShiftRows(state); AddRoundKey(state,w[i*Nb],(i+1)*Nb-1); Y:=state;
- 31 -
SubWord(): Là một hàm đƣa 4 từ đầu vào qua S-box để đƣợc 4 từ đầu ra
RotWord(): Biến đổi một từ [a0a1a2a3] thành một từ [a1a2a3a0]
Rcon(i): Chứa cỏc giỏ trị [xi-1,{00},{00},{00}] với x={02} và i>=1.
Trƣờng hợp Nk=8 (độ dài khoỏ =256) và i-4 là bội số của Nk thỡ SubWord() đƣợc tớnh toỏn với w[i-1] trứơc khi XOR
Thuật toỏn:
INPUT: Khoỏ đầu vào K, Nk OUTPUT: Mảng khoỏ con TIẾN TRèNH XỬ Lí:
Tỏch khoỏ K thành Nk khối 4 byte w[i] i=0..Nk-1
i:=Nk;
while (i<Nb*(Nr+1)) loop temp:=w[i-1];
if (i mod Nk = 0);
temp = SubWord(RotWord(temp)) xor Rcon[i/Nk]; else if (Nk > 6 and i mod Nk = 4);
temp = SubWord(temp); end if;
w[i] = w[i-Nk] xor temp; i = i + 1;
end loop;
II.1.2.3.3 Mụ tả thụõt toỏn giải mó
Thuật toỏn giải mó sử dụng 4 biến đổi trong đú cú 1 biến đổi AddRoundKey và 3 biến đổi đảo ngƣợc.
Biến đổi InvShiftRows(): tƣơng tự biến đổi ShiftRows thay vỡ dịch trỏi thỡ trong biến đổi này là dịch phải.
Bứơc InvSubBytes(): Phộp biến đổi này tƣơng tự nhƣ SubBytes() thay vỡ dựng S-box thỡ sử dụng InvS-box (Phụ lục II.1.2.3.2 ).
- 32 -
Bứơc InvMixColums(): Tƣơng tự nhƣ phộp MixColums thay vỡ a XOR với c(x) thỡ là a-1
XOR c(x). Thuật toỏn giải mó
INPUT: M 128 bit, w[Nb*(Nr+1)] --- w là mảng khoỏ , M là bản mó OUTPUT: Y 128 bit -- Khối dữ liệu đó đƣợc giải mó
TIẾN TRèNH XỬ Lí: state = M
AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1]) for round = Nr-1 step -1 downto 1
InvShiftRows(state) InvSubBytes(state)
AddRoundKey(state, w[round*Nb, (round+1)*Nb-1]) InvMixColumns(state) end for InvShiftRows(state) InvSubBytes(state) AddRoundKey(state, w[0, Nb-1]) Y = state. II.1.2.3.4An toàn
Thiết kế và độ dài khúa của thuật toỏn AES (128, 192 và 256 bớt) là đủ an toàn để bảo vệ cỏc thụng tin đƣợc xếp vào dạng mật. Cỏc thụng tin tối mật sẽ phải dựng khúa 192 hoặc 256 bớt.
II.1.2.4 Thuật toỏn RC4[6]
Trong mó hoỏ, RC4 là thuật toỏn mó hoỏ dũng nổi tiếng và đƣợc sử dụng rộng rói trong SSL và bảo mật mạng khụng dõy WEP. RC4 đƣơc thiết kế bởi Ron Rivsest và RSA Sercurity. Nú trở thành một phần của cỏc chuẩn và giao thức mó hoỏ đang đƣợc sử dụng bao gồm WEP và WPA,SSL,TLS. Ƣu điểm của
- 33 -
thụõt toỏn là sự đơn giản và tốc độ thực thi cao trờn cả phần cứng và phần mềm mà khụng tốn tài nguyờn .
II.1.2.4.1Mụ tả thuật toỏn
RC4 tạo ra một dũng ngẫu nhiờn cỏc bit (một khoỏ dũng) đƣợc kết hợp với bản rừ thụng qua phộp tớnh XOR để mó hoỏ, quỏ trỡnh giải mó đƣợc thực hiện bằng cỏch tƣơng tự.
II.1.2.4.2Thuật toỏn RC4
--Khởi tạo S
For i = 0 to 255 do
S[i] = i; => S là 256 byte
T[i] = K[i mod keylen]; -- sử dụng T cho hoỏn vị khởi tạo SS --Hoỏn vị khởi tạo S
J = 0;
For i = 0 to 255 do
j = (j + S[I] + T[I]) mod 256; Swap (S[I],S[j]); -- Quỏ trỡnh tạo dũng i,j = 0; While (true) I = (I + 1) mod 256; j = (j + S[I]) mod 256; Swap (S[I],S[j]); t = (S[I] + S[j]) mod 256; k = S[t];
-- Để mó hoỏ thỡ XOR giỏ trị k với bản rừ -- Để giải mó thỡ XOR giỏ trị k với bản mó
- 34 -
Hỡnh 2.9: Mụ tả thuật toỏn RC4