19 BẢNG ĐỐI CHIẾU THUẬT NGỮ VIẾT TẮT DLP Discrete Logarithm Problem Bài toán Logarit rời rạc EDH Ephemeral Diffie-Hellman FTP File Transfer Protocol Giao thức truyền tệp tin GCHQ Gove
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA VIỄN THÔNG 1
=== ===
TIỂU LUẬN KẾT THÚC HỌC PHẦN MÔN: AN NINH MẠNG THÔNG TIN
ĐỂ TÀI: “TRAO ĐỔI KHÓA DIFFIE-HELLMAN VÀ ỨNG DỤNG”
Hà nội, 2021
Trang 2Tiểu luận cuối kì ANMTT Mục lục và các danh mục kèm theo
Thực hiện: Nhóm 21 i GV: Ths.Nguyễn Thanh Trà
MỤC LỤC
CHƯƠNG 1: GIỚI THIỆU GIAO THỨC DIFFIE-HELLMAN 1
1.1 ĐẶT VẤN ĐỀ 1
1.2 LỊCH SỬ PHÁT TRIỂN 1
1.3 CÁC KHÁI NIỆM CƠ BẢN 3
1.3.1 Bài toán logarit rời rạc 3
1.3.2 Trao đổi khóa Diffie-Hellman 3
1.4 ƯU, NHƯỢC ĐIỂM CỦA DIFFIE-HELLMAN 4
CHƯƠNG 2: GIAO THỨC THỎA THUẬN KHÓA DIFFIE-HELLMAN 5
2.1 CÁCH THIẾT LẬP GIAO THỨC DIFFIE-HELLMAN 5
2.2 SƠ ĐỒ GIAO THỨC DIFFIE-HELLMAN 7
2.3 PHẦN VÍ DỤ 8
2.4 MỞ RỘNG BÀI TOÁN CHO NHIỀU BÊN 9
CHƯƠNG 3: TÍNH AN TOÀN CỦA GIAO THỨC DIFFIE-HELLMAN 12
3.1 GIAO THỨC LÀ AN TOÀN VỚI VIỆU TẤN CÔNG THỤ ĐỘNG 12
3.2 GIAO THỨC LÀ KHÔNG AN TOÀN VỚI VIỆC TẤN CÔNG CHỦ ĐỘNG 14
CHƯƠNG 4: ỨNG DỤNG CỦA TRAO ĐỔI KHÓA DIFIE-HELLMAN 16
4.1 EPHEMRAL DIFFIE-HELLMAN HANDSHAKE TRONG SSL 16
4.2 KHÓA CÔNG KHAI 19
4.3 MỘT SỐ ỨNG DỤNG KHÁC 20
TỔNG KẾT 21
TÀI LIỆU THAM KHẢO 22
DANH MỤC HÌNH VẼ VÀ BẢNG BIỂU Bảng 2 1:Mô tả giao thức Diffie-Hellman 6
Hình 2 1: Sơ đồ giao thức Diffie-Hellman 7
Hình 2 2: Ví dụ trao đổi khoá giữa hai bên 8
Hình 2 3: Sơ đồ mở rộng giao thức Diffie-Hellman trong kịch bản cho ba bên 9
Hình 3 1: Kẻ tấn công ở giữa 15
Trang 3Tiểu luận cuối kì ANMTT Mục lục và các danh mục kèm theo
Thực hiện: Nhóm 21 ii GV: Ths.Nguyễn Thanh Trà
Hình 4 1: Ephemeral Diffie-Hellman handshake trong SSL 17 Hình 4 2: Quá trình gửi tin sử dụng khóa công khai 19
BẢNG ĐỐI CHIẾU THUẬT NGỮ VIẾT TẮT
DLP Discrete Logarithm Problem Bài toán Logarit rời
rạc EDH Ephemeral Diffie-Hellman
FTP File Transfer Protocol Giao thức truyền tệp
tin
GCHQ Government Communications
Headquarters
Trụ sở truyền thông chính phủ
IETF Internet Engineering Task
Force
Nhóm đặc trách kỹ thuật Internet
IKE Internet Key Exchange Trao đổi khóa Internet
IP Internet Protocol Giao thức Internet
IPSec Internet Protocol Security Bảo mật giao thức
internet
SNI Server Name Indication Chỉ dẫn tên máy chủ
TLS Transport Layer Security Bảo mật lớp vận
chuyển
Trang 4Tiểu luận cuối kì ANMTT Chương 1: Giới thiệu về giao thức Diffie-Hellman
Thực hiện: Nhóm 21 1 GV: Ths.Nguyễn Thanh Trà
CHƯƠNG 1: GIỚI THIỆU GIAO THỨC DIFFIE-HELLMAN
1.1 ĐẶT VẤN ĐỀ
Từ xưa đến nay việc trao đổi thông tin trong cuộc sống hàng ngày luôn là một nhu cầu tất yếu Trải qua nhiều thời kì việc trao đổi thông tin đòi hỏi nhiều dịch vụ hơn để đáp ứng nhu cầu ngày càng cao của con người Nếu như trước kia việc truyền tin giữa hai khu vực xa nhau sử dụng thư viết tay và thực hiện chuyển tiếp qua các phương tiện giao thông thông thường, việc này mất khá nhiều thời gian nên có thể dẫn đến tin truyền
đi có thể không còn giá trị sử dụng đối với người nhận nữa Còn ngày nay với sự phát triển của công nghệ chỉ cần mỗi người dùng sử dụng một thiết bị thông minh kèm theo dịch vụ truyền tin qua mạng internet là có thể trao đổi thông tin trực tiếp với nhau Điều này làm tăng tính hiệu quả về mặt thời gian của việc truyền tin khi chỉ mất vài giây để thực hiện Tuy nhiên có nhiều bất cập nảy sinh xoay quanh việc truyền tin qua mạng
mà tiêu biểu là vấn đề bảo mật thông tin Việc thông tin bị đánh cắp hay tráo đổi đã gây
ra nhiều hệ lụy cho người sử dụng Do đó nhiều tổ chức hay cá nhân đã bắt đầu nghiên cứu, tìm kiếm và đưa ra các giải pháp đề bảo mật thông tin và một trong nhữn giải pháp đầu tiên cho vấn đề này là giao thức trao đổi khóa Diffie-Hellman
1.2 LỊCH SỬ PHÁT TRIỂN
Năm 1976, một sự đột phá đã thay đổi nền tảng cơ bản trong cách làm việc của các
hệ thống mật mã hóa Đó chính là việc công bố của bài viết phương hướng mới trong mật mã học (New Directions in Cryptography) của Whitfield Diffie và Martin Hellman Bài viết giới thiệu một phương pháp hoàn toàn mới về cách thức phân phối các khóa mật mã Là hệ thống đầu tiên sử dụng "public-key" hoặc các khóa mật mã "không đối xứng", và nó được gọi là trao đổi khóa Diffie-Hellman (Diffie-Hellman key exchange) Bài viết còn kích thích sự phát triển gần như tức thời của một lớp các thuật toán mật mã hóa mới, các thuật toán chìa khóa bất đối xứng (asymmetric key algorithms)
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
Trang 5Tiểu luận cuối kì ANMTT Chương 1: Giới thiệu về giao thức Diffie-Hellman
Thực hiện: Nhóm 21 2 GV: Ths.Nguyễn Thanh Trà
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 chút lời mọn của tôi ở đây 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.”
Trước thời kỳ này, hầu hết các thuật toán mật mã hóa hiện đại đều là những thuật toán khóa đối xứng (symmetric key algorithms), trong đó cả người gửi và người nhận phải dùng chung một khóa, tức khóa dùng trong thuật toán mật mã, và cả hai người đều phải giữ bí mật về khóa này Tất cả các máy điện cơ dùng trong thế chiến II, kể cả mã Caesar và mã Atbash, và về bản chất mà nói, kể cả hầu hết các hệ thống mã được dùng trong suốt quá trình lịch sử nữa đều thuộc về loại này Đương nhiên, khóa của một mã chính là sách mã (codebook), và là cái cũng phải được phân phối và giữ gìn một cách
bí mật tương tự
Do nhu cầu an ninh, khóa cho mỗi một hệ thống như vậy nhất thiết phải được trao đổi giữa các bên giao thông liên lạc bằng một phương thức an toàn nào đấy, trước khi
họ sử dụng hệ thống (thuật ngữ thường được dùng là 'thông qua một kênh an toàn'), ví
dụ như bằng việc sử dụng một người đưa thư đáng tin cậy với một cặp tài liệu được khóa vào cổ tay bằng một cặp khóa tay, hoặc bằng cuộc gặp gỡ mặt đối mặt, hay bằng một con chim bồ câu đưa thư trung thành Vấn đề này chưa bao giờ được xem là dễ thực hiện, và nó nhanh chóng trở nên một việc gần như không thể quản lý được khi số lượng người tham gia tăng lên, hay khi người ta không còn các kênh an toàn để trao đổi khóa nữa, hoặc lúc họ phải liên tục thay đổi các chìa khóa - một thói quen nên thực hiện trong khi làm việc với mật mã Cụ thể là mỗi một cặp truyền thông cần phải có một khóa riêng nếu, theo như thiết kế của hệ thống mật mã, không một người thứ ba nào, kể
cả khi người ấy là một người dùng, được phép giải mã các thông điệp Một hệ thống
Trang 6Tiểu luận cuối kì ANMTT Chương 1: Giới thiệu về giao thức Diffie-Hellman
Thực hiện: Nhóm 21 3 GV: Ths.Nguyễn Thanh Trà
thuộc loại này được gọi là một hệ thống dùng chìa khóa mật, hoặc một hệ thống mật mã hóa dùng khóa đối xứng Hệ thống trao đổi khóa Diffie-Hellman (cùng những phiên bản được nâng cấp kế tiếp hay các biến thể của nó) tạo điều kiện cho các hoạt động này trong các hệ thống trở nên dễ dàng hơn rất nhiều, đồng thời cũng an toàn hơn, hơn tất
cả những gì có thể làm trước đây
Mặc dù giao thức trao đổi khóa Diffie–Hellman bản thân nó là giao thức trao đổi khóa ẩn danh (không xác thực), nó đã đưa ra một nền tảng cơ sở cho nhiều loại giao thức xác thực và được sử dụng để tạo nên bí mật chuyển tiếp hoàn hảo trong chế độ ngắn hạn của giao thức Transport Layer Security (EDH hoặc DHE tùy theo bộ mã hóa) Phương thức tiếp nối ngay sau Diffie – Hellman là RSA, một thể hiện của mã khóa công khai sử dụng thuật toán bất đối xứng
1.3 CÁC KHÁI NIỆM CƠ BẢN
1.3.1 Bài toán logarit rời rạc
Phát biểu bài toán logarit rời rạc: “Cho số nguyên tố p, gọi g ∈ Z* là phần tử sinh (generator) và một phần tử β ∈ Z* Cần xác định số nguyên dương a ∈ Z* sao cho ga ≡
β (mod p), kí hiệu a = loggβ Trên thực tế, bài toán logarit rời rạc thuộc nhóm NP hay nói cách khác, chưa có thuật toán có thời gian đa thức nào có thể giải quyết được bài toán này Với p có tối thiểu 150 chữ số và p-1 có thừa số nguyên tố đủ lớn, phép toán lũy thừa modulo p có thể xem như là hàm một chiều hay việc giải bài toán logarit rời rạc trên Zp xem như không thể thực hiện được Lợi thế của bài toán logarit rời rạc trong xây dựng hệ mật là khó tìm được logarit rời rạc, xong bài toán lấy lũy thừa lại có thể tính toán hiệu quả theo thuật toán “bình phương và nhân” Nói cách khác, lũy thừa theo modulo p là hàm một chiều với các số nguyên tố p thích hợp
1.3.2 Trao đổi khóa Diffie-Hellman
Trao đổi khóa Diffie – Hellman: là thiết lập một khóa chia sẻ bí mật được sử dụng cho thông tin liên lạc bí mật bằng cách trao đổi dữ liệu thông qua mạng công cộng Đây
là một trong số nhiều phương thức dùng để trao đổi khóa trong ngành mật mã học Phương pháp này không cần có sự can thiệp của một TA ( cơ quan ủy thác) làm nhiệm
Trang 7Tiểu luận cuối kì ANMTT Chương 1: Giới thiệu về giao thức Diffie-Hellman
Thực hiện: Nhóm 21 4 GV: Ths.Nguyễn Thanh Trà
vụ điều hành hoặc phân phối khóa Phương pháp này 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
Xét về bản chất, sức mạnh thật sự của Diffie-Hellman đến từ bài toán DLP (Discrete Logarithm Problem – Bài toán logarit rời rạc) Đây là bài toán ngược của phép tính Modular Exponentiation (tương ứng với việc tìm c theo công thức: c = be mod m) Ví
dụ, với b=7, e=3 và m=13 thì sẽ tính được là c=73 mod 13=343 mod 13=5 Và khi đó DLP là bài toán tìm e trong công thức c=be mod m khi biết c, b và m DLP được các bậc thầy toán học xác định là “khó nhằn” – tức là chưa có thuật toán hiệu quả để tính toán và đây chính là cơ sở cho sức mạnh bảo mật của Diffie-Hellman
1.4 ƯU, NHƯỢC ĐIỂM CỦA DIFFIE-HELLMAN
-Ưu điểm:
➢ Người gửi và người nhận không cần biết trước về nhau
➢ Sau khi các khóa được trao đổi, việc truyền dữ liệu có thể được thực hiện thông qua một kênh an toàn
➢ Việc chia sẻ khóa bí mật là an toàn
-Nhược điểm:
➢ Thuật toán không thể sử dụng cho bất kỳ trao đổi khóa bất đối xứng nào
➢ Không thể sử dụng cho chữ ký điện tử
➢ Vì nó không xác thực bất kì bên nào trong quá trình truyền, trao đổi khóa Diffie-Hellman dễ bị tấn công giữa các bên (man-in-the-middle attack)
Trang 8Tiểu luận cuối kì ANMTT Chương 2: Giao thức thỏa thuận khóa Diffie-Hellman
Thực hiện: Nhóm 21 5 GV: Ths.Nguyễn Thanh Trà
CHƯƠNG 2: GIAO THỨC THỎA THUẬN KHÓA DIFFIE-HELLMAN
2.1 CÁCH THIẾT LẬP GIAO THỨC DIFFIE-HELLMAN
❖ Tình huống:
• Alice và Bob muốn chia sẻ thông tin bảo mật cho nhau nhưng phương tiện truyền thông duy nhất của họ là không an toàn Tất cả các thông tin mà họ trao đổi được quan sát bởi Eve (kẻ thù của họ)
• Làm thế nào để Alice và Bob chia sẻ thông tin bảo mật cho nhau mà không làm cho Eve biết được?
• Thoạt nhìn ta thấy Alice và Bob phải đối mặt với một nhiệm vụ không thể
❖ Giải quyết tình huống trên:
• Alice và Bob đồng ý dùng chung về một nhóm cyclic hữu hạn G và một yếu
tố tạo ra g trong G (Điều này thường được thực hiện rất lâu trước khi phần còn lại của giao thức, g được giả định là được biết đến bởi tất cả các kẻ tấn công)
• Khi Alice và Bob muốn truyền thông tin bảo mật cho nhau có thể cùng thực hiện theo giao thức sau để trao đổi:
1 Alice chọn ngẫu nhiên số XA(0 ≤ XA ≤ q-1) bí mật, tính YA = (αX Amod p) và gửi YA cho Bob
2 Tương tự, Bob chọn ngẫu nhiên số XB (0 ≤ XB ≤ q-1) bí mật, tính
YB=(αX Bmod p) và gửi YB cho Alice
3 Alice tính được khóa: KA = YBXA mod q
4 Bob tính được khóa: KB = YAXB mod q
• Bây giờ Alice và Bob có cùng khóa chung là: KA = KB = αXA XB mod q
Trang 9Tiểu luận cuối kì ANMTT Chương 2: Giao thức thỏa thuận khóa Diffie-Hellman
Thực hiện: Nhóm 21 6 GV: Ths.Nguyễn Thanh Trà
• Mô tả giao thức Diffie - Hellman bằng bảng sau:
Bảng 2 1:Mô tả giao thức Diffie-Hellman
❖ Chú ý là chỉ có X A , X B và K A , K B là được giữ bí mật Tất cả các giá trị còn lại như q,
α, Y A , Y B đều công khai Một khi Alice và Bob tính được khóa bí mật dùng chung,
họ có thể dùng nó làm khóa mã hóa chỉ họ biết để gửi các thông điệp qua cùng kênh
giao tiếp mở Đương nhiên, để đảm bảo an toàn, các giá trị X A , X B và q cần được lấy lớn hơn, α không cần lấy giá trị quá lớn Thực tế thì α thường lấy giá trị 2 hoặc 5
Trang 10Tiểu luận cuối kì ANMTT Chương 2: Giao thức thỏa thuận khóa Diffie-Hellman
Thực hiện: Nhóm 21 7 GV: Ths.Nguyễn Thanh Trà
2.2 SƠ ĐỒ GIAO THỨC DIFFIE-HELLMAN
Hình 2 1: Sơ đồ giao thức Diffie-Hellman
Trang 11Tiểu luận cuối kì ANMTT Chương 2: Giao thức thỏa thuận khóa Diffie-Hellman
Thực hiện: Nhóm 21 8 GV: Ths.Nguyễn Thanh Trà
2.3 PHẦN VÍ DỤ
Hình 2 2: Ví dụ trao đổi khoá giữa hai bên
Giả sử khóa trao đổi dựa trên số nguyên q=353 và căn nguyên thủy của nó trong
trường hợp này = 3 A và B lựa chọn những khóa riêng là XA=97 và XB=233 Việc tính ra khóa công khai sẽ là:
A tính được YA = 3 97 mod 353 = 40
B tính được YB = 3 233 mod 353 = 248
Sau khi chúng trao đổi khóa công khai, mỗi bên sẽ tính được khóa bí mật chung là:
A tính được K = (YB)XA mod 353 = 248 97 mod 353 = 160
B tính được K = (YA)XB mod 353 = 40 233 mod 353 = 160
Trang 12Tiểu luận cuối kì ANMTT Chương 2: Giao thức thỏa thuận khóa Diffie-Hellman
Thực hiện: Nhóm 21 9 GV: Ths.Nguyễn Thanh Trà
2.4 MỞ RỘNG BÀI TOÁN CHO NHIỀU BÊN
Thoả thuận khoá DH không chỉ giới hạn để thương lượng một khoá dùng chung giữa hai bên Bất cứ một số lượng người dùng nào cũng có thể tham gia vào một thoả thuận như vậy bằng cách lặp các giao thức thoả thuận và trao đổi dữ liệu trung gian
Giả sử với 3 người A, B, C:
Hình 2 3: Sơ đồ mở rộng giao thức Diffie-Hellman trong kịch bản cho ba bên
1 Các bên đạt được thoả thuận chung về tham số giải thuật là q và α
2 Các bên tự sinh khoá bí mật XA , XB , XC
Trang 13Tiểu luận cuối kì ANMTT Chương 2: Giao thức thỏa thuận khóa Diffie-Hellman
Thực hiện: Nhóm 21 10 GV: Ths.Nguyễn Thanh Trà
3 A tính khoá công khai YA = 𝛼𝑋 𝐴mod q và gửi cho B
4 B tính YBA=(𝑌𝐴)𝑋𝐵mod q và gửi cho C
5 C tính YCBA = (𝑌𝐵)𝑋 𝐶mod q và lấy nó làm khoá bí mật
6 B tính khoá công khai YB = 𝛼𝑋 𝐵mod q và gửi cho C
7 C tính YCB=(𝑌𝐵)𝑋𝐶mod q và gửi cho A
8 A tính YACB= (𝑌𝐶)𝑋𝐴mod q và lấy nó làm khoá bí mật
9 C tính khoá công khai YC = 𝛼𝑋 𝐶mod q và gửi cho A
10 A tính YAC= (𝑌𝐶)𝑋𝐴mod q và gửi cho B
11 B tính YBAC= (𝑌𝐴)𝑋𝐵 mod q và lấy nó làm khoá bí mật
Một người khác nếu muốn phá hoại hoặc xâm nhập trái phép có thể biết được các tổ hợp YA YB Yc YAB YBC YAC nhưng sẽ không thể kết hợp chúng thành YABC Để mở rộng cơ chế này cho các nhóm lớn hơn cần tuân thủ 2 nguyên tắc:
- Bắt đầu với một khoá “rỗng”, khoá bí mật được tạo ra bằng cách tăng giá trị hiện tại theo số mũ bí mật của những bên tham gia một lần, theo thứ tự bất kì
- Bất kì giá trị trung gian nào cũng đều có thể bị công khai ( từ 1 đến N-1 ) nhưng giá trị cuối cùng (N) sẽ không được để công khai vì nó sẽ tạo thành khoá bí mật dùng chung Mỗi người dùng sẽ thu về bản sao của khoá mật bằng cách sử dụng khoá mật của chính họ lúc cuối cùng
Dựa vào nguyên tắc tạo khoá này, có các cách sắp xếp thứ tự chuyển khoá:
- Phương pháp 1: sắp xếp N bên tham gia vào một vòng tròn và có N khoá xoay quanh vòng tròn này, cho tới khi mỗi bên đều đã đóng góp vào N khoá Tuy nhiên, điều này yêu cầu mỗi bên phải tính N số mũ thành phần