Professional Documents
Culture Documents
Bao Cao Do An
Bao Cao Do An
ĐỒ ÁN THIẾT KẾ 1
Đề tài:
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:
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
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
• Đầ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.
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.
• 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
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.
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.
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.
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ã
• 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
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(𝑚𝑜𝑑(𝜑(𝑛)).
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
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
Đúng
a=a mod b
Kết thúc
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
14
Chứng minh:
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.
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 𝐶 = 𝑀𝐸 𝑚𝑜𝑑𝑁
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.
Bắt đầu
Đặt C=1,𝐸 ′ =0
𝐸 ′ ++
𝐶 = (𝑀 ∗ 𝐶 )𝑚𝑜𝑑𝑁
Đúng
𝐸′ ≤ 𝐸
Sai
Kết thúc
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:
𝑐 𝑑 𝑚𝑜𝑑 (𝑛) = 𝑚
17
CHƯƠNG III: XÂY DỰNG CHƯƠNG TRÌNH
3.1 Sơ đồ hoạt động
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
18
3.2 Mô phỏng chuong trình
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
20
-Khi nhập đúng và chạy
21
-Bảng mã hóa
22
-Giải mã
-Khi nhấn nút gợi ý ( file text được tạo ra mặc định ở ổ D)
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.
[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
26