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.
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:
- VN_DH_HangHai_GT_an_toan_bao_mat_thong_tin.pdf