Trao đổi khóa Diffie-Hellman là một trong những phát triển quan trọng nhất trong mật mã khóa công khai và nó vẫn được thực hiện thường xuyên trong một loạt các giao thức bảo mật khác nha
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA VIỄN THÔNG I
BÀI TIỂU LUẬN
AN NINH MẠNG VIỄN THÔNG
Chuyên đề: Giải thuật trao đổi khóa Diffie-Hellman
Nhóm 2
Giảng viên: TS HOÀNG TRỌNG MINH
Sinh viên : Phan Thế Hiệp – B18DCVT144
Dương Tú Kiên – B18DCVT224 Trần Mạnh Hùng – B18DCVT192 Nguyễn Anh Tú – B18DCVT368
Trang 2Bảng phân công công việc
1 Dương Tú Kiên B18DCVT224 Làm nội dung chương1
2 Phan Thế Hiệp B18DCVT144 Làm nội dung chương 2 gồm có:
• Thiết lập khóa và mã hóa
• Mở rộng bài toán ra nhiều bên
• Làm bản word
3 Trần Mạnh Hùng B18DCVT192 Làm nội dung chương 2 gồm có:
• Giải mã
• Ưu nhược điểm của giải thuật
4 Nguyễn Anh Tú B18DCVT368 Làm nội dung chương 3 và làm
power point
Trang 3MỤC LỤC
MỤC LỤC 2
BẢNG THUẬT NGỮ VIẾT TẮT 2
Chương 1: Tổng quan về trao đổi khóa Diffie–Hellman 4
1.1: Giới thiệu 4
1.2: Ý tưởng cơ bản 4
1.3: Các vấn đề 6
1.4: Ưu nhược điểm của giải thuật trao đổi khóa Diffie-Hellman 7
Chương 2: Mô tả giao thức 8
2.1: Thiết lập khóa và mã hóa 8
2.2: Mở rộng bài toán ra nhiều bên .10
2.2.1: Nguyên tắc cơ bản .10
2.2.2: Các phương pháp 11
2.3: Giải mã 12
Chương 3: Phân tích tính bảo mật của giải thuật 14
3.1: Kiểu tấn công “Người ở giữa” 14
3.2: Bảo mật 16
KẾT LUẬN 17
TÀI LIỆU THAM KHẢO 18
BẢNG THUẬT NGỮ VIẾT TẮT
LAN Local Area Network Mạng máy tính cục bộ
Trang 4LỜI MỞ ĐẦU
An toàn thông tin là nhu cầu rất quan trọng đối với cá nhân cũng như đối với
xã hội và các quốc gia trên thế giới Mạng máy tính an toàn thông tin được tiến hành thông qua các phương tiện vật lý và hành chính Từ khi ra đời cho đến nay, mạng máy tính đã đem lại hiệu quả vô cùng to lớn trong tất cả các lĩnh vực của đời sống Bên cạnh đó người dùng cũng phải đối mặt với các hiểm họa do thông tin trên mạng của họ bị tấn công.An toàn thông tin trên mạng máy tính bao gồm các phương pháp bảo vệ thông tin được lưu giữ và truyền trên mạng Đây là một lĩnh vực đang được quan tâm đặc biệt đồng thời cũng là một công việc hết sức khó khăn và phức tạp.Thưc tế đã chúng tỏ rằng có 1 tình trạng rất đang lo ngại khi bị tấn công thông tin trong quá trình xử lý , truyền và lưu trữ Những tác động bất hợp pháp lên thông tin với mục đích làm tổn thất, sai lạc , lấy cắp các tệp lưu giữ tin , sao chép các thông tin mật , giả mạo người được phép sử dụng thông tin trong các mạng máy tính hiện nay
Trao đổi khóa Diffie-Hellman là một trong những phát triển quan trọng nhất trong mật mã khóa công khai và nó vẫn được thực hiện thường xuyên trong một loạt các giao thức bảo mật khác nhau ngày nay Nó cho phép hai bên trước đây chưa gặp nhau thiết lập một cách an toàn một khóa mà họ có thể sử dụng để bảo mật thông tin liên lạc của họ
Do kiến thức và kinh nghiệm thực tế còn rất nhiều hạn chế nên bài tiểu luận này không tránh khỏi những sai sót và nhầm lẫn Nhóm 2 chúng em rất mong được
sự châm trước và đóng góp ý kiến cả thày để không những bài tiểu luận này có chất lượng cao mà còn trang bị cho nhóm chúng em kiến thức vững vàng hơn trong học tập và làm việc sau này
Chúng em xin chân thành cảm ơn!
Trang 5Chương 1: Tổng quan về trao đổi khóa Diffie–Hellman
1.1: Giới thiệu
Trao đổi khóa Diffie–Hellman (D-H) là một phương pháp trao đổi khóa được phát minh sớm nhất trong mật mã học Phương pháp trao đổi khóa Diffie–Hellman cho phép hai bên (người, thực thể giao tiếp) thiết lập một khóa bí mật chung để mã hóa dữ liệu sử dụng trên kênh truyền thông không an toàn mà không cần có sự thỏa thuận trước về khóa bí mật giữa hai bên Khóa bí mật tạo ra sẽ được sử dụng để mã hóa dữ liệu với phương pháp mã hóa khóa đối xứng Giao thức này được công bố đầu tiên bởi Whitfield Diffie và Martin Hellman vào năm 1976, dù rằng trước đó vài năm nó đã được phát minh một cách độc lập trong GCHQ - cơ quan tình báo Anh, bởi James H.Ellis, Clifford Cocks và Malcolm J Williamson nhưng được giữ bí mật Năm 2002, Hellman đề xuất thuật toán nên được gọi là trao đổi khóa Diffie– Hellman–Merkle để ghi nhận sự đóng góp của Ralph Merkle trong phát minh lĩnh vực mật mã hóa khóa công khai (Hellman, 2002)
Năm 2002, Martin Hellman viết: “Hệ thống này cho tới nay được biết đến với tên gọi Trao đổi khóa Diffie–Hellman Khi hệ thống lần đầu tiên được mô tả trong bài báo của Diffie và tôi, đó là một hệ thống phân phối khóa công khai, một khái niệm nêu ra bởi Merkle, vì vậy nó nên được gọi là Trao đổi khóa 'Diffie–Hellman– Merkle' nếu chúng ta cần một cái tên cho nó Tôi hy vọng rằng phát biểu của tôi sẽ giúp mọi người ghi nhận sự đóng góp tương xứng của Merkle trong phát minh lĩnh vực mật mã hóa khóa công khai.”
1.2: Ý tưởng cơ bản
Diffie–Hellman thiết lập bí mật chung để sử dụng cho trao đổi dữ liệu an toàn trên một kênh truyền thông công cộng không an toàn Sơ đồ sau đây minh họa ý tưởng cơ bản của việc trao đổi khóa thông qua ví dụ về màu sơn Điểm chủ chốt của
ý tưởng này là Alice và Bob trao đổi màu sơn bí mật thông qua hỗn hợp sơn
• Đầu tiên Alice và Bob trộn màu đã biết chung (màu vàng) với màu bí mật riêng của mỗi người
• Sau đó, mỗi người chuyển hỗn hợp của mình tới người kia thông qua một kênh vận chuyển công cộng
• Khi nhận được hỗn hợp của người kia, mỗi người sẽ trộn thêm với màu bí mật của riêng mình và nhận được hỗn hợp cuối cùng
Hỗn hợp sơn cuối cùng là hoàn toàn giống nhau cho cả hai người và chỉ có riêng hai người biết Mấu chốt ở đây là đối với một người ngoài sẽ rất khó (về mặt tính
Trang 6toán) cho họ để tìm ra được bí mật chung của hai người (nghĩa là hỗn hợp cuối cùng) Alice và Bob sẽ sử dụng bí mật chung này để mã hóa và giải mã dữ liệu truyền trên kênh công cộng Lưu ý, màu sơn đầu tiên (màu vàng) có thể tùy ý lựa chọn, nhưng được thỏa thuận trước giữa Alice và Bob Màu sơn này cũng có thể được giả sử là không bí mật đối với người thứ ba mà không làm lộ bí mật chung cuối cùng của Alice và Bob
Giao thức được diễn giải dưới dạng toán học như sau: Giao thức sử dụng nhóm
nhân số nguyên modulo p, trong đó p số nguyên tố, và g là căn nguyên thủy mod p
Trong ví dụ dưới đây, giá trị không bí mật được viết bằng màu xanh, và giá trị bí mật viết bằng màu đỏ:
1 Alice và Bob thỏa thuận sử dụng chung một số nguyên tố p=23 và căn
nguyên thủy g=5
2 Alice chọn một số nguyên bí mật a=6, và gửi cho Bob giá trị A = g a mod p
• A = 56 mod 23
• A = 15,625 mod 23
• A = 8
3 Bob chọn một số nguyên bí mật b=15, và gửi cho Alice giá trị B = g b mod p
• B = 515 mod 23
• B = 30,517,578,125 mod 23
• B = 19
Trang 74 Alice tính s = B a mod p
• s = 196 mod 23
• s = 47,045,881 mod 23
• s = 2
5 Bob tính s = A b mod p
• s = 815 mod 23
• s = 35,184,372,088,832 mod 23
• s = 2
6 Như vậy Alice và Bob cùng chia sẻ bí mật chung là số 2 vì 6*15 cũng
bằng 15*6
1.3: Các vấn đề
Trong thế giới thực, trao đổi khóa Diffie-Hellman hiếm khi được sử dụng bởi chính nó Lý do chính đằng sau điều này là nó không cung cấp xác thực, khiến người dùng dễ bị tấn công giữa chừng Những cuộc tấn công này có thể diễn ra khi trao đổi khóa Diffie-Hellman được thực hiện bởi chính nó, bởi vì nó không có phương tiện
để xác minh chuẩn xác đối phương Không có bất kì hình thức xác thực, người dùng thực sự có thể đang kết nối với kẻ đang tấn công khi họ nghĩ rằng họ đang liên hệ với một bên đáng tin cậy Vì lý do này, việc trao đổi khóa Diffie-Hellman thường được thực hiện cùng với một số phương tiện xác thực Điều này thường liên quan đến việc sử dụng chứng chỉ kỹ thuật số và thuật toán khóa công khai, chẳng hạn như RSA, để xác minh danh tính của mỗi bên
• Vấn đề bảo mật của trao đổi khóa Diffie-Hellman
Tính bảo mật của trao đổi khóa Diffie-Hellman phụ thuộc vào cách thức triển khai, cũng như các số được chọn cho nó Như đã trình bày ở trên, nó không có cách nào để xác thực bên kia, nhưng trong thực tế, các cơ chế khác được sử dụng để đảm bảo rằng bên kia trong kết nối không phải là kẻ mạo danh Nếu việc triển khai trao đổi khóa Diffie-Hellman trong thế giới thực sử dụng những con số nhỏ như trong ví
dụ đưa ra, nó sẽ khiến quá trình trao đổi trở nên tầm thường đối với kẻ tấn công bị
bẻ khóa Nhưng nó không chỉ là kích thước của những con số quan trọng – những con số cũng cần phải đủ ngẫu nhiên Nếu một trình tạo số ngẫu nhiên tạo ra một đầu
Trang 8ra có thể dự đoán được, nó hoàn toàn có thể làm suy yếu tính bảo mật của trao đổi khóa Diffie-Hellman
1.4: Ưu nhược điểm của giải thuật trao đổi khóa Diffie-Hellman
• Ưu điểm:
1 Các khóa bí mật chỉ được tạo khi cần thiết Không cần phải chứa các khóa bí mật trong một khoảng thời gian dài
2 Việc thỏa thuận dựa trên các tham số chung
• Nhược điểm
1 Nó không cung cấp thông tin bất kỳ về các định danh của các bên
2 Nó an toàn đối với việc tấn công thụ động nghĩa là một người thứ ba biết Ya,
Yb sẽ không tính được K Tuy nhiên giao thức là không an toàn đối với việc tấn công chủ động bằng cách đánh tráo giữa đường hay còn gọi là kiểu tấn công “Người đàn ông ở giữa"
3 Thuật toán không thể bị kiện cho bất kỳ trao đổi khóa bất đối xứng nào
4 Tương tự như vậy, nó không thể được sử dụng để ký chữ ký số
Vì nó không xác thực bất kỳ bên nào trong việc truyền tải, trao đổi chìa khóa Diffie Hellman dễ bị tấn công
Trang 9Chương 2: Mô tả giao thức
2.1: Thiết lập khóa và mã hóa
Giả sử A (Alice) và B (Bob) là các bên muốn liên kết với nhau để tạo 1 khóa
bí mật chung A và B cùng thống nhất chọn p là số nguyên tố đủ lớn để bài toán logarit rời rạc – DLP (Discrete Logarithm Problem) khó giải và g ∈ 𝑍𝑝 là phần tử nguyên thủy của nhóm Khi đó sơ đồ thỏa thuận giữa A và B bao gồm các bước thực hiện như sau:
1 A chọn tham số mật cho mình là 𝑘𝐴, với 1< 𝑘𝐴< p −1
2 A tính 𝑟𝐴= 𝑔𝑘𝐴 mod p và gửi 𝑟𝐴 cho B
3 B chọn tham số mật cho mình là 𝑘𝐵, với 1< 𝑘𝐵< p −1
4 B tính 𝑟𝐵= 𝑔𝑘𝐵 mod p và gửi 𝑟𝐵 cho A
5 A tính khóa bí mật dùng chung: 𝐾𝐴𝐵 = (𝑟𝐵)𝑘𝐴 mod p và : 𝐾𝐵𝐴 = (𝑟𝐴)𝑘𝐵 mod
p
Ta dễ dàng thấy rằng: 𝐾𝐴𝐵= 𝐾𝐵𝐴 = 𝑔𝑘𝐴 𝑘𝐵 mod p Như vậy, A và B đã thiết lập được 1 khóa bí mật chung: K= 𝐾𝐴𝐵= 𝐾𝐵𝐴 Khóa K là bí mật vì ngoài A và B thì không một người thứ 3 nào có thể tính được K nếu không giải được bài toán logarit rời rạc Tuy nhiên, chúng ta sẽ thấy rằng sơ đồ phân phối theo Diffie-Hellman dễ bị tấn công bởi kẻ thứ 3 C (Cover) nào đó Theo dõi quá trình trao đổi khóa của A và B,C có thể mạo danh A để thiết lập 1 khóa chung với B và ngược lại, cụ thể:
• Trong sơ đồ Diffie-Hellman khi A chuyển 𝑟𝐴= 𝑔𝑘𝐴 mod p cho B thì bị C chặn lại và chuyển cho B giá trị 𝑟′𝐴 = 𝑔𝑘𝐴′mod p Tương tự, khi B chuyển 𝑟𝐵= 𝑔𝑘𝐵
mod p cho A thì C cũng chặn giá trị này lại và chuyển cho A giá trị 𝑟′𝐵=
𝑔𝑘𝐵′ mod p Kết quả A tính ra khóa là: 𝐾′𝐴𝐵 = (𝑟′𝐵)𝑘𝐴 mod p = 𝑔𝑘′𝐴 𝑘𝐵 mod
p, còn B tính ra khóa của mình là 𝐾′𝐵𝐴 = (𝑟′𝐴)𝑘𝐵 = 𝑔𝑘′𝐵 𝑘𝐴 mod p
Hiển nhiên là 𝐾′𝐴𝐵 ≠ 𝐾′𝐵𝐴, nên A và B không thể trao đổi thông tin mật với nhau Nhưng vấn đề là, với giá trị 𝑟𝐴= 𝑔𝑘𝐴 mod p mà C lấy được từ A, C tạo được khóa chung với A: 𝐾𝐶𝐴 = (𝑟′𝐴)𝑘𝐵 = 𝑔𝑘′𝐵 𝑘𝐴 mod p Rõ ràng là 𝐾′𝐵𝐴 = 𝐾𝐶𝐴 = 𝑔𝑘′𝐵 𝑘𝐴
mod p nên nếu A không biết điều đó và sử dụng khóa 𝐾′𝐴𝐵 để mã một bản tin M rồi gửi cho B qua kênh công khai mà C có thể lấy được thì C hoàn toàn có thể sử dụng
Trang 10khóa KCA của mình để giải mã bản tin này Hoàn toàn tương tự, C cũng có thể tạo khóa chung 𝐾𝐶𝐵 với B từ giá trị 𝑟𝐵=𝑔𝑘𝐵 mod p mà B gửi cho A: 𝐾𝐶𝐵 = (𝑟𝐵)𝑘′𝐴 mod
p =𝑔𝑘′𝐴 𝑘𝐵 mod p, và C có thể sử dụng khóa này để giải mã mọi bản tin mà B mã hóa bằng khóa 𝐾′𝐶𝐵 khi trao đổi bí mật với A
Vậy nên ta có thủ tục thiết lập khóa chung giữa 2 đối tượng A và B bao gồm các bước thực hiện như sau:
1 Alice và Bob thỏa thuận sử dụng chung một nhóm cyclic hữu hạn G và một phần tử sinh 𝑔𝑘 của G Phần tử sinh g công khai với tất cả mọi người, kể cả
kẻ tấn công Dưới đây chúng ta giả sử nhóm G là nhóm nhân
2 Alice chọn một số tự nhiên ngẫu nhiên 𝑘𝐴 và gửi 𝑔𝑘𝐴 mod p cho Bob
3 Bob chọn một số tự nhiên ngẫu nhiên 𝑘𝐵và gửi 𝑔𝑘𝐵 mod p cho Alice
4 Alice tính (𝑔𝑘𝐵) 𝑘𝐴 mod p
5 Bob tính (𝑔𝑘𝐴) 𝑘𝐵 mod p
Vì giá trị (𝑔𝑘𝐵) 𝑘𝐴 và (𝑔𝑘𝐴) 𝑘𝐵 là bằng nhau (do nhóm G có tính kết hợp), cả Alice và Bob đều tính được giá trị 𝑔𝑘𝐴.𝑘𝐵và có thể sử dụng nó cho khóa bí mật chung
• Ví dụ minh họa:
1 Alice và Bob thống nhất với nhau chọn nguyên tố p = 37 và g = 5
2 Alice chọn một giá trị ngẫu nhiên bất kì 𝑘𝐴 = 7 và bí mật 𝑘𝐴
Alice tính 𝑏𝐴 = 57 mod 37 = 18
Sau đó Alice tính gửi 𝑏𝐴 = 18 cho Bob
3 Bob chọn một giá trị ngẫu nhiên bất kì 𝑘𝐵= 5 và bí mật 𝑎𝐵
Bob tính 𝑏𝐵 = 55 mod 37 = 17
Sau đó Bob gửi 𝑏𝐵 = 17 cho Alice
4 Bob nhận được 𝑏𝐴 = 18 và tính khóa chung: 𝐾𝐵 = 185 mod 37 = 15 và
bí mật 𝐾𝐵
Trang 115 Alice nhận được 𝑏𝐵 = 17 và tính khóa chung: 𝐾𝐴 = 177 mod 37 = 15 và
bí mật 𝐾𝐴
2.2: Mở rộng bài toán ra nhiều bên
2.2.1: Nguyên tắc cơ bản
Giao thức Diffie-Hellman không giới hạn việc thỏa thuận khóa chỉ cho hai bên tham gia Bất kỳ số lượng người sử dụng nào cũng có thể tham gia vào giao thức
để tạo khóa bí mật chung bằng cách thực hiện lặp lại các bước trao đổi thông tin và tính toán trong giao thức
Trước tiên xét ví dụ Alice, Bob và Carol cùng tham gia giao thức Diffie-Hellman như sau (tất cả tính toán dưới đây dựa trên modulo p):
1 Các bên thỏa thuận trước về các tham số p và g
2 Mỗi bên tự tạo khóa riêng tư, gọi tên là 𝑘𝐴, 𝑘𝐵, 𝑘𝐶
3 Alice tính 𝑔𝑘𝐴 mod p và gửi cho Bob
4 Bob tính (𝑔𝑘𝐴)𝑘𝐵 mod p = 𝑔𝑘𝐴.𝑘𝐵 mod p và gửi cho Carol
5 Carol tính (𝑔𝑘𝐴 𝑘𝐵)𝑘𝐶 mod p = 𝑔𝑘𝐴 𝑘𝐵.𝑘𝐶 mod p và sử dụng giá trị đó làm khóa
bí mật chia sẻ
6 Bob tính 𝑔𝑘𝐵 mod p và gửi cho Carol
7 Carol tính (𝑔𝑘𝐵)𝑘𝐶 mod p = 𝑔𝑘𝐵 𝑘𝐶 mod p và gửi cho Alice
8 Alice tính (𝑔𝑘𝐵.𝑘𝐶)𝑘𝐴 mod p = 𝑔𝑘𝐴.𝑘𝐵.𝑘𝐶 mod p và sử dụng giá trị đó làm khóa
bí mật chia sẻ
9 Carol tính 𝑔𝑘𝐶 mod p và gửi cho Alice
10 Alice tính (𝑔𝑘𝐶)𝑘𝐴 mod p = 𝑔𝑘𝐴 𝑘𝐶 mod p và gửi cho Bob
11 Bob tính (𝑔𝑘𝐴 𝑘𝐶)𝑘𝐵 mod p = 𝑔𝑘𝐴 𝑘𝐵.𝑘𝐶 mod p và sử dụng giá trị đó làm khóa
bí mật chia sẻ
Một kẻ nghe lén có thể quan sát được 𝑔𝑘𝐴 mod p, 𝑔𝑘𝐵 mod p, 𝑔𝑘𝐶 mod p, nhưng không thể tận dụng được bất cứ tổ hợp nào của những giá trị này để tính ra được 𝑔𝑘𝐴.𝑘𝐵.𝑘𝐶 mod p
Trang 12Cơ chế này có thể được mở rộng cho N người dựa vào hai nguyên tắc cơ bản sau:
• Bắt đầu giao thức với một khóa "rỗng" chỉ chứa g Bí mật mỗi bên được tạo
ra bằng cách tính lũy thừa của giá trị hiện tại lưu tại mỗi bên với phần riêng
tư của mỗi bên (lũy thừa của lượt đầu tiên chính là khóa công khai của mỗi bên) Nguyên tắc này có thể được thực hiện theo bất kỳ thứ tự nào
• Bất kỳ giá trị tạm thời nào (với số lượt tính từ N-1 trở xuống, trong đó N là số lượng người trong nhóm) đều có thể truyền công khai, ngoại trừ giá trị cuối cùng (đã tính hết N lượt lũy thừa) sẽ tạo thành bí mật chia sẻ (vì vậy không được để lộ giá trị của lượt cuối cùng) Do đó, mỗi người phải tính bí mật chia
sẻ chung bằng cách áp dụng khóa riêng tư của mình sau cùng (nếu không sẽ không có cách nào cho người cuối cùng truyền được khóa cuối cùng cho người nhận, vì người cuối cùng sẽ biến khóa đó thành khóa bí mật mà cả nhóm muốn bảo vệ)
2.2.2: Các phương pháp
1 Phương pháp vòng tròn
Các nguyên tắc trên cho phép thực hiện theo bất kỳ thứ tự nào giữa những người tham gia Cách đơn giản và dễ hiểu nhất có lẽ là sắp xếp N người tham gia theo vòng tròn và chuyển N khóa theo vòng tròn cho tới khi mỗi khóa được chuyển tới tất cả N người tham gia (kết thúc với người sở hữu khóa đó) và mỗi người đã đóng góp phần của mình trong N khóa đó (kết thúc với khóa của riêng mỗi người) Cách này yêu cầu mỗi người thực hiện N phép tính modulo lũy thừa
2 Phương pháp chia để trị
Có thể thấy rằng trong quá trình tính toán các khóa có thể bị tính trùng lặp bởi các bên tham gia Như vậy một thứ tự tốt khác có thể giúp ta giảm số lượng phép tính modulo lũy thừa tính bởi mỗi người tham gia xuống Cụ thể, số lượng phép tính lũy thừa có thể giảm xuống còn log2𝑁+1 bằng cách sử dụng kiểu phương pháp chia
để trị Ví dụ sau minh họa phương pháp này cho 8 người:
1 Mỗi người A, B, C, và D thực hiện một phép tính lũy thừa để tính 𝑔𝑘𝐴 𝑘𝐵.𝑘𝐶.𝑘𝐷
mod p; giá trị này được gửi đến E, F, G, và H Ngược lại A, B, C, và D nhận
𝑔𝑘𝐸.𝑘𝐹.𝑘𝐺.𝑘𝐻 mod p;