Giải thuật trao đổi khóa Diffie Hellman

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 19

HỌ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

Hà Nội, tháng 03/2022


An ninh mạng viễn thông Giải thuật trao đổi khóa Diffie-Hellman

Bảng phân công công việc

STT Họ tên Mã sinh viên Nội dung


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.

Nhóm 2 1
An ninh mạng viễn thông Giải thuật trao đổi khóa Diffie-Hellman

MỤ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

Thuật ngữ viết tắt Tiếng Anh Tiếng Việt


LAN Local Area Network Mạng máy tính cục bộ

Nhóm 2 2
An ninh mạng viễn thông Giải thuật trao đổi khóa Diffie-Hellman

LỜ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!

Nhóm 2 3
An ninh mạng viễn thông Giải thuật trao đổi khóa Diffie-Hellman

Chươ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

Nhóm 2 4
An ninh mạng viễn thông Giải thuật trao đổi khóa Diffie-Hellman

toá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 = ga 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 = gb mod p

• B = 515 mod 23
• B = 30,517,578,125 mod 23
• B = 19

Nhóm 2 5
An ninh mạng viễn thông Giải thuật trao đổi khóa Diffie-Hellman

4. 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 đề

• Vấn đề xác thực và trao đổi khóa Diffie-Hellman

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

Nhóm 2 6
An ninh mạng viễn thông Giải thuật trao đổi khóa Diffie-Hellman

ra 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

Nhóm 2 7
An ninh mạng viễn thông Giải thuật trao đổi khóa Diffie-Hellman

Chươ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

Nhóm 2 8
An ninh mạng viễn thông Giải thuật trao đổi khóa Diffie-Hellman

khó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 𝐾𝐵 .

Nhóm 2 9
An ninh mạng viễn thông Giải thuật trao đổi khóa Diffie-Hellman

5. 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.

Nhóm 2 10
An ninh mạng viễn thông Giải thuật trao đổi khóa Diffie-Hellman

Cơ 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 log 2 𝑁+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;

Nhóm 2 11
An ninh mạng viễn thông Giải thuật trao đổi khóa Diffie-Hellman

2. A và B mỗi người thực hiện một phép tính lũy thừa để tính 𝑔𝑘𝐸.𝑘𝐹 .𝑘𝐺 .𝑘𝐻.𝑘𝐴.𝑘𝐵
mod p; rồi gửi cho C và D. Ngược lại C và D làm tương tự để tính
𝑔𝑘𝐸.𝑘𝐹 .𝑘𝐺 .𝑘𝐻.𝑘𝐶 .𝑘𝐷 mod p; và gửi cho A và B.
3. A thực hiện một phép tính lũy thừa để tính 𝑔𝑘𝐸.𝑘𝐹 .𝑘𝐺.𝑘𝐻.𝑘𝐴.𝑘𝐶 .𝑘𝐷 mod p, sau đó
gửi cho B. Tương tự, B tính và gửi 𝑔𝑘𝐸.𝑘𝐹 .𝑘𝐺 .𝑘𝐻.𝑘𝐵.𝑘𝐶 .𝑘𝐷 mod p cho A. Bên C
và D cũng thực hiện tương tự.
4. A thực hiện một phép tính lũy thừa cuối cùng để có được bí mật
𝑔𝑘𝐴.𝑘𝐵.𝑘𝐶 .𝑘𝐷 .𝑘𝐸 .𝑘𝐹 .𝑘𝐺 .𝑘𝐻 mod p, trong khi đó B cũng tính tương tự để có
𝑔𝑘𝐴.𝑘𝐵.𝑘𝐶 .𝑘𝐷 .𝑘𝐸 .𝑘𝐹 .𝑘𝐺 .𝑘𝐻 mod p. Và cũng như vậy, C và D cũng tìm được bí mật
chia sẻ chung.
5. Những người từ E đến H cũng cùng lúc thực hiện các bước như trên cho giá
trị nhận được 𝑔𝑘𝐴.𝑘𝐵.𝑘𝐶 .𝑘𝐷 mod p từ phía nhóm kia và tính được bí mật chia
sẻ chung.

Sau khi các bước này hoàn tất thì tất cả mọi người tham gia đều có bí mật
𝑘𝐴 .𝑘𝐵 .𝑘𝐶 .𝑘𝐷 .𝑘𝐸 .𝑘𝐹 .𝑘𝐺 .𝑘𝐻
𝑔 mod p, trong đó mỗi người chỉ thực hiện 4 phép tính lũy thừa
so với 8 trong trường hợp thứ tự vòng tròn như trên.

2.3: Giải mã

Để giải mã thông điệp m, gửi dưới dạng mgab, Bob (hoặc Alice) phải tính được
giá trị (gab)-1. Giá trị (gab)-1 được tính như sau:
Vì Bob biết |G|, b, và g , mặt khác theo định lý Lagrange trong lý thuyết nhóm ta
a

có x|G| = 1 với mọi x thuộc G, nên Bob tính được (ga)|G|-b = ga(|G|-b) = ga|G|-ab = ga|G|g-
ab
= (g|G|)ag-ab=1ag-ab=g-ab=(gab)-1.

Việc giải mã bây giờ trở nên dễ dàng: Bob sử dụng (gab)-1 đã tính và phục hồi
thông điệp nguyên thủy bằng cách tính: mgab(gab)-1 = m(1) = m.

3. Ví dụ:

Giả sử A và B trao đổi khóa bằng giao thức Diffie-Hellman sử dụng bộ tham số
p=89, g=15; trong quá trình đó A và B lần lượt sinh được các giá trị ngẫu nhiên
xa=10 và xb=20. Bạn hãy:

a. tính giá trị công khai Ya của A và Yb của B

b. tính giá trị của khóa chia sẻ Zab giữa A và B

Nhóm 2 12
An ninh mạng viễn thông Giải thuật trao đổi khóa Diffie-Hellman

Giải:

a.

Giá trị công khai Ya là: Ya = gxa mod p = 1510 mod 89

Ya = [(152) mod 89 × (158) mod 89] mod 89= (47×78) mod 89 = 17

Gía trị công khai Yb là: Yb = gxb mod p = (1510)2 mod 89 = 172 mod 89 = 22

b.

Phía A: Zab = Ybxa mod p = 2210 mod 89

Zab = 2210 mod 89 = [(228) mod 89×(222) mod 89 ] mod 89= (64×39) mod 89 =
4

Phía B: Zab = Yaxb mod p = 1720 mod 89

Zab = 1720 mod 89 = [(1716) mod 89×(174) mod 89 ] mod 89 = (64×39) mod 89
=4

Người ta cho rằng các Diffie-Hellman đề cập đến một hệ thống của cái gọi là
mã hóa đối xứng, trên đó có những báo cáo về mật mã không đối xứng. Tuy nhiên,

Nhóm 2 13
An ninh mạng viễn thông Giải thuật trao đổi khóa Diffie-Hellman

nếu chúng ta xem xét các khía cạnh chính của việc tính toán của các bên chủ chốt,
phải nhớ ít nhất đại số.

Vì vậy, ví dụ, mỗi người trong số các thuê bao tạo ra số ngẫu nhiên a và b. Họ
biết trước các giá trị của x và y, mà thậm chí có thể "khâu" trong phần mềm cần
thiết.

Khi gửi hoặc nhận tin nhắn như vậy thuê bao Một tính giá trị quan trọng, bắt
đầu từ công thức A = x mod y, trong khi thứ hai sử dụng một sự kết hợp của B =
x bmod y, tiếp theo là việc gửi chìa khóa giải mã cho người sử dụng đầu tiên. Đây là
bước đầu tiên.

Bây giờ giả sử rằng các bên thứ ba liên quan có lúc xử lý của nó cả các giá trị
tính toán của A và B. Tất cả như nhau, nó không thể can thiệp vào quá trình chuyển
dữ liệu, bởi vì bước thứ hai là để biết làm thế nào để tính toán một chìa khóa thông
thường.

Chương 3: Phân tích tính bảo mật của giải thuật


3.1: Kiểu tấn công “Người ở giữa”

Trong giao thức này, 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ơ đồ sau đây tóm tắt mỗi người biết gì trong mô
hình của giao thức.

o Đặt s = khóa bí mật được chia sẻ. s = 2


o Đặt g = căn nguyên thủy công khai. g = 5
o Đặt p = số nguyên tố công khai. p = 23
o Đặt a = khóa riêng tư của Alice. a = 6
o Đặt A = khóa công khai của Alice. A = g^a mod p = 8
o Đặt b = khóa riêng tư của Bob. b = 15
o Đặt B = khóa công khai của Bob. B = g^b mod p = 19

Nhóm 2 14
An ninh mạng viễn thông Giải thuật trao đổi khóa Diffie-Hellman

1. Eve chuẩn bị cho quá trình tấn công bằng việc tạo ra 2 khóa ngẫu nhiên E1 và
E2. Sau đó tính toán ra khóa công khai tương ứng là S1 và S2.
2. Alice gửi A sang cho Bob.
3. Eve xen vào nhận A và gửi S1 cho Bob. Eve cũng tính toán K2= 𝐴𝐸2 mod p
4. Bob nhận được S1 và tính toán K1= 𝑆1𝐵 mod p
5. Bob gửi B cho Alice
6. Eve xen vào nhận B và gửi S2 cho Alice . Eve tính toán K1 = 𝐵𝐸1 mod p
7. Alice nhận S2 và tính toán K2= 𝑆2𝐴 mod p

Ở đâ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.
Tất cả những thông tin trao đổi giữa Bob và Alice đều được thỏa hiệp theo cách sau:

1. Alice gửi bản tin đã được mật mã hóa M:E(S2,M)

2. Darth xen vào nhận bản tin đã được mật mã và giải mã nó thành M

3. Darth gửi cho Bob bản E(K1,M) hoặc E(K1,M’) mà M’ là bất kỳ bản tin nào.

Trong trường hợp đầu tiên Darth chỉ đơn giản muốn nghe trộm thông tin mà
không thay đổi chúng. Trường hợp sau Darth muốn làm sai lệch thông tin gửi đến
Bob.

Nhóm 2 15
An ninh mạng viễn thông Giải thuật trao đổi khóa Diffie-Hellman

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. Ta có thể giải quyết vấn đề này bằng việc sử dụng chữ ký số và chứng
nhận khóa công khai.

3.2: Bảo mật

Người ta cho rằng giao thức sẽ bảo vệ thông tin đối với kẻ nghe lén nếu như G
và g được chọn đúng. Kẻ nghe lén Eve cần phải giải được bài toán Diffie–Hellman
để có thể tìm ra gab. Bài toán này hiện nay được xem là bài toán khó đối với các
máy tính hiện đại ngày nay. Thuật toán nào có thể giải quyết một cách hiệu quả bài
toán lôgarit rời rạc sẽ dễ dàng tính được a hoặc b và giải được bài toán Diffie–
Hellman, qua đó biến hệ mã hóa này và cá hệ mã hóa công khai khác trở nên mất an
toàn.

Cấp của G phải là số nguyên tố hoặc có chứa thừa số nguyên tố lớn nhằm để tránh
việc áp dụng thuật toán Pohlig–Hellman để tìm được a hoặc b. Vì lý do này, số
nguyên tố Sophie Germain q thỉnh thoảng được sử dụng để tính số nguyên tố an
toàn p=2q+1, bởi vì cấp của G khi đó chỉ có 2 thừa số nguyên tố là 2 và q. Giá

Nhóm 2 16
An ninh mạng viễn thông Giải thuật trao đổi khóa Diffie-Hellman

trị g thỉnh thoảng được chọn để sinh ra cấp q nhóm con của G, hơn là G, nhờ đó ký
hiệu Legendre của ga không làm lộ bit thấp của a.

Nếu bộ tạo số ngẫu nhiên sử dụng bởi Alice và Bob xuất ra số không hoàn toàn
ngẫu nhiên hoặc số có thể đoán biết được một phần nào đó thì nhiệm vụ phá mã của
Eve sẽ trở nên dễ dàng hơn nhiều.

Các số nguyên bí mật a và b sẽ bị loại bỏ ở cuối phiên truyền dữ liệu, do đó, trao
đổi khóa Diffie–Hellman hiển nhiên đạt được tính bí mật chuyển tiếp hoàn hảo vì
không có thông tin riêng tư dài hạn nào bị lộ ra.

Trong bản mô tả nguyên thủy của mình, phương thức trao đổi Diffie–Hellman
bản thân nó không cung cấp khả năng xác thực cho các bên giao tiếp, và vì vậy trở
nên không an toàn đối với hình thức tấn công người đứng giữa. Eve có thể thiết lập
hai giao thức trao đổi, một với Alice và một với Bob, giúp cho Eve có thể giả dạng
Alice đối với Bob và ngược lại một cách hiệu quả, từ đó có thể giải mã, rồi mã hóa
lại thông điệp chuyển giữa Alice và Bob mà không bị phát hiện. Lưu ý rằng để không
bị phát hiện, Eve phải luôn luôn đứng giữa để chuyển tiếp thông điệp (đã mã hóa lại)
bất cứ khi nào Alice và Bob gửi. Nếu Eve ngưng chuyển tiếp, Alice và Bob sẽ phát
hiện ra sự hiện diện của Eve và biết được rằng thông tin trao đổi riêng tư giữa hai
người đã bị can thiệp và lộ ra với một người ngoài nào đó bất hợp pháp.

Một phương pháp để xác thực các bên tham gia với nhau là cần thiết để đề phòng
các loại hình tấn công này. Những biến thể của Diffie-Hellman như STS có thể được
áp dụng để tránh các cuộc tấn công kiểu này.

KẾT LUẬN
Giao thức trao đổi khóa Diffie-Hellman được sử dụng để khắc phục nhược điểm
trên của các hệ mật khóa đối xứng. Bằng cách cung cấp một quy trình kết hợp với
việc sử dụng các bài toán khó, giao thức cho phép 2 bên thỏa thuận và xác định khóa
chung mà không cần truyền khóa qua môi trường mạng Internet.

Giao thức thỏa thuận khóa Diffie – Hellman đóng một vai trò quan trọng trong
việc ứng dụng vào các sản phẩm mật mã dân sự để đảm bảo an toàn bảo mật thông
tin. Tuy nhiên, để đảm bảo an toàn cài đặt, việc lựa chọn (hoặc tạo ra) các bộ tham

Nhóm 2 17
An ninh mạng viễn thông Giải thuật trao đổi khóa Diffie-Hellman

số dùng cho giao thức trên đóng vai trò cốt lõi và các tham số đó phải đáp ứng các
yêu cầu theo như các tổ chức đã khuyến nghị trong các bộ tiêu chuẩn, qui chuẩn.

TÀI LIỆU THAM KHẢO


1. Bài giảng An ninh mạng – Học viện Công nghệ Bưu Chính Viễn thông.
2. David Adrian, Karthikeyan Bhargavan, Zakir Durumeric, Pierrick Gaudry,
Matthew Green, J. Alex Halderman, Nadia Heninger, Drew Springall,
Emmanuel Thomé Luke Valenta, Benjamin VanderSloot, Eric Wustrow,
Santiago Zanella-Béguelink Paul Zimmermann, “Imperfect Forward
Secrecy: How Diffie-Hellman Fails in Practice”22nd ACM Conference on
Computer and Communications Security (CCS ’15), Denver, CO, 2015.

Nhóm 2 18

You might also like