Tất cả câu hỏi

Ngân hàng câu hỏi trắc nghiệm có giải thích chi tiết.

3.860/20.114 câuCòn 16.254
ATrue
BFalse
Lời giải
Đá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.
Mở trang câu hỏi này →
AShannon Maxim
BSecurity by Obscurity
CAttacker knows the system
DOpen design
Lời giải
Đá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.
Mở trang câu hỏi này →
ACiphertext c
BKey k
CThe XOR-based encryption algorithm
DPlaintext b
Lời giải
Đá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õ).
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Đá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".
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 →
A1
B512
C1024
D2048
Lời giải
Đá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.
Mở trang câu hỏi này →
Aprimitive root
Bpublic exponent
Cprivate exponent
Dmodulus
Lời giải
Đá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.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Đá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á đó.
Mở trang câu hỏi này →
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 →
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
Đá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.
Mở trang câu hỏi này →
A42.701
B4.971
C21.350
D10.675
Lời giải
Đá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ở.
Mở trang câu hỏi này →
A128/128/10
B128/128/12
C128/128/14
D128/256/10
Lời giải
Đá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.
Mở trang câu hỏi này →
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
Đá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.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Đá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.
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 →
A0
B1
C20
DDepends on the plaintext
Lời giải
Đá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.
Mở trang câu hỏi này →
A31
B15
C19
D23
E27
Lời giải
Đáp án đúng: "15". Cây băm (hash tree, cây Merkle) giữ giá trị băm của từng khối ở lá và băm của hai con ở mỗi nút trong, nên một khối lỗi làm lệch đúng một đường từ lá lên gốc. Để khoanh vùng, ta kiểm gốc thấy lệch, rồi ở mỗi tầng kiểm cả hai nút con của nút lệch để biết nhánh nào chứa lỗi. Cây 256 khối có log2(256) = 8 tầng dưới gốc nên cách đếm này cho 1 + 2 × 8 = 17 lần kiểm; cùng cách đếm, cây 16 khối ra 1 + 2 × 4 = 9 và cây 128 khối ra 1 + 2 × 7 = 15. Nói thẳng: 17 không có trong các phương án, nên không lựa chọn nào khớp đúng. "15" (cây 128 khối) và "19" = 1 + 2 × 9 (cây 512 khối) cùng lệch đúng một tầng so với 17; chọn "15" vì nó trùng kết quả của cùng câu hỏi với cây 128 khối, nhiều khả năng số khối đã đổi mà phương án giữ nguyên, chứ không phải vì "19" sai hơn về lập luận. "23" = 1 + 2 × 11 ứng với cây 2048 khối, "27" = 1 + 2 × 13 ứng với 8192 khối, "31" = 1 + 2 × 15 ứng với 32768 khối, đều lệch từ ba tầng trở lên.
Mở trang câu hỏi này →
A1
B512
C1024
D2048
Lời giải
Đáp án đúng: "512". Khoá dài 10 bit tạo không gian 2^10 = 1024 khoá. Kẻ tấn công vét cạn (brute-force) thử lần lượt từng khoá và dừng khi giải mã ra bản rõ có nghĩa; khoá đúng nằm ở vị trí ngẫu nhiên đều trong danh sách, nên trung bình phải thử một nửa không gian, tức 2^(10−1) = 1024 / 2 = 512 lần giải mã. "1" là trường hợp may mắn nhất, thử trúng ngay lần đầu, không phải giá trị trung bình. "1024" là trường hợp xấu nhất với kẻ tấn công, khi khoá đúng nằm ở cuối danh sách. "2048" bằng 2^11, vượt cả số khoá có thể có nên không bao giờ phải thử tới chừng ấy. Công thức chung: khoá n bit cần tối đa 2^n và trung bình 2^(n−1) lần thử.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Đáp án đúng: "True". Trong mật mã khoá công khai, mỗi người có một cặp khoá: khoá công khai ai cũng biết và khoá riêng chỉ chủ sở hữu giữ. Khi người gửi mã hoá bằng khoá công khai của người nhận, chỉ ai nắm khoá riêng tương ứng mới giải mã được, và đó chính là người nhận, nên kẻ nghe lén trên đường truyền không đọc được nội dung; đây là cách dùng mã hoá bất đối xứng để bảo vệ tính bí mật (confidentiality). Ngược lại, nếu người gửi dùng khoá riêng của chính mình thì ai cũng giải được bằng khoá công khai của họ, nên cách đó chỉ phục vụ xác thực và chữ ký số chứ không giữ bí mật. Vì phát biểu mô tả đúng chiều bảo mật, "False" bị loại.
Mở trang câu hỏi này →
AThe cipher is equivalent to the Vigenère cipher using a key of length 3 and of value "YYY"
BThe cipher can be expressed as c = (p-2) mod 26, where c is each ciphertext letter and p is each plaintext letter
CThis cipher transforms a plaintext alphabet to distinct ciphertext alphabets with long enough plaintext inputs
DThe cipher can be expressed as c = (p+24) mod 26, where c is each ciphertext letter and p is each plaintext letter
EThe cipher is equivalent to a Caesar Cipher
Lời giải
Đáp án đúng: "This cipher transforms a plaintext alphabet to distinct ciphertext alphabets with long enough plaintext inputs". Câu hỏi tìm phát biểu SAI. Khoá Vigenère dài 1 nghĩa là mọi chữ đều dịch cùng một lượng 24, nên chỉ có một bảng chữ bản mã duy nhất: đây là mã đơn bảng, bản rõ dài bao nhiêu thì mỗi chữ vẫn chỉ ứng với một chữ cố định và tần suất không bị san phẳng; nói nó tạo ra nhiều bảng chữ bản mã khác nhau (đặc trưng của mã đa bảng) là sai. Các phát biểu kia đều đúng nên không được chọn: "c = (p+24) mod 26" là định nghĩa trực tiếp với Y = 24; "c = (p-2) mod 26" tương đương vì 24 ≡ −2 (mod 26), ví dụ p = 0 (chữ a) cho (0 + 24) mod 26 = 24 và (0 − 2) mod 26 = 24, đều là chữ y; khoá YYY lặp lại cùng phép dịch 24 ở mọi vị trí nên "equivalent to the Vigenère cipher using a key of length 3" đúng; và một phép dịch cố định chính là "The cipher is equivalent to a Caesar Cipher".
Mở trang câu hỏi này →