Câu hỏi: CRY303c Mật mã ứng dụng – Bộ ôn tập cuối kỳ số 2
48 câu trắc nghiệm kèm lời giải của môn CRY303c - Mật mã ứng dụng, xếp đúng thứ tự trong đề. Trang 2/3 — câu 21–40.
Danh sách câu hỏi
40/48 câuCòn 8
AWeak collision resistance
BPre-image resistance
CStrong collision resistance
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Pre-image resistance". Kháng tiền ảnh (pre-image resistance, còn gọi là tính một chiều) đòi hỏi: cho một giá trị băm h bất kỳ, không thể tìm được một cách khả thi đầu vào x nào sao cho H(x) = h; với hàm băm đầu ra n bit, vét cạn cần cỡ 2^n lần thử. "Weak collision resistance" (kháng va chạm yếu, hay kháng tiền ảnh thứ hai) là tính chất khác: cho trước một đầu vào x cụ thể, khó tìm x' khác x có cùng giá trị băm; kẻ tấn công được biết cả đầu vào chứ không chỉ đầu ra. "Strong collision resistance" (kháng va chạm mạnh) đòi hỏi khó tìm bất kỳ cặp đầu vào khác nhau nào cho cùng giá trị băm; kẻ tấn công tự chọn cả hai đầu vào nên tấn công ngày sinh (birthday attack) chỉ cần cỡ 2^(n/2) lần. Câu hỏi chỉ nói "cho đầu ra, tìm lại đầu vào", đúng định nghĩa tiền ảnh.
A2^127 x
B2^128 x
C2^64 x
D1x
E2^63 x
F2^256 x
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "2^127 x". Câu hỏi viết "256-bit-long key" nhưng ý là giá trị băm dài n = 256 bit. Phá kháng va chạm mạnh (tìm một cặp bất kỳ trùng băm) nhờ nghịch lý ngày sinh cần cỡ 2^(n/2) = 2^128 phép băm, nên x = 2^128. Phá kháng va chạm yếu (cho trước một đầu vào, tìm đầu vào thứ hai cùng băm) không tận dụng được nghịch lý ngày sinh; theo quy ước của khoá học cho tấn công tiền ảnh thứ hai "trung bình", ta coi như vét cạn 2^256 giá trị băm và trúng sau một nửa, tức 2^(n−1) = 2^255 lần. Tỉ số là 2^255 / 2^128 = 2^127. Chỗ tranh cãi: "2^128 x" có cơ sở theo quy ước khác, vì nếu mỗi lần thử ngẫu nhiên trúng với xác suất 2^(−256) thì số lần thử kỳ vọng là 2^256 và tỉ số là 2^256 / 2^128 = 2^128; đáp án in kèm câu hỏi theo cách tính này, còn ở đây chọn theo quy ước khoá học và chữ "on average". "2^256 x" lấy số lần tuyệt đối của va chạm yếu làm tỉ số. "2^64 x" và "2^63 x" là tỉ số của hàm băm 128 bit (2^128 / 2^64 và 2^127 / 2^64), không phải 256 bit. "1x" coi hai tấn công tốn như nhau, trong khi va chạm yếu khó hơn rất nhiều.
AWeak collision resistance
BOne-way property
CPre-image resistance
DStrong collision resistance
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Weak collision resistance". Kháng va chạm yếu (weak collision resistance), còn gọi là kháng tiền ảnh thứ hai, nói rằng cho trước một đầu vào x, không tính được trong thời gian khả thi một đầu vào y khác x sao cho H(y) = H(x); đúng như câu hỏi mô tả, vì đầu vào được cho sẵn. "Strong collision resistance" (kháng va chạm mạnh) đòi hỏi không tìm được bất kỳ cặp x khác y nào có cùng giá trị băm, kẻ tấn công được tự chọn cả hai, nên mạnh hơn và chỉ cần cỡ 2^(n/2) phép thử theo nghịch lý ngày sinh. "One-way property" và "Pre-image resistance" là cùng một tính chất: cho trước giá trị băm h, không tìm được đầu vào nào băm ra h; ở đó thứ được cho là đầu ra, không phải một đầu vào.
AH
Bx (which is the original input of the hash chain)
CH^n
DH^{n+1}
EH^2
FH^{n-1}
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "H^{n-1}". Trong sơ đồ mật khẩu dùng một lần theo chuỗi băm của Lamport, người dùng chọn giá trị gốc x rồi băm liên tiếp n lần; máy chủ chỉ lưu H^n(x). Lần đăng nhập kế tiếp, người dùng gửi H^{n-1}(x); máy chủ băm thêm một lần và so: H(H^{n-1}(x)) = H^n(x) thì chấp nhận, rồi thay giá trị lưu bằng H^{n-1}(x) cho lần sau. An toàn vì hàm băm một chiều: biết H^n không lùi được về H^{n-1}. "H^n" đã nằm ở máy chủ và đã lộ, gửi lại chỉ là phát lại. "H^{n+1}" thì ai biết H^n cũng tự tính được. "H^2" và "H" là các mắt xích dùng gần cuối chuỗi, không phải lần kế tiếp. "x (which is the original input of the hash chain)" là gốc bí mật, lộ nó thì cả chuỗi bị tính ra.
ADigital signature is based on asymmetric/public-key cryptography
BDigital signature is typically smaller than the data size.
CDigital signature protects the confidentiality of the data
DDigital signature tends to require more computational resources than message authentication
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Digital signature protects the confidentiality of the data". Câu hỏi tìm phát biểu sai. Chữ ký số chỉ bảo đảm xác thực nguồn gốc, toàn vẹn và chống chối bỏ: người gửi ký giá trị băm của dữ liệu bằng khoá riêng, ai có khoá công khai cũng kiểm được, và dữ liệu vẫn gửi ở dạng rõ, nên chữ ký không che giấu nội dung; muốn bí mật phải mã hoá thêm. Các phát biểu sau đều đúng nên không được chọn: "Digital signature is based on asymmetric/public-key cryptography" đúng vì ký bằng khoá riêng, kiểm bằng khoá công khai (RSA, DSA, ECDSA). "Digital signature is typically smaller than the data size." đúng vì chỉ ký giá trị băm, chữ ký RSA 2048 bit dài 256 byte dù tệp lớn bao nhiêu. "Digital signature tends to require more computational resources than message authentication" đúng vì luỹ thừa modulo số lớn tốn hơn nhiều so với HMAC chỉ dùng hàm băm và khoá đối xứng.
ASymmetric cipher
BAsymmetric cipher
CBlock cipher operation modes
DClassical cipher
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Block cipher operation modes". Mã khối chỉ mã hoá được đúng một khối cố định (64 bit với DES, 128 bit với AES); các chế độ hoạt động của mã khối (ECB, CBC, CFB, OFB, CTR) quy định cách áp dụng mã khối lên nhiều khối liên tiếp, có liên kết giữa các khối hay dùng vector khởi tạo, để thông điệp dài được mã hoá an toàn, ví dụ CBC giúp hai khối bản rõ giống nhau không cho ra hai khối bản mã giống nhau. "Symmetric cipher" là cả lớp mã dùng chung khoá, không phải cơ chế xử lý thông điệp dài. "Asymmetric cipher" dùng cặp khoá và thường chỉ mã hoá dữ liệu ngắn như khoá phiên. "Classical cipher" là các mã cổ điển như Caesar, Vigenère, không giải quyết vấn đề an toàn khi ghép nhiều khối.
27In 3DES algorithm, the block size, the key size, and the number of rounds is ____, ____ and ____5 lựa chọn
A64/112 or 144/48
B64/112 or 132/16
C64/112 or 156/10
D64/112 or 168/48
ENone of the above
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "64/112 or 168/48". Triple DES (3DES) dùng DES ba lần theo dạng mã hoá, giải mã, mã hoá, nên kích thước khối vẫn là 64 bit như DES. Khoá có hai biến thể: hai khoá DES 56 bit với K1 dùng lại ở lần thứ ba, cho 2 × 56 = 112 bit, hoặc ba khoá độc lập cho 3 × 56 = 168 bit. Mỗi lần DES có 16 vòng nên tổng là 3 × 16 = 48 vòng. "64/112 or 144/48" sai vì 144 không phải bội số tạo từ các khoá 56 bit (144 ≠ 3 × 56). "64/112 or 132/16" sai cả độ dài khoá thứ hai lẫn số vòng, vì 16 chỉ là số vòng của một lần DES. "64/112 or 156/10" sai cả hai, và 10 là số vòng của AES-128 chứ không phải 3DES. "None of the above" sai vì đã có một phương án khớp đủ ba thông số.
A5
B24
C32
D120
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "120". Mật mã hoán vị với khoá độ dài 5 sắp lại vị trí năm ký tự trong mỗi khối theo một hoán vị như [3 2 1 4 5], trong đó mỗi số từ 1 đến 5 dùng đúng một lần. Số khoá là số hoán vị của 5 phần tử: 5! = 5 × 4 × 3 × 2 × 1 = 120, vì vị trí đầu có 5 cách chọn, vị trí thứ hai còn 4, rồi 3, 2 và 1. "5" chỉ là độ dài khoá, giống như chỉ đếm các phép dịch vòng chứ không phải mọi cách sắp xếp. "24" là 4! = 24, quên mất một vị trí. "32" là 2^5, cách đếm khoá nhị phân 5 bit, không áp dụng cho khoá là hoán vị. Với 120 khoá, kẻ tấn công vét cạn trong chớp mắt, nên hoán vị chỉ có ích khi kết hợp với phép thế trong mật mã tích.
AH
BE
CL
DO
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "E". Mã thay thế đơn bảng (monoalphabetic cipher) thay mỗi chữ của bản rõ bằng đúng một chữ cố định của bản mã, nên tần suất của từng chữ được giữ nguyên, chỉ bị đổi tên. Trong văn bản tiếng Anh, chữ e là chữ xuất hiện nhiều nhất (khoảng 12–13% số chữ), vì vậy chữ w xuất hiện nhiều nhất trong bản mã của cả một cuốn sách gần như chắc chắn là ảnh của e; đây là nền tảng của thám mã tần suất (frequency analysis). "H" là chữ khá phổ biến nhưng đứng sau e, t, a, o nên không phải ứng viên đầu tiên. "L" chỉ thuộc nhóm tần suất trung bình, thấp hơn e rất nhiều. "O" thuộc nhóm phổ biến cùng t và a nhưng vẫn kém e, nên chỉ là ứng viên thử tiếp khi giả thuyết e không khớp. Văn bản càng dài thì phân bố tần suất càng sát phân bố chuẩn, nên phép đoán w ứng với e càng đáng tin.
AC2 = XOR(E(C1),K)
BC2 = E(K,XOR(C1,P1))
CC2 = XOR(P2,E(K,XOR(C1,P2)))
DC2 = E(K,XOR(C1,P2))
EC2 = XOR(P2,E(K,XOR(C1,P1)))
FC2 = XOR(P1,E(K,XOR(C1,P1)))
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "C2 = XOR(P2,E(K,XOR(C1,P1)))". Ở chế độ OFB (Output Feedback), mã khối chỉ sinh dòng khoá: O1 = E(K, IV), O2 = E(K, O1)…, rồi Ci = Pi XOR Oi. Vì C1 = P1 XOR O1 nên O1 = XOR(C1,P1), suy ra O2 = E(K,XOR(C1,P1)) và C2 = XOR(P2, O2). "C2 = E(K,XOR(C1,P2))" là công thức CBC, nơi bản rõ đi qua hàm mã hoá. "C2 = XOR(P2,E(K,XOR(C1,P2)))" đưa P2 vào sinh dòng khoá, trái với OFB vốn sinh dòng khoá độc lập với bản rõ. "C2 = XOR(P1,E(K,XOR(C1,P1)))" XOR dòng khoá với P1 thay vì P2, nên không chứa khối bản rõ thứ hai. "C2 = E(K,XOR(C1,P1))" chỉ là O2, thiếu bước XOR với P2. "C2 = XOR(E(C1),K)" gọi hàm mã hoá không có khoá rồi XOR với khoá, không ứng với chế độ nào.
A
SubBytesB
ShiftRowsC
MixColumnsD
AddRoundKeyLời giải
Mở trang câu hỏi này →Đáp án đúng: "ShiftRows". Trong AES, trạng thái (state) là ma trận 4 × 4 byte; ShiftRows xoay vòng sang trái hàng 0, 1, 2, 3 lần lượt 0, 1, 2, 3 byte, tức chỉ đổi vị trí byte mà không đổi giá trị byte nào, nên đó là phép hoán vị (transposition) thuần, tạo khuếch tán giữa các cột. "SubBytes" thay từng byte bằng giá trị khác qua hộp S (S-box) dựa trên nghịch đảo nhân trong GF(2^8), là phép thay thế. "MixColumns" nhân mỗi cột với một ma trận cố định trên GF(2^8), làm thay đổi giá trị các byte chứ không chỉ đổi chỗ. "AddRoundKey" XOR trạng thái với khoá vòng, làm thay đổi giá trị byte theo khoá, cũng không phải hoán vị.
32The inverse of the AddRoundKey is AddRoundKey2 lựa chọn
ATrue
BFalse
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "True". Bước AddRoundKey của AES XOR từng bit của trạng thái 128 bit với khoá vòng tương ứng. XOR có tính chất tự nghịch đảo: (x ⊕ k) ⊕ k = x ⊕ (k ⊕ k) = x ⊕ 0 = x, nên muốn huỷ tác dụng của AddRoundKey chỉ cần XOR lại với đúng khoá vòng đó, tức là chính phép AddRoundKey. Đây là điểm khác với ba bước còn lại của vòng AES, vốn cần phép nghịch đảo riêng khi giải mã: InvSubBytes dùng hộp S nghịch đảo, InvShiftRows dịch hàng theo chiều ngược, InvMixColumns nhân với ma trận nghịch đảo trên trường GF(2^8). Khi giải mã, các khoá vòng chỉ được dùng theo thứ tự ngược lại. Vì vậy phát biểu đúng, và "False" bị loại.
A0
B1
C20
DDepends on the plaintext
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "20". Mã hoán vị (Permutation Cipher, một dạng mã chuyển vị) chia bản rõ thành từng khối 5 ký tự rồi sắp xếp lại vị trí các ký tự trong khối theo khoá [5 3 2 1 4]; nó chỉ đổi chỗ chứ không thay ký tự này bằng ký tự khác. Vì thế mỗi chữ E trong bản rõ vẫn là một chữ E trong bản mã, chỉ nằm ở vị trí khác, nên 20 chữ E vào thì 20 chữ E ra; đây cũng là lý do phân tích tần suất lộ ngay mã chuyển vị, vì phân bố chữ cái giống hệt ngôn ngữ gốc. Phương án "0" sai vì không có bước thay thế nào xoá chữ E. Phương án "1" sai vì hoán vị không gộp các chữ trùng lại. Phương án "Depends on the plaintext" sai vì số lần xuất hiện được bảo toàn với mọi bản rõ, không phụ thuộc nội dung.
34Feistel Cipher requires different encryption and decryption implementations in hardware and software.2 lựa chọn
ATrue
BFalse
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "False". Ưu điểm lớn của cấu trúc Feistel là mã hoá và giải mã dùng cùng một mạch. Mỗi vòng chia khối thành hai nửa L và R rồi tính L_i = R_(i−1), R_i = L_(i−1) ⊕ F(R_(i−1), K_i); phép XOR tự triệt tiêu nên giải mã chỉ cần chạy lại đúng các vòng đó với khoá con theo thứ tự ngược K_n, …, K_1, và hàm vòng F thậm chí không cần khả nghịch. Nhờ vậy DES chỉ cần một bản cài đặt phần cứng hoặc phần mềm cho cả hai chiều, khác nhau duy nhất ở thứ tự khoá con. Chọn "True" là nhầm Feistel với các mã không dùng Feistel như AES, vốn phải cài đặt riêng các phép nghịch đảo InvSubBytes, InvShiftRows, InvMixColumns cho chiều giải mã.
AStream cipher
BBlock cipher
CAsymmetric cipher
DSymmetric cipher
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Stream cipher". Mã dòng (stream cipher) là thuật toán mã đối xứng sinh ra dòng khoá (keystream) từ khoá bí mật rồi kết hợp từng bit hoặc từng byte của bản rõ với dòng khoá, thường bằng XOR, để cho ra bản mã cũng từng bit hoặc từng byte; ví dụ RC4, ChaCha20. "Block cipher" xử lý cả khối cố định một lúc, như 64 bit với DES hay 128 bit với AES, không phải từng bit. "Asymmetric cipher" dùng cặp khoá công khai và khoá riêng, không thuộc nhóm thuật toán đối xứng mà câu dẫn nói tới. "Symmetric cipher" là lớp rộng chứa cả mã dòng lẫn mã khối, nên không đặc trưng cho cách xử lý từng bit mà định nghĩa mô tả; chỗ trống cần đúng tên khái niệm hẹp.
36AES is not based on Feistel cipher.2 lựa chọn
ATrue
BFalse
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "True". AES (Rijndael) được xây dựng theo mạng thay thế hoán vị SPN (Substitution-Permutation Network): mỗi vòng xử lý toàn bộ trạng thái 128 bit qua SubBytes, ShiftRows, MixColumns và AddRoundKey, và giải mã dùng các phép nghịch đảo riêng như InvSubBytes, InvMixColumns. Cấu trúc Feistel thì khác hẳn: chia khối làm hai nửa trái phải, mỗi vòng chỉ biến đổi một nửa bằng hàm vòng F rồi XOR vào nửa kia và đổi chỗ, nhờ vậy giải mã chỉ cần chạy lại cùng mạch với khoá con theo thứ tự ngược mà F không cần khả nghịch; DES là ví dụ điển hình. Vì AES không chia đôi khối và không có bước đổi chỗ hai nửa, phát biểu AES không dựa trên Feistel là đúng, nên "False" bị loại.
37Vigenère cipher is used with a key "XO". What is the ciphertext corresponding to the plaintext, DRAGON4 lựa chọn
AAFXULB
BROODCK
CRFOUCB
DAOXDLK
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "AFXULB". Mã Vigenère cộng từng chữ cái bản rõ với chữ cái khoá lặp lại, theo modulo 26 với A = 0. Khoá XO cho các độ dịch 23, 14 luân phiên. Tính lại: D(3) + 23 = 26 mod 26 = 0 ra chữ A; R(17) + 14 = 31 mod 26 = 5 ra F; A(0) + 23 = 23 ra X; G(6) + 14 = 20 ra U; O(14) + 23 = 37 mod 26 = 11 ra L; N(13) + 14 = 27 mod 26 = 1 ra B, được AFXULB. "RFOUCB" là kết quả khi dịch mọi chữ 14 vị trí, tức dùng khoá chỉ có chữ O, nên đúng ở vị trí chẵn nhưng sai ở vị trí lẻ, ví dụ chữ đầu ra R thay vì chữ A. "AOXDLK" là khi dịch mọi chữ 23 vị trí, tức khoá chỉ có chữ X, nên đúng vị trí lẻ nhưng sai vị trí chẵn. "ROODCK" là khi dùng khoá đảo thứ tự thành OX, nên sai ở mọi vị trí.
AError occurs on C2 for ECB Mode.
BError occurs on P2 for CFB Mode.
CError occurs on C2 for CFB Mode.
DError occurs on C2 for CTR Mode.
EError occurs on P1 for CBC Mode.
FError occurs on C2 for OFB Mode
Lời giải
Mở trang câu hỏi này →Đáp án đúng gồm hai ý: "Error occurs on P2 for CFB Mode." và "Error occurs on P1 for CBC Mode.". Câu hỏi xét lỗi có làm hỏng C3, bản mã khối 3 mà bên nhận nhận được, nên chỉ chế độ nào tính C3 từ dữ liệu bị lỗi mới bị ảnh hưởng. Ở CFB, C2 = P2 ⊕ E(C1) và C3 = P3 ⊕ E(C2), nên P2 sai thì C2 sai, kéo C3 sai. Ở CBC, C1 = E(P1 ⊕ IV), C2 = E(P2 ⊕ C1), C3 = E(P3 ⊕ C2), nên P1 sai lan qua C1, C2 tới C3 và mọi khối sau. Các tình huống sau không chạm C3: "Error occurs on C2 for ECB Mode." vì mỗi khối ECB mã độc lập, lỗi C2 chỉ hỏng P2 khi giải mã. "Error occurs on C2 for CFB Mode." làm hỏng P2 và P3 lúc giải mã, nhưng C3 đã phát ra từ trước và truyền riêng nên vẫn nguyên. "Error occurs on C2 for CTR Mode." chỉ hỏng P2 vì dòng khoá sinh từ bộ đếm. "Error occurs on C2 for OFB Mode" chỉ hỏng các bit tương ứng của P2 vì dòng khoá OFB độc lập với bản mã.
39When the key is 4-bits long, how many decryptions do the brute-force attacker try on average?4 lựa chọn
A0
B8
C16
D32
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "8". Khoá dài 4 bit có 2^4 = 16 giá trị có thể. Kẻ tấn công vét cạn thử lần lượt từng khoá; khoá đúng có thể nằm ở bất kỳ vị trí nào với xác suất như nhau, nên số lần thử trung bình là khoảng một nửa không gian khoá: 16 / 2 = 8 (chính xác là (16 + 1) / 2 = 8.5, thường làm tròn theo quy ước 2^(n−1) = 2^3 = 8). "16" là số lần thử trong trường hợp xấu nhất, khi khoá đúng là khoá cuối cùng được thử. "32" = 2^5, ứng với khoá 5 bit hoặc gấp đôi không gian khoá, không có cơ sở. "0" sai vì kẻ tấn công không biết khoá thì phải thử ít nhất một lần.
403DES is an ideal block cipher.2 lựa chọn
ATrue
BFalse
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "False". Mã khối lý tưởng (ideal block cipher) với khối n bit cho phép chọn bất kỳ hoán vị nào trong (2^n)! hoán vị của 2^n giá trị đầu vào, nên khoá phải mô tả cả bảng ánh xạ, dài cỡ n × 2^n bit. Với khối 64 bit như 3DES, con số này là 64 × 2^64 bit, quá lớn để lưu hay dùng thực tế. 3DES chỉ có khoá 112 hoặc 168 bit, tức chọn được tối đa 2^168 ánh xạ trong số (2^64)! hoán vị khả dĩ, một phần cực nhỏ. Vì vậy 3DES, cũng như DES hay AES, là một xấp xỉ thực tế của mã khối lý tưởng theo kiểu Feistel đề xuất, dùng khoá ngắn để sinh một tập con hoán vị trông ngẫu nhiên, chứ không phải mã khối lý tưởng. Phát biểu sai, nên "True" bị loại.