Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 17 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
17
Dung lượng
121,78 KB
Nội dung
TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN ĐỒ ÁN LẬP TRÌNH TÍNH TỐN TÊN ĐỀ TÀI: BÀI TỐN RSA Người hướng dẫn:Nguyễn Tấn Khơi Sinh viên thực hiện: Phan Hữu Phước LỚP: 21TCLC-nhật2 Ngô Qúy Anh Tú LỚP: 21TCLC-nhật2 Đà Nẵng, 04/2022 TIEU LUAN MOI download : skknchat123@gmail.com moi nhat MỤC LỤC MỤC LỤC DANH MỤC HÌNH VẼ MỞ ĐẦU {font: TimeNew Roman, bold, size: 14, lề: center} TỔNG QUAN ĐỀ TÀI CƠ SỞ LÝ THUYẾT 2.1 Ý tưởng 2.2 Cơ sở lý thuyết TỔ CHỨC CẤU TRÚC DỮ LIỆU VÀ THUẬT TOÁN 3.1 Phát biểu toán 3.2 Cấu trúc liệu 3.3 Thuật toán CHƯƠNG TRÌNH VÀ KẾT QUẢ 4.1 Tổ chức chương trình 4.2 Ngôn ngữ cài đặt 4.3 Kết 4.3.1 Giao diện chương trình 4.3.2 Kết thực thi chương trình 4.3.3 Nhận xét đánh giá KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 5.1 Kết luận 5.2 Hướng phát triển TÀI LIỆU THAM KHẢO i TIEU LUAN MOI download : skknchat123@gmail.com moi nhat DANH MỤC HÌNH VẼ No table of figures entries found Hình 1-1: Quy trình mã hóa liệu (Nguồn: Handbook of Applied Cryptography, A Menezes, P van Oorschot and S V anstone) ii TIEU LUAN MOI download : skknchat123@gmail.com moi nhat Đồ án Cơ sở lập trình MỞ ĐẦU{font: TimeNew Roman, bold, size: 14, lề: center} {Để dòng trống} {Font: Time New Roman; thường; cỡ chữ: 13; dãn dịng: 1,3; lề: justified} {Trong phần này, cần trình bày về: Mục đích thực đề tài, mục tiêu đề tài, phạm vi đối tượng nghiên cứu, phương pháp nghiên cứu, cấu trúc đồ môn học} i TIEU LUAN MOI download : skknchat123@gmail.com moi nhat Đồ án Cơ sở lập trình TỔNG QUAN ĐỀ TÀI Trong mật mã học, ngành toán học ứng dụng cho cơng nghệ thơng tin , mã hóa phương pháp để biến thơng tin (phim ảnh, văn bản, hình ảnh…) từ định dạng bình thường sang dạng thơng tin khơng thể hiểu khơng có phương tiện giải mã Giải mã phương pháp để đưa từ dạng thông tin mã hóa dạng thơng tin ban đầu , q trình ngược mã hóa Một hệ thống mã hóa gồm thành phần: - Thơng tin trước mã hóa P - Thơng tin sau mã hóa C - Chìa khóa K - Phương pháp mã hóa/ giải mã E/D Qúa trình mã hóa tiến hành cách áp dụng hàm toán học E lên thông tin P, vốn biểu diễn dạng số, để trở thành thơng tin mã hóa C Qúa trình giải mã tiến hành ngược lại: áp dụng hàm D lên thông tin C để thông tin giải mã P CƠ SỞ LÝ THUYẾT 2.1 Ý Ý tưởng tưởng dựa độ khó tốn phân tích thừa số tích hai số nguyên tố lớn: Cho hai số nguyên tố p, q lớn, tính tích n = p * q Khi biết n, muốn tìm p, q phải giải tốn phân tích thừa số ngun tố, địi hỏi phải thực số lượng phép tính lớn 2.2 Cơ sở lý thuyết Dựa tính chất hàm phía Hàm phía hàm mà dễ dàng tính tốn quan hệ chiều khó để tính ngược lại Ví như: biết giả thiết cho x dễ dàng suy f(x) biết f(x) khó để suy x.Trong trường hợp “khó” có nghĩa để tính kết phải hàng trăm triệu năm để tính tốn cho dù siêu máy tính đại TIEU LUAN MOI download : skknchat123@gmail.com moi nhat Đồ án Cơ sở lập trình Một thuật tốn coi có độ phức tạp đa thức, có thời gian đa thức, số phép tính cần thiết thực thuật tốn khơng vượt q O(P(n)), P(n) đa thức bậc cao (từ trở lên) Các thuật tốn với thời gian O(an), a>1, gọi thuật toán với độ phức tạp mũ , thời gian mũ Để giải dạng tốn cần phải sử dụng chìa khóa cơng khai khái niệm để lập mã hóa 1- Số nguyên tố (prime) Số nguyên tố số nguyên chia chẵn cho cho mà thơi Ví dụ : 2, 3, 5, 7, 11, 13, 17, 23 2- Khái niệm nguyên tố (relatively prime or coprime) Với hai số nguyên dương a b Ta ký hiệu GCD (a,b) : Ước chung lớn a b ( Greatest Common Divisor).Để đơn giản ta ký hiệu GCD(a,b) =(a,b) Ví dụ : Hai số a b gọi nguyên tố (a,b)=1 Ví dụ : 10 nguyên tố (9,10)=1 3-Khái niệm modulo Với m số nguyên dương, ta nói hai số nguyên a b đồng dư với modulo m m chia hết hiệu a-b ( Viết m|(a-b) ) Ký hiệu a ≡ b ( mod m) Như a ≡ b (mod m ) tồn số nguyên k cho a = b +km Ví dụ : 13 ≡ ( mod 10 ) 13= + 1*10 4-Phi – Hàm EULER Định nghĩa : Phi – Hàm Euler Φ(n) có giá trị n số số không vượt n nguyên tố với n Ví dụ : Φ(5) = , Φ(6) = ,Φ(10) = TIEU LUAN MOI download : skknchat123@gmail.com moi nhat Đồ án Cơ sở lập trình 2.3 Độ phức tạp thuật tốn Một thuật tốn coi có độ phức tạp đa thức, có thời gian đa thức, số phép tính cần thiết thực thuật tốn khơng vượt q O(P(n)), P(n) đa thức bậc cao (từ trở lên) Các thuật tốn với thời gian O(an), a>1, gọi thuật toán với độ phức tạp mũ , thời gian mũ TỔ CHỨC CẤU TRÚC DỮ LIỆU VÀ THUẬT TỐN 3.1 Phát biểu tốn Mơ tả đầu vào (Input) đầu (Output) 3.2 Cấu trúc liệu Thuật toán RSA thiết kế dựa độ khó tốn phân tích thừa số nguyên tố tập số nguyên Zn Cho số nguyên dương n = p * q, với p, q số nguyên tố lớn (ít 100 ký số) Khi biết n, muốn tìm p, q phải giải tốn phân tích thừa số ngun tố, cơng việc địi hỏi phải thực số lượng phép tính vơ lớn 3.3 Thuật tốn a)Tạo khóa: Tạo ngẫu nhiên số ngun tố p, q khác lớn (có số ký tự 100) Tính: n = p * q; Tính hàm euler: Ф(n) = (p -1) * (q -1) Chọn ngẫu nhiên số e cho < e < Ф(n), với e số nguyên tố với Ф(n): gcd(e, Ф(n)) = Tìm số nghịch đảo d e Ф(n) : < d < Ф(n), ed = 1(mod Ф(n)), d số mũ bí mật e số mũ cơng khai TIEU LUAN MOI download : skknchat123@gmail.com moi nhat Đồ án Cơ sở lập trình - Cặp Kpub = {e, n} chọn khố cơng khai Cặp Kpri = {d, n} chọn khố bí mật Ví dụ: -Chọn số 23 41 hai số số nguyên tố -n = 23 * 41 = 943 (n = p * q) Ф(n) = 22 * 40 = 880 ( Ф(n) = (q – 1) * (p – 1)) -Chọn e=7 UCLN(7,880)=1 -ed=(x*Ф(n)+1)=>7d=1+880x =>d=503 x=4 -n=943 e=7 d=503 b) Mã hóa: Gửi khố cơng khai Kpub= {e, n} dùng để mã hóa thơng điệp M thành C C = Me mod n Ví dụ: -A nhận khóa cơng khai n=943 e=7 -Thông tin cần gửi m=35 -c=357 mod 943 -c=545 c) Giải mã: Dùng khố bí mật KR= {d, n} Khơi phục văn gốc qua phép tốn M = Cd mod n Ví dụ: -m=545503 mod 943 =>m=35 TIEU LUAN MOI download : skknchat123@gmail.com moi nhat Đồ án Cơ sở lập trình Hình 1-2: Sơ đồ biểu diễn thuật tốn mã hóa RSA Hình 1-2: Sơ đồ biểu diễn thuật tốn mã hóa RSA (Nguồn: PKCS #1 v2.2: RSA Cryptography Standard, RSA Laboratories) CHƯƠNG TRÌNH VÀ KẾT QUẢ 4.1 Tổ chức chương trình #include #include #include #include long int p,q,n,phin,flag,e[100],d[100],temp[100],m[100],en[100],i,j; char msg[100]; int prime(long int); void ce(); long int cd(long int); void encrypt(); void decrypt(); int main() { printf("\nnhap so nguyen to thu nhat\n"); scanf("%ld", &p); flag=prime(p); if(flag==0) TIEU LUAN MOI download : skknchat123@gmail.com moi nhat Đồ án Cơ sở lập trình { printf("\nnhap sai\n"); exit(1); } printf("\nnhap so nguyen to khac\n"); scanf("%ld", &q); flag=prime(q); if(flag==0 || p==q) { printf("\nnhap sai\n"); exit(1); } printf("\nnhap thong tin\n"); fflush(stdin); scanf("%s", msg); for(i=0; msg[i]!=NULL; i++) m[i]=msg[i]; n=p*q; phin=(p-1)*(q-1); ce(); printf("\ngia tri cua e va d\n"); for(i=0; i