Ngân hàng câu hỏi của chương

Câu hỏi: CRY303c - Phần 4: Mật mã bất đối xứng và quản lý khoá

23 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 theo thứ tự nhập vào ngân hàng.

Danh sách câu hỏi

20/23 câuCòn 3
A1
B3
C5
D7
E9
Lời giải
Đáp án đúng: "3". Trong Diffie-Hellman, Y_A = a^X_A mod p và khoá chung K = (Y_B)^X_A mod p = (Y_A)^X_B mod p. Tìm X_A bằng các luỹ thừa của 2 theo modulo 11: 2^1 = 2, 2^2 = 4, 2^3 = 8, 2^4 = 16 mod 11 = 5, 2^5 = 10, 2^6 = 20 mod 11 = 9, nên X_A = 6. Khi đó K = 3^6 mod 11: 3^2 = 9, 3^3 = 27 mod 11 = 5, 3^6 = 5^2 = 25 mod 11 = 3. Kiểm từ phía Bob: 2^7 mod 11 = 7, 2^8 mod 11 = 14 mod 11 = 3 nên X_B = 8, và 9^8 mod 11 tính qua 9^2 = 81 mod 11 = 4, 9^4 = 16 mod 11 = 5, 9^8 = 25 mod 11 = 3, khớp. "9" chính là khoá công khai Y_A chứ không phải khoá chung. "5" là 3^3 mod 11, tức dùng sai số mũ. "7" là 2^7 mod 11, chỉ là một luỹ thừa trung gian. "1" là phần tử đơn vị, chỉ ra khi số mũ là bội của bậc phần tử (chẳng hạn 3^5 = 243 mod 11 = 1), mà 6 không phải bội của 5.
Mở trang câu hỏi này →
A1 & 5 only
B1, 3 & 5 only
C1, 3, 4, & 5 only
DAll above
Lời giải
Đá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.
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: "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 →
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 →
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 →
7RSA 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
Đá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.
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 →
ATrue
BFalse
Lời giải
Đáp án đúng: "False". Độ an toàn không phụ thuộc vào việc hệ là đối xứng hay bất đối xứng mà phụ thuộc vào độ khó của bài toán nền và độ dài khoá: AES-128 có mức an toàn tương đương khoảng RSA 3072 bit. Mật mã bất đối xứng như RSA, Diffie-Hellman chậm hơn mã đối xứng hàng trăm đến hàng nghìn lần vì dựa trên luỹ thừa modulo số rất lớn, nên không hợp để mã hoá khối dữ liệu lớn. Thực tế dùng mô hình lai: khoá công khai để trao đổi hoặc bọc khoá phiên và để ký số, còn dữ liệu được mã bằng khoá đối xứng như AES, đúng như TLS làm. Vì vậy mã đối xứng không hề lỗi thời mà vẫn gánh phần lớn dữ liệu. Chọn "True" là nhầm cả hai vế: bất đối xứng không mặc nhiên an toàn hơn và cũng không thay thế được đối xứng.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Đáp án đúng: "False". RSA (Rivest-Shamir-Adleman) là thuật toán mật mã khoá công khai, tức bất đối xứng: mỗi người có cặp khoá gồm khoá công khai (e, n) và khoá riêng d, với n = p·q là tích hai số nguyên tố lớn và e·d ≡ 1 theo modulo φ(n). Mã hoá là C = M^e mod n, giải mã là M = C^d mod n, hai khoá khác nhau và biết khoá công khai không suy ra khoá riêng nếu không phân tích được n. Mật mã khoá đối xứng thì hai bên dùng chung một khoá cho cả mã hoá và giải mã, như AES hay DES. Trong thực tế RSA thường được dùng để trao khoá đối xứng hoặc ký số, còn dữ liệu lớn được mã bằng thuật toán đối xứng vì nhanh hơn nhiều. Vì phát biểu gọi RSA là đối xứng, nó sai, nên "True" bị loại.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Đáp án đúng: "True". Phân phối khoá (key distribution) là chức năng đưa một khoá tới hai bên muốn trao đổi dữ liệu mã hoá, sao cho kẻ khác không biết được khoá đó. Với mã đối xứng, đây là vấn đề trung tâm: hai bên phải có cùng khoá bí mật trước khi liên lạc. Các cách làm gồm trao tay trực tiếp, nhờ một trung tâm phân phối khoá (key distribution center, KDC) như trong Kerberos, mã hoá khoá mới bằng khoá cũ đã chia sẻ, hoặc dùng mật mã khoá công khai như trao đổi khoá Diffie-Hellman. "False" sai vì phát biểu đúng là định nghĩa chuẩn của phân phối khoá.
Mở trang câu hỏi này →
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 →
A7
B3
C8
D5
E11
Lời giải
Đáp án đúng: "7". Trong Diffie-Hellman, khoá công khai Y_A = a^X_A mod p, nên ta kiểm 10^X_A mod 22 có bằng 10 không. Tính lần lượt: 10^1 = 10, 10^2 = 100 mod 22 = 100 − 88 = 12, 10^3 = 12 × 10 = 120 mod 22 = 120 − 110 = 10, tức dãy lặp chu kỳ 2: số mũ lẻ cho 10, số mũ chẵn cho 12. Vậy 10^7 mod 22 = 10, khớp Y_A, nên "7" thoả. Nhưng cần nói thẳng: đề chọn p = 22 = 2 × 11 không phải số nguyên tố và 10 không phải phần tử nguyên thuỷ (chỉ sinh được hai giá trị 10 và 12), nên "3", "5" và "11" cũng là số mũ lẻ và đều cho Y_A = 10; lôgarit rời rạc ở đây không có nghiệm duy nhất, và "7" là giá trị được chốt cho câu này. Phương án "8" là phương án duy nhất sai về số học, vì số mũ chẵn cho 10^8 mod 22 = 12 ≠ 10. Đây cũng là lý do Diffie-Hellman đòi p nguyên tố lớn và a là phần tử nguyên thuỷ để a^X phủ đủ các giá trị từ 1 tới p − 1.
Mở trang câu hỏi này →
ARSA
BElliptic curve
CDiffie-Hellman key exchange
DDSS
EAll the other choices
Lời giải
Đáp án đúng: "All the other choices". Cả bốn tên đều là thuật toán bất đối xứng được chấp nhận rộng rãi, nên phương án gộp mới là câu trả lời đầy đủ. "RSA" dựa trên độ khó phân tích thừa số tích hai số nguyên tố lớn, dùng được cho mã hoá và ký số. "Elliptic curve" (mật mã đường cong elliptic, ECC) dựa trên bài toán logarit rời rạc trên đường cong elliptic, cho an toàn tương đương RSA với khoá ngắn hơn nhiều. "Diffie-Hellman key exchange" dựa trên bài toán logarit rời rạc modulo p, cho hai bên thoả thuận khoá bí mật chung qua kênh công khai. "DSS" (Digital Signature Standard) là chuẩn chữ ký số của NIST dùng thuật toán DSA, chỉ ký chứ không mã hoá. Mỗi tên riêng lẻ đều đúng nhưng chỉ là một phần, nên chọn riêng một cái là chưa đủ.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Đáp án đúng: "False". Phát biểu đã đảo ngược vai trò của hai cách dùng khoá. Khi người gửi mã hoá bằng khoá công khai của người nhận, chỉ người nhận giải được bằng khoá riêng của mình, nên cách đó bảo vệ tính bí mật (confidentiality) chứ không xác thực người gửi, vì ai cũng có khoá công khai ấy. Khi người gửi dùng khoá riêng của chính mình để ký, ai cũng kiểm được bằng khoá công khai của người gửi, nên nội dung không được giữ bí mật; bù lại nó chứng minh thông điệp do đúng người giữ khoá riêng tạo ra, tức xác thực và chống chối bỏ. Phát biểu gán mã hoá bằng khoá công khai cho xác thực và chữ ký bằng khoá riêng cho bí mật, sai cả hai vế, nên "True" bị loại.
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 →
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 →