Danh sách câu hỏi của đề

Câu hỏi: CRY303c Mật mã ứng dụng – Bộ ôn tập thi lại số 1

47 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/47 câuCòn 7
AWeak collision resistance
BOne-way property
CPre-image resistance
DStrong collision resistance
Lời giải
Đáp án đúng: "Strong collision resistance". Kháng va chạm mạnh (strong collision resistance, hay collision resistance) đòi hỏi không thể, bằng tính toán khả thi, tìm được bất kỳ cặp x ≠ y nào có H(x) = H(y); kẻ tấn công tự chọn cả hai đầu vào, nên tấn công ngày sinh chỉ cần cỡ 2^(n/2) phép băm với đầu ra n bit. Câu dẫn trộn hai định nghĩa: cụm "for any given input" là cách mở đầu định nghĩa kháng va chạm yếu, còn cụm quyết định là "find any pair", tức được tự chọn cả cặp, nên câu hỏi đang mô tả kháng va chạm mạnh. "Weak collision resistance" (kháng tiền ảnh thứ hai) khác đúng ở chỗ đó: cho trước một x cố định, không tìm được y ≠ x cùng giá trị băm; đầu vào bị ghim sẵn, chỉ được chọn một phía, chứ không phải tìm một cặp bất kỳ. "One-way property" là tính một chiều: cho trước giá trị băm h, không tìm được x nào có H(x) = h. "Pre-image resistance" là tên khác của chính tính một chiều đó, xuất phát từ một giá trị băm chứ không phải đi tìm cặp trùng nhau.
Mở trang câu hỏi này →
A11
B15
C19
D23
Lời giải
Đáp án đúng: "23". Trong cây băm (hash tree, cây Merkle), mỗi nút cha giữ băm của hai nút con; để khoanh vùng khối lỗi, ta kiểm gốc rồi đi xuống, ở mỗi tầng kiểm cả hai con của nút sai. Cây 128 khối sâu log2(128) = 7 tầng. Với hai khối lỗi có tổ tiên chung gần nhất ở độ sâu s, số lần kiểm là 1 + 2(s + 1) + 4(6 − s) = 27 − 2s: đoạn chung có một nút sai mỗi tầng (2 lần kiểm), sau chỗ tách có hai nút sai (4 lần kiểm). Cần nói thẳng: con số phụ thuộc vị trí hai khối lỗi mà đề không cho. Tách ngay dưới gốc (s = 0) cần 27 lần, đúng quy ước 4 × log2(n) − 1 (16 khối ra 15); tổ tiên chung ở độ sâu 2 cho 1 + 2 × 3 + 4 × 4 = 23 lần. "23" được chốt vì gần quy ước nhất trong các phương án. "15" chỉ đúng khi hai khối lỗi là hai lá anh em (s = 6, 1 + 2 × 7 = 15). "19" ứng với tổ tiên chung ở độ sâu 4 (27 − 8), cũng chỉ là một vị trí riêng. "11" nhỏ hơn cả 15 lần tối thiểu để lần qua 7 tầng, không thể xảy ra.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Đáp án đúng: "True". Mã hoá đối xứng có thể cung cấp xác thực thông điệp ở mức nhất định: chỉ người nắm khoá bí mật chung mới tạo được bản mã mà khi giải ra cho bản rõ hợp lệ, nên khi bên nhận giải mã được nội dung có cấu trúc mong đợi (văn bản có nghĩa, trường kiểm tra, mã kiểm lỗi nằm bên trong) thì có cơ sở tin thông điệp đến từ bên kia và không bị sửa. Tuy vậy, cách này phụ thuộc vào việc bản rõ có độ dư (redundancy) để nhận biết, nên trong thực tế người ta thường dùng thêm MAC hoặc mã hoá có xác thực như AES-GCM. "False" sai vì nó phủ nhận hoàn toàn khả năng này.
Mở trang câu hỏi này →
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
Đá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.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Đáp án đúng: "True". Chuỗi băm (hash chain) là việc áp dụng một hàm băm mật mã h nhiều lần liên tiếp lên một chuỗi x ban đầu: h(x), h(h(x)), h(h(h(x))), tổng quát h^n(x) là băm x đúng n lần. Vì hàm băm một chiều, biết h^n(x) thì tính tiến lên h^(n+1)(x) rất dễ, nhưng không lùi được về h^(n−1)(x). Tính chất này được dùng trong sơ đồ mật khẩu dùng một lần của Lamport: máy chủ lưu h^n(x), người dùng lần lượt gửi h^(n−1)(x), h^(n−2)(x)…, máy chủ chỉ cần băm thêm một lần để kiểm, và kẻ nghe lén một mật khẩu cũ không suy ra được mật khẩu kế tiếp. Phát biểu mô tả đúng định nghĩa, nên "False" bị loại.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Đáp án đúng: "False". Hàm băm (hash function) nhận đầu vào có độ dài tuỳ ý nhưng luôn sinh đầu ra có độ dài cố định, không phụ thuộc kích thước đầu vào: SHA-256 cho 256 bit dù băm một chữ cái hay một tệp vài gigabyte, MD5 luôn cho 128 bit, SHA-1 luôn cho 160 bit. Chính độ dài cố định này làm giá trị băm dùng được như dấu vân tay ngắn gọn của dữ liệu để kiểm toàn vẹn, ký số hay xây chuỗi băm, và cũng là lý do va chạm chắc chắn tồn tại (vô số đầu vào dồn vào 2^n giá trị), nên mới cần kháng va chạm. Phát biểu nói đầu ra thay đổi theo kích thước đầu vào nên sai; chọn "True" là nhầm hàm băm với phép nén hay mã hoá, vốn cho đầu ra dài theo đầu vào.
Mở trang câu hỏi này →
A1
B2
C3
D4
E5
Lời giải
Đáp án đúng: "3". Một hệ mã xác thực thông điệp (MAC) gồm ba thuật toán: sinh khoá (key generation) chọn khoá bí mật K; sinh thẻ (tag generation hay MAC) tính t = MAC(K, M) từ khoá và thông điệp; và kiểm tra (verification) nhận K, M, t rồi trả về chấp nhận hoặc từ chối, thường bằng cách tính lại thẻ và so sánh. "1" chỉ tính hàm tạo thẻ, bỏ qua sinh khoá và kiểm tra. "2" quên thuật toán sinh khoá, vốn quyết định khoá phải ngẫu nhiên và đủ dài. "4" và "5" thêm các thuật toán không có trong định nghĩa, ví dụ mã hoá hay giải mã, vốn không thuộc MAC vì MAC không giữ bí mật nội dung.
Mở trang câu hỏi này →
A3
B5
C7
D9
Lời giải
Đáp án đúng: "3". Mã dịch vòng trên 26 chữ cái chỉ phụ thuộc k mod 26, và số lần dịch tối thiểu là phần dư đó hoặc 26 trừ đi phần dư, lấy số nhỏ hơn. Cần nói thẳng chỗ tranh cãi: với đúng con số in là 532 thì 26 × 20 = 520, 532 − 520 = 12, và 26 − 12 = 14 lớn hơn, nên số lần dịch tối thiểu là 12, không phương án nào khớp. Cùng câu hỏi gốc dùng khoá 523, và 523 − 520 = 3; bốn phương án cũng khớp đúng dãy 523, 525, 527, 529 mod 26, nên khoá ở đây nhiều khả năng bị in đảo hai chữ số cuối của 523, và đáp án được chốt là 3. "5" ứng với khoá 525 (525 − 520 = 5). "7" ứng với khoá 527 (527 − 520 = 7). "9" ứng với khoá 529 (529 − 520 = 9). Không cái nào ứng với 523.
Mở trang câu hỏi này →
A128
B16
C32
D64
Lời giải
Đáp án đúng: "128". Khoá 8 bit cho không gian 2^8 = 256 khoá. 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 trung bình phải thử một nửa số khoá, tức 2^(8−1) = 256 / 2 = 128 lần giải mã, còn trường hợp xấu nhất là đủ 256 lần. "64" là 2^6, chỉ bằng một phần tư không gian khoá. "32" là 2^5, tương ứng số lần thử trung bình của khoá 6 bit. "16" là 2^4, có thể do nhầm lấy căn bậc hai của 256 như tấn công ngày sinh, vốn chỉ áp dụng cho việc tìm va chạm băm chứ không cho việc tìm khoá. Công thức chung: khoá n bit cần trung bình 2^(n−1) lần thử.
Mở trang câu hỏi này →
A64/56/16
B64/64/16
C64/56/10
D64/64/10
Lời giải
Đáp án đúng: "64/56/16". DES (Data Encryption Standard) là mã khối cấu trúc Feistel, mã hoá khối 64 bit, khoá nhập vào dài 64 bit nhưng 8 bit dùng làm bit chẵn lẻ (parity) nên độ dài khoá hiệu dụng là 56 bit, và chạy 16 vòng, mỗi vòng dùng một khoá con 48 bit sinh từ khoá 56 bit. Khoá 56 bit tức 2^56 khả năng là lý do DES bị phá bằng vét cạn và được thay bằng Triple DES rồi AES. "64/64/16" nhầm độ dài khoá danh nghĩa 64 bit với khoá hiệu dụng. "64/56/10" sai số vòng; 10 vòng là của AES-128, không phải DES. "64/64/10" sai cả độ dài khoá hiệu dụng lẫn số vòng.
Mở trang câu hỏi này →
AC2 = E(K,C1); K
BC2 = E(K,XOR(C1,P2))
CC2 = XOR(P2,E(K,XOR(C1,P2)))
DC2 = E(K,XOR(C1,P2))
EC2 = XOR(P1,E(K,C1,P1))
Lời giải
Đáp án đúng: "C2 = XOR(P2,E(K,XOR(C1,P2)))". Trong OFB (Output Feedback), khối đầu ra O1 = E(K, IV) và C1 = XOR(P1, O1), nên O1 = XOR(C1, P1); khối tiếp theo O2 = E(K, O1) và C2 = XOR(P2, O2), tức công thức đúng là C2 = XOR(P2, E(K, XOR(C1, P1))). Nói thẳng: công thức này không có nguyên văn trong các phương án, và phương án được chọn chỉ đúng khi đọc P2 trong ngoặc trong là P1; nó giữ đúng khung của OFB, XOR P2 với một khối sinh bằng E, chỉ sai đối số bên trong. "C2 = E(K,C1); K" chỉ có E(K,C1), tức khối dòng khoá của CFB (ở CFB, C2 = XOR(P2, E(K, C1))), nhưng thiếu bước XOR với P2 và thêm một chữ K vô nghĩa. "C2 = E(K,XOR(C1,P2))" (in hai lần giống nhau) là công thức của CBC: mã hoá XOR của khối bản mã trước với bản rõ, kết quả mã hoá chính là bản mã, không có bước XOR dòng khoá. "C2 = XOR(P1,E(K,C1,P1))" có đủ C1 và P1, nguyên liệu dựng O1, nhưng lệch hai chỗ: bản rõ bên ngoài là P1 thay vì P2, và E nhận ba đối số nên sai cú pháp.
Mở trang câu hỏi này →
A6
B24
C720
D40320
Lời giải
Đáp án đúng: "24". Mã khối lý tưởng (ideal block cipher) với khối n bit cho phép mọi ánh xạ khả nghịch từ 2^n đầu vào sang 2^n đầu ra, mỗi ánh xạ ứng với một khoá, nên số khoá bằng số hoán vị (2^n)!. Với n = 2 có 2^2 = 4 giá trị đầu vào là 00, 01, 10, 11, và số hoán vị là 4! = 4 × 3 × 2 × 1 = 24. Phương án "6" là 3!, ứng với chỉ 3 phần tử, không phải lũy thừa của 2 nên không ứng với độ dài khối nào. "720" là 6!, cũng không ứng với khối n bit nào. "40320" là 8! = (2^3)!, tức số khoá khi n = 3 chứ không phải n = 2. Cách tính này cho thấy vì sao mã khối lý tưởng không dùng được: số khoá tăng theo giai thừa của 2^n, với khối 64 bit là (2^64)!.
Mở trang câu hỏi này →
AThe letter-pair/ digram AX appeared the most in the ciphertext, so they must be TH. In other words, A is mapped to T, and X is mapped to H.
BIf we replace the Caesar Cipher with a Monalphabetic Cipher, then A is harder to crack by an attacker (who does not know the key).
CThe ordering between the Caesar and the Permutation does not matter within the product cipher, so we can decrypt in any order.
DIf we another Caesar Cipher encryption in the product cipher (so that there are two Caesar Cipher operations and a Permutation Cipher operation), then A is harder to crack by an attacker (who does not know the key).
ELetter Z appeared the most in the ciphertext, so it must be mapped from the latter E.
Lời giải
Đáp án đúng gồm ba ý: "If we replace the Caesar Cipher with a Monalphabetic Cipher, then A is harder to crack by an attacker (who does not know the key).", "The ordering between the Caesar and the Permutation does not matter within the product cipher, so we can decrypt in any order." và "Letter Z appeared the most in the ciphertext, so it must be mapped from the latter E.". Caesar thay từng chữ theo một phép dịch, hoán vị độ dài 5 chỉ đổi chỗ chữ trong mỗi khối 5, nên hai phép giao hoán: dịch rồi đổi chỗ hay đổi chỗ rồi dịch đều cho cùng bản mã, giải theo thứ tự nào cũng được. Hoán vị không đổi số lần xuất hiện của từng chữ và Caesar chỉ đổi tên chữ, nên tần suất đơn chữ được giữ: trong một cuốn sách tiếng Anh dài, chữ nhiều nhất trong bản mã ứng với e. Thay Caesar (26 khoá) bằng thế đơn bảng (26! ≈ 4 × 10^26 khoá) làm hệ mã tích khó phá hơn hẳn. Ngược lại, "The letter-pair/ digram AX appeared the most in the ciphertext" sai vì hoán vị xé các cặp chữ liền nhau, tần suất cặp như th không còn giữ. Còn "If we another Caesar Cipher encryption in the product cipher" không tăng an toàn vì dịch k1 rồi k2 chỉ là một phép dịch (k1 + k2) mod 26, không gian khoá vẫn là 26.
Mở trang câu hỏi này →
AStream cipher
BBlock cipher
CAsymmetric cipher
DSymmetric cipher
Lời giải
Đáp án đúng: "Block cipher". Mã khối xử lý bản rõ theo từng khối có độ dài cố định, coi cả khối là một đơn vị và sinh ra khối bản mã cùng độ dài, ví dụ DES dùng khối 64 bit, AES dùng khối 128 bit; mỗi bit đầu ra phụ thuộc toàn bộ khối đầu vào và khoá. "Stream cipher" (mã dòng) thì mã từng bit hoặc từng byte một, thường bằng cách XOR với dòng khoá giả ngẫu nhiên như RC4, không gom thành khối. "Asymmetric cipher" là mật mã khoá công khai dùng cặp khoá riêng và công khai, như RSA; tiêu chí phân loại của nó là cách dùng khoá chứ không phải xử lý theo khối. "Symmetric cipher" là nhóm rộng gồm mọi hệ dùng chung một khoá, bao gồm cả mã khối lẫn mã dòng, nên không khớp định nghĩa cụ thể về khối trong câu.
Mở trang câu hỏi này →
A0
B16
C32
D64
Lời giải
Đáp án đúng: "0". Mã dòng (stream cipher) mã hoá từng bit hoặc từng byte bằng cách XOR bản rõ với dòng khoá (keystream) sinh ra đúng bằng độ dài cần dùng, nên 32 bit dữ liệu chỉ cần 32 bit dòng khoá và không phải đệm (padding) bit nào. Khối 64 bit trong đề thuộc về mã khối, không liên quan tới mã dòng. "32" là số bit phải đệm khi dùng mã khối 64 bit: 64 − 32 = 32, không phải trường hợp mã dòng mà câu hỏi đang hỏi. "64" coi như phải đệm thêm trọn một khối, cũng là tư duy của mã khối. "16" không ứng với phép tính nào: không phải hiệu 64 − 32, cũng không phải bội của khối.
Mở trang câu hỏi này →
ASymmetric cipher
BAsymmetric cipher
CBlock cipher operation modes
DClassical cipher
Lời giải
Đá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.
Mở trang câu hỏi này →
A0
B16
C32
D64
Lời giải
Đáp án đúng: "0". CFB (Cipher Feedback) biến mã khối thành mã dòng: mã khối 64 bit chỉ dùng để mã hoá thanh ghi phản hồi (ban đầu là IV) tạo dòng khoá, rồi lấy s bit đầu của đầu ra XOR với s bit bản rõ; bản mã vừa tạo lại được đẩy vào thanh ghi cho bước sau. Vì phép XOR áp lên đúng số bit dữ liệu hiện có, 32 bit dữ liệu chỉ cần XOR với 32 bit dòng khoá, phần dòng khoá thừa bị bỏ, bản mã cũng dài đúng 32 bit, nên không phải đệm bit nào. "32" là số bit phải đệm nếu dùng ECB hay CBC, vốn đòi dữ liệu là bội của khối 64 bit (64 − 32 = 32). "16" không ứng với khối 64 bit hay độ dài đoạn nào hợp lý. "64" là đệm thêm nguyên một khối, như quy ước PKCS khi dữ liệu đã chẵn khối ở chế độ cần đệm, không áp dụng cho CFB.
Mở trang câu hỏi này →
ACBC
BECB
COFB
DCFB
ECTR
Lời giải
Đáp án đúng gồm ba ý: "OFB", "CFB" và "CTR". Ba chế độ này biến mã khối thành mã dòng: mã khối chỉ dùng để sinh dòng khoá (OFB mã hoá lặp đầu ra trước, CFB mã hoá khối bản mã trước, CTR mã hoá giá trị bộ đếm), rồi bản rõ được XOR với dòng khoá. Khối cuối ngắn hơn kích thước khối chỉ cần XOR với đúng số bit tương ứng và bỏ phần dòng khoá thừa, nên không cần đệm. "CBC" cần đệm vì mỗi khối bản rõ được XOR với khối bản mã trước rồi đưa thẳng vào hàm mã hoá E, mà hàm này chỉ nhận đầu vào đủ một khối. "ECB" cũng cần đệm vì mã hoá trực tiếp từng khối bản rõ bằng E, khối cuối thiếu bit thì không mã được.
Mở trang câu hỏi này →
ACTR
BOFB
CCBC
DCFB
EECB
Lời giải
Đáp án đúng: "CTR". Chế độ đếm (counter mode) mã hoá giá trị bộ đếm T_i bằng E rồi XOR với bản rõ; hai bên phải dùng cùng giá trị bộ đếm cho từng khối, và bộ đếm thường khởi tạo từ nonce hay dấu thời gian. Khi Alice và Bob không đồng bộ thời gian và tần số đồng hồ khác nhau, bộ đếm của hai bên lệch nhau, dòng khoá sai và giải mã hỏng, nên CTR bị ảnh hưởng. "OFB" sinh dòng khoá chỉ từ IV bằng cách mã hoá lặp đầu ra trước, không dựa vào giá trị đếm hay đồng hồ bên ngoài. "CBC" xích mỗi khối với khối bản mã trước đã truyền kèm, bên nhận có đủ dữ liệu. "CFB" lấy khối bản mã trước làm đầu vào, cũng tự đồng bộ theo bản mã. "ECB" mã hoá độc lập từng khối, không có trạng thái chung nào cần đồng bộ.
Mở trang câu hỏi này →
ASubBytes
BShiftRows
CMixColumns
DAddRoundKey
Lời giải
Đáp án đúng: "AddRoundKey". Mỗi vòng AES gồm bốn phép biến đổi, và chỉ AddRoundKey dùng khoá: nó XOR trạng thái 128 bit với khoá vòng sinh ra từ lịch khoá. "SubBytes" thay từng byte qua một hộp S cố định, xây từ nghịch đảo trong GF(2^8) và một phép biến đổi affine, giống nhau cho mọi khoá. "ShiftRows" dịch vòng hàng thứ i của ma trận trạng thái sang trái i byte, chỉ là hoán vị vị trí cố định. "MixColumns" nhân mỗi cột với một ma trận hằng trên GF(2^8) để khuếch tán, cũng không liên quan tới khoá. Ba phép này tạo tính hỗn loạn và khuếch tán nhưng ai cũng tính được; chính AddRoundKey ở đầu, giữa các vòng và cuối cùng mới đưa bí mật vào, nên thiếu nó thì AES chỉ là phép biến đổi công khai.
Mở trang câu hỏi này →