Bài 3: Tổng quan về Mật mã học (Cryptography)

1. Mật mã học có thể làm được gì?

Tam giác bảo mật CIA

Mật mã học phục vụ hai trong ba mục tiêu bảo mật thông tin (CIA triad):

Mục tiêuMô tảMật mã giải quyết?
Confidentiality (Bí mật)Ngăn chặn tiết lộ thông tin trái phépCó – bằng mã hóa
Integrity (Toàn vẹn)Ngăn chặn sửa đổi thông tin trái phépCó – bằng hash/MAC/chữ ký số
Availability (Sẵn sàng)Đảm bảo hệ thống luôn hoạt động đượcKhông – đây là mục tiêu hướng hệ thống

2. Mô hình đe dọa (Threat Model)

Trước khi thiết kế hệ thống mật mã, cần xác định rõ mô hình đe dọa:

Kẻ tấn công biết gì?

  • Thuật toán được sử dụng?
  • Hành vi thông thường của người dùng?

Kẻ tấn công có thể truy cập gì?

  • Nội dung giao tiếp?
  • Metadata (ai gửi cho ai, lúc nào)?

Kẻ tấn công có thể làm gì?

  • Thụ động (Passive): chỉ nghe lén, không thay đổi dữ liệu.
  • Chủ động (Active): có thể chặn và sửa đổi dữ liệu.
  • Năng lực tính toán đến đâu?

3. Nguyên tắc Kerckhoffs

Hiểu đơn giản: Tất cả thuật toán phải được công khai. Bảo mật của hệ thống chỉ nên phụ thuộc vào bí mật của khóa (key), không phụ thuộc vào bí mật của thuật toán.

“Security through obscurity” (bảo mật qua che giấu) hầu như không bao giờ hiệu quả.

Đây cũng chính là hiện thân của nguyên tắc Open Design trong thiết kế bảo mật.


4. Sơ đồ mã hóa cơ bản

Alice                         Network                        Bob
  |                              |                             |
  |-- Plaintext (bản rõ) ------> |                             |
  |   "Will you marry me?"       |                             |
  |                              |                             |
[Encryption Function]           |                      [Decryption Function]
  |   + Encryption Key           |                       + Decryption Key
  |                              |                             |
  |-- Ciphertext (bản mã) -----> | -------Ciphertext --------> |
  |   »Mm:+(. ¬@.`$..           |                             |
  |                              |                             |
                                                    Plaintext recovered
                                                    "Will you marry me?"
  • Plaintext: Thông điệp gốc mà người gửi muốn truyền đi.
  • Ciphertext: Dữ liệu được truyền trên kênh không an toàn.
  • Mục tiêu (Semantic Security): Ciphertext không tiết lộ bất kỳ thông tin nào về plaintext cho người không có decryption key.
  • Mục tiêu phụ (Non-malleable Security): Ciphertext không thể bị sửa đổi một cách có ý nghĩa.

Câu hỏi: Decryption Key có cần bí mật không?

Có. Nếu Eve (kẻ tấn công thụ động) biết decryption key, cô ta có thể giải mã mọi ciphertext. Vậy decryption key bắt buộc phải bí mật.

Câu hỏi: Encryption Key có cần bí mật không?

Không nhất thiết! Đây là một trong những đột phá vĩ đại nhất của khoa học máy tính (cuối thập niên 60, đầu 70):

  • Lý thuyết độ phức tạp thời gianNP-completeness cho thấy một số hàm rất dễ tính nhưng cực kỳ khó đảo ngược.
  • Trapdoor function: Hàm khó tính theo chiều thuận, nhưng trở nên dễ dàng nếu có thêm một thông tin bí mật (trapdoor).

Đây là nền tảng của mật mã khóa công khai (Public-Key Cryptography).


5. Mật mã đối xứng (Symmetric Cipher)

Định nghĩa

Mật mã đối xứng sử dụng cùng một khóa cho cả quá trình mã hóa lẫn giải mã.

Encryption: C = E(K, M)
Decryption: M = D(K, C)
  • Ưu điểm: Rất nhanh (AES với AES-NI đạt 5–10 Gbps trên một nhân CPU).
  • Nhược điểm: Khó quản lý khóa – hai bên phải chia sẻ khóa bí mật trước khi giao tiếp, điều này rất khó thực hiện khi giao tiếp với người lạ.
  • Ví dụ thuật toán: DES, AES, Blowfish, RC4 (không nên dùng RC4 vì đã bị phá vỡ).

Block Cipher (Mã khối)

Loại mật mã đối xứng phổ biến nhất. Hoạt động trên từng khối cố định các bit.

Input:  01101...1101  (Plaintext, kích thước = block size)
    [Block Cipher] + Key
Output: 11010...0110  (Ciphertext)

Tham số thiết kế:

  • Block size: Số bit được mã hóa trong một lần áp dụng.
  • Key size: Kích thước khóa tính bằng bit. Nếu khóa có k bit, không gian khóa có $2^k$ khả năng.

6. AES – Advanced Encryption Standard

AES là chuẩn mã khối được NIST chọn, và sau hơn 20 năm, chưa tìm thấy cuộc tấn công mật mã thực tế nào có hiệu quả.

Cấp độ bảo mật theo NIST:

  • Khóa 128-bit: dùng cho mức SECRET
  • Khóa 192 hoặc 256-bit: dùng cho mức TOP SECRET

Hiệu suất:

  • Hoạt động trên đơn vị byte/word → hiệu quả trong phần mềm.
  • Hỗ trợ lệnh CPU chuyên dụng (Intel AES-NI): vượt 10 Gbps trên một nhân.
  • Phần cứng chuyên dụng: đạt hơn 30 Gbps.

7. Các chế độ hoạt động của Block Cipher

Một block cipher chỉ mã hóa đúng một khối. Để mã hóa thông điệp dài hơn, cần dùng chế độ hoạt động (cipher mode).

Cách hoạt động:

Mỗi khối plaintext được mã hóa độc lập với nhau.

C_j = E(K, P_j)    (mã hóa)
P_j = D(K, C_j)    (giải mã)

Vấn đề nghiêm trọng:

Vì mỗi khối được mã hóa độc lập, hai khối plaintext giống nhau sẽ cho ra hai khối ciphertext giống nhau. Điều này lộ ra các mẫu lặp trong dữ liệu – một lỗ hổng bảo mật nghiêm trọng (ví dụ điển hình: ảnh bitmap của tux penguin khi mã hóa ECB vẫn nhìn thấy hình dạng).

Cách hoạt động:

Mỗi khối plaintext được XOR với ciphertext của khối trước trước khi mã hóa.

C_1 = E(K, P_1 ⊕ IV)
C_j = E(K, P_j ⊕ C_{j-1})    với j = 2, ..., N

P_1 = D(K, C_1) ⊕ IV
P_j = D(K, C_j) ⊕ C_{j-1}    với j = 2, ..., N

IV (Initialization Vector):

  • Phải là ngẫu nhiên để đảm bảo tính bảo mật.
  • Được truyền kèm ciphertext (không cần bí mật).
  • Mục đích: đảm bảo cùng một plaintext sẽ tạo ra ciphertext khác nhau mỗi lần.

Ưu điểm:

  • Phá vỡ các mẫu lặp trong plaintext.
  • Thay đổi một khối ảnh hưởng đến tất cả các khối sau.

Nhược điểm:

  • Không thể song song hóa (mã hóa phải tuần tự).
  • Dễ bị tấn công BEAST (2011) nếu IV không được chọn đúng cách.

Cách hoạt động:

Thay vì mã hóa plaintext trực tiếp, CTR mã hóa một bộ đếm (counter) tăng dần và XOR kết quả với plaintext.

C_j = P_j ⊕ E(K, Counter_j)
P_j = C_j ⊕ E(K, Counter_j)

Hình dung: Giống như tạo ra một “One-Time Pad” giả ngẫu nhiên từ counter.

Ưu điểm:

  • Hoàn toàn có thể song song hóa (mỗi khối độc lập nhau).

Nhược điểm:

  • Dễ bị tấn công chủ động (Malleability): Kẻ tấn công có thể lật bit trong ciphertext và tạo ra thay đổi tương ứng, có thể đoán trước được trong plaintext.
  • Giải pháp: Kết hợp với cơ chế bảo vệ tính toàn vẹn (MAC hoặc chữ ký số).

8. Padding (Đệm khối)

Block cipher yêu cầu input phải đúng bằng block size. Nếu plaintext không đủ, cần padding.

Kỹ thuật 1: Bit Padding

Luôn thêm bit 1 vào cuối, rồi thêm các bit 0 để điền đầy khối.

Ví dụ (block 8-bit):

Plaintext gốc:    10111010 110
Sau padding:      10111010 11010000
                           ^^^^^^^
                           1 + sáu số 0

Câu hỏi: Tại sao luôn phải thêm bit 1?

Vì nếu plaintext đã là bội số của block size, ta vẫn phải thêm padding (một khối đầy). Bit 1 là dấu hiệu để bên nhận biết đâu là padding, tránh nhầm lẫn với dữ liệu thực.

Kỹ thuật 2: Byte Count Padding (PKCS#7 / PKCS#5)

Đếm số byte cần padding (ít nhất 1), gọi là c. Thêm c byte, mỗi byte có giá trị c.

Ví dụ (block 32-bit = 4 byte, hex):

Plaintext: 42 1a 49 c3 21         (5 byte, cần thêm 3 byte padding)
Sau padding: 42 1a 49 c3 21 03 03 03
                              ^^^^^^^^
                              3 byte, mỗi byte giá trị 0x03

9. One-Time Pad (OTP)

OTP là hệ thống mật mã bảo mật hoàn hảo (perfect secrecy) về mặt lý thuyết: kẻ tấn công thụ động không thể thu được bất kỳ thông tin nào về plaintext.

Cơ chế: XOR plaintext với một khóa ngẫu nhiên có cùng độ dài.

Ví dụ minh họa lỗ hổng Malleability của OTP

Kết luận về OTP:

  • Bảo mật hoàn hảo trước kẻ tấn công thụ động.
  • Hoàn toàn yếu trước kẻ tấn công chủ động (malleable).
  • Rất khó sử dụng thực tế: khóa phải dài bằng thông điệp, chỉ dùng một lần, và phải phân phối bí mật.

10. Hạn chế của Mật mã Đối xứng

Vấn đề cốt lõi: Quản lý khóa (Key Management)

Với mật mã đối xứng, hai bên phải chia sẻ khóa bí mật trước khi giao tiếp. Điều này dễ thực hiện trong nội bộ tổ chức (ví dụ: quân đội), nhưng không khả thi trong môi trường hiện đại.

Ví dụ: Bạn muốn gửi số thẻ tín dụng cho một cửa hàng trực tuyến lần đầu tiên → Hai bên chưa có khóa chung!

Giải pháp tạm thời: Key Distribution Center (KDC)

Mỗi bên chia sẻ khóa với một trung tâm phân phối khóa (KDC) đáng tin cậy (ví dụ: ngân hàng). KDC làm trung gian trao đổi khóa.

Nhược điểm:

  • Đòi hỏi tin tưởng hoàn toàn vào KDC.
  • KDC trở thành điểm tấn công tập trung.
  • Không thực tế cho người dùng phổ thông.

11. Mật mã Khóa Công khai (Public-Key / Asymmetric Cryptography)

Giải pháp cho vấn đề quản lý khóa.

Ý tưởng cốt lõi

Mỗi người dùng có một cặp khóa:

  • Public Key (PU): Công khai, ai cũng có thể biết và dùng để mã hóa.
  • Private Key (PR): Bí mật tuyệt đối, chỉ chủ sở hữu mới có, dùng để giải mã.
Mã hóa:   C = E(PU_Bob, M)      ← Ai cũng làm được
Giải mã:  M = D(PR_Bob, C)      ← Chỉ Bob làm được

Mô hình bảo vệ Bí mật (Confidentiality)

Alice                                              Bob
  |                                                 |
  | Lấy Public Key của Bob (PU_Bob) - công khai     |
  |                                                 |
[E(PU_Bob, M)] -------- Ciphertext --------> [D(PR_Bob, C)]
                                                    |
                                             Plaintext M

Mô hình bảo vệ Tính toàn vẹn (Integrity) – Chữ ký số

Alice                                              Bob
  |                                                 |
[Signing(PR_Alice, M)] -- Message + Signature --> [Verify(PU_Alice, M, Sig)]
                                                    |
                                             "Chữ ký hợp lệ!"
  • : Chỉ Alice làm được (dùng PR_Alice – bí mật).
  • Xác minh: Ai cũng làm được (dùng PU_Alice – công khai).

Tính chất toán học

Để hệ thống hoạt động, cần đảm bảo:

  1. KPG(R) → (PU, PR) tính được hiệu quả (thời gian đa thức).
  2. D(PR, E(PU, M)) = M (giải mã đúng).
  3. Tính PR từ PUkhông khả thi về mặt tính toán (computationally infeasible).

Khái niệm then chốt: Trapdoor function – Hàm dễ tính theo một chiều, nhưng có thêm thông tin bí mật (trapdoor) thì chiều ngược lại cũng dễ.

Ưu và nhược điểm

Mật mã Đối xứngMật mã Khóa Công khai
Tốc độNhanh (100–1000x)Chậm
Quản lý khóaKhó (cần chia sẻ trước)Dễ (gửi được cho người lạ)
Độ an toànBrute-force (khóa dài là đủ)Dựa vào toán học, cần khóa lớn hơn

12. Thuật toán RSA

Cơ sở toán học: Bài toán phân tích thừa số nguyên tố

RSA dựa trên nhận xét: nhân hai số nguyên tố lớn pq rất dễ, nhưng cho tích n = p*q, tìm lại pq là cực kỳ khó.

Quy trình RSA

Tạo khóa:

1. Chọn hai số nguyên tố lớn p và q
2. Tính n = p * q  và  φ(n) = (p-1) * (q-1)
3. Chọn e ngẫu nhiên sao cho gcd(φ(n), e) = 1  và  1 < e < φ(n)
4. Tính d sao cho d*e ≡ 1 (mod φ(n))  [dùng thuật toán Euclid mở rộng]
5. Public Key:  PU = (e, n)
   Private Key: PR = (d, n)

Mã hóa và giải mã:

Mã hóa:  C = M^e mod n
Giải mã: M = C^d mod n

13. Bài toán Logarithm rời rạc (Discrete Logarithm Problem)

Đây là cơ sở toán học cho nhiều thuật toán khác (ElGamal, Diffie-Hellman).

Định nghĩa: Với mỗi số nguyên tố p, tồn tại căn nguyên thủy (primitive root) g sao cho dãy:

g^1, g^2, g^3, ..., g^(p-1)  (tất cả lấy mod p)

là một hoán vị của {1, 2, 3, ..., p-1}.

Ví dụ: g = 3, p = 17:

i12345678910111213141516
3^i mod 1739101351511161487412261
  • Chiều thuận f(i) = g^i mod p: Tính rất dễ (thuật toán lũy thừa module).
  • Chiều ngược dlog_{g,p}(x) = f^{-1}(x): Tin rằng là rất khó (chưa có thuật toán hiệu quả).

14. Trao đổi khóa Diffie-Hellman (DH)

Giao thức cho phép hai bên thiết lập một khóa bí mật chung qua kênh công khai mà không cần chia sẻ bí mật trước.

Quy trình

Tham số công khai: p (số nguyên tố lớn), g (căn nguyên thủy của p)

Alice                                    Bob
──────────────────────────────────────────────────────
Chọn ngẫu nhiên a ∈ {1,...,p-1}        Chọn ngẫu nhiên b ∈ {1,...,p-1}
(Private key của Alice)                  (Private key của Bob)

A = g^a mod p  ──────────── A ────────>
(Public key của Alice)                   B = g^b mod p
                <─────────── B ──────── (Public key của Bob)

KA = B^a mod p = g^(ba) mod p           KB = A^b mod p = g^(ab) mod p

        KA = KB = g^(ab) mod p  ← Khóa bí mật chung!

Câu hỏi: Eve biết g, p, A, B – có tính được khóa chung không?

Không, vì muốn tính g^(ab) mod p, Eve cần biết a hoặc b. Để tính a từ A = g^a mod p, Eve phải giải bài toán logarithm rời rạc – được tin là cực kỳ khó.


15. So sánh các thuật toán khóa công khai

Thuật toán mã hóa

Thuật toánCơ sở toán họcĐộ khó phá vỡKích thước khóa điển hình
RSAPhân tích thừa sốSemi-hard2048 bit
ElGamalDiscrete Log (mod p)Semi-hard2048 bit
EC ElGamalDiscrete Log (Elliptic Curve)Hard224 bit

Thuật toán trao đổi khóa

Thuật toánCơ sở toán họcĐộ khó phá vỡKích thước khóa điển hình
Diffie-HellmanDiscrete Log (mod p)Semi-hard2048 bit
EC-DHEDiscrete Log (Elliptic Curve)Hard224 bit

Kích thước khóa tương đương (NIST SP 800-57)

Bảo mật đối xứng (bit)AESRSA/DH (FFC)ECC
802TDEA1024 bit160–223 bit
1123TDEA2048 bit224–255 bit
128AES-1283072 bit256–383 bit
192AES-1927680 bit384–511 bit
256AES-25615360 bit512+ bit

16. Mã hóa Lai (Hybrid Encryption)

Kết hợp ưu điểm của cả hai loại:

1. Tạo "session key" ngẫu nhiên (khóa đối xứng tạm thời)
2. Mã hóa MESSAGE bằng session key (dùng AES → nhanh)
3. Mã hóa SESSION KEY bằng public key của người nhận (dùng RSA/ECC)
4. Gửi: [Ciphertext message] + [Encrypted session key]
Đặc điểmGiá trị
Quản lý khóaTốt (gửi được cho người lạ qua public key)
Tốc độ mã hóa thông điệpNhanh (dùng AES)
Độ phức tạp codeCao hơn (dùng hai thuật toán)

Đây là cách TLS/HTTPS hoạt động trong thực tế.


17. Mật mã học cho Bảo vệ Tính toàn vẹn

Ý tưởng chung

Thay vì gửi toàn bộ thông điệp hai lần, ta tính một authenticator (tag) ngắn từ thông điệp và gửi kèm. Bên nhận xác minh authenticator có khớp với thông điệp không.

Thông điệp: 4K-film.avi (4 GB)
Authenticator (SHA-1): be6224d4762c36ad36485de4f90a54c0892c60f4  (20 byte)

Nếu thông điệp hoặc authenticator bị thay đổi → không khớp → phát hiện giả mạo.

Ba loại cơ chế

Cơ chếKhóaCách xác minh
Hash functionKhông cần khóaTính lại hash, so sánh
MAC (Message Authentication Code)Khóa bí mật chungTính lại MAC, so sánh
Digital Signature (Chữ ký số)Khóa riêng để ký, khóa công khai để xác minhKhông thể tính lại!

18. Hàm Hash Mật mã học (Cryptographic Hash Function)

Định nghĩa

H: {0,1}* → {0,1}^n

Nhận input tùy độ dài, trả về output cố định n bit.

Các tính chất cần thiết

Tính chất 1: One-way (Preimage Resistance)

Cho h, không thể tìm x sao cho H(x) = h.

Tức là: Biết hash, không thể tìm ngược ra dữ liệu gốc.

Tính chất 2: Weak Collision Resistance (Second Preimage Resistance)

Cho x, không thể tìm y ≠ x sao cho H(x) = H(y).

Tức là: Biết dữ liệu gốc, không thể tạo ra dữ liệu khác có cùng hash.

Tính chất 3: Strong Collision Resistance (Collision Resistance)

Không thể tìm bất kỳ cặp x ≠ y nào sao cho H(x) = H(y).

Đây là tính chất mạnh nhất: không thể tìm ra bất kỳ hai đầu vào khác nhau nào có cùng đầu ra.

Câu hỏi: Tại sao Hash function không đủ để xác thực thông điệp?

Kịch bản:

Sender   ──── Message + Hash(Message) ────>  Receiver
                     Kênh không an toàn
                         Attacker

Kẻ tấn công có thể:

  1. Thay thế Message bằng Message'.
  2. Tính Hash(Message') (vì thuật toán hash là công khai).
  3. Gửi Message' + Hash(Message').

Bên nhận xác minh thấy hash khớp → bị lừa!

Giải pháp: Cần một khóa bí mật mà chỉ người gửi hợp lệ mới có → dùng MAC hoặc Digital Signature.

Họ thuật toán SHA

SHA (Secure Hash Algorithm) do NIST phát triển:

  • SHA-0 (1993): Đã bị rút lui.
  • SHA-1: Output 160-bit, đã bị phá vỡ thực tế, không nên dùng.
  • SHA-2 (SHA-256, SHA-384, SHA-512): Hiện vẫn an toàn, dùng phổ biến.
  • SHA-3: Chuẩn mới nhất, dựa trên cấu trúc khác hoàn toàn (Keccak).

Câu trắc nghiệm

Câu 1. Trong tam giác CIA, mật mã học có thể bảo vệ trực tiếp những mục tiêu nào?

  • A. Chỉ Confidentiality
  • B. Chỉ Integrity
  • C. Confidentiality và Integrity
  • D. Cả ba: Confidentiality, Integrity và Availability

Câu 2. Nguyên tắc Kerckhoffs phát biểu điều gì?

  • A. Khóa mã hóa phải được giữ bí mật tuyệt đối
  • B. Thuật toán mã hóa có thể công khai, bảo mật chỉ phụ thuộc vào khóa
  • C. Cả thuật toán lẫn khóa đều phải bí mật
  • D. Hệ thống mã hóa an toàn nhất là hệ thống phức tạp nhất

Câu 3. “Security through obscurity” (bảo mật qua che giấu) được đánh giá như thế nào?

  • A. Đây là phương pháp bảo mật tốt nhất
  • B. Chỉ hiệu quả với các tổ chức nhỏ
  • C. Hầu như không bao giờ hiệu quả
  • D. Chỉ áp dụng được cho mật mã đối xứng

Câu 4. Semantic security trong mã hóa có nghĩa là gì?

  • A. Ciphertext phải ngắn hơn plaintext
  • B. Ciphertext không tiết lộ bất kỳ thông tin nào về plaintext cho người không có decryption key
  • C. Ciphertext phải được ký số
  • D. Thuật toán mã hóa phải được công bố

Câu 5. Trong mô hình đe dọa mật mã học, kẻ tấn công “thụ động” (passive) khác kẻ tấn công “chủ động” (active) ở điểm nào?

  • A. Kẻ tấn công thụ động có năng lực tính toán mạnh hơn
  • B. Kẻ tấn công thụ động chỉ nghe lén, không sửa đổi dữ liệu
  • C. Kẻ tấn công thụ động biết nhiều thông tin hơn
  • D. Kẻ tấn công thụ động tấn công từ bên trong mạng

Câu 6. Điều gì bắt buộc phải được giữ bí mật trong hệ thống mã hóa đối xứng?

  • A. Thuật toán mã hóa
  • B. Kích thước khóa
  • C. Khóa bí mật (secret key)
  • D. Kích thước block

Câu 7. AES với Intel AES-NI có thể đạt tốc độ khoảng bao nhiêu trên một nhân CPU?

  • A. 100 Mbps
  • B. 1 Gbps
  • C. 5–10 Gbps
  • D. 100 Gbps

Câu 8. Block cipher yêu cầu điều gì về dữ liệu đầu vào?

  • A. Dữ liệu phải có độ dài bất kỳ
  • B. Dữ liệu phải có độ dài đúng bằng block size
  • C. Dữ liệu phải được nén trước
  • D. Dữ liệu phải ở dạng ASCII

Câu 9. Vấn đề bảo mật nghiêm trọng nhất của chế độ ECB là gì?

  • A. Không thể song song hóa
  • B. Cần IV ngẫu nhiên
  • C. Hai khối plaintext giống nhau tạo ra hai khối ciphertext giống nhau
  • D. Quá chậm

Câu 10. Trong CBC mode, IV (Initialization Vector) phải có tính chất gì?

  • A. Phải bí mật tuyệt đối
  • B. Phải ngẫu nhiên và được truyền kèm ciphertext
  • C. Phải bằng 0
  • D. Phải bằng khóa mã hóa

Câu 11. CBC mode có nhược điểm gì so với CTR mode?

  • A. CBC không an toàn bằng CTR
  • B. CBC không thể song song hóa quá trình mã hóa
  • C. CBC cần khóa lớn hơn
  • D. CBC không hỗ trợ AES

Câu 12. Cuộc tấn công BEAST (2011) nhắm vào điểm yếu nào?

  • A. AES-ECB
  • B. AES-CTR
  • C. AES-CBC với cách chọn IV không đúng
  • D. RSA với khóa nhỏ

Câu 13. CTR mode có điểm yếu gì đối với kẻ tấn công chủ động?

  • A. Không thể song song hóa
  • B. Dễ bị tấn công brute-force
  • C. Ciphertext có thể bị lật bit để thay đổi plaintext theo cách có thể đoán được (malleability)
  • D. Cần IV bí mật

Câu 14. Trong PKCS#7 padding, nếu cần thêm 5 byte padding, các byte đó có giá trị bao nhiêu?

  • A. 0x00
  • B. 0x01
  • C. 0x05
  • D. 0xFF

Câu 15. Tại sao bit padding luôn thêm bit 1 trước các bit 0?

  • A. Để tăng tính ngẫu nhiên
  • B. Để bên nhận biết đâu là padding, kể cả khi plaintext đã là bội số của block size
  • C. Vì bit 1 dễ xử lý hơn
  • D. Để tương thích với AES

Câu 16. One-Time Pad có đặc điểm bảo mật gì?

  • A. Bảo mật hoàn hảo (perfect secrecy)
  • B. Bảo mật tốt nhất hiện có cho tính toàn vẹn
  • C. Dễ sử dụng và quản lý khóa
  • D. Khóa có thể tái sử dụng nhiều lần

Câu 17. Trong ví dụ OTP về điểm số, Mallory đã làm gì để đổi ‘F’ thành ‘A’?

  • A. Giải mã và mã hóa lại ciphertext
  • B. XOR ciphertext với 'F' ⊕ 'A'
  • C. Thay thế ciphertext bằng mã hóa của ‘A’
  • D. Đoán khóa OTP

Câu 18. Vấn đề cốt lõi của mật mã đối xứng khi giao tiếp với người lạ là gì?

  • A. Tốc độ quá chậm
  • B. Không thể chia sẻ khóa bí mật trước khi giao tiếp
  • C. Khóa quá ngắn
  • D. Không hỗ trợ mã hóa file lớn

Câu 19. Trong mật mã khóa công khai, ai có thể mã hóa thông điệp gửi cho Bob?

  • A. Chỉ Alice, người đã được Bob cấp phép
  • B. Bất kỳ ai có public key của Bob
  • C. Chỉ những người có private key của Bob
  • D. Chỉ KDC

Câu 20. Trong chữ ký số, private key được dùng để làm gì?

  • A. Mã hóa thông điệp
  • B. Xác minh chữ ký
  • C. Ký thông điệp
  • D. Tạo session key

Câu 21. Trapdoor function là gì?

  • A. Hàm mã hóa hai chiều
  • B. Hàm khó tính theo cả hai chiều
  • C. Hàm khó tính theo chiều thuận, nhưng dễ tính ngược nếu có thông tin bí mật
  • D. Hàm hash không đảo ngược

Câu 22. Trong RSA, public key gồm những thành phần nào?

  • A. (p, q)
  • B. (d, n)
  • C. (e, n)
  • D. (p, e)

Câu 23. Trong RSA, mã hóa thông điệp M với public key (e, n) cho kết quả nào?

  • A. C = M + e mod n
  • B. C = M^e mod n
  • C. C = e^M mod n
  • D. C = M * e mod n

Câu 24. Bài toán nào là cơ sở toán học của RSA?

  • A. Bài toán logarithm rời rạc
  • B. Bài toán phân tích thừa số nguyên tố
  • C. Bài toán đường đi ngắn nhất
  • D. Bài toán xếp ba lô (Knapsack)

Câu 25. Bài toán nào là cơ sở toán học của Diffie-Hellman?

  • A. Bài toán phân tích thừa số nguyên tố
  • B. Bài toán đường đi ngắn nhất
  • C. Bài toán logarithm rời rạc
  • D. Bài toán đồ thị Hamilton

Câu 26. Trong giao thức Diffie-Hellman, g và p là gì?

  • A. Khóa bí mật của Alice và Bob
  • B. Tham số công khai được chia sẻ trước
  • C. Khóa phiên (session key)
  • D. Ciphertext được trao đổi

Câu 27. Sau khi trao đổi DH, Alice tính khóa chung bằng cách nào?

  • A. KA = A^b mod p
  • B. KA = B^a mod p
  • C. KA = g^(a+b) mod p
  • D. KA = a * b mod p

Câu 28. Tại sao Eve không thể tính khóa chung DH dù biết g, p, A và B?

  • A. Eve không có đủ năng lực tính toán
  • B. Eve cần giải bài toán logarithm rời rạc để tìm a hoặc b, được tin là không khả thi
  • C. Giao thức DH mã hóa A và B trước khi gửi
  • D. Eve không biết thuật toán DH

Câu 29. Điểm yếu chính của DH cơ bản là gì?

  • A. Tốc độ chậm
  • B. Khóa tạo ra quá ngắn
  • C. Dễ bị tấn công Man-in-the-Middle vì không xác thực danh tính
  • D. Không thể dùng với AES

Câu 30. Tại sao ECC (Elliptic Curve Cryptography) có thể dùng khóa ngắn hơn RSA mà vẫn bảo mật tương đương?

  • A. ECC sử dụng thuật toán mã hóa khác
  • B. Bài toán logarithm rời rạc trên đường cong elliptic khó hơn bài toán phân tích thừa số
  • C. ECC sử dụng hai khóa thay vì một
  • D. ECC kết hợp mã hóa đối xứng và bất đối xứng

Câu 31. Kích thước khóa ECC tương đương với AES-128 là bao nhiêu?

  • A. 128 bit
  • B. 256–383 bit
  • C. 1024 bit
  • D. 2048 bit

Câu 32. Hybrid encryption kết hợp hai loại mật mã như thế nào?

  • A. Dùng RSA để mã hóa toàn bộ thông điệp
  • B. Dùng AES để mã hóa thông điệp và RSA/ECC để mã hóa AES session key
  • C. Dùng hash function để mã hóa và RSA để xác minh
  • D. Dùng DH để mã hóa và AES để trao đổi khóa

Câu 33. Ưu điểm chính của mật mã đối xứng so với mật mã khóa công khai là gì?

  • A. Quản lý khóa đơn giản hơn
  • B. Tốc độ nhanh hơn 100–1000 lần
  • C. Không cần khóa
  • D. Không thể bị phá bởi máy tính lượng tử

Câu 34. Tấn công brute-force vào mật mã đối xứng với khóa k-bit cần trung bình bao nhiêu phép thử?

  • A. k phép thử
  • B. 2^k phép thử
  • C. ½ × 2^k phép thử
  • D. k² phép thử

Câu 35. Hash function trong mật mã học nhận đầu vào và trả về đầu ra như thế nào?

  • A. Đầu vào cố định, đầu ra thay đổi
  • B. Đầu vào tùy ý, đầu ra cố định n bit
  • C. Đầu vào và đầu ra đều tùy ý
  • D. Đầu vào và đầu ra đều cố định

Câu 36. Tính chất “Preimage Resistance” của hash function có nghĩa là gì?

  • A. Cho h, không thể tìm x sao cho H(x) = h
  • B. Cho x, không thể tìm y ≠ x sao cho H(x) = H(y)
  • C. Không thể tìm bất kỳ cặp x ≠ y nào có H(x) = H(y)
  • D. Hash luôn cho ra kết quả duy nhất

Câu 37. Tính chất “Second Preimage Resistance” (Weak Collision Resistance) có nghĩa là gì?

  • A. Cho h, không thể tìm x sao cho H(x) = h
  • B. Cho x, không thể tìm y ≠ x sao cho H(x) = H(y)
  • C. Không thể tìm bất kỳ cặp x ≠ y nào có H(x) = H(y)
  • D. Hash function phải nhanh

Câu 38. Tính chất “Strong Collision Resistance” (Collision Resistance) mạnh hơn Second Preimage Resistance ở điểm nào?

  • A. Không cần biết x trước, vẫn không thể tìm bất kỳ cặp x ≠ y nào có cùng hash
  • B. Áp dụng cho khóa bí mật
  • C. Yêu cầu hash dài hơn
  • D. Cần nhiều tài nguyên tính toán hơn

Câu 39. Tại sao hash function đơn thuần không đủ để xác thực thông điệp trên kênh không an toàn?

  • A. Hash quá dài để truyền đi
  • B. Kẻ tấn công có thể thay thế cả thông điệp lẫn hash mới tương ứng
  • C. Hash function quá chậm
  • D. Hash function không hỗ trợ thông điệp dài

Câu 40. Ba cơ chế bảo vệ tính toàn vẹn là gì?

  • A. ECB, CBC, CTR
  • B. RSA, AES, DH
  • C. Hash function, MAC, Digital Signature
  • D. OTP, Block cipher, Stream cipher

Câu 41. Căn nguyên thủy (primitive root) g của số nguyên tố p có đặc điểm gì?

  • A. g² = 1 mod p
  • B. Dãy g¹, g², …, g^(p-1) mod p là hoán vị của {1, 2, …, p-1}
  • C. g = p - 1
  • D. g là ước của p

Câu 42. Trong ví dụ DH với g=3, p=17, nếu Alice chọn a=5, public key A của Alice là bao nhiêu?

  • A. 15
  • B. 5
  • C. 3
  • D. 12

Câu 43. AES được chấp thuận bảo vệ thông tin mật ở mức nào với khóa 128-bit?

  • A. CONFIDENTIAL
  • B. SECRET
  • C. TOP SECRET
  • D. Không được chấp thuận

Câu 44. φ(n) trong RSA với n = p*q được tính như thế nào?

  • A. φ(n) = p + q
  • B. φ(n) = (p+1)*(q+1)
  • C. φ(n) = (p-1)*(q-1)
  • D. φ(n) = p*q - 1

Câu 45. Trong RSA, điều kiện chọn e là gì?

  • A. e phải là số chẵn
  • B. e phải nguyên tố cùng nhau với φ(n) và 1 < e < φ(n)
  • C. e phải nhỏ hơn p và q
  • D. e = d

Câu 46. Mật mã đối xứng về lịch sử được dùng chủ yếu ở đâu?

  • A. Thương mại điện tử
  • B. Internet công cộng
  • C. Trong nội bộ các tổ chức (ví dụ: quân đội)
  • D. Email cá nhân

Câu 47. Điểm khác nhau cơ bản giữa MAC và Hash function là gì?

  • A. MAC cho đầu ra dài hơn
  • B. MAC yêu cầu khóa bí mật chung, hash function thì không
  • C. Hash function nhanh hơn MAC
  • D. MAC chỉ dùng được với AES

Câu 48. Điểm khác nhau quan trọng nhất giữa Digital Signature và MAC là gì?

  • A. Digital Signature nhanh hơn
  • B. Digital Signature dùng khóa bất đối xứng, đảm bảo non-repudiation
  • C. MAC không thể xác minh tính toàn vẹn
  • D. Digital Signature không cần khóa

Câu 49. Nhược điểm chính của One-Time Pad khi dùng thực tế là gì?

  • A. Bảo mật không đủ mạnh
  • B. Khóa phải dài bằng thông điệp và chỉ dùng được một lần, dẫn đến bài toán phân phối khóa khổng lồ
  • C. Tốc độ mã hóa chậm
  • D. Không tương thích với các hệ thống hiện đại

Câu 50. Tại sao mã hóa khóa công khai lại chậm hơn mã hóa đối xứng?

  • A. Khóa công khai dài hơn
  • B. Thuật toán khóa công khai dựa trên các phép toán số học phức tạp (lũy thừa modular với số lớn)
  • C. Khóa công khai cần tải từ server
  • D. Khóa công khai cần mã hóa thêm một lần

Câu 51. SHA-0 được phát triển bởi tổ chức nào và vào năm nào?

  • A. NSA, 1990
  • B. NIST, 1993
  • C. MIT, 1995
  • D. IEEE, 1988

Câu 52. Khi nói “Semi-hard” để mô tả độ khó của một bài toán mật mã, điều đó có nghĩa là gì?

  • A. Bài toán có thể giải trong thời gian đa thức
  • B. Thuật toán tốt nhất để phá có độ phức tạp giữa đa thức và hàm mũ
  • C. Bài toán chưa được nghiên cứu đầy đủ
  • D. Bài toán có thể giải bằng máy tính lượng tử trong thời gian đa thức