CHƯƠNG 3: MÃ HÓA KHỐI DÒNG BÍ MẬT CÔNG KHAI ......................... 2
1. Nêu định nghĩa mã hóa dòng. Nêu các đặc điểm chính mã hóa dòng. Ứng
dụng mã hóa dòng trong thực tế. ........................................................................... 2
2. Trình bày khái niệm về mã hóa khối. Nêu các yêu cầu khi thiết kế mã hóa
khối. Các thuật toán DES AES thuộc mã hóa khối nào? .................................... 3
3. Trình bày tổng quan và quy trình mã hóa thuật toán mã hóa RC4. Nêu ví
dụ minh họa ? .......................................................................................................... 4
4. Trình bày tổng quan, các thành phần về hệ mật khóa bí mật. Ưu điểm và
nhược điểm của hệ mật khóa bí mật. .................................................................... 5
5. Trình bày tổng quan, các thành phần về hệ mật khóa công khai. Ưu điểm
và nhược điểm của mã hóa công khai. .................................................................. 6
6. Trình bày tổng quan về mô hình mã Feistel. Vẽ sơ đồ khối của mã Feistel.
8
7. Hãy trình bày quy trình mã hóa và giải mã thuật toán RSA. .................... 10
8. Trình bày và lấy ví dụ minh họa một số cuộc tấn công lên phương pháp
mã hóa RSA. .......................................................................................................... 11
9. Trình bày sơ lược mô hình trao đổi khóa công khai trong mã hóa khóa
công khai. ............................................................................................................... 12
CHƯƠNG 3.1: CÁC THỨ LIÊN QUAN AES, DES ......................................... 12
10. Trình bày cơ sở toán học của mã hóa AES. Trình bày các bước xử lý
chính của quy trình mã hóa AES. ........................................................................ 12
11.
Nêu các yêu cầu với mã hóa AES. Trình bày quy trình giải mã AES. ... 13
12. Trình bày quy trình mã hóa DES. Vẽ sơ khối tổng quát của quy trình
mã hóa DES............................................................................................................ 14
13.
Ưu nhược điểm, các cuộc tấn công lên DES .............................................. 16
CHƯƠNG 4: HÀM BĂM ..................................................................................... 17
1
14. Hãy định nghĩa về hàm băm. Hãy định nghĩa hàm có khóa, hàm băm
không có khóa. Hãy nêu các đặc trưng và các tính chất cơ bản của hàm
băm.Lấy Ví dụ về các tính chất?.......................................................................... 17
15. Hãy nêu các tính chất cơ bản của hàm băm không có khóa. Hãy trình
bày nguyên tắc làm việc của hàm băm có khóa dựa trên các mật mã khối. ... 20
16.
Trình bày tổng quan về quá trình xử lý thông điệp của SHA1. .............. 21
17.
Trình bày tổng quan về hàm băm MD5. ................................................... 21
CHƯƠNG 5: ỨNG DỤNG MÃ HÓA ................................................................. 22
18.
Trình bày quy trình hoạt động Kerberos. ................................................. 23
19. Trình bày sơ lược về chức năng cung cấp các dịch vụ an ninh mạng của
Kryptoknight. ........................................................................................................ 24
20. Trình bày sơ lược một số ứng dụng trong hiện tại của Pretty Good
Privacy (PGP). ....................................................................................................... 27
21.
Trình bày ứng dụng cụ thể Smart Cards cho điện thoại di động. .......... 29
PHẦN BONUS ....................................................................................................... 30
Chương 3: Mã hóa khối dòng bí mật công khai
1. Nêu định nghĩa mã hóa dòng. Nêu các đặc điểm chính mã hóa dòng. Ứng
dụng mã hóa dòng trong thực tế.
Định nghĩa: Cho K là một không gian khóa của một hệ mã và cho là một
dòng khóa. Hệ mã này được gọi là một mã dòng nếu việc mã hóa trên chuỗi
bản rõ thu được bằng cách áp dụng lặp đi lặp lại của phép mã hóa trên
những đơn vị thông điệp bản rõ.
2
Ứng dụng
Thuật toán A5/1
A5/1 được dùng trong mạng điện thoại GSM, để bảo mật dữ liệu trong quá trình
liên lạc giữa máy điện thoại và trạm thu phát sóng vô tuyến. Đơn vị mã hóa của
A5/1 là một bít. Bộ sinh số mỗi lần sẽ sinh ra hoặc bít 0 hoặc bít 1 để sử dụng
trong phép XOR. Ứng dụng thuật toán A5/1: Mã hóa A5/1 có thể được thực hiện
dễ dàng bằng các thiết bị phần cứng, tốc độ nhanh. Do đó A5/1 đã từng được sử
dụng để mã hóa các dữ liệu real-time như các dãy bít audio. Ngày nay A5/1 được
sử dụng để mã hóa dữ liệu cuộc gọi trong mạng điện thoại GSM
Thuật toán RC4
Mã dòng RC4 được sử dụng với các mạng không dây IEEE 802.11b như một phần
của hệ thống được gọi là Wired Equivalent Privacy (WEB) và là một trong các kỹ
thuật mã cho giao thức SSL.
2. Trình bày khái niệm về mã hóa khối. Nêu các yêu cầu khi thiết kế mã
hóa khối. Các thuật toán DES AES thuộc mã hóa khối nào?
Khái niệm:
Mật mã khối được cấu trúc trên nguyên tắc là bản tin được chia thành các khối
có độ dài bằng nhau và việc mã hoá tiến hành theo từng khối độc lập nhau.
Trong môi trường máy tính độ dài của khối được tính bằng bit.
3
Độ bảo mật của mã trong trường hợp này phụ thuộc vào độ dài của khối và độ
phức tạp của thuật toán mã. Nếu kích cỡ của khối quá bé thì việc giải mã không
mấy khó khăn do dò tìm được đặc tính cấu trúc thống kê của bản tin rõ. Nếu
tăng kích thước khối thì mức độ cấu trúc thống kê cũng tăng theo số mũ và nếu
kích cỡ khối tiến đến đoạn tin thì tác dụng mã khối sẽ giảm.
Các tham số trong mã hóa khối:
Độ dài khối: Độ dài của một đơn vi mã hóa
Kích thước khóa: Độ dài của chuỗi dùng để mà hóa
Yêu cầu:
Kích thước khối đủ lớn => Hạn chế phương pháp thống kê
Không gian khóa phải đủ lớn => Hạn chế phương pháp vét cạn
Khi thiết kế một hệ mã khối, phải đảm bảo hai yêu cầu sau:
• Sự hỗn loạn (confusion): sự phụ thuộc giữa bản rõ và bản mã phải thực sự
phức tạp để gây khó khăn đối với việc tìm quy luật thám mã. Mối quan hệ
này tốt nhất là phi tuyến.
• Sự khuếch tán (diffusion): Mỗi bit của bản rõ và khóa phải ảnh hƣởng lên
càng nhiều bit của bản mã càng tốt.
AES Là mã khối đối xứng khoá riêng.
Des mã hóa khối Mô hình mã Feistel
3. Trình bày tổng quan và quy trình mã hóa thuật toán mã hóa RC4. Nêu
ví dụ minh họa ?
Đơn vị mã hóa của RC4 là một byte 8 bít.
- Mảng S và T gồm 256 số nguyên 8 bít
- Khóa K là một dãy gồm N số nguyên 8 bít với N có thể lấy giá trị từ 1 đến
256.
- Bộ sinh số mỗi lần sinh ra một byte để sử dụng trong phép XOR.
• Hai giai đoạn của RC4 là:
Giai đoạn khởi tạo:
• /* Khoi tao day S va T*/
• for i = 0 to 255 do
4
•
•
•
•
•
•
•
•
•
S[i] = i;
T[i] = K[i mod N];
next i
/* Hoan vi day S */
j = 0;
for i = 0 to 255 do
j = (j + S[i] + T[i]) mod 256;
Swap(S[i], S[j]);
next i
Giai đoạn sinh số:
•
•
•
•
•
•
•
•
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];
end while;
4. Trình bày tổng quan, các thành phần về hệ mật khóa bí mật. Ưu điểm và
nhược điểm của hệ mật khóa bí mật.
5
3
Ưu nhược điểm của mật mã khóa bí mật
Ưu điểm:
Đơn giản (thời gian nhanh, yêu cầu phần cứng không phức tạp)
Hiệu quả: (Tỷ lệ mã bằng 1) dễ sử dụng cho các ứng dụng nhạy cảm với độ
trễ và các ứng dụng di động.
Nhược điểm:
Phải dùng kênh an toàn để truyền khóa (Khó thiết lập và chi phí tốn kém)
Việc tạo và giữ khóa bí mật phức tạp, khó làm việc trên mạng do phải tạo
khóa nhiều.
Các thuật toán là song ánh, vì vậy nếu biết M và K thì chắc chắn biết C.
Thám mã có thể suy luận ra K, kết hợp với C tại kênh mở có thể suy ra M.
Khó xây dựng các dịch vụ an toàn khác như: đảm bảo tính toàn vẹn, xác
thực, chữ ký số…
5. Trình bày tổng quan, các thành phần về hệ mật khóa công khai. Ưu
điểm và nhược điểm của mã hóa công khai.
Mật mã hóa khóa công khai là một dạng mật mã hóa cho phép người sử dụng
trao đổi các thông tin mật mà không cần phải trao đổi các khóa chung bí
mật trước đó. Điều này được thực hiện bằng cách sử dụng một cặp khóa có quan
hệ toán học với nhau là khóa công khai và khóa cá nhân (hay khóa bí mật).
Thuật ngữ mật mã hóa khóa bất đối xứng thường được dùng đồng nghĩa
với mật mã hóa khóa công khai mặc dù hai khái niệm không hoàn toàn tương
đương. Trong mật mã hóa khóa công khai, khóa cá nhân phải được giữ bí mật
trong khi khóa công khai được phổ biến công khai. Trong 2 khóa, một dùng để
6
mã hóa và khóa còn lại dùng để giải mã. Điều quan trọng đối với hệ thống là
không thể tìm ra khóa bí mật nếu chỉ biết khóa công khai
Giải thuật khóa công khai gồm 6 thành phần:
- Bản rõ: thông điệp có thể đọc, đầu vào của giải thuật
- Giải thuật mật hóa
- Khóa công khai và bí mật: một cặp khóa được chọn sao cho 1 khóa dùng để
mật hóa và 1 khóa dùng để giải mật.
- Bản mã: thông điệp đầu ra ở dạng không đọc được, phụ thuộc vào bản rõ và
khóa. Nghĩa là với cùng một thông điệp, 2 khóa khác nhau sinh ra 2 bảng mã
khác nhau.
- Giải thuật giải mã.
Ưu điểm: Ưu điểm: chắc chắn, không cần trao đổi key, mỗi đối tượng chỉ
cần một cặp key (số lượng key ít). khoá được quản lý một cách linh hoạt
và hiệu quả hơn. Người sử dụng chỉ cần bảo vệ Private key
Nhược điểm:
Tồn tại khả năng một người nào đó có thể tìm ra được khóa bí mật. Không
giống với hệ thống mật mã sử dụng một lần (one-time pad) hoặc tương đương,
chưa có thuật toán mã hóa khóa bất đối xứng nào được chứng minh là an toàn
7
trước các tấn công dựa trên bản chất toán học của thuật toán. Khả năng một mối
quan hệ nào đó giữa 2 khóa hay điểm yếu của thuật toán dẫn tới cho phép giải mã
không cần tới khóa hay chỉ cần khóa mã hóa vẫn chưa được loại trừ. An toàn của
các thuật toán này đều dựa trên các ước lượng về khối lượng tính toán để giải các
bài toán gắn với chúng. Các ước lượng này lại luôn thay đổi tùy thuộc khả năng
của máy tính và các phát hiện toán học mới.
Mặc dù vậy, độ an toàn của các thuật toán mật mã hóa khóa công khai cũng
tương đối đảm bảo. Nếu thời gian để phá một mã (bằng phương pháp duyệt toàn
bộ) được ước lượng là 1000 năm thì thuật toán này hoàn toàn có thể dùng để mã
hóa các thông tin về thẻ tín dụng - Rõ ràng là thời gian phá mã lớn hơn nhiều lần
thời gian tồn tại của thẻ (vài năm).
Một điểm yếu tiềm tàng trong việc sử dụng khóa bất đối xứng là khả năng bị tấn
công dạng kẻ tấn công đứng giữa (man in the middle attack): kẻ tấn công lợi dụng
việc phân phối khóa công khai để thay đổi khóa công khai. Sau khi đã giả mạo
được khóa công khai, kẻ tấn công đứng ở giữa 2 bên để nhận các gói tin, giải
mã rồi lại mã hóa với khóa đúng và gửi đến nơi nhận để tránh bị phát hiện. Dạng
tấn công kiểu này có thể phòng ngừa bằng các phương pháp trao đổi khóa an toàn
nhằm đảm bảo nhận thực người gửi và toàn vẹnthông tin. Một điều cần lưu ý là khi
các chính phủ quan tâm đến dạng tấn công này: họ có thể thuyết phục (hay bắt
buộc) nhà cung cấp chứng thực số xác nhận một khóa giả mạo và có thể đọc các
thông tin mã hóa.
6. Trình bày tổng quan về mô hình mã Feistel. Vẽ sơ đồ khối của mã
Feistel.
Mô hình do Horst Feistel đề xuất, cũng là sự kết hợp các phép thay thế và
hoán vị. Trong hệ mã Feistel, bản rõ sẽ được biến đổi qua một số vòng để
cho ra bản mã cuối cùng:
8
• F là một hàm mã hóa dùng chung cho tất cả các vòng. Hàm F đóng vai trò
như là phép thay thế còn việc hoán đổi các nửa trái phải có vai trò hoán vị.
Bản mã C được tính từ kết xuất của vòng cuối cùng:
• C = Cn = (Ln, Rn)
• Hệ mã Feistel có điểm quan trọng là việc chia các bản mã thành hai nửa trái phải giúp cho hàm F
không cần khả nghịch (không cần có F-1). Mã hóa và giải mã đều dùng chiều thuận của hàm
F. Hàm F và thuật toán sinh khóa con càng phức tạp thì càng khó phá mã. Ứng với các hàm F
và thuật toán sinh khóa con khác nhau thì ta sẽ có các phương pháp mã hóa khác nhau.
9
7. Hãy trình bày quy trình mã hóa và giải mã thuật toán RSA.
RSA sử dụng một cặp khóa:
Khóa công khai (Public key) dùng để mã hóa;
Khóa riêng (Private key) dùng để giải mã.
Chỉ khóa riêng cần giữ bí mật. Khóa công khai có thể công bố rộng rãi.
Kích thước khóa của RSA:
Khóa < 1024 bít không an toàn hiện nay.
Khuyến nghị dùng khóa >= 2048 bít. Tương lai nên dùng khóa 3072 bít.
Thủ tục sinh khóa RSA:
Tạo 2 số nguyên tố p và q;
Tính n = p x q
Tính phi(n) = (p-1) x (q-1)
10
Chọn số e sao cho 0 < e < phi(n) và gcd(e, phi(n)) = 1
Chọn số d sao cho d trùng e-1 mod phi(n),
hoặc (d x e) mod phi(n) = 1
(d là molulo nghịch đảo của e)
Ta có (n, e) là khóa công khai, (n, d) là khóa riêng.
Thủ tục mã hóa RSA:
Thông điệp m đã được chuyển thành số, m
Bản mã c = me mod n
Thủ tục giải mã RSA:
Bản mã c, c
Bản rõ m = cd mod n
Ví dụ 1:
ọn 2 số nguyên tố p=3 và q=11
-1) x (q-1 ) = 2 x 10 = 20
ọn số
ố nguyên tố
ết cho e). Chọn e = 7
d=
ật (33, 3)
8. Trình bày và lấy ví dụ minh họa một số cuộc tấn công lên phương pháp
mã hóa RSA.
An toàn của RSA
11
Trên thực tế có nhiều cách tấn công khác nhau đối với mã công khai RSA như
sau:
Tìm kiếm khoá bằng phương pháp vét cạn, phương pháp này không khả
thi với kích thước đủ lớn của các số
Với các khóa nhỏ tầm 256 bít thì dễ dàng bị phá trong vài giờ với mt
cá nhân.
Với các kích thước khóa lớn hơn 1024 thì sẽ bị nhiều máy tính phá
trong vài giờ. Và yêu cầu khóa đề xuất từ 2048 bít trở lên.
Tấn công bằng toán học dựa vào độ khó việc tính Ф(n) bằng cách phân
tích n thành hai số nguyên tố p và q hoặc tìm cách tính trực tiếp Ф(n).
Trong quá trình nghiên cứu việc thám mã người ta đề xuất kiểu tấn công
thời gian trong khi giải mã, tức là căn cứ vào tốc độ mã hoá và giải mã
các mẩu tin cho trước mà phán đoán các thông tin về khoá.
9. Trình bày sơ lược mô hình trao đổi khóa công khai trong mã hóa khóa
công khai.
Các phương pháp phân phối khóa công khai:
ổi kiểu điểm-điểm thông qua kênh tin cậy;
ập trực tiếp vào danh mục công cộng (public-key registry);
ử dụng một máy chủ trực tuyến tin cậy;
ử dụng một máy chủ không trực tuyến và chứng chỉ;
ử dụng các hệ thống đảm bảo tính xác thực với các tham số công
cộng.
Chương 3.1: Các thứ liên quan AES, DES
10.Trình bày cơ sở toán học của mã hóa AES. Trình bày các bước xử lý
chính của quy trình mã hóa AES.
Cơ sở toán học của AES
Trong AES các phép toán cộng và nhân được thực hiện trên các byte trong
trường hữu hạn GF(28)
Phép cộng:
A = (a1 a2 a3 a4 a5 a6 a7 a8); B = (b1 b2 b3 b4 b5 b6 b7 b8)
C = A + B = (c1 c2 c3 c4 c5 c6 c7 c8),
12
trong đó:Ci = ai+bi mod 2,
1 ≤ i ≤ 8.
Ví dụ:
Dạng nhị phân: 01110011 + 01001110 = 00111101
Dạng đa thức:
6
5
4
(x + x + x + x + 1) + (x6 + x3 + x2 + x) = (x5 + x4 + x3 + x2 + 1)
Phép nhân: Phép nhân được thực hiện trên GF(28) bằng cách nhân hai
đa thức rút gọn theo mođulo của một đa thức bất khả quy m(x). Trong
AES đa thức bất khả quy này là:
m(x) = x8 + x4 + x3 + x +1.
Ví dụ: A = C3H, B = 85H tương ứng với
a(x) = x7 + x6 + x +1 và b(x) = x7 + x2 + 1. Khi đó: C= A.B
c(x) = a(x).b(x) mod (x8 + x4 + x3 + x +1)
c(x) = x7 + x5 + x3 +x2 + x hay C = AEH = 10101110
Các bước xử lí chính:
1. Mở rộng khóa (Key extend)
2. AES sử dụng thủ tục sinh khóa Rijndael.
3. Vòng khởi tạo (InitialRound)
a) AddRoundKey: Mỗi byte trong state được kết hợp với khóa phụ
sử dụng XOR
4. Các vòng lặp chính (Rounds)
a) SubBytes: bước thay thế phi tuyến tính, trong đó mỗi byte trong
state được thay thế bằng một byte khác sử dụng bảng tham
chiếu;
b) ShiftRows: bước đổi chỗ, trong đó mỗi dòng trong state được
dịch một số bước theo chu kỳ;
c) MixColumns: trộn các cột trong state, kết hợp 4 bytes trong mỗi
cột.
d) AddRoundKey.
5. Vòng cuối (Final Round - không MixColumns)
a) SubBytes;
b) ShiftRows;
c) AddRoundKey.
11.Nêu các yêu cầu với mã hóa AES. Trình bày quy trình giải mã AES.
Yêu cầu của AES
Là mã khối đối xứng khoá riêng.
Kích thước khối dữ liệu 128 bit và độ dài khoá là tùy biến: 128, 192
hoặc 256 bit.
13
Chuẩn mã mới phải mạnh và nhanh hơn Triple DES. Mã mới có cơ sở
lí thuyết mạnh để thời gian sống của chuẩn khoảng 20-30 năm (cộng
thêm thời gian lưu trữ).
Khi đưa ra thành chuẩn yêu cầu cung cấp chi tiết thiết kế và đặc tả đầy
đủ. Đảm bảo rằng chuẩn mã mới cài đặt hiệu quả trên cả C và Java.
Quy trình giải mã AES
12.Trình bày quy trình mã hóa DES. Vẽ sơ khối tổng quát của quy trình
mã hóa DES.
Mã DES có các tính chất sau:
ộc hệ mã Feistel gồm 16 vòng, ngoài ra DES có thêm một
hoán
vị khởi tạo trước khi vào vòng 1 và một hoán vị khởi tạo sau vòng 16
14
ớc của khối là 64 bít: ví dụ bản tin „meetmeafterthetogaparty‟
biểu diễn theo mã ASCII thì mã DES sẽ mã hóa làm 3 lần, mỗi lần 8 chữ
cái (64 bít): meetmeaf - tertheto - gaparty.
ớc khóa là 56 bít
ỗi vòng của DES dùng khóa con có kích thước 48 bít được trích ra
từ
khóa chính.
Quy trình mã hóa DES:
o DES mã hoá một xâu bit x của bản rõ độ dài 64 bằng một khoá 56 bit.
Bản mã nhận được cũng là một xâu bit có độ dài 64.
o Thuật toán tiến hành theo 3 bước:
B1: Với bản rõ cho trước x, một xâu bit x0 sẽ được xây dựng
bằng cách hoán vị các bit của x theo phép hoán vị cố định ban
đầu IP. Ta viết: x0 = IP(x) = L0R0, trong đó L0 gồm 32 bit đầu
và R0 là 32 bit cuối.
B2: Sau đó tính toán 16 lần lặp theo một hàm xác định. Ta sẽ
tính LiRi, 1£ i £ 16 theo quy tắc sau:
o Li = Ri-1; Ri = Li-1 cộng modul f(Ri-1, ki)
o F(Ri-1, Ki) = P-box(S-boxes(Expand( Ri-1) Ki))
Một vòng của phép mã hóa được mô tả như sau:
B3: Áp dụng phép hoán vị ngược IP-1 cho xâu bit R16L16, ta thu
được bản mã y. Tức là y = IP-1(R16L16) . Hãy chú ý thứ tự đã
đảo của L16 và R16
15
13.Ưu nhược điểm, các cuộc tấn công lên DES
16
Ta hãy xem xét tính an toàn của DES trước một vài phương pháp tấn công phá mã.
1) Tấn công vét cạn khóa (Brute Force Attack): Vì khóa của mã DES có chiều dài
là 56 bít nên để tiến hành brute-force attack, cần kiểm tra 256 khóa khác nhau.
Hiện nay với những thiết bị phổ dụng, thời gian gian để thử khóa là rất lớn nên
việc phá mã là không khả thi (xem bảng). Tuy nhiên vào năm 1998, tổ chức
Electronic Frontier Foundation (EFF) thông báo đã xây dựng được một thiết bị phá
mã DES gồm nhiều máy tính chạy song song, trị giá khoảng 250.000$. Thời gian
thử khóa là 3 ngày. Hiện nay mã DES vẫn còn được sử dụng trong thương mại, tuy
nhiên người ta đã bắt đầu áp dụng những phương pháp mã hóa khác có chiều dài
khóa lớn hơn (128 bít hay 256 bít) như TripleDES hoặc AES. 49
2) Phá mã DES theo phương pháp vi sai (differential cryptanalysis): Năm 1990
Biham và Shamir đã giới thiệu phương pháp phá mã vi sai. Phương pháp vi sai tìm
khóa ít tốn thời gian hơn brute-force. Tuy nhiên phương pháp phá mã này lại đòi
hỏi phải có 247 cặp bản rõ - bản mã được lựa chọn (chosen-plaintext). Vì vậy
phương pháp này là bất khả thi dù rằng số lần thử có thể ít hơn phương pháp bruteforce.
3) Phá mã DES theo phương pháp thử tuyến tính (linear cryptanalysis) Năm 1997
Matsui đưa ra phương pháp phá mã tuyến tính. Trong phương pháp này, cần phải
biết trước 243 cặp bản rõ-bản mã (known-plaintext). Tuy nhiên 243 cũng là một
con số lớn nên phá mã tuyến tính cũng không phải là một phương pháp khả thi.
Chương 4: Hàm băm
14.Hãy định nghĩa về hàm băm. Hãy định nghĩa hàm có khóa, hàm băm
không có khóa. Hãy nêu các đặc trưng và các tính chất cơ bản của hàm
băm.Lấy Ví dụ về các tính chất?
Định nghĩa hàm băm:
o Hàm băm là các thuật toán không sử dụng khóa để mã hóa (ở đây ta
dùng thuật ngữ “băm” thay cho “mã hóa”), nó có nhiệm vụ “lọc”
(băm) thông điệp được đưa vào theo một thuật toán h một chiều nào
đó, rồi đưa ra một bản băm – văn bản đại diện – có kích thước cố
định. Do đó người nhận không biết được nội dung hay độ dài ban đầu
của thông điệp đã được băm bằng hàm băm.
o Giá trị của hàm băm là duy nhất, và không thể suy ngược lại được
nội dung thông điệp từ giá trị băm này.
Đặc trưng:
o Hàm băm h là hàm băm một chiều (one-way hash) với các đặc tính
sau:
17
Với thông điệp đầu vào x thu được bản băm z = h(x) là duy
nhất.
Nếu dữ liệu trong thông điệp x thay đổi hay bị xóa để thành
thông điệp x’ thì h(x’) h(x). Cho dù chỉ là một sự thay đổi
nhỏ hay chỉ là xóa đi 1 bit dữ liệu của thông điệp thì giá trị băm
cũng vẫn thay đổi. Điều này có nghĩa là: hai thông điệp hoàn
toàn khác nhau thì giá trị hàm băm cũng khác nhau.
Nội dung của thông điệp gốc không thể bị suy ra từ giá trị hàm
băm. Nghĩa là: với thông điệp x thì dễ dàng tính được z = h(x),
nhưng lại không thể (thực chất là khó) suy ngược lại được x nếu
chỉ biết giá trị hàm băm h
Tính chất:
Tính chất 1: Hàm băm h là không va chạm yếu. Hàm băm h là
không va chạm yếu nếu khi cho trước một bức điện x, không thể
tiến hành về mặt tính toán để tìm ra một bức điện x’ x mà h(x’) =
h(x).
18
Tính chất 2: Hàm băm h là không va chạm mạnh. Hàm băm h là
không va chạm mạnh nếu không có khả năng tính toán để tìm ra
hai bức thông điệp x và x’ mà x x’ và h(x) = h(x’).
Tính chất 3: Hàm băm h là hàm một chiều. Hàm băm h là một
chiều nếu khi cho trước một bản tóm lược thông báo z thì không
thể thực hiện về mặt tính toán để tìm ra thông điệp ban đầu x sao
cho h(x) = z .
Hàm băm có thể chia làm hai lớp, lớp các hàm băm có khóa (keyed hash
functions) và lớp các hàm băm không khóa (unkeyed hash functions).
Hàm băm không khóa
- Các hàm băm không khóa là hàm băm có dữ liệu đầu vào chỉ là một thông
điệp. Hàm băm không khóa có lớp con là lớp chức năng MDC (modification
detection code – mã phát hiện sửa đổi). Các MDC được sử dụng để tạo ra ảnh
đặc trưng (representative image) của thông điệp đảm bảo sự toàn vẹn của dữ
liệu và thông điệp. Các MDC được chia làm hai lớp hàm sau:
+ OWHF (one-way hash function – hàm băm một chiều) có nghĩa là với một
mã băm biết trước, khó có thể tính toán để tìm ra thông điệp đầu vào có mã băm
bằng với mã băm đã cho. Hàm băm một chiều thỏa mãn tính chất: kháng tiền
ảnh và kháng tiền ảnh thứ hai.
+ CRHF (collision resistant hash function – hàm băm kháng xung đột) có nghĩa
là khó có thể tính toán để tìm ra hai thông diệp khác nhau và có cùng giá trị mã
19
băm. Hàm băm kháng xung đột thỏa mãn tính chất: kháng tiền ảnh thứ hai và
kháng xung đột.
Các MAC được sử dụng trong việc đảm bảo về nguồn gốc của thông điệp lẫn
tính toàn vẹn của nó. MAC có hai tham số chức năng phân biệt là thông điệp và
khóa bí mật. Một trong những tính chất quan trọng của MAC là tính kháng
toán, nghĩa là cho trước một hoặc nhiều cặp (mi, hkey(mi)), khó có thể tính toán
để tìm thêm được một cặp (m, hkey(m)) nào khác sao cho m ≠ mi.
Hàm băm có khóa
Hàm băm có khóa là hàm băm ngoài thông điệp đầu ra còn có đầu vào khác
là một khoa bí mật (secret key), nếu không có khóa bí mật này thì không thể
băm thông điệp đầu vào theo đúng quy định. Hàm băm có khóa có lớp con là
MAC (message authentication code – mã xác thực thông điệp).
15.Hãy nêu các tính chất cơ bản của hàm băm không có khóa. Hãy trình
bày nguyên tắc làm việc của hàm băm có khóa dựa trên các mật mã
khối.
Tính chất:
Tính chất nén
Tính dễ dàng tính toán
Tính khó tính toán nghịch ảnh
Khó tìm nghịch ảnh thứ hai: với x cho trước thì không có khả năng
tìm x’ x sao cho: h(x) = h(x’)
Tính kháng va chạm: không có khả năng về tính toán để tìm hai đầu
vào khác nhau bất kì x’ và x để h(x) = h(x’)
Hàm băm thỏa mãn tính chất trên được gọi là hàm băm mật mã
hay hàm băm an toàn.
MAC dựa trên các mật mã khối.
o Thuật toán
VÀO: Dữ liệu x, mật mã khối E, khoá MAC bí mật k
của E.
RA : n bit MAC trên x (n là độ dài khối của E)
(1) Độn và chia khối: Độn thêm các bit vào x nếu cần. Chia dữ liệu đã độn
thành từng khối n bit : x1, …, xt
(2) Xử lý theo chế độ CBC. Ký hiệu Ek là phép mã hoá E với khoá k.Tính khối
Ht như sau:
H1 Ek(x1)
20
Hi Ek(Hi-1 xi) 2 i t
(3) Xử lý thêm để tăng sức mạnh của MAC. Dùng một khoá bí mật thứ hai k
k’. Tính:
Ht’ Ek-1(Ht)
Ht Ek(Ht’)
(4) Xử lý thêm để tăng sức mạnh của MAC
(5) Kết thúc: MAC là khối n bit Ht
16.Trình bày tổng quan về quá trình xử lý thông điệp của SHA1.
Quá trình xử lý thông điệp của SHA1:
o SHA1 sử dụng thủ tục xử lý thông điệp tương tự MD5;
o Thông điệp được chia thành các khối 512 bít. Nếu kích thước thông
điệp không là bội số của 512 nối thêm số bít thiếu;
o Phần xử lý chính của SHA1 làm việc trên state 160 bít, chia thành 5 từ
32 bít (A, B, C, D, E);
Các từ A, B, C, D, E được khởi trị bằng một hằng cố định;
Từng phần 32 bít của khối đầu vào 512 bít được đưa dần vào để
thay đổi state;
o Quá trình xử lý gồm 80 vòng, mỗi vòng gồm các thao tác: add, and,
or, xor, rotate, mod.
17.Trình bày tổng quan về hàm băm MD5.
MD5 (Message Digest) là hàm băm không khóa được
21
Ronald Rivest thiết kế năm 1991 để thay thế MD4;
ỗi đầu ra (giá trị băm) của MD5 là 128 bít (16 bytes) và
thường được biểu diễn thành 32 số hexa;
ợc sử dụng khá rộng rãi trong nhiều ứng dụng:
ỗi đảm bảo tính toàn vẹn thông điệp;
ạo chuỗi kiểm tra lỗi – Checksum;
ật khẩu.
Quá trình xử lý thông điệp của MD5:
ệp được chia thành các khối 512 bít. Nếu kích thước thông
điệp không là bội số của 512 suy ra nối thêm số bít thiếu;
ần xử lý chính của MD5 làm việc trên state 128 bít, chia thành 4 từ
32 bít (A, B, C, D);
• Các từ A, B, C, D được khởi trị bằng một hằng cố định;
• Từng phần 32 bít của khối đầu vào 512 bít được đưa dần vào để thay đổi
state;
ử lý gồm 4 vòng, mỗi vòng gồm 16 thao tác tương tự nhau;
ỗi thao tác gồm:
• Hàm F (4 hàm khác nhau cho mỗi vòng);
• Cộng modulo;
• Quay trái.
Chương 5: Ứng dụng mã hóa
22
18.Trình bày quy trình hoạt động Kerberos.
Quy trình hoạt động của Kerberos:
Kerberos không xây dựng các giao thức chứng thực phức tạp cho mỗi máy chủ
mà hoạt động dựa trên một máy chủ chứng thực tập trung KDC (Key Distribution
Centre). KDC cung cấp vé cho việc chứng thực người dùng và bảo mật truyền
thông bởi khoá phiên trong vé gồm 3 giai đoạn và 6 bước trao đổi
Client chứng thực AS (Authentication Server – biết khoá mật của tất cả
người dùng được lưu giữ trên một cơ sở dữ liệu tập trung )
AS_REQ là yêu cầu người dùng xác thực ban đầu(khởi tạo dich vụ) yêu cầu này
được chuyển trực tiếp tới các thành phần được gọi là KDC Authentication Server
(AS).
AS_REP là trả lời của máy chủ xác thực để yêu cầu trước đó. Về cơ bản nó chứa
TGT (mã hóa bằng cách sử dụng khóa TGS bí mật) và khóa phiên (được mã hóa
bằng khóa bí mật của người dùng yêu cầu)
· Client xác thực TGS (Ticket Granting Server – cung cấp vé dịch vụ cho
phép người dùng truy nhập vào các máy chủ trên mạng)
TGS_REQ là yêu cầu từ khách hàng đến Cấp vé máy chủ (TGS) cho một vé thông
hành. Về cơ bản nó chứa TGT (mã hóa bằng cách sử dụng khóa TGS bí mật) và
khóa phiên (được mã hóa bằng khóa bí mật của người dùng yêu cầu)
TGS_REP là trả lời của Cấp vé máy chủ để yêu cầu trước đó.Nằm bên trong là vé
dịch vụ theo yêu cầu (được mã hóa với khóa bí mật của dịch vụ) và phiên dịch vụ
một khóa tạo ra bởi TGS và được mã hóa bằng khóa phiên trước đó được tạo ra bởi
AS.
Khách hàng truy cập và được cấp phép sử dung dịch vụ
AP_REQ là yêu cầu khách hàng gửi tới một máy chủ ứng dụng để truy cập vào
một dịch vụ. Các thành phần là các dịch vụ bán vé thu được từ TGS với thư trả lời
trước và nhận thực một lần nữa được tạo ra bởi khách hàng, nhưng lần này được
mã hóa bằng khóa phiên dịch (tạo ra bởi TGS);
AP_REP là trả lời rằng các máy chủ ứng dụng cung cấp cho khách hàng để chứng
minh nó thực sự là máy chủ của khách hàng là mong muốn. Gói này không phải
lúc nào cũng được yêu cầu. Các khách hàng yêu cầu máy chủ cho nó chỉ khi xác
thực lẫn nhau là cần thiết.
23
· Lưu ý tất cả các trao đổi giữa các máy đều dược đóng dấu thời gian Timestamp.
Hình 1 hoạt động của giao thức kerberos
19.Trình bày sơ lược về chức năng cung cấp các dịch vụ an ninh mạng của
Kryptoknight.
Kryptoknight cung cấp các dịch vụ an ninh mạng sau:
1.
2.
3.
4.
Single Sign-On
Two-Party Authentication (Xác thực 2 bên)
Key Distribution(Phân phối khóa)
Authentication of origin and contents of data (Xác thực nguồn
gốc và nội dung của dữ liệu)
24
Hình 2.1. Giao thức Single Sign-On
1. Single Sign-On
Trước khi bắt đầu bất kỳ hoạt động trên danh nghĩa của mình, người sử
dụng cần xác minh với hệ thống KrytoKinght bằng cách thực hiện các lệnh
kklogin trên một máy trạm công khai. Mục đích của lệnh này là để thực hiện
đăng nhập mạng và thống nhất toàn bộ cho người sử dụng.
Kklogin kích hoạt một tin nhắn trao đổi giữa các địa phương (stub) chương
trình KrytoKinght thực hiện lệnh và đưa đến AS (xem hình 2.1). Trong thông
điệp đầu tiên, người sử dụng nói với AS rằng người đó muốn đăng nhập, xác
định tên của mình. Thông báo này cho phép các AS xác thực người sử dụng vì
nó có chứa một giá trị là một chức năng của cả thời gian hiện tại và mật khẩu
của người dùng. Tính năng này được gọi là pre-authentication (trước xác
thực). Thông điệp thứ hai chứa các trả lời từ AS, được niêm phong với khóa
dựa vào mật khẩu của người dùng. Tại thời điểm này, kklogin nhắc người
dùng nhập mật khẩu của mình và sử dụng mật khẩu này để mở niêm phong trả
lời của AS, lấy các chứng chỉ (trong Kerberos gọi là ticket), chứa trong nó.
Một kết quả thành công có nghĩa là người sử dụng đã cung cấp một mật khẩu
chính xác và đã được chứng minh danh tính của mình. Các ticket, thu được
bởi người sử dụng, sau đó sẽ được thừa hưởng bởi bất kỳ hoạt động chạy thay
mặt người sử dụng. Sử dụng giấy chứng nhận thông qua KrytoKinght nguyên
thủy, một thực thể có thể giao tiếp với các đồng nghiệp từ xa và xác thực diễn
ra một lần duy nhất (cho đến khi người sử dụng một cách rõ ràng để chấm dứt
các phiên đăng nhập bằng cách thực hiện các lệnh kklogoff) và bất kỳ số
lượng các chương trình địa phương có thể sử dụng kết quả của nó khi thực
hiện chứng cứ để từ xa chương trình (dịch vụ), hoạt động này được gọi là
Single Sign-On hoặc SSO.
Ngoài ra, một số chương trình mà nằm trên hệ thống tương đối đáng tin
cậy có thể cần một giấy chứng nhận ủy thác kéo dài hơn vòng đời của một
chứng chỉ được cung cấp thông qua Single Sign-On. Ví dụ về các chương
trình như vậy là các máy chủ ứng dụng hoặc chương trình quản trị được
hưởng sự an toàn của hệ thống bảo vệ vật lý. Giấy chứng nhận ủy thác dài hạn
có thể được cung cấp thông qua các lệnh kkinstallkey thực hiện bởi người
quản trị trên hệ thống mà chương trình đó đã chạy; trong trường hợp này,
không cần thiết có hoạt động Single Sign-On.
2. Two-Party Authentication (Xác thực 2 bên)
25