Câu hỏi: CRY303c - Phần 3: Mã khối hiện đại và chế độ hoạt động
36 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 theo thứ tự nhập vào ngân hàng.
Danh sách câu hỏi
20/36 câuCòn 16
AC2 = XOR(P2,E(K,XOR(C1,P2)))
BC2 = XOR(P2,E(K,XOR(C1,P1)))
CC2 = XOR(P1,E(K,XOR(C1,P1)))
DC2 = E(K,XOR(C1,P1))
EC2 = XOR(E(C1),K)
FC2 = E(K,XOR(C1,P2))
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "C2 = E(K,XOR(C1,P2))". Ở chế độ CBC (Cipher Block Chaining, mã khối móc xích), trước khi mã hoá một khối bản rõ người ta XOR nó với khối bản mã ngay trước, rồi đưa kết quả vào hàm mã hoá với khoá K; vì vậy khối thứ hai là E(K, P2 XOR C1), còn khối đầu dùng IV thay cho C1. Công thức "C2 = XOR(P2,E(K,XOR(C1,P2)))" XOR thêm P2 lần nữa ở đầu ra, không phải cấu trúc CBC. Công thức "C2 = XOR(P2,E(K,XOR(C1,P1)))" chính là OFB: khối đầu ra thứ nhất bằng C1 XOR P1, mã hoá nó ra dòng khoá thứ hai rồi XOR với P2. Công thức "C2 = XOR(P1,E(K,XOR(C1,P1)))" không hề có P2 nên không thể là bản mã của khối thứ hai. Công thức "C2 = E(K,XOR(C1,P1))" cũng thiếu P2, đây chỉ là dòng khoá thứ hai của OFB. Còn "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ế độ chuẩn nào.
AMeet-in-the-middle attack
BMan-in-the-middle attack
CChosen-ciphertext attack
DChosen-plaintext attack
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Meet-in-the-middle attack". Tấn công gặp nhau ở giữa áp dụng cho mọi phép mã hoá nhiều lần nối tiếp như Double DES: kẻ tấn công có một cặp bản rõ và bản mã, mã hoá bản rõ với mọi khoá K1 và lưu bảng, rồi giải mã bản mã với mọi khoá K2 và tìm giá trị trùng ở giữa; công sức chỉ cỡ 2 × 2^56 = 2^57 thay vì 2^112, và nó không dựa vào tính chất riêng nào của thuật toán, chỉ dựa vào việc hai lần mã hoá chạy tuần tự. "Man-in-the-middle attack" (kẻ đứng giữa) là tấn công vào giao thức truyền thông hay trao đổi khoá như Diffie-Hellman, chen vào giữa hai bên, không phải tấn công lên cấu trúc mã khối. "Chosen-ciphertext attack" và "Chosen-plaintext attack" là các mô hình năng lực của kẻ tấn công (được chọn bản mã để giải, hay chọn bản rõ để mã hoá), không phải một kỹ thuật cụ thể khai thác việc mã hoá nối tiếp.
3AES 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.
A0
B16
C32
D64
Lời giải
Mở trang câu hỏi này →Đá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.
A128/128/10
B128/128/12
C128/128/14
D128/256/10
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "128/128/10". AES (chuẩn Rijndael) luôn có kích thước khối cố định 128 bit; độ dài khoá có ba lựa chọn 128, 192 hoặc 256 bit, và số vòng gắn chặt với độ dài khoá: khoá 128 bit chạy 10 vòng, 192 bit chạy 12 vòng, 256 bit chạy 14 vòng. Mỗi vòng gồm SubBytes, ShiftRows, MixColumns và AddRoundKey, riêng vòng cuối bỏ MixColumns. Bộ ba khối 128, khoá 128, 10 vòng chính là cấu hình AES-128 hợp lệ. "128/128/12" ghép khoá 128 bit với 12 vòng, trong khi 12 vòng dành cho khoá 192 bit. "128/128/14" ghép khoá 128 bit với 14 vòng của AES-256. "128/256/10" dùng khoá 256 bit nhưng chỉ 10 vòng, thiếu 4 vòng so với chuẩn 14 vòng cho khoá 256 bit.
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.
A0
B16
C32
D64
Lời giải
Mở trang câu hỏi này →Đá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.
ATrue
BFalse
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "False". Mã dòng (stream cipher) là thuật toán mã hoá đối xứng: hai bên dùng chung một khoá bí mật để sinh dòng khoá giả ngẫu nhiên, rồi XOR từng bit hoặc từng byte của bản rõ với dòng khoá để ra bản mã, như RC4 hay ChaCha20. Định nghĩa gốc viết là a symmetric encryption algorithm, còn câu ở đây dính mất dấu cách thành asymmetric (bất đối xứng), và chính chữ này làm mệnh đề sai, vì mã bất đối xứng dùng cặp khoá công khai và riêng, như RSA, chứ không sinh dòng khoá từng bit. Cũng phải nói thẳng chỗ dễ tranh cãi: nếu đọc như định nghĩa gốc là a symmetric thì phần còn lại của mệnh đề, sinh bản mã từng bit hay từng byte, hoàn toàn đúng và người chọn "True" có lý do. Tuy vậy với đúng chữ được in, mệnh đề gọi mã dòng là bất đối xứng, nên chọn "False".
9Which of the following operation modes do not require padding (if the data does not fill the block)?5 lựa chọn
ACBC
BECB
COFB
DCFB
ECTR
Lời giải
Mở trang câu hỏi này →Đá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.
AMultiple encryption
BOTP
CSymmetric encryption
DAsymmetric encryption
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Multiple encryption". Mã hoá nhiều lần (multiple encryption) là kỹ thuật chạy cùng một thuật toán mã hoá nhiều lượt, thường với các khoá khác nhau, để tăng độ dài khoá hiệu dụng. Ví dụ tiêu biểu là Triple DES chạy DES ba lần theo dạng mã hoá, giải mã, mã hoá với hai hoặc ba khoá; mã hoá hai lần (Double DES) không tăng an toàn tương xứng vì bị tấn công gặp nhau ở giữa (meet-in-the-middle). "OTP" (one-time pad) là mã dùng khoá ngẫu nhiên dài bằng thông điệp, chỉ dùng một lần, không phải chạy một thuật toán nhiều lượt. "Symmetric encryption" là lớp mã dùng chung một khoá cho hai bên, nói về cách dùng khoá chứ không về số lần mã hoá. "Asymmetric encryption" dùng cặp khoá công khai và khoá riêng, cũng không mô tả việc lặp thuật toán.
11In DES algorithm, the block size, the key size, and the number of rounds is ____, ____ and ____4 lựa chọn
A64/56/16
B64/64/16
C64/56/10
D64/64/10
Lời giải
Mở trang câu hỏi này →Đá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.
ATrue
BFalse
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "True". AES không dùng cấu trúc Feistel nên giải mã không thể chạy lại đúng mạch mã hoá với khoá con đảo thứ tự như DES. Mỗi vòng mã hoá gồm SubBytes, ShiftRows, MixColumns, AddRoundKey; giải mã phải dùng các phép nghịch đảo riêng: InvSubBytes với hộp S nghịch đảo, InvShiftRows dịch vòng các hàng sang phải thay vì sang trái, InvMixColumns nhân với ma trận nghịch đảo trên GF(2^8) có hệ số 0E, 0B, 0D, 09 thay cho 02, 03, 01, 01, và khoá vòng dùng theo thứ tự ngược. Vì thế phần cứng hay phần mềm AES cần cài đặt riêng cho chiều giải mã, và InvMixColumns còn tốn kém hơn MixColumns. Chọn "False" là nhầm AES với mã Feistel; ngay cả dạng equivalent inverse cipher có cùng trình tự vòng thì các phép biến đổi bên trong vẫn khác.
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.
14In 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ố.
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ị.
16The 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.
17Feistel 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.
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ã.
203DES 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.