Chương 3: Đảm bảo An toàn Thông tin thông qua Mật mã học

Cryptography (Mật mã học) đóng vai trò là nền tảng cốt lõi của Information Security (An toàn thông tin), cho phép chúng ta bảo vệ data (dữ liệu) trong cả quá trình storage (lưu trữ) và transmission (truyền tải). Chương này khám phá các kỹ thuật, thuật toán và giao thức giúp hiện thực hóa việc truyền thông kỹ thuật số an toàn.

Confidentiality

Tính bảo mật

Integrity

Tính toàn vẹn

Authentication

Xác thực

Non-repudiation

Chống chối bỏ

Agenda

1. Tổng quan về Mã hóa Thông tin và các Ứng dụng

  • Các khái niệm chính
  • Các thành phần của một hệ thống mã hóa
  • Lịch sử của mật mã học
  • Mã hóa dòng và Mã hóa khối
  • Các ứng dụng của mật mã học

4. Chữ ký số, Chứng chỉ số và PKI

  • Chữ ký số
  • Chứng chỉ số
  • PKI (Public Key Infrastructure)

2. Các phương pháp mã hóa

  • Phương pháp thay thế
  • Phương pháp hoán vị
  • Phương pháp XOR
  • Phương pháp Vernam
  • Phương pháp mã hóa theo sách / Khóa chạy
  • Phương pháp hàm băm

5. Quản lý khóa và Phân phối khóa

  • Giới thiệu
  • Phân phối khóa bí mật
  • Phân phối khóa công khai

3. Các thuật toán mật mã

  • Các thuật toán mã hóa khóa đối xứng
  • Các thuật toán mã hóa khóa bất đối xứng
  • Các hàm băm

6. Một số giao thức an toàn thông tin dựa trên mật mã học

  • SSL/TLS
  • SET (Secure Electronic Transaction)
  • PGP (Pretty Good Privacy)

7. Câu hỏi ôn tập

Mục tiêu chương

Đến cuối chương này, bạn sẽ có thể tự tin định hướng trong bối cảnh các khái niệm cryptographic và áp dụng chúng vào các tình huống bảo mật thực tế.

Định nghĩa các khái niệm cốt lõi

Hiểu các khái niệm và terminology cơ bản về cryptography

So sánh các phương pháp

Phân biệt các phương pháp symmetric, asymmetrichash

Giải thích các thuật toán chính

Mô tả DES, 3DES, AES, RSA, MD5SHA1

Hiểu về cơ sở hạ tầng tin cậy

Giải thích về digital signatures, certificatesPKI

Quản lý khóa

Tóm tắt vòng đời key management và các phương pháp thực hành tốt nhất

Giao thức bảo mật

Mô tả các giao thức như SSL/TLS, SETPGP

Các Đặc Tính Bảo Mật Của Mật Mã Học

Mật mã học cung cấp các đặc tính bảo mật thiết yếu giúp bảo vệ hệ thống thông tin trước những mối đe dọa cụ thể.

Cryptography vs Cryptanalysis

Cryptography (mật mã học) và cryptanalysis (thám mã) là hai mặt của cùng một đồng xu — chúng cùng tiến hóa trong cuộc chiến không hồi kết giữa tấn công và phòng thủ. Hiểu rõ cả hai là điều cần thiết để xây dựng các hệ thống bảo mật mạnh mẽ.

Các thuật ngữ chính: Plaintext, Ciphertext, Encryption, Decryption

Trước khi đi sâu vào các thuật toán, hãy nắm vững bốn thuật ngữ nền tảng tạo nên từ vựng cho mọi cuộc thảo luận về cryptography.

1

Plaintext

Thông tin có thể đọc được / chưa được mã hóa — thông điệp gốc trước khi thực hiện bất kỳ phép biến đổi nào

2

Ciphertext

Thông tin đã xáo trộn / đã mã hóa — kết quả sau khi biến đổi, trông có vẻ không thể hiểu được

3

Encryption

Xáo trộn plaintext thành ciphertext bằng cách sử dụng một khóa và thuật toán

4

Decryption

Giải mã ciphertext trở lại thành plaintext bằng cách sử dụng một khóa và thuật toán

Tính bảo mật phụ thuộc vào việc giữ bí mật các key — ngay cả khi algorithm được công khai.

Thuật toán, Mật mã, Khóa, Không gian khóa

Bốn thuật ngữ này tạo thành những khối xây dựng của mọi hệ thống mật mã. Hiểu cách chúng liên quan với nhau là rất quan trọng để đánh giá độ mạnh và tính thực tiễn của bất kỳ phương pháp mã hóa nào.

Thuật toán

Quy trình toán học cho việc mã hóa hoặc giải mã — một tập hợp các bước tính toán được định nghĩa rõ ràng

Mật mã

Một cặp thuật toán mã hóa/giải mã hoạt động cùng nhau như một hệ thống hoàn chỉnh

Khóa

Một chuỗi bí mật được mật mã sử dụng để kiểm soát quá trình biến đổi

Không gian khóa

Tổng số các khóa có thể có — ví dụ: một khóa 64-bit tạo ra 2^64 khả năng. Không gian khóa càng lớn = tấn công brute force càng khó

Ba nhóm mật mã học

Toàn bộ mật mã học hiện đại được chia thành ba nhóm chính. Mỗi nhóm phục vụ một mục đích riêng biệt, và các hệ thống thực tế thường kết hợp cả ba để đạt được bảo mật toàn diện.

Hãy xem mật mã symmetric như công cụ đắc lực về tốc độ, asymmetric là công cụ tạo dựng niềm tin, và hash là công cụ xác thực tính toàn vẹn.

Mật mã khóa đối xứng

Trong mật mã khóa đối xứng (còn được gọi là mật mã khóa bí mật), cả người gửi và người nhận đều sử dụng chung một khóa bí mật cho cả quá trình mã hóagiải mã. Đây là họ mật mã nhanh nhất, khiến nó trở nên lý tưởng cho việc mã hóa dữ liệu số lượng lớn.

Quy trình mã khóa đối xứng

Mật mã khóa bất đối xứng

Trong mật mã khóa bất đối xứng (asymmetric-key cryptography), mỗi người dùng sở hữu một public key (chia sẻ công khai) và một private key (giữ bí mật). Chỉ có private key là phải giữ kín, nhưng tính xác thực của public key phải được đảm bảo.

Cách thức hoạt động

  • Public key được dùng để mã hóa (encryption)
  • Private key được dùng để giải mã (decryption)
  • Cho phép phân phối khóa (key distribution) dễ dàng hơn

Khi nào sử dụng

  • Trao đổi khóa (key exchange) giữa các bên
  • Chữ ký số (digital signatures)
  • Mã hóa các lượng dữ liệu nhỏ

Hàm băm (Hash Functions)

Một hàm băm (hash function) ánh xạ đầu vào có độ dài biến đổi thành đầu ra có độ dài cố định được gọi là digest. Về mặt cốt lõi, đây là một quá trình một chiều (one-way): dễ dàng tính toán giá trị băm, nhưng không thể đảo ngược về mặt tính toán.

Từ đầu vào có độ dài biến đổi sang Digest có độ dài cố định

Hàm băm là nền tảng cho việc kiểm tra tính toàn vẹn (integrity), định danh (identification), và là khối xây dựng cho chữ ký số (digital signatures). Ngay cả một thay đổi nhỏ trong đầu vào cũng tạo ra một digest hoàn toàn khác biệt — hiện tượng này được gọi là hiệu ứng thác đổ (avalanche effect).

Các thành phần của hệ mật mã

Một hệ mật mã (cryptosystem) triển khai các kỹ thuật mật mã để cung cấp các dịch vụ bảo mật. Nó bao gồm nhiều thành phần tương tác làm việc cùng nhau để bảo vệ thông tin truyền qua một kênh không an toàn.

Plaintext

Thông điệp gốc

Encryption Algorithm

Biến đổi đầu vào

Ciphertext

Đầu ra đã được xáo trộn

Decryption Algorithm

Khôi phục lại Plaintext

Keys + Keyspace

Các tham số điều khiển

Một keyspace lớn hơn đồng nghĩa với bảo mật cao hơn, vì kẻ tấn công phải tìm kiếm qua nhiều khả năng hơn trong một cuộc tấn công brute-force.

Lịch sử Mật mã học

Mật mã học có lịch sử phong phú kéo dài hàng ngàn năm — từ các nền văn minh cổ đại đến thời đại kỹ thuật số. Mỗi cột mốc đại diện cho một bước nhảy vọt trong cách chúng ta bảo vệ thông tin.

1

~2000 TCN

Ai Cập cổ đại — việc sử dụng sớm nhất được biết đến của các kỹ thuật mật mã (cách đây hơn 4000 năm); cũng được sử dụng ở Hy LạpẤn Độ

2

Thế kỷ 19

Các công cụ toán học đã chính thức hóa các phương pháp và phân tích mật mã

3

1976–1977

DES được chuẩn hóa; trao đổi khóa Diffie-Hellman được công bố; RSA được phát minh

4

1991

PGP được phát hành — mang mật mã khóa công khai đến với người dùng phổ thông

5

2000–2001

AES được chọn và chuẩn hóa — chuẩn mã hóa hiện đại được sử dụng rộng rãi

Mã hóa luồng so với Mã hóa khối

Trong mật mã học đối xứng, có hai phương pháp kiến trúc cơ bản: stream cipher (cipher luồng) xử lý dữ liệu liên tục và block cipher (cipher khối) xử lý dữ liệu theo các khối có kích thước cố định.

Stream: Pi + Ki → Ci (từng bit một) | Block: P1,P2,P3 → C1,C2,C3 (từng khối một)

Các ứng dụng của mật mã học

Mật mã học là nền tảng cho hầu hết mọi hệ thống kỹ thuật số an toàn đang được sử dụng hiện nay. Từ ngân hàng đến blockchain, các công cụ này chuyển đổi các tính chất bảo mật thành các biện pháp bảo vệ thực tế.

Phương pháp

Tổng quan về các phương pháp mã hóa

Các phương pháp mã hóa cổ điển minh họa những ý tưởng cốt lõi vẫn đang vận hành các thuật toán mật mã hiện đại. Hiểu được các khối xây dựng này giúp việc nắm bắt các hệ thống phức tạp trở nên dễ dàng hơn nhiều.

Mật mã thay thế + Ví dụ về mật mã Caesar

Mật mã thay thế (substitution cipher) thay thế từng ký hiệu hoặc bit bằng một ký hiệu khác theo quy tắc ánh xạ. Mật mã Caesar là dạng đơn giản nhất — một phép dịch chuyển cố định 3 vị trí trong bảng chữ cái.

Ví dụ minh họa: "LOVE" → "ORYH"

Thay thế mạnh hơn: Nhiều bảng mã thay thế

Một bảng mã thay thế đơn lẻ rất dễ bị tổn thương trước frequency analysis. Để khắc phục điều này, chúng ta có thể sử dụng nhiều bảng mã thay thế — cùng một chữ cái văn bản gốc sẽ được ánh xạ thành các chữ cái văn bản mã hóa khác nhau tùy thuộc vào vị trí của nó.

Cách thức hoạt động

Hãy tưởng tượng 4 bảng mã thay thế được sử dụng theo chu kỳ dựa trên vị trí:

Điều này có nghĩa là chữ cái 'A' có thể trở thành 'D', 'G', 'L', hoặc 'R' tùy thuộc vào vị trí xuất hiện của nó — hoàn toàn gây khó khăn cho việc frequency analysis.

Hoán vị (Transposition)

Không giống như thay thế, hoán vị (hay transposition) không thay thế các giá trị — nó sắp xếp lại chúng trong một khối có kích thước cố định. Các ký hiệu thực tế vẫn giữ nguyên; chỉ có vị trí của chúng thay đổi theo một khóa.

Hoán vị bit (Bit Permutation)

Sắp xếp lại các vị trí bit trong một khối 8-bit. Ví dụ: vị trí 1→5, 2→3, 3→1, v.v. Bản thân các bit không thay đổi — chỉ có sự sắp xếp của chúng thay đổi.

Hoán vị ký tự (Character Permutation)

Sắp xếp lại các ký tự trong một khối văn bản. Ví dụ: "SACKGAULSPARENOONE" được chia thành các khối 8 ký tự. Khối cuối cùng "NE" được đệm bằng dấu cách để đạt được kích thước khối đầy đủ là 8.

Hoán vị cung cấp khuếch tán (diffusion) — lan truyền ảnh hưởng của văn bản gốc (plaintext) khắp văn bản mã hóa (ciphertext). Trong các thuật toán mã hóa hiện đại như DESAES, các lớp hoán vị hoạt động song song với thay thế để đạt được mức độ bảo mật tối đa.

Phương pháp XOR

Mã hóa XOR có nguyên lý vô cùng đơn giản: mỗi bit văn bản mã hóa bằng bit văn bản thuần XOR bit khóa. Vì XOR là phép toán có thể đảo ngược, việc giải mã sử dụng chính xác cùng một thao tác: văn bản mã hóa XOR khóa = văn bản thuần.

Bảng chân trị XOR

Ví dụ minh họa: Văn bản thuần "CAT", Khóa "VVV"

Mật mã Vernam (One-Time Pad)

Mật mã Vernam sử dụng một one-time pad, trong đó mỗi ký hiệu trên pad chỉ được sử dụng duy nhất một lần. Khi pad thực sự ngẫu nhiên và không bao giờ bị tái sử dụng, phương pháp này đạt được perfect secrecy — về mặt toán học là không thể phá giải.

Ánh xạ

Ánh xạ các chữ cái sang số 1–26 (A=1, B=2, …Z=26)

Cộng

Cộng số của plaintext + số của pad

Mod

Nếu tổng > 26, trừ đi 26 (mod 26)

Chuyển đổi

Ánh xạ kết quả trở lại thành chữ cái

Ví dụ minh họa (6 ký tự đầu tiên)

Plaintext: "SACKGAULSPARENOONE" | Pad: "FPQRNSBIEHTZLACDGJ"

Các phương pháp

Book Cipher / Running Key

Book cipher (hay phương pháp running key) thực hiện mã hóa và giải mã bằng cách sử dụng các khóa có trong sách. Ngày nay, phương pháp này thường được sử dụng trong các bộ phim về thám tử/gián điệp do tính chất bí ẩn của nó.

Các bước giải mã

Kết quả văn bản gốc (plaintext): "sack island sharp path"

Phương pháp Hash

Hash tạo ra một digest có độ dài cố định để đảm bảo tính toàn vẹnđịnh danh:

Các phương pháp

Mật mã khóa đối xứng

Mật mã khóa đối xứng (hoặc mật mã khóa bí mật) sử dụng một khóa bí mật duy nhất cho cả quá trình mã hóa và giải mã. Khóa này — còn được gọi là khóa chia sẻ — phải được trao đổi một cách an toàn giữa các bên trước khi quá trình giao tiếp có thể diễn ra.

Đặc điểm chính

  • Các kích thước khóa phổ biến: 64, 128, 192, 256 bits
  • Các khóa < 128 bits bị coi là không an toàn do tốc độ tính toán hiện đại
  • Các hệ thống bảo mật ngày nay sử dụng khóa ≥ 128 bits

Ưu điểm

  • Tính bảo mật cao
  • Tốc độ thực thi nhanh

Nhược điểm

  • Quản lý và phân phối khóa khó khăn
  • Trong các môi trường mở (Internet): các bên phải trao đổi khóa bí mật một cách an toàn trước khi mã hóa/giải mã tin nhắn

So sánh các thuật toán đối xứng

Dưới đây là bảng so sánh các thuật toán đối xứng quan trọng nhất. Lưu ý rằng các khóa ngắn hơn 128-bit thường được coi là không an toàn trong bối cảnh hiện đại do các cuộc tấn công vét cạn (brute-force) là hoàn toàn khả thi.

DES: Data Encryption Standard

DES có nguồn gốc từ dự án Lucifer của IBM vào đầu những năm 1970 và trở thành tiêu chuẩn của Hoa Kỳ vào cuối những năm 1970. Mặc dù có ý nghĩa lịch sử quan trọng, nhưng keyspace (không gian khóa) nhỏ khiến nó dễ bị tổn thương ở thời điểm hiện tại.

1

Block Cipher

Hoạt động trên các block 64-bit của bản rõ tại một thời điểm

2

Cấu trúc khóa

Khóa 64-bit với chỉ 56 bit hiệu dụng + 8 bit chẵn lẻ (parity bits)

3

Tại sao nó yếu

Keyspace 56-bit = 2^56 khả năng — khả thi để thực hiện brute force với phần cứng hiện đại

Các khâu mã hóa và giải mã của DES

Tạo Subkey cho DES (Lịch trình khóa)

Trước khi DES có thể mã hóa, nó phải tạo ra 16 subkeys — một cho mỗi vòng trong hàm Feistel — từ khóa 56-bit ban đầu. Quá trình này được gọi là lịch trình khóa (key schedule).

1

Phép hoán vị PC1

Chọn 56 bit từ khóa 64-bit (loại bỏ 8 bit chẵn lẻ)

2

Chia đôi

Chia thành hai nửa 28-bit (C₀ và D₀)

3

Dịch trái

Thực hiện dịch trái (1 hoặc 2 vị trí tùy thuộc vào số vòng)

4

Phép hoán vị PC2

Chọn 48 bit từ các nửa đã dịch để tạo ra mỗi subkey

5

Lặp lại

Tạo tất cả 16 subkeys (Subkey1 đến Subkey16) cho 16 vòng

Quy trình tạo khóa phụ DES (Key Schedule)

Thủ tục sinh các khóa phụ từ khóa chính của DES

Quy trình mã hóa DES

Với mỗi khối đầu vào 64-bit, DES thực hiện 3 bước xử lý để biến đổi nó thành khối bản mã 64-bit tương ứng.

01

Bước 1: Initial Permutation (IP)

Sắp xếp lại 64 bit của khối bản rõ theo bảng hoán vị cố định trước khi bắt đầu mã hóa.

02

Bước 2: 16 Feistel Rounds

Giai đoạn xáo trộn chính. Mỗi vòng sử dụng hàm Feistel (F) với khóa phụ 48-bit. Sau mỗi vòng, các kết quả trung gian được kết hợp bằng cách sử dụng XOR (⊕), và hai nửa 32-bit trái/phải được tráo đổi.

03

Bước 3: Final Permutation (FP)

Phép nghịch đảo của IP. Sắp xếp lại các bit của đầu ra đã kết hợp để tạo ra khối bản mã 64-bit cuối cùng.

Hàm Feistel (F) trong DES

Hàm Feistel là cốt lõi mật mã của mỗi vòng DES, xử lý nửa khối 32-bit thông qua 4 giai đoạn chính.

01

E: Mở rộng (Expansion)

Mở rộng đầu vào 32-bit thành 48-bit để trộn lẫn với subkey.

02

⊕: XOR với Subkey

Kết quả 48-bit được XOR với subkey 48-bit (Ki) của vòng đó.

03

S: Thay thế (S-Boxes)

Sử dụng 8 S-box để biến đổi phi tuyến tính, chuyển 48-bit thành 32-bit.

04

P: Hoán vị (Permutation)

Sắp xếp lại các bit bằng P-box để tạo đầu ra 32-bit cuối cùng.

Các bước xử lý của hàm Feistel (F)

Quy trình giải mã DES

Thuật toán DES có thể được sử dụng cho cả mã hóa và giải mã. Quy trình giải mã tuân theo các bước tương tự như mã hóa. Tuy nhiên, các subkey được áp dụng theo thứ tự ngược lại: subkey 16, 15, …, 2, 1 được sử dụng cho các vòng 1, 2, …, 15, 16 tương ứng.

01

Cấu trúc 3 giai đoạn giống hệt

IP → 16 vòng Feistel → FP, giống hệt với quá trình mã hóa.

02

Thứ tự subkey đảo ngược

Các subkey K16, K15, …, K2, K1 được áp dụng cho các vòng 1, 2, …, 15, 16 tương ứng (ngược lại với thứ tự mã hóa).

03

Kết quả

Khối ciphertext 64-bit được chuyển đổi ngược lại thành khối plaintext 64-bit ban đầu.

3-DES (Triple Data Encryption Algorithm)

3DES: Triple DES

3DES áp dụng thuật toán DES 3 lần cho mỗi khối 64-bit sử dụng tối đa ba khóa độc lập. Nó được thiết kế như một bản nâng cấp thay thế trực tiếp khi khóa 56-bit của DES trở nên quá yếu.

Các tùy chọn khóa

Luồng EDE

Mã hóa: E(K1) → D(K2) → E(K3)

Giải mã: D(K3) → E(K2) → D(K1)

Đánh đổi: Mạnh hơn DES nhưng chậm hơn khoảng 3 lần — đó là lý do tại sao AES cuối cùng đã thay thế nó.

Mã hóa và giải mã với giải thuật 3-DES

AES: Tiêu chuẩn Mã hóa Nâng cao


AES: Advanced Encryption Standard

AES là một tiêu chuẩn mã hóa khối được NIST công nhận vào năm 2001, dựa trên thuật toán Rijndael do các nhà mật mã học người Bỉ Joan Daemen & Vincent Rijmen phát triển năm 1998. Nó sử dụng Mạng thay thế-hoán vị (Substitution-Permutation Network - SPN) và mang lại hiệu suất cao trên cả phần mềm lẫn phần cứng.

Nguồn gốc

Dựa trên thuật toán Rijndael (1998) bởi Joan Daemen & Vincent Rijmen (Bỉ). Được NIST chuẩn hóa năm 2001 thành FIPS PUB 197.

Kích thước Khối & Khóa

Kích thước khối cố định: 128 bit. Kích thước khóa: 128, 192, hoặc 256 bit. Số vòng lặp tăng dần theo kích thước khóa: lần lượt là 10 / 12 / 14 vòng.

Kiến trúc

Được xây dựng trên Mạng thay thế-hoán vị (SPN). Hoạt động trên một ma trận trạng thái 4×4 byte thông qua nhiều vòng biến đổi.

Hiệu suất

Hiệu quả cao trên cả phần mềm và phần cứng. Các bộ xử lý Intel bao gồm tập lệnh AES-NI để tăng tốc phần cứng cho quá trình mã hóa và giải mã AES.

Quy trình mã hóa AES

AES biến đổi dữ liệu thành văn bản mã hóa thông qua một chuỗi các vòng lặp cấu trúc chặt chẽ trên ma trận trạng thái 4x4.

01

Key Expansion

  • Tạo các khóa vòng lặp từ khóa gốc.
  • Số lượng khóa phụ thuộc vào độ dài khóa (11, 13 hoặc 15 khóa).
02

Initial Round

  • Thực hiện phép XOR (⊕) giữa trạng thái dữ liệu và khóa vòng lặp đầu tiên.
03

Main Rounds

  • Áp dụng lặp lại 4 bước: SubBytes, ShiftRows, MixColumns và AddRoundKey.
04

Final Round

  • Thực hiện các bước như vòng chính nhưng bỏ qua bước MixColumns.

Các bước xử lý mã hóa dữ liệu của AES


Mở rộng khóa AES: Rijndael Key Schedule

Quy trình này sử dụng khóa gốc để tạo ra các khóa vòng (khóa con) cần thiết cho mỗi vòng xử lý AES.

01

RotWord

Xoay vòng trái 8-bit trên mỗi từ 32-bit của khóa để thay đổi vị trí các byte.

02

SubBytes

Thay thế byte phi tuyến tính bằng cách sử dụng bảng tra cứu S-box.

03

Rcon

Áp dụng hằng số vòng duy nhất cho mỗi vòng để đảm bảo tính khác biệt của khóa.

04

ShiftRow

Thực hiện dịch hàng các byte tương tự như trong quá trình mã hóa chính.

Thủ tục sinh khóa Rijndael


Các hàm biến đổi cốt lõi của AES

Mỗi vòng AES áp dụng bốn hàm biến đổi cho ma trận trạng thái 4×4 byte, cung cấp cả tính hỗn loạn (confusion) và tính khuếch tán (diffusion).

SubBytes

Mỗi byte trong ma trận trạng thái được thay thế bằng một byte tương ứng từ S-box của Rijndael: bij = S(aij). S-box là một bảng tra cứu phi tuyến tính được tạo bằng cách sử dụng nghịch đảo nhân trong trường hữu hạn GF(2⁸). Trong quá trình mã hóa, S-box được sử dụng; trong quá trình giải mã, S-box nghịch đảo được áp dụng.

ShiftRows

Các hàng của ma trận trạng thái được dịch vòng sang trái:

  • Hàng 0: không dịch
  • Hàng 1: dịch 1 byte sang trái
  • Hàng 2: dịch 2 byte sang trái
  • Hàng 3: dịch 3 byte sang trái

MixColumns

Mỗi cột của ma trận trạng thái được nhân với một đa thức cố định c(x) = 3x³ + x² + x + 2. Điều này trộn 4 byte trong mỗi cột, tạo ra sự khuếch tán trên toàn bộ trạng thái.

AddRoundKey

Mỗi byte của ma trận trạng thái được kết hợp với byte tương ứng của khóa vòng hiện tại bằng phép XOR (⊕). Điều này kết hợp vật liệu khóa bí mật vào trạng thái ở mỗi vòng.

Các phép biến đổi AES B: MixColumns + AddRoundKey

Hai phép biến đổi còn lại hoàn tất mỗi vòng bằng cách trộn dữ liệu trong các cột và kết hợp với round key.

MixColumns

Trộn các byte trong mỗi cột bằng cách sử dụng phép nhân đa thức trên trường GF(2^8) với đa thức c(x) = 3x³ + x² + x + 2. Mỗi byte đầu ra phụ thuộc vào tất cả bốn byte đầu vào trong cột — mang lại khả năng diffusion mạnh mẽ. Giải mã sử dụng InvMixColumns.

AddRoundKey

XOR toàn bộ trạng thái với round key hiện tại. Đây là bước mà vật liệu khóa bí mật thực sự tham gia vào quá trình tính toán. Đây là phép biến đổi đơn giản nhất nhưng đóng vai trò quan trọng đối với bảo mật — nếu không có nó, AES sẽ là một hoán vị cố định, không phụ thuộc vào khóa.

Các phép biến đổi AES A: SubBytes + ShiftRows

Hai phép biến đổi đầu tiên trong mỗi vòng AES giới thiệu confusion (SubBytes) và diffusion (ShiftRows) vào ma trận trạng thái.

SubBytes

Một phép thay thế S-box phi tuyến tính được áp dụng cho mọi byte trong trạng thái một cách độc lập. Mỗi byte được ánh xạ tới một giá trị mới sử dụng một bảng tra cứu cố định.

Đây là nguồn chính của confusion trong AES — làm mờ mối quan hệ giữa khóa và văn bản mã hóa.

Quá trình giải mã sử dụng InvSubBytes.

ShiftRows

Các phép dịch trái vòng được áp dụng theo hàng:

  • Hàng 0: dịch 0 vị trí (không thay đổi)
  • Hàng 1: dịch 1 vị trí sang trái
  • Hàng 2: dịch 2 vị trí sang trái
  • Hàng 3: dịch 3 vị trí sang trái

Phép toán này phân tán các byte của mỗi hàng qua các cột khác nhau, cung cấp diffusion. Quá trình giải mã sử dụng InvShiftRows.

Hàm SubBytes sử dụng Rijndael S-box

Hàm ShiftRows

Hàm MixColumns

Hàm AddRoundKey


Tóm tắt mở rộng khóa và giải mã AES

Mở rộng khóa tạo ra tất cả các round key từ khóa mật mã gốc bằng cách sử dụng Rijndael key schedule. Giải mã đơn giản là áp dụng các biến đổi nghịch đảo theo thứ tự ngược lại.

Các bước mở rộng khóa

RotWord

Xoay các byte trong một từ

SubBytes

Áp dụng S-box cho từng byte

Rcon

XOR với round constant

ShiftRow

Bước dịch chuyển cụ thể trong lịch trình khóa

Biến đổi mã hóa so với giải mã

Đầu ra: RoundKey0 … RoundKeyN (trong đó N = 10, 12, hoặc 14)

Quá trình mã hóa và giải mã trong AES

Các thuật toán bất đối xứng

Thuật toán bất đối xứng: Tại sao chúng tồn tại

  1. Mật mã học bất đối xứng được phát minh để giải quyết vấn đề phân phối khóa vốn là nhược điểm của các hệ thống đối xứng. Bằng cách sử dụng cặp khóa công khai/bí mật, các bên có thể giao tiếp an toàn mà không bao giờ cần phải chia sẻ khóa bí mật trước đó.

Tạo khóa RSA (Từng bước)

Việc tạo một cặp khóa RSA bao gồm việc chọn các số nguyên tố và tính toán các giá trị liên quan. Mỗi bước đều được xây dựng dựa trên bước trước đó theo một trình tự toán học chính xác.

1

Chọn các số nguyên tố

Chọn hai số nguyên tố pq lớn

2

Tính n

Tính n = p × q — đây là modulus

3

Tính Φ(n)

Tính Φ(n) = (p−1)(q−1) — hàm phi Euler

4

Chọn e

Chọn e sao cho gcd(e, Φ(n)) = 1 — số mũ công khai

5

Tính d

Tìm d ≡ e⁻¹ (mod Φ(n)) — số mũ bí mật

6

Cặp khóa

Khóa công khai: (n, e) | Khóa bí mật: (n, d)

Các công thức Mã hóa & Giải mã RSA

Sau khi các khóa được tạo, quá trình mã hóagiải mã RSA tuân theo các công thức toán học thanh lịch. Đối với các thông điệp dài, văn bản gốc (plaintext) phải được chia thành các khối mi < n.

Mã hóa

Chuyển đổi văn bản gốc thành số m < n
c = m^e mod n
Gửi bản mã c

Giải mã

Nhận bản mã c
m = c^d mod n
Khôi phục văn bản gốc m

Mối quan hệ toán học giữa ed đảm bảo rằng việc giải mã hoàn toàn đảo ngược quá trình mã hóa: m = (m^e)^d mod n.

Ví dụ minh họa RSA

Một bước đi chi tiết về RSA sử dụng các số nguyên tố nhỏ để minh họa từng bước — từ tạo khóa đến mã hóa và giải mã.

Tạo khóa

  • p = 3, q = 11 (hai số nguyên tố)
  • n = p × q = 33
  • φ(n) = (p−1)(q−1) = 20
  • e = 7 (nguyên tố cùng nhau với φ(n))
  • d = 3 (vì d × 7 mod 20 = 1)
  • Khóa công khai: (n=33, e=7)
  • Khóa bí mật: (n=33, d=3)

Mã hóa

  • Plaintext: m = 6
  • c = mᵉ mod n = 6⁷ mod 33
  • = 279,936 mod 33
  • Ciphertext: c = 30

Giải mã

  • Ciphertext: c = 30
  • m = cᵈ mod n = 30³ mod 33
  • = 27,000 mod 33
  • Plaintext: m = 6 ✓

Các yêu cầu về an toàn khóa RSA

Việc lựa chọn các tham số RSA một cách bất cẩn có thể phá hủy hoàn toàn tính bảo mật của thuật toán. Dưới đây là các ràng buộc thực tế bạn phải tuân theo để giữ cho RSA có khả năng chống lại các cuộc tấn công đã biết.

Các hàm băm (Hash Functions)

Hàm băm: Thuộc tính + Mô hình Digest

Hàm băm là một hàm toán học h với ít nhất 2 thuộc tính cơ bản:

Nén (Compression)

h ánh xạ một chuỗi đầu vào x với độ dài bất kỳ sang một chuỗi đầu ra h(x) với độ dài cố định n bit.

Dễ dàng tính toán (Ease of Computation)

Với hàm h và đầu vào x, việc tính h(x) là đơn giản.

Hình 3.26 minh họa mô hình nén thông tin của một hàm băm, trong đó một Thông điệp đầu vào với độ dài bất kỳ đi qua nhiều vòng xử lý của hàm băm để tạo ra một đầu ra có kích thước cố định gọi là Digest.

Mô hình Digest của hàm băm

Mô hình nén thông tin của hàm băm

Phân loại hàm băm - Có khóa so với Không khóa

Các hàm băm được chia thành hai loại dựa trên việc có sử dụng khóa bí mật hay không. Sự phân biệt này quyết định các đảm bảo bảo mật mà chúng cung cấp.

Phân loại các hàm băm theo khóa sử dụng

Phân loại hàm băm - MDC so với MAC

Các hàm băm có thể được chia thành 2 danh mục chính dựa trên chức năng của chúng:

MDC (Modification Detection Code)

MDC được sử dụng để tạo ra một bản tóm lược đại diện cho thông điệp và được kết hợp với các kỹ thuật khác (chẳng hạn như chữ ký số) để đảm bảo tính toàn vẹn của thông điệp. MDC là một hàm băm không sử dụng khóa. Nó có hai loại phụ:

  • OWHF (One-Way Hash Functions): Việc tính toán giá trị băm là dễ dàng, nhưng việc khôi phục thông điệp từ giá trị băm là không khả thi về mặt tính toán.
  • CRHF (Collision Resistant Hash Functions): Việc tìm hai thông điệp khác nhau tạo ra cùng một giá trị băm là không khả thi về mặt tính toán.

MAC (Message Authentication Code)

MAC cũng được sử dụng để đảm bảo tính toàn vẹn của thông điệp mà không yêu cầu bất kỳ kỹ thuật bổ sung nào. MAC là một hàm băm có khóa, nhận cả thông điệp và một khóa bí mật làm đầu vào.

Mô hình xử lý hàm băm

Một hàm băm xử lý thông báo đầu vào có độ dài tùy ý thông qua một quá trình nén lặp lại để tạo ra đầu ra có độ dài cố định. Đầu ra kết quả có thể tùy chọn trải qua giai đoạn chuyển đổi định dạng để tạo ra giá trị băm cuối cùng.

Quy trình xử lý ba giai đoạn

01

Giai đoạn 1 — Tiền xử lý

Thông báo đầu vào x trước tiên được đệm bằng cách thêm các bit bổ sung và mã hóa độ dài thông báo. Thông báo đã đệm sau đó được chia thành các khối kích thước cố định, tạo ra một chuỗi: x = x₁ x₂ … xₜ. t khối này đóng vai trò là đầu vào cho giai đoạn xử lý lặp lại.

02

Giai đoạn 2 — Xử lý lặp lại

Mỗi khối xᵢ được xử lý tuần tự bằng cách sử dụng hàm nén f. Hàm này cập nhật trạng thái nội bộ tại mỗi bước, tạo ra các đầu ra trung gian H₁, H₂, …, Hₜ. Sau khi tất cả t khối được xử lý, trạng thái nội bộ cuối cùng Hₜ sẽ thu được.

03

Giai đoạn 3 — Chuyển đổi đầu ra

Trạng thái cuối cùng Hₜ được chuyển đổi tùy chọn bởi hàm g để tạo ra giá trị băm cuối cùng h(x). Nếu không cần chuyển đổi, Hₜ được sử dụng trực tiếp làm đầu ra.

Mô hình tổng quát xử lý dữ liệu của hàm băm

Mô hình chi tiết xử lý dữ liệu của hàm băm

Các hàm băm mật mã phổ biến

Hầu hết các hàm băm được giới thiệu trong phần này là các hàm băm không khóa. Các họ hàm băm chính bao gồm:

Họ MD (Message Digest)

  • MD2
  • MD4
  • MD5
  • MD6

Họ SHA (Secure Hash Algorithm)

  • SHA-0
  • SHA-1
  • SHA-2
  • SHA-3

Các cơ chế khác

  • CRC (Cyclic Redundancy Check)
  • Checksums
  • Các hàm xác thực tính toàn vẹn liên quan

Hàm băm MD5 — Giới thiệu

MD5 (Message Digest 5) là một hàm băm mật mã không khóa được Ronald Rivest thiết kế vào năm 1991 để thay thế cho MD4. Nó tạo ra giá trị băm 128-bit (16-byte), thường được biểu diễn dưới dạng 32 ký tự thập lục phân.

Ứng dụng

  • Xác minh tính toàn vẹn của thông điệp
  • Kiểm tra Checksum và tính toàn vẹn của dữ liệu
  • Băm mật khẩu trong các hệ điều hành và ứng dụng

Trạng thái bảo mật

MD5 không còn được coi là an toàn do các điểm yếu mật mã đã biết. Một số cuộc tấn công đã khai thác các điểm yếu này, bao gồm cuộc tấn công phần mềm độc hại Flame vào năm 2012.

MD5 — Xử lý thông điệp

MD5 xử lý thông điệp qua hai giai đoạn: tiền xử lý và xử lý lặp.

01

Giai đoạn 1 — Tiền xử lý

  • Chia thông điệp thành các khối 512-bit.
  • Thêm bit đệm nếu độ dài không đủ bội số 512.
02

Giai đoạn 2 — Xử lý lặp

  • Khởi tạo trạng thái nội bộ 128-bit (A, B, C, D).
  • Cập nhật trạng thái qua 4 vòng với 16 phép toán mỗi vòng.
  • Sử dụng hàm phi tuyến tính, cộng modulo 2³² và xoay trái.

Các hàm phi tuyến tính

Lưu đồ xử lý một thao tác của MD5

Hàm băm SHA-1 — Tổng quan

SHA-1 (Secure Hash Algorithm 1) được thiết kế bởi Cơ quan An ninh Quốc gia Hoa Kỳ (NSA) vào năm 1995 như là phiên bản kế nhiệm của SHA-0. Nó tạo ra một giá trị băm 160-bit, thường được biểu diễn dưới dạng 40 ký tự thập lục phân.

Ứng dụng

  • Chữ ký số và hệ thống chứng chỉ
  • Toàn vẹn thông điệp và xác thực
  • Các giao thức bảo mật mạng (TLS, SSL, SSH)
  • Xác minh tính toàn vẹn trong phân phối phần mềm

Tình trạng bảo mật

SHA-1 không còn được khuyến nghị cho các ứng dụng bảo mật do những điểm yếu về mật mã đã được phát hiện và các cuộc tấn công va chạm thực tế được các nhà nghiên cứu chứng minh.

Xử lý thông điệp SHA-1

SHA-1 xử lý thông điệp qua hai giai đoạn chính: tiền xử lý và xử lý lặp.

01

Giai đoạn 1 — Tiền xử lý

  • Chia thông điệp thành các khối 512-bit.
  • Thêm bit đệm để đảm bảo độ dài đúng chuẩn.
02

Giai đoạn 2 — Xử lý lặp

  • Chia trạng thái 160-bit thành năm từ 32-bit (A, B, C, D, E).
  • Thực hiện 80 vòng xử lý tuần tự cho mỗi khối.

Các hàm vòng



Lưu đồ một vòng xử lý của SHA-1

Chữ ký số

Tin cậy

Chữ ký số: Các khái niệm cốt lõi

Chữ ký số là dữ liệu liên kết toán học giữa thông điệp và người gửi, đảm bảo tính toàn vẹn và chống chối bỏ.

Quy trình Ký & Xác thực

Quy trình ký liên quan đến hai bên — người gửi thực hiện ký và người nhận thực hiện xác thực. Kiểm tra quan trọng nhất là liệu MD1 = MD2 hay không.

Người gửi (Ký)

  1. Tính message digest bằng hash algorithm
  1. Ký vào digest bằng private key + signature algorithm
  1. Gửi thông điệp đã ký (message + digital signature)

Người nhận (Xác thực)

  1. Tách messagesignature
  1. Tính MD1 từ message đã nhận (cùng hàm băm)
  1. Khôi phục MD2 bằng cách giải mã signature với public key của người gửi
  1. So sánh: MD1 = MD2? Hợp lệ / Không hợp lệ

Quá trình tạo chữ ký số và kiểm tra chữ ký số


"RSA cho mã hóa" so với "RSA cho chữ ký"

Một nguồn gây nhầm lẫn phổ biến: RSA sử dụng cùng một công thức toán học cho cả mã hóa và ký số, nhưng vai trò của khóa bị hoán đổi. Việc hiểu rõ khóa nào thực hiện nhiệm vụ gì là vô cùng thiết yếu.

Algorithms

Digital Signature Algorithm (DSA)

DSA (Digital Signature Algorithm) là một thuật toán chữ ký số khóa công khai bắt nguồn từ Thuật toán Chữ ký ElGamal.

Được chuẩn hóa bởi Viện Tiêu chuẩn và Công nghệ Quốc gia (NIST), Hoa Kỳ, vào năm 1991 để sử dụng trong các ứng dụng chính phủ.

Được sử dụng để cung cấp xác thực, tính toàn vẹn và chống chối bỏ cho các thông điệp kỹ thuật số.

Quy trình DSA bao gồm ba giai đoạn chính: Tạo khóa, Ký thông điệp, Xác minh chữ ký.

Key Generation

01

Chọn khóa bí mật

Chọn một khóa bí mật ngẫu nhiên x sao cho 0 < x < q

02

Tính giá trị công khai

Tính: y = gˣ mod p

03

Cặp khóa

  • Khóa công khai: (p, q, g, y)
  • Khóa bí mật: x

Các tham số công khai toàn cục (p, q, g) được chia sẻ giữa tất cả người dùng. Khóa bí mật x phải được giữ bí mật; khóa công khai y được phân phối công khai.

Các thuật toán

Quy trình ký và xác thực DSA

Ký tin nhắn

01

Băm tin nhắn

Tính giá trị băm H(m) sử dụng hàm băm H.

02

Tạo số ngẫu nhiên k

Chọn k ngẫu nhiên sao cho 0 < k < q.

03

Tính r

r = (gᵏ mod p) mod q. Nếu r = 0, hãy chọn k mới.

04

Tính s

s = k⁻¹(H(m) + xr) mod q. Nếu s = 0, hãy chọn k mới.

Xác thực chữ ký

01

Kiểm tra phạm vi

Từ chối nếu r hoặc s không thỏa mãn 0 < r, s < q.

02

Tính giá trị băm

Tính H(m).

03

Tính w

w = s⁻¹ mod q.

04

Tính u₁, u₂

u₁ = H(m)·w mod q và u₂ = r·w mod q.

Algorithms

Quy trình Ký và Xác thực DSA

Ký tin nhắn

5. Chữ ký

Chữ ký số là cặp (r, s).

Xác thực chữ ký

5. Tính v

v = ((g^u₁ · y^u₂) mod p) mod q.

6. Xác thực

Chữ ký hợp lệ nếu v = r.

Chứng chỉ số

Chứng chỉ số

Một chứng chỉ số (digital certificate) liên kết một khóa công khai (public key) với một định danh (identity) bằng cách sử dụng chữ ký số của một Cơ quan cấp chứng chỉ (Certificate Authority - CA) tin cậy. Đây là nền tảng của sự tin cậy trên internet.

Chứng chỉ số = Chứng chỉ khóa công khai = Chứng chỉ định danh

Chữ ký CA

Cơ quan cấp chứng chỉ (CA) ký vào chứng chỉ, bảo đảm tính xác thực của nó

Khóa công khai (Public Key)

Khóa công khai của đối tượng được nhúng trong chứng chỉ để người khác sử dụng

Thông tin định danh

Thông tin định danh như tên miền, tổ chức và vị trí

Ví dụ thực tế từ giáo trình: một chứng chỉ được cấp cho tên miền www.vietcombank.com.vn bởi một CA, liên kết khóa công khai của ngân hàng với danh tính đã được xác minh của nó.

Giao diện kiểm tra thông tin một chứng chỉ số

Các trường trong chứng chỉ X.509 + Ứng dụng thực tế

Chuẩn X.509 xác định các trường cụ thể mà mọi chứng chỉ phải có. Hiểu rõ các trường này là điều cần thiết để đánh giá và quản lý chứng chỉ trong thực tế.

Các trường chính trong X.509

Ứng dụng thực tế

HTTPS

Bảo mật thông qua mã hóa đối xứng + tính toàn vẹn/xác thực thông qua MAC

Email an toàn

S/MIME cho các email được mã hóa và ký

Truyền tải tệp

Xác thực chứng chỉ cho SFTP/FTPS

Chống MITM

Giảm thiểu tấn công man-in-the-middle thông qua xác thực danh tính

Cơ sở hạ tầng khóa công khai (PKI)

Tin cậy

Public Key Infrastructure (PKI)

  • Public Key Infrastructure (PKI) là một khuôn khổ bao gồm phần cứng, phần mềm, nhân sự, chính sách và quy trình được sử dụng để tạo, quản lý, phân phối, sử dụng, lưu trữ và thu hồi các chứng chỉ số.
  • PKI cung cấp nền tảng cho việc truyền tin an toàn, xác thực và chữ ký số trong các hệ thống thông tin hiện đại.

Các thành phần chính của PKI

Certificate Authority (CA)

Cấp và xác minh các chứng chỉ số.

Registration Authority (RA)

Tiếp nhận và xác minh thông tin định danh người dùng thay mặt cho CA.

Validation Authority (VA)

Xác nhận tính hợp lệ của các chứng chỉ và thông tin định danh cho người dùng.

Central Directory (CD)

Lưu trữ và lập chỉ mục các khóa công khai và chứng chỉ.

Certificate Management System

Quản lý vòng đời của các chứng chỉ.

Certificate Policy

Xác định các quy tắc và tiêu chuẩn cho việc cấp phát và sử dụng chứng chỉ.

Tin cậy

Luồng kiến trúc PKI

Tin cậy

Quy trình Cấp phát và Sử dụng Chứng chỉ Số

Đăng ký & Cấp phát Chứng chỉ

01

Tạo cặp khóa

Người dùng tạo một khóa công khai và một khóa bí mật.

02

Tạo yêu cầu chứng chỉ

Người dùng tạo một yêu cầu chứa khóa công khai và thông tin định danh (định dạng X.509).

03

Gửi tới RA

Người dùng gửi yêu cầu tới Cơ quan Đăng ký (RA).

04

RA chuyển tiếp tới CA

RA xác minh yêu cầu và chuyển tiếp nó tới Cơ quan Chứng thực (CA).

Sử dụng & Xác minh Chứng chỉ

01

Ký tài liệu

Người dùng ký một giao dịch hoặc tài liệu bằng khóa bí mật của họ.

02

Gửi tới nhà cung cấp

Tài liệu đã ký và chứng chỉ số được gửi tới nhà cung cấp dịch vụ.

03

Xác thực VA

Nhà cung cấp gửi chứng chỉ tới Cơ quan Xác thực (VA) để kiểm tra.

04

Xác minh chữ ký

Nếu hợp lệ, nhà cung cấp sẽ xác minh chữ ký số bằng cách sử dụng khóa công khai từ chứng chỉ.

Tin cậy

Quy trình Cấp và Sử dụng Chứng thư Số

Đăng ký & Cấp Chứng thư

5. CA Cấp Chứng thư

CA xác minh danh tính và cấp một chứng thư số được ký bằng khóa bí mật của CA.

6. Thông báo cho VA

Thông tin chứng thư được gửi đến Cơ quan Xác thực (Validation Authority - VA).

7. Cài đặt & Sử dụng

Người dùng cài đặt chứng thư và bắt đầu sử dụng nó trong các ứng dụng.

Sử dụng & Xác minh Chứng thư

5. Chấp nhận Giao dịch

Nếu xác minh thành công, giao dịch sẽ được chấp nhận và xử lý.

Phân phối khóa

Khóa

Mối quan hệ tạo khóa

Một mối quan hệ tạo khóa tồn tại khi hai hoặc nhiều bên chia sẻ dữ liệu liên quan đến mật mã cần thiết để giao tiếp an toàn. Dữ liệu chia sẻ này không chỉ bao gồm các khóa.

Quản lý khóa: Rủi ro + Yêu cầu chính sách

Khi key management (quản lý khóa) thất bại, ngay cả những thuật toán mạnh nhất cũng trở nên vô giá trị. Hiểu rõ các rủi ro — và các chính sách để giảm thiểu chúng — là yếu tố thiết yếu đối với an ninh vận hành.

Chính sách phải xác định: các procedures (quy trình) kỹ thuật và hành chính, responsibilities (trách nhiệm) rõ ràng, và các logs (nhật ký) cùng báo cáo kiểm toán được yêu cầu.

Phân loại khóa: Theo mục đích sử dụng + Theo vòng đời

Không phải tất cả các loại khóa đều có vai trò như nhau. Việc phân loại khóa theo mục đích sử dụngvòng đời giúp các tổ chức áp dụng mức độ bảo vệ phù hợp cho từng loại.

Theo mục đích sử dụng (Phân cấp)

Khóa chủ (Master Key)

Cấp độ cao nhất; được bảo vệ về mặt vật lý (HSM, két sắt)

Khóa mã hóa khóa (Key-Encrypting Key)

Bảo vệ các khóa khác trong quá trình truyền tải và lưu trữ

Khóa dữ liệu (Data Keys)

Mã hóa dữ liệu người dùng; thường có vòng đời ngắn và chỉ dùng một lần

Theo vòng đời

Khóa nằm ở vị trí càng cao trong phân cấp thì mức độ bảo vệ càng phải chặt chẽ, vì nếu khóa này bị xâm phạm sẽ làm lộ tất cả các khóa bên dưới.

Phân phối Khóa Bí mật ở Quy mô Lớn (Vấn đề n²)

Các hệ thống đối xứng yêu cầu các khóa chia sẻ cho mỗi cặp truyền tin.

Phân phối tăng trưởng khóa

Ví dụ

n = 10 → 45 khóa

n = 100 → 4.950 khóa

n = 1.000 → 499.500 khóa

Các mô hình phân phối khóa bí mật

Bốn cách tiếp cận để phân phối khóa đối xứng một cách an toàn:

Luồng KDC (Key Distribution Center)

Luồng KTC (Key Translation Center)

Phân phối Khóa Công khai (Đảm bảo tính xác thực của Khóa Công khai)

Các khóa công khai có thể được chia sẻ công khai nhưng phải đảm bảo tính xác thực

Các phương thức:

  • kênh point-to-point tin cậy
  • public-key registry
  • online trusted server (các phản hồi được ký)
  • offline server + certificates (được sử dụng rộng rãi)
Khóa

Phân phối khóa bí mật

  • Trong mật mã đối xứng, mỗi cặp giao tiếp yêu cầu một khóa bí mật dùng chung duy nhất.
  • Đối với n người dùng, số lượng khóa cần thiết có thể lên tới n(n−1)/2 ≈ n² — làm cho việc quản lý và phân phối bảo mật trở nên ngày càng phức tạp.

Các kỹ thuật phân phối khóa

Point-to-Point (Điểm-đến-điểm)

Khóa được trao đổi trực tiếp giữa hai bên thông qua một kênh tin cậy.

Key Distribution Center (KDC)

Một máy chủ trung tâm tin cậy tạo và phân phối các session key.

Key Translation Center (KTC)

Người gửi tạo khóa; một trung tâm tin cậy thực hiện mã hóa lại khóa đó cho người nhận.

Public-Key Cryptography (Mật mã khóa công khai)

Sử dụng các khóa bất đối xứng để trao đổi các session key đối xứng một cách bảo mật.

Khóa

Phân phối khóa Point-to-Point

Phân phối khóa diễn ra trực tiếp giữa hai thực thể giao tiếp. Khóa được truyền đi thông qua một kênh truyền thông tin cậy — không cần sự tham gia của máy chủ trung gian.

Ví dụ về kênh tin cậy

Dedicated Line

Một đường truyền thông tin bảo mật chuyên dụng giữa các bên.

Secure Courier

Chuyển phát vật lý qua thư bảo đảm hoặc chuyển phát nhanh tin cậy.

Physical Handoff

Trao đổi khóa trực tiếp giữa các nhân sự được ủy quyền.

Ưu điểm

Dễ dàng triển khai

Phù hợp cho các hệ thống nhỏ hoặc khép kín

Hoạt động tốt cho việc giao tiếp không thường xuyên

Nhược điểm

Độ trễ cao, đặc biệt là với chuyển phát vật lý

Các kênh bảo mật có thể tốn kém để duy trì

Không khả năng mở rộng cho các mạng lớn

Khóa

Phân phối khóa điểm-điểm - Ví dụ

Ví dụ

Trao đổi khóa AES-128: A B

Giả sử người dùng A và B muốn trao đổi dữ liệu được mã hóa bằng AES-128. Trước khi giao tiếp, cả hai bên phải chia sẻ cùng một khóa bí mật K, được phân phối thông qua một kênh tin cậy.

K = 6F2A9C3E7B14D8A1C5E67F2341ABCD90
01

Mã hóa (A)

A mã hóa thông điệp: C = AES_K("Chuyển 10.000 USD")

02

Truyền tải

A gửi bản mã C đến B qua mạng.

03

Giải mã (B)

B giải mã: M = AES_K⁻¹(C) → "Chuyển 10.000 USD"

Vấn đề về khả năng mở rộng

Phương thức điểm-điểm hoạt động tốt trong các hệ thống nhỏ, nhưng sẽ bị phá vỡ khi mở rộng quy mô:

10

Người dùng

45 lần trao đổi khóa

100

Người dùng

4.950 lần trao đổi khóa

1K

Người dùng

499.500 lần trao đổi khóa

Các bước vận hành KDC và giao tiếp sau khi thiết lập Session Key

Ý nghĩa của từng Key

Các khóa

Các bước vận hành KDC và giao tiếp sau khi thiết lập khóa phiên

Khóa

Các bước vận hành KDC và giao tiếp sau khi thiết lập khóa phiên

Khóa

KDC trong thực tế — Hệ thống xác thực Kerberos

Triển khai thực tế phổ biến nhất của mô hình KDC là Kerberos — được sử dụng trong mạng doanh nghiệp, Active Directory và các hệ thống đại học trên toàn thế giới.

Kiến trúc Kerberos

01

Máy chủ xác thực (AS)

Đóng vai trò là thành phần KDC đầu tiên. Xác minh danh tính người dùng và cấp Ticket Granting Ticket (TGT).

02

Máy chủ cấp vé (TGS)

Đóng vai trò là thành phần KDC thứ hai. Cấp vé dịch vụ bằng cách sử dụng TGT.

03

Client

Người dùng hoặc máy trạm yêu cầu quyền truy cập vào một dịch vụ.

04

Máy chủ dịch vụ (SS)

Tài nguyên đích (máy chủ tệp, cơ sở dữ liệu, ứng dụng).

Luồng đăng nhập Kerberos

Client → AS: Yêu cầu đăng nhập kèm tên người dùng.

AS → Client: TGT được mã hóa bằng khóa của client (tạo ra từ mật khẩu).

Client → TGS: TGT + yêu cầu dịch vụ.

TGS → Client: Vé dịch vụ được mã hóa bằng khóa của máy chủ dịch vụ.

Client → SS: Vé dịch vụ → quyền truy cập được cấp.

Các Chìa Khóa

KDC trong Thực tiễn — Hệ thống Xác thực Kerberos

Tại sao Kerberos sử dụng KDC

Không truyền mật khẩu qua mạng

Mật khẩu không bao giờ được truyền tải — chỉ sử dụng các khóa băm (hashed keys).

Xác thực lẫn nhau

Cả máy khách (client) và máy chủ (server) đều xác minh danh tính của nhau.

Thời hạn của vé (Ticket)

Các vé (tickets) có thời hạn sử dụng giới hạn — giúp giảm rủi ro tấn công phát lại (replay attack).

Khóa

Ưu điểm về khả năng mở rộng & Hạn chế của KDC

Khả năng mở rộng: KDC so với Điểm-tới-Điểm

Nếu không có KDC, mỗi cặp người dùng cần một khóa chia sẻ duy nhất. Với KDC, mỗi người dùng chỉ cần duy trì một khóa dài hạn với trung tâm tin cậy.

12,497,500

5.000 người dùng

Không có KDC: số khóa cần thiết

5,000

5.000 người dùng

Với KDC: số khóa cần thiết

~2,500x

Giảm

số khóa cần quản lý

Hạn chế của KDC

Điểm lỗi duy nhất

Nếu KDC bị xâm phạm hoặc ngoại tuyến, toàn bộ hệ thống sẽ gặp rủi ro. Tất cả các khóa phiên đều bị lộ nếu khóa chủ của KDC bị đánh cắp.

Nút thắt hiệu năng

Mỗi lần khởi tạo phiên yêu cầu một vòng gửi nhận tới KDC. Trong các mạng lớn, điều này có thể gây ra vấn đề về độ trễ và lưu lượng.

Sự phụ thuộc vào tính sẵn sàng

KDC phải luôn trực tuyến và có thể truy cập được. Thời gian chết đồng nghĩa với việc không thể thiết lập phiên mới.

Yêu cầu về sự tin cậy

Tất cả người dùng phải hoàn toàn tin tưởng người vận hành KDC. Một KDC độc hại hoặc bị xâm phạm có thể mạo danh bất kỳ người dùng nào.

Các bước của giao thức KTC và giao tiếp bảo mật

Giao thức KTC và các bước giao tiếp bảo mật


Sự khác biệt giữa KDC và KTC

Phân phối khóa bí mật dựa trên khóa công khai

Ý nghĩa của các khóa

Các ứng dụng thực tế

Phương pháp này được sử dụng rộng rãi trong các giao thức truyền thông bảo mật hiện đại:

Phân phối khóa bí mật dựa trên khóa công khai

Khóa

Phân phối khóa công khai

Ý tưởng chính

  • Khóa công khai (Public key) có thể được chia sẻ công khai, nhưng tính xác thực của chúng phải được kiểm chứng.
  • Hai yêu cầu: Tính toàn vẹn (khóa không được bị sửa đổi) và Gắn kết danh tính (khóa phải thuộc về đúng chủ sở hữu).

Các phương thức phân phối

  1. Kênh tin cậy điểm-điểm (Point-to-Point) — Trao đổi trực tiếp qua một kênh an toàn. Phù hợp cho các hệ thống nhỏ hoặc khép kín.
  1. Đăng ký khóa công khai (Public-Key Registry) — Cơ sở dữ liệu tin cậy về danh tính người dùng và khóa công khai.
  1. Máy chủ tin cậy trực tuyến (Online Trusted Server) — Máy chủ ký và phân phối các khóa; khách hàng xác minh bằng cách sử dụng khóa công khai của máy chủ.
  1. Dựa trên chứng chỉ (Certificate-Based / CA) — Các khóa được phân phối thông qua chứng chỉ số do CA ký. Được sử dụng trong TLS/HTTPS.

Ví dụ thực tế

  • SSL/TLS: Các trình duyệt xác minh danh tính máy chủ thông qua chứng chỉ do CA ký qua HTTPS.
  • Web PKI: Hệ thống phân cấp CA toàn cầu làm nền tảng cho sự tin cậy trên internet.
  • PGP: Người dùng trao đổi khóa công khai trực tiếp hoặc thông qua các máy chủ khóa để bảo mật email.

Quy trình phân phối

1

Chủ sở hữu khóa

2

Kênh tin cậy / CA

3

Khóa công khai

4

Người nhận đã xác minh

Giao thức

SSL/TLS (Mục đích + Vị trí + Các giao thức con)

SSL do Netscape tạo ra (1993); SSL 1.0/2.0/3.0 → sau đó đã ngừng hoạt động

TLS được IETF chuẩn hóa (1999); các phiên bản 1.0/1.1/1.2/1.3 (2017)

Hoạt động giữa lớp ứng dụngtruyền tải; hỗ trợ nhiều ứng dụng (ví dụ: HTTPS = HTTP + SSL/TLS)

Yêu cầu ít nhất một bên (thường là máy chủ) phải có chứng chỉ khóa công khai

SSL/TLS định vị chiến lược giữa lớp Ứng dụng và lớp Truyền tải, cung cấp các dịch vụ bảo mật cho nhiều giao thức khác nhau.

Các giao thức con:

Các giao thức con này phối hợp với nhau để thiết lập, quản lý và chấm dứt các kết nối bảo mật.

Các giao thức con của SSL/TLS

TLS Handshake (Các bước khởi tạo phiên)

Quá trình bắt tay thiết lập một phiên an toàn giữa máy khách (client) và máy chủ (server):

Khởi tạo phiên làm việc trong SSL/TLS

Giao thức TLS Record (Truyền dữ liệu an toàn)

Giao thức TLS Record cung cấp tính bảo mật cho kết nối với hai dịch vụ cơ bản: tính bảo mật và tính toàn vẹn của thông báo. Nó lấy các thông điệp từ các lớp cao hơn, phân mảnh chúng thành các khối có thể quản lý, nén và mã hóa chúng, đồng thời thêm một MAC.

Quy trình gửi:

Quy trình gửi:

Bên nhận (quy trình ngược):

  • loại bỏ header
  • giải mã
  • xác thực MAC
  • giải nén
  • tái hợp
Giao thức

SET (Secure Electronic Transaction)

SET hỗ trợ thanh toán thẻ tín dụng an toàn; được phát triển bởi VisaMasterCard

Đảm bảo: tính bảo mật, tính toàn vẹn, xác thực chủ thẻ, xác thực người bán

Các tác nhân: Chủ thẻ, Người bán, Cổng thanh toán, Đơn vị chấp nhận thanh toán, Tổ chức phát hành, CA

Tất cả các bên tham gia giao dịch đều đăng ký với CA và nhận chứng chỉ khóa công khai

Các bước giao dịch:

  1. Duyệt & chọn mặt hàng
  1. Gửi thông tin đơn hàng + thông tin thanh toán
  1. Người bán chuyển tiếp thông tin thanh toán đến cổng thanh toán/đơn vị chấp nhận thanh toán
  1. Đơn vị chấp nhận thanh toán yêu cầu cấp phép từ tổ chức phát hành
  1. Tổ chức phát hành xác nhận
  1. Người bán hoàn tất đơn hàng & xác nhận với khách hàng
  1. Ghi lại giao dịch; việc lập hóa đơn diễn ra
Ôn tập

Câu hỏi ôn tập

  1. Mã hóa thông tin là gì? Mô tả vai trò của mã hóa.
  1. Mô tả các thành phần của một hệ thống mật mã.
  1. Mô tả các phương pháp mã hóa dòng (stream cipher) và mã hóa khối (block cipher).
  1. Liệt kê các ứng dụng của mã hóa.
  1. Mô tả phương pháp mã hóa thay thế (substitution encryption).
  1. Mô tả phương pháp mã hóa hoán vị (permutation/transposition encryption).
  1. Mô tả phương pháp mã hóa XOR.
  1. Vẽ sơ đồ hoạt động và mô tả các đặc điểm của mật mã khóa đối xứng (symmetric-key cryptography).
  1. Vẽ sơ đồ hoạt động và mô tả các đặc điểm của mật mã khóa bất đối xứng (asymmetric-key cryptography).
  1. Mô tả các đặc điểm và các bước xử lý dữ liệu của thuật toán mã hóa DES.

Câu hỏi ôn tập

  1. Mô tả các đặc điểm và các bước xử lý dữ liệu của thuật toán mã hóa AES.
  1. Mô tả các đặc điểm, quy trình tạo khóa, quá trình mã hóa và giải mã của thuật toán mã hóa RSA.
  1. Nêu các yêu cầu bảo mật cho quá trình tạo khóa RSA.
  1. Mô tả các đặc điểm và các bước xử lý dữ liệu của thuật toán băm MD5.
  1. Mô tả các đặc điểm và các bước xử lý dữ liệu của thuật toán băm SHA-1.
  1. Chữ ký số (digital signature) là gì? Mô tả quá trình tạo và xác thực chữ ký số cho một thông điệp.
  1. Chứng chỉ khóa công khai (public key certificate) là gì? Xác định ba thành phần quan trọng nhất của một chứng chỉ khóa công khai và mô tả các ứng dụng của chứng chỉ khóa công khai.
  1. Hạ tầng khóa công khai (PKI) là gì? Mô tả các thành phần của PKI và giải thích quy trình cấp phát và sử dụng chứng chỉ trong PKI.
  1. Mô tả cơ chế hoạt động của phương pháp phân phối khóa dựa trên KDC và KTC.
  1. Mô tả quá trình khởi tạo một phiên trong SSL/TLS.
  1. Mô tả cách dữ liệu được xử lý bởi Giao thức SSL Record tại phía gửi và phía nhận.
  1. Mô tả hoạt động của mô hình PGP đảm bảo chỉ xác thực và mô hình PGP đảm bảo chỉ tính bảo mật.