You are on page 1of 27

Nhóm 1: 3 điểm

Câu 1: Trình bày Định nghĩa hệ thống mã hóa (cryptosystem) theo bộ 5 ký


hiệu toán học, có hình minh họa? Thám mã (cryptanalysis) là gì và có mối
quan hệ như thế nào với mật mã (crytography)? (Slide 1 và slide 24, Bài 1)
Hệ thống mã hóa là một bộ 5 (P, C, K, E, D) thỏa mãn các điều kiện sau:
1. Tập nguồn P là tập hữu hạn tất cả các bản tin nguồn cần mã hóa có thể có
2. Tập đích C là tập hữu hạn tất cả các bản tin có thể có sau khi mã hóa
3. Tập khóa K là tập hữu hạn các khóa có thể được sử dụng
4. E và D lần lượt là tập luật mã hóa và giải mã. Với mỗi khóa k thuộc K, tồn tại
luật mã hóa ek thuộc E và luật giải mã dk thuộc D tương ứng. Luật mã hóa e k:
P → C và luật giải mã dk: C → P là hai ánh xạ thỏa mãn dk(ek(x)) = x,

Thám mã: là lĩnh vực khoa học nghiên cứu và tìm kiếm các yếu điểm của các hệ
mật để từ đó đưa ra phương pháp tấn công các hệ mật đó.
Mật mã: là ngành khoa học nghiên cứu việc ứng dụng toán học vào biến đổi thông
tin nhằm mục đích bảo vệ thông tin khỏi sự truy cập của những người không có
thẩm quyền.
Mối quan hệ:
 Mật mã và mã thám là hai lĩnh vực đối lập nhau nhưng gắn bó mật thiết với
nhau.
 Không thể xây dựng một hệ mật tốt nếu không hiểu biết sâu về thám mã.
Câu 2: Trình bày các chức năng cơ bản của mật mã hiện đại? Phân tích chi tiết
một chức năng và lấy ví dụ về ứng dụng chức năng này trong thực tế? (Slide14,
Bài 1)
Các chức năng cơ bản của mật mã hiện đại:
1. Đảm bảo tính bí mật: thông tin chỉ được tiết lộ cho những ai được phép
2. Đảm bảo tính toàn vẹn dữ liệu: thông tin không thể bị thay đổi mà không bị
phát hiện
3. Đảm bảo sự xác thực: người gửi (hoặc người nhận) có thể chứng minh đúng
họ.
4. Đảm bảo chống sự từ chối: người gửi hoặc nhận sau này không thể chối bỏ
việc đã gửi hoặc nhận thông tin.
Phân tích chức năng:

Câu 3: Hãy trình bày sự khác nhau giữa mã hóa công khai và mã hóa bí mật?
Nêu cơ sở toán học cho xây dựng các hệ mật mã khóa công khai, lấy ví dụ
minh họa? (Slide 4, ch10)
Mã hóa công khai (mã hóa bất đối xứng): RSA
Mã hóa bí mật (mã hóa đối xứng): DES, AES, RC4, RC5,...
Sự khác biệt cơ bản giữa 2 loại hình mã hóa này nằm ở chỗ mã hóa đối xứng sử
dụng một key duy nhất cho cả hoạt động mã hóa và giải mã, trong khi mã hóa bất
đối xứng sử dụng public key để mã hóa và private key để giải mã.
Điểm khác biệt chính giữa mã hóa đối xứng và mã hóa bất đối xứng:
 Mã hóa đối xứng là một kỹ thuật đã được giới thiệu từ lâu, trong khi mã hóa
bất đối xứng là kỹ thuật mới hơn.
 Mã hóa bất đối xứng mất nhiều thời gian hơn để thực hiện do logic phức tạp
liên quan. Vì lý do này, mã hóa đối xứng vẫn được ưu tiên sử dụng khi truyền
dữ liệu hàng loạt.
 Mã hóa bất đối xứng an toàn hơn vì nó sử dụng các key khác nhau cho quá
trình mã hóa và giải mã.
Cơ sở toán học: Để có được cặp khóa KU và KR như trên, người ta thường dùng các
hàm 1 chiều (one-way function), các hàm một chiều có tính chất là hàm nghịch đảo
của chúng rất khó thực hiện. Cụ thể: tính f thì dễ nhưng f -1 thì rất khó. Sau đây là ví
dụ về hàm một chiều: việc sinh ra hai số nguyên tố lớn p, q và tính tích N = pq thì
thực hiện dễ dàng. Tuy nhiên nếu chỉ cho trước N và thực hiện phân tích N để tìm
lại hai số nguyên tố p, q là việc hoàn toàn bất khả thi về mặt thời gian.
1. One-Way Function (OWF): là một hàm mà tính xuôi thì dễ tính ngược thì
cực khó. Cụ thể: tính f thì dễ nhưng f-1 thì rất khó.
2. Trapdoor One-Way Function (TOWF): Với điều kiện y và một cửa sập f thì
ta có thể dễ dàng tính f-1
3. Knapsack cryptosystem

Cho trước a và x, ta dễ dàng tính được s. Tuy nhiên, với s và a thì rất khó để
tìm x.
Lý thuyết số:
1. Định lý Fermat: Nếu p là số nguyên tố và a là số nguyên không chia hết cho p
thì ap-1≡ 1 mod p.
2. Phép toán logarit rời rạc: Ta định nghĩa phép lũy thừa modulo như sau, để
tính y từ a, x và n là các số nguyên: y = a x mod n = (a.a….a) mod n với x số a
nhân với nhau. Trong trường hợp tổng quát với mỗi n chỉ có một số trường
hợp của a thì phép lũy thừa là khả nghịch. Lúc này a được gọi là primitive
root của n. Và cũng tương tự như số thực, nếu biết y, a và n, muốn tìm lại x
thì ta cũng dùng hàm logarith, được gọi là logarith rời rạc.
x = dloga,ny

Câu 4: Thám mã (cryptanalysis) là gì? Có những phương pháp tấn công thám
mã nào (Crytanalysis attacks), trình bày chi tiết 2 trong số các phương pháp
đó? (Slide 8, ch03)
Thám mã: là lĩnh vực khoa học nghiên cứu và tìm kiếm các yếu điểm của các hệ
mật để từ đó đưa ra phương pháp tấn công các hệ mật đó.
Các phương pháp tấn công thám mã:

- Ciphertex – only attack: (chặn bắt ciphertext trên đường truyền và phân tích để
tìm bản rõ)

- Known-plaintext attack: (tấn công khi đã biết bản rõ, hacker bằng 1 cách nào đó
đã biết được bản rõ, trên đường truyền tin họ biết thêm được bản mã, từ đó nghiên
cứu kỹ thuật mã hóa và tìm khóa bí mật)
Câu 5: Trình bày khái niệm và các tính chất của hàm băm? Hãy nêu một số
ứng dụng điển hình của hàm băm? (Bài 10.v1)
Hàm băm H(x) là một hàm tính checksum mạnh thỏa mãn các yêu cầu sau:
1. H có thể áp dụng cho các thông điệp x với các độ dài khác nhau
2. Kích thước của output h = H(x) là cố định và nhỏ
3. Tính một chiều: với một h cho trước, không thể tìm lại được x sao cho h =
H(x) (về mặt thời gian tính toán)
4. Tính chống trùng yếu: cho trước một x, không thể tìm y≠ x sao cho H(x) =
H(y)
5. Tính chống trùng mạnh: không thể tìm ra cặp x, y bất kỳ (x≠y) sao cho H(x)
= H(y), hay nói cách khác nếu H(x) = H(y) thì có thể chắc chắn rằng x = y.
Ứng dụng của hàm băm:
1. Lưu trữ mật khẩu
2. Kinh doanh trực tuyến (đấu giá bí mật)
3. Kiểm tra việc download dữ liệu có bị lỗi hay không
4. Chữ ký điện tử
5. Kiểm tra trùng lặp văn bản
Câu 6: Hãy cho biết điều kiện để tồn tại nghịch đảo nhân của số nguyên dương
b trong tập Zn? Dùng thuật toán Extended Euclidean để tìm nghịch đảo nhân
của b là ngày sinh của bạn trong Z100.
* Điều kiện để tồn tại nghịch đảo nhân của số nguyên dương b trong tập Zn:
Trong Zn, hai số a và b là số nghịch đảo của nhau nếu:

 Trong số học mô-đun, một số nguyên có thể có hoặc không có một phép nhân
nghịch đảo. Khi đó, tích của số nguyên và phép nhân nghịch đảo của nó đồng dư
với 1 modulo n.
* Ngày sinh: b = 20, n = 100
Ta có: r1 = 100, r2 = 5.
q r1 r2 r t1 t2 t
5 100 20 0 0 1
20 0

 Không tìm được nghịch đảo nhân.

Câu 7: Hãy cho biết điều kiện để tồn tại nghịch đảo nhân của một ma trận
vuông cấp m trong tập Zn? Hãy lấy ví dụ một ma trận vuông cấp 2 sau đó kiểm
tra tính nghịch đảo theo phép nhân và tìm nghịch đảo của nó nếu có trong Z26.
(Slide 3, 4, ch02)
Cho A là một ma trận vuông cấp n trên K. Ta nói A là ma trận khả nghịch, nếu tồn
tại một ma trận B vuông cấp n trên K sao cho: A.B = B.A = In. Khi đó, B được gọi
là ma trận nghịch đảo của ma trận A, ký hiệu A-1. Với In là ma trận đơn vị cấp n.
 Một ma trận thức K là có nghịch đảo khi và chỉ khi định thức của nó khác 0.
 Tuy nhiên, điều quan trọng cần nhớ là ta đang làm việc trên Z 26. Kết quả
tương ứng là ma trận K có nghịch đảo theo modulo 26 khi và chỉ khi
UCLN(det K,26) = 1.
Điều kiện để tồn tại nghịch đảo nhân: gcd (det (A), n) = 1. Trong đó, det(A) là định
thức của ma trận vuông cấp n A.

VD: Ma trận A = (11, 8) (3, 7)


det(A) =
Câu 8: Trình bày về thuật toán mã hóa truyền thống Shift (Caesar). Sử dụng
Shift để mã hóa và giải mã tên của bạn. (p20, slide ch03)
Trong mật mã học, mật mã Caesar (Xê da), còn gọi là mật mã dịch chuyển, là một
trong những mật mã đơn giản và được biết đến nhiều nhất. Hệ mã Caesar là một hệ
mã hóa thay thế đơn âm, làm việc trên bẳng chữ cái tiếng Anh 26 ký tự. Đó là một
dạng của mật mã thay thế, trong đó mỗi ký tự trong văn bản được thay thế bằng một
ký tự cách nó một đoạn trong bảng chữ cái để tạo thành bản mã.
VD: Thao, k = 10
=>
Plain T h a o
Cipher

Câu 9: Trình bày về thuật toán mã hóa truyền thống Shift (Caesar). Hãy cho
biết một số phương pháp thám mã trên mã Shift, lấy một ví dụ minh họa đơn
giản?
Ngày nay phương pháp mã hóa của Ceasar không được xem là an toàn.
Phương pháp thám mã trên mã Shift:
1. Do không gian khóa bé (0 < k <26)  dễ dàng thám mã bằng phương pháp
vét cạn
2. Nếu có được bản rõ và biết được đây là mã hóa caeser thì có thể tấn công
bằng cách phân tích tần suất hay phân tích các từ mẫu.
VD: Giả sử kẻ tấn công có được bản mã PHHW PH DIWHU WKH WRJD SDUWB và
biết được phương pháp mã hóa và giải mã là phép cộng trừ modulo 26. Đối thủ có
thể thử tất cả 25 trường hợp của k như sau:
=> Trong 25 trường hợp trên, chỉ có trường hợp k=3 thì bản giải mã tương ứng là
có ý nghĩa. Do đó đối thủ có thể chắc chắn rằng “meet me after the toga
party” là bản rõ ban đầu
Câu 10: Trình bày về thuật toán mã hóa truyền thống Affine. Nếu sử dụng
phương pháp thám mã vét cạn để tìm khóa thì không gian tìm kiếm là bao, vì
sao?
Mã hóa Affine là một bộ năm (P, C, K, E, D) thỏa mãn:
Nếu sử dụng phương pháp thám mã vét cạn để tìm khóa:
Để việc giải mã có thể thực hiện được, yêu cầu cần thiết là hàm Affine phải là đơn
ánh.
ax + b  y (mod 26)
phải có nghiệm x duy nhất.
 ax  y-b (mod 26)
 ax  y (mod 26) (y Z26 ).
Ta có định lý: Đồng dư thức ax  b mod m chỉ có một nghiệm duy nhất x  Zm với
mọi b  Zm khi và chỉ khi UCLN(a,m) = 1.
Vì 26 = 2  13 nên các giá trị a  Z26 thoả mãn UCLN(a,26) = 1 là a = 1, 3, 5, 7, 9,
11, 13, 15, 17, 19, 21, 23 và 25. Tham số b có thể là một phần tử bất kỳ trong Z 26 .
Như vậy, mã Affine có 12  26 = 312 khoá có thể ( dĩ nhiên con số này quá nhỉ để
bảo đảm an toàn).
Câu 11: Trình bày về thuật toán mã hóa truyền thống Vigenere. Sử dụng
Vigenere để mã hóa và giải mã cụm từ “chuyendoiso” với khóa “cntt”.
Mã hóa Vigenère là sự kết hợp xem kẽ nhiều phép mã hóa Caesar với các bước dịch
khác nhau. Mã hóa Caesar, đây là phương pháp mã hóa mà ta chọn ra một giá trị
khóa key K, và dịch các chữ cái theo vòng tròn K bước. Trong mã hóa Vigenère thì
ra sẽ sử dụng một bảng để làm phép dịch, và một chuỗi khóa gọi là key, thay vì một
số như trong mã hóa Caesar.

Cho m là một số nguyên dương cố định nào đó. Định nghĩa P = C = K =


(Z26)m . Với khoá K = (k1, k2, . . . ,km) ta xác định :
eK(x1, x2, . . . ,xm) = (x1+k1, x2+k2, . . . , xm+km)

dK(y1, y2, . . . ,ym) = (y1-k1, y2-k2, . . . , ym-km)
Tập K có tất cả là 26 m phần tử, do đó với mỗi m có tất cả là 26 m hệ mật mã
Vigenere khác nhau (với m = 6 thì số đó là 308,915,776), duyệt toàn bộ chừng ấy
khoá để thám mã bằng tính thủ công thì khó, nhưng nếu dùng máy tính đủ mạnh thì
cũng không đến nỗi khó lắm! Nhưng điều quan trọng là m có thể thay đổi tăng lên
để việc thám mã bằng vét cạn là không khả thi.
VD:
c h u y e n d o i s o
c n t t c n t t c n t

Câu 12: Trình bày về thuật toán mã hóa truyền thống Vigenere. Nêu ý tường
và lấy ví vụ minh họa đơn giản cho thám mã Vigenere dựa trên Kasiski test?
(p38, ch03)
Việc thám mã gồm hai bước: bước thứ nhất xác định độ dài m, bước thứ hai xác
định các số k1,..., km. Có hai phương pháp để xác định độ dài m: phép thử Kasiski
và phương pháp dùng chỉ số trùng hợp.
Phép thử Kasiski (đề xuất từ 1863). Phép thử dựa vào nhận xét rằng hai đoạn trùng
nhau của bản rõ sẽ được mã hoá thành hai đoạn trùng nhau của bản mã, nếu khoảng
cách của chúng trong văn bản rõ (kể từ ký tự đầu của đoạn này đến ký tự đầu của
đoạn kia) là bội số của m. Mặt khác, nếu trong bản mã, có hai đoạn trùng nhau và
có độ dài khá lớn (3 chẳng hạn) thì rất có khả năng chúng là mã của hai đoạn trùng
nhau trong bản rõ. Vì vậy, ta thử tìm một đoạn mã (có ba ký tự trở lên) xuất hiện
nhiều lần trong bản mã, tính khoảng cách của các lần xuất hiện đó, chẳng hạn được
d1, d2, ..., dt; khi đó ta có thể phán đoán m = d = gcd (d1, d2,..., dt)- ước số chung
lớn nhất của d1, d2..., dt; hoặc m là ước số của d.
VD: Để xác định chu kỳ của khóa mật mã Vigenère, phương pháp Kasiski xem
xét sự lặp lại của các nhóm chữ cái như sau:

Đoạn lặp lại loạt VHVS gồm 18 ký tự, gợi ý rằng độ dài khóa có thể là 18, 9, 6,
3, 2. Còn đoạn lặp lại loạt QUCE là 30 ký tự, gợi ý độ dài khóa là 30, 15, 10, 6,
5, 3, 2. Kết hợp lại, độ dài khóa có thể là 6, 3 hoặc 2.
Câu 13: Trình bày về thuật toán mã hóa truyền thống Hill. Sử dụng thuật toán
Hill để mã hóa và giải mã 2 ký tự đầu trong tên của bạn. Biết ma trận A = 8 5 7
11
Trong mã Hill, mỗi chữ cái được gán cho một con số nguyên từ 0 đến 25.
Mã Hill thực hiện mã hóa một lần m ký tự bản rõ (ký hiệu p1, p2,…,pm), thay thế
thành m ký tự trong bản mã (ký hiệu c1, c2,…,cm). Việc thay thế này được thực hiện
bằng m phương trình tuyến tính.
Ví dụ với m = 3:

Giải mã:

Áp dụng: Tên Thảo


T = 19, H = 7
8 5 19
7 11 7
=> (8*19 + 5*7, 7*19 + 11*7) mod 26 = (3, 2)
Câu 14: Trình bày về thuật toán mã hóa truyền thống Hill. Sử dụng thuật toán
Hill để mã hóa và giải mã 2 ký tự đầu trong họ của bạn. Biết ma trận A (p41,
slide ch03; p49, slide Bài 1)

Nhóm 2: 4 điểm
Câu 1: Hãy trình bày thủ tục sinh khóa của RC4? Nêu các ứng dụng của RC4
trong bảo mật thông tin?
RC4 được dùng trong giao thức SSL để bảo mật dữ liệu trong quá trình truyền dữ
liệu giữa Web Server và trình duyệt Web. Ngoài ra RC4 còn được sử dụng trong mã
hóa WEP của mạng Wireless LAN.
Như mọi stream cipher khác, RC4 thực hiện phép XOR plaintext với một keystream
đã được chuẩn bị để thu được ciphertext tương ứng.
Thủ tục sinh khóa:
1. Giai đoạn khởi tạo
2. Giai đoạn sinh số

Quá trình sinh số của RC4 cũng sinh ra dãy số ngẫu nhiên, khó đoán trước, vì vậy
RC4 đạt được mức độ an toàn cao theo tinh thần của mã hóa One-Time Pad. Mã
hóa RC4 hoàn toàn được thực hiện trên các số nguyên một byte do đó tối ưu cho
việc thiết lập bằng phần mềm và tốc độ thực hiện nhanh hơn so với mã khối.
Câu 2: Hãy trình bày thủ tục sinh khóa của RC4? Cho khóa K = [3, 1, 2], hãy
dùng thuật toán Tiny RC4 (áp dụng trên số nguyên 3 bit) để tìm mảng S? (p34,
BaiGiang.pdf)
Tiny RC4: dùng 2 mảng S và T mỗi mảng gồm 8 số nguyên 3 bít (từ 0 đến 7). Khóa
là một dãy gồm N số nguyên 3 bít với N có thể lấy giá trị từ 1 đến 8. Bộ sinh số mỗi
lần sinh ra 3 bít để sử dụng trong phép XOR. Quá trình sinh số của TinyRC4 gồm
hai giai đoạn:
1. Giai đoạn khởi tạo
Trong giai đoạn này, trước tiên dãy S gồm các số nguyên 3 bít từ 0 đến 7
được sắp thứ tự tăng dần. Sau đó dựa trên các phần tử của khóa K, các phần tử của
S được hoán vị lẫn nhau đến một mức độ ngẫu nhiên nào đó
2. Giai đoạn sinh số

Trong giai đoạn này, các phần tử của S tiếp tục được hoán vị. Tại mỗi bước
sinh số, hai phần tử của dãy S được chọn để tính ra số k 3 bít là số được dùng để
XOR với đơn vị mã hóa của bản rõ.
Ví dụ: K = [3, 1, 2]
- Khởi tạo S và T:
S 0 1 2 3 4 5 6 7
T 3 1 2 3 1 2 3 1
- Hoán vị S:
Câu 3: Trình bày cấu trúc tổng thể 16 vòng của mã DES? Phân tích hiệu ứng
lan truyền?

Mã DES có các tính chất sau:


1. Là mã thuộ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
2. Kích thướ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.
3. Kích thước khóa là 56 bít
4. Mỗ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.
Sơ đồ mã DES trên gồm ba phần, phần thứ nhất là các hoán vị khởi tạo và hoán vị
kết thúc. Phần thứ hai là các vòng Feistel, phần thứ ba là thuật toán sinh khóa con.
Hiệu ứng lan truyền:
Một tính chất quan trọng cần thiết của mọi thuật toán mã hóa là chỉ cần một thay
đổi nhỏ trong bản rõ hay trong khóa sẽ dẫn đến thay đổi lớn trong bản mã. Cụ thể,
chỉ cần thay đổi một bít trong bản rõ hay khóa thì dẫn đến sự thay đổi của nhiều bít
bản mã. Tính chất này được gọi là hiệu ứng lan truyền. Nhờ có tính chất này mà
người phá mã không thể giới hạn miền tìm kiếm của bản rõ hay của khóa (dù phá
mã theo known-plaintext hay chosen-plaintext) nên phải thực hiện vét cạn khóa.
DES là một phương pháp mã hóa có hiệu ứng lan truyền này. Xét hai bản rõ sau (64
bít):
P1: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
P2: 10000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
Hai bản rõ trên được mã hóa bằng DES với khóa:
K: 0000001 1001011 0100100 1100010 0011100 0011000 0011100 0110010
Bảng sau cho biết số bít khác nhau của bản mã tương ứng với P1 và P2 qua các
vòng của DES:

Chỉ cần đến vòng thứ 2, số bít khác nhau giữa hai bản mã đã là 21 bít, sau 16 vòng
số bít khác nhau là 34 bít (khoảng 1/2 tổng số bít của bản rõ).
Câu 4: Trình bày cấu trúc chi tiết một vòng Feistel của DES? Hãy cho biết độ
an toàn của DES trước một số loại tấn công như: vét cạn (brute-force), phá mã
vi sai (differential cryptanalysis), phá mã tuyến tính (linear cryptanalysis)?
(p43, BaiGiang.pdf), Riêng độ an toàn: (p48, BaiGiang.pdf), (p74, ch6_DES) và
tham khảo thêm các nguồn Internet để có tính cập nhật – vì trong tài liệu là những
đánh giá 3 loại tấn công này từ khoảng năm 2004)
Cấu trúc chi tiết 1 vòng Feistel:
Trong DES, hàm F của Feistel là:
F(Ri-1, Ki) = P-box(S-boxes(Expand( Ri-1) Ki))
Trong đó hàm Expand vừa mở rộng vừa hoán vị Ri-1 từ 32 bít lên 48 bít. Hàm
Sboxes nén 48 bít lại còn 32 bít. Hàm P-box là một hoán vị 32 bít. Mô tả của các
hàm trên là như sau:
1. Expand: đánh số các bít của Ri-1 theo thứ tự từ trái sang phải là 0, 1, 2, …, 31.
Hàm Expand thực hiện vừa hoán vị vừa mở rộng 32 bít thành 48 bít theo quy
tắc:

2. S-boxes: chia hàm S-boxes thành 8 hàm S-box con, mỗi hàm biến đổi số 6 bít
thành số 4 bít. Hộp S1:
3. P-box: hàm P-box cũng thực hiện hoán vị 32 bít đầu vào theo quy tắc:

Độ an toàn của DES:


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.
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
brute-force.
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 2 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.
Câu 5: Trình bày chế độ làm việc Output Feedback (OFB)? Chế độ làm việc
này có những ưu điểm gì so với các chế độ làm việc ECB, CBC và CFB? (p3,
ch08)
- OFB là chế độ mã hóa mà giá trị ngõ ra của khối thực thi thuật toán mã
hóa, không phải ciphertext, của lần mã hóa hiện tại sẽ được phản hồi (feedback) đến
ngõ vào của lần mã hóa kế tiếp.
- Trong chế độ này, mỗi bit trong bản mã độc lập với bit hoặc các bit trước đó. Điều
này tránh sự lan truyền lỗi.

Chế độ OFB có những đặc điểm cần chú ý như sau:


1. Thuật toán mã hóa không áp dụng trực tiếp trên plaintext mà dùng để biển
đổi một khối dữ liệu sinh ra từ IV và khối ngõ ra của lần mã hóa trước đó.
Điểm này tương tự với CFB.
2. OFB khác với CFB là nó xử lý trên một khối dữ liệu với độ dài bit đầy đủ
như thuật toán mã hóa quy định chứ không xử lý trên một phần hay một vài
bit của khối dữ liệu.
Ưu điểm:
1. Khả năng bảo mật cao hơn ECB. Ciphertext của một khối dữ liệu plaintext có
thể khác nhau cho mỗi lần mã hóa vì nó phụ thuộc vào IV hoặc khối ngõ ra
của lần mã hóa trước đó.
2. Lỗi bit không bị lan truyền. Khi một lỗi bit xuất hiện trên một ciphertext, nó
chỉ ảnh hưởng đến kết quả giải mã của khối dữ liệu hiện tại
3. Thiết kế phần cứng đơn giản hơn CFB.
Nhược điểm:
Không thể thực hiện mã hóa/giải mã song song nhiều khối dữ liệu vì lần mã
hóa/giải mã sau phụ thuộc vào khối ngõ ra của lần mã hóa/giải mã liền trước nó.
********Note**********
1. ECB là chế độ mã hóa từng khối bit độc lập. Với cùng một khóa mã K, mỗi khối
plaintext ứng với một giá trị ciphertext cố định và ngược lại.
2. CBC là chế độ mã hóa chuỗi, kết quả mã hóa của khối dữ liệu trước (ciphertext)
sẽ được tổ hợp với khối dữ liệu kế tiếp (plaintext) trước khi thực thi mã hóa.
3. CFB là chế độ mã hóa mà ciphertext của lần mã hóa hiện tại sẽ được phản hồi
(feedback) đến đầu vào của lần mã hóa tiếp theo. Nghĩa là, ciphertext của lần mã
hóa hiện tại sẽ được sử dụng để tính toán ciphertext của lần mã hóa kế tiếp. Mô tả
có vẻ giống CBC nhưng quá trình trực hiện lại khác.
4. CTR là chế độ mã hóa sử dụng một tập các khối ngõ vào, gọi là các counter, để
sinh ra một tập các giá trị ngõ ra thông qua một thuật toán mã hóa. Sau đó, giá trị
ngõ ra sẽ được XOR với plaintext để tạo ra ciphertext trong quá trình mã hóa, hoặc
XOR với ciphertext để tạo ra plaintext trong quá trình giải mã.
Câu 6: Trình bày cấu trúc tổng quát của mã AES? Giải thích vì sao mã AES
lại được ứng dụng rộng rãi hiện nay? (p7, ch07) cho cấu trúc, (p63, ch07) các nội
dung Security, Implementation Simplicity and Cost cho lý do tại sao lại được dùng
rộng rãi hiện nay
Cấu trúc tổng quát:
Mã hóa AES là một mã hóa theo khối 128 bít không sử dụng nguyên tắc của hệ mã
Feistel mà sử dụng mô hình mạng SPN. AES dùng 4 phép biến đổi chính để mã hóa
một khối: Add row key, Substitute bytes, Shift rows, Mix columns. Mỗi phép biến
đổi nhận tham số đầu vào có kích thước 128 bít và cho ra kết quả cũng có kích
thước 128 bít. AES thực hiện 4 phép biến đổi trên nhiều lần tạo thành 10 vòng biến
đổi như hình bên dưới:

Giải thích:
1. Tính bảo mật
AES được thiết kế sau DES. Hầu hết các cuộc tấn công đã biết vào DES đều đã
được thử nghiệm trên AES.
 Tấn công Brute-Force: AES chắc chắn an toàn hơn DES do khóa có kích
thước lớn hơn.
 Các cuộc tấn công thống kê: Nhiều thử nghiệm đã không thực hiện được
phân tích thống kê của bản mã.
 Tấn công vi phân và tuyến tính: Chưa có các cuộc tấn công vi phân và tuyến
tính trên AES.
2. Triển khai
AES có thể được triển khai trong phần mềm, phần cứng và phần lõi (firmware).
Việc triển khai có thể sử dụng quy trình tra cứu bảng hoặc các quy trình sử dụng
cấu trúc đại số được xác định rõ.
3. Tính đơn giản và chi phí
Các thuật toán được sử dụng trong AES rất đơn giản nên chúng có thể được thực
hiện dễ dàng bằng cách sử dụng bộ vi xử lý rẻ tiền và dung lượng bộ nhớ tối
thiểu.
Câu 7: Trình bày thủ tục Key expansion cho mã AES-128? Giải thích vì sao
mã AES lại được ứng dụng rộng rãi hiện nay? (p35, ch07) cho Key expansion
Để tạo các khóa tròn cho mỗi vòng, AES sử dụng quy trình mở rộng khóa. Nếu số
vòng là Nr, quy trình mở rộng khóa sẽ tạo Nr + 1 khóa tròn 128 bit từ một khóa mật
mã 128 bit duy nhất.
Thao tác Expand key có input là 16 byte (4 word) của khóa bí mật, và sinh ra một
mảng 44 word (176 byte). 44 word này được sử dụng cho 11 vòng mã hóa của AES,
mỗi vòng dùng 4 word.
Từ bốn word đầu vào w0w1w2w3, trong lần lặp đầu tiên thao tác Expand key sinh ra
bốn word w4w5w6w7, lần lặp thứ 2 từ w4w5w6w7 sinh ra w8w9w10w11 , cứ như thế cho
đến lần lặp thứ 10 sinh ra bốn word cuối cùng w40w41w42w43 như hình vẽ bên dưới.
Trong mỗi lần lặp để sinh ra 4 word, word đầu tiên sinh ra theo quy tắc
wi = wi-4  g với g = SubWord (RotWord(wi-1))  Rcon[i/4].
Ba word tiếp theo sinh ra theo quy tắc wi =wi-4  wi-1. Sau đây chúng ta sẽ tìm
hiểu các hàm SubWord, RotWord và mảng Rcon.
1. RotWord: dịch vòng trái một byte. Giả sử word đầu vào có 4 byte là [b0, b1,
b2, b3] thì kết quả của RotWord là [b1, b2, b3, b4].
2. SubWord: thay thế mỗi byte trong word đầu vào bằng cách tra cứu bảng S-
box trong thao tác Substitute Bytes
3. Rcon: là một mảng hằng số. Mảng này gồm 10 word ứng với 10 vòng AES.
Bốn byte của một phần tử Rcon[ j] là (RC[ j], 0, 0, 0) với RC[ j] là mảng 10
byte như sau:

Câu 8: Trình bày thuật toán RSA? Hãy cho biết các điều kiện của p, q, d
(private key) để RSA an toàn?
Phương pháp RSA là một phương pháp mã hóa khóa công khai. Về mặt tổng quát
RSA là một phương pháp mã hóa theo khối. Trong đó bản rõ M và bản mã C là các
số nguyên từ 0 đến 2i với i số bít của khối. Kích thước thường dùng của i là 1024
bít. RSA sử dụng hàm một chiều là vấn đề phân tích một số thành thừa số nguyên
tố.
Thuật toán RSA:

Để RSA an toàn: Trong RSA, p và q phải có ít nhất 512 bits; n phải có ít nhất 1024
bits
Câu 9: Trình bày thuật toán RSA? Hãy cho biết một số kỹ thuật tấn công
RSA? (p19-41, ch10-RSA)
Một số kỹ thuật tấn công RSA:

1, Vét cạn khóa: cách tấn công này thử tất cả các khóa d có thể có để tìm ra bản
giải mã có ý nghĩa, tương tự như cách thử khóa K của mã hóa đối xứng. Với N lớn,
việc tấn công là bất khả thi.
2, Phân tích N thành thừa số nguyên tố N = pq: Chúng ta đã nói rằng việc phân
tích phải là bất khả thi thì mới là hàm một chiều, là nguyên tắc hoạt động của RSA.
Tuy nhiên, nhiều thuật toán phân tích mới đã được đề xuất, cùng với tốc độ xử lý
của máy tính ngày càng nhanh, đã làm cho việc phân tích N không còn quá khó
khăn như trước đây. Năm 1977, các tác giả của RSA đã treo giải thưởng cho ai phá
được RSA có kích thước của N vào khoảng 428 bít, tức 129 chữ số. Các tác giả này
ước đoán phải mất 40 nghìn triệu triệu năm mới có thể giải được. Tuy 71 nhiên vào
năm 1994, câu đố này đã được giải chỉ trong vòng 8 tháng.
3, Đo thời gian: Đây là một phương pháp phá mã không dựa vào mặt toán học của
thuật toán RSA, mà dựa vào một “hiệu ứng lề” sinh ra bởi quá trình giải mã RSA.
Hiệu ứng lề đó là thời gian thực hiện giải mã. Giả sử người phá mã có thể đo được
thời giải mã dùng thuật toán bình phương liên tiếp. Trong thuật toán bình phương
liên tiếp, nếu một bít của d là 1 thì xảy ra hai phép modulo, nếu bít đó là 0 thì chỉ có
một phép modulo, do đó thời gian thực hiện giải mã là khác nhau. Bằng một số
phép thử chosen-plaintext, người phá mã có thể biết được các bít của d là 0 hay 1 và
từ đó biết được d.
Câu 10: Trình bày thuật toán RSA? Cho p = 11, q = 17 hãy dùng RSA để tính
bản mã từ bản rõ M = 5.
1. p = 11, q = 17 => N = pq = 187
2. n = (p-1)(q-1) = 10*16 = 160
3. Chọn e = 7 nguyên tố cùng nhau với n
4. Tính nghịch đảo của e trong phép module n được d = 23
5. Khóa công khai KU = (e, N) = (7, 187). Khóa bí mật KR = (d, N) = (23, 187)
Theo phương án 1 (mã hóa bảo mật):
6. Mã hóa bản rõ M = 5:
C = Me mod N = 57 mod 187 =
7. Giải mã bản mã C =
Theo phương án 2 (mã hóa chứng thực):

Câu 11: Trình bày cấu trúc tổng thể của hàm băm MD5-128? Hãy nêu một số
ứng dụng điển hình của hàm băm trong thực tế?
Hàm băm MD5 với kích thước giá trị băm là 128 bít, được dùng để tính giá trị băm
của thông điệp có kích thước tối đa là 264 bít.
Sơ đồ tổng thể:
Trước tiên thông điệp được thêm dãy bit padding 100….00. Sau đó thêm vào chiều
dài (trước khi padding) của thông điệp được biểu diễn bằng 64 bít. Như vậy chiều
dài của dãy bít padding được chọn sao cho cuối cùng thông điệp có thể chia thành
N block 512 bít M1, M2, … , MN.
Quá trình tính giá trị băm của thông điệp là quá trình lũy tiến. Trước tiên block M1
kết hợp với giá trị khởi tạo H0 thông qua hàm F để tính giá trị hash H1. Sau đó block
M2 được kết hợp với H1 để cho ra giá trị hash là H2 . Block M3 kết hợp với H2 cho ra
giá trị H3. Cứ như vậy cho đến block MN thì ta có giá trị băm của toàn bộ thông điệp
là HN.
H0 là một dãy 128 bít được chia thành 4 từ 32 bít, ký hiệu 4 từ 32 bít trên là abcd. a,
b, c, d là các hằng số như sau (viết dưới dạng thập lục phân):
a = 01234567
b = 89abcdef
c = fedbca98
d = 76543210
Một số ứng dụng điển hình của hàm băm trong thực tế:
1. Lưu trữ mật khẩu
2. Đấu giá trực tuyến

3. Download file: Khi chúng ta download file từ mạng internet, nếu chất lượng
mạng không tốt thì có thể xảy ra lỗi trong quá trình download làm cho file tại
máy client khác với file trên server. Hàm băm có thể giúp chúng ta phát hiện
ra những trường hợp bị lỗi như vậy
Câu 12: Trình bày cấu trúc hàm F của hàm băm MD5-128? Hãy nêu một số
ứng dụng điển hình của hàm băm trong thực tế? (Bai10_Hambam.v1, p85
BaiGiang.pdf)

Tại mỗi bước lũy tiến, các giá trị abcd của giá trị hash Hi-1 được biến đổi qua 64
vòng từ 0 đến 63. Tại vòng thứ j sẽ có 2 tham số là Kj và Wj đều có kích thước 32
bít. Các hằng số Kj được tính từ công thức: Kj là phần nguyên của số 2 n với i biểu
diễn theo radian.
Giá trị block Mi 512 bít được biến đổi qua một hàm message schedule cho ra 64 giá
trị W0, W1,…, W63 mỗi giá trị 32 bít. Block Mi 512 bít được chia thành 16 block 32
bít ứng với các giá trị W0, W1, …, W15 (16×32=512). Tiếp theo, 16 giá trị này được
lặp lại 3 lần tạo thành dãy 64 giá trị.
Sau vòng cuối cùng, các giá trị abcde được cộng với các giá trị abcd của Hi-1 để cho
ra các giá trị abcd của Hi. Phép cộng ở đây là phép cộng modulo 232.
Câu 13: Trình bày những dịch vụ bảo mật (security services) mà chữ ký số có
thể cung cấp? Cho thông điệp M là chữ cái in hoa đầu tiên trong tên của bạn, p
= 7, q = 11, hãy thực hiện ký và xác thực chữ ký với lược đồ chữ ký số RSA? (4
services p13 ch13)
1. Xác thực tin nhắn: Một lược đồ chữ ký số an toàn, giống như một chữ ký
thông thường an toàn có thể cung cấp xác thực thông điệp.
2. Tính toàn vẹn của tin nhắn: Tính toàn vẹn của thông điệp được bảo toàn ngay
cả khi chúng ta ký toàn bộ thông điệp vì chúng ta không thể có được chữ ký
giống nhau nếu thông điệp bị thay đổi.
3. Tính chống chối từ:

Câu 14: Trình bày lược đồ chữ ký số RSA khi ký trên mã băng của thông
điệp? Tại sao phải ký trên mã băm của thông điệp thay vì ký trực tiệp trên
thông điệp? (p26 ch13)

You might also like