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

Xây dựng chương trình mã hóa và giải mã RSA

31 8 0

Đ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 đề Xây dựng chương trình mã hóa và giải mã RSA
Tác giả Lê Thành Hưng, Lê Văn Hưng, Ngô Sỹ Kiên, Nguyễn Khánh Linh, Nguyễn Quang Huy
Người hướng dẫn ThS. Trần Phương Nhung
Trường học Hà Nội University of Industry
Chuyên ngành An toàn và bảo mật thông tin
Thể loại bài tập lớn
Năm xuất bản 2022
Thành phố Hà Nội
Định dạng
Số trang 31
Dung lượng 603,68 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Xây dựng chương trình mã hóa và giải mã RSA,Xây dựng chương trình mã hóa và giải mã RSA,Xây dựng chương trình mã hóa và giải mã RSA,Xây dựng chương trình mã hóa và giải mã RSA,Xây dựng chương trình mã hóa và giải mã RSA

Trang 1

BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI

-BÀI TẬP LỚNMôn: An toàn và bảo mật thông tin

Xây dựng chương trình mã hóa và giải mã RSA

CBHD: ThS Trần Phương Nhung

Hà Nội - Năm 2022

Trang 2

MỤC LỤC

Chương 3 Kiến thức lĩnh hội và bài học kinh nghiệm 26

TÀI LIỆU THAM KHẢO

29

Trang 3

Lời nói đầu

Trước đây khi công nghệ máy tính chưa phát triển, khi nói đến vấn đề antoàn bảo mật thông tin, chúng ta thường hay nghĩ đến các biện pháp nhằm đảmbảo cho thông tin được trao đổi hay cất giữ một cách an toàn và bí mật, chẳnghạn là các biện pháp như: Đóng dấu và ký niêm phong một bức thư để biết rằng

lá thư có được chuyển nguyên vẹn đến người nhận hay không, dùng mật mã mãhóa thông điệp để chỉ có người gửi và người nhận hiểu được thông điệp, lưu giữtài liệu trong các két sắt có khóa tại nơi được bảo vệ nghiêm ngặt

Ngày nay với sự phát triển của khoa học công nghệ, đặt biệt là sự pháttriển của Internet, việc sử dụng máy tính và điện thoại cá nhân càng trở lên rộngrãi, dẫn đến càng nhiều thông tin được lưu trữ trên máy tính và gửi đi trên mạngInternet Do đó nhu cầu về an toàn và bảo mật thông tin trên máy tính càngnhiều và việc sử dụng mật mã mã hóa càng được phổ biến Trong đồ án này,chúng tôi thực hiện xây dựng chương trình mã hóa và giải mã mật mã hóa côngkhai RSA

Trang 4

Chương 1 Tổng quan1.1 Giới thiệu về an toàn thông tin

An toàn thông tin là bảo vệ các đặc tính riêng tư (confidentialy), toàn vẹn(intergrity) và khả dụng (availabity) của thông tin

- C: (Confidentialy) bảo vệ tính riêng tư của dữ liệu thông qua các cơ chếchứng thực và mã hóa, ngăn ngừa những người không hợp lệ sẽ không được đọcnhững thông tin Giống như các bì thư khi phát lương thưởng được dán chữConfidentialy, chúng ta có thể hình dung trong môi trường công nghệ thông tin

là một người chưa đăng nhập vào Domain sẽ không được truy cập những dữliệu chỉ chia sẻ cho các Domain User

- I: (Intergrity) bảo vệ tính toàn vẹn của dữ liệu thông qua các thuật toánRSA, SHA, MD5 ngăn ngừa attacker thay đổi các thông tin nhạy cảm trongquá trình truyền

- A: (Available) bảo đảm dữ liệu luôn ở trong trạng thái sẵn sằng đáp ứngnhu cầu của người dùng

- Non-Repudiation: Tính không thể chối bỏ, nghĩa là dữ liệu người nàogửi đi thì họ phải có trách nhiệm với các thông tin của mình thông qua các xácnhận nguồn gốc như chữ kí điện tử

Để thực hiện điều này chúng ta áp dụng các biện pháp xác thực và mãhóa Và mật mã học là nghiên cứu về vấn đề mã hóa Mã hóa là một tiến trìnhbiến đổi dữ liệu từ dạng plaintext (văn bản thuần túy dễ dàng nhận biết) thànhkết quả ciphertext, dạng dữ liệu không thể đọc được nếu không được giải mãbằng các khóa thích hợp Mục tiêu của mã hóa là ngăn ngừa việc tấn công đánhcắp dữ liệu trái phép hoặc phòng ngừa việc mất mát dữ liệu khi bị tấn công vật

lý như trộm đĩa cứng, máy tính xách tay hay thậm chí đột nhập vào hệ thốngvẫn không thể xem được dữ liệu riêng tư, bí mật đã được bảo vệ bằng các thuậttoán mã hóa mạnh mẽ

Trang 5

1.2 Khái niệm cơ bản về mật mã học

Kỹ thuật mật mã thông qua việc biến đổi hoặc mã hoá thông tin, biến đổinhững thông tin nhạy cảm, vấn đề cơ mật thành những văn tự mã hoá có dạnghỗn loạn, làm cho tin tặc khó lòng mà đọc hiểu được, từ đó sẽ đạt được hai mụcđích: một là, làm cho tin tặc không biết làm thế nào để giải mã nên cũng khôngthể thu được những thông tin có bất kỳ ý nghĩa nào trong chuỗi mật mã hỗn loạnđó; hai là làm cho tin tặc không có khả năng làm giả thông tin với chuỗi mật mãhỗn loạn như thế Khoa học nghiên cứu kỹ thuật mật mã gọi là mật mã học

Mật mã học bao gồm hai nhánh, là mật mã học lập mã và mật mã họcphân tích Mật mã học lập mã với ý là tiến hành mã hoá thông tin để thực hiệnviệc che giấu thông tin, còn mật mã học phân tích là ngành học nghiên cứu phântích giải dịch mật mã Hai cái đối lập với nhau, nhưng lại thúc đẩy lẫn nhau

Dùng phương pháp mật mã có thể che dấu và bảo hộ những thông tin cơmật, làm cho người chưa được uỷ quyền không thể lấy được thông tin, nhữngthông tin được giấu kín kia được gọi là văn bản rõ, mật mã có thể đem văn bản

rõ biến đổi thành một loại hình khác, gọi là văn bản mật Sự biến đổi văn bản rõthành văn bản mật gọi là mã hoá bảo mật, quá trình người thu nhận hợp phápkhôi phục từ văn bản mật trở thành văn bản rõ được gọi là quá trình giải mã(hoặc giải mật) Người thu nhận phi pháp có ý đồ phân tích từ văn bản mật rathành văn bản rõ, gọi là giải dịch

1.3 Mã hóa RSA

Mục đích: RSA là một thuật toán mật mã hóa khóa công khai Đây là

thuật toán đầu tiên phù hợp với việc tạo ra chữ ký điện tử đồng thời với việc mãhóa Nó đánh dấu một sự tiến bộ 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 cộng 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 khóa đủ lớn

-Mô tả sơ lược:

● 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

Trang 6

đượ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ưngchỉ có người biết khóa cá nhân (bí mật) mới có thể giải mã được

● Ta có thể mô phỏng trực quan một hệ mật mã khoá công khai như sau: Bình muốn gửi cho An một thông tin mật mà Bình muốn duy nhất An có thể đọc được Để làm được điều này, An gửi cho Bình mộtchiếc hộp có khóa đã mở sẵn và giữ lại chìa khóa Bình nhận chiếc hộp, cho vào đó một tờ giấy viết thư bình thường và khóa lại (như loạikhoá thông thường chỉ cần sập chốt lại, sau khi sập chốt khóa ngay cả Bình cũng không thể mở lại được-không đọc lại hay sửa thông tin trong thư được nữa) Sau đó Bình gửi chiếc hộp lại cho An An mở hộp với chìa khóa của mình và đọc thông tin trong thư Trong ví dụ này, chiếc hộp với khóa mở đóng vai trò khóa công khai, chiếc chìa khóa chính là khóa bí mật

-Ý tưởng và ví dụ:

● Ý tưởng về một hệ mật khoá công khai đã được Diffie và Hellman đưa

ra vào 1976 Còn việc hiện thực hóa hệ mật khoá công khai thì doRivest, Shamir và Adleman đưa ra đầu tiên vào 1977, họ đã tạo nên hệmật RSA nổi tiếng

● Hệ mật này sử dụng các tính toán trong Zn, trong đó n là tích của 2 sốnguyên tố phân biệt p và q Ta có thể mô tả hệ mật RSA như sau:

Cho n = p.q trong đó p và q là các số nguyên tố Đặt P=C=Zn vàđịnh nghĩa:

K= (n,p,q,a,b):n=pq, p, q là các số nguyên tố, ab 1(mod (n))(n,p,q,a,b):n=pq, p, q là các số nguyên tố, ab  1(mod (n))  1(mod (n)) (n)) Với K =(n,p,q,a,b) ta xác định

ek(x)=xb mod ndk(y)=ya mod n (x,y Zn) các giá trị n và b được công khai  Zn) các giá trị n và b được công khai

và các giá trị p, q, a được giữ kín,

(n)=(p-1)(q-1)

(n))

Quá trình thực hiện hệ mật RSA: (người gửi: Alice; người nhận: Bob) :

● Bob tạo hai số nguyên tố lớn p và q

● Bob tính n = pq và (n) = (p-1)(q-1)

● Bob chọn một số ngẫu nhiên b (0<b< (n)) sao

Trang 7

cho UCLN(b, (n))=1

● Bob tính a = b-1 mod (n) bằng cách dùngthuật toán Euclide

● Bob công bố n và b trong một danh bạ và dùng chúng làm khoá công khai

Ví dụ: giả sử Bob chọn p=101 và q=113

Khi đó n = 11413 và (n) = 100x112=11200 Vì 11200 = 26527, nên

có thể dùng một số nguyên b như một số mũ mã hoá khi và chỉ khi bkhông chia hết cho 2, 5 hoặc 7 Vì thế trong thực tế Bob sẽ khôngphân tích (n), anh ta sẽ kiểm tra điều kiện UCLN( (n),b) = 1 bằngthuật toán Euclide Giả sử Bob chọn b = 3533, khi đó theo thuật toánEuclide mở rộng: b-1=6597 mod 11200 Bởi vậy, số mũ mật để giải

mã cho Bob là a=6597 Bob sẽ công bố n = 11413 và b = 3533 trongmột danh bạ Bây giờ, giả sử Alice muốn gửi bản rõ 9726 tới Bob

Cô ta sẽ tính 97263533 mod 11413 = 5761 rồi gửi bản mã 5761 trênkênh Khi Bob nhận được bản mã 5761, anh ta sử dụng số mũ a mật đểtính: 57616597 mod 11414 = 9726

Với hệ mật RSA được trình bày ở trên ta thấy cách tấn công dễ thấynhất đối với hệ mật này là thám mã cố gắng phân tích n ra các thừa sốnguyên tố Nếu thực hiện được phép phân tích này thì có thể dễ dàngtính được (n) = (p-1)(q-1) và rồi tính số mũ a và b đúng như Bob đãlàm.Vì thế để hệ RSA được coi là mật thì nhất thiết n = pq phải là một

số đủ lớn để việc phân tích nó sẽ không có khả năng về mặt tính toán

-Mô tả cách hoạt động của RSA:

● Tạo khóa:

Giả sử An và Bình cần trao đổi thông tin bí mật thông qua mộtkênh không an toàn (ví dụ như Internet) Với thuật toán RSA, An đầu tiêncần tạo ra cho mình cặp khóa gồm khóa công khai và khóa bí mật theocác bước sau:

1 Chọn 2 số nguyên tố lớn p và q với p khác q , lựa chọn ngẫu nhiên và độc lập

2 Tính: n=pq

3 Tính: giá trị hàm số Euler (n) =(p-1)(q-1)

4 Chọn một số tự nhiên e sao cho 1<e< (n) và

là số nguyên tố cùng nhau với (n)

Trang 8

5 Tính: d sao cho de đồng dư 1(mod (n)).

● Một dạng khác của khóa bí mật bao gồm:

p và q, hai số nguyên tố chọn ban đầu,

d mod (p-1) và d mod (q-1) (thường được gọi

< n theo một hàm có thể đảongược (từ m có thể xác định lạiM) được thỏa thuận trước

Trang 9

 Lúc này Bình có m và biết n cũng như e do Angửi Bình sẽ tính c là bản mã hóa của m theocông thức.

 Hàm trên có thể tính dễ dàng sử dụng phươngpháp tính hàm mũ (theo môđun) bằng (thuật toánbình phương và nhân) Cuối cùng Bình gửi choAn

● Giải mã:

thể tìm được m từ c theo công thức sau: m= cd

mod n

thuận trước Quá trình giải mã hoạt động vì tacó: cd ≡ med mod n

● Do ed≡1(mod p-1) và ed ≡1 (mod q-1)nên: med≡m (mod p) và med≡m (modq)

● Do p và q là hai số nguyên tố cùng nhau, áp

dụng định lý số dư Trung Quốc, ta có: med≡m(mod pq)

Trang 10

Chương 2 Kết quả nghiên cứu.

 Chọn một số tự nhiên sao cho 1<e< ϕ(n) và là

số nguyên tố cùng nhau với ϕ(n)

 Tính: d sao cho de ≡ (mod ϕ(n)).

khai)

o Mã hóa : Giả sử Bình muốn gửi đoạn thông tin M cho An Đầu tiên Bình chuyển M thành một số m < n theo một hàm có thể đảo ngược (từ m có thể xác định lại M) được thỏa thuận

Trang 11

trước Lúc này Bình có m và biết n cũng như e do An gửi Bình sẽ tính c là bản mã hóa của m theo công thức:

C = m e mod n

o Giải mã :

An nhận c từ Bình và biết khóa bí mật d An có thể tìm được m từ c theo công thức sau:

m = c d mod n

Biết m, An tìm lại M theo phương pháp đã thỏa thuận trước.

Quá trình giải mã hoạt động vì ta có

c d ≡ (m e ) d ≡ m ed mod (n).

Do ed ≡ 1(mod p-1) và ed ≡ 1(mod q-1), nên: m ed ≡ m (mod p) và m ed

≡ m (mod q)

Do p và q là hai số nguyên tố cùng nhau, áp dụng định lý số dư

Trung Hoa, ta có:

c d ≡ m (mod n) hoặc m ed ≡ m (mod pq)

2.2 Nội dung thuật toán

1 Thuật toán Euclid

Thuật toán Euclid là một giải thuật để xác định ước chung lớn nhấtcủa hai số nguyên (không âm)

Out put: a, b là hai số nguyên không âm

In put: UCLN (a, b) hay kí hiệu là GCD (a, b)

● Thuật toán Euclid mở rộng

Thuật toán Euclid không chỉ sử dụng để tính được ước chung lớnnhất của hai số nguyên a và b mà còn tính được các số nguyên x và ythỏa mãn:

ax+by= d (trong đó GCD(a, b) = d )

Định lý Fermat được phát biểu như sau: Nếu p là số nguyên tố và

a là số nguyên bất kì khác bội của p (hay GCD (a, p) = 1), ta có: ap-1

≡ 1(mod p)

Ví dụ: a = 5, p = 3

Trang 12

Ta có: a p-1 mod p= 5 3-1 mod 3= 5 2 mod 3= 25 mod 3= 1 mod 3=1 (đpcm)

Một dạng thay thế của định lý Fermat: Nếu p là số nguyên tố, a là một số nguyên không là bội của p, ta luôn có: ap ≡ a mod p

Ví dụ: a = 3, p = 5

Ta có: a p mod p = 3 5 mod 5 = 243 mod 5 = 3 mod 5 = 3 (đpcm)

Trang 13

Lưu ý: Công thức trên luôn đúng nếu p là số nguyên tố, còn a là số

nguyên dương bé hơn p

3.Hàm số Euler

Định nghĩa : Hàm phi Euler của của số nguyên dương n là số các

số nguyên tố cùng nhau với n và nhỏ hơn n Kí hiệu là Φ(n)

4.Thuật toán Miller-Rabin

Thuật toán Miller-Rabin thường được sử dụng để kiểm tra một sốlớn là số nguyên tố Trước khi giải thích thuật toán, ta cần một sốkiến thức căn bản Bất kì một số dương lẻ nào n ≥ 3 có thể được biểudiễn như sau:

n – 1 = 2k q với k > 0, q là số lẻ

Để thấy điều này, lưu ý rằng (n – 1) là 1 số nguyên Sau đó chia (n–1) cho 2 đến khi kết quả là số lẻ q, với tổng số lần chia là k Nếu nđược biểu diễn dưới dạng nhị phân số, thì kết quả đạt được bằngcách dịch chuyển số sang bên phải cho đến khi số bên phải là số 1,với tổng số k lần dịch chuyển

Trang 14

Ví dụ: n = 23 => n-1 = 22 => n-1 = 21 × 11 => q=11 và k

= 1

+ Hai tính chất của số nguyên tố.

- Tính chất thứ nhất: Nếu p là số nguyên tố và a là số nguyên

dương nhỏ hơn p thì: a2 mod p = 1 khi và chỉ khi a mod p = 1 hoặc amod p = -1 mod p = p–1 Theo quy tắc của module số học (a mod p)(a mod p) = a2 mod p

Do đó: Nếu a mod p = 1 hoặc a mod p = -1 thì a2 mod p = 1.Ngược lại:Nếu a2 mod p = 1 thì (a mod p )2 = 1 Nó chỉ đúngvới a mod p = 1 hoặc a mod p = -1

- Tính chất thứ hai: Cho p là số nguyên tố lớn hơn 2 Sau đó

ta có thể viết p – 1 = 2kq với k > 0 và q là số lẻ Cho a là số nguyênbất kì trong dãy 1 < a < p–1 thì một trong hai điều kiện sau là đúng:

1 aq là phù hợp với 1 modulo p đó là aq mod p =1 hoặc

aq≡1(mod p)

2 Một trong những số aq, a2q, a4q, a2 (k-1)q thích hợp với

-1 modulo p, tức là có -1 số j trong dải (-1 ≤ j ≤ k) Nhưvậy a2 (j-1)q mod p

= - 1 mod p= p - 1 Tương đương với a2 (j-1)q ≡ -1(mod p)

Chứng minh: Theo định lý Fermat ta thấy an-1 ≡ 1(mod n).Nếu n là số nguyên tố ta có: p – 1 = 2kq Do đó: ap-1 mod p

= a2 kq mod p =

1 Vì vậy nếu nhìn vào dãy số ta thấy:

aq mod p, a2q mod p, a4q mod p, , a2 (k-1)q mod p, a2 kq mod p

Trong biểu thức trên ta có con số cuối cùng bằng 1 Hơn nữamỗi số trước là căn bặc 2 của số đứng sau Do đó một trong nhữngkhả năng sau phải là đúng

1 Số đầu tiền trong danh sách và tất cả các số tiếp theo trongdanh sách bằng 1

2 Một số trong danh sách không bằng 1, nhưng bình phươngmod p của nó bằng 1 Nhờ tính chất đầu tiên của các số nguyên tố

Trang 15

được định nghĩa ở trên, chúng ta biết rằng số duy nhất thỏa mãn điềukiện này là (p–1) Vì vậy, trong trường hợp này danh sách chứa mộtphần tử bằng (p–1).

+ Chi tiết về thuật toán

Nếu n là số nguyên tố thì phần tử đầu tiên trong danh sách dưlượng hoặc phần dư, modulo n bằng một hoặc một số phần tử trongdanh sách bằng (n–1), nếu không n là hỗn hợp (như là, không phải là

số nguyên tố) Mặt khác, nếu điều kiện được đáp ứng, điều đó khôngnhất thiết có nghĩa là n là số nguyên tố

và trả kết quả “hỗn hợp” nếu n chắc chắn không phải số nguyên tố

và kết quả trả về là “chưa đi đến kết quả” nếu n có thể hoặc khôngthể là 1 số nguyên tố

Các bước để kiểm tra như sau:

1 Tìm số nguyên k, q với k > 0, q là số lẻ Sao cho (n – 1) = 2k

2 Lựa chọn 1 số nguyên ngẫu nhiên a: 1< a < n-1

3 Nếu aq mod n thì trả về kết quả là “chưa đi đến kết quả”

4 Với j: 0 < j < k-1

5 Nếu a(2^j)q mod n = n–1 thì trả về “chưa đi đến kết quả”

6 Ngược lại trả về “hỗn hợp”

Trang 16

Ví dụ 1: n = 29 Ta có (n – 1) = 28 = 22 × 7=2kq

- Đầu tiên ta thử a = 10

- Ta tính 107 mod 29 = 17 (aq mod n): Kết quả này không phải

1 hay 28

- Vậy nên ta tiếp tục kiểm tra

- Tính toán tiếp theo ta thấy (107)2 mod 29 = 28 và kiểm tra trả

về là “chưa đi đến kết quả” Tức là 29 có thể là số nguyên tố

- Ta thử với a =2 (aq mod n) = 27 mod 29 = 12;

[(aq)2 mod n] = 214 mod 29 = 28Lần này vẫn trả về là chưa đi đến kết quả

- Nếu chúng ta thực hiện kiểm tra cho tất cả các số nguyên atrong khoảng từ 1 đên 28, chúng ta nhận được 1 kết quả là “chưa điđến kết quả”, điều này tương đương với n là số nguyên tố

+ Sử dụng thuật toán Miller-Rabin lặp

Làm thế nào ta có thể sử dụng thuật toán Miller-Rabin để xácđịnh với một mức độ tin cậy cao hoặc không phải là một số nguyên

tố Có thể hiển thị cho một lẻ n không phải là số nguyên tố và một sốngẫu nhiên được chọn a với 1 < a < n-1 Xác suất mà việc kiểm tratrả về không xác định được (tức là không phát hiện ra rằng n khôngphải

là số nguyên tố) là ít hơn 1 Do đó nếu t khác với với giá trị của a đã

4

chọn, xác suất mà tất cả sẽ qua việc kiểm tra (trả về là chưa đi đến kếtquả) với n nhỏ hơn (1)t Ví dụ, đối với t = 10, xác suất là một con số

4

không phải ngoại lệ vượt qua tất cả việc kiểm tra là nhỏ hơn 10-6 Do

đó với a đủ lớn với giá trị của t, chúng ta có thể tin cậy rằng n là sốnguyên tố nếu việc kiểm tra của Miller luôn trả về là chưa đi đến kết

Ngày đăng: 24/06/2023, 08:31

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w