1. Trang chủ
  2. » Luận Văn - Báo Cáo

bài tập lớn cuối kì môn cấu trúc rời rạc rsa cryptosystem using modular arithmetic

32 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề RSA Cryptosystem Using Modular Arithmetic
Tác giả Nguyên Triệu Vi
Người hướng dẫn GV Trần Lương Quốc Đại
Trường học Trường Đại học Tôn Đức Thắng
Chuyên ngành Cấu trúc rời rạc
Thể loại Bài tập lớn cuối kì
Năm xuất bản 2023
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 32
Dung lượng 1,9 MB

Nội dung

Hệ mật mã được xây dựng dựa trên tính khó giải của bài toán phân tích một số thành thừa số nguyên tổ hay còn gọi là bài toán RSA.. 2.1 Cơ sở toán học Thuật toán lũy thừa: » Là thuật toá

Trang 1

TONG LIEN DOAN LAO DONG VIET NAM

TRUONG DAI HOC TON DUC THANG

KHOA CONG NGHE THONG TIN

BÀI TẬP LỚN CUOI ki MON CAU TRUC ROT RAC

RSA CRYPTOSYSTEM USING

Trang 2

TONG LIEN DOAN LAO DONG VIET NAM

TRUONG DAI HOC TON DUC THANG

KHOA CONG NGHE THONG TIN

r—/ LỄ

BÀI TẬP LỚN CUOI ki MON CAU TRUC ROT RAC

RSA CRYPTOSYSTEM USING

MODULAR ARITHMETIC

Người hướng dân: GV TRẤN LƯƠNG QUOC ĐẠI

Người thực hiện: NGUYÊN TRIỆU VI-— 52100143

Lớp : 21050201

Khoá : K25

THÀNH PHÓ HÒ CHÍ MINH, NĂM 2023

Trang 3

LOI CAM ON Trong học kì nay, Khoa đã giúp cho em tiếp cận với môn Cấu trúc rời rạc ứng

dụng cho CNTT, em cảm thấy môn này khá hay và hữu ích cho sinh viên CNTT

Em xin chân thành cảm ơn thầy Đại đã giảng dạy và hướng dẫn nhiệt tình để em

có đủ kiến thức đề có thê hoàn thành chuyên đề báo cáo cho môn “Cầu trúc rời rac tng

dung cho CNTT”

Với kiến thức còn hạn chế của mình cũng như thời gian trải nghiệ cọn hạn chế

nên bài không tránh khỏi thiếu sót Em rất mong nhận được sự chỉ bảo và đóng góp của thầy cô

Một lần nữa em xin chân thành cảm ơn và 101 tri 4n sâu sắc nhat

Trang 4

il

ĐỎ ÁN ĐƯỢC HOÀN THÀNH _

TẠI TRƯỜNG ĐẠI HỌC TỒN ĐỨC THẮNG

Tôi xin cam đoan đây là sản phâm đồ án của riêng tôi / chúng tôi và được sự hướng dẫn của TS Trần Lương Quốc Đại: Các nội dung nghiên cứu, kết quả trong đề tai nay là trung thực và chưa công bồ dưới bất kỳ hình thức nào trước đây Những số liệu trong các bảng biểu phục vụ cho việc phân tích, nhận xét, đánh giá được chính tác giả thu thập từ các nguồn khác nhau có ghi rõ trong phân tài liệu tham khảo

Ngoài ra, trong đồ án còn sử dụng một số nhận xét, đánh giá cũng như số liệu của các tác giả khác, cơ quan tô chức khác đều có trích dẫn và chú thích nguồn gốc

Nếu phát hiện có bất kỳ sự gian lận nào tôi xin hoàn toàn chịu trách nhiệm

về nội dung đồ án của mình Trường đại học Tôn Đức Thắng không liên quan đến những vi phạm tác quyền, bản quyền do tôi gây ra trong quá trình thực hiện (nếu có)

TP Hồ Chí Minh ngày tháng năm

Tác giả (ký tên và ghỉ rõ họ tên)

Vi Nguyễn Triệu Vi

Trang 5

1H

PHẢN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN Phần xác nhận của GV hướng dẫn

Tp Hồ Chí Minh ngày tháng năm

(kí và ghi họ tên)

Phần đánh giá của GV chấm bài

Tp Hồ Chí Minh ngày tháng năm

(kí và ghi họ tên)

Trang 6

TOM TAT

Trình bày tóm tắt vẫn đề nghiên cứu, các hướng tiếp cận, cách giải quyết vẫn dé

và một số kết quả đạt được, những phát hiện cơ bản trong vòng | -2 trang

Trang 7

MUC LUC

1.1 Lý thuyết về nghịch đảo modulo 5 - cề SE HE xrrygrrưe 2 1.1.1 Phép chia - L2 112211112111 2121 1E 1115115011101 11 11111111 k khen ớt 2 1.1.2 Đồng dư Modulo + s22 121221211 1221211 121 EgEtrerreo 3

1.1.3 Giải thuật Euclid mở rộng c2 1211222112 21tr re 5 1.2 Tính nghịch đảo Modulo tìm UCILUN - 2 22 2222212212211 Heo 6

CHƯƠNG 2 - HỆ THÔNG MẬT MÃ RSA ó5: 522cc EEtrrtrrrrrrrrrirrrirre 12

2.1 Cơ sở toán học - LH HS ST g1 1k ng nu 12

2.2 Bài toán RŠA ác LH HH1 1101 11 HT HH TH HH Hà HH khu 16 2.2.1 Thuật toán sinh khóa cho mã khóa công khai RŠA 16 2.2.2 Thuat toan m& hoa RSA cceceeeeceeeeeneeeeeeseeesenenetieteeeees 19

2.3 Hiệu quả và tính bảo mật RŠA - L2 2n HH HH HH Ho 24

2.5 Khuyến nghị dành cho hệ thống RSA 2 S5 E1 xEEEEgxrgrrrưyn 25

Trang 8

CHƯƠNG 1 - TÌM NGHỊCH DAO MODULO

1.1 Lý thuyết về nghịch đảo modulo

11,1 Phép chia

1.1.1.1 Phép chia số nguyên

Cho a là số nguyên và k là số nguyên dương Khi đó tồn tại số nguyên duy nhất

q và r, với 0<r<k, sao cho a=kq+r

1.1.1.2 Phép toán MOD, DIV

Trong phép chia số nguyên, gọi: n là số chia, a là số bị chia, q là thương số và r

là số dư Mod và Div lần lượt là các ký hiệu phép toán được sử dụng biểu diễn thương

sô và phần dư: đ+n=q,amodn=r,

Nếu số nguyên a chia hết cho sô nguyên n thì amod n=0

Vi du: 15mod4=3,15+4=3

115mod7=3,115+7=6

Trong lập trình, ta có kí hiệu như sau:

- amodn duoc viét la a%n

- adivn duge viét la a/n

Trang 9

_ phepToanModvaDiv

tee print(a,

Không hia cho số Ø

Hãy thay đối giả trị

Không thể chia cho số 9

Hãy thay đối giá trị của b

Trang 10

Không thể chia cho số 9

Hãy thay đổi giá trị của b

Định lý 1: Cho a và b là các số nguyên, và m là một số nguyên dương Khi đó

a=b|modm| khi va chi khi mV(a—b), (hay gọi là m là ước của a—b)

Trang 11

Dinh lý 2: Cho a và b là các số nguyên, và m là một số nguyên dương Khi đó a=b|modm] khi và chỉ khi tồn tại một số nguyên k sao cho a=b+km

Định lý 3: Cho m là số nguyên dương Nếu a =b|modm) vàc = dmod m] thì a+c=b+d(mod m) va ac =bd|mod m),

1.1.3 Giải thuật Fuclid rở rộng

Phuong trinh diophantine: ax +by =c (1)

Theo dinh li Bézout (Bézout’s indentify): Cho hai số nguyên a, b khi đó luôn tồn tại hai số x, y sao cho: ax+by =GCD(a,b)

Nếu d=GCD(a,b) thi tồn tại các số nguyên x„y sao cho ax +by =d

Thuật toán Euclide mở rộng: a, b không đồng thời bằng 0

Trang 12

Không thế chia cho số 9

Hãy thay đổi giá trị của b

gcd( 258 , 147 ) = 3

4

x=

1.2 Tinh nghich dao Modulo tim UCLN

Định nghĩa: Cho b là số nguyên và x, m là các số nguyên dương (x<m), nếu x*b mod

m đồng dư 1 thì x là nghịch đáo của b mod m, kí hiệu là b mod m

Trang 13

Lưu ý: đề tồn tai s6 nghich dao cua b (mod m) là b và m là hai số nguyên tô cùng

Vi du minh hea: Tim cac gia tri cia 3207' mod 1253

Thuật todn Euclidean tim Mo rong dé tim x

Trang 16

Hình 1.1.4.2 Minh hoa nghich dao modulo ding thuét todn Euclidean

trường hợp không tìm ra giá trị

Trang 18

12

CHUONG 2 -— HE THONG MAT MA RSA

Thuật toán RSA (Rivest- Shamir- Adleman) được phát triển năm 1977 và công bố vào

1978 RSA là một hệ mật mã khối, trong đó bản gốc và bản mã là số nguyên thuộc

đoạn (0, n-1) với n < 2!

RSA là một hệ mã hóa bất đối xứng và đucợ sử dụng rộng rãi trong công tác mã hóa va công nghệ chữ kí điện tử Trong hệ mã hóa này, public key có thê chia sẻ công khai

cho tất cả mọi nguoi

Hoạt động của RŠA dựa trên 4 bước chính: sinh khóa, chia sẻ key, mã hóa và giải mã

Hệ mật mã được xây dựng dựa trên tính khó giải của bài toán phân tích một số thành thừa số nguyên tổ hay còn gọi là bài toán RSA

Ưu điểm:

- Mã hóa hay thiết lập chữ kí điện tử với vai trò mã hóa công khai

- _ Mã hóa dữ liệu muốn gửi đi nhưng giải mã cần có sự hỗ trợ của khóa bí mật

- _ RSA chứa hai khóa: công khai và bí mật đảm nhận nhiệm vụ bất đối xứng là mã

hóa và giải mã

- _ Khóa bí mật của RSA không truyền được tin ra bên ngoài kê cả bị tấn công

Nhược điểm: Gây bất lợi cho người nhận thông khi không biết cách giải mã để xem

được thông tin bên trong

2.1 Cơ sở toán học

Thuật toán lũy thừa:

» Là thuật toán tính nhanh lũy thừa tự nhiên của một số thực hoặc một số

nguyên trong trường hợp số nguyên có thê rút gọn theo một modun nào

Trang 19

13

Vi du minh hga: tinh 42* mod 167

Ta có: x=42, n=25, m=167 Đôi n ra số nhị phân ta được: 25ao;=11001,¿;

Mang b[1, k]=b[1, 1, 0, 0, 1]; p=l

Trang 20

PROBLEMS OUTPUT TERMINAL DEBUG CONSOLE

PS D:\KTPM\CTRR\baocao> &

eet

Ata

Hinh 2.1.2 Minh hoa kiém tra s6 nguyén to

Thuật toán modular: là phép tính toán thực hiện trên một tập hợp các số nguyên gọi là mô đun Phép tính modular của một số nguyên a với một số nguyên dương n được định nghĩa là phần dư của a chia hết cho n

Vị dụ: 17 mod 2 =1, vi 17 chia cho 2 dư l1

Thuật toán Euclid mở rộng (Extended Euclidean Algorithm): là một thuật toán trong đại số tuyên tính để tìm ra giá trị của hai số nguyên a, b sao cho tồn tại các

sô nguyên không âm x, y sao cho hàm tuyến tính ax + by = gcd(a, b) được thỏa mãn GCD là tên viết tắt của Greatest Common Divisor (Ước chung lớn nhất) của hai số nguyên a, b

Vi du: ged(15,20) = 5 va ton tai x=-1 va y=1

sao cho 15x+20y=ged(15,20)

Trang 21

TERMINAL DEBUG CONSOLE

Hinh 2.1.3 Minh họa thuật toán Euclid mở rộng

Phân tích thừa số nguyên tổ (Prime Factorization hay Factorization): là quá trình tìm tất cả các thừa số nguyên tố của một số nguyên dương Quá trình này có thể được thực hiện bằng nhiều phương pháp khác nhau như kiểm tra từng số nguyên dương

liên tiếp đề xác định các thừa số hoặc sử dụng algortihm Pollard-Rho

Ví dụ: phân tích thừa số nguyên của 100, ta được kết quả là

100=2*2*5*5 Vậy thừa số nguyên tố của 100 là 2, 2, 5, 5.

Trang 22

16

thuaSoNguyenTo(n):

Hình 2.1.4 Minh họa phân tích thừa số nguyên tố

2.2 Bài toán RSA

Khái niệm:

© Giả sử p, q là các số nguyên tô lớn, p#q,n=p+*q

® - Hệ mật mã RSA là hệ mật trong đó M=C=Z„ và tập các khóa K={k=(n, p, q, d,

e): exd=1(modg(n))}

¢ V6i mdi k=(n, p, q, d, e) ta xác định:

+ Ham mii hoa: e, |x) =x°modn

+ Ham giai ma: d,lyl=y" modn

Voi moi x,y EZ,

Cac giá trị n, e được công khai, các giá trị p, q, d duoc giữ kín

2.2.1 Thuật toán sinh khóa cho mã khóa công khai RSA

Các bước thực hiện sinh khóa:

1 Sinh hai số nguyên tô lớn p và q có giá trị xấp xỉ nhau

Trang 23

17

Can chon p va q sao cho y <2*!<n<2'!, với i=1024 thì n là một số nguyên

dai khoang 309 chit sé

2 Tinh n=p*q, va g(n|=|p—1)*| q—-1)

3 Cho một số ngẫu nhiên e, 1<e<0(n), sao cho øcd |e,ø|n0]|=1

4 Sử dụng thuật toán Euclide dé tinh s6 d, 1<d<@(n) sao cho

Chon e = 17, vi 17 là số nguyên tố và không có ước chung nào với

d* e=1 (mod (p-1)*(q-1)), tue la d la nghich dao modular cua e theo

(p-1)*(q-1)

Giải phuong trinh d * 17 = 1 (mod 616)

Ta dùng thuật toán Euclid mở rộng để tìm nghịch đảo modular của L7 theo 616:

Trang 24

18

pr1ime (pr

prime1

2 == primel -randint(1 Prime(pr1m

1

Trang 25

19

rsa_gener prime1 =

pr1me1 prime2 = find_prime(primel prime1 * prime2

1 - 1) * K\prime2 - 1 rime(phi_n od_inverse(e, phi_n

910814

print

Hình 2.2.1.1 Minh họa thuật toán sinh khỏa ngdu nhién

2.2.2 Thuat toan ma hoa RSA

“+ Lap ma:

+ Ma hoa bao mat:

a Lấy khóa công khai PU=ƒn, e} theo thuật toán trên

b Chọn một bản rõ x, trong khoảng [1, n-1]

Tinh: y=x° mod n

d Nhận được bản mã y

Trang 27

private key = private key.private bytes (

format=serialization PrivateFormat.PKCS8,

encryption algorithm=serialization.NoEncryption ()

private key, public key

Ht MA hoa tin nhan

def encrypt (msg, public key):

public _k c<ey = serialization.load_pem public key(public_key)

msg.encode(),

padding OAEP (

mgf=padding.MGF1 (algorithm=hashe algorithm=hashes.SHA256(), label=None

binascii.hexlify (ciphertext) decode ("ascii")

l' Giải mã tin nhắn

def decrypt (ciphertext, private key):

Trang 28

forint ("Khoa bi mat: ", private key.decode())

msg = "hello world”

encrypted msg = encrypt(msg, public key)

brint("Tin nhắn được mã hóa: ", encrypted msg)

decrypted msg = decrypt (encrypted msg, private key)

brint("Tin nhắn duge giai ma: ", decrypted_msg)

Ket qua về đoạn mã trên:

nD7+WbqFDN xRMZgq†ncWATTc92f£O1rWsLuTTSD

END PUBLIC

'9w0BAOBFARS An AgEAAoIB

Trang 29

Vinh eRmHWMSC nước J UEC sBhc6M/

PULmy424gMTTUeQMONzg1 Z1WUyb1 pqrBVJ033i BE:

Trang 30

24

2.3 Hiéu qua va tinh bao mat RSA

RSA là một trong những thuật toán mã hóa khóa công khai được sử dụng phố biến nhất hiện nay Thuật toán RSA có hiệu quả khi áp dụng với các số nguyên p và q có độ dai

bằng nhau và khoảng 2048 bit, khi đó việc mã hóa và giải mã có thê được thực hiện

một cách nhanh chong va dang tin cay

Tuy nhiên, RSA có một vài vẫn đề liên quan đến tính bảo mật Đầu tiên, việc chọn p và

q cần được thực hiện cần thận và ngẫu nhiên, vì nếu một trong hai giá trị này được dự

đoán hoặc tính toán được, thì sẽ dễ dàng phá được thuật toán Ngoài ra, nêu không

được lưu trữ và sử dụng đúng cách, khóa bí mật có thể bị lộ ra ngoài và dẫn đến việc

mã hóa bị phá Các tắn công khác bao gồm các tần công brute-force hoặc tấn công dựa trên các khả năng số học đề phân tích các thừa số của n

2.4 Mối đe dọa

Một trong những mỗi đe dọa lớn nhất là tắn công tìm ân bằng cách phân tích tổng quát trên phương trình: c = m* mod n

Trong do:

® m là thông điệp cần mã hóa

® c vàn là khóa công khai của hệ thống ma hoa RSA

® c là thông điệp đã được mã hóa

Mục đích của tấn công này là tìm ra bộ ba (n, e, d), trong đó d là khóa bí mật được tinh dựa trên p và q - hai thừa số nguyên tổ của n

Tuy nhiên, để tìm ra giá trị d đòi hỏi một lượng tính toán và tài nguyên lớn, do đó tấn

công tìm ấn là khá khó khăn và không thực tế, đặc biệt khi giá trị của p và q rất lớn và

được chọn ngẫu nhiên

Một hạn chế của hệ thống mật mã RSA đó là kích thước của khóa phải đủ lớn để đảm

bảo tính bảo mật của mã hóa Vì nếu kích thước của khóa quá nhỏ, tấn công brute-force

sẽ trở nên dễ dàng Tuy nhiên, kích thước khóa lại đòi hỏi tài nguyên to lớn đề tính toán và lưu trữ, do đó cần cân nhắc tìm một sự cân bằng hợp lý giữa cả tính bảo mật và hiệu quả của hệ thông mã hóa RSA

Ngoài ra, RSA cũng không thê bảo vệ được các vấn đề liên quan đến việc lưu trữ và

quản lý khóa, đặc biệt là khi khóa bị đánh cắp hoặc mất mát.

Trang 31

25

2.5 Khuyến nghị dành cho hệ thong RSA

Sử dụng khóa đủ lớn: Việc sử dụng khóa đủ lớn có độ dài trung bình khoảng

2048 bịt sẽ đảm bảo tính bảo mật của hệ thống ma hoa RSA

Dam bao bao mat của khóa bí mật: Việc lưu trữ và quản lý khóa bí mật là rất quan trọng Do đó, cần dam bao tinh bảo mật của khóa bí mật bằng cách lưu trữ

và quản lý khóa một cách an toàn và đáng tin cậy

Sử dụng câu trúc khóa mới: Việc sử dụng các câu trúc khóa mới hoặc các thuật

toán mã hóa khác sẽ giúp tăng tính bảo mật và tránh các vẫn đề liên quan đến RSA

Sử dụng mật mã RSA kết hợp với các phương thức mã hóa và bảo mật khác Kiểm tra bảo mật thường xuyên: Các tổ chức, doanh nghiệp và cá nhân nên

thường xuyên kiểm tra bảo mật cho hệ thống mã hóa RSA cua minh

Ngày đăng: 26/09/2024, 16:17