Tải bản đầy đủ (.pdf) (29 trang)

Hệ mật mã khóa công khai

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 (1.56 MB, 29 trang )

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

BÁO CÁO TIỂU LUẬN
MÔN HỌC: AN NINH MẠNG THÔNG TIN
ĐỀ TÀI: HỆ MẬT MÃ KHĨA CƠNG KHAI


Bài tập tiểu luận mơn ANM

PHÂN CHIA CƠNG VIỆC
Sinh Viên

Nội dung phụ trách
-

Đặt vấn đề hệ mật mã khóa cơng khai.
Ứng dụng mật mã khóa cơng khai trong
cơng nghệ Blockchain.

-

Khái niệm, đặc điểm hệ mật mã khóa cơng
khai.
Ngun lí hoạt động của hệ mật mã khóa
cơng khai.

-

Mật mã khóa cơng khai RSA.


2


Bài tập tiểu luận môn ANM

LỜI MỞ ĐẦU
Hệ mật mã khóa cơng khai đóng vai trị rất quan trọng và có tính ứng dụng cực
kỳ cao, đặc biệt trong lĩnh vực bảo mật. Những nhà phát triển mất rất nhiều thời gian để
thiết kế ra một mật mã khóa mới, do những mật mã cũ nhanh chóng bị giải mã bằng các
kĩ thuật và nhờ sự phát triến nhanh như vũ bão của công nghệ, công cụ mới ra đời. Hiểu
được những thuộc tính cơ bản và cách thức hoạt động chính của mật mã khóa cơng khai
nói chung là một việc hết sức cần thiết đối với các kĩ sư viễn thông và công nghệ thông
tin để bảo vệ thông tin cá nhân cũng như người dùng trong thời đại dữ liệu được xem
như tài sản chủ chốt hiện nay.
Nắm được sự cần thiết đó, nhóm chúng em đã quyết định chọn đề tài “Hệ mật
mã khóa cơng khai” để tìm hiểu cũng như đưa ra những khái niệm, vấn đề phổ biến nhất
của hệ mật mã khóa cơng khai trong thực tế.
Mục đích của bài tiểu luận nhằm tìm hiểu và nghiên cứu tổng quan về hệ mật
mã khóa cơng khai. Phạm vi nghiên cứu sẽ tập chung vào ba phần chính. Thứ nhất là về
định nghĩa, đặc điểm và các yêu cầu của hệ mật mã khóa cơng khai; thứ hai nhóm đưa
ra một mật mã khóa công khai cụ thể để làm rõ những thông tin tổng quan trong phần
thứ nhất, mật mã khóa cơng khai RSA. Cuối cùng, ứng dụng của mật mã khóa cơng khai
RSA ứng dụng trọng Blockchain.
Phương pháp và cách giải quyết vấn đề
Hệ mật mã khóa cơng khai: đây là một đề tài khá phổ biến, nhóm em đã tham
khảo tài liệu slide bài giảng của thầy Hoàng Trọng Minh, đồng thời kết hợp giáo trình
An ninh mạng viễn thơng và một số tài liệu khác trên internet để tổng hợp và đưa ra
những lí thuyết dễ hiểu nhất về hệ mật mã khóa cơng khai, RSA và ứng dụng. Ứng dụng:
phần ứng dụng của mật mã khóa cơng khai RSA chủ yếu liên quan đến việc lập trình
nên chúng em đã sử dụng ngơn ngữ lập trình Python để mơ phỏng các ứng dụng của mật

mã này cùng với hệ điều hành mã nguồn mở Ubuntu.

3


Bài tập tiểu luận môn ANM

MỤC LỤC
LỜI MỞ ĐẦU .................................................................................................................3
DANH MỤC THUẬT NGỮ VIẾT TẮT ........................................................................5
DANH MỤC HÌNH ẢNH ...............................................................................................6
1. Tổng quan về hệ mật mã khóa cơng khai. ...................................................................7
1.1. Đặt vấn đề .............................................................................................................7
1.2. Khái niệm về mã khóa cơng khai. ........................................................................8
1.3. Đặc điểm hệ mật mã khóa cơng khai....................................................................9
2. Ngun lí hoạt động của hệ mật mã khóa cơng khai.................................................10
2.1. Hệ mật mã khóa cơng khai. ................................................................................10
2.2. Mơ hình bảo vệ thơng tin của mật mã khóa cơng khai.......................................12
2.3. Trao đổi khóa cơng khai. ....................................................................................14
2.4. Các u cầu đổi với mật mã hóa cơng khai. .......................................................16
3. Mật mã khóa cơng khai RSA.....................................................................................16
3.1. Giới thiệu chung .................................................................................................16
3.2 Mã hóa .................................................................................................................18
3.3 Giải mã ................................................................................................................18
3.4 Sinh khóa (Key generation) .................................................................................18
3.5. Sample code ........................................................................................................19
3.6. Tính bảo mật. ......................................................................................................21
3.7. Tốc độ .................................................................................................................21
4. Ứng dụng của hệ mật mã khóa cơng khai trong Blockchain.....................................21
4.1. Đặt vấn đề ...........................................................................................................21

4.2. Blockchain và Bitcoin ........................................................................................22
4.3. Quy trình trao đổi Bitcoin sử dụng hệ mật mã khóa cơng khai..........................22
4.4. Thực hiện demo Blockchain sử dụng ngơn ngữ lập trình Python. .....................23
4.4.1. Các tính năng ...............................................................................................23
4.4.2. Triển khai và đánh giá kết quả ...................................................................23
KẾT LUẬN ...................................................................................................................28
DANH MỤC THAM KHẢO ........................................................................................29
4


Bài tập tiểu luận môn ANM

DANH MỤC THUẬT NGỮ VIẾT TẮT

Viết tắt

Dạng đầy đủ

Ý nghĩa

CA

Certificate Authority

Trung tâm chứng thực

CPU

Central Processing Unit


Bộ xử lý trung tâm

DES

Data Encryption Standard

Tiêu chuẩn mã hóa dữ liệu

Elliptic Curve Digital
Signature Algorithm

Thuật tốn chữ kí số dựa trên
đường cong Elliptic

Hypertext Transfer
Protocol

Giao thức truyền tải siêu văn
bản

Massachusetts Institute of
Technology

Học viện Cơng nghệ
Massachusetts

Personal Computer

Máy tính cá nhân


PKC

Public Key Cryptography

Mật mã hóa cơng khai

SKC

Symmetric Key
Cryptosystems

Hệ mật mã khóa đối xứng

ECDSA
HTTP
MIT
PC

5


Bài tập tiểu luận mơn ANM

DANH MỤC HÌNH ẢNH
Hình 1: Mật mã hóa đối xứng..........................................................................................7
Hình 2: Minh họa việc mã hóa và giải mã hệ mật mã hóa cơng khai .............................8
Hình 3: Q trình mã hóa và giải mã ............................................................................10
Hình 4: Sơ đồ mã hóa ....................................................................................................11
Hình 5: Sơ đồ chứng thực ..............................................................................................11
Hình 6: Mơ hình đảm bảo bí mật...................................................................................12

Hình 7: Mơ hình chứng thực .........................................................................................13
Hình 8: Mơ hình kết hợp ...............................................................................................14
Hình 9: Trao đổi khóa giữa người dùng ........................................................................14
Hình 10: Trao đổi khóa cơng khai dùng CA .................................................................15
Hình 11: Các bước mã hóa A và B với khóa phiên .......................................................16
Hình 12: Bài tốn Double-Spending .............................................................................21
Hình 13: Q trình xác thực một giao dịch trong Blockchain. .....................................23
Hình 14: Mở hai bảng điều khiển Blockchain client và Blockchain node ....................24
Hình 15: Khởi tạo ví cho Alice .....................................................................................24
Hình 16: Khởi tạo ví cho Bob .......................................................................................24
Hình 17: Alice thực hiện giao dịch với Bob ..................................................................25
Hình 18: Khởi tạo giao dịch thành cơng........................................................................26
Hình 19: Giao dịch Alice được gửi đến node trong chuỗi và chờ xác thực. .................26
Hình 20: Giao dịch được thêm vào Blockchain ............................................................27

6


Bài tập tiểu luận môn ANM

1. Tổng quan về hệ mật mã khóa cơng khai.
1.1. Đặt vấn đề
Hệ mật mã khóa cơng khai được ra đời và phát triển khi các hệ mật mã khóa đối
xứng (Symmetric Key Cryptosystems hay SKC) hiện thời vẫn cịn rất nhiều nhược điểm
tồn tại.

Hình 1: Mật mã hóa đối xứng
Đầu tiên, vấn đề quản lí khóa (tạo, lưu và trao đổi) là rất khó khăn và phức tạp khi
thực hiện sử dụng trao đổi dữ liệu trong mỗi trường có rất nhiều người sử dụng [5]. Giả
sử, khi số người sử dụng là n thì số lượng khóa cần khởi tạo là n(n-1)/2. Mỗi người dùng

như vậy sẽ cần phải khởi tạo và lưu trữ (n-1) khóa bí mật để có thể trao đổi, gửi thông
tin với (n-1) người sử dụng khác trong mạng. Điều này đặt ra rất nhiều thách thức, khó
khăn và rủi ro bảo mật lớn khi giá trị n tăng lớn – đặc biệt trong thời đại số lượng người,
thiết bị sử dụng Internet đang bùng nổ như hiện nay [1]. Kế tiếp, trên cơ sở mật mã đối
xứng, ta cũng không thể thiết lập và giải quyết được khái niệm chữ ký điện tử (mà thể
hiện được các chức năng của chữ ký tay trong thực tế) và cũng do đó khơng có dịch vụ
non-repudiation (khơng thể phủ nhận được) cho các giao dịch thương mại điện tử, văn
bản, hóa đơn và chứng từ đang gia tăng trên mạng. Trong đó, đặc điểm non-repudiation
(khơng thể phủ nhận được) là được đảm bảo cho một quá trình giao dịch giữa Alice (A)
và Bob (B) nếu trong mọi trường hợp mỗi bên đều có bằng chứng để chứng minh rằng
những trường hợp phía bên kia chối bỏ một giao dịch nào đó, ví dụ A có thể chối khơng
thực hiện một giao dịch X nào đó với B bằng việc lấy cớ là có kẻ đã mạo nhận A để trao
đổi với B.
Thêm vào đó, trong hệ mật mã khóa đối xứng, thông tin riêng tư được chia sẻ
chung bởi cả hai bên Alice và Bob, do đó Alice có thể làm được bất kỳ cái gì mà Bob
làm và ngược lại. Giải pháp duy nhất cho vấn đề này là phải có thêm một thành phần
thứ ba hay trung gian trong bất cứ giao dịch giữa Alice và Bob, tức là một người có
thẩm quyền (trusted authority) mà cả Alice và Bob đều tin cậy là trung thực. Người này
sẽ đứng trung gian và xử lí trong trường hợp xảy ra khúc mắc hay tranh cãi giữa hai bên
7


Bài tập tiểu luận môn ANM

gửi và nhận. Người này sẽ làm chứng, đánh giá và quyết định trong trường hợp xảy ra
tranh cãi, khúc mắc giữa hai bên gửi, nhận là Alice và Bob. Tuy nhiên công việc của
người trung gian này sẽ rất nặng vì phải tham gia vào tất cả các giao dịch của các bên –
trong khi đó số lượng này cực kì lớn, và nếu kéo dài thì sẽ dẫn đến tình trạng quá tải hay
nghẽn cổ chai. Từ đó dẫn đến q trình truyền tin có độ trễ rất lớn.
Nhận thức được những vấn đề trên, trong nghiên cứu nổi tiếng của mình, hai tác

giả Diffie và Hellman đề xuất những ý tưởng về hệ mật mã mới cùng với những nguyên
tắc riêng biệt, được xây dựng xung quanh một người sử dụng – chứ không phải cân nhắc
và xoay quanh một cặp người sử dụng như trong bài toán kênh truyền tin mật truyền
thống. Và hệ thống mới này được gọi là “hệ mật mã khóa cơng khai”.
Bài báo cơng bố mang tiêu đề “New Directions in Cryptography” [2] của Whitfield
Diffie và Martin Hellman năm 1976 đã làm thay đổi căn bản về cách các hệ mật mã hoạt
động. Hệ mật mã khóa cơng khai ở đây là một hệ thống mã hóa bất đối xứng, trong đó
nêu ra phương pháp trao đổi khóa cơng khai, giải quyết các hạn chế của mật mã khóa
đối xứng đã được đề cập ở trên.
Khác với mã đối xứng, mã hóa khóa bất đối xứng sử dụng một cặp khóa: khóa
cơng khai (public key) và khóa bí mật (private key). Hai khóa này được xây dựng sao
cho từ một khóa, rất khó có cách sinh ra được khóa cịn lại. Một khóa sẽ dành để mã
hóa, khóa cịn lại dùng để giải mã. Chỉ có người sở hữu nắm được khóa bí mật trong khi
khóa cơng khai được phổ biến rộng rãi. Hình vẽ sau minh họa việc mã hóa và giải mã:

Hình 2: Minh họa việc mã hóa và giải mã hệ mật mã hóa cơng khai
1.2. Khái niệm về mã khóa cơng khai.
Đối với hệ mật mã khóa bí mật u cầu phải có thơng tin trước về khóa K giữa A
và B qua một kênh an toàn trước khi gửi một bản mã bất kỳ. Yêu cầu này khó có thể
đáp ứng khi A và B cách xa nhau gây khó khăn cho triển khai thực tế.
Ý tưởng một hệ mật mã khóa cơng khai là tìm một hệ mật mã khơng có khả năng
tính tốn để xác định dk nếu đã biết ek. Nếu thực hiện được như vậy thì quy tắc mã ek có
thể được cơng khai. Ưu điểm của hệ mật khóa cơng khai là A gửi một bản tin đã mã hóa
8


Bài tập tiểu luận môn ANM

cho B mà không cần thơng tin trước về khóa bằng cách dùng luật mã cơng khai ek. B là
người duy nhất có thể giải được bản mã này bằng cách sử dụng luật giải mã bí mật dk

của mình.
Về ngun tắc, một hệ mật khóa cơng khai khơng bao giờ có thể đảm bảo được độ
bảo mật tuyệt đối. Vì khi nghiên cứu, kẻ thám mã có thể mã lần lượt các bản rõ có thể
bằng luật mã cơng khai ek cho tới khi tìm được bản rõ duy nhất x đảm bảo y = ek(x).
Khi nghiên cứu về hệ mật khóa cơng khai ta cần quan tâm đến khái niệm hàm cửa
sổ sập một chiều: Hàm mã hóa cơng khai ek của B phải là một hàm dễ tính tốn nhưng
việc tính hàm ngược lại phải rất khó khăn (đối với bất kỳ ai khơng phải là B). Đặc tính
dễ tính tốn nhưng khó tính ngược gọi là đặc tính một chiều. Vì vậy cần thiết ek là một
hàm một chiều điều đó đảm bảo cho dk ln giữ được tính bí mật.
Để xây dựng một hệ mật khóa cơng khai thì việc tìm được hàm một chiều vẫn chưa
đủ. B phải có một cửa sập chứa thơng tin bí mật cho phép dễ dàng tìm được ek. Vì vậy
hàm được coi là cửa sập một chiều và trở nên dễ tính ngược nếu biết một cửa sập nhất
định.
1.3. Đặc điểm hệ mật mã khóa cơng khai.
Mật mã hóa cơng khai dựa trên dựa trên cơ sở các hàm tốn học chứ khơng phải
dựa trên phép thay thế và đổi chỗ như trong phương pháp mã hóa đối xứng.
Mật mã hóa cơng khai là bất đối xứng, trong cơ chế hoạt động của giải thuật mật
mã hóa cơng khai sử dụng hai khóa: khóa bí mật và khóa cơng khai. Một khóa để mật
hóa và một khoa dùng cho giải mật. Chúng có đặc điểm là khơng thể tính lại khóa giải
mật nếu biết trước giải thuật mật hóa và khóa dùng mật hóa. Việc sử dụng hai khóa
khơng đối xứng giúp q trình mã hóa đảm bảo được: tính tồn vẹn, tính xác thực và
phân phối khóa. Qua đó, mã hóa cơng khai giải quyết được hai vấn đề phức tạp nảy sinh
trong mã hóa đối xứng là bài tốn phân phối khóa và chữ kí số.

9


Bài tập tiểu luận mơn ANM

2. Ngun lí hoạt động của hệ mật mã khóa cơng khai.

2.1. Hệ mật mã khóa cơng khai.

Hình 3: Q trình mã hóa và giải mã
Giải thuật khóa cơng khai gồm các thành phần:
• Bản rõ: Đây là bản tin hoặc dữ liệu có thể đọc được và là đầu vào của thuật tốn
• Thuật tốn mã hóa: Các thuật tốn mã hóa thực hiện các biến đổi khác nhau trên
bản rõ.
• Khóa cơng khai và bí mật: Đây là một cặp chìa khóa đã được chọn để nếu một
khoa được sử dụng để mã hóa, thì khóa kia được sử dụng để giải mã. Các phép
chuyển đổi chính xác được thực hiện bởi các thuật tốn phụ thuộc vào khóa cơng
khai hoặc riêng mà được coi là các đầu vào.
• Bản mã: Đây là bản tin được tạo ra tại đầu ra thuật toán, nó phụ thuộc vào bản rõ
và khóa. Đối với một bản tin, hai khóa khác nhau sẽ tạo ra hai bản mã khác nhau.
• Thuật tốn giải mã: Thuật tốn này chấp nhận các bản mã và khóa phù hợp để
các bản rõ ban đầu.
Các thuộc tính quan trọng nhất của lược đồ mã hóa cơng khai là:
• Các khóa khác nhau được sử dụng để mã hóa và giải mã. Đây là một thuộc tính
đặc trưng đặt lược đồ này khác với lược đồ mã hóa đối xứng.
• Mỗi người nhận sở hữu một khóa giải mã duy nhất, thường được gọi là khóa bí
mật của mình.
• Người nhận cần xuất bản khóa mã hóa, được gọi là khóa cơng khai của mình.
• Một số đảm bảo về tính xác thực của khóa cơng khai là cần thiết trong chương
trình này để tránh bị kẻ thám mã là người nhận giả mạo. Nói chung, loại hệ thống
mật mã này liên quan đến bên thứ ba đáng tin cậy xác nhận rằng một khóa cơng
khai cụ thể chỉ thuộc về một cá nhân hoặc tổ chức cụ thể.
10


Bài tập tiểu luận mơn ANM


• Thuật tốn mã hóa đủ phức tạp để ngăn kẻ tấn công suy diễn bản rõ từ bản mã và
khóa mã hóa (cơng khai).
Mặc dù các khóa riêng và khóa cơng khai có liên quan với nhau về mặt tốn học,
nhưng việc tính khóa riêng tư từ khóa cơng khai là khơng khả thi. Trên thực tế, phần
thông minh của bất kỳ hệ thống mật mã khóa cơng khai nào là thiết kế mối quan hệ giữa
hai khóa.

Hình 4: Sơ đồ mã hóa

Hình 5: Sơ đồ chứng thực
Các bước tiến hành:
• Mỗi người sử dụng tạo ra một cặp khóa được sử dụng để mã hóa và giải mã các
bản tin.
11


Bài tập tiểu luận mơn ANM

• Mỗi người dùng sẽ giao một trong hai khóa cho người đăng kí khóa cơng cộng
hoặc một file có khả năng truy cập. Khóa đó là khóa cơng khai. Cái cịn lại sẽ
được giữ bí mật. Như trong hình trên đã giả thiết, mỗi người dùng sẽ duy trì một
tập các khóa cơng khai thu được từ các người dùng khác nhau.
• Nếu Bob muốn gửi một thơng điệp bí mật cho Alice, Bob mã hóa thơng điệp
bằng cách sử dụng khóa cơng khai của Alice.
• Khi Alice nhận được thơng điệp, cơ giải mã nó bằng khóa riêng của minh. Khơng
có người nhận khác có thể giải mã thơng điệp vì Alice biết khóa riêng của Alice.
Với tiếp cận này, tất cả những thành viên tham gia đều có quyền truy cập vào các
khóa cơng khai và khóa riêng được tạo cục bộ của từng người tham gia và không cần cơ
chế phân phối. Chừng nào khóa riêng của người dùng được bảo vệ và bí mật, thì truyền
thơng đến là an tồn. Tại bất kỳ thời điểm nào, một hệ thống có thể thay đổi khóa riêng

của nó và tạo ra khóa cơng khai mới để thay thế khóa cơng khai cũ của nó.
2.2. Mơ hình bảo vệ thơng tin của mật mã khóa cơng khai.

Hình 6: Mơ hình đảm bảo bí mật

Trong trường hợp này, một số nguồn A tạo ra một bản tin rõ X và bản tin này được
gửi đến B. B tạo ra một cặp quan hệ của các khóa: một khóa cơng khai KUb và một
khóa riêng KRb. Khóa KUb được cơng khai truy nhập bởi A. Với bản tin X và mã khóa
cơng khai KUb, A tạo ra các bản mã Y= E (KUb, X) để gửi đến B. Tại B nhận được bản
mã Y, giải mã Y bằng khóa riêng KRb bằng cách thực hiện biến đổi ngược X= D (KRb,
Y).
Kẻ phá mã, quan sát Y và có quyền truy cập và KUb nhưng khơng có quyền truy
cập vào KRb hoặc X. Để xem được thông tin, kẻ phá mã phải khôi phục được X và /
Nhóm 7

12


Bài tập tiểu luận môn ANM

hoặc KRb. Trong trường hợp kẻ tấn cơng khơng biết về thuật tốn mã hóa E và thuật
toán giải mã D, để nắm được bản tin cụ thể, kẻ tấn công sẽ tập trung vào khôi phục X
bằng cách tạo ra một bản rõ ước tính Xˆ . Thơng thường kẻ tấn cơng sẽ hướng đến bản
tin tương lai và hướng đến sự khôi phục khóa riêng KRb bằng cách tạo ra một ước tính
KRb.

Hình 7: Mơ hình chứng thực
Trong trường hợp này, A chuẩn bị một bản tin X đến B và mã hóa nó bằng khóa
riêng của mình(Y=E(KRa,X)) trước khi truyền nó. B có thể giải mã các bản tin bằng
khóa cơng khai của nó (X=(KUa,Y)). Bởi vì các bản tin được mã hóa bằng khóa riêng

của A, thì chỉ có duy nhất A tạo ra được bản tin như vậy. Vì thế, tồn bộ tin nhắn được
mã hóa phục vụ như một chữ ký kỹ thuật số. Thêm vào đó, khơng thể thay đổi được bản
tin mà khơng truy cập vào khóa riêng của A, nên bản tin được xác thực cả về nguồn và
về tính tồn vẹn của dữ liệu.
Một lưu ý ở mơ hình chứng thực này khác so với mơ hình đảm bảo bí mật là nó
khơng cung cấp tính bảo mật, bản tin gửi an tồn khi khơng có sự thay đổi nhưng phải
đối mặt sự tấn cơng của kẻ phá mã. Đây là rõ ràng trong trường hợp của một chữ ký dựa
trên một phần của bản tin, vì phần cịn lại của bản tin được truyền rõ ràng. Bên cạnh đó,
mơ hình này cũng khơng đảm bảo tính bí mật của bản tin vì bất kì ai cũng có thể giải
mã bằng cách sử dụng khóa cơng khai của người gửi.

Nhóm 7

13


Bài tập tiểu luận mơn ANM

Hình 8: Mơ hình kết hợp
Trong trường hợp này, mơ hình kết hợp có thể cung cấp cả chức năng bí mật và
chứng thực bằng cách kết hợp hai mơ hình mã hóa cơng khai bên trên. Ta bắt đầu như
trước bằng cách mã hóa một bản tin, sử dụng khóa bí mật KRa của người gửi tin để cung
cấp chức năng ký kỹ thuật số(Y=E(KRa,X)). Sau đó, ta mã hóa một lần nữa, bằng cách
sử dụng khóa cơng khai KUb của người nhận Z=E(KUb,Y), bản mã cuối cùng có thể
được giải mã chỉ của người nhận có khóa riêng phù hợp và đảm bảo tính bảo mật
X=D(KUa, D(KRb, Z). Điểm bất lợi của tiếp cận này là độ phức tạp của thuật tốn mã
khóa cơng khai, phải thực hiện bốn lần thay vì hai lần trong mỗi phiên truyền thơng.
2.3. Trao đổi khóa cơng khai.

Hình 9: Trao đổi khóa giữa người dùng

Trong mã hóa cơng khai, mỗi người dùng có một cặp khóa: khóa bí mật (KR) và
khóa cơng khai (KU). Vấn đề chứng thực mã cơng khai này có phải của đúng người
dùng trong trao đổi khóa hay khơng cần có các phương án để xác thực nhằm đảm bảo
q trình mã hóa và giải mã được diễn ra an toàn.
Phương pháp 1: Chứng chỉ khóa cơng khai do CA phát hành.
Nhóm 7

14


Bài tập tiểu luận mơn ANM

Hình 10: Trao đổi khóa cơng khai dùng CA
Trong mơ hình này, tổ chức làm nhiệm vụ cấp chứng chỉ được gọi là trung tâm
chứng thực( Certificate Authority-CA).
Giả sử A muốn được mọi người công nhận khóa của A thì cần:
• A gửi định danh IDA và khóa cơng khai KUA đến CA.
• CA sẽ kiểm tra tính hợp lệ của A.
• CA cấp chứng chỉ C cho A để xác nhận rằng khóa cơng khai Ku đó tương ứng
với ID. Cer được kí chứng thực bằng khóa riêng của trung tâm để đảm bảo rằng
nội dung của chứng chỉ là do trung tâm ban hành.
CA=E(IDA || KUA,KRAuth)
• A cơng khai chứng chỉ CA.
B muốn trao đổi thơng tin với A thì sẽ giải mã khóa CA bằng khóa cơng khai của

trung tâm chứng thực để có được khóa cơng khai Ku của A. Đồng nghĩa với việc
rằng B tin tưởng CA thì sẽ tin tưởng Ku của A.
Phương pháp 2: Trao đổi khóa bí mật bằng khóa cơng khai.
So với mật mã hóa đối xứng, q trình mã hóa và giải mã sử dụng những thuật
toán phức tạp hơn nên dẫn đến thời gian mã hóa và giải mã sẽ lâu hơn.

Để khắc phục vấn đề này mà vẫn giữ được tính bảo mật, các nhà nghiên cứu đã đề
xuất một phương án khác:

Nhóm 7

15


Bài tập tiểu luận mơn ANM

Hình 11: Các bước mã hóa A và B với khóa phiên
• A gửi chứng chỉ CA cho B.
• B gửi chứng chỉ CB cho A.
• A tạo một khóa phiên KS, mã hóa bằng khóa riêng của A, sau đó mã hóa tiếp
bằng khóa công khai của B và gửi tới B. B sẽ giải mã KS dùng khóa riêng của B
và khóa cơng khai của A.
• A mã hóa dữ liệu với khóa phiên KS và B dùng KS để giải mã.
Ta thấy rằng, KS là khóa phiên dùng để mã hóa và giải mã giữa A và B( phương
pháp mã hóa đối xứng) nhưng khóa này được mã hóa bằng khóa cơng khai trong q
trình trao đổi khóa. KS sẽ hủy bỏ khi kết thúc phiên. Mơ hình này được ứng dụng rộng
rãi trong các ứng dụng sử dụng giao thức Https.
2.4. Các u cầu đổi với mật mã hóa cơng khai.
Các thuật tốn mã hóa cơng khai cần đáp ứng các điều kiện:
• Tính tốn dễ dàng cho phía bên B để tạo ra một cặp khóa (cơng cộng KUb,
khóa riêng KRb).
• Tính tốn dễ dàng cho một người gửi A, biết khóa cơng khai và bản tin được mã
hóa, M, để tạo ra các bản mã tương ứng: C = E (KUb, M)
• Tính tốn dễ dàng cho người nhận B để giải mã bản mã bằng cách sử dụng khóa
riêng để phục hồi bản tin gốc: M = D (KRb, C) = D [KRb, E (KUb, M)]
• Tính tốn không khả thi đối với kẻ tấn công khi biết khóa cơng khai, nhằm xác

định khóa riêng.
3. Mật mã khóa công khai RSA
3.1. Giới thiệu chung
RSA là hệ mật mã khóa cơng khai phổ biến và cũng đa năng nhất trong thực tế,
phát minh bởi Rivest, Shamir & Adleman (1977). Nó là chuẩn mật mã bất thành văn đối
với PKC, cung cấp đảm bảo tính mật, xác thực và chữ kí điện tử. RSA đang được sử
Nhóm 7

16


Bài tập tiểu luận môn ANM

dụng phổ biến trong thương mại điện tử và được cho là đảm bảo an tồn với điều kiện
độ dài khóa đủ lớn. Thuật tốn được Ron Rivest, Adi Shamir và len Adleman mô tả lần
đầu tiên vào năm 1977 tại Học Viện Công nghệ Massachusetts (MIT). Tên của thuật
toán lấy từ 3 chữ cái đầu của tên 3 tác giả. Trước đó và năm 1973, Clifford Cocks, một
nhà toán học người Anh làm việc tại GCHQ, đã mơ tả một thuật tốn tương tự. Với khả
năng tín tốn tại thời điểm đó thì thuật tốn này khơng khả thi và chưa bao giờ được
thực nghiệm. Tuy nhiên, phát minh này chỉ được công bố vào năm 1997 vì được xếp
vào loại tuyệt mật.
RSA là một thí dụ điển hình về một đề tài tốn học trừu tượng lại có thể áp dụng
tực tiễn vào đời sống thường nhật. Khi nghiên cứu về các số nguyên tố, ít ai nghĩ rằng
khái niệm số nguyên tố lại có thể hữu dụng vào lĩnh vực truyền thơng.
Cơ sở thuật tốn RSA dựa trên tính khó của bài tốn phân tích các số lớn ra thừa
số ngun tố: khơng tồn tại thuật tốn thời gian đa thức (theo độ dài của biểu diễn nhị
phân của số đó) cho bài tốn này. Chẳng hạn, việc phân tích một hợp số là tích của 2 số
nguyên tố lớn hàng trăm chữ số sẽ mất hàng ngàn năm tính tốn với một máy PC trung
bình có CPU khoảng trên 2Ghz.
Ngun lý cơ bản của RSA dựa trên nhận định là có thể tìm được 3 số nguyên

dương rất lớn e, d và n mà:
( 𝑚𝑒 )𝑑 ≡ m (mod n) ∀m
Và dù cho có biết cả e, n hay cả m thì cũng rất khó để tìm ra d.
Tiếp theo chúng ta sẽ đi sâu vào từng công đoạn của 1 hệ mã, bao gồm việc mã
hóa, giải mã và sinh khóa.
❖ Chuẩn bị tốn học
Trước hết, chúng ta sẽ nhắc lại những khái niệm toán học cơ bản cần thiết cho việc
tìm hiểu RSA
▪ Số nguyên tố (Prime)
Số nguyên tố là tập hợp các só tự nhiên chỉ chia cho 1 và chín nó.
VD: 2, 3, 5 ,7, 11, 13, 17, 23...
▪ Số nguyên tố cùng nhau (coprime or relatively prime)
Với hai số nguyên dương a và b. Ta kí hiệu
gcd(a,b) : Ước chung lớn nhất của a và b ( Greatest Common Divisior).
Ví dụ: gcd(4,6) = 2, gcd(5,6) =1
Hai số a và b gọi là số nguyên tố cùng nhau khi gcd(a,b) = 1
Ví dụ: 7 và 9 là hai số nguyên tố cùng nhau vì gcd(7,9) = 1
▪ Khái niệm modulo
Với m là một sô nguyên dương. Ta nói hai số nguyên a và b đồng dư với nhau
modulo m nếu m chia hết cho hiệu a – b (viết là m|(a-b))
Nhóm 7

17


Bài tập tiểu luận mơn ANM

Kí hiệu a ≡ b ( mod m )
Như vậy a ≡ b ( mod m ) khi và chỉ khi tồn tại số nguyên k sao cho a = b + km
Ví dụ: 13 ≡ 3 ( mod 10 ) vì 13 = 3 + 1*10

▪ Phi- hàm Euler
Phi- Hàm Euler φ(n) có giá trị tại n bằng số các số không vượt quá n và nguyên
tố cùng nhau với n
Ví dụ:
φ(5) = 4, φ(6) = 2, φ(10) = 4
▪ Một số định lý cơ bản
Định lý Euler: Nếu m là số nguyên dương và P nguyên tố cùng nhau với m thì
P^ φ(m) = 1 (mod m)
3.2 Mã hóa
Giả sử Bob muốn gửi mẫu tin M cho Alice. Đầu tiên thông điệp M thành từng phần
nhỏ mỗi phần biểu diễn bởi một số nguyên m sao cho 0 ≤ m < n. Việc chuyển đổi này
cần đảm bảo là ngẫu nhiên và m khơng nhận các giá trị khơng an tồn ( ví dụ như số 0
hay số 1) nhưng vẫn đảm bảo là có thể suy ra M từ m. Tiếp theo, Bob tính ra bản mã
hóa c, sử dụng khóa cơng khai e của Alica như sau:
c ≡ me ( mod n) ∀m
Bob gửi c cho Alice
Mẫu tin này sau khi mã khóa thì chính Bob cũng khơng thể giải mãi được từ c
thành m.
3.3 Giải mã
Alice tính lại ra m từ c dựa vào khóa bí mật d:
c d ≡ ( me )d ≡ m ( mod n)
Dựa vào m, Alice có thể khơi phục lại mẫu tin ban đầu M
3.4 Sinh khóa (Key generation)

Mấu chốt của việc sinh khóa trong RSA là tìm được bộ 3 số tự nhiên e, d
và n sao cho dù có biết e, n hay thậm chí cả m cũng khơng thể tìm ra d.
Cụ thể khóa RSA được sinh ra như sau:
• Chọn 2 số ngun tố khác nhau p và q.
• Tính n = p* q. Độ dài của n (tính theo bit) chính là độ dài của khóa. Hiện nay
người ta khuyến cáo sử dụng khóa có độ dài tối thiểu 2048 bit.

• Tính 𝛗(𝐧) = 𝛗(𝐩)𝛗(𝐪) = (𝐩 − 𝟏)(𝐪 − 𝟏) = n –(p + q – 1). Trong đó 𝛗(𝐧)
là phi hàm Euler. 𝛗(𝐧) = số lượng số nguyên dương nhỏ hơn n mà nguyên tố
cùng nhau với n.
• Chọn một số nguyên e thỏa mã 1 < e < 𝛗(𝐧) và gcd(e, 𝛗(𝐧)) = 1.
Nhóm 7

18


Bài tập tiểu luận mơn ANM

• Tính ra d ≡ 𝐞−𝟏 (mod 𝛗(𝐧))
❖ Chứng minh
Để chứng minh tính đúng đắn của thuật tốn sinh khóa trên, ta cần chứng minh
rằng
( me )d ≡ m ( mod n) với n = pq
1. Trường hợp gcd(n, m) = 1
Ta có ed ≡ 1 (mod φ(n))
Do e và d nguyên dương nên ed = 1 + h φ(n), với h là một số ngun khơng âm.
h

Do đó ( me )d = m1+hφ(n) = m( mφ(n) )
Theo định lý Euler

h

eφ(n) ≡ 1 ( mod n) ∀a, n ∶ gcd(a, n) = 1 nên m( mφ(n) ) ≡ m(1)h ≡ m (mod n)
2. Trường hợp gcd (n, m) ≠ 1
Theo định lý phần dư trung hoa (Chinese Remainder Theorem), nếu p,q nguyên tố
cùng nhau thì:

x ≡ y (mod p ) và x ≡ y (mod q) → x ≡ y ( mod pq)
Do vậy ta cần chứng minh hai mệnh đề sau:
( me )d ≡ m ( mod p)
( me )d ≡ m ( mod q)
Vì gcd (n, m) ≠ 1 → gcd (n, m) = p hoặc gcd (n, m) = q
Giả sử gcd (n, m) = p ta có:
gcd (n, p) = p → m ≡ 0 (mod p) → ( me )d ≡ m ( mod p )
gcd (n, p) = 1 → ( me )d ≡ m ( mod p ) ( chứng minh tương tự như trong trường
hợp 1)
3.5. Sample code
import random
def is_prime(n):
return all([(n % j) for j in range(2, int(n ** 0.5) + 1)]) and n > 1
# Sinh ra số nguyên tố ngẫu nhiên trong [left, right) mà khác exclude
def random_prime(left, right, exclude = -1):
p = random.randint(left, right - 1);
if is_prime(p) and p != exclude:
return p
else:
return random_prime(left, right - 1, exclude)

Nhóm 7

19


Bài tập tiểu luận mơn ANM
# Thuật tốn tìm nghịch đảo modulo
# MMI(A, n) = x thỏa mãn (Ax) mod n = 1
MMI = lambda A, n,s=1,t=0,N=0: (n < 2 and t%N or MMI(n, A%n, t, s-A/n*t, N or

n),-1)[n<1]
# Thuật tốn sinh khóa
def rsa_generate():
p = random_prime(1, 255)
q = random_prime(1, 255, p)
n = p * q
t = (p - 1) * (q - 1)
e = random_prime(1, t)
d = MMI(e, t)
# Kết quả trả về bao gồm:
#

- Khóa cơng khai (n, e)

#

- Khóa bí mật (n, d)

return n, e, d
def rsa_encrypt(message, n, e):
return pow(message, e, n)
def rsa_decrypt(encrypt_message, n, d):
return pow(encrypt_message, d, n)

# Example
n, e, d = rsa_generate()
print 'n={0}, e={1}, d={2}'.format(n, e, d)
message = random.randint(1, n - 1)
print 'Original message: {0}'.format(message)
encrypted_message = rsa_encrypt(message, n, e)

print 'Encrypted message: {0}'.format(encrypted_message)
decrypted_message = rsa_decrypt(encrypted_message, n, d)
print 'Decrypted message: {0}'.format(decrypted_message)

Nhóm 7

20


Bài tập tiểu luận mơn ANM

3.6. Tính bảo mật.
Mức độ bảo mật của RSA phụ thuộc rất lớn vào khả năng phân tích thừa số nguyên
tố của các số lớn. Bởi vì chúng ta cung cấp public một cách rộng rãi, nếu việc phân tích
thừa số nguyên tố đơn giản, thì việc bị lộ private là khơng thể tránh khỏi.
Vì vậy, khi sinh khóa, chúng ta cần chọn các số nguyên tố p và q một cách ngẫu
nhiên. Bản thân hai số nguyên tố này cũng rất lớn, và để việc phân tích thừa số ngun
tố khó khăn hơn, hai số ngun tố này sẽ khơng có cùng độ dài. Trong tương lai gần, có
lẽ vẫn chưa có một phương pháp hiệu quả nào cho phép thực hiện điều này với các máy
tính cá nhân.
Tuy nhiên, với sự phát triển của cơng nghệ, các siêu máy tính xuất hiện ngày càng
nhiều. Cùng với chúng ta máy tính lượng tử cho phép tính tốn với tốc độ cao hơn rất
nhiều có thể sẽ phá vỡ sự bảo mật của RSA.
3.7. Tốc độ
RSA có tốc độ thực hiện chậm hơn đáng kể so với DES và các thuật tốn mã hóa
đối xứng khác. Trên thực tế, Bob sử dụng một thuật toán mã hóa đối xứng nào đó để mã
hóa văn bản cần gửi và chỉ sử dụng RSA đê mã hóa khóa để giải mã ( thơng thường khóa
ngắn hơn nhiều so với văn bản).
Phương thức này cũng tạo ra những vấn đề an ninh mới. Một ví dụ là cần phải tạo
ra khóa đối xứng thật sự ngẫu nhiên. Nếu khơng, kẻ tấn cơng ( thường kí hiệu là Eve) sẽ

bỏ qua RSA và tập trung vào việc đốn khóa đối xứng.)
4. Ứng dụng của hệ mật mã khóa cơng khai trong Blockchain.
4.1. Đặt vấn đề
Giả sử, Linh muốn trả cho Sơn 10000 VN đồng. Nếu Linh và Sơn sử dụng tiền
mặt thì lúc này Linh sẽ khơng cịn 10000 VN đồng sau khi giao dịch được diễn ra. Nhưng
nếu Linh sử dụng tiền số hóa thì vấn đề sẽ trở lên phức tạp hơn và dễ bị sao chép. Ví dụ,
Linh gửi bản mềm tiền số 10000 VN đồng cho Sơn qua email, sau đó Linh tiếp tục gửi
chính bản mềm tiền số 10000 VN đồng này cho Nguyên. Vấn đề này được gọi là
“Double-Spending” [3].

Hình 12: Bài tốn Double-Spending
Nhóm 7

21


Bài tập tiểu luận môn ANM

Một cách để giải quyết bài tốn này đó là phải có một bên thứ ba uy tín giữa Linh,
Sơn và những người khác trong giao dịch. Nhưng câu hỏi đặt ra đó là giải pháp này yêu
cầu một bên thứ ba uy tín và có sổ cái tập trung để quản lí, theo dõi tất cả các giao dịch
trong mạng – điều này đặt ra rất nhiều vấn đề và sự phức tạp. Và Bitcoin (với Blockchain
là công nghê đứng sau) ra đời – có thể giải quyết bài tốn này.
4.2. Blockchain và Bitcoin
Blockchain là một cơ sở dữ liệu phân tán – cho phép các giao dịch trực tiếp giữa
các các nhân, tổ chức một cách trực tiếp mà không cần cơ quan trung gian (ngân hàng,
chính phủ,…) [4].
Chuỗi khối Bitcoin giám sát tất cả giao dịch trong một mạng, và có các đặc điểm
sau:
• Phân tán: ổ cái được sao chép trên một số máy tính, thay vì được lưu trữ trên một

máy chủ trung tâm. Bất kỳ máy tính nào có kết nối internet đều có thể tải xuống
bản sao đầy đủ của blockchain.
• Mật mã học: Mật mã được sử dụng để đảm bảo rằng người gửi sở hữu bitcoin mà
người này đang cố gắng gửi và để quyết định cách các giao dịch được thêm vào
blockchain.
• Bất biến: Blockchain có thể được thay đổi theo kiểu ghi thêm vào. Nói cách khác,
các giao dịch chỉ có thể được thêm vào blockchain nhưng khơng thể bị xóa hoặc
sửa đổi những giao dịch trước đó trong chuỗi.
• Sử dụng Proof of Work (PoW): Người tham gia đặc biệt trong mạng được gọi là
miner cạnh tranh để tìm kiếm giải pháp cho một câu hỏi/đố mật mã sẽ cho phép
họ thêm một khối giao dịch vào chuỗi khối của Bitcoin. Điều này cho phép hệ
thống an tồn hơn.
4.3. Quy trình trao đổi Bitcoin sử dụng hệ mật mã khóa cơng khai.
Bước 1: Tạo một ví bitcoin. Một ví bitcoin chứa hai thơng tin chính: khóa bí mật
và khóa cơng khai. Thơng tin về số dư bitcoin được lưu trữ trên chuỗi khối bitcoin.
Bước 2: Tạo một giao dịch bitcoin. Nếu Alice muốn gửi một bitcoin tới Bob, Alice
cần kết nối tới ví của cơ ấy và sử dụng khóa bí mật; sau đó tạo một giao dịch chứa lượng
bitcoin Alice muốn gửi và địa chỉ công khai của Bob (chúng ta giả sử rằng khóa cơng
khai của Bob cũng chính là địa chỉ công khai của anh ấy).
Bước 3: Gửi giao dịch này tới toàn bộ mạng bitcoin.
Bước 4: Xác thực giao dịch. Một miner xem xét mạng bitcoin xác thực giao dịch
của Alice – đang sử dụng khóa cơng khai của cơ ấy (xác nhận rằng Alice có đủ số lượng
bitcoin), và thêm một bản ghi về chi tiết giao dịch này trong chuối khối bitcoin.
Bước 5: Khi giao dịch được xác nhận, miner sẽ gửi những thanh đổi của chuỗi khối
tới tất cả các miners trong mạng để chắc chắn rằng bản sao chép những thay đổi của
chuỗi khối đều được đồng bộ trong mạng.
Nhóm 7

22



Bài tập tiểu luận mơn ANM

Ngồi RSA, ECDSA cũng là một thuật tốn mật mã khóa cơng khai phổ biến – và
được sử dụng để khởi tạo ví Bitcoin. Để gửi hoặc nhận các Bitcoins, người dùng bắt đầu
bằng cách tạo một ví chứa một cặp khóa bí mật và khóa cơng khai. Nếu Alice muốn gửi
cho Bob một số BTC, cơ ấy sẽ tạo một giao dịch trong đó cơ ấy nhập cả khóa cơng khai
của cơ ấy và Bob cùng số lượng BTC cô ấy muốn gửi. Sau đó, cơ ấy ký giao dịch bằng
khóa bí mật của mình. Một máy tính trên blockchain sử dụng khóa cơng khai của Alice
để xác minh rằng giao dịch là xác thực và thêm giao dịch vào một khối mà sau này sẽ
được thêm vào blockchain.

Hình 13: Quá trình xác thực một giao dịch trong Blockchain.
4.4. Thực hiện demo Blockchain sử dụng ngơn ngữ lập trình Python.
4.4.1. Các tính năng
Ở phần này, nhóm sẽ triển khai một blockchain cơ bản và một blockchain.
Blockchain bao gồm các tính năng:
• Proof of Work (PoW)
• Giao dịch sử dụng mã hóa RSA
Blockchain client bao gồm các tính năng:
• Khởi tạo ví sử dụng các cặp khóa cơng khai/bí mật (sử dụng thuật tốn RSA)
• Khởi tạo giao dịch sử dụng mã hóa RSA
Bên cạnh đó, nhóm em cũng triển khai hai bảng điều khiển:
• Cho miners
• Cho các client để tạo các ví và gửi coins.
4.4.2. Triển khai và đánh giá kết quả
Nhóm chúng em thực hiện triển khai trên hệ điều hành Ubuntu 20.04, sử dụng
Python 3.8, thư viện Flask 1.1.2 để tạo dựng web giám sát trực quan.
Đầu tiên, thực hiện bật hai bảng điểu khiển cho Blockchain clients và Blockchain
node.

Nhóm 7

23


Bài tập tiểu luận mơn ANM

Hình 14: Mở hai bảng điều khiển Blockchain client và Blockchain node
Sau đó, tại bảng điều khiển của Alice và Bob, ta thực hiện tạo ví tiền điện tử cho
hai người sử dụng này:

Hình 15: Khởi tạo ví cho Alice

Hình 16: Khởi tạo ví cho Bob

Nhóm 7

24


Bài tập tiểu luận môn ANM

Lúc này, Alice muốn gửi cho Bob 10 bitcoin. Lúc này, để giao dịch Alice cần nhập
khóa riêng tư (chỉ riêng Alice mới biết giá trị này) và khóa cơng khai của mình – cùng
với số coin muốn gửi và địa chỉ của Bob (chính là khóa cơng khai của Bob).

Hình 17: Alice thực hiện giao dịch với Bob
Sau đó, nhấn “Confirm Transaction” để xác nhận Alice muốn giao dịch. Lúc này,
giao dịch của Alice chứa các nội dung về địa chỉ người gửi, nhận và nodes cùng với
được kí số bằng địa chỉ bí mật của Alice; sau đó được gửi đến tồn mạng.


Nhóm 7

25


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×