Đang tải... (xem toàn văn)
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ò
Trang 1BÀI TẬP LỚN CUỐI KÌ MÔN CẤU TRÚC RỜI RẠC
RSA CRYPTOSYSTEM USINGMODULAR ARITHMETIC
Người hướng dẫn: GV TRẦN LƯƠNG QUỐC ĐẠINgười thực hiện: NGUYỄN TRIỆU VI – 52100143
Lớp : 21050201Khoá : K25
THÀNH PHỐ HỒ CHÍ MINH, NĂM 2023
Trang 2BÀI TẬP LỚN CUỐI KÌ MÔN CẤU TRÚC RỜI RẠC
RSA CRYPTOSYSTEM USINGMODULAR ARITHMETIC
Người hướng dẫn: GV TRẦN LƯƠNG QUỐC ĐẠINgười thực hiện: NGUYỄN TRIỆU VI – 52100143
Lớp : 21050201Khoá : K25
THÀNH PHỐ HỒ CHÍ MINH, NĂM 2023
Trang 3LỜI CẢM ƠN
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 rạc ứng dụng 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à lời tri ân sâu sắc nhất.
Trang 4ĐỒ ÁN ĐƯỢC HOÀN THÀNHTẠ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 đề tài này 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ệmvề 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à ghi rõ họ tên)Vi
Nguyễn Triệu Vi
Trang 5PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN
Trang 6TÓM TẮT
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 đề và một số kết quả đạt được, những phát hiện cơ bản trong vòng 1 -2 trang.
Trang 7MỤC LỤC
CHƯƠNG 1 – TÌM NGHỊCH ĐẢO MODULO 2
1.1 Lý thuyết về nghịch đảo modulo 2
1.1.1 Phép chia 2
1.1.2 Đồng dư Modulo 3
1.1.3 Giải thuật Euclid mở rộng 5
1.2 Tính nghịch đảo Modulo tìm UCLN 6
CHƯƠNG 2 – HỆ THỐNG MẬT MÃ RSA 12
2.1 Cơ sở toán học 12
2.2 Bài toán RSA 16
2.2.1 Thuật toán sinh khóa cho mã khóa công khai RSA 16
2.2.2 Thuật toán mã hóa RSA 19
2.2.2 Code về thuật toán mã hóa RSA 21
2.3 Hiệu quả và tính bảo mật RSA 24
2.4 Mối đe dọa 24
2.5 Khuyến nghị dành cho hệ thống RSA 25
Trang 8CHƯƠNG 1 – TÌM NGHỊCH ĐẢO MODULO 1.1 Lý thuyết về nghịch đảo modulo
1.1.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ư: a÷n=q,amod n r=
Nếu số nguyên a chia hết cho số nguyên n thì amod n=0 Ví dụ: 15mod4=3 , 15÷4=3
115mod7=3 ,115÷7=6
Trong lập trình, ta có kí hiệu như sau: ‐ a mod n được viết là a%n ‐ a div n được viết là a/n
Hình 1.1.1.2.1 Minh họa phép toán mod và div trong lập trình
Trang 9Hình 1.1.1.2.2 Minh họa phép toán mod và div ngoại lệ
Trang 10Định nghĩa: Nếu a và b là số nguyên và m là số nguyên dương thì a dồng dư
với b theo modulo m nếu amod m=bmod m Ký hiệu a≡b(modm) để chỉ ra rằng a là đồng dư với b theo modulo m.
Đị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 và chỉ khi m∨(a−b), (hay gọi là m là ước của a−b).
Trang 11Định 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≡ d (modm ) thì
a+c≡ b+d (modm) và ac≡bd (modm ).
1.1.3 Giải thuật Euclid mở rộng
Phương trình diophantine: ax+by c= (1)
Theo định lí 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) thì 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 12Hình 1.1.3.1 Minh họa thuật toán Euclid mở rộng
1.2 Tính nghịch đảo Modulo tìm 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−1modm.
Trang 13Vậy không có giá trị của 6−1mod10
Lưu ý: để tồn tại số nghich đảo của b (mod m) là b và m là hai số nguyên tố cùng
nhau
Ví dụ minh họa: Tìm các giá trị của 320−1mod1253
Thuật toán Euclidean tìm
Trang 14Các bước của thuật toán Euclidean mở rộng luôn có dạng ri=1253 yi+230 xi
Ta có: ri=ri−2modri −1; qi=[ri−2
Trang 16Hình 1.1.4.2 Minh họa nghịch đảo modulo dùng thuật toán Euclideantrường hợp không tìm ra giá trị.
Trang 17Hình 1.1.4.3 Minh họa nghịch đảo modulo dùng thuật toán Euclidean
Trang 18CHƯƠNG 2 – HỆ THỐNG MẬT MÃ 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 < 21024.
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 và 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 người.
Hoạt động của RSA 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ọcThuậ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 20Số nguyên tố: là một số nguyên dương lớn hơn 1 và chỉ có 2 ước số dương là 1
và chính nó Các số khác gọi là số hợp số
Ví dụ, các số nguyên tố đầu tiên là: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31,
Hình 2.1.2 Minh họa kiểm tra số nguyên tố
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, vì 17 chia cho 2 dư 1.
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.
Ví dụ: gcd(15,20) = 5 và tồn tại x=-1 và y=1 sao cho 15x+20y=gcd(15,20).
Trang 21Sử dụng thuật toán Euclid mở rộng, có thể tìm ra các giá trị để thõa phương trình tuyến tính.
Hình 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 22Hình 2.1.4 Minh họa phân tích thừa số nguyên tố
2.2 Bài toán RSA
Với mọi x,y∈ Zn
Các giá trị n, e được công khai, các giá trị p, q, d được 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 23Cần chọn p và q sao cho y <2i-1<n<2i, với i=1024 thì n là một số nguyên dài khoảng 309 chữ số.
2 Tính n=p*q, và φ(n )=( p−1)∗( q−1)
3 Cho một số ngẫu nhiên e, 1<e <φ(n), sao cho gcd(e,φ (n 0))=1 4 Sử dụng thuật toán Euclide để tính số d, 1<d <φ (n) sao cho
Giải phương trình d * 17 ≡ 1 (mod 616).
Ta dùng thuật toán Euclid mở rộng để tìm nghịch đảo modular của 17
Trang 252.2.2 Thuật toán mã hóa RSA
Trang 26Sử dụng khóa bí mật d để giải mã: x=y mod ne
Hình 2.2.2.1 Minh họa thuật toán mã hóa RSA
Trang 272.2.2 Code về thuật toán mã hóa RSA
fromcryptography.hazmat.primitives.asymmetricimportrsa padding,fromcryptography.hazmat.primitivesimportserialization hashes,
# Trích xuất khóa công khai
public_key = private_key.public_key public_bytes()(
defencrypt(msg public_key,):
public_key = serialization.load_pem_public_key public_key()
Trang 28private_key = serialization.load_pem_private_key private_key passwo(,
private_key public_key = generate_key,()print("Khóa công khai: ",public_key.decode())print("Khóa bí mật: ",private_key.decode())
msg ="hello world"
encrypted_msg = encrypt msg public_key(,)print("Tin nhắn được mã hóa: ",encrypted_msg)
decrypted_msg = decrypt encrypted_msg private_key(,)print("Tin nhắn được giải mã: ",decrypted_msg)
Kết quả về đoạn mã trên:
Khóa công khai: -BEGIN PUBLIC
-END PUBLIC
KEY -Khóa bí mật: -BEGIN PRIVATE
Trang 29-END PRIVATE KEY -Tin nhắn được mã hóa:
Trang 302.3 Hiệu quả và tính bảo mật 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ó độ dài 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 chóng và đáng tin cậy.
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 ne
Trong đó:
m là thông điệp cần mã hóa
e và n là khóa công khai của hệ thống mã hóa 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 tính 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 312.5 Khuyến nghị dành cho hệ thống 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 bit sẽ đảm bảo tính bảo mật của hệ thống mã hóa RSA.
‐ Đảm bảo bảo mật 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 đảm bảo tính 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 của mình.
Trang 32TÀI LIỆU THAM KHẢO
‐ Thuật toán Euclid mở rộng – Extended euclid algorithm – Lập trình thi đấu (wordpress.com)
‐ Số học đồng dư (Phần 1): Đồng dư thức và Nghịch đảo modulo (viblo.asia)
‐ Giải mã thuật toán RSA (ichi.pro)