Câu hỏi: CRY303c Mật mã ứng dụng – Bộ ôn tập cuối kỳ số 2
48 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/48 câuCòn 28
ATrue
BFalse
Lời giải
Mở trang câu hỏi này →Đá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.
2RSA 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
Mở trang câu hỏi này →Đá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.
ATrue
BFalse
Lời giải
Mở trang câu hỏi này →Đá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.
ATrue
BFalse
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "True". NFT (Non-fungible Token, token không thể thay thế) là một token trên blockchain, thường theo chuẩn ERC-721 của Ethereum, mỗi token có mã định danh duy nhất và không hoán đổi ngang giá với token khác, khác với tiền mã hoá như Bitcoin, nơi mọi đơn vị có giá trị như nhau (fungible). Quyền sở hữu NFT được ghi trong sổ cái phân tán, xác thực bằng chữ ký số của chủ ví và bảo vệ toàn vẹn bằng hàm băm của các khối, nên người ta có thể mua bán, chuyển nhượng và sưu tầm chúng như tài sản mã hoá, thường gắn với tác phẩm số, vật phẩm trò chơi hay vé. Phát biểu đúng như vậy, nên không thể chọn "False"; lưu ý NFT chứng minh quyền sở hữu bản ghi token chứ không tự bảo đảm bản quyền của tệp gốc.
AKey exchange
BEncryption/Decryption
CDigital signature
DAll the other choices
Lời giải
Mở trang câu hỏi này →Đá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á.
ATrue
BFalse
Lời giải
Mở trang câu hỏi này →Đá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á.
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.
A7
B3
C8
D5
E11
Lời giải
Mở trang câu hỏi này →Đá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.
9Which of the following is/are algorithms that are widely accepted for asymmetric cryptography?5 lựa chọn
ARSA
BElliptic curve
CDiffie-Hellman key exchange
DDSS
EAll the other choices
Lời giải
Mở trang câu hỏi này →Đá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 đủ.
ATrue
BFalse
Lời giải
Mở trang câu hỏi này →Đá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.
ATrue
BFalse
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "False". Bí mật hoàn hảo của one-time pad đòi khoá ngẫu nhiên thật, dài bằng thông điệp và mọi chuỗi khoá có xác suất như nhau. Ở đây khoá 1 KB được sinh tất định từ hạt giống (seed) chỉ 1 byte, nên dù dài 1 KB nó chỉ có thể là một trong 2^8 = 256 chuỗi khác nhau, thay vì 2^8192 chuỗi (1 KB = 1024 byte = 8192 bit) mà bí mật hoàn hảo cần. Entropy thật của khoá chỉ là 8 bit: kẻ tấn công thử 256 hạt giống là tìm ra khoá. Việc giữ kín thuật toán sinh khoá vi phạm nguyên lý Kerckhoffs, vì an toàn không được dựa vào sự bí mật của thuật toán. Việc vượt qua bộ kiểm tra ngẫu nhiên của NIST chỉ cho thấy đầu ra trông ngẫu nhiên về thống kê, không làm tăng entropy. Đây là một mã dòng giả ngẫu nhiên rất yếu, không phải one-time pad thật, nên chọn "True" là sai.
ATrue
BFalse
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "True". Tấn công vét cạn (brute-force attack) thử lần lượt từng khoá trong không gian khoá; để biết dừng ở đâu, kẻ tấn công phải nhận ra được bản giải mã nào là đúng. Điều đó đòi hỏi bản rõ có cấu trúc dễ nhận biết, ví dụ văn bản tiếng Anh có nghĩa, tệp có phần đầu định dạng cố định, trong khi khoá sai cho ra chuỗi vô nghĩa (gibberish). Nếu bản rõ là dữ liệu ngẫu nhiên hoặc đã được nén, việc phân biệt khó hơn nhiều, và với one-time pad thì mọi bản rõ cùng độ dài đều có thể xuất hiện nên vét cạn vô dụng. "False" sai vì giả định này đúng là điều kiện để vét cạn có kết quả.
AAlice
BBob
CEve
Lời giải
Mở trang câu hỏi này →Đáp án đúng gồm hai ý: "Alice" và "Bob". Trong thuật ngữ mật mã, Alice và Bob là hai bên hợp lệ muốn trao đổi bí mật: Alice dùng khoá để mã hoá bản rõ (plaintext) thành bản mã (ciphertext), Bob dùng khoá tương ứng để giải mã; với mật mã đối xứng cả hai cùng giữ một khoá bí mật chung, với mật mã bất đối xứng thì mỗi bên giữ khoá riêng của mình. "Eve" (từ eavesdropper, kẻ nghe lén) là kẻ tấn công thụ động trên kênh truyền: theo nguyên lý Kerckhoffs, Eve được giả định biết thuật toán và thấy bản mã nhưng không có khoá, nên toàn bộ an toàn của hệ dựa vào việc khoá chỉ nằm trong tay Alice và Bob. Nếu Eve có khoá thì Eve đọc được mọi thông điệp và hệ mật coi như đã bị phá.
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 kẻ tấn công biết mọi thứ trừ khoá, nên người thiết kế phải giả định thuật toán, ở đây là XOR từng bit, đã công khai. Bản mã đi trên kênh truyền nên cũng mặc định bị nghe được; ví dụ p = 1101 XOR k = 0110 cho từng bit 1⊕0 = 1, 1⊕1 = 0, 0⊕1 = 1, 1⊕0 = 1, tức c = 1011, và kẻ tấn công thấy được chuỗi 1011 này. "Key k" là thứ duy nhất phải giữ bí mật; nếu lộ khoá thì chỉ cần XOR c với k là ra bản rõ, nên không thể giả định kẻ tấn công đã biết. "Plaintext b" là chính thứ kẻ tấn công muốn tìm; nếu đã biết sẵn bản rõ thì việc mã hoá không còn ý nghĩa, nên nó không thuộc giả định của Kerckhoffs.
15_____ is typically a short piece of information used as input to the cipher and only known to Alice and Bob.5 lựa chọn
APlaintext
BCiphertext
CSecret key
DEncryption algorithm
EDecryption Algorithm
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Secret key". Khoá bí mật là một mẩu thông tin thường ngắn (ví dụ 128 hay 256 bit) đưa vào thuật toán mã cùng bản rõ, và chỉ Alice và Bob biết; theo nguyên lý Kerckhoffs, toàn bộ an toàn của hệ dồn vào việc giữ kín khoá này. "Plaintext" là thông điệp gốc cần bảo vệ, là dữ liệu đầu vào được mã hoá, có thể dài tuỳ ý, không phải tham số bí mật hai bên thoả thuận từ trước. "Ciphertext" là đầu ra của phép mã, truyền trên kênh công khai nên Eve cũng thấy. "Encryption algorithm" và "Decryption Algorithm" là các thuật toán mã và giải mã, được giả định công khai, ai cũng biết, chẳng hạn AES; chúng không phải mẩu thông tin chỉ riêng Alice và Bob nắm.
ATrue
BFalse
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "True". Entropy thông tin của Shannon đo độ ngẫu nhiên (độ bất định) của một biến: H = −Σ p(x) · log2 p(x), tính bằng bit. Ví dụ đồng xu cân đối có hai kết quả xác suất 0.5, nên H = −2 × 0.5 × log2(0.5) = 1 bit; một khoá 8 bit chọn đều ngẫu nhiên có 2^8 = 256 giá trị, H = log2(256) = 8 bit; phân bố càng đều, càng nhiều khả năng thì entropy càng lớn. Khi kết quả là tất định, một giá trị có xác suất 1, ta có H = −1 × log2(1) = 0. Vì thế cả ba vế của phát biểu đều đúng, và entropy được dùng để đánh giá độ mạnh của khoá hay mật khẩu. "False" sai vì phát biểu khớp đúng định nghĩa.
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á.
18Which of the following terms is not used interchangeably with message authentication code (MAC)?5 lựa chọn
ADigital signature
BAuthenticator
CTag
DCryptographic checksum
EKeyed hash
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Digital signature". MAC (message authentication code, mã xác thực thông điệp) là một khối dữ liệu ngắn có độ dài cố định, tính từ thông điệp và một khoá bí mật chung K của hai bên; bên nhận tính lại MAC bằng cùng K để kiểm tra toàn vẹn và nguồn gốc. Vì thế nó còn được gọi là "Authenticator" (bộ xác thực), "Tag" (thẻ gắn kèm thông điệp), "Cryptographic checksum" (tổng kiểm tra mật mã, khác checksum thường ở chỗ có khoá) và "Keyed hash" (băm có khoá, như HMAC). Chữ ký số khác về bản chất: nó dùng cặp khoá bất đối xứng, ký bằng khoá riêng và ai có khoá công khai cũng kiểm được, nên cho thêm tính chống chối bỏ (non-repudiation), điều MAC với khoá dùng chung không làm được vì bên nhận cũng tạo ra được đúng MAC đó.
AMAC code is uniformly distributed
BAvalanche effect
CLarge key size
DCollision resistance
EIndependence across bits
Lời giải
Mở trang câu hỏi này →Đáp án đúng: "Independence across bits". Câu hỏi tìm thứ không phải yêu cầu an toàn của MAC. Yêu cầu chuẩn gồm: thấy M và MAC(K, M) thì không tạo được thông điệp khác cùng MAC, tức "Collision resistance" theo nghĩa khó giả mạo; MAC phân bố đều để mỗi lần đoán bừa thẻ n bit chỉ trúng với xác suất 2^(−n), tức "MAC code is uniformly distributed"; mỗi bit thẻ phụ thuộc mọi bit thông điệp, đổi một bit vào thì khoảng nửa số bit ra đổi theo, tức "Avalanche effect". "Large key size" cũng là yêu cầu thật: kẻ tấn công vét khoá k bit tốn cỡ 2^k phép thử, đoán thẻ tốn cỡ 2^n lần, nên công phá MAC cỡ min(2^k, 2^n); khoá 40 bit thì hàm MAC tốt đến đâu cũng bị vét khoá. "Independence across bits" không có trong danh sách đó; nó dễ bị nhầm với lở tuyết, nhưng lở tuyết là quan hệ giữa bit vào và bit ra chứ không phải giữa các bit ra với nhau. Nói thẳng: đáp án in kèm câu hỏi chọn "Large key size", coi độ dài khoá là tham số chứ không phải tính chất của hàm; lời giải này không theo vì thiếu khoá đủ dài thì các tính chất kia không chặn được vét cạn.
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: "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.