Câu hỏi: CRY303c Mật mã ứng dụng – Bộ ôn tập thi lại số 2
47 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 đề.
Danh sách câu hỏi
20/47 câuCòn 27
A1 & 5 only
B1, 3 & 5 only
C1, 3, 4, & 5 only
DAll above
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "All above". Hạ tầng khoá công khai PKI (Public Key Infrastructure) là tập hợp phần cứng, phần mềm, con người, chính sách và thủ tục để tạo, quản lý, lưu trữ, phân phối và thu hồi chứng chỉ số dựa trên mật mã khoá công khai. Cơ quan chứng thực CA tạo và ký chứng chỉ X.509, kho chứng chỉ (repository) lưu và phân phối chúng cho người cần xác minh khoá, còn danh sách thu hồi CRL công bố chứng chỉ bị thu hồi khi khoá riêng lộ hoặc mất hiệu lực; toàn bộ vòng đời ấy là việc quản lý. Vì cả năm việc đều thuộc PKI, "1 & 5 only" thiếu lưu trữ, thu hồi và quản lý; "1, 3 & 5 only" bỏ sót lưu trữ và quản lý chứng chỉ; "1, 3, 4, & 5 only" chỉ thiếu lưu trữ, nhưng lưu chứng chỉ trong kho để người khác tra cứu cũng là trách nhiệm của PKI.
ATrue
BFalse
Lời giải
Mở trang câu hỏi này →Đá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.
A2
B4
C6
D8
E10
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "6". Khoá công khai của Alice là Y_A = a^X_A mod p, nên cần tìm số mũ x để 2^x mod 11 = 9. Tính lần lượt: 2^1 = 2, 2^2 = 4, 2^3 = 8, 2^4 = 16 mod 11 = 5, 2^5 = 10, 2^6 = 20 mod 11 = 9, vậy X_A = 6. Kiểm từng phương án sai: "2" cho 2^2 = 4; "4" cho 2^4 mod 11 = 5; "8" cho 2^8 = 2^6 × 4 = 36 mod 11 = 3; "10" cho 2^10 = 1024 mod 11 = 1, đúng như định lý Fermat a^(p−1) ≡ 1 mod p, nên không thể bằng 9. Vì 2 là phần tử nguyên thuỷ của 11, các luỹ thừa 2^1 đến 2^10 đi qua đủ mười giá trị từ 1 đến 10, mỗi giá trị đúng một lần, nên lôgarit rời rạc có nghiệm duy nhất là 6. Với p nhỏ như vậy ta vét được, nhưng khi p dài hàng nghìn bit thì tìm X_A từ Y_A là bất khả thi, đó là nền an toàn của Diffie-Hellman.
ATrue
BFalse
Lời giải
Mở trang câu hỏi này →Đá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.
ATrue
BFalse
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "True". Một yêu cầu cốt lõi của mã bất đối xứng (asymmetric cipher) là kẻ tấn công biết khoá công khai cũng không thể tính ra khoá riêng trong thời gian khả thi; nếu không thì ai cũng giải được bản mã và giả được chữ ký. Với RSA, khoá công khai là (e, n) và khoá riêng d thoả e·d ≡ 1 theo modulo φ(n) = (p − 1)(q − 1); muốn có d phải biết φ(n), mà muốn biết φ(n) phải phân tích n thành p và q, việc này bất khả thi với n cỡ 2048 bit. Các yêu cầu đi kèm gồm: sinh cặp khoá dễ, mã hoá bằng khoá công khai và giải mã bằng khoá riêng đều dễ, và biết khoá công khai cùng bản mã cũng không khôi phục được bản rõ. Phát biểu đúng, nên "False" bị loại.
ATrue
BFalse
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "False". Diffie-Hellman thuần không xác thực các bên, nên dễ bị tấn công kẻ đứng giữa (man-in-the-middle). Hai bên công bố g^a mod p và g^b mod p; kẻ tấn công chặn cả hai, gửi cho mỗi bên giá trị g^m của riêng hắn, rồi lập được một khoá chung với Alice là g^(am) và một khoá chung khác với Bob là g^(bm). Sau đó hắn giải mã thư của bên này, đọc hoặc sửa, mã lại gửi bên kia mà không ai phát hiện. Độ khó của logarit rời rạc chỉ chống kẻ nghe lén thụ động, không chống kẻ chủ động thay giá trị. Cách khắc phục là xác thực giá trị trao đổi bằng chữ ký số hay chứng thư, như trong TLS. Vì phát biểu nói Diffie-Hellman không bị tấn công này, nó sai, nên "True" bị loại.
ATrue
BFalse
Lời giải
Mở trang câu hỏi này →Đá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.
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á đó.
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
Mở trang câu hỏi này →Đá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.
APlaintext, ciphertext
BCiphertext, plaintext
CPlaintext, secret key
DCiphertext, secret key
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Plaintext, ciphertext". Bản rõ (plaintext) là thông điệp gốc mà con người đọc hiểu được, ví dụ một câu tiếng Anh bình thường; bản mã (ciphertext) là đầu ra của thuật toán mã hoá, trông như chuỗi chữ cái và chữ số ngẫu nhiên mà người không có khoá không hiểu được. Câu hỏi có hai chỗ trống: chỗ đầu nói thứ đọc hiểu được nên là bản rõ, chỗ sau nói chuỗi ngẫu nhiên vô nghĩa nên là bản mã. "Ciphertext, plaintext" đảo ngược hai khái niệm. "Plaintext, secret key" đúng ở chỗ đầu nhưng khoá bí mật (secret key) là tham số đưa vào thuật toán, không phải thứ được mô tả là kết quả khó hiểu của văn bản. "Ciphertext, secret key" sai cả hai chỗ, vì bản mã không phải thứ đọc hiểu được.
APlaintext, ciphertext
BCiphertext, plaintext
CPlaintext, secret key
DCiphertext, secret key
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Plaintext, ciphertext". Trong mô hình mã hoá, thông điệp gốc đọc hiểu được, được đưa vào thuật toán làm đầu vào, gọi là bản rõ (plaintext); thông điệp đã mã hoá, do thuật toán sinh ra làm đầu ra, gọi là bản mã (ciphertext). Thuật toán nhận thêm khoá bí mật (secret key) như một tham số, và cùng một bản rõ với khoá khác nhau sẽ cho bản mã khác nhau. "Ciphertext, plaintext" đảo ngược đầu vào và đầu ra. "Plaintext, secret key" đúng chỗ đầu nhưng khoá không phải là đầu ra, nó là đầu vào độc lập với thông điệp và thường do hai bên thoả thuận trước. "Ciphertext, secret key" sai cả hai chỗ, vì đầu vào đọc hiểu được không thể là bản mã và đầu ra không phải khoá.
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.
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ở.
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.
AThe company password is written using an invisible ink, and only the people within the company know the fact that invisible ink is used
BThe attacker has the copy of the system
CA company states that its system is "secure" because it uses confidential and proprietary protocols
DThe algorithms for popular symmetric ciphers such as DES and AES are publicly known
Lời giải
Mở trang câu hỏi này →Đáp án đúng gồm hai ý: "The company password is written using an invisible ink, and only the people within the company know the fact that invisible ink is used" và "A company states that its system is "secure" because it uses confidential and proprietary protocols". Nguyên lý Kerckhoffs đòi hệ thống an toàn ngay cả khi kẻ tấn công biết mọi thứ trừ khoá. Mật khẩu viết bằng mực vô hình chỉ an toàn chừng nào bí quyết dùng mực vô hình còn giữ kín, tức an toàn dựa vào giấu phương pháp, nên vi phạm. Công ty tự nhận an toàn nhờ giao thức bí mật, độc quyền cũng dựa vào giấu thiết kế, lộ giao thức là sụp. "The attacker has the copy of the system" không vi phạm mà chính là giả định Kerckhoffs yêu cầu: thiết kế phải chịu được kẻ tấn công có bản sao hệ thống. "The algorithms for popular symmetric ciphers such as DES and AES are publicly known" là ví dụ tuân thủ, vì thuật toán công khai và an toàn chỉ dựa vào khoá.
ATrue
BFalse
Lời giải
Mở trang câu hỏi này →Đá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.
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õ).
A11
B15
C19
D23
E27
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "15". Cây băm (hash tree, cây Merkle) với 128 khối dữ liệu là cây nhị phân có log2(128) = 7 tầng dưới gốc. Để khoanh vùng một khối lỗi, ta kiểm gốc trước (1 lần), rồi ở mỗi tầng kiểm cả hai nút con để biết nhánh nào sai và đi xuống nhánh đó (2 lần mỗi tầng); tổng là 1 + 2 × 7 = 15, ít hơn nhiều so với kiểm cả 128 khối. Phương án "11" ứng với 1 + 2 × 5, tức cây chỉ có 2^5 = 32 khối. Phương án "19" ứng với 1 + 2 × 9, tức 2^9 = 512 khối. Phương án "23" ứng với 1 + 2 × 11, tức 2048 khối. Phương án "27" ứng với 1 + 2 × 13, tức 8192 khối. Như vậy số lần kiểm tăng theo logarit số khối, đó chính là ưu điểm của cây băm.
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
Mở trang câu hỏi này →Đá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.
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: "Weak collision resistance". Kháng va chạm yếu (weak collision resistance), còn gọi là kháng tiền ảnh thứ hai, nói rằng cho trước một đầu vào x, không tính được trong thời gian khả thi một đầu vào y khác x sao cho H(y) = H(x); đúng như câu hỏi mô tả, vì đầu vào được cho sẵn. "Strong collision resistance" (kháng va chạm mạnh) đòi hỏi không tìm được bất kỳ cặp x khác y nào có cùng giá trị băm, kẻ tấn công được tự chọn cả hai, nên mạnh hơn và chỉ cần cỡ 2^(n/2) phép thử theo nghịch lý ngày sinh. "One-way property" và "Pre-image resistance" là cùng một tính chất: cho trước giá trị băm h, không tìm được đầu vào nào băm ra h; ở đó thứ được cho là đầu ra, không phải một đầu vào.