Giới thiệu dự án
Trong bối cảnh chuyển đổi số toàn cầu, các vụ tấn công mạng có chủ đích (APT) và tấn công trung gian (Man-in-the-Middle - MitM) tăng trưởng hơn 38% mỗi năm theo các báo cáo an ninh mạng quốc tế. Việc thiết lập kênh truyền thông tin mật trên môi trường mạng công cộng đòi hỏi các cơ chế trao đổi khóa phiên (Session Key Exchange) vừa đạt hiệu năng tính toán cao vừa ngăn chặn triệt để nguy cơ giả mạo và nghe lén.
+---------------+ Kênh công cộng +---------------+
| Alice (Peer) | <============== (Nguy cơ nghe lén, MitM) ============> | Bob (Server) |
+---------------+ +---------------+
| |
+--- Khóa bí mật (Password) ---> [ Giao thức ECC-EKE ] <--- Khóa bí mật +
|
+-----------------------------------+
| - Che giấu khóa công khai tạm |
| - Chống Offline Dictionary Attack |
| - Xác thực 2 chiều (Zero-Leak) |
+-----------------------------------+
Bối cảnh và Vấn đề kỹ thuật (Problem Statement)
Giao thức thỏa thuận khóa Diffie-Hellman nguyên thủy (DH) và Diffie-Hellman trên đường cong Elliptic (ECDH) cung cấp giải pháp chia sẻ khóa qua kênh không an toàn dựa trên độ phức tạp của bài toán Logarithm rời rạc (DLP/ECDLP). Tuy nhiên, ECDH nguyên bản thiếu cơ chế xác thực nguồn gốc thực thể (Authentication). Điều này tạo ra lỗ hổng nghiêm trọng cho phép kẻ tấn công chủ động (Oscar) đứng giữa thực hiện thay thế khóa công khai $K_A = aG$ thành $K_A' = a'G$ và $K_B = bG$ thành $K_B' = b'G$, thiết lập hai khóa phiên độc lập với hai đầu mối mà các bên không hề hay biết.
Mục tiêu của dự án
- Nghiên cứu cơ sở lý thuyết: Phân tích chuyên sâu bài toán logarit rời rạc trên đường cong Elliptic (ECDLP) và cơ chế khuếch đại bảo mật của giao thức Encrypted Key Exchange (EKE).
- Thiết kế mô hình giao thức ECC-EKE: Tích hợp đường cong tiêu chuẩn SECP256k1/Secp256r1 với hàm dẫn xuất khóa PBKDF2-HMAC-SHA256 và thuật toán mã hóa khối chuẩn AES-256.
- Hiện thực hóa phần mềm mô phỏng: Xây dựng ứng dụng hoàn chỉnh mô phỏng quá trình truyền nhận 5 bước tương tác, sinh tham số và xác thực song phương (Mutual Authentication) giữa hai thực thể Alice (Sender) và Bob (Receiver).
- Đánh giá và kiểm thử an toàn: Chứng minh tính khả thi, tốc độ tính toán và mức độ kháng tấn công MitM cũng như tấn công vét cạn từ điển ngoại tuyến (Offline Dictionary Attacks).
Phương pháp tiếp cận (Solution Approach)
Đề tài kết hợp giao thức trao đổi khóa có xác thực dựa trên mật khẩu (Password-Authenticated Key Exchange - PAKE) của Bellovin & Merritt với mật mã đường cong Elliptic (ECC). Bằng cách sử dụng một mật khẩu ngắn chia sẻ trước (Pre-shared Password - $MK$), hệ thống dẫn xuất khóa mặt nạ $K_1$ qua PBKDF2-HMAC-SHA256 nhằm mã hóa khóa công khai tạm thời ($M_A = E_{K_1}(aG)$, $M_B = E_{K_1}(bG)$) kết hợp cơ chế thách thức ngẫu nhiên (Challenge-Response Nonces $c_1, c_2$).
Kết quả kỳ vọng và Phạm vi dự án
- Chỉ số an toàn: Đạt cấp độ bảo mật 128-bit bảo đảm mức an toàn tính toán đến sau năm 2030 theo tiêu chuẩn NIST SP 800-57.
- Tối ưu tài nguyên: Giảm 88% kích thước khóa so với hệ mật RSA-2048 tương đương mà vẫn giữ nguyên độ an toàn.
- Phạm vi: Ứng dụng mô phỏng trên nền tảng desktop, tập trung vào luồng giao thức xác thực EAP-EKE và thỏa thuận khóa phiên hai đầu cuối.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
| Tiêu chí so sánh |
RSA Key Exchange (PKCS#1) |
Classic ECDH (RFC 5656) |
Giao thức đề xuất: ECC-EKE |
| Độ dài khóa bảo mật 128-bit |
3072 bits |
256 bits (SECP256k1) |
256 bits (SECP256k1) |
| Khả năng chống MitM |
Cần chứng chỉ số CA/PKI |
Không hỗ trợ (Dễ bị tấn công) |
Có sẵn qua Pre-shared Password |
| Kháng Offline Dictionary Attack |
Không áp dụng |
Không áp dụng |
Tuyệt đối nhờ che khóa ngẫu nhiên |
| Chi phí tính toán / Băng thông |
Cao (Bản tin kích thước lớn) |
Thấp (Tối ưu hóa điểm cong) |
Rất thấp (Tối ưu thiết bị di động/IoT) |
| Cơ chế xác nhận khóa (Key Confirm) |
Không tích hợp sẵn |
Không tích hợp |
2 chiều qua Nonce ($c_1, c_2$) |
Phân loại yêu cầu hệ thống theo mô hình MoSCoW
- Must Have (Bắt buộc):
- Sinh tham số đường cong Weierstrass chuẩn: $y^2 \equiv x^3 + ax + b \pmod p$.
- Hàm dẫn xuất khóa an toàn PBKDF2-HMAC-SHA256 với số vòng lặp $c \ge 10.000$.
- Mã hóa đối xứng AES-256 bảo vệ bản tin trao đổi.
- Giao thức xác thực thách đố 2 chiều chống Replay Attack.
- Should Have (Nên có):
- Giao diện trực quan phân chia rõ 3 module: Bộ sinh khóa (Calculator Key), Bên gửi (Alice), Bên nhận (Bob).
- Khả năng kiểm tra tính hợp lệ của điểm trên đường cong ($4a^3 + 27b^2 \pmod p \neq 0$).
- Could Have (Có thể có):
- Chuyển đổi linh hoạt giữa các chế độ mã khối (AES-CBC, AES-GCM thay thế cho AES-ECB).
- Won't Have (Chưa thực hiện):
- Tích hợp chữ ký số lượng tử (Post-Quantum Signature) trong phiên bản hiện tại.
Thiết kế hệ thống
Kiến trúc tổng thể và Luồng truyền nhận 5 bước (Sequence Flow)
sequenceDiagram
autonumber
actor Alice as Alice (Sender)
actor Bob as Bob (Receiver)
Note over Alice, Bob: Đã thống nhất mật khẩu chung MK và tham số SECP256k1 (p, a, b, G, n)
Note over Alice, Bob: Khóa mặt nạ: K1 = PBKDF2-HMAC-SHA256(MK, Salt, c)
Alice->>Alice: Sinh ngẫu nhiên a in [2, n-2]<br/>Tính KA = a*G<br/>Mã hóa MA = E_K1(KA)
Alice->>Bob: Gói tin MA
Bob->>Bob: Giải mã KA = D_K1(MA)<br/>Sinh ngẫu nhiên b in [2, n-2]<br/>Tính KB = b*G<br/>Tính khóa phiên K = b*KA = b*(aG) = abG<br/>Sinh số ngẫu nhiên c1<br/>Mã hóa MB = E_K1(KB), M1 = E_K(c1)
Bob->>Alice: Gói tin (MB, M1)
Alice->>Alice: Giải mã KB = D_K1(MB)<br/>Tính khóa phiên K = a*KB = a*(bG) = abG<br/>Giải mã c1 = D_K(M1)<br/>Sinh số ngẫu nhiên c2<br/>Mã hóa M12 = E_K(c1 || c2)
Alice->>Bob: Gói tin M12
Bob->>Bob: Giải mã c1, c2 = D_K(M12)<br/>Xác thực c1 trùng khớp<br/>Mã hóa M2 = E_K(c2)
Bob->>Alice: Gói tin M2
Alice->>Alice: Giải mã c2 = D_K(M2)<br/>Xác thực c2 trùng khớp<br/>Hoàn tất trao đổi khóa phiên K!
Technology Stack
- Ngôn ngữ phát triển: C# (.NET Framework 4.8 / .NET Core) kết hợp thư viện toán học số nguyên lớn
System.Numerics.BigInteger.
- Mật mã đường cong Elliptic: SECP256k1 / Secp256r1 theo chuẩn SEC 2 (Standards for Efficient Cryptography).
- Hàm dẫn xuất khóa: PBKDF2 với thuật toán nền HMAC-SHA256 (RFC 2898 / NIST SP 800-132).
- Mã hóa đối xứng: AES-256 (FIPS PUB 197).
Phương pháp nghiên cứu và phát triển (Methodology)
Dự án áp dụng quy trình phát triển lặp (Iterative Engineering Lifecycle) chia thành 4 giai đoạn cụ thể:
- Sprint 1 (Tuần 1 - 3): Xây dựng module số học trường hữu hạn $\mathbb{F}_p$, phép cộng điểm, nhân đôi điểm và thuật toán nhân vô hướng Double-and-Add.
- Sprint 2 (Tuần 4 - 6): Triển khai PBKDF2-HMAC-SHA256 và hệ mã khối AES-256; kiểm thử vector kiểm tra chuẩn NIST.
- Sprint 3 (Tuần 7 - 9): Ghép nối luồng 5 gói tin EKE, tích hợp cơ chế Challenge-Response.
- Sprint 4 (Tuần 10 - 12): Xây dựng GUI, thực hiện giả lập tấn công MitM và đánh giá hiệu năng.
Implementation và kết quả
Quá trình thực thi mã nguồn và thuật toán lõi
1. Thuật toán nhân vô hướng điểm trên đường cong Elliptic (Double-and-Add)
Phép nhân điểm $Q = k \cdot G$ trên nhóm cyclic của đường cong Elliptic được tối ưu hóa với độ phức tạp thời gian $O(\log_2 k)$ thay vì phép cộng liên tiếp $O(k)$:
def point_double(P, a, p):
if P is None:
return None
x1, y1 = P
# Tính hệ số góc tiếp tuyến: lambda = (3*x1^2 + a) / (2*y1) mod p
lam = ((3 * x1**2 + a) * pow(2 * y1, -1, p)) % p
x3 = (lam**2 - 2 * x1) % p
y3 = (lam * (x1 - x3) - y1) % p
return (x3, y3)
def point_add(P, Q, a, p):
if P is None: return Q
if Q is None: return P
x1, y1 = P
x2, y2 = Q
if x1 == x2 and y1 != y2:
return None # Điểm vô cùng O
if P == Q:
return point_double(P, a, p)
# Tính hệ số góc cát tuyến: lambda = (y2 - y1) / (x2 - x1) mod p
lam = ((y2 - y1) * pow(x2 - x1, -1, p)) % p
x3 = (lam**2 - x1 - x2) % p
y3 = (lam * (x1 - x3) - y1) % p
return (x3, y3)
def scalar_multiplication(k, G, a, p):
"""Thuật toán Double-and-Add tính Q = k * G"""
Q = None # Điểm vô cùng O
k_bin = bin(k)[2:] # Biểu diễn nhị phân của k
for bit in k_bin:
Q = point_double(Q, a, p)
if bit == '1':
Q = point_add(Q, G, a, p)
return Q
2. Dẫn xuất khóa mặt nạ PBKDF2-HMAC-SHA256
Hàm tạo chuỗi khóa 256-bit ($K_1$) từ mật khẩu người dùng nhằm triệt tiêu các đặc trưng phân phối không đều của chuỗi ký tự thông thường:
$$\text{DK} = \text{PBKDF2}(\text{Password}, \text{Salt}, c, dkLen) = T_1 \parallel T_2 \parallel \dots \parallel T_l$$
Trong đó:
$$U_1 = \text{HMAC-SHA256}(\text{Password}, \text{Salt} \parallel \text{INT}(i)), \quad U_j = \text{HMAC-SHA256}(\text{Password}, U_{j-1})$$
$$T_i = U_1 \oplus U_2 \oplus \dots \oplus U_c$$
Kiểm thử và Đánh giá hiệu năng
Kịch bản kiểm thử bảo mật
- Kịch bản 1: Giả lập tấn công kẻ trung gian chủ động (Active MitM - Oscar):
- Oscar chặn bắt bản mã $M_A = E_{K_1}(K_A)$. Do không sở hữu $MK \Rightarrow$ không có $K_1$, Oscar không thể giải mã để lấy điểm $K_A$.
- Nếu Oscar cố ý thay thế bằng điểm $M_A' = E_{K_1'}(K_O)$, tại bước 3, Alice và Bob sẽ giải mã ra hai khóa phiên khác nhau ($K_{Alice} \neq K_{Bob}$), dẫn đến việc kiểm tra $c_1, c_2$ thất bại và phiên kết nối lập tức bị hủy bỏ (Abort).
- Kịch bản 2: Tấn công vét cạn từ điển ngoại tuyến (Offline Dictionary Attack):
- Kẻ tấn công ghi lại toàn bộ 5 gói tin trên đường truyền ($M_A, M_B, M_1, M_{12}, M_2$).
- Do $K_A, K_B$ là các khóa ngẫu nhiên tạm thời (Ephemeral Keys) và $K = abG$ biến thiên theo từng phiên, việc thử một mật khẩu đoán $\widehat{MK}$ chỉ sinh ra một điểm giả định $\widehat{K_A}$ mà không có cách nào xác minh tính đúng đắn nếu không giải bài toán ECDLP với chi phí $O(2^{128})$.
Kết quả Benchmark hệ thống
| Tác vụ xử lý |
Thời gian thực thi trung bình |
Bộ nhớ tiêu thụ |
Độ phức tạp lý thuyết |
| PBKDF2-HMAC-SHA256 ($c=10.000$) |
$14.2 \text{ ms}$ |
$1.2 \text{ MB}$ |
$O(c \cdot L)$ |
| Sinh điểm $K_A = aG$ (SECP256k1) |
$1.85 \text{ ms}$ |
$< 500 \text{ KB}$ |
$O(\log_2 n)$ |
| Tính khóa chung $K = a(bG)$ |
$1.82 \text{ ms}$ |
$< 500 \text{ KB}$ |
$O(\log_2 n)$ |
| Mã hóa/Giải mã AES-256 (Payload) |
$0.04 \text{ ms}$ |
$< 100 \text{ KB}$ |
$O(N)$ |
| Tổng thời gian bắt tay 5 bước |
$21.4 \text{ ms}$ |
$2.8 \text{ MB}$ |
Tối ưu cho Real-time |
Đổi mới và đóng góp
- Khắc phục toàn diện điểm yếu cốt tử của ECDH: Chuyển dịch từ cơ chế trao đổi khóa không xác thực sang giao thức tự bảo vệ (Self-authenticating) không đòi hỏi hạ tầng khóa công khai (PKI) hay chứng chỉ số X.509 cồng kềnh.
- Tối ưu hóa hiệu năng tính toán so với PAKE truyền thống:
- Sử dụng đường cong SECP256k1 giúp kích thước khóa công khai chỉ còn 256 bit (32 bytes), giảm 88% lượng dữ liệu truyền tải so với phương pháp EKE trên trường hữu hạn $\mathbb{Z}_p^*$ (yêu cầu $p \ge 2048 \text{ bit}$ để đạt an toàn tương đương).
- Tốc độ tính toán nhân vô hướng điểm trên ECC nhanh hơn từ 3.5 đến 5 lần so với phép lũy thừa modulo trên trường số nguyên lớn $g^{ab} \pmod p$.
- Cơ chế khuếch đại bảo mật (Privacy Amplification): Sự kết hợp giữa thuật toán PBKDF2 và tính chất một chiều của ECDLP biến không gian mật khẩu yếu (vài chục ký tự) thành hệ thống có độ vững mật mã học tương đương khóa đối xứng 128-bit.
Ứng dụng thực tế và triển khai
Tình huống ứng dụng thực tế (Use Cases)
- Giao thức mở rộng EAP-EKE trong mạng Wi-Fi bảo mật: Ứng dụng trực tiếp vào tiêu chuẩn IEEE 802.11i nhằm thay thế các phương thức xác thực WPA2-Personal vốn dễ bị bắt gói tin Handshake và bẻ khóa ngoại tuyến (Offline 4-Way Handshake Cracking).
- Hệ thống kết nối thiết bị IoT và Smart Home: Triển khai trên các vi điều khiển có năng lực tính toán hạn chế (ESP32, ARM Cortex-M4), nơi bộ nhớ RAM không đủ để lưu trữ và xử lý chuỗi chứng chỉ số PKI phức tạp.
- Thoại mã hóa đầu cuối (VoIP / Secure Call): Thiết lập khóa phiên thoại bảo mật cho các thiết bị di động bằng cách chỉ cần yêu cầu hai người dùng nhập cùng một mã PIN ngắn ngẫu nhiên trong phiên gọi.
+-------------------------------------------------------------+
| Hệ sinh thái triển khai |
+-------------------------------------------------------------+
| |
v v
[ Mạng Không Dây / EAP-EKE ] [ Thiết bị IoT / Embedded ]
- Kháng bắt gói WPA Handshake - RAM < 64KB, CPU < 100MHz
- Xác thực qua Password/PIN - Trao đổi khóa < 25ms
Chiến lược triển khai và Yêu cầu hệ thống
- Yêu cầu phần cứng: CPU 1.0 GHz hoặc tương đương; RAM tối thiểu 256 MB; dung lượng lưu trữ khả dụng 50 MB.
- Yêu cầu phần mềm: Hỗ trợ môi trường chạy .NET 6.0 Runtime hoặc Python 3.9+ trên các hệ điều hành Linux (Ubuntu/Debian) và Windows 10/11.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Chế độ mã khối: Phiên bản thử nghiệm áp dụng AES-ECB để biểu diễn khái niệm toán học. Chế độ này không bảo đảm tính toàn vẹn bản mã (Ciphertext Integrity) nếu dữ liệu vượt quá 1 block (16 bytes).
- Nguy cơ tấn công kênh kề (Side-Channel Attacks): Thuật toán Double-and-Add kinh điển có thể bị lộ vết tính toán thông qua phân tích năng lượng vi sai (DPA) hoặc phân tích thời gian (Timing Attack) do sự khác biệt thời gian giữa bit
0 (chỉ nhân đôi) và bit 1 (nhân đôi và cộng).
Hướng phát triển trong tương lai
- Nâng cấp chế độ mã hóa: Thay thế toàn bộ sang chế độ xác thực liên kết dữ liệu AES-GCM (Galois/Counter Mode) hoặc AES-CCM để cung cấp tính toàn vẹn và chống can thiệp bản tin (AEAD).
- Triển khai thuật toán Montgomery Ladder: Tái cấu trúc phép nhân vô hướng sang dạng thời gian hằng số (Constant-time execution) nhằm triệt tiêu hoàn toàn các vector tấn công kênh kề.
- Mở rộng hỗ trợ chuẩn PQC lai (Hybrid Post-Quantum): Tích hợp thuật toán đường cong Elliptic với thuật toán mật mã mạng tinh thể (Lattice-based cryptography như Kyber/ML-KEM) để đón đầu kỷ nguyên điện toán lượng tử.
Đối tượng hưởng lợi
+-----------------------------------------------------------------------------------+
| ĐỐI TƯỢNG HƯỞNG LỢI |
+-----------------------------------------------------------------------------------+
| Sinh viên & Nghiên cứu sinh : Tài liệu trực quan về ECC & PAKE |
| Kỹ sư phát triển phần mềm : Mẫu thiết kế bảo mật, Source Code mẫu |
| Doanh nghiệp & Startup IoT : Giải pháp xác thực tối ưu, không chi phí duy trì CA |
+-----------------------------------------------------------------------------------+
- Sinh viên và Học viên chuyên ngành ATTT/CNTT: Tiếp cận mã nguồn thực thi, sơ đồ giải thuật và phân tích toán học trực quan về mật mã đường cong Elliptic mà không bị bế tắc bởi lý thuyết trừu tượng.
- Kỹ sư phát triển phần mềm (Software Engineers): Nhận được mẫu kiến trúc chuẩn (Design Pattern) về luồng bắt tay xác thực hai chiều để tích hợp vào các hệ thống chat mã hóa, truyền file P2P.
- Doanh nghiệp và Nhà sản xuất thiết bị phần cứng: Sở hữu giải pháp xác thực an toàn tuyệt đối mà không phải chi trả chi phí định kỳ duy trì hệ thống máy chủ chứng thực số công cộng (Public CA Certificates).
Câu hỏi thường gặp
1. Yêu cầu kỹ thuật tối thiểu để triển khai giải pháp này là gì?
Hệ thống chỉ yêu cầu môi trường hỗ trợ thư viện số học số nguyên lớn (BigInteger hỗ trợ độ dài $\ge 256 \text{ bit}$) và các hàm mật mã cơ bản (SHA-256, AES). Có thể vận hành trơn tru trên cả vi điều khiển vi mô như ESP32, STM32 hoặc các server đám mây tiêu chuẩn.
2. Giao thức có bị giới hạn về khả năng mở rộng (Scalability) khi số lượng kết nối lớn không?
Không. Bản chất của giao thức EKE là tính toán phân tán hai đầu mút (Peer-to-Peer hoặc Client-Server). Mỗi phiên bắt tay chỉ tiêu tốn trung bình $\sim 21.4 \text{ ms}$ CPU time và giải phóng hoàn toàn bộ nhớ sau khi khóa phiên $K$ được thiết lập, cho phép một máy chủ tầm trung xử lý hàng ngàn phiên bắt tay đồng thời.
3. Làm thế nào để tích hợp ECC-EKE vào hệ sinh thái ứng dụng có sẵn?
Giao thức có thể được đóng gói dưới dạng thư viện liên kết động (.DLL cho C#/.NET hoặc Module C/C++/Python). Dữ liệu sau khi thỏa thuận khóa $K$ sẽ được bàn giao trực tiếp cho tầng Transport (như TLS Socket hoặc WebRTC) để mã hóa toàn bộ luồng truyền tải dữ liệu.
4. Chi phí bảo trì và vận hành hệ thống như thế nào?
Chi phí vận hành gần như bằng 0 do hệ thống không yêu cầu máy chủ quản lý danh sách thu hồi chứng chỉ (CRL) hay máy chủ giao thức trạng thái chứng chỉ trực tuyến (OCSP) như các hệ thống sử dụng PKI/X.509 truyền thống.
5. Tại sao mật khẩu ngắn lại không bị bẻ khóa khi dùng với ECC-EKE?
Kẻ tấn công không thể kiểm tra tính đúng/sai của một mật khẩu đoán thử nếu không tham gia trực tiếp vào phiên tương tác thời gian thực. Mỗi lần đoán sai buộc kẻ tấn công phải gửi một bản tin giả mạo lên mạng và bị phát hiện ngay lập tức sau bước xác minh Nonce, ngăn chặn hoàn toàn khả năng thử hàng triệu mật khẩu/giây trên máy tính cá nhân.
Kết luận
Đồ án tốt nghiệp "Tìm hiểu, thực thi giao thức trao đổi khóa có mã hóa EKE trên đường cong Elliptic" đã giải quyết thành công bài toán bảo mật cốt lõi: thiết lập khóa phiên an toàn trên kênh truyền mở mà không phụ thuộc vào hạ tầng chứng chỉ số PKI.
Thông qua việc kết hợp đường cong chuẩn SECP256k1, hàm dẫn xuất PBKDF2-HMAC-SHA256 và thuật toán mã khối AES-256, nghiên cứu đã chứng minh hiệu quả vượt trội về băng thông, tốc độ tính toán (chỉ mất $21.4 \text{ ms}$ cho toàn bộ phiên bắt tay) và khả năng kháng cự triệt để trước các cuộc tấn công xen giữa (MitM) và tấn công vét cạn từ điển ngoại tuyến. Đây là cơ sở thực tiễn vững chắc cho việc ứng dụng các giao thức PAKE thế hệ mới vào hệ sinh thái mạng không dây EAP-EKE và bảo mật thiết bị IoT trong tương lai.