You are on page 1of 26

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

VIỆN ĐIỆN TỬ -VIỄN THÔNG

ĐỒ ÁN THIẾT KẾ 1
Đề tài:

MÔ PHỎNG THUẬT TOÁN MÃ HÓA CÔNG KHAI


RSA

Sinh viên thực hiện: Đoàn Kim Nguyên


Lớp: CN-ĐT 03-K60
Giảng viên hướng dẫn : Ths.Tạ Thị Kim Huệ

Hà Nội, 12-2017.

1
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN TỬ -VIỄN THÔNG

ĐỒ ÁN THIẾT KẾ 1
Đề tài:

MÔ PHỎNG THUẬT TOÁN MÃ HÓA CÔNG KHAI


RSA

Sinh viên thực hiện: Đoàn Kim Nguyên


Lớp: CN-ĐT 03-K60
Giảng viên hướng dẫn : Ths.Tạ Thị Kim Huệ
Cán bộ phản biện:

2
Hà Nội, 12-2017.
LỜI NÓI ĐẦU
Trong mọi lĩnh vực như kinh tế, chính trị, quân đội... luôn có sự trao đổi thông tin
giữa các tổ chức, cá nhân , các công ty, quốc gia với nhau.Ngày nay, với sự phát
triển mạnh mẽ và phổ biến của internet, việc truyền tải thông tin diễn ra nhanh
chóng và dễ dàng hơn bao giờ hết. Cùng với sự tiện lợi của internet mang lại,vấn đề
bảo mật trong truyền tải thông tin ,đặc biệt quan trọng đối với những thông tin liên
quan đến chính trị, quân sự ,kinh tế... được đặt lên hàng đầu.Vì vậy ngành khoa học
về nghiên cứu mã hóa thông tin được phát triển.

Hệ mã hóa RSA được Rivest, Shamir và Adleman phát triển, là 1 thuật toán mã
hóa công khai.Nó đánh dấu bước tiến hóa vượt bậc trong lĩnh vực mật mã học sử
dụng khóa công khai. Trong phạm vi của đồ án, chúng ta sẽ mô phỏng hệ mã hóa
RSA và tìm hiểu các thuật toán để tạo ra nó.

Qua đây, em xin chân thành cảm ơn cô Ths.Tạ Thị Kim Huệ đã hướng dẫn em hoàn
thành đồ án này.

3
MỤC LỤC
TÓM TẮT ĐỒ ÁN......................................................................................................5
CHƯƠNG I: CƠ SỞ LÝ THUYẾT ............................................................................6
1.1 Giới thiệu chung. ...............................................................................................6
1.1.1 Mã hóa đối xứng (mã hóa không công khai) .............................................6
1.1.2 Mã hóa bất đối xứng (mã hóa công khai) ..................................................7
1.2 Giới thiệu về Hệ mã hóa RSA ...........................................................................8
1.3 Mô tả sơ lược thuật toán mã hóa RSA ..............................................................9
1.4 Mô tả hoạt động. ..............................................................................................9
1.5 Các định lý, định nghĩa được sử dụng...........................................................9
1.5.1 Giải thuật Euclid mở rộng ..........................................................................9
1.5.2 Phi-Hàm số EULER .................................................................................10
1.5.3 Định lý EULER ........................................................................................10
1.5.2 Định lý nhỏ của Fermat ............................................................................10
CHƯƠNG II THIẾT KẾ MẬT MÃ DỰA TRÊN CƠ SỞ TOÁN HỌC ..................11
2.1 Sinh khóa .........................................................................................................11
2.2 Mã hóa. ............................................................................................................15
2.3 Giải mã ............................................................................................................17
2.4 Chứng minh toán học của quá trình mã hóa và giải mã ..................................17
CHƯƠNG III: XÂY DỰNG CHƯƠNG TRÌNH .....................................................18
3.1 Sơ đồ hoạt động...............................................................................................18
3.2 Mô phỏng chuong trình ...................................................................................19
3.2 Hoàn thiện chương trình .................................................................................20
Kết luận .....................................................................................................................25
Tài liệu tham khảo .....................................................................................................25
PHỤ LỤC ..................................................................................................................26

4
TÓM TẮT ĐỒ ÁN
Mục đích của đồ án là để chỉ ra cớ sở lý thuyết, các bước, các thuật toán hình thành
lên hệ mã hóa RSA, tạo ra 1 ứng dụng đơn giản giúp bên thứ ba( khách hàng ) có
thể dễ dàng mã hóa và giải mã 1 chuỗi số có độ lớn vừa và nhỏ.Với các chuỗi số lớn
trong mã hóa thực tế, cần phải có thêm nhiều thời gian để tìm hiểu và phát triển hơn
nữa.

5
CHƯƠNG I: CƠ SỞ LÝ THUYẾT
1.1 Giới thiệu chung.
Trong thời đại hiện nay, khi mà Internet bùng nổ mạnh mẽ, việc trao đổi thông tin
tiện lợi và nhanh chóng hơn hết

Hình 1.1 Trao đổi thông tin thông thường

Nhưng khi trao đổi thông tin trên môi trường thiếu tín an toàn trên Internet, nhất là
với những thông tin quan trọng về các lĩnh vực quân sự, ngân hàng, chính trị... rất
có thể bạn sẽ bị tấn công bởi hacker vì tính bảo mật thấp. Vì vậy, ngành khoa học
nghiên cứu về mã hóa thông tin phát triển.Việc mã hóa thông tin, hiểu đơn giản là
sử dụng các thuật toán làm thông tin biến dạng khi đó chỉ có thể người gửi và người
nhận đọc được, còn người ngoài dù nhận được thông tin cũng khó có thể hiểu ra.

Hình 1.2 Trao đổi thông tin theo phương thức mã hóa

Với phương pháp mã hóa, nếu không biết được một phương thức hay một thỏa
thuận nào giữa A và B, bên thứ 3 không thể đọc được dù có lấy được bản mã.Như
vậy, thông tin được bảo toàn

1.1.1 Mã hóa đối xứng (mã hóa không công khai)


Mã hóa đối xứng (Hay còn gọi là mã hóa không công khai) là phương pháp mã
hóa mà key mã hóa và key giải mã là như nhau (Sử dụng cùng một secret key để mã
hóa và giải mã). Đây là phương pháp thông dụng nhất hiện nay dùng để mã hóa dữ
liệu truyền nhận giữa hai bên. Vì chỉ cần có secret key là có thể giải mã được, nên
bên gửi và bên nhận cần làm một cách nào đó để cùng thống nhất về secret key.

Để thực hiện mã hóa thông tin giữa hai bên thì:

• Đầu tiên bên gửi và bên nhận bằng cách nào đó sẽ phải thóa thuận secret key
(khóa bí mật) được dùng để mã hóa và giải mã. Vì chỉ cần biết được secret

6
key này thì bên thứ ba có thể giải mã được thông tin, nên thông tin này cần
được bí mật truyền đi (bảo vệ theo một cách nào đó).
• Sau đó bên gửi sẽ dùng một thuật toán mã hóa với secret key tương ứng để
mã hóa dữ liệu sắp được truyền đi. Khi bên nhận nhận được sẽ dùng chính
secret key đó để giải mã dữ liệu.

Hình 1.3 Sơ đồ mật mã đối xứng

Vấn đề lớn nhất của phương pháp mã hóa đối xứng là làm sao để “thỏa thuận”
secret key giữa bên gửi và bên nhận, vì nếu truyền secret key từ bên gửi sang bên
nhận mà không dùng một phương pháp bảo vệ nào thì bên thứ ba cũng có thể dễ
dàng lấy được secret key này.

1.1.2 Mã hóa bất đối xứng (mã hóa công khai)


Mã hóa bất đối xứng (Hay còn gọi là mã hóa khóa công khai) là phương pháp mã
hóa mà key mã hóa (lúc này gọi là public key – khóa công khai) và key giải mã (lúc
này gọi là private key – khóa bí mật) khác nhau. Nghĩa là key ta sử dụng để mã
hóa dữ liệu sẽ khác với key ta dùng để giải mã dữ liệu. Tất cả mọi người đều có thể
biết được public key (kể cả hacker), và có thể dùng public key này để mã hóa thông
tin. Nhưng chỉ có người nhận mới nắm giữ private key, nên chỉ có người nhận mới
có thể giải mã được thông tin.

Để thực hiện mã hóa bất đối xứng thì:

• Bên nhận sẽ tạo ra một gặp khóa (public key và private key). Bên nhận sẽ dữ
lại private key và truyền cho bên gửi public key. Vì public key này là công
khai nên có thể truyền tự do mà không cần bảo mật.
• Bên gửi trước khi gửi dữ liệu sẽ mã hóa dữ liệu bằng thuật toán mã hóa bất
đối xứng với key là public key từ bên nhận.
• Bên nhận sẽ giải mã dữ liệu nhận được bằng thuật toán được sử dụng ở bên
gửi, với key giải mã là private key.

7
Hình 1.4 Sơ đồ mật mã công khai

Mã hóa bất đối xứng khắc phục được nhược điểm lớn nhất của mã hóa đối
xứng.Tuy nhiên, điểm yếu lớn nhất của mã hóa bất đối xứng là tốc độ mã hóa và
giải mã rất chậm so với mã hóa đối xứng, nếu dùng mã hóa bất đối xứng để mã hóa
dữ liệu truyền – nhận giữa hai bên thì sẽ tốn rất nhiều chi phí.

Do đó, ứng dụng chỉnh của mã hóa bất đối xứng là dùng để bảo mật secret key cho
mã hóa đối xứng: Ta sẽ dùng phương pháp mã hóa bất đối xứng để truyền secret
key của bên gửi cho bên nhận. Và hai bên sẽ dùng secret key này để trao đổi thông
tin bằng phương pháp mã hóa đối xứng.

Trong phạm vi của đồ án, chúng ta sẽ tìm hiểu về Hệ mã hóa bất đối xứng RSA

1.2 Giới thiệu về Hệ mã hóa RSA


RSA được Rivest, Shamir và Adleman phát triển, là một thuật toán mật mã hóa
công khai.Nó đánh dấu một sự tiến hóa 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 khai.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 đủ lớn.

Thuật toá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ào năm 1973, Clifford Cocks, một nhà toán học người Anh làm việc tại
GCHQ(Government Communications Headquarters), đã mô tả một thuật toán
tương tự. Với khả năng tính toán tại thời điểm đó thì thuật toá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 toán học trừu tượng lại có thể áp dụng
thự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 có ai
nghĩ rằng khái niệm này lại có thể hữu dụng vào lĩnh vực truyên thông.Ngày nay,
con người từng bước tìm ra được những số nguyên tố rất lớn có thể củng cố vững
chắc tính bảo mật của hệ mã hóa này.

8
1.3 Mô tả sơ lược thuật toán mã hóa RSA
Thuật toán RSA có hai khóa: khóa công khai (hay khóa công cộng) và khóa bí
mật (hay khóa cá nhân). 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. Những thông tin được mã hóa bằng khóa công khai chỉ có thể được giải
mã bằng khóa bí mật tương ứng. Nói cách khác, mọi người đều có thể mã hóa
nhưng chỉ có người biết khóa cá nhân (bí mật) mới có thể giải mã được.
1.4 Mô tả hoạt động.
Thuật toán RSA có 2 khóa:
• Khóa công khai(Public key):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(Private key):Thông tin được mã hóa bằng khóa công khai chỉ
có thể được giải mã bằng khóa bí mật tương ứng.

Hình 1.5 Cách thức hoạt động của thuật toán.


1.5 Các định lý, định nghĩa được sử dụng.

1.5.1 Giải thuật Euclid mở rộng


Giải thuật Euclid mở rộng sử dụng để giải một phương trình vô định nguyên có
dạng :𝑎 ∗ 𝑥 + 𝑏 ∗ 𝑦 = 𝑐,

Trong đó a,b,c là các hệ số nguyên, x,y là các ẩn nhận giá trị nguyên.Điều kiện cần
và đủ để phương trình này có nghiệm (nguyên) là UCLN(a,b) là ước của c.Khẳng
định dựa trên mệnh đề sau: Trong số học đã biết rằng nếu d=UCLN(a,b) thì tồn tại
các số nguyên sao cho : 𝑎 ∗ 𝑥 + 𝑏 ∗ 𝑦 = 𝑑

9
1.5.2 Phi-Hàm số EULER
𝜑(𝑛) - là hàm số Euler được định nghĩa là số các số nguyên dương nhỏ hơn bằng
N,nguyên tố cùng nhau với N. Ví dụ 𝜑(8) gồm 1,3,5,7 ,vậy ta có 𝜑(8) =4.

Hình 1.6 1000 giá trị đầu tiên của 𝜑(𝑛)

Người ta chứng minh được 𝜑(𝑝)= {1....p-1},với p là một số nguyên tố và

𝜑(𝑎) ∗ 𝜑(𝑏) = 𝜑(𝑎 ∗ 𝑏) với a, b là 2 số nguyên tố

1.5.3 Định lý EULER


Định lý Euler phát biểu rằng nếu n là số nguyên dương bất kỳ và a là số nguyên tố
cùng nhau với n, thì: 𝑎𝜑(𝑛) ≡ 1 (𝑚𝑜𝑑 𝑛)

trong đó 𝜑(𝑛) là ký hiệu của Hàm số Euler đếm số các số nguyên giữa 1 và n
nguyên tố cùng nhau với n. Đây là tổng quát hóa của Định lý nhỏ của Fermat vì
nếu n = p là số nguyên tố thì 𝜑(𝑝) = 𝑝 − 1

Định lý này có thể được sử dụng để dễ dàng giản ước với mô-đun n rất lớn. Ví dụ
tìm chữ số tận cùng của số 7222 .

7222 ≡ 74∗55+2 ≡ 155 ∗ 49 ≡ 9( 𝑚𝑜𝑑 10) 𝑣ớ𝑖 𝜑(10) = 4 . Vậy 7222 có chữ số tận
cùng là 9.

1.5.2 Đị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 cho p sẽ có số dư chính
bằng a:𝑎𝑝 ≡ 𝑎(𝑚𝑜𝑑 𝑝) hay 𝑎𝑝−1 ≡ 1 𝑚𝑜𝑑 (𝑝).

10
CHƯƠNG II THIẾT KẾ MẬT MÃ DỰA TRÊN CƠ SỞ TOÁN
HỌC
Sơ đồ khối của chương trình gồm 3 khối chính:Sinh khóa, Mã hóa và Giải mã

Hình 2.1 Sơ đồ khối của hệ thống

• Người gửi(A):Nhận khóa công khai từ người nhận , sau đó mã hóa thông tin
với khóa công khai rồi gửi
• Người nhận(B):Nhận bản mã rồi dùng khóa bí mật của mình để giải mã lấy
thông tin

2.1 Sinh khóa


Đầu tiên B phải tạo một cặp khóa gồm khóa bí mật và khóa công khai theo các bước
sau:

1. Chọn 2 số nguyên tố lớn P và Q với P≠ 𝑄, lựa chọn ngẫu nhiên và đọc lập
2. Tính 𝑛 = 𝑃 ∗ 𝑄
3. Tính giá trị hàm EULER: 𝜑(𝑛) = 𝜑(𝑃 − 1) ∗ 𝜑(𝑄 − 1)
4. Chọn một số tự nhiên e sao cho 1 < 𝑒 < 𝜑(𝑛) và là số nguyên tố cùng nhau
với 𝜑(𝑛)
5. Tính d sao cho 𝑑 ∗ 𝑒 ≡ 1(𝑚𝑜𝑑(𝜑(𝑛)).

Khóa công khai (dùng để mã hóa): n và e(số mũ mã hóa)

Khóa bí mật ( dùng để giải mã): n và d(số mũ giải mã)

Thuật toán của các hàm sử dụng:

1. Kiểm tra số nguyên tố:


-Nếu ta có số N=a*b.
Ví dụ:N=36={1,36},{2,18},{3,12},{4,9},{6,6},{9,4},{12,3},{18,2},{36,1}.
-Quan sát ví dụ trên ta thấy các cặp số sẽ lặp lại sau khi a=b,vậy

11
+Nếu 𝑎 = 𝑏 → 𝑁 = 𝑎2 → 𝑎 = √𝑁
+Nếu 𝑎 > 𝑏 → 𝑎 > √𝑁, 𝑏 < √𝑁
+Nếu 𝑎 < 𝑏 → 𝑎 < √𝑁, 𝑏 > √𝑁
-A hoặc B,1 trong 2 phải lớn hơn √𝑁 ,cái còn lại phải nhỏ hơn. Từ đó ta chỉ
cần tìm trong khoảng [ 3, √𝑁] ,nếu N chia hết 1 số trong khoảng [ 3, √𝑁] thì
số nhập vào không phải số nguyên tố.

Bắt đầu

Nhập số A,
i=1

Tạo mảng số tự
nhiên từ 2 đến √𝐴

Tính A%i
Đúng, i++

A%i≠
0 𝑣à 𝑖 <
√𝐴

Sai

Kết thúc

Hình 2.2 Sơ đồ kiểm tra số nguyên tố

12
2. Kiểm tra 2 số nguyên tố cùng nhau:
-Áp dụng thuật toán Euclid để tìm ước chung lớn nhất của 2 số, nếu ước
chung tìm được bằng 1 thì kết luận 2 số nguyên tố cùng nhau.Sử dụng hàm
này để chọn khóa công khai e.

Bắt đầu

Nhập a và b nguyên
dương

𝑎 ≠ 0 𝑣à 𝑏 ≠ 0

Đúng

Sai a>b Sai b=b mod a

Đúng

a=a mod b

Nếu a hoặc b bằng


1 thì a và b là
NTCN

Kết thúc

Hình 2.3 Sơ đồ kiểm tra 2 số nguyên tố cùng nhau

13
3. Thuật toán thuật toán Euclidean mở rộng
-Với a và b là 2 số nguyên tố cùng nhau, ta luôn tìm được số đối ngẫu c của a
sao cho 𝑎 ∗ 𝑥 + 𝑏 ∗ 𝑦 = 𝑐 .Trong đó a, b, c là các hệ số nguyên, x, y là các
ẩn nhận giá trị nguyên .Thuật toán thuật toán Euclidean mở rộng được sử
dụng để tìm khóa bí mật d

Bắt đầu

Nhập a,m

xa=1,xm=0

q=a/m
m>0
xr=xa=q*xm
Đúng
xa=xm

xm=xr Sai

r=a mod m

a=m

m=r

Sai
xa>0

Đúng xa=xa+m

Kết thúc

Hình 2.4 Sơ đồ tìm khóa bí mật

14
Chứng minh:

• Trong bước 4, với 2 số nguyên tố P và Q ta có tập hợp số của


𝜑(𝑛)=𝜑(𝑃 ) ∗ 𝜑(𝑄)={1,2,...(P-1)*(Q-1)}, vậy nên e có thể chọn ngẫu nhiên
sao cho 1 < 𝑒 < 𝜑(𝑛)
• Trong bước 5, với e và 𝜑(𝑛) là 2 số nguyên tố cùng nhau ta luôn tìm được số
đối ngẫu của e sao cho 𝑑 ∗ 𝑒 ≡ 1 𝑚𝑜𝑑(𝜑(𝑛)) bằng cách sử dụng thuật toán
Euclidean mở rộng theo dạng: .𝜑(𝑛) ∗ 𝑦 + 𝑑 ∗ 𝑒 = 1

2.2 Mã hóa.
Người gửi(A) nhận được khóa công khai(n,e) từ B , với tin nhắn m của mình, A sử
dụng công thức:
𝑚𝑒 𝑚𝑜𝑑(𝑛) = 𝑐

Và gửi cho B .

Trong mã hóa và cả giải mã, chúng ta thấy nếu cứ làm theo cách mũ hóa thông
thường, giá trị của lượng tin được mũ hóa rất lớn, chương trình không thể tính toán
được, vì vậy phải dùng phương thức khác.Sau đây là phương thức sử dụng vòng
lặp, tuy có nhiều phép toán được thực hiện nhưng nó sẽ giảm đáng kể giá trị mũ hóa
và có thể dễ dàng thực hiện.

-Nếu C=A*B, ta có nhận xét sau:


+𝐶𝑚𝑜𝑑𝑀 = (𝐴 ∗ 𝐵)𝑚𝑜𝑑𝑀

↔ 𝐶𝑚𝑜𝑑𝑀 = [(𝐴𝑚𝑜𝑑𝑀 ) ∗ (𝐵𝑚𝑜𝑑𝑀 )]modM

-Thuật toán sử dụng như sau:

1. Đặt C=1,𝐸 ′ =0
2. Tăng 𝐸 ′ bởi 1
3. Tính 𝐶 = (𝑀 ∗ 𝐶 )𝑚𝑜𝑑𝑁
4. Nếu 𝐸 ′ ≤ 𝐸, lặp lại từ bước 2.Nếu 𝐸 ′ >E thì C là kết quả của 𝐶 = 𝑀𝐸 𝑚𝑜𝑑𝑁

-Ví dụ: với M=4, E=13, N=497.

• E′ = 1. C = (1 ⋅ 4) mod 497 = 4 mod 497 = 4.


• E′ = 2. C = (4 ⋅ 4) mod 497 = 16 mod 497 = 16.
• E′ = 3. C = (16 ⋅ 4) mod 497 = 64 mod 497 = 64.
• E′ = 4. C = (64 ⋅ 4) mod 497 = 256 mod 497 = 256.
• E′ = 5. C = (256 ⋅ 4) mod 497 = 1024 mod 497 = 30.
• E′ = 6. C = (30 ⋅ 4) mod 497 = 120 mod 497 = 120.
• E′ = 7. C= (120 ⋅ 4) mod 497 = 480 mod 497 = 480.
• E′ = 8. C = (480 ⋅ 4) mod 497 = 1920 mod 497 = 429.

15
• E′ = 9. C= (429 ⋅ 4) mod 497 = 1716 mod 497 = 225.
• E′ = 10. C = (225 ⋅ 4) mod 497 = 900 mod 497 = 403.
• E′ = 11. C = (403 ⋅ 4) mod 497 = 1612 mod 497 = 121.
• E′ = 12. C = (121 ⋅ 4) mod 497 = 484 mod 497 = 484.
• E′ = 13. C= (484 ⋅ 4) mod 497 = 1936 mod 497 = 445.

Vậy ta được 413 𝑚𝑜𝑑497 = 445

Bắt đầu

Đặt C=1,𝐸 ′ =0

𝐸 ′ ++

𝐶 = (𝑀 ∗ 𝐶 )𝑚𝑜𝑑𝑁
Đúng

𝐸′ ≤ 𝐸

Sai

Kết thúc

Hình 2.5 Sơ đồ thuật toán hàm tính modulo

16
2.3 Giải mã

Nhận được bản mã từ A, B sử dụng thuật toán tương tự với khóa bí mật(n,d) theo
công thức:

𝑐 𝑑 𝑚𝑜𝑑 (𝑛) = 𝑚

B nhận được thông tin từ A, hoàn thành chương trình.


2.4 Chứng minh toán học của quá trình mã hóa và giải mã
Trong quá trình mã hóa và giải mã ta có,𝑚𝑒 𝑚𝑜𝑑(𝑛) = 𝑐, 𝑐 𝑑 𝑚𝑜𝑑 (𝑛) = 𝑚.Vậy ta
được:
𝑑
(𝑚𝑒 𝑚𝑜𝑑(𝑛)) 𝑚𝑜𝑑(𝑛) ↔ 𝑚𝑒𝑑 𝑚𝑜𝑑(𝑛)

• Ta có 𝑑 ∗ 𝑒 ≡ 1(𝑚𝑜𝑑(𝜑(𝑛)) ↔ 𝑑 ∗ 𝑒 ≡ 1(𝑚𝑜𝑑(𝜑(𝑃) ∗ 𝜑(𝑄)).


𝑑 ∗ 𝑒 ≡ 1(𝑚𝑜𝑑(𝜑(𝑃))
• {
𝑑 ∗ 𝑒 ≡ 1(𝑚𝑜𝑑(𝜑(𝑄))
• Với phương trình 𝑑 ∗ 𝑒 ≡ 1(𝑚𝑜𝑑(𝜑(𝑃)) có nghĩa là sẽ có 1 số k thỏa mãn
𝑑 ∗ 𝑒 − 1 = 𝑘𝜑(𝑃) hay 𝑑 ∗ 𝑒 − 1 = 𝑘 (𝑃 − 1)
• Giờ ta lấy 𝑚𝑒𝑑 ≡ 𝑚𝑒𝑑−1+1 (𝑚𝑜𝑑(𝑃)) hay 𝑚𝑒𝑑 = [𝑚𝑘(𝑃−1) ∗ 𝑚]𝑚𝑜𝑑(𝑃)
• Với P là số nguyên tố, M là bất kì số nào cũng sẽ là số nguyên tố cùng nhau
với P, sử dụng định lý nhỏ của Fermat ta được 𝑚𝑃−1 ≡ 1(𝑚𝑜𝑑(𝑃)) hay
𝑚𝑘(𝑃−1) ≡ 1𝑘 ≡ 1(𝑚𝑜𝑑 (𝑃)). Vậy ta có được 𝑚𝑒𝑑 ≡ 𝑚(𝑚𝑜𝑑(𝑃))
• Trong trường hợp M là bội số của P thì 𝑚𝑒𝑑 ≡ 0(𝑚𝑜𝑑 (𝑃)) mà
0(𝑚𝑜𝑑(𝑃 )) ≡ 𝑚(𝑚𝑜𝑑(𝑃)) vậy 𝑚𝑒𝑑 ≡ 𝑚(𝑚𝑜𝑑(𝑃))
• Làm tương tự với phương trình 𝑑 ∗ 𝑒 ≡ 1(𝑚𝑜𝑑(𝜑(𝑄))ta được 𝑚𝑒𝑑 ≡
𝑚(𝑚𝑜𝑑(𝑄 )).
• Vì P và Q là 2 số nguyên tố cùng nhau nên :
𝑚𝑒𝑑 ≡ 𝑚(𝑚𝑜𝑑 (𝑃 ∗ 𝑄)) ≡ 𝑚(𝑚𝑜𝑑 (𝑁)) .Như vậy ta đã chứng minh được
nguyên lý hoạt động của các thuật toán.

17
CHƯƠNG III: XÂY DỰNG CHƯƠNG TRÌNH
3.1 Sơ đồ hoạt động

Bắt đầu chương trình

Nhập các số q,p tạo khóa d


và e

Lưu lại các khóa vào file


Khóa text (a.txt) Khóa bí
công mật d
khai(n,e)
Main text
trong a.txt

Mã hóa Giải mã
b.txt

Bản mã
Main text

Mạng
Lưu bản mã trong
file b.txt
Kết thúc trương
trình
b.txt

Hình 3.1 Sơ đồ hoạt động của chương trình

18
3.2 Mô phỏng chuong trình

Hình 3.2 Khởi tạo chương trình

Hình 3.3 Giao diện mã hóa

19
• Biến đầu vào của chương trình (thông tin ) là 1 chuỗi số, sau khi mã hóa (bản
mã) là 1 chuỗi số, biến đầu ra sau khi giải mã( thông tin) là chuỗi số bằng với
đầu vào
• Chương trình cho phép chọn các số nguyên tố phù hợp, nếu chọn sai báo lỗi
để người dùng chọn lại bằng nút Chọn số. Lưu các giá trị khóa vào 1 file text
bằng nút Lưu lại
• Mã hóa thông tin: mở ra cửa sổ mã hóa bằng nút Encrypt. Nhập thông tin
và mã hóa thông tin
• Giải mã thông tin.
• Khi gặp khó khăn với việc chọn số nguyên tố , người dùng nhập vào ô giá trị
muốn lấy bên cạnh nút Gợi ý và nhấn nút Gợi ý để lấy ra 1 file text gồm các
giá trị từ 2 đến số nguyên tố gần nhất so với giá trị nhập vào .
• Các file text a.txt,b.txt,GoiY.txt lưu mặc định vào ổ D của Windows
3.2 Hoàn thiện chương trình

-Khi nhập sai.

Hình 3.4 Nhập sai

20
-Khi nhập đúng và chạy

Hình 3.5 Chạy trương trình với đầu vào chuẩn

-file text lưu các khóa sau khi ấn Lưu lại.

Hình 3.6 Text lưu các khóa

21
-Bảng mã hóa

Hình 3.7 Mã hóa

-File text lưu lại bản mã

Hình 3.8 Bản mã

22
-Giải mã

Hình 3.9 Giải mã thành công

-Khi nhấn nút gợi ý ( file text được tạo ra mặc định ở ổ D)

Hình 3.10 Tạo gợi ý

23
Hình 3.11 Các số nguyên tố trong file GoiY.txt

24
Kết luận
Qua bản báo cáo cho ta cái nhìn tổng quát nhất, cụ thể nhất và đơn giản nhất về cơ
sở lý thuyết, cách thức hoạt động của hệ mã hóa RSA,các định lý xoay quanh ,giúp
ta từng bước hình thành và mô phỏng cách thức hoạt động của hệ mã. Tuy nhiên,
chương trình vẫn còn khá thô sơ, chỉ có thể mã hóa chuỗi số với giá trị vừa và
nhỏ,chưa có khả năng mã hóa chuỗi số sang chuỗi kí tự ....,do đó vẫn chưa có khả
năng ứng dụng đủ tốt vào thực tiễn.Để ứng dụng vào thực tiễn đòi hỏi cần tìm
hiểu,phát triển công phu hơn nữa,cách thức mã hóa với giá trị số lớn, chuyển đổi mã
hóa tin sang các kí tự phức tạp,cách thức trao đổi khóa giữa người nhận và người
gửi....Trên đây là những kết luận khi thực hiện đồ án,còn nhiều thiếu sót xin nhận
các ý kiến đóng góp để em tiếp tục phát triển hơn .Em xin cảm ơn.

Tài liệu tham khảo


[1] https://www.di-mgt.com.au/rsa_alg.html

[2]https://www.youtube.com/watch?v=wXB-V_Keiu8&t=136s

[3]https://math.stackexchange.com/questions/1242732/how-is-de-1-mod-
%CF%95n-calculated.

25
PHỤ LỤC
Hình 1.1 Trao đổi thông tin thông thường...............................................................6

Hình 1.2 Trao đổi thông tin theo phương thức mã hóa...........................................6

Hình 1.3 Sơ đồ mật mã đối xứng............................................................................7

Hình 1.4 Sơ đồ mật mã công khai...........................................................................8


Hình 1.5 Cách thức hoạt động của thuật toán.........................................................9

Hình 1.6 1000 giá trị đầu tiên của 𝜑(𝑛).................................................................10

Hình 2.1 Sơ đồ khối của hệ thống...........................................................................11

Hình 2.2 Sơ đồ kiểm tra số nguyên tố.....................................................................12

Hình 2.3 Sơ đồ kiểm tra 2 số nguyên tố cùng nhau................................................13

Hình 2.4 Sơ đồ tìm khóa bí mật..............................................................................14

Hình 2.5 Sơ đồ thuật toán hàm tính modulo...........................................................16

Hình 3.1 Sơ đồ hoạt động của chương trình...........................................................18

Hình 3.2 Khởi tạo chương trình..............................................................................19

Hình 3.3 Giao diện mã hóa.....................................................................................19

Hình 3.4 Nhập sai...................................................................................................20


Hình 3.5 Chạy trương trình với đầu vào chuẩn......................................................21

Hình 3.6 Text lưu các khóa.....................................................................................21

Hình 3.7 Mã hóa.....................................................................................................22

Hình 3.8 Bản mã.....................................................................................................22

Hình 3.9 Giải mã thành công..................................................................................23

Hình 3.10 Tạo gợi ý................................................................................................23

Hình 3.11 Các số nguyên tố trong file GoiY.txt.....................................................24

26

You might also like