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. Trang 2/2 — câu 21–36.
Danh sách câu hỏi
36/36 câuHết danh sách
21DES 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 khoá chọn bất kỳ phép hoán vị nào trong (2^n)! hoán vị của 2^n đầu vào; với n = 64, chỉ riêng việc ghi bảng ánh xạ đã cần khoá dài 64 × 2^64 bit, quá lớn để dùng. DES vì vậy chỉ là một xấp xỉ thực tế theo hướng mật mã tích của Feistel: khoá 56 bit chỉ chọn được 2^56 trong số (2^64)! hoán vị, xây từ 16 vòng thế và hoán vị. Không gian khoá 2^56 ấy còn nhỏ đến mức đã bị vét cạn bằng máy chuyên dụng, và DES được thay bằng Triple DES rồi AES. Do đó phát biểu sai, chọn "True" là nhầm mã khối thực tế dùng được với mã khối lý tưởng chỉ tồn tại trên lý thuyết.
22In ____ each plaintext digit is encrypted one at a time with the corresponding digit of the keystream.4 lựa chọn
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". Trong mã dòng (stream cipher), từng chữ số của bản rõ (bit hay byte) được mã hoá lần lượt bằng cách kết hợp với chữ số tương ứng của dòng khoá (keystream), thường là c = p XOR k cho mỗi bit; dòng khoá sinh từ khoá bí mật bằng bộ sinh giả ngẫu nhiên, mô phỏng one-time pad. Vì thế dòng khoá không bao giờ được dùng lại với hai bản rõ khác nhau. "Block cipher" mã hoá cả khối nhiều bit cùng lúc qua nhiều vòng, không theo từng chữ số với dòng khoá. "Asymmetric cipher" dựa trên cặp khoá công khai và khoá riêng, thao tác trên số lớn chứ không phải XOR từng chữ số. "Symmetric cipher" là lớp rộng gồm cả mã khối, không mô tả riêng cơ chế từng chữ số với dòng khoá.
AStream cipher
BBlock cipher
CAsymmetric cipher
DSymmetric cipher
Lời giải
Mở trang câu hỏi này →Đá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.
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
Mở trang câu hỏi này →Đá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.
A6
B24
C720
D40320
Lời giải
Mở trang câu hỏi này →Đá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)!.
ACTR
BOFB
CCBC
DCFB
EECB
Lời giải
Mở trang câu hỏi này →Đá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ộ.
A
SubBytesB
ShiftRowsC
MixColumnsD
AddRoundKeyLời giải
Mở trang câu hỏi này →Đá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.
28____ a non-linear substitution step where each byte is replaced with another according to a lookup table.4 lựa chọn
A
SubBytesB
ShiftRowsC
MixColumnsD
AddRoundKeyLời giải
Mở trang câu hỏi này →Đáp án đúng: "SubBytes". SubBytes là bước thay thế phi tuyến duy nhất của AES: mỗi byte trong trạng thái được thay bằng một byte khác tra từ bảng 16 × 16 gọi là hộp S (S-box), dùng 4 bit cao làm hàng và 4 bit thấp làm cột; hộp S xây từ nghịch đảo nhân trong GF(2^8) rồi qua phép biến đổi affine, nên chống được phân tích tuyến tính và vi sai. "ShiftRows" chỉ dịch vòng các hàng của ma trận trạng thái, là hoán vị vị trí chứ không thay giá trị byte. "MixColumns" nhân từng cột với một ma trận hằng trên GF(2^8), là phép tuyến tính dùng để khuếch tán chứ không tra bảng. "AddRoundKey" XOR trạng thái với khoá vòng, cũng là phép tuyến tính và không dùng bảng tra.
AStream cipher
BBlock cipher
CAsymmetric cipher
DSymmetric cipher
Lời giải
Mở trang câu hỏi này →Đáp án đúng gồm hai ý: "Stream cipher" và "Symmetric cipher". Câu dẫn mô tả thuật toán mã đối xứng tạo bản mã từng bit hoặc từng byte từ dòng bản rõ: đó chính là định nghĩa mã dòng (stream cipher), sinh dòng khoá từ khoá bí mật rồi XOR với bản rõ. Phải nói rõ: chỗ trống chỉ khớp trọn với "Stream cipher"; "Symmetric cipher" được tính vì câu hỏi yêu cầu chọn hai và câu dẫn tự viết "is a symmetric encryption algorithm", tức mã dòng thuộc lớp mã đối xứng dùng chung một khoá cho mã hoá và giải mã. "Block cipher" xử lý cả khối cố định, 64 bit với DES hay 128 bit với AES, không theo từng bit. "Asymmetric cipher" dùng cặp khoá công khai và khoá riêng, mâu thuẫn với chữ symmetric trong câu dẫn.
A0
B16
C32
D64
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "32". Mã khối (block cipher) chỉ mã hoá được trọn từng khối có kích thước cố định, ở đây 64 bit; dữ liệu 32 bit chưa đủ một khối nên phải đệm (padding) thêm 64 − 32 = 32 bit, ví dụ theo PKCS#7 hay đệm bit 1 rồi các bit 0, để có đúng một khối 64 bit rồi mới đưa vào hàm mã hoá. "0" là đáp án cho mã dòng, vốn XOR từng bit với dòng khoá dài bằng dữ liệu nên không cần đệm, không phải trường hợp mã khối. "16" không ứng với phép tính nào, chỉ đưa dữ liệu lên 48 bit, vẫn thiếu một khối. "64" đệm thêm trọn một khối, khiến tổng thành 96 bit, không phải bội của 64.
31___ mode has similar characteristics to OFB, but also allows a random-access property during decryption.5 lựa chọn
ACTR
BOFB
CCBC
DCFB
EECB
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "CTR". Ở chế độ CTR (Counter), mã khối mã hoá các giá trị bộ đếm nonce‖i để sinh dòng khoá, rồi XOR với bản rõ; giống OFB ở chỗ mã khối chỉ sinh dòng khoá, lỗi một bit bản mã chỉ hỏng đúng bit đó và có thể chuẩn bị dòng khoá trước. Khác biệt là khối thứ i chỉ cần E(K, nonce‖i) nên giải mã được bất kỳ khối nào ngay mà không cần các khối trước, tức truy cập ngẫu nhiên, và chạy song song được. "OFB" chính là chế độ đang được so sánh, mỗi khối dòng khoá phụ thuộc khối trước nên phải tính tuần tự. "CBC" XOR bản rõ với bản mã trước rồi mới mã hoá, không phải kiểu dòng khoá như OFB. "CFB" đưa bản mã trước vào sinh dòng khoá, nên giống mã dòng hơn nhưng vẫn móc xích. "ECB" mã từng khối độc lập, truy cập ngẫu nhiên được nhưng không hề giống OFB và lộ mẫu lặp.
ABlock size
BKey size
CNumber of rounds
DSubkey generation
ERound function
FAll the other choices
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "All the other choices". Khi thiết kế một mã Feistel phải chọn các tham số sau, mỗi cái đánh đổi giữa an toàn và tốc độ. "Block size": khối lớn hơn an toàn hơn nhưng chậm hơn, ví dụ DES dùng 64 bit. "Key size": khoá dài hơn chống vét cạn tốt hơn, DES dùng 56 bit, ngày nay cần ít nhất 128 bit. "Number of rounds": một vòng Feistel không đủ an toàn, nhiều vòng tăng độ hỗn loạn, DES dùng 16 vòng. "Subkey generation": thuật toán sinh khoá con cho từng vòng càng phức tạp thì phân tích càng khó. "Round function": hàm vòng F càng phi tuyến và phức tạp thì càng chống được phân tích vi sai và tuyến tính. Ngoài ra còn hai cân nhắc là mã hoá giải mã nhanh trên phần mềm và dễ phân tích. Cả năm thứ đều là tham số thiết kế, nên chọn phương án gộp.
A
SubBytesB
ShiftRowsC
MixColumnsD
AddRoundKeyLời giải
Mở trang câu hỏi này →Đáp án đúng: "MixColumns". Mỗi vòng thông thường của AES gồm bốn bước: SubBytes thế từng byte qua hộp S, ShiftRows dịch vòng các hàng của ma trận trạng thái, MixColumns trộn từng cột bằng phép nhân ma trận trên GF(2^8), và AddRoundKey XOR trạng thái với khoá vòng. Vòng cuối cùng (vòng 10 với AES-128) bỏ MixColumns, vì ở vị trí cuối bước này không tăng an toàn mà chỉ thêm chi phí, và bỏ nó giúp mạch giải mã có cấu trúc đối xứng với mạch mã hoá. Câu hỏi tìm bước không có trong vòng cuối, nên các bước có mặt không được chọn: "SubBytes" vẫn có để giữ tính phi tuyến (confusion); "ShiftRows" vẫn có để khuếch tán byte giữa các cột; "AddRoundKey" vẫn có và còn bắt buộc, vì không có khoá vòng cuối thì kẻ tấn công tự đảo ngược được các bước không khoá phía trước.
AStream cipher
BBlock cipher
CAsymmetric cipher
DSymmetric cipher
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Block cipher". Cấu trúc Feistel chia khối đầu vào thành hai nửa trái phải, mỗi vòng thay nửa trái bằng nửa phải và nửa phải bằng XOR của nửa trái với F(nửa phải, khoá con); cấu trúc này dùng để xây mã khối, tiêu biểu là DES với khối 64 bit và 16 vòng. "Stream cipher" sinh dòng khoá rồi XOR từng bit hay byte, không chia khối thành hai nửa qua nhiều vòng. "Asymmetric cipher" như RSA dựa trên bài toán số học với cặp khoá, không dùng mạng Feistel. "Symmetric cipher" đúng là lớp chứa mã khối nhưng quá rộng, gồm cả mã dòng không dùng Feistel, nên chỗ trống cần đúng loại mã khối.
ATrue
BFalse
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "True". Trong mã Feistel, mỗi vòng tính L_i = R_(i−1) và R_i = XOR(L_(i−1), F(R_(i−1), K_i)). Để đảo ngược, từ L_i và R_i ta có ngay R_(i−1) = L_i, rồi L_(i−1) = XOR(R_i, F(L_i, K_i)); ở cả hai chiều hàm F chỉ được tính xuôi trên một nửa đã biết, và XOR với cùng một giá trị hai lần thì triệt tiêu, nên F không cần khả nghịch. Vì vậy giải mã dùng đúng cấu trúc mã hoá với khoá con theo thứ tự ngược lại, và người thiết kế được tự do chọn F phi tuyến phức tạp như hàm F của DES dùng các hộp S nén 6 bit thành 4 bit. "False" sai vì tính khả nghịch của cả vòng đến từ cấu trúc XOR và hoán đổi hai nửa, không đến từ F.
36What is CBC stand for?4 lựa chọn
ACipher block chaining
BCyclic Binary Code
CCode of Backchannel Conduct
DComplement Block Coding
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Cipher block chaining". CBC là viết tắt của Cipher Block Chaining (chế độ mã khối móc xích), một chế độ hoạt động của mã khối: mỗi khối bản rõ được XOR với khối bản mã ngay trước rồi mới mã hoá, Ci = E(K, Pi XOR C(i−1)), còn khối đầu dùng vectơ khởi tạo IV. Nhờ móc xích, hai khối bản rõ giống nhau vẫn cho bản mã khác nhau, khắc phục điểm yếu lộ mẫu của ECB; đổi lại việc mã hoá phải tuần tự. "Cyclic Binary Code" là tên một loại mã nhị phân dùng trong mã sửa lỗi hay mã hoá vị trí, không phải chế độ mật mã. "Code of Backchannel Conduct" là cụm từ không có nghĩa trong mật mã học. "Complement Block Coding" cũng không phải tên chế độ mã khối nào.