HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNGKHOA VIỄN THÔNG 1 BÁO CÁO TIỂU LUẬN ỨNG DỤNG CỦA GIẢI THUẬT TRAO ĐỔI KHÓA DIFFIE - HELLMAN MÔN: AN NINH MẠNG VIỄN THÔNG Giảng viên hướng dẫn: Phạm
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA VIỄN THÔNG 1
BÁO CÁO TIỂU LUẬN ỨNG DỤNG CỦA GIẢI THUẬT TRAO ĐỔI KHÓA
DIFFIE - HELLMAN MÔN: AN NINH MẠNG VIỄN THÔNG
Giảng viên hướng dẫn: Phạm Anh Thư
Sinh viên thực hiện: Trần Công Thành – B17DCVT337
Trương Quang Huy – B17DCVT180 Nguyễn Văn Hiếu – B17DCVT132 Nhóm thực hiện: Nhóm 9 – N6
Hà Nội, 6/2021
Trang 2MỤC LỤC
Danh mục bảng biểu
Danh mục hình vẽ
Trang 3LỜI NÓI ĐẦU
Trao đổi thông tin luôn là nhu cầu cần thiết của con người, đặc biệt là trong cuộc sống hiện đại ngày nay khi mà mạng máy tính và Internet phát triển một cách mạnh
mẽ và giữ vai trò quan trọng trong mọi lĩnh vực của đời sống xã hội như: chính trị, quân sự, học tập, mua sắm, kinh doanh, … Tất cả những thông tin liên quan đến những công việc này đều được máy tính quản lý và truyền đi trên hệ thống mạng Do đó xuất hiện nhu cầu về an toàn và bảo mật thông tin trên máy tính và không gian mạng Hiện nay có rất nhiều tổ chức, cá nhân đã nghiên cứu, tìm kiếm và đưa ra rất nhiều giải pháp bảo mật thông tin dữ liệu và có tính bảo mật khá cao Trong đó các giải thuật mật mã hóa khóa đóng một vai trò hết sức quan trọng
Trong báo cáo này, nhóm chúng em tìm hiểu về đề tài “Ứng dụng của giải thuật trao đổi khóa Diffie – Hellman”
Sau thời gian tham khảo giáo trình cũng như tìm hiểu trên mạng, cùng với sự đóng góp tích cực của tất cả các thành viên trong nhóm, chúng em đã hoàn thành bài báo cáo và trình bày thành 3 chương Thông qua việc giới thiệu tổng quan, trình bày khái niệm, cách thiết lập, sơ đồ và phần minh họa, chúng ta có thể hiểu rõ hơn về ưu, nhược điểm cũng như cách thức hoạt động của giao thức trao đổi khóa Diffie – Hellman
Chương 1: Giới thiệu giải thuật trao đổi khóa Diffie – Hellman
Chương 2: Các đặc trưng của giải thuật trao đổi khóa Diffie - Hellman
Chương 3: Ứng dụng của giải thuật trao đổi khóa Diffie - Hellman
Mặc dù nhóm đã rất cố gắng song vẫn không tránh khỏi một số thiếu sót Nhóm rất mong thầy cô và các bạn đóng góp ý kiến để hoàn thiện hơn báo cáo này
Chúng em xin chân thành cảm ơn!
Trang 4I GIỚI THIỆU GIẢI THUẬT TRAO ĐỔI KHÓA DIFFIE – HELLMAN
1.1 Khái niệm trao đổi khóa
Là việc trao đổi khoá giữa các chủ thể trong một cộng đồng nào đó có thể được thiết lập một cách tự do giữa bất cứ hai người nào khi có nhu cầu trao đổi thông tin
1.2 Giải thuật trao đổi khóa Diffie – Hellman
Giải thuật trao đổi khóa Diffie - Hellman tuy không khó khăn về mặt ý tưởng tuy nhiên lại rất nặng về khâu tính toán do các số được chọn rất lớn (khuyến nghị
độ dài ít nhất là 2048 bit) khiến việc tính toán trở nên khó khăn
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 Darth kẻ theo dõi 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 Darth biết được?
Giải quyết tình huống:
Giải thuật trao đổi khóa Diffie - Hellman cho 2 người Alice và Bob:
• Bước 1: Alice và Bob chọn 2 số nguyên tố p và căn nguyên thủy của p là g.
Căn nguyên thủy: nếu n ≥ 1 là số nguyên thì các số nguyên tố cùng nhau với n tạo thành 1 nhóm với phép nhân module n, được ký hiệu
là Zn Nhóm này là nhóm cyclic nếu n bằng 1, 2, 4, pk hoặc 2pk với 1
số nguyên tố p ≥ lũy thừa k ≥ 1 Một phần tử sinh của nhóm cyclic này được gọi là một căn nguyên thủy module n
Ví dụ: Lấy n = 14 ta có Zn = {1, 3, 5, 9, 11, 13}
P P mod 14 P2 mod 14 P3 mod 14 P4 mod 14 P5 mod14 P6 mod14
Bảng 1.1 Mô tả cách tính toán
Ta thấy chỉ có 3 và 5 là có số các giá trị bằng số các lớp đồng dư (= 6) nên 3
và 5 là căn nguyên thủy của 14
Trang 5• Bước 2: Alice chọn số bí mật a và tính A = ga mod p rồi gửi A cho Bob.
• Bước 3: Bob chọn số bí mật b và tính B = gb mod p rồi gửi B cho Alice
• Bước 4: Alice nhận B từ Bob rồi tính S = Ba mod p
• Bước 5: Bob nhận A từ Alice rồi tính S = Ab mod p Khi đó cả Alice và Bob đều chia sẻ chung 1 khóa bí mật S
Để cho dễ hình dung ta sẽ lập bảng mô tả của giải thuật trao đổi khóa Diffie - Hellman như sau:
truyền
Bob
Bí mật Tính Côngkhai Côngkhai Tính Bí mật
a ga mod p= A A, p, g A =><= B B, p, g gb mod p= B b
S, a S = Bmod pa A, B, p, g B, A, p,g S = Amod pb S, b
Bảng 1.2 Mô tả giải thuật trao đổi khóa Diffie-Hellman
- Ví dụ:
• Bước 1: cả 2 đồng ý chọn số nguyên tố p = 23 và căn nguyên thủy g = 9 (lấy căn nguyên thủy nhỏ do đây là ví dụ, trên thực tế số đó dài ít nhất
2048 bit)
• Bước 2: Alice chọn số bí mật a = 4
Alice tính A = ga mod p = 94 mod 23 = 6 rồi gửi cho Bob
• Bước 3: Bob chọn số bí mật b = 3
Bob tính B = gb mod p = 93 mod 23 = 16 rồi gửi cho Alice
• Bước 4: Alice nhận B của Bob và tính S = Ba mod p = 164 mod 23 = 9
• Bước 5: Bob nhận A của Alice và tính S = Ab mod 9 = 63 mod 23 = 9 Như vậy, cả 2 đều có 1 khóa bí mật chung là S = 9
Trang 6 Sơ đồ giải thuật trao đổi khóa Diffie – Hellman:
Hình 1 Sơ đồ giải thuật trao đổi khóa Diffie-Hellman
II CÁC ĐẶC TRƯNG CỦA GIẢI THUẬT TRAO ĐỔI KHÓA DIFFIE -
HELLMAN
2.1 Giao thức là an toàn đối với tấn công thụ động
Trước tiên ta xét một quá trình trao đổi khóa giữa Alice và Bob như sau
Bước 1: Alice và Bob thống nhất một giá trị nguyên tố p=17 và g=2
Bước 2: Alice lựa chọn một giá trị ngẫu nhiên a (là bí mật) ở đây chọn a=6 Sau đó tính A= mod 17= 13 rồi tiền hành gửi A=13 sang cho Bob
Bước 3: Phía bên Bob cũng chọn một giá trị ngẫu nhiên b (là bí mật), ở đây chọn b=9 Sau đó tính B=mod 17 =2 rồi gửi cho Alice
Bước 4: Bob nhận được giá trị A=13 và tính được khóa chung : s=mod 17 =13 Tương
tự phía bên A cũng nhận được B=2 rồi tính được khóa chung: s= mod 17 =13
Vì quá trình truyền khóa là công khai nên một kẻ nghe lén Dark có thể dễ dàng theo dõi được những gì Alice và Bob trạo đổi với nhau Phía bên Dark có thể biết được giá trị như A, B, g, p để từ đó có thể tìm ra các giá trị của s
Trang 7Về mặt lý thuyết nếu các giá trị a, b và p nhỏ thì có thể hoàn toàn có thể giải được bài toàn Diffie-Hellman Tuy nhiên trong thực tế thì các giá trị này là rất lớn ví
dụ như số p có ít nhât 300 chữ số, a và b có ít nhất 100 chữ số thì thuật toán tốt nhất hiện nay cũng không thể giải được nếu chỉ biết g, p, A, B
Vì vậy cho nên giao thực này là rất an toàn đối với việc tấn công thụ động
2.2 Giao thức là không an toàn đối với tấn công chủ động
Giả sử Alice và Bob muốn trao đổi khóa và Darth là kẻ tấn công ở giữa Việc tấn công sẽ diễn ra như hình sau :
Hình 2 Mô hình kẻ tấn công ở giữa
Trước khi tấn công, Darth chuẩn bị trước bằng việc tạo ra 2 khóa ngẫu nhiên
XD1 và XD2 Sau đó tính toán ra khóa công khai tương ứng là YD1 và YD2
B1: Alice gửi YA sang cho Bob
B2: Darth xen vào nhận YA và gửi YD1 cho Bob Đồng thời, Darth cũng tính toán K2
B3: Bob nhận được YD1 và tính toán K1
B4: Bob gửi YB cho Alice
B5: Darth xen vào nhận YB và gửi YD2 cho Alice Lúc đó Darth cũng tính toán K1
B6: Alice nhận YD2 và tính toán K2
Trang 8- Ở đây Bob và Alice đều nghĩ rằng họ chia sử một khóa bí mật nhưng thay vào đó là Bob và Darth chia sẻ khóa bí mật K1, Darth và Alice chia sẻ khóa
bí mật K2
- Giao thức trao đổi khóa có thể bị tấn công bởi vì nó không có sự nhận thực giữa các bên tham gia Để giải quyết vấn đề này, người dùng có thể sử dụng chữ ký số hoặc chứng thực khóa công khai
III: ỨNG DỤNG CỦA GIẢI THUẬT TRAO ĐỔI KHÓA DIFFIE - HELLMAN 3.1 Trao Đổi Khóa Bằng Xác Thực Mật Khẩu
- Giao thức trao đổi khóa có thể bị tấn công bởi vì nó không có sự nhận thực các bên tham gia Điển hình như đã nêu ở chương II là vấn đề “Kẻ tấn công ở giữa” Do đó để có thể chia sẻ mật khẩu an toàn giữa bên nhận và gửi tin chúng
ta có thể sử dụng dạng “Trao đổi khóa bằng xác thực mật khẩu” (PAKE) của giải thuật trao đổi khóa Diffie-Hellman
- PAKE sử dụng phần tử sinh α làm mật khẩu Đặc điểm của cách này là kẻ tấn công chỉ có thể thử một mật khẩu duy nhất trong mỗi lần tương tác với một bên,
do đó hệ thống này có thể cung cấp khả năng bảo mật tốt ngay cả với một mật khẩu tương đối yếu
Hình 3 Hoạt động của trao đổi khóa bằng xác thức mật khẩu
Quá trình thực hiện của của hình 3.1 như sau:
• Bước 1: Alice và Bob đồng ý lựa chọn một số nguyên tố an toàn q lớn và phần
tử sinh α (α được xây dựng bằng hàm băm H(π) với mật khẩu dùng chung π)
• Bước 2: Số bí mật XA được Alice chọn để tính toán khóa công khai theo công
thức A = αXA mod q
• Bước 3: Alice thực hiện gửi khóa công khai A cho Bob
Trang 9• Bước 4: Bob lựa chọn một số bí mật XB sau đó thực hiện tính toán khóa công
khai theo công thức B = αXB mod q Với thông tin khóa công khai A mà Alice gửi Bob tính được khóa bí mật theo công thức K = AXB mod q
• Bước 5: Bob gửi khóa công khai B cho Alice Alice và Bob sẽ tự động hủy các
kết quả nhận được của họ nếu các giá trị nhận được không giống thỏa thuận ban đầu
• Bước 6: Alice thức hiện tính toán khóa bí mật theo công thức K = BXA mod q Quá trình trao đổi khóa bằng xác thực mật khẩu kết thúc
3.2 Khóa Công Khai
Người ta cũng có thể sử dụng Diffie–Hellman như là một phần của hạ tầng khóa công khai
Hình 4 Quá trình gửi tin sử dụng khóa công khai
Quá trình hoạt động của hình 3.2 được mô tả như sau:
- Khóa công khai của Alice được đặt là αXA mod q Để gửi một thông điệp tới Alice Bob lựa chọn một số bí mật ngẫu nhiên XB và gửi Alice khóa công khai
αXB mod q (không mã hóa) cùng với bản tin được mã hóa với khóa đối xứng (αXA) XB mod q được tạo ra bằng khóa công khai của Alice và khóa bí mật XB của Bob Bản tin mã hóa được gửi tới Alice và chỉ có Alice mới có mã riêng XA
để thực hiện giải mã
- Trong thực tế giao thức Diffie – Hellman không được sử dụng theo cách này do
nó không thể dùng để ký chứng thực Thay vào đó thuật toán mã hóa công khai được sử dụng phổ biến nhất hiện nay là RSA RSA là thuật toán đầu tiên phù hợp với việc tạo ra chữ ký điện tử đồng thời với việc mã hóa và đang được sử dụng phổ biến trong thương mại điện tử và được cho là đảm bảo an toàn với
Trang 10điều kiện độ dài khóa đủ lớn Tuy nhiên với yếu tố lịch sử của mình mà giao thức Diffie–Hellman là tiền đề cho sự ra đời của các hệ mật mã mới, tiêu biểu như hệ mật mã Elgamal
3.3 Ứng dụng trong SSH
- SSH (Secure Shell) là giao thức đăng nhập vào server từ xa, cho phép người dùng kiểm soát, chỉnh sửa và quản trị dũ liệu của server thông qua nền tảng Internet
- SSH thiết lập kết nối được bảo mật bằng mật khẩu giữa hai bên (client và server)
Hình 5 Mô tả giao thức SSH
- Kết nối SSH giữa client và server xảy ra theo 3 giai đoạn
• Xác nhận server bởi client
• Tạo ra session key để mã hóa giao tiếp (sử dụng Diffie-Hellman)
• Xác thực client
- SSH sẽ sử dụng giải thuật Diffie-Hellman như một thuật toán tạm thời, các tham số của Diffie-Hellman sẽ được tạo ra cho các phiên độc lập và bị xóa
bỏ ngay lập tức khi chúng không còn cần thiết
- Điều này cũng giúp ta thực hiện forward secrecy (FS: chuyển tiếp bí mật): việc đánh cắp khóa bí mật của hiện tại không có nghĩa là bạn có thể giải mã các phiên trước đó
3.4 Bắt tay TLS bằng cách sử dụng Diffie-Hellman
Máy khác kết nối an toàn với máy chủ web thông qua giao thức mã hóa truyền tài TLS Quá trình này bắt đầu với mật mã khóa bất đối xứng và kết thúc bằng mật mã đối xứng Có nhiều quá trình thực hiện bắt tay TLS, trong đó có thể sử dụng
Diffie-Hellman để sử dụng thỏa thuận bắt tay TLS
Bước 1: Thông báo ClientHello
Trong thông báo ClientHello ban đầu đến máy chủ web, máy khách sẽ gửi một
ClientRandom (là một số giả ngẫu nhiên được tạo bằng mật mã) Bên trong ClientHell, máy khách cũng yêu cầu xem chứng thư số tuân thủ X.509 của máy chủ web Chứng chỉ được cấp bởi Tổ chức phát hành chứng chỉ đáng tin cậy Thông tin (được mô tả trong hình 6) đi kèm trong chứng chỉ bao gồm:
• Các Serial Number xác định chứng chỉ là duy nhất Số này có thể được sử dụng
để cho biết chứng chỉ có nằm trong danh sách thu hồi chứng chỉ hay không
• Issuer, là tổ chức phát hành chứng chỉ
Trang 11• Validity Dates, là khoảng thời gian mà chứng chỉ có hiệu lực.
• Subject, là chủ sở hữu của chứng chỉ thường được xác định với một email hoặc tên miền
• Public Key, được sử dụng để mã hóa bất đối xứng
Trong đó chứng chỉ chưa khóa công khai RSA của máy chủ, nó có sẵn cho bất kỳ máy khách nào muốn kết nối an toàn với máy chủ Tuy nhiên, chỉ máy chủ mới biết được khóa riêng
Hình 6 Các tham số chứng thực
Bước 2 Thông báo ServerHello
Trong thông báo ServerHello, máy chủ trả lời bằng Serverrandom Tiếp đó máy chủ máy chủ gửi cho máy khách một tham số DH (Deffie-Hellman) Máy chủ xem qua danh sách các bộ mật mã được cung cấp trong thông báo ClientHello và chọn bộ mật
mã mạnh nhất mà cả hai bên có thể thực hiện Ví dụ bộ mã được chọn là
TLS_DHE_RSA_WITH_AES_256_CBC_SHA Bộ mã có ý nghĩa là máy chủ và máy khách sẽ sử dụng giao thức mã hóa truyền tải TLS cùng với giao thức thỏa thuận khóa Diffie_Hellman Xác thực bằng RSA và sử dụng AES với khóa 256 bit và thuật toán SHA-256 để duy trì tính toàn vẹn của dữ liệu trong quá trình truyền thông tin
Trước khí đến bước 3 thì máy chủ mã hóa hàm băm của chữ ký số bằng khóa riêng RSA và gửi cho máy khách
Bước 3: Máy khách phản hồi lại cho máy chủ
Máy khách nhận được chứng chỉ của máy chủ và nó sẽ kiểm tra đảm bảo rằng chứng chỉ đấy chưa hết hạn Khách hàng cũng sẽ truy vấn CA để yêu cầu một bản sao của
Trang 12danh sách thu hồi chứng chỉ (CRL) Điều này đảm bảo rằng chứng chỉ không bị thu hồi vì bất kỳ lý do gì, chẳng hạn như xâm phạm khóa, giữ chứng chỉ, ngày hết hạn và bất kỳ điều gì khác có thể khiến chứng chỉ không hợp lệ
Máy khách cũng xác minh chữ ký số bằng cách giải mã hàm băm SHA-256 bằng khóa công khai và sau đó kiểm tra độ trùng khớp
Tương tự như vậy, máy khách cũng gửi tham số DH của chính nó
Bước 4 Tạo khóa K
Máy khách và máy chủ phải đồng ý về một khóa K bí mật trước khi thực hiện gửi các thông điệp được mã hóa cho nhau Qua trình thỏa thuận chính là được thực hiện băng giao thức Deffie-Hellman
Bước 5 và 6: Kết thúc
Khi một khóa K bí mật chung được tạo ra thì máy khách sẽ gửi một ClientFinish và sau đó máy chủ sẽ trả lời bằng một ServerFinish Lúc này, dừng quá trình mật mã khóa bất đối xứng và khóa đối xứng có thể truyền ra cả Client và server đều đã có khóa chung Giờ đây dữ liệu ứng dụng có thể được truyền qua lại một cách an toàn thông qua một kênh mã hóa đối xứng riêng biệt
Tất cả quá trình được thể hiện dưới hình sau
Hình 7 Quá trình bắt tay TLS giứa client và server
Trang 14Tài liệu tham khảo
Tài liệu trên mạng
[1]https://pdfs.semanticscholar.org/8225/1dd1310ec42e5a89967dce434874cd10f15e.p df