Danh sách câu hỏi của đề

Câu hỏi: CRY303c Mật mã ứng dụng – Bộ ôn tập thi lại số 1

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
ATrue
BFalse
Lời giải
Đá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.
Mở trang câu hỏi này →
AKey exchange
BEncryption/Decryption
CDigital signature
DAll the other choices
Lời giải
Đá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á.
Mở trang câu hỏi này →
A2
B4
C6
D8
E10
Lời giải
Đá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.
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 →
ASession key
BMaster key
CNonce
DPublic-key certificate
EA user's public-private key pair
Lời giải
Đáp án đúng: "Nonce". Nonce (number used once) là giá trị ngẫu nhiên hoặc bộ đếm chỉ dùng cho đúng một lần trao đổi, ví dụ một thông điệp thách thức trong giao thức xác thực để chống tấn công phát lại (replay); xong lượt đó là bỏ, nên theo thiết kế nó tạm thời nhất. "Session key" cũng là khoá tạm thời nhưng tồn tại suốt cả một phiên, dùng mã hoá nhiều thông điệp, nên kém tạm thời hơn nonce. "Master key" dùng lâu dài để mã hoá và phân phối các khoá phiên. "Public-key certificate" có thời hạn hiệu lực thường tính bằng năm. "A user's public-private key pair" là danh tính mật mã lâu dài của người dùng, được chứng thực và dùng nhiều phiên.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Đá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.
Mở trang câu hỏi này →
A48
B32
C24
D62
Lời giải
Đáp án đúng: "48". Câu này đảo nhãn so với quy ước Diffie-Hellman: thông thường X là khoá riêng, Y = a^X mod p là khoá công khai, còn đề gọi X_A = 22 là khoá công khai rồi hỏi khoá riêng Y_A. Đọc đúng chữ thì phải giải 5^x mod 157 = 22, và nghiệm là x = 13 (5^8 mod 157 = 9, 5^4 mod 157 = 154 nên 5^13 = 9 × 154 × 5 = 6930 mod 157 = 22), không có trong phương án. Đọc theo quy ước, 22 là khoá riêng và cần tính Y_A = 5^22 mod 157 bằng bình phương liên tiếp: 5^2 = 25, 5^4 = 625 mod 157 = 154, 5^8 = 154^2 mod 157 = 9 (vì 154 ≡ −3), 5^16 = 81, rồi 5^22 = 5^16 × 5^4 × 5^2: 81 × 154 = 12474 mod 157 = 71, 71 × 25 = 1775 mod 157 = 48. Kết quả này có trong phương án nên "48" là cách đọc hợp lý duy nhất. "32", "24" và "62" không bằng 5^22 mod 157 cũng không bằng 13, nên là kết quả của phép tính sai.
Mở trang câu hỏi này →
A1 & 2
B1 & 3
C1 & 4
D2 & 3
E2 & 4
F3 & 4
Lời giải
Đáp án đúng: "2 & 4". Phát biểu 2 đúng: với modulus lớn, bài toán logarit rời rạc (tìm x từ a^x mod n) là khó, nền của Diffie-Hellman. Phát biểu 4 đúng: căn nguyên thuỷ (primitive root) g của số nguyên tố p sinh ra đủ p − 1 giá trị khác nhau, ví dụ g = 3 mod 7 cho 3, 2, 6, 4, 5, 1, tức đủ 6 giá trị, nên logarit rời rạc theo g có nhiều kết quả nhất, điều mật mã cần. Phát biểu 1 sai: luỹ thừa modulo dễ tính bằng bình phương và nhân liên tiếp (square-and-multiply), ví dụ 3^4 mod 7 = (3^2)^2 mod 7 = 2^2 mod 7 = 4. Phát biểu 3 sai: với cơ số 2 mod 7, các luỹ thừa chỉ là 2, 4, 1 lặp lại, nên logarit của 3 không tồn tại, và 2^1 = 2^4 = 2 mod 7 nên cũng không duy nhất. Vì thế "1 & 2", "1 & 3", "1 & 4" đều chứa phát biểu 1 sai; "2 & 3" và "3 & 4" chứa phát biểu 3 sai.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Đáp án đúng: "True". Trong mật mã bất đối xứng (asymmetric cryptography), khoá công khai được công bố cho mọi người, nên toàn bộ an toàn dựa vào việc không thể suy ra khoá riêng (private key) từ khoá công khai trong thời gian khả thi. Nếu suy ra được, bất kỳ ai cũng giải mã được thư gửi cho chủ khoá hoặc giả mạo chữ ký của họ. Ví dụ với RSA, khoá công khai là (n, e) và khoá riêng d; tính d đòi hỏi biết phi(n) = (p − 1)(q − 1), tức phải phân tích n thành thừa số nguyên tố, việc này không khả thi với n đủ lớn (2048 bit trở lên). "False" sai vì nếu bỏ yêu cầu này thì hệ bất đối xứng mất hết ý nghĩa bảo mật.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Đáp án đúng: "False". Giải mã (decryption) là quá trình ngược: đưa bản mã (ciphertext) trở lại bản rõ (plaintext) bằng thuật toán giải mã và khoá, viết là P = D(K, C). Quá trình biến bản rõ thành bản mã, C = E(K, P), mới là mã hoá (encryption). Ví dụ với mã Caesar khoá 3, mã hoá biến chữ a thành chữ d, còn giải mã đưa chữ d về lại chữ a. Phát biểu đã đảo hai khái niệm nên sai. "True" chỉ đúng nếu câu nói về encryption; với decryption thì chiều biến đổi là từ bản mã sang bản rõ, và người nhận hợp lệ thực hiện nó nhờ nắm khoá giải mã.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Đáp án đúng: "False". One-time pad (sổ dùng một lần) đạt bí mật hoàn hảo (perfect secrecy) theo Shannon: bản mã c = p ⊕ k không tiết lộ gì về bản rõ, với điều kiện khoá ngẫu nhiên thật, dài ít nhất bằng thông điệp và không bao giờ dùng lại. Chính các điều kiện này làm nó không thực tế để dùng phổ biến: mã hoá 1 GB dữ liệu phải có 1 GB khoá ngẫu nhiên thật, phải chuyển khoá đó tới bên kia qua một kênh an toàn từ trước (nếu có kênh như vậy thì gửi luôn dữ liệu), rồi lưu trữ và huỷ khoá sau một lần dùng; dùng lại khoá hai lần thì c1 ⊕ c2 = p1 ⊕ p2 và bí mật sụp đổ. Vì thế hệ thống thực tế dùng mã khối như AES hay mã dòng với khoá ngắn, còn one-time pad chỉ dùng ở vài kênh rất đặc thù. Phát biểu "True" sai vì nhầm an toàn lý thuyết với tính phổ biến trong thực tế.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Đáp án đúng: "False". Mã dùng một lần đạt bí mật hoàn hảo chỉ khi khoá ngẫu nhiên thật, dài bằng thông điệp và mỗi khoá có xác suất như nhau. Ở đây 1KB = 1024 × 8 = 8192 bit nên cần 2^8192 khoá đều nhau, nhưng khoá lại do một thuật toán tất định sinh ra từ hạt giống dài 18; thuật toán tất định thì hạt giống quyết định hoàn toàn khoá, nên số khoá có thể xuất hiện không vượt số hạt giống, chẳng hạn chỉ 2^18 nếu hạt dài 18 bit, và kẻ tấn công có thể vét cạn hạt giống. Đó là bộ sinh số giả ngẫu nhiên, tức một mã dòng, không phải mã dùng một lần. Giữ kín thuật toán là an ninh nhờ che giấu, trái nguyên lý Kerckhoffs, và qua được bài kiểm tra giả ngẫu nhiên của NIST chỉ cho thấy đầu ra trông ngẫu nhiên, không biến nó thành ngẫu nhiên thật. Vì vậy "True" bị loại.
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 khoá, kẻ tấn công vét cạn trung bình thử một nửa, 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 ≈ 922337 giây; chia cho 86400 giây mỗi ngày được 922337 / 86400 ≈ 10.675 ngày. "21.350" gấp đôi, là thời gian xấu nhất khi phải thử đủ 2^64 khoá (2^64 / 10^13 / 86400 ≈ 21.350 ngày). "42.701" gấp bốn, ứng với 2^65 lần thử, nhiều hơn cả số khoá có thể có. "4.971" không khớp với 2^62, 2^63 hay 2^64 chia cho 10^13 lần mỗi giây (riêng 2^62 đã cho khoảng 5.338 ngày), nên là kết quả tính sai. Con số khoảng mười ngày cho thấy khoá 64 bit không còn đủ an toàn trước phần cứng mạnh, vì thế AES dùng khoá ít nhất 128 bit.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Đáp án đúng: "True". Claude Shannon chứng minh one-time pad đạt bảo mật hoàn hảo (perfect secrecy): bản mã không tiết lộ bất cứ thông tin nào về bản rõ, tức xác suất của mỗi bản rõ khi đã thấy bản mã bằng đúng xác suất ban đầu. Điều kiện là khoá thật sự ngẫu nhiên, dài ít nhất bằng thông điệp và chỉ dùng một lần; khi đó với mỗi bản mã, mọi bản rõ cùng độ dài đều có đúng một khoá biến nó thành bản mã ấy, nên vét cạn vô ích. Dùng lại khoá hai lần thì XOR hai bản mã khử mất khoá và bảo mật sụp đổ. "False" sai vì đây là kết quả đã được chứng minh, không phải giả thuyết.
Mở trang câu hỏi này →
AUsing passwords for authentication
BEmbedding another message on the least significant bits on images (so that they are indistinguishable in human eyes)
CInvisible ink
DTouching different parts of your faces (where different parts indicate different messages) while being engaged in another activity
EBlinking based on Morse code while saying something else
FBroadcasting your password to another person and hoping that the person forgot your password by now
Lời giải
Đáp án đúng gồm bốn ý: "Embedding another message on the least significant bits on images (so that they are indistinguishable in human eyes)", "Invisible ink", "Touching different parts of your faces (where different parts indicate different messages) while being engaged in another activity" và "Blinking based on Morse code while saying something else". Giấu tin (steganography) là che giấu chính sự tồn tại của thông điệp, khác mã hoá vốn chỉ làm nội dung khó đọc. Giấu tin vào bit ít quan trọng nhất của điểm ảnh làm đổi màu không đáng kể nên mắt người không thấy; mực vô hình làm chữ chỉ hiện khi được xử lý; chạm vào các vùng trên mặt và chớp mắt theo mã Morse khi đang làm hay nói việc khác đều truyền tin ngầm trong một hoạt động trông bình thường. "Using passwords for authentication" là xác thực, không giấu thông điệp nào. "Broadcasting your password to another person and hoping that the person forgot your password by now" là công khai bí mật rồi mong người ta quên, không có gì được che giấu.
Mở trang câu hỏi này →
AUsing passwords for authentication
BEmbedding another message on the least significant bits on images (so that they are indistinguishable in human eyes)
CInvisible ink
DTouching different parts of your faces (where different parts indicate different messages) while being engaged in another activity
EBlinking based on Morse code while saying something else
FBroadcasting your password to another person and hoping that the person forgot your password by now
Lời giải
Đáp án đúng gồm hai ý: "Using passwords for authentication" và "Broadcasting your password to another person and hoping that the person forgot your password by now". Giấu tin (steganography) là che giấu chính sự tồn tại của thông điệp bên trong một vật mang hay hoạt động trông bình thường, khác với mật mã chỉ làm nội dung khó đọc nhưng ai cũng thấy có thông điệp. Dùng mật khẩu để xác thực là cơ chế kiểm soát truy cập, không giấu thông điệp nào. Phát tán mật khẩu cho người khác rồi mong họ quên là để lộ bí mật, hoàn toàn trái với việc che giấu. Các ví dụ sau đúng là giấu tin nên không được chọn: "Embedding another message on the least significant bits on images" giấu dữ liệu vào bit thấp nhất của điểm ảnh, mắt người không phân biệt được ảnh đã sửa; "Invisible ink" là mực vô hình, thông điệp chỉ hiện khi hơ nóng hay dùng hoá chất; "Touching different parts of your faces" mã hoá thông điệp bằng cử chỉ lẫn trong một hoạt động khác; "Blinking based on Morse code while saying something else" truyền tin bằng nháy mắt theo mã Morse trong khi lời nói đánh lạc hướng người xem.
Mở trang câu hỏi này →
APlaintext, ciphertext
BCiphertext, plaintext
CPlaintext, secret key
DCiphertext, secret key
Lời giải
Đá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á.
Mở trang câu hỏi này →
AAcross varying inputs, the output of the hash function needs to be uniformly distributed.
BThe output size is fixed.
CGiven an input, a hash function can produce multiple outputs.
DThe input size can vary.
Lời giải
Đáp án đúng: "Given an input, a hash function can produce multiple outputs.". Câu hỏi tìm phát biểu SAI. Hàm băm là hàm tất định: cùng một đầu vào luôn cho đúng một giá trị băm, nếu không bên nhận không thể tính lại để kiểm toàn vẹn hay xác minh chữ ký. Các phát biểu kia đều đúng nên không được chọn: "Across varying inputs, the output of the hash function needs to be uniformly distributed." đúng vì đầu ra phải trải đều, trông như ngẫu nhiên, để khó đoán và khó tìm va chạm; "The output size is fixed." đúng, ví dụ SHA-256 luôn ra 256 bit; "The input size can vary." đúng vì hàm băm nhận đầu vào độ dài tuỳ ý.
Mở trang câu hỏi này →
ADigest
BMessage
CCache
DHash value
EFingerprint
Lời giải
Đáp án đúng gồm ba ý: "Digest", "Hash value" và "Fingerprint". Hàm băm nhận đầu vào độ dài tuỳ ý và cho ra một chuỗi độ dài cố định, ví dụ 256 bit với SHA-256. Đầu ra này được gọi là giá trị băm (hash value), là bản tóm lược thông điệp (message digest, nên gọi tắt là digest), và cũng được gọi là dấu vân tay (fingerprint) vì nó đại diện gần như duy nhất cho dữ liệu: đổi một bit đầu vào thì đầu ra đổi hẳn, như vân tay nhận diện một người. "Message" là đầu vào của hàm băm, thứ được băm, chứ không phải đầu ra. "Cache" là vùng nhớ đệm lưu dữ liệu để truy cập nhanh; bảng băm có thể dùng làm bộ đệm nhưng đó không phải tên gọi đầu ra của hàm băm mật mã.
Mở trang câu hỏi này →
AWeak collision resistance
BPre-image resistance
CStrong collision resistance
Lời giải
Đáp án đúng: "Pre-image resistance". Kháng tiền ảnh (pre-image resistance, còn gọi là tính một chiều) đòi hỏi: cho một giá trị băm h bất kỳ, không thể tìm được một cách khả thi đầu vào x nào sao cho H(x) = h; với hàm băm đầu ra n bit, vét cạn cần cỡ 2^n lần thử. "Weak collision resistance" (kháng va chạm yếu, hay kháng tiền ảnh thứ hai) là tính chất khác: cho trước một đầu vào x cụ thể, khó tìm x' khác x có cùng giá trị băm; kẻ tấn công được biết cả đầu vào chứ không chỉ đầu ra. "Strong collision resistance" (kháng va chạm mạnh) đòi hỏi khó tìm bất kỳ cặp đầu vào khác nhau nào cho cùng giá trị băm; kẻ tấn công tự chọn cả hai đầu vào nên tấn công ngày sinh (birthday attack) chỉ cần cỡ 2^(n/2) lần. Câu hỏi chỉ nói "cho đầu ra, tìm lại đầu vào", đúng định nghĩa tiền ảnh.
Mở trang câu hỏi này →