Tải bản đầy đủ (.docx) (33 trang)

Tìm hiểu về trao đổi và thoả thuận khoá, phân phối khóa DiffieHellman. Lập trình Hệ mật Vigenere.

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (998.37 KB, 33 trang )

TRƯỜNG ĐẠI HỌC MỎ - ĐỊA CHẤT
KHOA CÔNG NGHỆ THÔNG TIN
-----***-----

LÝ THUYẾT MẬT MÃ + BTL
ĐỀ TÀI
Tìm hiểu về trao đổi và thoả thuận khố, phân phối khóa DiffieHellman. Lập trình Hệ mật Vigenere.
Giảng viên hướng dẫn:

ThS. Đỗ Như Hải

Sinh viên thực hiện:

Trần Thị Khánh (1721050490)

Lớp:

MMT K62B

Hà Nội – 2021
LỜI MỞ ĐẦU


Trần Thị Khánh

Lớp Mạng máy tính K62B

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


vi tính quản lý và truyền đi trên hệ thống mạng. Đối với những thơng tin bình thường thì khơng
ai chú đến, nhưng đối với những thơng tin mang tính chất sống còn đối với một cá nhân hay
một tổ chức thì vấn đề bảo mật thơng tin là rất quan trọng và được đặt lên hàng đầu. Chính vì
vậy nên 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. Trong đó giao thức Diffie - Hellman rất thích hợp trong truyền thơng tin giữ liệu
và có tính bảo mật khá cao.
Bài Tiểu luận do sinh viên Trần Thị Khánh biên soạn dựa trên những kiến thức mà thầy
ThS. Đỗ Như Hải đã chỉ dạy và thông qua sự tìm hiểu, nghiên cứu tích cực của em. Tiểu luận
của em đi sâu vào trình bày giao thức thỏa thuận khóa Diffie Hellman và Lập trình Hệ mật
Vigenere. Mặc dù em đã rất cố gắng song vẫn không tránh khỏi một số thiếu sót mong thầy
đóng góp ý kiến để em hoàn thiện hơn tiểu luận này.

2
2


Trần Thị Khánh

Lớp Mạng máy tính K62B
MỤC LỤC

DANH MỤC HÌNH VẼ
HÌNH 1.2.3.1: GIAO THỨC THOẢ THUẬN KHỐ.
HÌNH 1.2.4.1: TRƯỚC KHI PHA MÀU
HÌNH 1.2.4.2: BẮT ĐẦU TRỘN MÀU BÍ MẬT VỚI KHƠNG KHAI
HÌNH 1.2.4.3: ALICE VÀ BOB GỬI MÀU VỪA TRỘN CHO NHAU
HÌNH 1.2.4.4: KẾT QUẢ
HÌNH 1.3.1: GIAO THỨC TRAO ĐỔI KHỐ
HÌNH 1.4.1: KHỐ BẤT ĐỐI XỨNG
HÌNH 2.2.1: GIOVAN BATTISTA BELLASO

HÌNH 2.2.1: BẢNG CHỮ CÁI
HÌNH 2.2.2: BẢNG MÃ HỐ
HÌNH 2.2.3: BẢNG SAINT CYR
HÌNH 2.3.1: BẢN MÃ HĨA SỬ DỤNG MẬT MÃ VIGENERE
HÌNH 2.5.2.1. KẾT QUẢ BÀI TỐN.

3
3


Trần Thị Khánh

Lớp Mạng máy tính K62B

ĐỀ TÀI: Tìm hiểu về trao đổi và thoả thuận khố, phân phối khóa Diffie-Hellman. Lập
Trình Hệ Mật Vigenere.
1. TRAO ĐỔI VÀ THOẢ THUẬN KHỐ, PHÂN PHỐI KHĨA DIFFIE-HELLMAN.
1.1. Giới thiệu về giao thức Diffie-Hellman.
Thuật toán Diffie-Hellman được phát triển vào năm 1976 bởi Whitfield Diffie và Martin
Hellman. Vì vậy, cái tên Diffie Hellman. Ngồi ra, đi theo tên thuật tốn này khơng được sử
dụng để mã hóa dữ liệu, thay vào đó nó được sử dụng để tạo khóa bí mật giữa người gửi và
người nhận.
Trước thời kì này, hầu hết các thuật toán mã hoá hiện đại đều là những thuật toán khố đối
xứng, trong đó cả người gửi và người nhận phải dùng chung 1 khoá, tức khoá dùng trong thuật
toán mật mã và cả hai người đều phải giữ bí mật về khoá 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 thì hầu hết các hệ
thống mã sẽ được dùng trong suốt quá trình lịch sử đều thuộc về loại này.
Do nhu cầu an ninh, khoá 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 liên lạc bằng một cách thức an toàn nào đấy, trước khi họ sử dụng hệ thống
(thường được gọi là “thông qua một kênh an tồn”), ví dụ như việc sử dụng 1 người đưa thưa

đáng tin cậy với một cặp tài liệu được khoá vào cổ tay bằng cắp khoá tay, hay bằng cuộc giao
lưu mặt đối mặt,… Vấn đề này chưa bao giờ được xem là dễ dàng, và nó trở thành một việc
gần như khơng thể kiểm sốt được khi số lượng người tham gia tăng lên, hay khi người dùng
khơng cịn các kênh an tồn để trao đổi kháo nữa. Cụ thể là mỗi một cặp mạng lưới truyền
thông cần phải có một khố riêng nếu, theo như thiết kế hệ thống mật mã không một người thứ
ba nào, kể cả đó là một người dùng được phép giải mã thông điệp. Hệ thống thuộc loại này gọi
là hệ thống dùng chìa khố mật, hoặc hệ thống mật mã hoá dùng khoá đối xứng. Hệ thống trao
đổi khoá Diffie-Hellman tạo điều kiện cho các hoạt động trong các hệ thống trở nên dễ dàng rất
nhiều, đồng thời cũng an tồn hơn.
Mặc dù, bản thân thuật tốn là một giao thức chọn khố nặc danh nhưng nó đã tạo ra một
cơ sở cho các giao thức xác thực khác nhau khá hoàn hảo.
4
4


Trần Thị Khánh

Lớp Mạng máy tính K62B

Mã hóa bất đối xứng yêu cầu truyền khóa riêng giữa người gửi và người nhận dữ liệu.
Một trong những phần đầy thách thức với Mã hóa bất đối xứng là việc chuyển khóa bí mật an
tồn và an tồn giữa người gửi và người nhận. Khơng ai nên có quyền truy cập hoặc chặn khóa
bí mật trong q trình chuyển. Việc chuyển giao hay đúng hơn là tạo ra khóa bí mật ở cả hai
bên được tạo điều kiện bởi thuật toán Diffie-Hellman.
1.2. Giao thức thoả thuận khoá Diffie-Hellman.
1.2.1. Khái niệm thoả thuận khố
Trong mật mã học, giao thức thỏa thuận khóa là một giao thức theo đó hai hoặc nhiều bên
có thể trao đổi khoá với nhau đượ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.2. Giao thức thoả thuận khố Diffie-Hellman.

Trao đổi khóa Diffie-Hellman là phương pháp đầu tiên được sử dụng rộng rãi để phát
triển và trao đổi khóa một cách an tồn qua một kênh khơng an tồn.
Làm thế nào bạn có thể trao đổi thơng tin một cách an tồn với ai đó nếu bạn chưa có cơ
hội chia sẻ khóa trước thời hạn? Trao đổi khóa Diffie-Hellman là cơ chế được sử dụng công
khai đầu tiên để giải quyết vấn đề này. Thuật toán cho phép những người chưa bao giờ gặp
nhau trước đây tạo khóa được chia sẻ một cách an toàn, ngay cả trên một kênh khơng an tồn
mà đối thủ có thể đang theo dõi.
Phương pháp này khơng cần có sự can thiệp của TA (cơ quan uỷ thác) làm nhiệm vụ điều
hành hoặc phân phối khoá.
1.2.3. Cách thiết lập giao thức thoả thuận khố Diffie-Hellman.
Cơ bản, giao thức thỏa thuận khóa Diffie hellman được thực hiện như sau: Giả sử hai bên
liên lạc A và B muốn thực hiện trao đổi khóa để mã hóa thơng tin truyền trên kênh cơng cộng,
trước tiên A và B sẽ thống nhất sử dụng chung một nhóm cyclic hữu hạn G và một yếu tố tạo ra
g trong G. Sau đó A chọn một số a và giữ bí mật số a này. B cũng chọn một số b và giữ bí mật
số b.
5
5


Trần Thị Khánh

Lớp Mạng máy tính K62B

Tiếp theo A tính và gửi cho B, B tính và gửi cho A.
Trên cơ sở đó A tính được khố:
B tính được khố:
Do đó A và B có chung giá trị . Giá trị này có thể dùng để dẫn xuất ra các khóa phiên bí
mật sử dụng cho các thuật tốn mã hóa khóa đối xứng. Giao thức thỏa thuận khóa Diffie
Hellman nguyên thủy được thể hiện như sau:


Hình 1.2.3.1: Giao thức thoả thuận khố.
 Ví dụ minh họa:
A và B thống nhất với nhau chọn số nguyên tố p = 17 và g=4.
Sau đó A chọn một số a = 3 và giữ bí mật số a này.
+ A tính
+ A gửi XA = 13 cho B
B cũng chọn một số b = 6 và giữ bí mật số b.
+ B tính
+ B gửi XB = 16 cho A
A nhận được XB = 16 sau đó tính tốn khố, sử dụng công thức sau:
6
6


Trần Thị Khánh

Lớp Mạng máy tính K62B

+
B nhận được XA = 13 sau đó tính tốn khố, sử dụng cơng thức sau:
+
Như vậy ta có thể thấy, cả hai bên đã kết thúc với cùng một kết quả . Đây là bí mật chung,
mà chỉ A và B mới biết. Sau đó hai người có thể sử dụng điều này để thiết lập khoá mã hoá đối
xứng, cho phép họ gửi thơng tin giữa hai người một cách ann tồn theo cách mà chỉ hai người
họ mới có thể truy cập nó.
1.2.4. Sơ đồ thoả thuận khố Diffie-Hellman.
Giao thức trao đổi khóa Diffie-Hellman được sử dụng để khắc phục nhược điểm 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 tố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.

Cụ thể giao thức Diffie-Hellman hoạt động thế nào thì chúng ta sẽ cùng xem ví dụ sau,
câu chuyện về Bob và Alice (Tương ứng với A và B) họ sẽ chơi trò "pha màu".
Đầu tiên, bản thân Bob và Alice đều tự chọn cho mình 1 màu bí mật, khơng ai ngồi chính
bản thân họ biết về màu đó. Ngồi mơi trường mạng Internet cơng khai thì có sẵn 1 màu, cơng
khai, và ai cũng biết màu đó là gì. Ở đây, Alice chọn cho mình màu đỏ, Bob chọn màu xanh lá,
cịn màu cơng khai ngoài Internet là màu vàng.

7
7


Trần Thị Khánh

Lớp Mạng máy tính K62B

Hình 1.2.4.1: Trước khi pha màu
Alice và Bob sẽ trộn màu bí mật của họ với màu công khai:

8
8


Trần Thị Khánh

Lớp Mạng máy tính K62B

Hình 1.2.4.2: Bắt đầu trộn màu bí mật với khơng khai

9
9



Trần Thị Khánh

Lớp Mạng máy tính K62B

Giờ thì Bob và Alice đã sẵn sàng cho việc thỏa thuận khóa. Họ sẽ gửi màu vừa trộn được
ở trên cho nhau qua mơi trường Internet. Tất nhiên giờ kẻ xấu cũng có thể nhận được 2 màu
mới này, nhưng chẳng sao cả.

Hình 1.2.4.3: Alice và Bob gửi màu vừa trộn cho nhau

10
10


Trần Thị Khánh

Lớp Mạng máy tính K62B

Mỗi người sẽ trộn màu bí mật từ đầu của mình, với màu vừa nhận được. Và màu trộn ra
cuối cùng này chính là màu chung của cả 2.

Hình 1.2.4.4: Kết quả
11
11


Trần Thị Khánh


Lớp Mạng máy tính K62B

1.3. Giao thức trao đổi khố Diffie-Hellman
Hệ phân phối khố Diffie-Hellman nói trong mục trước có thể dễ dàng biến đổi thànhmột
giao thức trao đổi (hay thoả thuận) khoá trực tiếp giữa những người sử dụng màkhơng cần có
sự can thiệp của một TA làm nhiệm vụ điều hành hoặc phân phối khố.Một nhóm bất kỳ người
sử dụng có thể thoả thuận cùng dùng chung một số nguyên tốlớn p và một phần tử nguyên thuỷ
α theo mod p, hai người bất kỳ trong nhóm A và Bmỗi khi muốn truyền tin bảo mật cho nhau
có thể cùng thực hiện giao thức sau đây để trao đổi khoá:
1. A chọn ngẫu nhiên số a (0 ≤ a ≤p -2), giữ bí mật a, tính gửi XA cho B.
2. Tương tự, B chọn ngẫu nhiên số b (0 ≤ b ≤ p -2), giữ bí mật b, tính gửi XB cho A.
3. A và B cùng tính được khố chung:

Hình 1.3.1: Giao thức trao đổi khoá

12
12


Trần Thị Khánh

Lớp Mạng máy tính K62B

Giao thức trao đổi khố Diffie-Hellman có các tính chất sau:
- Giao thức là an tồn đối với việc tấn cơng thụ động, nghĩa là một người thứ ba, dù biết
XA và XB sẽ khó mà biết được .
+ Ta biết rằng bài tốn “biết XA và XB tìm ” chính là bài tốn Diffie-Hellman ta có nói
rằng bài tốn đó tương đương với bài toán phá mật mã El Gamal. Bây giờ ta chứng minh điều
này. Phép mật mã El Gamal với khoá K = (p, g, c, s), trong đó s = , cho ta từ một bản rõ x và
một số ngẫu nhiên k ∈ 1 lập được mật mã:

(x, k) = (,)
Trong đó: =
Và phép giải mã được cho bởi: (,) = mod p
Giả sử ta có thuật tốn A giải bài toán Diffie-Hellman. Ta sẽ dùng A để phá mã ElGamal
như sau: Cho mật mã (,). Trước hết, dùng A cho = và s = , ta được:
A (, s) = =
và sau đó ta thu được bản rõ x từ và y2 như sau:

Ngược lại, giả sử có thuật toán B phá mã El Gamal, tức là:
B (p, g, c, s,,)= x = mod p
Áp dụng B cho s = XA,= XB,= 1, ta được:
== tức là giải được bài tốn Diffie-Hellman.
- Giao thức là khơng an tồn đối với việc tấn công chủ động bằng cách đánh tráo giữa
đường, nghĩa là một người thứ ba C có thể đánh tráo các thông tin trao đổi giữa A và B, chẳng
hạn, C thay mà A định gửi cho B bởi ,và thay mà B định gửi cho A bởi , như vậy, sau khi thực
hiện giao thức trao đổi khoá, A đã lập một khoá chung với C mà vẫn tưởng là với B, đồng thời
B đã lập một khoá chung với C mà vẫn tưởng là với A; C có thể giải mã mọi thơng báo mà A
tưởng nhầm là mình gửi đến B, cũng như mọi thơng báo mà B tưởng nhầm là mình gửi đến A!
13
13


Trần Thị Khánh

Lớp Mạng máy tính K62B

Một cách khắc phục kiểu tấn cơng chủ động nói trên là làm sao để A và B có thể kiểm
chứng để xác thực tính đúng đắn của các khố cơng khai XA và XB. Đưa vào giao thức trao đổi
khoá Diffie-Hellman thêm vai trò điều phối của một TA để được một hệ phân phối khoá DiffieHellman.
Trong hệ phân phối khoá Diffie-Hellman, sự can thiệp của TA là rất yếu, thực ra TA chỉ

làm mỗi một việc là cấp chứng chỉ xác nhực khố cơng khai cho từng người dùng chứ khơng
địi hỏi biết thêm bất cứ một bí mật nào của người dùng. Tuy nhiên, nếu chưa thoả mãn với vai
trò hạn chế đó của TA, thì có thể cho TA một vai trị xác nhận yếu hơn, khơng liên quan gì đến
khoá, chẳng hạn như xác nhận thuật toán kiểm thử chữ ký của người dùng, cịn bản thân các
thơng tin về khố (cả bí mật và cơng khai) thì do những người dùngtrao đổi trực tiếp với nhau.
Với cách khắc phục có vai trị rất hạn chế đó của TA, ta có được giao thức ở phần sau.
1.4. Mã hố bất đối xứng
Thuật tốn mã hóa bất đối xứng phổ biến nhất là Thuật tốn Diffie-Hellman và RSA.
Mã hóa bất đối xứng là một kỹ thuật mã hóa sử dụng một cặp khóa (khóa riêng và khóa
chung) để mã hóa và giải mã. Mã hóa bất đối xứng sử dụng khóa chung để mã hóa và khóa
riêng để giải mã. Khóa cơng khai có sẵn miễn phí cho bất cứ ai quan tâm đến ing. Khóa riêng
được giữ bí mật với người nhận của. Bất kỳ thứ gì được mã hóa bởi khóa chung và thuật tốn,
đều được giải mã bằng cùng một thuật tốn và khóa riêng phù hợp của khóa chung tương ứng.

Hình 1.4.1: Khố bất đối xứng
Việc thực thi thuật tốn mã hóa bất đối xứng là chậm. Vì thuật tốn mã hóa bất đối xứng
có bản chất phức tạp và có gánh nặng tính tốn cao. Do đó, mã hóa bất đối xứng được sử dụng
cho trao đổi chìa khóa một cách an tồn thay vì truyền dữ liệu số lượng lớn. Mã hóa bất đối
14
14


Trần Thị Khánh

Lớp Mạng máy tính K62B

xứng thường được sử dụng để thiết lập kênh bảo mật trên phương tiện khơng bảo mật như
internet.
Mã hóa đối xứng ln sử dụng một khóa duy nhất để mã hóa và giải mã. Tuy nhiên, trong
mã hóa bất đối xứng, er sử dụng khóa chung cho mã hóa và khóa riêng để giải mã.

Việc thực hiện các thuật tốn mã hóa bất đối xứng chậm hơn so với thuật tốn mã hóa đối
xứng. Điều này là do các thuật tốn mã hóa bất đối xứng phức tạp hơn và có gánh nặng tính
tốn cao.
Các thuật tốn mã hóa đối xứng được sử dụng phổ biến nhất là DES, 3DES, AES và RC4.
Mặt khác, Diffie-Hellman và RSA là thuật toán phổ biến nhất được sử dụng để mã hóa bất đối
xứng.
Mã hóa bất đối xứng thường được sử dụng để trao đổi các khóa bí mật trong khi đó, mã
hóa đối xứng được sử dụng để trao đổi một lượng lớn dữ liệu.
1.5. Các phương pháp phân phối khố Diffie-Hellman.
Hiện nay có hai phương pháp chính để “Thoả thuận khố mật”:
- Phương pháp thơng thường
- Phương pháp hiệu quả
1.5.1. Phương pháp thông thường
Khi hai người dùng thống nhất có một khố bí mật chung, thì một trong hai người chọn
khố ngẫu nhiên K, sau đó truyền nó một cách an tồn đến người kia bằng phương pháp nào
đó, ví dụ bằng mã khố cơng khai hay phương pháp “giấu tin”. Phương pháp này phải dùng
nhiều thông tin truyền đi và cất giữ, mặt khác độ an tồn thấp vì phải truyền đi “trọn vẹn” một
khố trên mạng cơng khai.
1.5.2. Phương pháp hiệu quả
Phương pháp hiệu quả để thoả thuận khoá phải đạt được hai tiêu chí sau:
+ Bảo đảm an tồn các thơng tin về khố bí mật.
15
15


Trần Thị Khánh

Lớp Mạng máy tính K62B

Tức là bảo đảm rằng kẻ xấu khó có thể khám phá hay tráo đổi khố mật.

+ Giảm được thơng tin cần truyền đi và cất giữ, trong khi vẫn cho phép các cặp người
dùng tính tốn được khố bí mật.
Theo phương pháp hiệu quả, người dùng không truyền cho nhau trên mạng “trọn vẹn”
một khố K, mà chỉ truyền vật liệu cơng khai và cách thức tạo khoá K đến cặp người dùng A và
B.
Phương pháp này không phải dùng nhiều thông tin truyền đi và cất giữ, mặt khác độ an
toàn cao, vì người dùng chỉ truyền trên mạng vật liệu cơng khai và cách thức tạo khố bí mật,
chứ khơng truyền trực tiếp khố bí mật.
Kẻ xấu có trộm được tin trên đường truyền, cũng khó tính được khố mật vì khơng biết
vật liệu bí mật của từng người dùng
1.6. Hệ phân phối khố Diffie-Hellman.
Hệ phân phối khố Diffie-Hellman khơng địi hỏi TA phải biết và chuyển bất kỳ thơngtin
bí mật nào về khoá của các người tham gia trong mạng để họ thiết lập được khốchung bí mật
cho việc truyền tin với nhau.
Trong một hệ phân phối khoá Diffie-Hellman, TA chỉ việc chọn một số nguyên tố lớn p và
một phần tử nguyên thuỷ g theo mod p, sao cho bài tốn tính trong p là rất khó. Các số p và g
được công bố công khai cho mọi người tham gia trong mạng. Ngồi ra, TA có một sơ đồ chữ ký
với thuật tốn ký (bí mật) và thuật tốn kiểm chứng (cơng khai) .
Một thành viên bất kỳ A với danh tính ID(A) tuỳ ý chọn một số a (0 ≤ a≤ p − 2) và tính . A
giữ bí mật a và đăng ký các thơng tin (ID(A), XA) với TA. TA cấp cho A chứng chỉ:
C(A) = (ID(A), XA, (ID(A), XA)).
Các chứng chỉ của các thành viên trong mạng có thể được lưu giữ trong một cơ sở dữ liệu
công khai hoặc uỷ thác cho TA lưu giữ và cung cấp công khai cho các thành viên mỗi khi cần
đến.

16
16


Trần Thị Khánh


Lớp Mạng máy tính K62B

Các chứng chỉ của các thành viên trong mạng có thể được lưu giữ trong một cơ sở dữ liệu
công khai hoặc uỷ thác cho TA lưu giữ và cung cấp công khai cho các thành viên mỗi khi cần
đến.
Khi hai thành viên A và B trong mạng cần có một khố bí mật chung để truyền tin bảo
mật cho nhau thì A dùng thơng tin cơng khai XB có trong C(B) kết hợp với số bí mật của mình
là a để tạo nên khố:

Khố chung đó B cũng tạo ra được từ các thơng tin cơng khai XA của A và số bí mật của
mình:

Để bảo đảm được các thơng tin về và XB và XAl à chính xác, A và B có thể dùng thuật
toán để kiểm chứng chữ ký xác thực của TA trong các chứng chỉ C(B) và C(A)tương ứng.
Độ an tồn của hệ phân phối khố Diffie-Hellman được bảo đảm bởi yếu tố sau đây:
Biết XAvà XB để tính chính là bài tốn Diffie-Hellman tương đương: biết và , tính .
Đây là một bài tốn khó tương đương bài tốn tính lơgarit rời rạc hay bài tốn phá mật mã
ElGamal.
1.7. Mở rộng bài toán cho nhiều bên
Thoả thuận khoá Diffie-Hellman khơng chỉ giới hạn để thương lượng một khố 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ư thế bằng cách lặp các giao thức thoả thuận và trao đổi dữ liệu trung gian. Ví dụ, A, B
và C có thể tham gia vào một thoả thuận Diffie-Hellman như sau (với tất cả phép toán đều lấy
mod p):
1. Các bên đồng ý với các tham số của giải thuật là p và g.
2. Các bên tự sinh khố bí mật, đặt tên là a, b, c.
3. A tính và gửi nó cho B
4. B tính = và gửi nó cho C
17

17


Trần Thị Khánh

Lớp Mạng máy tính K62B

5. C tính và dùng nó làm khố bí mật
6. B tính và gửi nó cho C
7. C tính = và gửi nó cho A
8. A tính = và dùng nó làm khố bí mật
9. C tính

và gửi nó cho A

10. A tính = và gửi nó cho B
11. B tính = và dung nó làm khố bí mật
Một kẻ trộm có thể biết , nhưng không thể nào kết hợp chúng để sinh lại . Để mở rộng cơ
chế này cho các nhóm lớn hơn cần phải tuân thủ hai nguyên tắc cơ bản sau:
+Bắt đầu với một khố “rỗng” chỉ gồm có g, khố 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 (số mũ sẽ lên tới tích N-1 số mũ, trong đó N là số bên tham
gia vào nhóm) đều có thể bị cơng khai, nhưng giá trị cuối cùng (khi cả N số mũ đều được dùng)
sẽ tạo thành khố bí mật dùng chung và do đó phải tránh bị cơng khai. Vì vậy, mỗi người dùng
cần thu về bản sao của khoá mật bằng cách sử dụng khố mật của chính họ lúc cuối cùng (mặt
khác, khơng có cách nào để bên tham gia cuối cùng trao đổi khoá cuối cho bên nhận của nó, vì
bên này phải giữ bí mật khố)
Những ngun tắc này mở ra rất nhiều tuỳ chọn để sắp xếp các bên tham gia đóng góp tạo
khố. Phương pháp đơn giản và rõ ràng nhất là sắp xếp N bên tham gia vào một vịng trịn và
có N khố quay quanh vịng trịn này, cho tới khi mỗi khố đều đã được N bên đóng góp xây

dựng (kết thúc với chính bên sở hữu của nó) và mội bên tham gia đều đóng góp vào N khố
(kết thúc với khoá của họ). 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.
Bằng cách chọn một thứ tự tối ưu hơn, phụ thuộc vào thực tế là các khố có thể trùng lặp,
chúng ta có thể giảm khối lượng tính tốn số mũ của mỗi bên là sử dụng phương pháp Chia để
trị, được đề xuất sau đây đối với 8 bên.

18
18


Trần Thị Khánh

Lớp Mạng máy tính K62B

1. Các bên A, B, C và D mỗi bên thực hiện tính tốn , giá trị này được gửi cho E, F, G, H.
Ngược lại họ cũng nhận được .
2. Các bên A và B mỗi bên tính , gửi cho C và D, khi đó C và D cũng làm việc tương tự
gửi cho A và B.
3. Bên A tính tốn và gửi cho B, tương tự, B gửi lại cho A. C và D cũng làm việc tương
tự.
4. Bên A tính số mũ cuối thu được trong khi B làm điều tương tự để nhận được . C và D
cũng làm điều tương tự.
5. Các bên từ E qua H đồng thời thực hiện tính tốn sử dụng làm điểm khởi đầu.
Sau khi hồn thành thuật tốn, tất cả các bên tham gia đều sở hữu khoá mật , nhưng mỗi
bên chỉ phải tính tốn 4 lần số mũ thành phần, thay vì phải tính tốn 8 lần như trong sắp xếp
vịng trịn đơn giản.
1.8. Giao thức trao đổi khố D-H có chứng chỉ xác thực
Mỗi người dùng A có một danh tính ID(A) và một sơ đồ chữ ký với thuật toán ký và thuật
toán kiểm chứng . TA cũng có một vai trị xác thực, nhưng khơng phải xácthực bất kỳ thơng tin
nào liên quan đến việc tạo khố mật mã của người dùng (dù làkhố bí mật hay là khố cơng

khai), mà chỉ là xác thực một thơng tin ít quan hệ khácnhư thuật tốn kiểm chứng chữ ký của
người dùng. Cịn bản thân các thơng tin liên quan đến việc tạo khố mật mã thì các người dùng
sẽ trao đổi trực tiếp với nhau. TA cũng có một sơ đồ chữ ký của mình, gồm một thuật tốn ký
và một thuật tốn kiểm chứng (cơng khai) . Chứng chỉ mà TA cấp cho mỗi người dùng A sẽ là:
C(A) = (ID(A), , (ID(A), )).
Rõ ràng trong chứng chỉ đó TA khơng xác thực bất kỳ điều gì liên quan đến việc tạo khoá
của A cả. Việc trao đổi khoá giữa hai người dùng A và B được thực hiện theo giao thức sau đây:
1. A chọn ngẫu nhiên số a (0 ≤ a≤ p − 2), tính XA= và gửi XA cho B.
2. B chọn ngẫu nhiên số b (0 ≤ a≤ p − 2), giữ bí mật b, tính XB= , tính tiếp
K=
= (XB, XA) và gửi (C(B), XB, ) cho A.

19
19


Trần Thị Khánh

Lớp Mạng máy tính K62B

3. A tính: K = dùng để kiểm chứng , dùng để kiểm chứng C(B), sau đó tính = (XA, XB),
và gửi (C(A), ) cho B.
4. B dùng để kiểm chứng ,và dùng để kiểm chứng C(A).
Nếu tất cả các bước đó được thực hiện và các phép kiểm chứng đều cho kết quả đúngđắn,
thì giao thức kết thúc, cả A và B đều có được khố chung K. Do việc dùng các thuậttốn kiểm
chứng nên A biết chắc giá trị XB là của B và B biết chắc giá trị XA là của A,loại trừ khả năng
một người C nào khác đánh tráo các giá trị đó giữa đường
1.9. Kết luận
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 tồ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 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.
2. LẬP TRÌNH HỆ MẬT VIGENERE.
2.1. Giới thiệu hệ mật Vigenere
Mật mã Vigenere đã kéo dài hàng trăm năm mà khơng thể phá vỡ với khóa đủ dài. Nhưng
nếu sử dụng các khóa ngắn hoặc nếu các nhà thám mã có đủ nhiều bản mã so với độ dài khóa
thì mật mã Vigenere lại bị thám mã là khá dễ dàng. Bài viết dưới đây giới thiệu về mật mã
Vigenere và cách thức thám mã loại mật mã này.
Mật mã Vigenere là một phương pháp mã hóa chữ văn bản tiếng Anh, lần đầu tiên được
mô tả bởi Giovan Battista Bellaso vào năm 1553. Phương pháp mã hóa mật mã Vigenere dễ
hiểu và dễ thực hiện, nhưng chỉ đến năm 1863 với nhiều nỗ lực suốt ba thế kỷ, Friedrich
Kasiski mới xuất bản một phương pháp chung để giải mã mật mã Vigenere.
Nhưng mật mã Vigenere là gì? Nó là một loại mật mã đặc biệt trong đó mật mã thay thế
polyalphabetic được sử dụng giống như mật mã thay thế monoalphabetic ngoại trừ một thay
đổi. Bảng chữ cái được lấy làm mật mã thay đổi định kỳ trong khi mã hóa văn bản thuần túy.
20
20


Trần Thị Khánh

Lớp Mạng máy tính K62B

Điều này làm giảm mật mã ít bị tấn cơng hơn bằng cách sử dụng phân tích mật mã tần số chữ
cái.

Hình 2.2.1: Giovan Battista Bellaso
Phương pháp Vigenere sử dụng một từ khóa có độ dài m
Khơng gian khóa K của phương pháp Vigenere có số phần tử là n m , lớn hơn hẳn phương

pháp số lượng phần tử của khơng gian khóa K trong phương pháp mã hóa bằng dịch chuyển.

21
21


Trần Thị Khánh

Lớp Mạng máy tính K62B

Thực chất q trình mã hoá Vigenere là việc tiến hành đồng thời dùng nhiều mã Ceaser
cùng một lúc trên bản rõ với nhiều khoá khác nhau. Khoá cho mỗi chữ dùng để mã phụ thuộc
vào vị trí của chữ đó trong bản rõ và được lấy trong từ khoá theo thứ tự tương ứng.

2.2. Giải mã và mã hoá mật mã Vigenere
Mã hoá
Trong ngành mật mã học, mã hóa là q trình dùng để biến thông tin từ dạng này sang
dạng khác và ngăn những người không phận sự tiếp cận vào thông tin đó. Bản thân việc mã hóa
khơng ngăn chặn việc thơng tin bị đánh cắp, có điều thơng tin đó lấy về cũng không xài được,
không đọc được hay hiểu được vì đã được làm biến dạng đi rồi.
Mã hóa bao gồm các thành phần:





Thơng tin trước khi mã hóa (Plaintext)
Sau tin sau khi mã hóa (Ciphertext)
Chìa khóa (Key)
Phương pháp giải mã (Encryption/Decryption)


Q trình mã hóa được tiến hành bằng cách sử dụng các hàm tốn học Encryption lên
thơng tin Plaintext, vốn được biểu diễn dưới dạng số, để trở thành thơng tin mã hóa Ciphertext.
Mã hóa sẽ mang lại tính an tồn cao hơn cho thơng tin, đặc biệt là trong thời đại Internet
ngày nay, khi mà thông tin phải đi qua nhiều trạm trung chuyển trước khi đến được đích. Nếu
khơng có mã hóa, khả năng thơng tin của bạn sẽ bị ai đó xem trộm trong quá trình truyền tải,
rồi lợi dụng để làm việc xấu là hoàn toàn hiện hữu.
Giải mã
Giải mã là phương pháp đưa thơng tin ở dạng mã hóa về dạng thơng tin ban đầu, đây là
quy trình ngược của mã hóa Q trình giải mã được tiến hành như sau: Áp dụng các hàm tốn
học Decryption lên thơng tin CipherText để được thông tin đã giải mã Plaintext.
 Giả sử
22
22


Trần Thị Khánh

Lớp Mạng máy tính K62B

-Khố là một chữ có độ dài d được viết dưới dạng K = …, trong đó nhận giá trị từ 0 đến
25.
-Ta chia bản rõ thành các khối gồm d chữ. Mỗi chữ thứ i trong khối chỉ định dùng bảng
chữ và lặp lại từ đầu sau d chữ của bản rõ. Vì có nhiều bảng chữ khác nhau, nên cùng một chữ
ở các vị trí khác nhau sẽ có các bước nhảy khác nhau, làm cho tần suất các chữ trong bản mã
dãn tương đối đều
-Giải mã đơn giản là quá trình làm ngược lại. Nghĩa là dùng bản mã và từ khoá với các
bảng chữ tương ứng, nhưng với mỗi chữ sử dụng bước nhảy lui về đâu.
 Ví dụ
Ta có bảng chữ cái:


Hình 2.2.1: Bảng chữ cái
-Giả sử d = 6 và từ khoá là CIPHER, từ khoá này tương ứng với dãy số: k = (2, 8, 15, 7, 4,
17).
-Giả sử bản rõ: meetmeatsunset. Chuyển các kí tự rõ thành mã trên rồi cộng với từ khoá.
23
23


Trần Thị Khánh

Lớp Mạng máy tính K62B

-Giải mã = (Bản rõ + Key) mod 26
-Mã hoá = (Giải mã – Key) mod 26

Hình 2.2.2: Bảng mã hố
Trong Vigenere Cipher, người ta dùng tất cả 26 bảng thế là sự thu được từ bảng gốc chữ
cái tiếng Anh mà dịch đi từ 0-25 vị trí. Sự hồ trộn này có quy luật hồn tồn xác định bởi
khố. Mỗi chữ của khố sẽ xác định mỗi bảng thế được dùng.

24
24


Trần Thị Khánh

Lớp Mạng máy tính K62B

Hình 2.2.3: Bảng Saint Cyr

Ví dụ ta có một chuỗi cần mã hóa như sau:
“ATTACKATDAWN”
Và key dùng để mã hóa là “LEMON”. Trước hết ta sẽ nhân chuỗi LEMON này lên để nó
có cùng độ dài với chuỗi cần mã hóa:
“LEMONLEMONLE”
Khi này ta sẽ sử dụng bảng mã hóa như sau: bắt đầu từ trái qua phải, lấy ký tự của key
làm dòng, ký tự của chuỗi cần mã hóa là cột và dóng vào trong bảng mã ta được một ký tự, ký
tự đó chính là ký tự đã được mã hóa.
Áp dụng với key LEMONLEMONLE và chuỗi ATTACKATDAWN bên trên:
25
25


×