Câu hỏi: CRY303c Mật mã ứng dụng – Bộ ôn tập cuối kỳ số 1
50 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/50 câuCòn 10
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.
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.
ATrue
BFalse
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "True". Hàm băm (hash function) nhận đầu vào có độ dài tuỳ ý và luôn trả về giá trị băm (digest) có độ dài cố định; ví dụ SHA-256 cho ra đúng 256 bit dù đầu vào là một byte hay một tệp vài gigabyte, MD5 luôn cho 128 bit, SHA-1 luôn cho 160 bit. Tính chất này giúp 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 hay ký số. Cũng vì nén vô hạn đầu vào về hữu hạn đầu ra nên va chạm luôn tồn tại, và an toàn của hàm băm nằm ở chỗ khó tìm va chạm chứ không phải không có. "False" sai vì cả hai vế của phát biểu đúng là định nghĩa cơ bản của hàm băm.
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.
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.
A42.701
B4.971
C21.350
D10.675
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "10.675". Khoá 64 bit có 2^64 ≈ 1.845 × 10^19 giá trị (dấu chấm là dấu thập phân như trong phương án); vét cạn trung bình gặp đúng khoá sau một nửa không gian, tức 2^63 ≈ 9.223 × 10^18 lần giải mã. Với tốc độ 10^13 lần mỗi giây, thời gian là 9.223 × 10^18 / 10^13 ≈ 922 337 giây; chia cho 86 400 giây mỗi ngày được khoảng 10.675 ngày. "21.350" là thời gian thử hết toàn bộ 2^64 khoá: 1.845 × 10^19 / 10^13 / 86 400 ≈ 21.350 ngày, đó là trường hợp xấu nhất chứ không phải trung bình. "42.701" gấp đôi tiếp, ứng với 2^65 lần thử, vượt cả số khoá có thể có. "4.971" ngày ≈ 429 494 giây, tức khoảng 4.295 × 10^18 lần thử, không ứng với 2^63 hay 2^64 nên không có cơ sở.
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.
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: "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.
ATrue
BFalse
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "False". Mật mã khoá công khai bỏ được nhu cầu chia sẻ khoá bí mật trước, nhưng phân phối khoá công khai vẫn là bài toán khó: khoá công khai không cần giữ bí mật mà cần xác thực, tức người dùng phải chắc khoá mình nhận đúng là của người kia. Nếu không, kẻ tấn công người đứng giữa (man-in-the-middle) có thể đưa khoá của chính mình thay vào rồi đọc hoặc sửa thư. Vì vậy cần chứng chỉ khoá công khai (public-key certificate) do cơ quan chứng thực (CA) ký, cả hạ tầng khoá công khai (PKI) cùng việc thu hồi chứng chỉ và quản lý vòng đời khoá. "True" sai vì nó bỏ qua toàn bộ thách thức xác thực và quản lý khoá đó.
Aprimitive root
Bpublic exponent
Cprivate exponent
Dmodulus
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "primitive root". Với số nguyên tố p, một số g là căn nguyên thuỷ (primitive root) modulo p nếu các luỹ thừa g^1, g^2, …, g^(p−1) mod p đi qua đủ mọi giá trị 1, 2, …, p − 1. Ví dụ p = 7, g = 3, tính theo từng luỹ thừa: 3^1 = 3, 3^2 = 9 mod 7 = 2, 3^3 = 2 × 3 = 6, 3^4 = 6 × 3 = 18 mod 7 = 4, 3^5 = 4 × 3 = 12 mod 7 = 5, 3^6 = 5 × 3 = 15 mod 7 = 1, ra đủ 3, 2, 6, 4, 5, 1. Diffie-Hellman và ElGamal chọn cơ số là căn nguyên thuỷ để luỹ thừa của nó phủ đủ p − 1 giá trị, khoá công khai không bị kẹt trong một nhóm con nhỏ dễ vét cạn. "public exponent" là số mũ công khai e trong RSA, chỉ là một tham số của khoá, không có tính chất sinh mọi phần tử. "private exponent" là số mũ bí mật d trong RSA, thoả e·d ≡ 1 theo modulo φ(n). "modulus" là chính số chia p hay n, không phải phần tử có luỹ thừa sinh nhóm.
A1
B512
C1024
D2048
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "1". Khoá 10 bit có 2^10 = 1024 khoá, kẻ tấn công vét cạn trung bình thử 2^9 = 512 lần và nhiều nhất 1024 lần. Chỗ dễ nhầm là phần trong ngoặc của câu hỏi: trường hợp xấu nhất được xét từ góc nhìn của Alice và Bob, những người cần bảo vệ khoá, và nó ứng với lúc kẻ tấn công gặp may. Với Alice và Bob, tình huống tệ nhất là khoá bị tìm ra sớm nhất có thể, tức kẻ tấn công thử trúng ngay ở lần giải mã đầu tiên, nên con số là 1. Nếu đọc xấu nhất theo phía kẻ tấn công thì sẽ ra "1024", tức khoá đúng nằm cuối danh sách, nhưng đó lại là trường hợp tốt nhất với Alice và Bob, ngược với điều câu hỏi nói rõ. "512" là số lần thử trung bình 2^(10−1), không phải trường hợp biên. "2048" bằng 2^11, vượt cả không gian khoá. Bài học: an toàn không thể dựa vào việc kẻ tấn công kém may; khoá phải đủ dài để cả số lần thử trung bình cũng bất khả thi.
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".
ACiphertext c
BKey k
CThe XOR-based encryption algorithm
DPlaintext b
Lời giải
Mở trang câu hỏi này →Đáp án đúng gồm hai ý: "Ciphertext c" và "The XOR-based encryption algorithm". Nguyên lý Kerckhoffs nói hệ mật phải an toàn ngay cả khi mọi thứ về hệ, trừ khoá, đều công khai; người thiết kế vì vậy giả định kẻ tấn công biết thuật toán, ở đây là phép XOR từng bit c = p ⊕ k (ví dụ 010 ⊕ 110 = 100). Đồng thời mô hình đe doạ chuẩn coi bản mã đi trên kênh không an toàn nên kẻ nghe lén thấy được c; đó chính là lý do phải mã hoá. "Key k" là thứ duy nhất phải giữ bí mật, vì có k thì kẻ tấn công tính ngay p = c ⊕ k, nên giả định kẻ tấn công biết khoá sẽ làm hệ mất hết ý nghĩa. "Plaintext b" là bản rõ, đích mà kẻ tấn công muốn tìm; nếu đã biết sẵn thì không cần tấn công, nên người thiết kế không mặc định kẻ tấn công nắm nó (trừ khi xét riêng mô hình tấn công biết bản rõ).
AShannon Maxim
BSecurity by Obscurity
CAttacker knows the system
DOpen design
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Security by Obscurity". Nguyên lý Kerckhoffs nói hệ mật phải an toàn ngay cả khi kẻ tấn công biết mọi thứ về hệ thống trừ khoá; an toàn chỉ được dựa vào bí mật của khoá. Bảo mật nhờ che giấu (security by obscurity) làm ngược lại: dựa vào việc giữ kín thuật toán hay thiết kế, nên khi thiết kế bị lộ (qua dịch ngược, rò rỉ) thì mất an toàn; vì thế nó ít giống nguyên lý này nhất. "Shannon Maxim" là cách phát biểu lại của Claude Shannon, "kẻ địch biết hệ thống", tương đương Kerckhoffs. "Attacker knows the system" chính là nội dung của câu châm ngôn đó. "Open design" là nguyên lý thiết kế an toàn của Saltzer và Schroeder: thiết kế không nên là bí mật, cùng tinh thần với Kerckhoffs.
ATrue
BFalse
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "True". Mã dùng một lần (one-time pad) dùng một khoá ngẫu nhiên thật, dài ít nhất bằng thông điệp, XOR với bản rõ để mã hoá; người nhận giữ đúng bản khoá ấy và XOR lại để giải mã. Khoá chỉ được dùng một lần rồi huỷ. Shannon chứng minh hệ này đạt bí mật hoàn hảo: với mỗi bản mã, mọi bản rõ cùng độ dài đều có khả năng như nhau, nên kẻ tấn công không học được gì kể cả có sức tính vô hạn. Điều kiện bắt buộc là khoá ngẫu nhiên thật và không bao giờ dùng lại; dùng lại khoá thì XOR hai bản mã sẽ khử khoá và lộ XOR hai bản rõ. Phát biểu mô tả đúng khoá ngẫu nhiên, riêng tư, dùng một lần và người nhận giải mã bằng bản khoá khớp, nên "False" bị loại.
APre-image resistance
BSecond pre-image resistance
CCollision resistance
DAll the other choices
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "All the other choices". Hàm băm mật mã nhận đầu vào độ dài tuỳ ý và cho đầu ra độ dài cố định, và để dùng được trong bảo mật nó phải có cả ba tính chất an toàn cùng lúc. "Pre-image resistance" (kháng tiền ảnh, tính một chiều): cho giá trị băm h, không tìm được x có H(x) = h, nhờ đó băm mật khẩu hay chuỗi băm S/Key mới an toàn. "Second pre-image resistance" (kháng tiền ảnh thứ hai, kháng va chạm yếu): cho trước x, không tìm được y ≠ x có H(y) = H(x), giúp kẻ gian không thay được tài liệu đã ký. "Collision resistance" (kháng va chạm mạnh): không tìm được cặp x ≠ y bất kỳ cùng giá trị băm, chống tấn công ngày sinh. Mỗi tính chất đứng riêng chỉ là một mảnh của định nghĩa; thiếu bất kỳ tính chất nào, chẳng hạn MD5 đã mất kháng va chạm, thì hàm không còn được coi là hàm băm an toàn, nên chọn một tính chất đơn lẻ là chưa đủ.
38Which of the following terms can be used interchangeably with message authentication code (MAC)?5 lựa chọn
ADigital signature
BAuthenticator
CTag
DCryptographic checksum
EKeyed hash
Lời giải
Mở trang câu hỏi này →Đáp án đúng gồm bốn ý: "Authenticator", "Tag", "Cryptographic checksum" và "Keyed hash". Mã xác thực thông điệp (message authentication code, MAC) là một giá trị ngắn tính từ thông điệp và một khoá bí mật chung, MAC = C(K, M), gắn kèm thông điệp để bên nhận tính lại và so sánh. Vì thế nó còn được gọi là bộ xác thực (authenticator), thẻ (tag) gắn theo thông điệp, tổng kiểm mật mã (cryptographic checksum) vì giống checksum nhưng phải có khoá mới tính được, và băm có khoá (keyed hash) khi xây từ hàm băm như HMAC. "Digital signature" không dùng thay được: chữ ký số dùng cặp khoá bất đối xứng, ký bằng khoá riêng và ai cũng kiểm được bằng khoá công khai, nên cho tính chống chối bỏ (non-repudiation); MAC dùng khoá đối xứng chung nên cả hai bên đều tạo được cùng một giá trị và không chống chối bỏ được.
39RSA cipher is vulnerable to5 lựa chọn
ABrute-force attack
BPrime factorization attack
CTiming-based side channel attack
DChosen ciphertext attack
EAll the other choices
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "All the other choices". RSA chịu được nhiều hướng tấn công khác nhau và mỗi hướng cần biện pháp riêng. "Brute-force attack" là thử mọi khoá riêng có thể; về nguyên tắc luôn làm được, nên phải dùng khoá đủ dài. "Prime factorization attack" là tấn công toán học: phân tích n = p·q thì tính được φ(n) = (p − 1)(q − 1) rồi suy ra d, nên an toàn của RSA dựa vào độ khó phân tích n lớn cỡ 2048 bit. "Timing-based side channel attack" (kênh kề theo thời gian) đo thời gian giải mã, vì phép luỹ thừa modulo chạy lâu hơn khi gặp bit 1 của d nên lộ dần từng bit; chống bằng thời gian chạy hằng định hay làm mù (blinding). "Chosen ciphertext attack" khai thác tính nhân của RSA thuần: (C·r^e)^d = M·r mod n, nên phải đệm như OAEP. Vì cả bốn đều đúng, đáp án là phương án gộp.
AKey exchange
BEncryption/Decryption
CDigital signature
DAll the other choices
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Key exchange". Diffie-Hellman chỉ là giao thức trao đổi khoá: hai bên thống nhất số nguyên tố p và phần tử nguyên thuỷ a, mỗi bên chọn số bí mật X, gửi Y = a^X mod p, rồi cùng tính K = a^(X_A·X_B) mod p mà không bao giờ truyền K; độ an toàn dựa trên độ khó của bài toán lôgarit rời rạc. Bản thân giao thức không mã hoá thông điệp nào và không tạo chữ ký. "Encryption/Decryption" phải dùng thuật toán khác, ví dụ mã đối xứng AES với khoá K vừa thoả thuận, hoặc RSA, ElGamal (hệ mã xây trên ý tưởng Diffie-Hellman nhưng là thuật toán riêng). "Digital signature" là việc của RSA, DSA hay ECDSA. "All the other choices" sai vì Diffie-Hellman không hỗ trợ cả ba chức năng, chỉ hỗ trợ đúng một chức năng trao đổi khoá.