You are on page 1of 32

BỘ THÔNG TIN VÀ TRUYỂN THÔNG

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG


---------------  ---------------

BÁO CÁO MÔN HỌC


“AN NINH MẠNG VIỄN THÔNG”

Đề tài:
“Mật mã bất đối xứng”

Giáo viên: Hoàng Trọng Minh


Sinh viên: Lê Anh Tuấn – B18DCVT376
Dương Thanh Tùng – B18DCVT384
Nguyễn Bảo Long – B18DCVT256
Nguyễn Đức Thuận – B18DCVT416
HÀ NỘI – 2021
LỜ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 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 đó mã hóa khóa
công khai đang tỏ ra rất thích hợp rất trong truyền thông tin dữ liệu và có tính bảo mật
khá cao. Báo cáo này do nhóm biên soạn dựa trên những kiến thức lĩnh hội được từ thầy
giáo Hoàng Trọng Minh, và thông qua sự tìm hiểu, nghiên cứu tích cực của các thành
viên trong nhóm. Báo cáo của nhóm đi sâu vào trình bày mã hóa khóa công khai RSA và
giao thức thỏa thuận khóa Diffie - Hellman với nội dung gồm 4 chương được chia thành
các chủ đề khác nhau, từ việc giới thiệu sơ bộ, trình bày khái niệm, cách thiết lập, sơ đồ
và các ví dụ minh họa cụ thể về giao thức thỏa thuận khóa. 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 mong thầy cô và bạn bè đóng góp ý kiến để
nhóm hoàn thiện hơn báo cáo này.
Thay mặt nhóm em xin chân thành cảm ơn !
MỤC LỤC
LỜI NÓI ĐẦU .............................................................................................................. 1

PHÂN CÔNG CÔNG VIỆC .......................................................................................... 2

MỤC LỤC .................................................................................................................... 3

DANH MỤC HÌNH VẼ................................................................................................. 4

CHƯƠNG 1: TÌM HIỂU CHUNG VỀ MÃ HÓA .......................................................... 6


1.1. Khái niệm..................................................................................................... 6
1.2. Tại sao mã hóa dữ liệu cần thiết ? ............................................................... 6
1.3. Phân loại mã hóa ......................................................................................... 7

CHƯƠNG 2: MÃ HÓA KHÓA CÔNG KHAI ............................................................... 8


2.1. Giới thiệu..................................................................................................... 8
2.2.Mã hóa công khai hoạt động như thế nào ..................................................... 9
2.3. Tại sao mã hóa công khai ra đời.................................................................. 9
2.4. Nguyên tắc cấu tạo của hệ mã hóa công khai ................................................. 10
2.5. Các đặc điểm của hệ mã hóa công khai ..................................................... 10
2.6. Phân biệt mã hóa công khai với mã hóa đối xứng...................................... 11
2.7. Ứng dụng của hệ mã hóa công khai ...............Error! Bookmark not defined.

CHƯƠNG 3: THUẬT TOÁN MÃ HÓA KHÓA CÔNG KHAI RSAError! Bookmark not de
3.1. Giới thiệu về RSA...........................................Error! Bookmark not defined.
3.2. Mô tả hoạt động của RSA ..............................Error! Bookmark not defined.
3.2.1. Quá trình tạo khóa cho hệ mật RSA ........Error! Bookmark not defined.
3.2.2. Quá trình mã hóa ....................................Error! Bookmark not defined.
3.2.3. Quá trình giải mã....................................Error! Bookmark not defined.
3.2.4. Ví dụ .......................................................Error! Bookmark not defined.
3.2.5. Chuyển đổi văn bản rõ ............................Error! Bookmark not defined.
3.2.6.Tạo chữ ký vào văn bản ...........................Error! Bookmark not defined.
3.3. Các vấn đề của RSA................................................................................... 20
3.4. Ứng dụng thực tế của RSA ......................................................................... 21
3.2.1. Chữ ký điện tử ( Digital Signature ) .................................................... 21
3.2.2. SSL ..................................................................................................... 21

CHƯƠNG 4: GIAO THỨC THỎA THUẬN KHÓA DIFFIE - HELLMANError! Bookmar


4.1. Giới thiệu chương ..........................................Error! Bookmark not defined.
4.2. Giao thức thỏa thuận khóa Difie - Hellman ...Error! Bookmark not defined.
4.2.1. Khái niệm thỏa thuận khóa .....................Error! Bookmark not defined.
4.2.2. Giao thức thỏa thuận khóa Diffie - HellmanError! Bookmark not defined.
4.2.3. Các đặc điểm đặc trưng của giao thức thỏa thuận khóa Diffie -
Hellman ....................................................................Error! Bookmark not defined.

TÀI LIỆU THAM KHẢO ................................................Error! Bookmark not defined.


DANH MỤC HÌNH VẼ
Hình 2.1. Cách thức mã hóa công khai .......................................................................... 8
Hình 3.1: Các tác giả Ronal Rivest, Adi Shamir và Leonard Adleman tại Học Viện Công
Nghệ Masachusetts (MIT) vào năm 1977. ............................................................................ 13
Hình 3.2: Sơ đồ biểu diễn thuật toán mã RSA ............... Error! Bookmark not defined.
Hình 3.3: Mô hình chung của chữ ký điện tử ............................................................... 21
Hình 4.1: Giáo sư Martin Hellman (giữa) cùng đồng nghiệp là Whitfield Defie (phải) đã
khám phá ra mật mã khóa công khai Difie - Hellman ........................................................... 24
No table of figures entries found.

CHƯƠNG I. TÌM HIỂU CHUNG VỀ MÃ HÓA

5
1. 1. Khái niệm
Mã hóa là cách xáo trộn dữ liệu chỉ để hai bên trao đổi thông tin có thể hiểu được. Về mặt
kỹ thuật, đó là quá trình chuyển đổi văn bản gốc sang bản mã. Nói một cách đơn giản
hơn, mã hóa lấy dữ liệu có thể đọc được và thay đổi nó để dữ liệu này không giống như
ban đầu. Mã hóa yêu cầu sử dụng khóa mã hóa: một tập hợp các giá trị toán học mà cả
người gửi và người nhận tin nhắn được mã hóa đều biết.
Mặc dù dữ liệu được mã hóa xuất hiện ngẫu nhiên, mã hóa tiến hành theo cách hợp lý, có
thể dự đoán được, để bên nhận sử dụng khóa để mã hóa dữ liệu , biến nó trở lại thành bản
dữ liệu ban đầu. Mã hóa an toàn thực sự sẽ đủ phức tạp để bên thứ ba không thể giải mã
được bằng brute force- nói cách khác, bằng cách đoán
Chẳng hạn tôi có một thuật toán rất đơn giản mã hóa thông điệp cần gửi đi như sau :
Bước 1 : Thay thế toàn bộ chữ cái “e” thành chữ số “3”.
Bước 2 : Thay thế toàn bộ chữ cái “a” thành chữ số “4”.
Bước 3 : Đảo ngược thông điệp.
Trên đây chỉ là một ví dụ rất đơn giản mô phỏng cách thức làm việc của mã hóa (
Cryptography ) . Trong thực tế đây là một quá trình cực kì phức tạp và rất khó để diễn
tả.
1.2. Tại sao mã hóa dữ liệu cần thiết ?
Ngày nay, khi mạng Internet đã kết nối các máy tính ở khắp nơi trên thế giới lại với
nhau, thì vấn đề bảo vệ máy tính khỏi sự thâm nhập phá hoại từ bên ngoài là một điều cần
thiết. Thông qua mạng Internet, các hacker có thể truy cập vào các máy tính trong một tổ
chức (dùng telnet chẳng hạn), lấy trộm các dữ liệu quan trọng như mật khẩu, thẻ tín dụng,

6
tài liệu… Hoặc đơn giản chỉ là phá hoại, gây trục trặc hệ thống mà tổ chức đó phải tốn
nhiều chi phí để khôi phục lại tình trạng hoạt động bình thường.
Đây là một phương pháp hỗ trợ rất tốt trong việc chống lại những truy cập bất hợp pháp
tới các thông tin được truyền đi trên mạng, áp dụng mã hóa sẽ khiến cho nội dung thông
tin được truyền đi dưới dạng không thể đọc được đối với bất kỳ ai cố tình muốn lấy thông
tin đó
Riêng tư : Mã hóa đảm bảo rằng không ai có thể đọc thông tin liên lạc hoặc dữ liệu khi
nghỉ ngơi ngoại trừ người nhận dự định hoặc chủ sở hữu dữ liệu phù hợp. Điều này ngăn
chặn tội phạm mạng, mạng quảng cáo, nhà cung cấp dịch vụ Internet và trong một số
trường hợp chính phủ chặn và đọc dữ liệu nhạy cảm
Bảo vệ : Mã hóa giúp tránh vi phạm dữ liệu, cho dù dữ liệu đang trong quá trình di
chuyển hoặc ở trạng thái nghỉ. Nếu một thiết bị của công ty bị mất hoặc bị đánh cắp và ổ
cứng của nó được mã hóa chính xác, dữ liệu trên thiết bị đó có thể sẽ vẫn được bảo mật.
Tương tự, truyền thông được mã hóa cho phép các bên giao tiếp trao đổi dữ liệu nhạy
cảm mà không bị rò rỉ dữ liệu. Mã hóa cũng giúp ngăn chặn các hành vi nguy hiểm
như tấn công man-in-the-middle.
Xác thực: Mã hóa khóa công khai, trong số những thứ khác, thiết lập rằng máy chủ gốc
của trang web sở hữu khóa riêng và do đó được cấp chứng chỉ SSL hợp pháp.
Quy định: Vì tất cả những lý do này, nhiều quy định của ngành và chính phủ yêu cầu các
công ty xử lý dữ liệu người dùng phải giữ dữ liệu đó được mã hóa. Ví dụ về các tiêu
chuẩn quy định và tuân thủ yêu cầu mã hóa bao gồm HIPAA, PCI-DSS và GDPR.
1.3. Phân loại mã hóa.
Phân loại theo các phương pháp:
– Mã hóa cổ điển (Classical cryptography)
– Mã hóa đối xứng (Symmetric cryptography).
– Mã hóa bất đổi xứng (Asymmetric cryptography).
– Hàm băm một chiều (Hash function)
Phân lọai theo số lượng khóa:
– Mã hóa khóa bí mật (Private-key Cryptography)

7
– Mã hóa khóa công khai (Public-key Cryptography
CHƯƠNG II. MÃ HÓA KHÓA CÔNG KHAI
2.1. Giới thiệu
Mã hóa khóa công khai (Public Key Cryptography) còn được gọi là mật mã hóa
bất đối xứng, là một cơ cấu sử dụng cả chìa khóa cá nhân và chìa khóa công khai, trái
ngược với chìa khóa đơn được sử dụng trong mật mã hóa đối xứng. Việc sử dụng các cặp
chìa khóa khiến cho PKC có một bộ các đặc điểm và khả năng độc đáo có thể được sử
dụng để giải quyết các thách thức tồn tại cố hữu trong các kỹ thuật mã hóa khác. Hình
thức mật mã này đã trở thành một yếu tố quan trọng trong bảo mật máy tính hiện đại,
cũng như là một thành phần quan trọng cho việc phát triển hệ sinh thái tiền điện tử.

Hình 2.1: Cách thức mã hóa công khai

2.2. Mã hóa công khai hoạt động như thế nào ?

8
Trong sơ đồ PKC, chìa khóa công khai được người gửi sử dụng để mã hóa thông
tin, trong khi chìa khóa cá nhân được người nhận sử dụng để giải mã. Hai chìa khóa là
khác nhau, trong đó chìa khoá công khai có thể được chia sẻ an toàn mà không ảnh
hưởng đến tính bảo mật của chìa khoá cá nhân. Mỗi cặp chìa khóa bất đối xứng là duy
nhất, đảm bảo rằng một thông điệp được mã hóa bằng chìa khoá công khai chỉ có thể
được đọc bởi người sở hữu chìa khoá cá nhân tương ứng.

Vì thuật toán mã hóa bất đối xứng tạo ra các cặp chìa khóa được liên kết về mặt
toán học nên có độ dài chìa khóa dài hơn nhiều so với các cặp chìa khoá được tạo ra bởi
mật mã hoá đối xứng. Độ dài dài hơn này - thường từ 1.024 đến 2.048 bit - khiến việc
tính toán chìa khóa cá nhân từ chìa khoá công khai là vô cùng khó khăn. Một trong
những thuật toán thông dụng nhất cho mã hóa bất đối xứng được sử dụng ngày nay có tên
là RSA. Trong sơ đồ RSA, các chìa khóa được tạo bằng cách sử dụng một mô-đun phép
nhân hai số (thường là hai số nguyên tố lớn). Nói đơn giản hơn, mô-đun tạo ra hai chìa
khóa (một khóa công khai có thể được chia sẻ và một khóa cá nhân cần được giữ bí mật).
Thuật toán RSA được mô tả lần đầu tiên vào năm 1977 bởi Rivest, Shamir và Adleman
(RSA là ghép các chữ cái đầu tiên của 3 người này) và hiện vẫn là thành phần chính của
các hệ thống mật mã khóa công khai.

2.3. Tại sao mã hóa công khai ra đời


Mã hóa đối xứng dù rằng đã phát triển từ cổ điển đến hiện đại, vẫn tồn tại hai điểm yếu
sau:
Vấn đề trao đổi khóa giữa người gửi và người nhận: Cần phải có một kênh an toàn để
trao đổi khóa sao cho khóa phải được giữ bí mật chỉ có người gửi và người nhận biết.
Điều này tỏ ra không hợp lý khi mà ngày nay, khối lượng thông tin luân chuyển trên khắp
thế giới là rất lớn. Việc thiết lập một kênh an toàn như vậy sẽ tốn kém về mặt chi phí và
chậm trễ về mặt thời gian.
Tính bí mật của khóa: không có cơ sở quy trách nhiệm nếu khóa bị tiết lộ. Vào năm
1976 Whitfield Diffie và Martin Hellman đã tìm ra một phương pháp mã hóa khác mà có
thể giải quyết được hai vấn đề trên, đó là mã hóa khóa công khai (public key
cryptography) hay còn gọi là mã hóa công khai (asymetric cryptography). Đây có thể
xem là một bước đột phá quan trọng nhất trong lĩnh vực mã hóa.

2.4. Nguyên tắc cấu tạo của hệ mã hóa công khai.

9
Mã hóa khóa công khai ra đời đã giải quyết được vấn đề mà mã hóa riêng thiếu xót.
Trong hệ thống mã hóa này thì mỗi một người sử dụng khi tham gia vào đều được cấp 2
khóa :
- Một khóa dùng cho việc mã hóa dữ liệu (Public key)
- Và một khóa dùng cho việc giải mã dữ liệu (Private key),
Trong đó Public key được đưa ra cho tất cả mọi người cùng biết, còn Private keyphải
được giữ kín một cách tuyệt đối.Giả sử hai phía muốn truyền tin cho nhau thì quá trình
truyền sử dụng mã hóa khóa công khai được thực hiện như sau :
- Sender yêu cầu cung cấp hoặc tự tìm khoá công khai của Receiver trên một Server
chịu trách nhiệm quản lý khoá công khai.
- Sau đó hai phía thống nhất thuật toán dùng để mã hóa dữ liệu, Sender sử dụng khóa
công khai của Receiver cùng với thuật toán đã thống nhất để mã hóa thông tin bí mật.
- Thông tin sau khi mã hóa được gửi tới Receiver, lúc này chính Sender cũng không thể
nào giải mã được thông tin mà anh ta đã mã hóa (khác với mã hóa khóa riêng).
- Khi nhận được thông tin đã mã hóa, Receiver sẽ sử dụng khóa bí mật của mình để giải
mã và lấy ra thông tin ban đầu.
Có nhiều phương pháp mã hóa thuộc loại mã hóa khóa công khai. Đó là các phương
pháp Knapsack, RSA, Elgaman, và phương pháp đường cong elliptic ECC…. Mỗi
phương pháp có cách thức ứng dụng hàm một chiều khác nhau.
2.5. Các đặc điểm của hệ mã hóa công khai
Thông thường, các kỹ thuật mật mã hóa khóa công khai đòi hỏi khối lượng tính toán
nhiều hơn các kỹ thuật mã hóa khóa đối xứng nhưng những lợi điểm mà chúng mang lại
khiến cho chúng được áp dụng trong nhiều ứng dụng. Vậy là với sự ra đời của Mã hóa
khóa công khai thì khóa được quản lý một cách linh hoạt và hiệu quả hơn. Người sử dụng
chỉ cần bảo vệ khóa Private key.
Hệ thống này an toàn hơn nhiều so với mã hóa khóa riêng, người mã hóa không thể
giải mã được dữ liệu đã mã hóa bằng khóa công khai của người khác. Tuy nhiên nhược
điểm của mã hóa khóa công khai nằm ở tốc độ thực hiện, nó chậm hơn mã hóa khóa riêng
cỡ ~1000 lần
2.6. Phân biệt mã hóa công khai với mã hóa đối xứng

10
Điều kiện cần của những giải thuật này là:
1. Khi một người nào đó có được một hay nhiều chuỗi bít được mã hóa, người đó cũng
không có cách nào giải mã được mẫu tin ban đầu, trừ khi người đó biết được “ secret key
’’ dùng cho mã hóa.
2. Secret key phải trao đổi một cách an toàn giữa hai party tham gia vào quá trình mã
hóa.
Mã hóa bất đối xứng là những giải thuật mã hóa sử dụng 2 khóa : public key và
private-key. Hai khóa này có một mối liên hệ toán học với nhau. Mã hóa bằng khóa này
thì chỉ có thể giải mã bằng khóa kia. Có hai ứng dụng của loại mã hóa này : Mã hóa bất
đối xứng và chữ ký điện tử ( digital signature ).
Trong ứng dụng mã hóa bất đối xứng ( ví dụ giải thuật RSA )mỗi bên A, B sẽ có
một public key (PU) private key (PR) riêng mình. A tạo ra PUA và PRA.B tạo ra PUB và
PRB. PUA sẽ được A gửi cho B và khi B muốn truyền dữ liệu cho A thì B sẽ mã hóa
bằng PUA. A sẽ giải mã bằng PRA. Ngược lại nếu A muốn truyền cho B thì A sẽ mã hóa
bằng PUB và B giải mã bằng PRB. PRA và PRB không bao giờ được truyền đi và chỉ
được giữ riêng cho mỗi bên .
Trong ứng dụng chữ ký điện tử thì A sẽ mã hóa mẫu tin bằng PRA. Bởi vì chỉ có A
là biết được PRA nên khi một party nào đó nhận được mẫu tin này , party đó có thể biết
được mẫu tin đó xuất phát từ A chứ không phải một ai khác. Đương nhiên để giải mã ,
party đó cần có PUA.
2.7. Ứng dụng của hệ mã hóa công khai
Loại mật mã này được sử dụng bởi nhiều hệ thống máy tính hiện đại nhằm cung
cấp bảo mật cho thông tin nhạy cảm. Email, ví dụ, có thể được mã hóa bằng các kỹ thuật
mã hóa khóa công khai để giữ bí mật nội dung. Giao thức Lớp cổng bảo mật (SSL) giúp
kết nối an toàn đến các trang web có thể cũng sử dụng mật mã bất đối xứng. Các hệ thống
PKC thậm chí đã được sử dụng như một phương tiện cung cấp một môi trường bỏ phiếu
điện tử an toàn có khả năng cho phép cử tri tham gia các cuộc bầu cử từ máy tính tại nhà
của họ.
PKC cũng góp mặt nổi bật trong công nghệ blockchain và tiền điện tử. Khi một ví
tiền điện tử mới được thiết lập, một cặp chìa khóa sẽ được tạo (chìa khoá công khai và
chìa khoá cá nhân). Địa chỉ công khai được tạo bằng cách sử dụng chìa khoá công khai
và có thể được chia sẻ an toàn với người khác. Mặt khác, chìa khóa cá nhân được sử dụng

11
để tạo ra các chữ ký kỹ thuật số và xác minh các giao dịch, và do đó, phải được giữ bí
mật. Khi một giao dịch đã được xác minh bằng cách xác nhận hash có trong chữ ký kỹ
thuật số, giao dịch đó có thể được thêm vào sổ cái blockchain. Hệ thống xác minh chữ ký
kỹ thuật số đảm bảo rằng chỉ người có chìa khóa cá nhân được liên kết với ví tiền điện tử
tương ứng mới có thể rút tiền. Cần lưu ý rằng các mật mã bất đối xứng được sử dụng
trong các ứng dụng tiền điện tử là khác với các mật mã được sử dụng cho mục đích bảo
mật máy tính. Ví dụ, Bitcoin và Ethereum sử dụng một mật mã chuyên dụng được gọi là
Thuật toán Chữ ký số Elliptic Curve (ECDSA) để xác minh các giao dịch.
Từ bảo mật máy tính đến xác minh các giao dịch tiền điện tử, mật mã khóa công
khai đóng một vai trò quan trọng trong việc bảo mật các hệ thống kỹ thuật số hiện đại.
Bằng cách sử dụng các chìa khóa công khai và chìa khoá cá nhân theo cặp, các thuật toán
mã hóa bất đối xứng giải quyết các vấn đề bảo mật cơ bản được đưa ra bởi các mã hoá
đối xứng. Mặc dù PKC đã được sử dụng trong nhiều năm, các cách sử dụng và các ứng
dụng mới vẫn thường xuyên được phát triển cho nó, đặc biệt là trong lĩnh vực blockchain
và tiền điện tử.

CHƯƠNG III. THUẬT TOÁN MÃ HÓA KHÓA CÔNG KHAI


RSA

12
3.1. Giới thiệu về RSA.
Tiêu chuẩn Rivest-Shamir-Adleman (RSA) - Giải thuật mã hóa khóa công khai
RSA là một tiêu chuẩn được các tác giả Ronal Rivest, Adi Shamir và Leonard Adleman
phát triển tại Học Viện Công nghệ Masachusetts (MIT) vào năm 1977, tên tiêu chuẩn
được lấy từ 3 chữ cái đầu của tên 3 tác giả, hiện tiêu chuẩn được các tổ chức Viện Tiêu
chuẩn Quốc gia Hoa Kỳ (American National Standards Institute – ANSI), Viện Kỹ nghệ
Điện và Điện tử (Institute of Electrical and Electronics Engineers – IEEE) và Phòng thí
nghiệm RSA công nhận (RSA Laboratories là một bộ phận của Tập đoàn EMC). Đây 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. Nó
đánh dấu một sự tiến bộ vượt bậc của lĩnh vực mật mã học trong việc sử dụng khóa công
cộng. RSA đ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 điều kiện độ dài khóa đủ lớn.

Hình 3.1. Các tác giả Ronal Rivest, Adi Shamir và Leonard Adleman tại Học Viện
Công nghệ Masachusetts (MIT) vào năm 1977
Trước đó vài năm, Clifford Cox, một chuyên gia mã hóa người Anh đã phát triển
riêng một biến thể của RSA. Tuy nhiên, Chính phủ Anh xem đây là vấn đề mật và đã
không công bố. Khi Rivest, Shamir và Adleman công bố RSA trong ấn phẩm Scientific
American tháng 9/1977, Cơ quan An ninh quốc gia Hoa Kỳ (NSA) không đồng ý về việc
phổ biến rộng rãi RSA và ra lệnh cấm, tuy nhiên lệnh cấm này không có cơ sở pháp lý.
Thuật toán RSA được MIT đăng ký bằng sáng chế tại Hoa Kỳ vào năm 1983 (Số
đăng ký 4,405,829). Bằng sáng chế này hết hạn vào ngày 21 tháng 9 năm 2000. Tuy
nhiên, do thuật toán đã được công bố trước khi có đăng ký bảo hộ nên sự bảo hộ hầu như

13
không có giá trị bên ngoài Hoa Kỳ. Ngoài ra, nếu như công trình của Clifford Cocks đã
được công bố trước đó thì bằng sáng chế RSA đã không thể được đăng ký.
Năm 1978, các tác giả đã công bố thuật toán trên Tạp chí của Hiệp hội Kỹ thuật
Tính toán Hoa Kỳ (Communications of the Association for Computing Machinery –
ACM). Hiện nay, có thể tham khảo đặc tả của RSA trên trang thông tin của Tập đoàn
EMC.
3.2. Mô tả hoạt động của RSA.
 Định lý cơ sở:
Định lý nhỏ của Fermat: Với p là một số nguyên tố khác 2 thì chia một số a lũy thừa
p cho p sẽ có số dư chính bằng a: a P  a  mod p 

Mở rộng ta có: a m  1 mod m 

Với   m  là số nguyên tố cùng nhau với m và nhỏ hơn m

- Thuật toán RSA có 2 khóa:


 Khóa công khai (Public Key)
 Khóa bí mật (Private Key)
- Mỗi khóa là những số cố định sử dụng trong quá trình mã hóa và giải mã.
- Khóa công khai được công bố rộng rãi cho mọi người và được dùng để mã hóa.
- Khóa bí mật được cá nhân giữ kín và dùng để giải mã
Ví dụ:
Bod muốn gửi cho Alice một thông tin mật M mà Bod muốn duy nhất Alice có thể
đọc được.
Bod Alice
( Mã hóa M bằng Public Key của A đc C) (Giải mã C bằng Private Key của A đc M )

14
Hình 3.2: Sơ đồ biểu diễn thuật toán mã RSA
3.2.1. Quá trình tạo khóa cho hệ mật RSA.
Giả sử Alice và Bob cần trao đổi thông tin bí mật thông qua một kênh không an
toàn (ví dụ như Internet). Với thuật toán RSA, Alice đầu tiên cần tạo ra cho mình cặp
khóa gồm khóa công khai và khóa bí mật theo 5 bước sau:
1. Chọn 2 số nguyên tố lớn khác nhau p, q thỏa mãn điều kiện p  q

2. Tính tích của nó n  p  q


3. Tính giá trị hàm Phi Euler của n: n   p  1q  1 .
4. Chọn số nguyên d, sao cho d  n  và gcd(d,  (n ) )=1.
5. Tính giá trị e thỏa mãn điều kiện: ed  1mod  n .
Khóa công khai bao gồm: n và e. Khóa mật: d còn p,q và  (n ) thường là xóa sau khi
tính toán khóa.

15
3.2.2. Quá trình mã hóa:
Giả sử Bob muốn gửi đoạn thông tin M cho Alice. Đầu tiên Bob chuyển M thành
một số m < n theo một hàm có thể đảo ngược (từ m có thể xác định lại M) được thỏa
thuận trước. Quá trình này được mô tả ở phần Chuyển đổi văn bản rõ.
Lúc này Bob có m và biết n cũng như e do Alice gửi. Bob sẽ tính c là bản mã hóa
của m theo công thức:

c  me (mod n)
Hàm trên có thể tính dễ dàng sử dụng phương pháp tính hàm mũ (môđun) bằng
phương pháp bình phương. Cuối cùng Bob gửi C cho Alice
3.2.3. Quá trình giải mã:
Alice nhận c từ Bob và khóa bí mật d. Alice có thể tìm được m từ c theo công thức
sau:

m  c d (mod n)
Biết m, Alice tìm lại M theo phương pháp đã thỏa thuận trước. Quá trình giải mã
hoạt động vì ta có:

c d  (me )d  med (mod n)


Do ed ≡ 1 (mod p-1) và ed ≡ 1 (mod q-1), theo Định lý Fermat nhỏ nên:

med  m(mod p)

med  m(mod q)
Do p và q là hai số nguyên tố cùng nhau, áp dụng định lý phần dư trung hoa, chúng
ta có:

med  m(mod pq)


Hay

c d  m(mod n)

16
3.2.4. Ví dụ:
Sau đây là một ví dụ với những số cụ thể. Ở đây chúng ta sử dụng những số nhỏ để tiện
tính toán còn trong thực tế phải dùng các số có giá trị đủ lớn.
Lấy:
p = 61 — số nguyên tố thứ nhất (giữ bí mật hoặc hủy sau khi tạo khóa)
q = 53 — số nguyên tố thứ hai (giữ bí mật hoặc hủy sau khi tạo khóa)
n = pq = 3233 — môđun (công bố công khai)
e = 17 — số mũ công khai
d = 2753 — số mũ bí mật
Khóa công khai là cặp (e, n). Khóa bí mật là d. Hàm mã hóa là:
encrypt(m) = me mod n = m17 mod 3233
với m là văn bản rõ. Hàm giải mã là:
decrypt(c) = cd mod n = c2753 mod 3233
với c là văn bản mã.
Để mã hóa văn bản có giá trị 123, ta thực hiện phép tính:
encrypt(123) = 12317 mod 3233 = 855
Để giải mã văn bản có giá trị 855, ta thực hiện phép tính:
decrypt(855) = 8552753 mod 3233 = 123
Cả hai phép tính trên đều có thê được thực hiện hiệu quả nhờ giải thuật bình phương và
nhân
3.2.5. Chuyển đổi văn bản rõ
Trước khi thực hiện mã hóa, ta phải thực hiện việc chuyển đổi văn bản rõ ( chuyển
đổi từ M sang m) sao cho không có giá trị nào của M tạo ra văn bản mã không an toàn.
Nếu không có quá trình này, RSA sẽ gặp phải một số vấn đề sau :
 Nếu m = 0 hoặc m = 1 sẽ tạo ra các bản mã có giá trị là 0 và 1 tương ứng
 Khi mã hóa với số mũ nhỏ (chẳng hạn e =3) và m cũng có giá trị nhỏ, giá trị me
cũng nhận giá trị nhỏ (so với n). Như vậy phép môđun không có tác dụng và có
thể dễ dàng tìm được m bằng cách khai căn bậc e của c ( bỏ qua môđun).

17
 RSA là phương pháp mã hóa xác định ( không có thành phần ngẫu nhiên) nên kẻ
tấn công có thể thực hiện tấn công lựa chọn bản rõ bằng cách tạo ra một bảng tra
giữa bản rõ và bản mã. Khi gặp một bản mã, kẻ tấn công sử dụng bảng tra để tìm
ra bản rõ tương ứng.
Trên thực tế, ta thường gặp 2 vấn đề đầu khi gửi các bản tin ASCII ngắn với m là
nhóm vài ký tự ASCII. Một đoạn tin chỉ có 1 ký tự NUL sẽ được gán giá trị m = 0 và cho
ra bản mã là 0 bất kể giá trị của e và N. Tương tự, một ký tự ASCII khác, SOH, có giá trị
1 sẽ luôn cho ra bản mã là 1. Với các hệ thống dùng giá trị e nhỏ thì tất cả ký tự ASCII
đều cho kết quả mã hóa không an toàn vì giá trị lớn nhất của m chỉ là 255 và 2553 nhỏ
hơn giá trị n chấp nhận được. Những bản mã này sẽ dễ dàng bị phá mã.
Để tránh gặp phải những vấn đề trên, RSA trên thực tế thường bao gồm một hình
thức chuyển đổi ngẫu nhiên hóa m trước khi mã hóa. Quá trình chuyển đổi này phải đảm
bảo rằng m không rơi vào các giá trị không an toàn. Sau khi chuyển đổi, mỗi bản rõ khi
mã hóa sẽ cho ra một trong số khả năng trong tập hợp bản mã. Điều này làm giảm tính
khả thi của phương pháp tấn công lựa chọn bản rõ (một bản rõ sẽ có thê tương ứng với
nhiều bản mã tùy thuộc vào cách chuyển đổi).
Một số tiêu chuẩn, chẳng hạn như PKCS, đã được thiết kế để chuyển đổi bản rõ
trước khi mã hóa bằng RSA. Các phương pháp chuyển đổi này bổ xung thêm bit vào M.
Các phương pháp chuyển đổi cần được thiết kế cẩn thận để tránh những dạng tấn công
phức tạp tận dụng khả năng biết trước được cấu trúc của bản rõ. Phiên bản ban đầu của
PKCS dùng một phương pháp đặc ứng (ad-hoc) mà về sau được biết là không an toàn
trước tấn công lựa chọn bản rõ thích ứng (adaptive choén ciphertext attack). Các phương
pháp chuyển đổi hiện đại sử dụng các kỹ thuật như chuyển đổi mã hóa bất dối xứng tối
ưu như (Optimal Asymmetric Encryption Padding – OAEP) để chống lại tấn công dạng
này. Tiêu chuẩn PKCS còn được bổ xung các tính năng khác để đảm bảo an toàn cho chữ
ký RSA (Probabilistic Signature Scheme for RSA-RSA-PSS).
3.2.6. Tạo chữ ký vào văn bản.
Thuật toán RSA còn được dùng để tạo chữ ký số cho văn bản.

18
Giả sử Alice muốn gửi cho Bob một văn bản có chữ ký của mình. Để làm việc này,
Alice tạo ra một giá trị băm (hask value) của văn bản cần ký và tính giá trị mũ d mod n
của nó (giống như khi Alice thực hiện giải mã). Giá trị cuối cùng chính là chữ ký điện tử
của văn bản đang xét.
Khi Bob nhận được văn bản cùng với chữ ký điện tử, anh ta tính giá trị mũ e mod n
của chữ ký đồng thời với việc tính giá trị băm của văn bản. Nếu 2 giá trị này như nhau thì
Bob biết rằng người tạo ra chữ ký biết khóa bí mật của Alice và văn bản đã không bị thay
đổi sau khi ký.
Cần chú ý rằng các phương pháp chuyển đổi bản rõ ( như RSA-PSS) giữ vai trò
quan trọng đối với quá trình mã hóa cũng như chữ ký điện tử và không được dùng chung
cho đồng thời cho cả hai mục đích trên.
3.3. Các vấn đề của RSA.
Sau đây ta sẽ xem xét một số các tấn công phương pháp RSA.
 Vét cạn khóa: cách tấn công này thử tất cả các khóa d có thể có để tìm ra bản giải mã
có ý nghĩa, tương tự như cách thử khóa K của mã hóa đối xứng. Với N lớn, việc tấn
công là bất khả thi.
 Phân tích N thành thừa số nguyên tố N = pq: Chúng ta đã nói rằng việc phân tích phải
là bất khả thi thì mới là hàm một chiều, là nguyên tắc hoạt động của RSA. Tuy nhiên,
nhiều thuật toán phân tích mới đã được đề xuất, cùng với tốc độ xử lý của máy tính
ngày càng nhanh, đã làm cho việc phân tích N không còn quá khó khăn như trước đây.
Năm 1977, các tác giả của RSA đã treo giải thưởng cho ai phá được RSA có kích
thước của N vào khoảng 428 bít, tức 129 chữ số. Các tác giả này ước đoán phải mất 40
nghìn triệu triệu năm mới có thể giải được. Tuy nhiên vào năm 1994, câu đố này đã
được giải chỉ trong vòng 8 tháng. Bảng sau liệt kê kích thước N của các RSA đã phá
mã được cho đến hiện nay.
Số chữ số của N Số bit Năm phá mã Thuật toán
100 322 1991 Quadratic sieve
110 365 1992 Quadratic sieve

19
120 398 1993 Quadratic sieve
129 428 1994 Quadratic sieve
130 431 1996 GNFS
140 465 1999 GNFS
155 512 1999 GNFS
160 530 2003 Lattice sieve
174 576 2003 Lattice sieve
200 633 2005 Lattice sieve

Dĩ nhiên là việc phá mã trên chỉ được thực hiện trong phòng thí nghiệm. Tuy nhiên
người ta cho rằng kích thước của N phải khoảng 1024 bít (309 chữ số) thì mới bảo đảm
an toàn thật sự.
 Đo thời gian: Đây là một phương pháp phá mã không dựa vào mặt toán học của thuật
toán RSA, mà dựa vào một “hiệu ứng lề” sinh ra bởi quá trình giải mã RSA. Hiệu ứng
lề đó là thời gian thực hiện giải mã. Giả sử người phá mã có thể đo được thời giải mã
dùng thuật toán bình phương liên tiếp. Trong thuật toán bình phương liên tiếp, nếu
một bít của d là 1 thì xảy ra hai phép modulo, nếu bít đó là 0 thì chỉ có một phép
modulo, do đó thời gian thực hiện giải mã là khác nhau. Bằng một số phép thử chosen-
plaintext, người phá mã có thể biết được các bít của d là 0 hay 1 và từ đó biết được d.
3.4. Ứng dụng thực tế của RSA.
Tiêu chuẩn RSA được ứng dụng rộng rãi trong nhiều lĩnh vực như chữ ký số, thương mại
điện tử, bảo mật, xác thực… Trong Thông tư số 01/2011/TT-BTTTT ngày 04/01/2011
của Bộ trưởng Bộ Thông tin và Truyền thông Công bố Danh mục tiêu chuẩn kỹ thuật về
ứng dụng công nghệ thông tin trong cơ quan nhà nước quy định Khuyến nghị áp
dụng tiêu chuẩn RSA, là một trong những giải thuật mã hóa và được xếp vào nhóm Tiêu
chuẩn về an toàn thông tin.
3.4.1. Chữ ký điện tử (Digital Signature).
Chữ ký điện tử là chữ ký được tạo lập dưới dạng từ, chữ số, ký hiệu, âm thanh hoặc các
hình thức khác bằng phương tiện điện tử, gắn liền hoặc kết hợp một cách logic với thông
20
điệp dữ liệu. Chữ ký điện tử có giá trị xác nhận người ký thông điệp dữ liệu và xác nhận
sự chấp thuận của người đó đối với nội dung thông điệp dữ liệu được ký.
Chữ ký điện tử là thông tin đi kèm theo dữ liệu (văn bản, hình ảnh , video ….) nhằm mục
đích xác định người chủ của dữ liệu đó.
Chữ ký điện tử được tạo ra bằng cách áp dụng thuật toán băm một chiều trên văn bản gốc
để tạo ra bản phân tích văn bản (mesage digest) hay còn gọi là fingerprint, sau đó mã
hóa bằng private key tạo ra chữ ký số đính kèm với văn bản gốc được tính lại fingerprint
để so sánh với fingerprint cũ cũng được phục hồi từ việc giải mã chữ ký số.
Mô hình chung của chữ kí điện tử :

Hình 3.3: Mô hình chung của chữ ký điện tử


Đặc điểm của chữ ký điện tử rất đa dạng, có thể là một tên hoặc hình ảnh cá nhân kèm
theo dữ liệu điện tử, một mã khóa bí mật, hay một dữ liệu sinh trắc học ( chẳng hạn như
hình ảnh mặt, dấu vân tay, hình ảnh mống mắt … ) có khả năng xác thực người gửi. Độ
an toàn của từng dạng là khác nhau.
Quy trình thực hiện chữ ký điện tử :
Các bước mã hóa :
1. Dùng giải thuật băm để thay đổi thông điệp cần truyền đi, kết quả là ta được một
message digest, dùng giải thuật md5 (message digest 5) ta được digest có chiều dài 128
bit, dùng giải thuật sha ( secure hash algorithm ) ta có chiều dài 160 bit.

21
2. Sử dụng khóa private key của người gửi để mã hóa mesage digest thu được ở bước 1.
Thông thường ở bước này ta dùng giải thuật rsa. Kết quả thu được gọi là digital signature
của mesage ban đầu.
3. Gộp digital signature vào message ban đầu, công việc này gọi là ‘’ ký nhận ’’ vào
message. Sau khi đã ký nhận vào message, mọi sự thay đổi trên message sẽ bị phát hiện
trong giai đoạn kiểm tra. Ngoài ra, việc ký nhận này đảm bảo người nhận tin tưởng
message này xuất phát từ người gửi chứ không phải là ai khác.
Các bước kiểm tra :
1. Dùng public key của người gửi (khóa này được thông báo đến mọi người) để giải mã
chữ ký số của message.
2. Dùng giải thuật (md5 hoặc sha) hàm băm message đính kèm.
3. So sánh kết quả thu được ở bước 1 và 2. Nếu trùng nhau, ta kết luận message này
không bị thay đổi trong quá trình truyền và message này là của người gửi.
Mỗi cá nhân khi tham gia vào hệ thống chữ ký điện tử cần phải được cung cấp một bộ
khóa (Public key, Private key) dùng để định danh cá nhân đó bởi một tổ chức cơ quan có
thẩm quyền và được công nhận trong phạm vi sự dụng.
3.4.2. SSL (Secure Socket Layer)
SSL là giao thức đa mục đích được thiết kế nhằm mã hóa toàn bộ thông tin đến/ đi
giữa hai chương trình ứng dụng một cổng định trước (socket 443). Giao thức SSL được
hình thành và phát triển đầu tiên năm 1994 bởi nhóm nghiên cứu Netscape và ngay nay
trở thành chuẩn bảo mật thực hành trên mạng Internet.
Phiên bản hiện nay là SSL 3.0 và đang tiếp tục được bổ xung hoàn thiện.

22
CHƯƠNG IV: GIAO THỨC THỎA THUẬN KHÓA DIFFIE
HELLMAN
4.1. Giới thiệu.

Hình 4.1. Giáo sư Martin Hellman (giữa) cùng đồng nghiệp là Whitfield Diffie (phải) đã
khám phá ra mật mã khóa công khai Diffie-Hellman.
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 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).
Trao đổi khóa Diffie-Hellman bị cáo buộc rằng nó đã đưuc phát minh ra một cách
độc lập một vài năm trước đó trong Trụ sở Truyền Thông Chính phủ Anh (GCHQ) bởi
Malcolm J .Williamson). Vào năm 2002, Hellman đã đưa ra thuật toán được gọi chung là

23
trao đổi khóa Diffie–Hellman–Merkle công nhận sự đóng góp của cả Ralph Merkle,
người đã phát minh ra thuật toán mã hó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ó đối xứng (symmetric key gorithms), 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 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.

24
Mặc dù, bản thân thuật toán là một giao thức chọn khóa nặc danh (không cần thông
qua xác thực) nhưng nó đã cung cấp ra một cơ sở cho các giao thức xác thực khác nhau
khá hoàn hảo.
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.
4.2. Giao thức thỏa thuận khóa Diffie – Hellman
4.2.1. Khái niệm thỏa thuận khóa.
Thoả thuận khoá: 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.
4.2.2. Giao thức thỏa thuận 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 mà
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
vụ điều hành hoặc phân phối khóa.
- Phương pháp này cho phép những người sử dụng có thể cùng nhau tạo ra một khóa bí
mật thông qua một kênh truyền thống không đảm bảo về độ bảo mật. Khóa bí mật này sẽ
được dùng để ngƣời sử dụng tr o đổi thông tin với nhau.
4.2.2.1. Cách thiết lập giao thức thỏa thuận khóa 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:

25
+ 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 chon ngẫu nhiên số aA (0 ≤ aA ≤ p-2) bí mật, tính bA  g A mod p và gửi bA


a

cho Bob
2. Tương tự, Bob chọn ngẫu nhiên số aB (0 ≤ aB ≤ p-2) bí mật, tính bB  g a mod p và gửi
B

bB cho Alice.

3. Alice tính được khóa: K A  bB A mod p


a

4. Bob tính được khóa: K B  bAB mod p


a

+ Bây giờ Alice và Bob có cùng khóa chung là:


K A  K B  g aAaB mod p

+ Mô tả giao thức Diffie – Hellman bằng bảng sau:

 Chú ý là chỉ có aA, aB và KA, KB là được giữ bí mật. Tất cả các giá trị còn lại như
p, g, bA, bB, đề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ị aA, aB và p
cần được lấy lớn, g không cần lấy giá trị quá lớn. Thực tế thì g thường lấy giá trị 2
hoặc 5.

26
4.2.2.2. Sơ đồ giao thức thỏa thuận khóa Diffie - Hellman.

Hình 4.2: Sơ đồ giao thức thỏa thuận khóa Diffie – Hellman


Sơ đồ dưới đây minh họa phần nào ý tưởng chung. Đầu tiên, Alice và Bob đã thống
nhất về màu sơn chung (màu vàng), Alice và Bob trao đổi màu sắc đã đƣợc trộn của họ.
Cuối cùng, điều này tạo ra một màu bí mật giống hệt nhau mà kẻ khác không có khả năng
tạo được ra giống vậy. Kể từ đây, Alice và Bob sẽ trao đổi bằng cách mã hóa và giải mã
sử dụng khóa bí mật đó (thể hiện bằng màu sơn bí mật cuối cùng).
4.2.2.3. Ví dụ bằng số minh họa.
1. Alice và Bob thống nhất với nhau chọn số nguyên tố p = 37 và g = 5.
2. Alice chọn một giá trị ngẫu nhiên bất kỳ aA = 7 và bí mật aA.
Alice tính bA = 57 mod 37 = 18.
Sau đó Alice gửi bA = 18 cho Bob.
3. Bob chọn một giá trị ngẫu nhiên bất kỳ aB = 5 và bí mật aB
Bob tính bB = 55 mod 37 = 17.
Sau đó Bob gửi bB = 17 cho Alice.
4. Bob nhận được bA = 18 và tính khóa chung: KB = 184 mod 37=15, và bí mật KB

27
5. Alice nhận được bB =17 và tính khóa chung: KA = 177 mod 37=15, và bí mật KA
4.2.3. Các đặc điểm đặc trưng của giao thức thảo thuận khóa Diffie - Hellman.
4.2.3.1. Giao thức là an toàn đối với việc tấn công thụ động.
Giao thức là an toàn đối với việc t n c ng thụ động, nghĩa là một người thứ b dù biết bA và
bB sẽ khó mà biết được KA,B.

Xét ví dụ:
1. Alice và Bob thống nhất với nhau chọn số nguyên tố p = 17 và g = 2.
2. Alice chọn một giá trị ngẫu nhiên bất kỳ aA = 6 và bí mật aA.
Alice tính bA = 26 mod 17 = 13.
Sau đó Alice gửi bA = 13 cho Bob.
3. Bob chọn một giá trị ngẫu nhiên bất kỳ aB = 9 và bí mật aB
Bob tính bB = 29 mod 17 = 2.
Sau đó Bob gửi bB = 2 cho Alice.

28
4. Bob nhận được bA = 13 và tính khóa chung: KB = 139 mod 17=13, và bí mật KB
5. Alice nhận được bB = 2 và tính khóa chung: KA = 26 mod 17=13, và bí mật KA
Eve là một kẻ nghe trộm – cô ta theo dõi những gì Alice và Bob gửi cho nhau
nhưng không thể thay đổi nội dung các cuộc liên lạc.
Eve muốn tái thiết lại những thông tin bảo mật mà Alice và Bob chia sẻ cho nhau.
Eve sẽ phải đối mặt với một nhiệm vụ thực sự khó khăn.
 Dưới đây là các biểu đồ giúp xác định ai biết được giá trị nào. (Eve là một kẻ nghe
trộm.)

29
Ta thấy Eve rơi vào tình thế tiến thoái lưỡng nam. Cô ấy biết được giá trị của bA, bB vì
a a
vậy cô ấy biết được g A , g B . Cô ấy cũng biết những giá trị của g và p, nhưng lại không
biết được các giá trị của aA, aB và KA,B
Đây chính là bài toán Diffie - Hellman mà khi biết bA, bB tìm KA,B, bài toán này
tương đương với bài toán phá mã ElGammal. Bây giờ ta đi chứng minh điều này.
- Phép mật mã ElGammal với khoá K = (p, g, a, β), trong đó β = ga mod p cho t từ một
bản rõ x và một số ngẫu nhiên k ∈ Zp-1 lập được mật mã eK(x, k) = (y1, y2) với y1 = gk
mod p, y2 = xβk mod p. Và phép giải mã được cho bởi y1 = gk mod p. Giả sử ta có thuật
toán A giải bài toán Diffie-Hellman. Ta sẽ dùng A để phá mã ElGammal như sau:
 Cho mật mã (y1, y2). Trước tiên, dùng A cho y1 = gk mod p và β = ga mod p ta
được A(y1,B) = gka = βk mod p. Sau đó, ta thu được bản rõ x từ βk và y2 như sau:
x = y2(βk)-1 mod p.
 Ngược lại, giả sử có một thuật toán khác là B dùng để phá mã EllGamml , tức là

 
1
B( p, g ,  , y1 , y2 )  x  y2 y1a mod p .Áp dụng B cho β = bA, y1 = bB, y2=1, ta

 
1
được B( p,  , bA , bB ,1)  (1. bB A ) 1   aAaB mod p tức giải được bài toán Diffie
1 a

– Hellman.

30
Trên thực tế các giá trị của p, aA, aB là rất lớn. Nếu p là số nguyên tố có ít nhất 300 chữ
số, aA và aB có ít nhất 100 chữ số thì thậm chí ngay cả thuật toán tốt nhất được biết đến
hiện nay cũng không thể giải đưuợc nếu chỉ biết g, p, bA, bB kể cả khi sử dụng tất cả khả
năng tính toán của nhân loại. Bài toán này còn được biết đến với tên gọi bài toán logarit
rời rạc. Bài toán logarit rời rạc vẫn còn đang gây rất nhiều tranh cãi và chưa có thuật giải
cụ thể nào.
4.2.3.2. Giao thức là không an toàn đối với việc tấn công chủ động.
 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. Nghĩa là một người thứ ba Eve có thể đánh tráo các thông tin trao đổi giữa
Alice và Bob.
 Chẳng hạn, Eve thay g a mà Alice định gửi cho Bob bởi g a ' và thay g a mà Bob
A A B

định gửi cho Alice bởi g a ' . Như vậy, sau khi thực hiện giao thức trao đổi khoá, Alice
B

đã lập một khoá chung g a a ' với Eve mà vẫn tưởng là với Bob; đồng thời Bob cũng
A B

lập một khoá chung g a ' A aB


với Eve mà vẫn tưởng là với Alice. Eve có thể giải mã mọi
thông báo mà Alice tưởng nhầm là mình gửi đến Bob cũng như mọi thông báo mà Bob
tưởng nhầm là mình gửi đến Alice.
 Một cách khắc phục kiểu tấn công này là làm sao để Alice và Bob có kiểm thử để xác
nhận tính đúng đắn của các khoá công khai bA và bB. Người ta đư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á Diffie-Hellman như một cách khắc phục nhược điểm này. 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 việc là
cấp chứng chỉ xác nhận khoá 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ề khoá (cả bí mật lẫn công khai) thì do các người dùng trao đổi
trực tiếp với nhau.

31
TÀI LIỆU THAM KHẢO
Tài liệu tiếng Việt
[1]. Bài giảng An ninh mạng viễn thông. TS. Nguyễn Phạm Anh Dũng – Học viện công
nghệ BCVT.
[2]. Cơ sở lý thuyết mật mã. PGS. TS. Nguyễn Bình, TS. Trần Đình Sự. Học viện kỹ
thuật mật mã. 2006
[3]. Thuật toán mã hóa và ứng dụng. TS. Dương Anh Đức, ThS. Trần Minh Triết. Đại
học Khoa học tự nhiên – Đại học Quốc gia TP. HCM. 2005
[4]. Bài giảng An ninh mạng (Network security) . Học viện kỹ thuật mật mã. Phan Đình
Diệu, Giáo trình lý thuyết mật mã và an toàn thông tin, Nhà xuất bản Đại học Quốc gia
Hà Nội, 1999.
Tài liệu Tiếng Anh
[5]. RSA Cryptography Standard, October 27, 2012.

32

You might also like