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.140/19.477 câuCòn 16.337
AEasy to produce
BDepends on the message being signed
CDifficult to forge
DUses information unique to the sender
EVerifiable by a trusted third party
Lời giải
Đáp án đúng: "Verifiable by a trusted third party". Các yêu cầu của chữ ký số là: chữ ký phụ thuộc vào thông điệp được ký, dùng thông tin riêng của người gửi để chống giả mạo và chối bỏ, dễ tạo, dễ nhận ra và kiểm tra, và không thể giả mạo trong thời gian khả thi. Việc kiểm tra được thực hiện bởi bất kỳ ai có khoá công khai của người ký, không cần một bên thứ ba tin cậy đứng giữa; sơ đồ cần bên trọng tài là dạng chữ ký có trọng tài, không phải yêu cầu chung. "Easy to produce" là yêu cầu để người ký dùng được trong thực tế. "Depends on the message being signed" giúp chữ ký không bị bóc ra gắn sang thông điệp khác. "Difficult to forge" là yêu cầu an toàn cốt lõi. "Uses information unique to the sender" là khoá riêng, đảm bảo chỉ người gửi tạo được chữ ký và không chối bỏ được.
Mở trang câu hỏi này →
ATakes the hash of the p and then encrypting using its private key
BTakes the hash of the p and then encrypting using its public key
CTakes p and encrypt it using its private key
DTakes p and encrypt it using its public key
EEncrypt p using its private key and then take the hash
FEncrypt p using its public key and then take the hash
Lời giải
Đáp án đúng: "Takes the hash of the p and then encrypting using its private key". Cả chữ ký RSA lẫn DSS đều ký trên giá trị băm: người gửi tính H(p) có độ dài cố định rồi dùng khoá riêng của mình biến đổi nó thành chữ ký (với RSA là s = H(p)^d mod n, với DSS là thuật toán DSA dùng khoá riêng sinh cặp r, s), và gửi kèm p. Người nhận băm lại p và kiểm bằng khoá công khai của người gửi; chỉ người có khoá riêng mới tạo được chữ ký đúng, nên có xác thực và chống chối bỏ. "Takes the hash of the p and then encrypting using its public key" sai vì khoá công khai ai cũng có, ai cũng tạo được, nên không chứng minh gì về người gửi. "Takes p and encrypt it using its private key" bỏ bước băm: thông điệp dài phải ký từng khối rất chậm, chữ ký dài bằng thông điệp và RSA thô còn dễ bị giả mạo nhờ tính chất nhân. "Takes p and encrypt it using its public key" là mã hoá chứ không phải ký, và mã bằng khoá công khai của chính người gửi thì người nhận không giải được. "Encrypt p using its private key and then take the hash" và "Encrypt p using its public key and then take the hash" đảo thứ tự: giá trị băm của bản mã không liên kết được với khoá công khai, người nhận không có cách nào kiểm.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Đáp án đúng: "True". An ninh nhờ che giấu (security by obscurity) là cách bảo vệ hệ thống bằng việc giữ kín thiết kế hay thuật toán thay vì dựa vào khoá. Lịch sử cho thấy cách này dễ đổ vỡ: thuật toán bí mật sớm muộn cũng lộ qua dịch ngược, rò rỉ hay người trong cuộc, và khi lộ thì toàn bộ hệ thống mất an toàn cùng lúc, không thể thay như thay một khoá. Các ví dụ nổi tiếng là mã A5/1 của GSM hay CSS bảo vệ đĩa DVD, đều bị phân tích và phá sau khi bị dịch ngược. Vì thế nguyên lý Kerckhoffs yêu cầu hệ mật phải an toàn ngay cả khi thuật toán công khai, và các chuẩn như AES được chọn qua cuộc thi mở để cộng đồng soi xét. Phát biểu đúng, nên "False" bị loại.
Mở trang câu hỏi này →
ABob's private key
BThe message from Alice to Bob
CAlice's private key
DThe session key
EBob's public key
Lời giải
Đáp án đúng gồm hai ý: "Bob's private key" và "Alice's private key". Trong Diffie-Hellman, Alice chọn số bí mật a, Bob chọn b, hai bên trao g^a mod p và g^b mod p rồi cùng tính khoá phiên g^(ab) mod p. Kẻ tấn công vét cạn thành công phép mã hoá thì có được khoá phiên và từ đó đọc được thông điệp, nhưng muốn lùi từ khoá phiên hay từ g^a mod p về a hoặc b thì phải giải bài toán logarit rời rạc, việc không khả thi với p lớn; nên khoá riêng của cả hai vẫn an toàn. "The message from Alice to Bob" đã lộ vì có khoá phiên là giải mã được. "The session key" chính là thứ vét cạn tìm ra. "Bob's public key" vốn công khai từ đầu nên không có gì để giữ bí mật.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Đáp án đúng: "True". Diffie-Hellman gốc không xác thực các bên: Alice gửi Y_A = a^X_A mod p, Bob gửi Y_B = a^X_B mod p, nhưng không ai kiểm được giá trị nhận được có thật sự đến từ đối phương. Kẻ đứng giữa (man-in-the-middle) như Darth chặn cả hai giá trị, tự sinh hai khoá riêng X_D1, X_D2 rồi gửi Y_D1 cho Bob, Y_D2 cho Alice. Kết quả là Alice chia khoá K1 với Darth, Bob chia khoá K2 với Darth, và Darth giải mã, đọc, sửa rồi mã lại mọi thông điệp chuyển qua mà hai bên không hay biết, dù bài toán lôgarit rời rạc vẫn khó. Cách chống là xác thực các giá trị trao đổi, chẳng hạn ký số chúng hoặc dùng chứng chỉ khoá công khai do CA cấp, như trong TLS. Chọn "False" là nhầm độ khó tính toán với tính xác thực.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Đáp án đúng: "False". Chuỗi khối (blockchain) là một cấu trúc dữ liệu và cơ chế sổ cái phân tán: các khối giao dịch được nối với nhau bằng giá trị băm của khối trước, nên sửa một khối cũ sẽ làm đứt cả chuỗi phía sau, và các nút trong mạng đồng thuận về trạng thái sổ cái. Tiền mã hoá (cryptocurrency) như Bitcoin là một ứng dụng xây trên chuỗi khối, dùng chữ ký số để chứng minh quyền sở hữu và chuỗi khối để ghi lại giao dịch, chống chi tiêu hai lần. Chuỗi khối còn dùng cho việc khác như truy xuất nguồn gốc hàng hoá, hợp đồng thông minh hay lưu chứng thực, không cần có đồng tiền nào. Một bên là công nghệ nền, một bên là ứng dụng của nó, nên hai thứ không giống nhau và "True" bị loại.
Mở trang câu hỏi này →
AStream cipher
BBlock cipher
CAsymmetric cipher
DSymmetric cipher
Lời giải
Đá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.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Đáp án đúng: "True". Trong tấn công chỉ biết bản mã (ciphertext-only), kẻ tấn công chỉ có bản mã và phải dựa vào thống kê ngôn ngữ như phân tích tần suất, hoặc thử khoá rồi đoán xem đầu ra có giống văn bản có nghĩa không. Trong tấn công biết bản rõ (known-plaintext), kẻ tấn công có thêm các cặp bản rõ và bản mã tương ứng, nên kiểm một khoá ứng viên chỉ cần mã hoá bản rõ đã biết và so với bản mã; với nhiều hệ cổ điển, cặp này còn cho tính thẳng khoá, ví dụ một cặp chữ là đủ suy ra độ dịch Caesar, hay XOR bản rõ với bản mã của mã dòng ra ngay dòng khoá. Có nhiều thông tin hơn nên đây là mô hình kẻ tấn công mạnh hơn, và hệ an toàn trước nó thì cũng an toàn trước tấn công chỉ biết bản mã. Chọn "False" là đánh giá thấp lượng thông tin mà các cặp bản rõ và bản mã mang lại.
Mở trang câu hỏi này →
ASubBytes
BShiftRows
CMixColumns
DAddRoundKey
Lời giải
Đá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.
Mở trang câu hỏi này →
A26
B52
C676
D1352
Lời giải
Đáp án đúng: "676". Khoá Vigenère dài cố định 2 ký tự, mỗi ký tự là một trong 26 chữ cái tiếng Anh và được chọn độc lập, nên theo quy tắc nhân số khoá khác nhau là 26 × 26 = 26^2 = 676 (từ AA tới ZZ, trong đó XO chỉ là một khoá). Với khoá dài k thì số khoá là 26^k, tăng theo cấp số mũ. "26" là số khoá khi khoá dài 1, tương đương mã Caesar. "52" = 26 × 2, cộng số lựa chọn của hai vị trí thay vì nhân. "1352" = 676 × 2, nhân đôi không có cơ sở, như thể đếm thêm một biến thể cho mỗi khoá.
Mở trang câu hỏi này →
AE
BV
CY
DF
ER
Lời giải
Đáp án đúng gồm hai ý: "V" và "F". Vigenère với khoá hai chữ dùng xen kẽ hai bảng Caesar: chữ ở vị trí lẻ dịch theo chữ khoá thứ nhất, chữ ở vị trí chẵn dịch theo chữ khoá thứ hai. Trong mỗi nửa văn bản, e vẫn là chữ nhiều nhất, nên e bị biến thành đúng hai chữ bản mã khác nhau, mỗi chữ chiếm khoảng một nửa số lần xuất hiện của e, và hai chữ đó phải đứng đầu bảng tần suất. Bảng đã sắp giảm dần mở đầu bằng hai chữ này nên chọn chúng. Cần nói thẳng: bảng in có chữ lặp (năm chữ xuất hiện hai lần) và khoá XO không khớp chính xác, vì X dịch 23 và O dịch 14 sẽ biến e (vị trí 4) thành (4 + 23) mod 26 = 1 là b, và (4 + 14) mod 26 = 18 là s; do đó câu chỉ giải được bằng lập luận tần suất. "E" sai vì e chỉ giữ nguyên khi chữ khoá là a (dịch 0), và trong bảng nó chỉ đứng thứ 19. "Y" không có mặt trong bảng tần suất. "R" chỉ đứng giữa bảng, ở vị trí thứ 12, không phải chữ nhiều nhất.
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 →
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 →
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 →
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 →
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 →
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 →
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 →
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 →
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 →