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

Câu hỏi: CRY303c - Phần 1: Mật mã học và lý thuyết thông tin

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
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 →
AAlice
BBob
CEve
Lời giải
Đá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á.
Mở trang câu hỏi này →
A1
B512
C1024
D2048
Lời giải
Đáp án đúng: "512". Khoá dài 10 bit tạo không gian 2^10 = 1024 khoá. Kẻ tấn công vét cạn (brute-force) thử lần lượt từng khoá và dừng khi giải mã ra bản rõ có nghĩa; khoá đúng nằm ở vị trí ngẫu nhiên đều trong danh sách, nên trung bình phải thử một nửa không gian, tức 2^(10−1) = 1024 / 2 = 512 lần giải mã. "1" là trường hợp may mắn nhất, thử trúng ngay lần đầu, không phải giá trị trung bình. "1024" là trường hợp xấu nhất với kẻ tấn công, khi khoá đúng nằm ở cuối danh sách. "2048" bằng 2^11, vượt cả số khoá có thể có nên không bao giờ phải thử tới chừng ấy. Công thức chung: khoá n bit cần tối đa 2^n và trung bình 2^(n−1) lần thử.
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 ≈ 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ở.
Mở trang câu hỏi này →
A1
B512
C1024
D2048
Lời giải
Đá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.
Mở trang câu hỏi này →
ACiphertext c
BKey k
CThe XOR-based encryption algorithm
DPlaintext b
Lời giải
Đá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õ).
Mở trang câu hỏi này →
AShannon Maxim
BSecurity by Obscurity
CAttacker knows the system
DOpen design
Lời giải
Đá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.
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". 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.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Đá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ả.
Mở trang câu hỏi này →
ACiphertext c
BKey k
CThe XOR-based encryption algorithm
DPlaintext b
Lời giải
Đá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.
Mở trang câu hỏi này →
APlaintext
BCiphertext
CSecret key
DEncryption algorithm
EDecryption Algorithm
Lời giải
Đá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.
Mở trang câu hỏi này →
ATrue
BFalse
Lời giải
Đá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.
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 →
A0
B8
C16
D32
Lời giải
Đáp án đúng: "8". Khoá dài 4 bit có 2^4 = 16 giá trị có thể. 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 số lần thử trung bình là khoảng một nửa không gian khoá: 16 / 2 = 8 (chính xác là (16 + 1) / 2 = 8.5, thường làm tròn theo quy ước 2^(n−1) = 2^3 = 8). "16" là số lần thử trong trường hợp xấu nhất, khi khoá đúng là khoá cuối cùng được thử. "32" = 2^5, ứng với khoá 5 bit hoặc gấp đôi không gian khoá, không có cơ sở. "0" sai vì kẻ tấn công không biết khoá thì phải thử ít nhất một lần.
Mở trang câu hỏi này →
AAn external user sends a message to a user interaction object.
BAn external user sends a message to an entity object.
CAn external user sends a message to an I/O object.
DAn external user sends a message to a printer object.
Lời giải
Đáp án đúng: "An external user sends a message to a user interaction object.". Trong thiết kế hướng đối tượng theo các lớp ranh giới, điều khiển và thực thể, người dùng bên ngoài chỉ giao tiếp với hệ thống qua đối tượng tương tác người dùng (user interaction object), tức lớp giao diện ở ranh giới hệ thống nhận thao tác và hiển thị kết quả; trên biểu đồ tương tác, thông điệp từ tác nhân ngoài luôn đi vào đối tượng này. "An external user sends a message to an entity object." sai vì đối tượng thực thể chứa dữ liệu lâu dài, chỉ được các đối tượng bên trong truy cập. "An external user sends a message to an I/O object." sai vì đối tượng vào ra giao tiếp với thiết bị vào ra bên ngoài, không phải với người dùng. "An external user sends a message to a printer object." sai vì máy in là thiết bị đầu ra do hệ thống điều khiển, người dùng không gửi thông điệp thẳng tới đối tượng đó.
Mở trang câu hỏi này →
AThe state and transitions inside a control object
BClasses and their relationships
CSoftware objects and the sequence of their interactions
DThe external objects communicating with the system
Lời giải
Đáp án đúng: "Software objects and the sequence of their interactions". Đây là khái niệm thiết kế phần mềm theo UML: biểu đồ tương tác (interaction diagram), gồm biểu đồ tuần tự (sequence diagram) và biểu đồ giao tiếp (communication diagram), thể hiện các đối tượng phần mềm và trình tự thông điệp chúng gửi cho nhau để thực hiện một ca sử dụng hay một chức năng. "The state and transitions inside a control object" là nội dung của biểu đồ trạng thái (state machine diagram), mô tả hành vi bên trong một đối tượng chứ không phải trao đổi giữa các đối tượng. "Classes and their relationships" là biểu đồ lớp (class diagram), mô tả cấu trúc tĩnh. "The external objects communicating with the system" là biểu đồ ngữ cảnh (context diagram), chỉ nêu tác nhân bên ngoài hệ thống, không đi vào đối tượng bên trong.
Mở trang câu hỏi này →
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
Đá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á.
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 →
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 →