Chương I: TỔNG QUAN VỀ VẤN ĐỀ NGHIÊN CỨU Nội dung chính của chương này: Giới thiệu tổng quan về bài toán trao đổi khóa, với cơ sở là giao thức trao đổi khóa Diffie–Hellman; trình bày một số khái niệm, vai trò của trao đổi khóa; trình bày các tiêu chuẩn an toàn của giao thức trao đổi khóa. Ngoài ra nội dung của chương cũng đề cập tới: Các giao thức trao đổi khóa an toàn, phân tích xu hướng nghiên cứu, phát triển của các giao thức trao đổi khóa có xác thực, trình bày ưu nhược điểm của một số giao thức trao đổi khóa kết hợp với lược đồ chữ ký số đã công bố có liên quan; trình bày bài toán trao đổi khóa nhóm và các phân đoạn thỏa thuận khóa nhóm. Chương này cũng trình bày cơ sở toán học của của các lược đồ chữ ký số là bài toán logarithm rời rạc (DLP) và bài toán phân tích thừa số nguyên tố (IFP); phân tích độ an toàn và các hình thức tấn công đối với hai bài toán này; định nghĩa chữ ký số, các yêu cầu an toàn đối với một lược đồ chữ ký số và trình bày một số phát triển của lược đồ chữ ký số. Tổng quan về bài toán trao đổi khóa Giao thức trao đổi khóa đầu tiên được đưa ra bởi W.
Hellman vào năm 1976 [67], nó được gọi là giao thức Diffie–Hellman nguyên thủy. Giao thức được thực hiện như sau: hạn 𝑍∗ và một phần tử 𝑔 ∈ 𝑍 ∗ , với 𝑔 là phần tử sinh ra một nhóm có bậc Hai đối tượng Alice (A) và Bob (B) thỏa thuận lựa chọn một nhóm hữu 𝑝 𝑝 lớn, 𝑝 là một số nguyên tố lớn. Các giá trị 𝑝 và 𝑔 có thể được sinh ra nhờ các thuật toán mô tả trong [69], [70]. Các tham số đầu vào chung: (𝑝, 𝑔), với 𝑝 là một số nguyên tố lớn, 𝑔 là một phần tử sinh của nhóm nhân 𝑝𝑍 ∗.
Đầu ra: Một giá trị (phần tử) thuộc 𝑍𝑝 ∗ được chia sẻ giữa A và B. Các bước thực hiện: 9 - A phát sinh một giá trị ngẫu nhiên 𝑥𝐴 (1 ≤ 𝑥𝐴 ≤ 𝑝 − 1), tính 𝑦𝐴 = 𝑔𝑥𝐴 𝑚𝑜𝑑 𝑝 và gửi giá trị này cho B; - B phát sinh một giá trị ngẫu nhiên 𝑥𝐵 (1 ≤ 𝑥𝐵 ≤ 𝑝 − 1), tính 𝑦𝐵 = 𝑔𝑥𝐵 𝑚𝑜𝑑 𝑝 và gửi giá trị này cho A; - A tính giá trị 𝐾𝐴𝐵 = (𝑦𝐵)𝑥𝐴 = (𝑔𝑥𝐵)𝑥𝐴 𝑚𝑜𝑑 𝑝 - B tính giá trị 𝐾𝐵𝐴 = (𝑦𝐴)𝑥𝐵 = (𝑔𝑥𝐴)𝑥𝐵 𝑚𝑜𝑑 𝑝 Dễ dàng thấy rằng cả A và B đã nhận được một giá trị khóa bí mật chung chia sẻ, nó có thể được sử dụng trên các hệ mật khóa bí mật. Một số khuyến nghị khi thực hiện và sử dụng giao thức DH: - Lựa chọn số nguyên tố 𝑝 đủ lớn (|𝑝| ≥ 1024 𝑏𝑖𝑡). - Lựa chọn 𝑔 là phần tử sinh của nhóm 𝑍𝑝∗.
- A và B sẽ xóa các giá trị 𝑥𝐴 và 𝑥𝐵 khi kết thúc hoạt động của giao thức. Khi thực hiện điều này chúng sẽ có đặc tính bảo mật về phía trước. Hellman đề xuất sử dụng các hệ mật khóa công khai để trao đổi khóa, các giao thức trao đổi khóa khác đã được phát triển tương tự, trong đó có thể kể đến giao thức PGP (Pretty Good Privacy Encryption) được tạo ra bởi Philip Zimmermann vào năm 1991 [79]. Trong giao thức này, khóa được mã hóa bằng cách sử dụng một hệ mật khóa công khai (sử dụng khóa công khai của bên nhận).
Vì vậy, chỉ có bên nhận có thể giải mã được khóa đã được mã. Nhưng bằng cách sử dụng một giao thức như vậy đòi hỏi không chỉ quá trình mã hóa – giải mã khác mà còn thêm chứng thực của khóa công khai. Khi các hệ mật mới hơn được phát triển, giao thức DHKE thay đổi dựa trên các bài toán khác nhau. Đó là DHKE dựa trên đường cong elliptic (Elliptic Curve Diffie–Hellman Key Exchange – ECDHKE), các giao thức MQV (Menezes–Qu–Vanstone Protocols), giao thức ECMQV (Elliptic Curve MQV), HMQV (Hashed MQV), FHMQV (Fully Hashed MQV),… 10 Một số phát triển dựa trên giao thức MQV: Năm 1995, nhóm tác giả A.
Menezes, Minghua Qu và S. Vanstone (MQV) [1] đã trình bày phương thức tấn công đối với một số giao thức trao đổi khóa đã phát triển trước đó như: giao thức một lần truyền của Nyberg–Rueppel; giao thức hai lần truyền của Goss và Yacobi. Các giao thức này đều không cung cấp tính chất an toàn là xác thực khóa ẩn. MQV cũng đề xuất giao thức của nhóm và chứng minh được giao thức đề xuất cung cấp tính chất an toàn là xác thực khóa ẩn.
Giao thức này được trình bày và chứng minh chi tiết trong tài liệu [1]. Giao thức MQV được coi là giao thức trao đổi khóa chuẩn và được tích hợp trong các khóa công khai tiêu chuẩn IEEE P1363 [68]. Năm 2005, khi nghiên cứu tính an toàn của giao thức MQV trên mô hình trao đổi khóa Canetti–Krawczyk, Hugo Krawczyk đã chứng minh rằng giao thức MQV không an toàn với tấn công khóa biết. Để khắc phục nhược điểm trên Krawczyk đã đề xuất giao thức HMQV là phát triển của giao thức MQV [23].
Với việc sử dụng hàm băm (hash function), Krawczyk đã chứng minh giao thức HMQV có độ phức tạp tính toán tương đương với giao thức MQV nhưng có độ an toàn cao hơn (khả năng chống lại tấn công khóa biết). Một biến thể mới của giao thức HMQV được P. Augustin và cộng sự giới thiệu năm 2009 là FHMQV (Fully Hashed MQV) và FHMQV–C (C viết tắt cho Key Confirmation) được thể hiện chi tiết trong [50]. Một hướng phát triển khác của giao thức MQV được Tseng đề xuất vào năm 2002 [74] là không sử dụng hàm băm, thay vào đó sử dụng 𝑛2 khóa phiên trong một phiên để chống lại tấn công khóa biết.
Năm 2013, Hwang và cộng sự phát triển giao thức hiệu quả tạo lập 𝑛2 + 𝑛 khóa trong một phiên [31]. Năm 2014, nhóm nghiên cứu của Li-Chin Hwang, Đại học TaiChung, tiếp tục mở rộng giao thức của Tseng [73] bằng cách sinh 𝑛2 + 1 khóa phiên và tất cả các khóa phiên đều được sử dụng để chống lại tấn công khóa biết [29]. Khái niệm giao thức trao đổi khóa Trao đổi khóa (key exchange): Là các phương pháp trao đổi khóa giữa các thực thể tham gia mã hóa. Giao thức: Là một thuật toán có sự tham gia của nhiều bên, được xác định chính xác bởi một chuỗi các bước hoạt động của các bên tham gia nhằm đạt được mục tiêu xác định.
Giao thức trao đổi khóa (key exchange protocol): Là quá trình thực hiện mà nhờ đó các bên cùng nhau thiết lập khóa bí mật dùng chung trong quá trình truyền thông trên một kênh công cộng. Xác lập khóa (Key Establishment): Là tiến trình trong đó hai (hoặc nhiều) đối tượng xác lập một khóa bí mật được chia sẻ. Trong thực tế có hai kiểu giao thức xác lập khóa: 1) Các giao thức chuyển khóa (Key Transport Protocols), trong đó một khóa được phát sinh bởi một đối tượng và truyền bí mật đến đối tượng thứ hai; 2) Các giao thức thỏa thuận khóa (Key Agreement Protocols), trong đó cả hai đối tượng trao đổi các thông tin để xác lập một khóa bí mật được chia sẻ. Ngoài nhiệm vụ thiết lập một giá trị khóa chung cho hai bên, đôi khi các bên còn đòi hỏi giao thức cung cấp tính xác thực, các khả năng xác thực mà giao thức có thể là: - Xác thực khóa (key authentication): Là khả năng giao thức cho phép một bên được bảo đảm rằng ngoại trừ đúng bên đúng với thông tin danh tính đã xác định trước thì không một ai khác có thể tính được giá trị bí mật.
Điều này có nghĩa là nếu A (B) muốn thiết lập, hoặc chuyển cho B (A) khóa bí mật bằng cách sử dụng một giao thức có khả năng xác thực khóa thì sau khi kết thúc giao thức A chắc chắn rằng chỉ có B mới có thể thu được giá trị đó. Xác thực khóa đôi khi còn được gọi là xác thực khóa ẩn (implicit key authentication); 12 - Xác nhận khóa (key confirmation): Là khả năng giao thức cho phép một bên chắc chắn rằng bên kia đã có giá trị bí mật. Nghĩa là sau khi kết thúc giao thức A chắc chắn rằng B đã thu được giá trị bí mật 𝐾; - Xác thực khóa hiện (explicit key authentication): Giao thức có khả năng xác thực khóa và xác nhận khóa được gọi là giao thức xác thực khóa hiện; - Xác thực thực thể (entity authentication): Là quá trình cho phép một bên được đảm bảo về danh tính của bên kia, và thực sự bên kia đã tham gia vào hoạt động của giao thức. Các giao thức có thể chỉ cung cấp xác thực thực thể một chiều (tức là chỉ cho phép xác thực theo một chiều hoặc là A về B, hoặc là B về A).
Các giao thức có thể bị tấn công dưới dạng các hình thức sau: - Tấn công thụ động (còn gọi là tấn công bị động – passive attack): Quan sát, nghe trộm quá trình thực hiện giao thức nhưng không làm ảnh hưởng tới giao thức và không thay đổi được thông tin giao dịch; - Tấn công chủ động (active attack): Tìm cách thay đổi giao thức (theo hướng có lợi cho mình), thay đổi thông tin, xóa thông tin thực, tạo thông tin giả, tham gia vào giao dịch. Các tính chất an toàn của giao thức trao đổi khóa Phần này mô tả một số tính chất cần có của một giao thức trao đổi khóa ([2], [3], [5], [9], [68]). Độ an toàn khóa đã biết (Known–Key Security – KKS). Mỗi một phiên trao đổi khóa giữa hai thực thể A và B, khóa phiên được tạo ra phải là một khóa bí mật duy nhất chỉ được biết bởi A và B, ngay cả khi người tấn công đã có nghiên cứu (kiến thức) về một vài khóa phiên khác.
Tính an toàn đầy đủ về phía trước (Perfect Forward Secrecy – PFS). Tính an toàn không đầy đủ về phía trước (Half Forward Secrecy): Nếu khóa bí mật dài hạn của một bên tham gia thỏa thuận khóa bị lộ thì các khóa phiên được tạo ra trước đó cũng không bị ảnh hưởng. Tính an toàn đầy đủ về phía trước (Perfect Forward Secrecy hoặc Full Forward Secrecy): Nếu khóa bí mật dài hạn của cả hai bên tham gia thỏa thuận khóa bị lộ thì các khóa phiên được tạo ra trước đó vẫn không bị ảnh hưởng. Tính chất khóa độc lập.
Một giao thức trao đổi khóa được gọi là thỏa mãn tính chất khóa độc lập nếu một khóa phiên bị lộ thì người tấn công cũng không thể tính được các khóa phiên khác. Khả năng có thể chối từ hợp lý (Plausible deniablity).