Giáo trình An toàn và bảo mật thông tin - Đại học Hàng Hải

 Với dạng tấn công chủ động (active attack): kẻ địch là một thế lực trong mạng,

nắm nhiều khả năng và phƣơng tiện để có thể chủ động tấn công can thiệp, gây ảnh

hƣởng phức tạp đến giao thức. Nó có thể đóng giả với một cái tên khác can thiệp vào

giao thức bằng những thông báo kiểu mới, xoá bỏ những thông báo đang phát trên

đƣờng truyền, thay thế thông báo thật bằng thông báo giả, ngắt ngang các kênh thông tin

hay sửa chửa vào các kho thông tin trên mạng. Các khả năng khác nhau này là phụ thuộc

vào tổ chức mạng và vai trò của kẻ địch trên mạng.

Kẻ tấn công trong tấn công thụ động (Eve) chỉ cố gắng thu lƣợm thông tin từ các

bên tham gia giao thức, thông qua thu nhập các thông báo truyền tin giữa các bên để

phân tích giải mã. Trong khi đó, kẻ tấn công chủ động (Mallory) có thể gây ra các tác hại

rất phức tạp đa dạng. Kẻ tấn công có thể có mục đích đơn thuần là tóm đƣợc tin mà nó

quan tâm, nhƣng ngoài ra nó có thể gây ra các phá hoại khác nhƣ phá hoại đƣờng truyền

truy nhập vào những hệ thống thông tin mà chỉ dành cho những ngƣời có đủ thẩm quyền.

Kẻ địch trong tấn công chủ động thật sự rất nguy hiểm, đặc biệt là trong các giao

thức mà các bên khác nhau không nhất thiết phải tin nhau. Hơn nữa phải nhớ rằng kẻ

địch không phải chỉ có thể là những kẻ xa lạ bên ngoài mà nó có thể là một cá nhân hợp

pháp trong hệ thống, thậm chí ngay chính là ngƣời quản trị mạng. Ngoài ra còn có thể có

nhiều cá nhân liên kết với nhau thành một nhóm kẻ địch, làm tăng lên sự nguy hiểm cho

giao thức.

Một điều cũng có thể xảy ra là Mallory lại chính là đối tác trong giao thức. Anh ta có

thể có hành động lừa dối hoặc là không chịu tuân theo giao thức. Loại kẻ địch này đƣợc

là kẻ lừa đảo (cheater). Kẻ lừa đảo thuộc loại thụ động thì có thể làm đúng theo giao thức

nhƣng lại cố tình thu nhặt thêm thông tin từ các bên đối tác hơn là đƣợc phép theo qui

định. Kẻ lừa đảo chủ động thì phá vỡ giao thức trong một cố gắng lừa dối. Rất khó để giữ

an toàn cho một giao thức nếu nhƣ phần lớn các bên tham gia đều là những kẻ lừa đảo

chủ động, tuy nhiên đôi khi ngƣời ta cũng có các biện pháp để các bên hợp pháp có thể

dò ra đƣợc sự lừa đảo đang diễn ra. Tất nhiên các giao thức cũng cần phải đƣợc bảo vệ

để chống lại những kẻ lừa đảo loại thụ động.

pdf148 trang | Chia sẻ: lethuong715 | Lượt xem: 491 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Giáo trình An toàn và bảo mật thông tin - Đại học Hàng Hải, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
 của word (SubWord()). 
Chú ý là thủ tục mở rộng khóa đối với các khóa có độ dài 256 hơi khác so với thủ 
tục cho các khóa có độ dài 128 hoăc̣ 192. Nếu Nk = 8 và i – 4 là một bội số của Nk thì 
SubWord() sẽ đƣợc áp dụng cho w[i-1] trƣớc khi thƣ̣c hiêṇ phép XOR bit. 
2.5.4.3. Thuâṭ toán giải mã 
Thuâṭ toán giải mã khá giống với thuâṭ toán mã hóa về măṭ cấu trúc nhƣng 4 hàm 
cơ bản sƣ̉ duṇg là các hàm ngƣợc của các hàm trong thuâṭ toán giải mã . Đoaṇ giả mã 
cho thuâṭ toán giải mã nhƣ sau: 
InvCipher(byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)]) 
begin 
 byte state[4,Nb] 
 state = in 
Chƣơng III: Các hệ mã khóa bí mật 
 65 
 AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1]) // See Sec. 5.1.4 
 for round = Nr-1 step -1 downto 1 
 InvShiftRows(state) // See Sec. 5.3.1 
 InvSubBytes(state) // See Sec. 5.3.2 
 AddRoundKey(state, w[round*Nb, (round+1)*Nb-1]) 
 InvMixColumns(state) // See Sec. 5.3.3 
 end for 
 InvShiftRows(state) 
 InvSubBytes(state) 
 AddRoundKey(state, w[0, Nb-1]) 
 out = state 
end 
2.5.4.3.1. Hàm InvShiftRows() 
Hàm này là hàm ngƣợc của hàm ShiftRows () . Các byte của ba hàng cuối của 
mảng trạng thái sẽ đƣợc dịch vòng với các vị trí dịch khác nhau . Hàng đầu tiên không bị 
dịch, ba hàng cuối bi ̣dic̣h đi Nb – shift(r, Nb) byte trong đó các giá tri ̣shift (r, Nb) phụ 
thuôc̣ vào số hàng nhƣ trong phần 5.1.2. 
Cụ thể hàm này tiến hành xử lý sau: 
'
,( ( , ))mod , 0 4,0 ( 4)r c shift r Nb Nb r cs s r c Nb Nb        
Hình minh họa: 
Chƣơng III: Các hệ mã khóa bí mật 
 66 
Hình 3.13: Hàm InvShiftRows() của AES 
2.5.4.3.2. Hàm InvSubBytes() 
Hàm này là hàm ngƣợc của hàm SubBytes (), hàm sử dụng nghịch đảo của biến đổi 
Affine bằng cách thƣ̣c hiêṇ nhân nghic̣h đảo trên GF(28). 
Bảng thế đƣợc sƣ̉ duṇg trong hàm là: 
Bảng 3.28: Bảng thế cho hàm InvSubBytes() 
2.5.4.3.3. Hàm InvMixColumns() 
Hàm này là hàm ngƣợc của hàm MixColumns (). Hàm làm việc trên các cột của 
mảng trạng thái , coi mỗi côṭ nhƣ là môtô đa thƣ́c 4 hạng tử đƣợc mô tả trong phần 4.3. 
Các cột đƣợc xem là các đa thức trên GF (28) và đƣợc nhân theo modulo x 4+1 với môṭ đa 
thƣ́c cố điṇh là a-1(x): 
 a-1(x) = {0b}x3 + {0d}x2 + {09}x + {0e} 
Và có thể mô tả bằng phép nhân ma trâṇ nhƣ sau: 
s‟(x) = a-1(x)s(x): 
'
0, 0,
'
1, 1,
'
2, 2,
'
3, 3,
0 0 0 09
09 0 0 0
0 09 0 0
0 0 09 0
c c
c c
c c
c c
e b dS S
e b dS S
d e bS S
b d eS S
    
    
    
    
    
       
trong đó 0  c < Nb. 
Kết quả là bốn byte trong mỗi côṭ sẽ đƣợc thay thế theo công thƣ́c sau: 
'
0, 0, 1, 2, 3,({0 } ) ({0 } ) ({0 } ) ({09} )c c c c cs e s b s d s s        
'
1, 0, 1, 2, 3,({09} ) ({0 } ) ({0 } ) ({0 } )c c c c cs s e s b s d s        
Chƣơng III: Các hệ mã khóa bí mật 
 67 
'
2, 0, 1, 2, 3,({0 } ) ({09} ) ({0 } ) ({0 } )c c c c cs d s s e s b s        
'
3, 0, 1, 2, 3,({0 } ) ({0 } ) ({09} ) ({0 } )c c c c cs b s d s s e s        
2.5.4.3.4. Hàm nghịch đảo của hàm AddRoundKey() 
Thâṭ thú vi ̣là hàm này tƣ̣ bản thân nó là nghic̣h đảo của chính nó là do hàm chỉ có 
phép toán XOR bit. 
2.5.4.3.5. Thuâṭ toán giải mã tƣơng đƣơng 
Trong thuâṭ toán giải mã đƣợc trình bày ở trên chúng ta thấy thƣ́ tƣ̣ của các hàm 
biến đổi đƣợc áp duṇg khác so với thuâṭ toán mã hóa trong khi daṇg của danh sách khóa 
cho cả 2 thuâṭ toán vẫn giƣ̃ nguyên. Tuy vâỵ môṭ số đăc̣ điểm của AES cho phép chúng ta 
có một thuật toán giải mã tƣơng đƣơng có thứ tự áp dụng các hàm biến đổi giống với 
thuâṭ toán mã hóa (tất nhiên là thay các biến đổi bằng các hàm ngƣợc của chúng ). Điều 
này đạt đƣợc bằng cách thay đổi danh sách khóa. 
Hai thuôc̣ tính sau cho phép chúng ta có môṭ thuâṭ toán giải mã tƣơng đƣơng: 
1. Các hàm SubBytes () và ShiftRows() hoán đổi cho nhau ; có nghĩa là một biến 
đổi SubBytes () theo sau bởi môṭ biến đổi ShiftRows () tƣơng đƣơng với môṭ biến đổi 
ShiftRows() theo sau bởi môṭ biến đổi SubBytes (). Điều này cũng đúng với các hàm 
ngƣợc của chúng 
2. Các hàm trộn cột – MixColumns() và InvMixColumns () là các hàm tuyến tính 
đối với các côṭ input, có nghĩa là: 
InvMixColumns(state XOR Round Key) = InvMixColumns(state) XOR 
InvMixColumns(Round Key). 
Các đặc điểm này cho phép thứ tự của các hàm InvSubBytes() và InvShiftRows() có 
thể đổi chỗ. Thƣ́ tƣ̣ của các hàm AddRoundKey() và InvMixColumns() cũng có thể đổi chỗ 
miễn là các côṭ của danh sách khóa giải mã phải đƣợc thay đổi bằng cách sƣ̉ duṇg hàm 
InvMixColumns(). 
Thuâṭ toán giải mã tƣơng đƣơng đƣợc thƣ̣c hiêṇ bằng cách đ ảo ngƣợc thứ tự của 
hàm InvSubBytes () và InvShiftRows (), và thay đổi thứ tự của AddRoundKey () và 
InvMixColumns() trong các lần lăp̣ sau khi thay đổi khóa cho giá tri ̣round = 1 to Nr-1 bằng 
cách sử dụng biến đổi InvMixColumns (). Các word đầu tiên và cuối cùng của danh sách 
khóa không bị thay đổi khi ta áp dụng phƣơng pháp này. 
Thuâṭ toán giải mã tƣơng đƣơng cho môṭ cấu trúc hiêụ quả hơn so với thuâṭ toán 
giải mã trƣớc đó. 
Đoaṇ giả mã cho thuâṭ toán giải mã tƣơng đƣơng: 
EqInvCipher(byte in[4*Nb], byte out[4*Nb], word dw[Nb*(Nr+1)]) 
begin 
 byte state[4,Nb] 
Chƣơng III: Các hệ mã khóa bí mật 
 68 
 state = in 
 AddRoundKey(state, dw[Nr*Nb, (Nr+1)*Nb-1]) 
 for round = Nr-1 step -1 downto 1 
 InvSubBytes(state) 
 InvShiftRows(state) 
 InvMixColumns(state) 
 AddRoundKey(state, dw[round*Nb, (round+1)*Nb-1]) 
 end for 
 InvSubBytes(state) 
 InvShiftRows(state) 
 AddRoundKey(state, dw[0, Nb-1]) 
 out = state 
end 
Các thay đổi sau cần thực hiện trong thuật toán sinh khóa để thuật toán trên có th ể 
hoạt động đƣợc: 
for i = 0 step 1 to (Nr+1)*Nb-1 
 dw[i] = w[i] 
end for 
for round = 1 step 1 to Nr-1 
 InvMixColumns(dw[round*Nb, (round+1)*Nb-1]) // note change of type 
end for 
2.6. Các cơ chế, hình thức sử dụng của mã hóa khối (Mode of Operation) 
2.6.1. Các hình thức sử dụng 
Nhƣ chúng ta đã biết c ác mã hóa khối mã hóa các khối thông tin có độ dài cố định, 
chẳng hạn DES với các khối bit 64, sử dụng khóa là xâu bít có độ dài bằng 56. Tuy nhiên 
để sử dụng các hệ mã này trên thực tế vẫn cần có một qui điṇh về qui cách sƣ̉ duṇg 
chúng để mã hóa các dữ liệu cần mã hóa. Cách thức sử dụng một thuật toán mã hóa khối 
trong thực tế đƣợc gọi là Mode of Use hay Mode Of Operation. Có 4 hình thức sử dụng 
các hệ mã khối đƣợc định nghĩa trong các chuẩn ANSI (ví dụ ANSI X3.106-1983 dành 
cho DES). Dƣ̣a vào viêc̣ xƣ̉ lý dƣ̃ liêụ input của hê ̣mã ngƣời ta chia thành hai loaị cơ chế 
sử dụng các hệ mã khối sau: 
1. Các chế độ khối (Block Mode): xử lý các thông điệp theo các khối (ECB, CBC) 
2. Các chế độ luồng, dòng (Stream Modes): xử lý các thông điệp nhƣ là một 
luồng bit/byte (CFB, OFB). 
Các chế độ khối thƣờng đƣợc sử dụng để mã hóa các dữ liệu mà ch úng ta biết 
trƣớc về vi ̣trí , đô ̣lớn trƣớc khi mã hóa (chẳng haṇ nhƣ các file , các email trƣớc khi cần 
Chƣơng III: Các hệ mã khóa bí mật 
 69 
gƣ̉i đi ) trong khi các chế đô ̣luồng thƣờng đƣợc sƣ̉ duṇg cho viêc̣ mã hóa các dƣ̃ liêụ 
không đƣợc biết trƣớc về đô ̣lớn c ũng nhƣ vị trí chẳng hạn nhƣ các tín hiệu gửi về từ vệ 
tinh hoăc̣ các tín hiêụ do môṭ bô ̣cảm biến đoc̣ tƣ̀ bên ngoài vào. 
Chú ý: DES, 3DES, AES (hay bất kỳ một thuật toán mã hóa khối nào khác) tạo 
thành một khối xây dựng cơ bản. Tuy nhiên để sử dụng chúng trong thực tế, chúng ta 
thường cần làm việc với các khối lượng dữ liệu không thể biết trước được, có thể chúng là 
một khối dữ liệu sẵn sàng ngay cho việc mã hóa(khi đó việc sử dụng mã hóa theo cơ chế 
khối là phù hợp), hoặc có thể chỉ được một vài bit, byte tại một thời điểm (khi đó sử dụng 
chế độ dòng là phù hợp). Vì thế các cơ chế sử dụng mã khối được trình bày trong phần 
này là riêng cho DES nhưng cũng đươc̣ áp duṇg tương tự cho các hê ̣mã khối khác. 
2.6.2. Cơ chế bảng tra mã điêṇ tƣ̉ ECB (Electronic CodeBook Book) 
Thông điệp cần mã hóa đƣợc chia thành các khối độc lập để mã hóa, mỗi khối bản 
mã là kết quả của việc mã hóa riêng biệt khối bản rõ tƣơng ứng với nó và độc lập với khối 
khác. Cách làm việc này giống nhƣ chúng ta thay thế các khối bản mã bằng các khối bản 
rõ tƣơng ứng nên có tên gọi là bảng tra mã điện tử. 
P = P1P2PN 
Mã hóa: Ci = DESK(Pi), kết quả bản mã là C = C1C2..CN. Quá trình giải mã tiến hành 
ngƣợc laị: Pi = DES
-1
K(Ci). 
Mã hóa
P
P1 P2 Pn
C1 C2 Cn
E E E
C
K Giải mã
C
C1 C2 Cn
P1 P2 Pn
D D D
P
K
Hình 3.14: Cơ chế ECB 
ECB là chế độ sử dụng đơn giản và dễ cài đặt nhất, đƣợc sử dụng khi chỉ một khối 
đơn thông tin cần đƣợc gửi đi (chẳng hạn nhƣ một khóa session đƣợc mã hóa bằng cách 
dùng một khóa chính). 
Do trong ECB các khối bản rõ đƣợc mã hóa độc lập nên làm nảy sinh một số nhƣợc 
điểm sau: các lặp lại của thông điệp có thể đƣợc thể hiện trên bản mã, nghĩa là nếu có 
các bản rõ giống nhau thì tƣơng ứng các bản mã giống nhau , điều này đăc̣ biêṭ thể hiêṇ 
rõ với các dữ liệu lặp lại nhiều chẳng hạn nhƣ các dữ liệu hình ảnh. Viêc̣ để lô ̣tính lăp̣ laị 
của bản rõ có thể dẫn tới các tấn công theo phƣơng pháp phân tích thống kê . Hơn nƣ̃a 
các bản mã có thể bị giả mạo bằng cách thêm một số kh

File đính kèm:

  • pdfVN_DH_HangHai_GT_an_toan_bao_mat_thong_tin.pdf