Bài tiểu luận này trình bày về trao đổi khóa Diffie-Hellman, một trong những giao thức mật mã khóa công khai đầu tiên được sử dụng để tạo khóa bí mật giữa hai bên tham gia qua một kênh b
Trang 1TIỂU LUẬN MÔN HỌC
AN NINH MẠNG VIỄN THÔNG
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA VIỄN THÔNG I
ĐỀ TÀI: GIẢI THUẬT TRAO ĐỔI KHÓA DIFFIE-HELLMAN VÀ
PHÂN TÍCH TÍNH AN TOÀN CỦA GIẢI THUẬT
Trang 2i
BẢNG PHÂN CÔNG CÔNG VIỆC
1.1 Miêu tả quá trình Tìm hiểu nội dung
và trình bày ra file
word 1.2 Giải thích toán học
2.1 Ưu nhược điểm của giải thuật Hellman
Diffie-Tìm hiểu nội dung
và trình bày ra file word, tổng hợp và chỉnh sửa định dạng bài tiểu luận
2.2 Tính an toàn của giải thuật Hellman
Diffie-3.1 Mô phỏng quá trình trao đổi khóa
Tìm hiểu nội dung
Trang 3ii
MỤC LỤC
BẢNG PHÂN CÔNG CÔNG VIỆC i
LỜI MỞ ĐẦU iii
DANH MỤC THUẬT NGỮ VIẾT TẮT iv
DANH MỤC HÌNH VẼ v
DANH MỤC BẢNG BIỂU vi
CHƯƠNG 1: TỔNG QUAN TRAO ĐỔI KHÓA DIFFIE-HELLMAN 1
1.1 Miêu tả quá trình 1
1.2 Giải thích toán học 4
CHƯƠNG 2: ƯU NHƯỢC ĐIỂM CỦA THUẬT TOÁN DIFFIE – HELLMAN VÀ TÍNH AN TOÀN CỦA GIẢI THUẬT 8
2.1 Ưu nhược điểm của giải thuật Diffie-Hellman 8
2.2 Tính an toàn của giải thuật Diffie-Hellman 8
CHƯƠNG 3: MÔ PHỎNG GIẢI THUẬT DIFFIE-HELLMAN VÀ ỨNG DỤNG CỦA GIẢI THUẬT 17
3.1 Mô phỏng quá trình trao đổi khóa 17
3.2 Mô phỏng quá trình tấn công Man in the middle 21
3.3 Ứng dụng của giải thuật 25
KẾT LUẬN xxviii
TÀI LIỆU THAM KHẢO xxix
Trang 4iii
LỜI MỞ ĐẦU
Các yêu cầu về quyền riêng tư đối với tài liệu ngày càng tăng trên các giao dịch Internet hiện nay Việc bảo mật các kênh truyền thông số rất quan trọng trong thương mại điện tử, thông tin y tế,… Nói chung, việc kết nối an toàn giữa các kênh truyền bên trên Internet hiện tại đang là một yêu cầu bắt buộc Trong các phiên làm việc, các bên tham gia sẽ trao đổi các khóa hoặc dữ liệu trong một kênh liên lạc để không ai khác ngoài người gửi và người nhận có thể nhận được những chìa khóa hoặc dữ liệu đó Bài tiểu luận này trình bày về trao đổi khóa Diffie-Hellman, một trong những giao thức mật mã khóa công khai đầu tiên được
sử dụng để tạo khóa bí mật giữa hai bên tham gia qua một kênh bảo mật kém
Đề tài “Giải thuật trao đổi khóa Diffie-Hellman và ứng dụng” đã được nhóm em
trình bày trong quá trình tham gia học trên lớp, và ở bài thi kết thúc học phần An ninh mạng
này, nhóm đã phát triển đề tài thành “Giải thuật trao đổi khóa Diffie-Hellman và phân
tích tính an toàn của giải thuật”, tập trung đi sâu nghiên cứu thêm về tính an toàn cũng
như các khả năng bị tấn công của giải thuật này
Nội dung của bài tiểu luận bao gồm ba chương:
Chương 1: Tổng quan giao thức trao đổi khóa Diffie-Hellman: trình bày về lịch sử
ra đời, bài toán logarit rời rạc, quy trình trao đổi khóa, và quy trình mã hóa và giải mã sử dụng thuật toán Diffie-Hellman
Chương 2: Ưu nhược điểm của thuật toán Diffie-Hellman và tính an toàn của giải thuật sẽ phân tích về ưu điểm và các hạn chế của thuật toán, đồng thời nêu ra một số biện
pháp khắc phục
Chương 3: Mô phỏng giải thuật Diffie-Hellman và ứng dụng của giải thuật: thực
hiện mô phỏng quá trình tấn công Man-in-the-middle bằng ngôn ngữ lập trình C và nêu các ứng dụng của giải thuật
Tuy đã cố gắng nhưng do kiến thức còn hạn chế nên bài tiểu luận của nhóm chúng em vẫn còn nhiều thiếu sót, mong cô giáo có thể xem và góp ý để chúng em rút kinh nghiệm
và làm tốt hơn cho những lần sau!
Qua đây chúng em cũng xin gửi lời cảm ơn chân thành sâu sắc nhất tới các thầy cô trong Học Viện nói chung và TS Phạm Anh Thư nói riêng, các thầy cô đã luôn nhiệt tình chỉ dạy chúng em, cũng như tạo điều kiện cho chúng em nhiều cơ hội để tự học và học hỏi lẫn nhau, bổ sung thêm kiến thức ngoài thời gian học tập ngắn ngủi trên trường!
Các thành viên nhóm 5
Trang 5iv
DANH MỤC THUẬT NGỮ VIẾT TẮT
DH Diffie-Hellman
DSA Digital Signature Algorithm Thuật toán chữ ký số
IPSec Internet Protocol Security Giao thức mạng về bảo mật
MIM Man-in-the-middle Kẻ tấn công ở giữa
NFS Number Field Sieve Thuật toán sàng trường số
SSL Secure Sockets Layer Giao thức lớp cổng bảo mật
TLS Transport Layer Security Giao thức bảo mật lớp truyền tải
Trang 6v
DANH MỤC HÌNH VẼ
Hình 1.1: Quá trình tạo và trao đổi khóa 2
Hình 1.2: Quá trình tạo khóa bí mật chia sẻ 2
Hình 1.3: Mã hóa, truyền tải và giải mã khóa đối xứng 3
Hình 1.4: Truyền dữ liệu được mã hóa 3
Hình 1.5: Quy trình trao đổi khóa Diffie-Hellman 4
Hình 1.6: Hàm logarit liên tục y = loggx 7
Hình 1.7: Hàm logarit rời rạc y = dloggx (mod p) 7
Hình 2.1: Tấn công Man-in-the-middle 9
Hình 2.2: Tấn công Logjam trong phiên bắt tay TLS 12
Hình 2.3: Thuật toán NFS để tính logarit rời rạc 14
Hình 2.4: Ước tính thời gian để thực hiện tìm ra logarit rời rạc của các tham số Diffie-Hellman 15
Hình 3.1: Lưu đồ thuật toán trao đổi khóa DH 18
Hình 3.2: Kết quả mô phỏng lần 1 trao đổi khóa Diffie-Hellman 20
Hình 3.3: Kết quả mô phỏng lần 2 trao đổi khóa DH 20
Hình 3.4: Lưu đồ thuật toán cuộc tấn công MIM 22
Hình 3.5: Kết quả mô phỏng lần 1 tấn công MIM 24
Hình 3.6: Kết quả mô phỏng lần 2 tấn công MIM 25
Trang 7vi
DANH MỤC BẢNG BIỂU
Bảng 1.1: Tham số cuộc tấn công bị động 6
Bảng 2.1: Máy chủ ảnh hưởng bởi Logjam khi Diffie-Hellman 512 bit bị phá vỡ 15
Bảng 2.2: Máy chủ ảnh hưởng bởi Logjam khi Diffie-Hellman 1024 bit bị phá vỡ 16
Bảng 3.1: Tham số mô phỏng trao đổi khóa DH 17
Bảng 3.2: Tham số mô phỏng cuộc tấn công MIM 21
Trang 81
CHƯƠNG 1: TỔNG QUAN TRAO ĐỔI KHÓA DIFFIE-HELLMAN
Thuật toán Diffe-Hellman, được giới thiệu bởi Whitfield Diffie và Martin Hellman năm 1976, là hệ thống đầu tiên sử dụng khóa công khai hay các khóa mật mã bất đối xứng
Do việc quản lí khóa bất đối xứng dễ dàng hơn rất nhiều, nên các hệ thống này đã khắc phục được những khó khăn của khóa bí mật (hay các hệ thống khóa đối xứng) Trong một
hệ thống khóa đối xứng, cả hai bên truyền thông cần phải có các khóa giống nhau Việc trao đổi bảo mật các khóa như vậy luôn là một vấn đề lớn Có một thời điểm, Cơ quan An ninh Quốc gia đã huy động cả hạm đội xe tải và máy bay có người lái cùng vũ trang để di chuyển khoảng 15 tấn khóa đối xứng bằng giấy để chính phủ Hoa Kỳ sử dụng hàng năm Các doanh nghiêp đơn giản không muốn rắc rối với gánh nặng đó Các hệ thống khóa bất đối xứng làm giảm vấn đề này vì sử dụng 2 khóa: một gọi là "private key" để người sử dụng giữ bí mật, và một gọi là "public key" mà có thể được chia sẻ rộng rãi, do đó, dễ dàng phân phối Không may, nhược điểm của khóa bất đối xứng đó là tốc độ - chúng thực sự chậm cho bất kì một lượng mã hóa lớn nào Ngày nay, chúng ta thường sử dụng một hệ thống khóa đối xứng để mã hóa dữ liệu và một hệ thống mã hóa khóa để phân phối khóa đối xứng Đây chính xác là những gì mà Diffie-Hellman có thể làm khi được sử dụng để trao đổi khóa
1.1 Miêu tả quá trình
Diffe-Hellman không phải là một cơ chế mã hóa thông thường, thực tế ta không sử dụng để mã hóa dữ liệu Thay vào đó, Diffe-Hellman là một phương pháp để trao đổi khóa một cách an toàn, bằng cách tạo một khóa bí mật chung (common secret key) giữa hai thiết
bị, thường được gọi là khóa mã hóa khóa (KEK: Key Encryption Key) Khóa này sau đó
sẽ mã hóa khóa đối xứng để chia sẻ nó an toàn trên đường truyền Khóa đối xứng thường
được gọi là khóa mã hóa lưu lượng (TEK: Traffic Encryption Key) hay khóa mã hóa dữ
liệu (DEK: Data Encryption Key) Do đó, KEK cung cấp sự truyền tải bảo mật cho TEK,
còn TEK cung cấp sự truyền tải bảo mật cho dữ liệu
Quá trình bắt đầu khi mỗi bên giao tiếp tạo ra một khóa bí mật riêng (private key), được miêu tả bởi chữ A trong Hình 1.1 Mỗi bên sau đó sẽ tạo ra khóa công khai (public key), là chữ B trong Hình 1.1., khóa công khai là hàm của khóa riêng Tiếp theo hai hệ thống sẽ trao đổi khóa công khai cho nhau Mỗi bên giao tiếp lúc này sẽ có một khóa công khai và một khóa riêng (chữ C)
Lưu ý rằng điều quan trọng ở đây đó là khóa công khai là hàm của khóa riêng do hai khóa này có liên kết toán học với nhau Tuy nhiên, bạn cần phải tin rằng không thể tìm được khóa riêng từ khóa công khai, điều này sẽ nói ở phần sau
Trong Hình 1.1 có khối "Optional: CA Certifies Public Key", đây là một tùy chọn đăng
kí khóa công khai với một bên thứ ba có thẩm quyền để chứng thực khóa công khai đến từ một nguồn tin cậy Mục đích của điều này để tránh tấn công Man-in-the Middle (sẽ được nói chi tiết ở chương 2)
Trang 92
Hình 1.1: Quá trình tạo và trao đổi khóa
Một khi quá trình trao đổi khóa hoàn thành, mỗi bên có thể tạo ra một "khóa bí mật chung" giống hệt nhau mà không cần gửi đi trên đường truyền Hình 1.2 miêu tả hoạt động này với khối "DH Math" (ví dụ chi tiết toán học sẽ được nói sau) Bằng cách tính toán khóa riêng và khóa công khai nhận được từ bên gửi, mỗi bên sẽ được một giá trị Chúng là "khóa
bí mật chung" có thể sử dụng để mã hóa thông tin giữa hai hệ thống
Hình 1.2: Quá trình tạo khóa bí mật chia sẻ
Lúc này, hoạt động của Diffe-Hellman có thể xem như hoàn thành Khóa bí mật chung (common secret key) có thể dùng để mã hóa dữ liệu Tuy nhiên, như bản chất của tất cả các
hệ thống khóa bất đối xứng, đó là tốc độ xử lý chậm Vậy nên trong đa số các ứng dụng hiện nay của giao thức Diffie-Hellman (SSL, TLS, SSH, và IPSec, ), khóa bí mật chung sẽ được sử dụng để mã hóa một khóa đối xứng "symmetric key", giúp truyền đi an toàn, và bên nhận sẽ giải mã khóa đối xứng bằng khóa bí mật chung này Vì khóa đối xứng có độ dài tương đối ngắn (128, 192, 256 bit) nên khi sử dụng cho một lượng dữ liệu lớn, nó có thể mã hóa và giải mã nhanh chóng
Trang 103
Hình 1.3: Mã hóa, truyền tải và giải mã khóa đối xứng
Hai bên trong quá trình truyền thông sẽ tạo và truyền đi các giá trị khóa đối xứng Một khi quá trình chia sẻ khóa đối xứng được thực hiện an toàn, dữ liệu mã hóa sẽ dễ dàng được bảo vệ Một điều cần lưu ý đó là khóa đối xứng sẽ được thay đổi liên tục để tăng tính bảo mật Và cả hai bên truyền thông vẫn có khóa bí mật chung Diffie-Hellman, nó có thể được
sử dụng để mã hóa các khóa đối xứng trong tương lai tại bất kì lúc nào và bất kì tần suất nào mong muốn
Hình 1.4: Truyền dữ liệu được mã hóa
Trang 114
1.2 Giải thích toán học
1.2.1 Quy trình thực tế
Hình 1.5: Quy trình trao đổi khóa Diffie-Hellman
1 Đầu tiên Alice và Bob thỏa thuận 2 số nguyên tố:
p = 23 và g = 5
(g < p và g là căn nguyên thủy của p)
Hai số này không cần bí mật và có thể được chia sẻ công khai
2 Alice chọn một số bất kì làm khóa riêng a = 4 (a < p và không công khai)
3 Alice tính toán một khóa công khai A:
A = ga mod p = 54 mod 23 = 4
4 Bob chọn một số bất kì làm khóa riêng b = 3 (b < p và không công khai)
5 Bob tính toán một khóa công khai B:
8 S = Ba mod p = Ab mod p = 18 (trao đổi khóa hoàn thành)
Alice và Bob cùng chia sẻ khóa bí mật chung là số 18
Trang 12Nhóm 5 5
❖ Tại sao Ba mod p = Ab mod p?
Đầu tiên ta cần biết tính chất phân phối modulo:
• ab mod n = [(a mod n).(b mod n)] mod n
• (a mod n)b mod n = [(a mod n) (a mod n)] = ab mod n
Ta có: Ba mod p = Ab mod p
<=> (gb mod p)a mod p = (ga mod p)b mod p (1)
Nhờ tính chất phân phối modulo nên
(1) <=> gb.a mod p = ga.b mod p
Do gb.a = ga.b nên ta được điều cần chứng minh
1.2.2 Căn nguyên thủy và bài toán logarit rời rạc
a) Khái niệm căn nguyên thủy
Trong số học mô đun, một số g là một căn nguyên thủy modulo p nếu với mỗi số 𝑎 (𝑎
là nguyên tố cùng nhau với p) có đồng dư với một lũy thừa của g modulo p Nghĩa là, nếu
g là một gốc nguyên thủy modulo n, với mỗi số nguyên 𝑎 là nguyên tố cùng nhau với p, sẽ tồn tại một số nguyên k sao cho gk ≡ 𝑎 mod p
Ví dụ:
2 là căn nguyên thủy của 5, vì với mỗi số 𝑎 là nguyên tố cùng nhau với 5, có một số nguyên z sao cho 2z ≡ 𝑎 Tất cả các số nguyên tố 𝑎 cùng nhau với 5 là {1,2,3,4} và mỗi số này (mod 5) bằng chính nó (ví dụ: 2 mod 5 = 2)
• 20 mod 5 = 1; mà 1 mod 5 = 1; nên 20 ≡ 1
• 21 mod 5 = 2; mà 2 mod 5 = 2; nên 21 ≡ 2
• 23 mod 5 = 3; mà 3 mod 5 = 3; nên 23 ≡ 3
• 22 mod 5 = 4; mà 4 mod 5 = 4; nên 22 ≡ 4
• 24 mod 5 = 1; mà 1 mod 5 = 1; nên 24 ≡ 1
4 không phải là căn nguyên thủy của 5, vì với mỗi số nguyên tố 𝑎 cùng nhau với 5 (là 1,2,3,4) không có đầy đủ lũy thừa của 4 là đồng dư Lũy thừa của 4 (mod 5) chỉ đồng dư với số 1 hay số 4, không có đồng dư với số 2 và số 3
• 40 mod 5 = 1; mà 1 mod 5 = 1; nên 40 ≡ 1
• 41 mod 5 = 4; mà 2 mod 5 = 2; nên 41 không đồng dư với 2
• 42 mod 5 = 1; mà 3 mod 5 = 3; nên 42 không đồng dư với 3
• 43 mod 5 = 4; mà 4 mod 5 = 4; nên 43 ≡ 4
Trang 13Nhóm 5 6
b) Bài toán logarit rời rạc trong Diffie-Hellman
Trong giao thức Diffie-Hellman, hai bên trao đổi khóa là Alice và Bob Kẻ nghe lén Eve có thể quan sát được thông tin truyền giữa Alice và Bob nhưng không thay đổi nội dung thông tin (tấn công bị động) Sơ đồ dưới đây tóm tắt mỗi người biết gì trong mô hình của giao thức
• Đặt s = khóa bí mật được chia sẻ
• Đặt g = căn nguyên thủy công khai
• Đặt p = số nguyên tố công khai
• Đặt a = khóa riêng tư của Alice
• Đặt A = khóa công khai của Alice
• Đặt b = khóa riêng tư của Bob
• Đặt B = khóa công khai của Bob
Bảng 1.1: Tham số cuộc tấn công bị động
Mục tiêu của Eve là tính toán s
Nếu cô ấy có thể suy ra được a khi biết A = ga mod p và b khi biết B = gb mod p và tính được s, thì cô ấy sẽ có cùng thông tin như Alice và Bob và từ đó có thể đọc tin nhắn
của họ Nhưng đây là một bài toán khó Nó được gọi là Bài toán logarit rời rạc Không có
thuật toán hiệu quả để tính toán a = dloggA (mod p) rời rạc nói chung Trong khi thực
hiện hàm mũ mod p là tương đối dễ dàng, rất khó để thực hiện nghịch đảo và tìm lời giải
cho bài toán logarit rời rạc, đặc biệt nếu số p lớn Ví dụ nếu p dài 100 số, thì ngay cả máy
tính hiện đại nhất cũng mất hàng ngàn năm để giải một bài toán logarit rời rạc
Một phần lý do khiến việc tính toán logarit rời rạc khó khăn đó là logarit trong các số
thực là liên tục, nhưng logarit (tối thiểu) của một số mod n lại dao động một cách ngẫu
nhiên Điều này được minh họa trong hình dưới đây
Trang 14Nhóm 5 7
Hình 1.6: Hàm logarit liên tục 𝑦 = 𝑙𝑜𝑔𝑔𝑥
Hình 1.7: Hàm logarit rời rạc 𝑦 = 𝑑𝑙𝑜𝑔𝑔𝑥 (𝑚𝑜𝑑 𝑝) Hơn nữa, thuật toán sử dụng g là căn nguyên thủy của số p Trong Diffie-Hellman, căn nguyên thủy cho một lượng tối đa các giá trị có thể của khóa bí mật trong khoảng từ 1 đến
p-1, điều này giúp tối đa hóa tính khó khăn của bài toán logarit rời rạc
Trang 15Nhóm 5 8
CHƯƠNG 2: ƯU NHƯỢC ĐIỂM CỦA THUẬT TOÁN DIFFIE
HELLMAN VÀ TÍNH AN TOÀN CỦA GIẢI THUẬT
2.1 Ưu nhược điểm của giải thuật Diffie-Hellman
2.1.1 Ưu điểm
Ưu điểm của giải thuật Diffie - Hellman là các yếu tố bảo mật, với thực tế là việc giải logarit rời rạc rất khó khăn và khóa bí mật của mỗi phiên giao tiếp không bao giờ được truyền qua kênh Sau khi các khóa được trao đổi, việc truyền dữ liệu có thể được thực hiện ngay trên một kênh truyền không an toàn Giải thuật này còn là một giao thức hai chiều khá nhẹ khi chỉ thực hiện một phương thức truyền khóa công khai từ người tham gia A đến người tham gia B và một lần nữa từ B đến A Giải thuật này còn giúp hai người A và B có thể trao đổi thông tin ngay cả khi họ chưa biết về nhau và chưa giao tiếp với nhau bao giờ, nhưng đây cũng được xem là một nhược điểm khi giải thuật này không có cơ chế xác thực người dùng
2.1.2 Nhược điểm
Một số nhược điểm của giải thuật trao đổi khóa Diffie – Hellman là:
➢ Không có sự xác thực danh tính của các bên tham gia trao đổi
➢ Dễ bị tấn công từ người trung gian Bên thứ ba C, có thể trao đổi khóa với cả A
và B và có thể lắng nghe phiên giao tiếp giữa A và B
➢ Thuật toán chuyên sâu về mặt tính toán Thực tế là giải thuật có các phép toán hàm mũ tốn kém về mặt thời gian và giải thuật không thể được sử dụng để mã hóa các bản tin mà chỉ được sử dụng để thiết lập khóa bí mật
➢ Bản chất tính toán của giải thuật có thể bị sử dụng trong một cuộc tấn công từ chối dịch vụ rất dễ dàng
2.2 Tính an toàn của giải thuật Diffie-Hellman
Giải thuật trao đổi khóa Diffie-Hellman có thể gặp phải một số kiểu tấn công như sau:
➢ Tấn công từ chối dịch vụ: Tại đây, kẻ tấn công sẽ cố gắng ngăn Alice và Bob
thực hiện giải thuật thành công
➢ Tấn công từ bên ngoài: Kẻ tấn công cố gắng phá vỡ giải thuật (ví dụ như thêm,
xóa, phát lại bản tin) để anh ta nhận được một số thông tin thú vị (tức là thông tin mà anh ta không thể có được bằng cách chỉ nhìn vào khóa công khai)
➢ Tấn công nội bộ: Có thể một trong những người tham gia giải thuật tạo ra một
giao thức có thể phá vỡ quá trình thực hiện một cách có chủ đích (tức là một giao thức trong đó người quan sát bên ngoài có thể xác định bí mật được chia sẻ
là gì) Tất nhiên, nếu một trong những người tham gia giao thức quyết định công
bố bí mật được chia sẻ, thì không thể làm gì được Lưu ý rằng các phần mềm độc hại có thể rất thành công trong việc thực hiện cuộc tấn công này
Trang 16Nhóm 5 9
Tính hợp lý của những cuộc tấn công này phụ thuộc vào những giả định đưa ra về kẻ tấn công Ví dụ, nếu kẻ tấn công có thể xóa và thay thế một bản tin từ kênh liên lạc công cộng, thì không thể ngăn chặn được cuộc tấn công từ chối dịch vụ Tuy nhiên, có vẻ như các cuộc tấn từ bên ngoài và các cuộc tấn công nội bộ có thể được ngăn chặn trong nhiều cài đặt
2.2.1 Kẻ tấn công ở giữa (Man-in-the-middle)
Do Diffie-Hellman không xác thực người dùng trong phiên trao đổi khóa nên thuật toán này dễ bị tấn công theo kiểu kẻ tấn công ở giữa Trong đó kẻ thứ ba Eve có thể thực hiện tấn công chủ động, theo dõi và sửa đổi tất cả các tin nhắn giữa Alice và Bob Để làm điều đó, Eve sử dụng khóa công khai của mình và tương tác với Alice và Bob Trong khi Alice và Bob không có cách nào biết được Eve đang ở đó và tin rằng họ đang giao tiếp trực tiếp với nhau (xem Hình 2.1)
Eve lấy khóa công khai của Alice và gửi khóa công khai của riêng cô ấy cho Bob Khi Bob truyền khóa công khai của mình, Eve sẽ bắt bản tin và thay thế giá trị khóa công khai của Bob bằng khóa công khai của chính cô ấy và sau đó gửi nó cho Alice Bây giờ, Alice
sẽ thỏa thuận một khóa bí mật chung với Eve thay vì Bob Tương tự như vậy, một khóa bí mật chung sẽ được thỏa thuận giữa Eve và Bob, khi đó Eve có thể giải mã bất kỳ bản tin nào được gửi bởi Alice hoặc Bob, sau đó đọc và có thể sửa đổi chúng trước khi mã hóa lại bằng khóa thích hợp và truyền chúng cho bên kia Lỗ hổng này xuất hiện bởi vì trao đổi khóa Diffie-Hellman không xác thực những người tham gia
Hình 2.1: Tấn công Man-in-the-middle
Trang 17Nhóm 5 10
Tiến trình tấn công diễn ra như sau:
1 Alice chọn một số ngẫu nhiên x đủ lớn và tính toán R 1 = gx mod p rồi gửi giá trị R 1
đến Bob qua đường truyền, giá trị x được giữ bí mật
2 Eve chặn bản tin và thu được R 1, lựa chọn một số ngẫu nhiên z đủ lớn và tính toán
R2= gz mod p, sau đó gửi giá trị R 2 đến Bob và Alice
3 Bob nhận được giá trị R 2, xem đó là giá trị mà Alice gửi đến Bob lựa chọn một số
ngẫu nhiên y đủ lớn và tính toán R 3 = gy mod p, sau đó gửi giá trị R 3 đến cho Alice nhưng bị Eve chặn lại
4 Alice tính toán K1 = (R2)x mod p
5 Eve tính toán K1 = (R1)z mod p, K2 = (R3)z mod p
6 Bob tính toán K2 = (R2)y mod p
Khóa đối xứng cho phiên làm việc này là K 1 và K 2 K 1 = g xz mod p là khóa giữa
Alice-Eve, K 2 = g yz mod p là khóa giữa Eve-Bob
Do đó, giải thuật rõ ràng là dễ bị tấn công bởi kẻ tấn công ở giữa vì tính toàn vẹn của bản tin cũng như tính xác thực của người tham gia bị vi phạm Để giải quyết vấn đề này, cần một quy trình xác thực để đảm bảo rằng, bất cứ khi nào Alice muốn gửi bản tin đến Bob, người nhận chỉ có thể là Bob chứ không phải Eve và ngược lại Điều quan trọng hơn nữa là cần loại bỏ các khóa sau khi sử dụng, để không có các khóa lâu dài có thể bị tiết lộ gây ra sự cố trong tương lai Các mối quan tâm khác trong việc ngăn chặn kiểu tấn công này thường xoay quanh việc tối ưu hóa toán học Đó là cần lựa chọn các giá trị cẩn trọng, yêu cầu chúng đủ lớn để Eve không thể tính toán tìm ra giá trị được bọn, và đủ ngẫu nhiên
để có thể làm giảm đáng kể việc Eve dự đoán để tìm ra các giá trị đó
Một số giải pháp để ngăn chặn cuộc tấn công Man-in-the-middle đã được đưa ra, đó là:
(1) Sử dụng chữ ký số
Chữ ký số được sử dụng để ký các văn bản điện tử Chữ ký số cung cấp ba dịch vụ bảo mật còn lại: xác thực, toàn vẹn và không thoái thác Chúng tương tự như chữ ký viết tay Nếu Alice ký một tài liệu bằng chữ ký viết tay của cô ấy, thì tất cả những ai xem tài liệu và biết chữ ký của Alice đều có thể xác minh rằng Alice thực sự đã ký vào tài liệu đó Về
nguyên tắc, chữ ký số hoạt động như sau: giả sử rằng Alice muốn ký bản rõ m Cô ấy sử dụng một khóa bí mật d và tính toán chữ ký s Sử dụng khóa công khai tương ứng e, Bob
có thể xác minh rằng đó thực sự là chữ ký của bản rõ m Sơ đồ chữ ký số DSA bao gồm DSA = (DSA.key, DSA.gen, DSA.ver) DSA.key tạo một cặp khóa công khai/khóa bí mật cho mỗi bên Nghĩa là, một khóa công khai bao gồm một số nguyên tố p, một số q cũng là một số nguyên tố, một bộ sinh g và y Khóa bí mật là x sao cho y = g x mod p DSA.gen tạo
chữ ký (r, s) cho bản rõ m với khóa bí mật x sao cho r = ((g k mod p) mod q) và s = (k −1 (H (m) + xr)) mod p, với k là giá trị ngẫu nhiên và H là hàm băm DSA.ver xác minh cặp
chữ ký (m, r, s) với khóa công khai y và trả về 1 nếu hợp lệ hoặc 0 nếu không Nghĩa là, thuật toán kiểm tra 0 < r, s < q và ((gH (m) S −1yrs − 1) mod p) mod q =r
Trang 18Nhóm 5 11
Mặc dù Eve có thể chặn các bản tin giữa Alice và Bob nhưng cô ấy không thể giả mạo chữ ký mà không có khóa bí mật của Alice và khóa bí mật của Bob Do đó, việc sử dụng chữ ký số có thể đánh bại cuộc tấn công man-in-the-middle
rõ, được gọi là bản tóm tắt, được mã hóa bằng bí mật của bản tóm tắt, sau đó sử dụng bản
mã đã nhận được so sánh với bản tóm tắt sau khi được giải mã Nếu hai mã giống hệt nhau,
có thể khẳng định rằng người gửi đã được xác thực Điều này hơi giống với việc phát hiện lỗi bằng cách sử dụng bit chẵn lẻ
(3) Xác thực người dùng
Xác thực người dùng khác với xác thực bản rõ vì khi thực hiện xác thực bản rõ thì danh tính của người gửi được xác minh cho mỗi và mọi bản rõ Mặt khác, xác thực người dùng chỉ được thực hiện một lần trong suốt thời gian truy cập hệ thống
(4) Sử dụng khóa quản trị (admin key)
Một giải pháp khác được đề xuất là Alice và Bob có thể tạo các khóa công khai mà không cần gửi chúng ở dạng văn bản thuần túy bằng cách sử dụng dữ liệu thu được từ máy chủ, bản rõ sẽ được máy chủ thực hiện băm hoặc mã hóa, dữ liệu sẽ được máy chủ kiểm soát Mặc dù một số người có thể tranh luận rằng Eve có thể xâm phạm tất cả dữ liệu trên các kênh, nhưng điều đó sẽ không đủ để kẻ tấn công này có được khóa công khai, tất cả dữ liệu sẽ được băm và mã hóa bởi máy chủ Ngoài ra, khóa bí mật sẽ không bao giờ được gửi cho bất kỳ bên nào Nếu kẻ tấn công ăn cắp khóa bí mật từ máy chủ, nó sẽ không hữu ích cho chúng vì toàn bộ khóa bí mật trong máy chủ đều được mã hóa bằng khóa quản trị (admin key) Điều này mang lại mức độ bảo mật cao và giúp ngăn chặn các cuộc tấn công Man-in-the-middle trong Diffie-Hellman
số nguyên tố 512 bits có thể tấn công quá trình bắt tay DHE_EXPORT với khoảng 8% các trang web phổ biến nhất trong 1 triệu HTTPS hàng đầu Với tấn công Logjam, kẻ tấn công