Tải bản đầy đủ (.docx) (17 trang)

ĐỒ ÁN LẬP TRÌNH TÍNH TOÁN ĐỀ TÀI BÀI TOÁN RSA

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (196.81 KB, 17 trang )

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


MỤC LỤC
MỤC LỤC............................................................................................................. i
DANH MỤC HÌNH VẼ.......................................................................................ii
MỞ ĐẦU {font: TimeNew Roman, bold, size: 14, căn lề: center}........................i
1.

TỔNG QUAN ĐỀ TÀI................................................................................1

2.

CƠ SỞ LÝ THUYẾT..................................................................................1


3.

4.

2.1.

Ý tưởng.................................................................................................1

2.2.

Cơ sở lý thuyết......................................................................................1

TỔ CHỨC CẤU TRÚC DỮ LIỆU VÀ THUẬT TỐN.............................1
3.1.

Phát biểu bài tốn..................................................................................1

3.2.

Cấu trúc dữ liệu.....................................................................................1

3.3.

Thuật tốn.............................................................................................1

CHƯƠNG TRÌNH VÀ KẾT QUẢ..............................................................1
4.1.

Tổ chức chương trình............................................................................1


4.2.

Ngơn ngữ cài đặt...................................................................................1

4.3.

Kết quả..................................................................................................1

4.3.1. Giao diện chính của chương trình.....................................................1
4.3.2. Kết quả thực thi của chương trình....................................................1
4.3.3. Nhận xét đánh giá.............................................................................1
5.

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN...................................................1
5.1.

Kết luận.................................................................................................1

5.2.

Hướng phát triển...................................................................................1

TÀI LIỆU THAM KHẢO....................................................................................2

1


DANH MỤC HÌNH VẼ
No table of figures entries found.


Hình 1-1: Quy trình mã hóa dữ liệu
(Nguồn: Handbook of Applied Cryptography, A. Menezes, P . van Oorschot and
S. V anstone)

2


Đồ án Cơ sở lập trình

MỞ ĐẦU{font: TimeNew Roman, bold, size: 14, căn lề: center}
{Để 2 dòng trống}
{Font: Time New Roman; thường; cỡ chữ: 13; dãn dòng: 1,3; căn lề: justified}
{Trong phần này, cần trình bày về: Mục đích thực hiện đề tài, mục tiêu đề tài,
phạm vi và đối tượng nghiên cứu, phương pháp nghiên cứu, cấu trúc của đồ môn học}

1


Đồ án Cơ sở lập trình

1. TỔNG QUAN ĐỀ TÀI
Trong mật mã học, một ngành toán học ứng dụng cho cơng nghệ thơng tin , mã
hóa là 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 được nếu khơng có phương tiện giải
mã.
Giải mã là phương pháp để đưa từ dạng thông tin đã được mã hóa về dạng
thơng tin ban đầu , q trình ngược của mã hóa.
Một hệ thống mã hóa gồm các thành phần:
- Thơng tin trước khi mã hóa P
- Thơng tin sau khi 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 được tiến hành bằng cách áp dụng hàm toán học E lên thông
tin P, vốn được biểu diễn dưới dạng số, để trở thành thơng tin đã mã hóa C.
Qúa trình giải mã được tiến hành ngược lại: áp dụng hàm D lên thông tin C để
được thông tin đã giải mã P.

2. CƠ SỞ LÝ THUYẾT
2.1. Ý tưởng

Ý tưởng dựa trên độ khó của bài tốn phân tích thừa số của 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 thì phải giải bài tốn phân tích ra thừa số ngun tố, địi hỏi phải thực hiện
số lượng phép tính rất lớn.

2.2. Cơ sở lý thuyết
Dựa trên tính chất của hàm một phía. Hàm một phía là hàm mà dễ dàng tính
tốn ra quan hệ một chiều nhưng rất khó để tính ngược lại. Ví như: khi biết giả thiết
cho x thì dễ dàng có thể suy ra được f(x) nhưng nếu biết được f(x) thì rất khó để suy ra
được x.Trong trường hợp “khó” này thì có nghĩa là để tính ra được kết quả thì phải
mất hàng trăm triệu năm để tính tốn cho dù đó là siêu máy tính hiện đại nhất.

1


Đồ án Cơ sở lập trình
Một thuật tốn được coi là có độ phức tạp đa thức, hoặc có thời gian đa thức,
nếu số các phép tính cần thiết khi thực hiện thuật tốn khơng vượt q O(P(n)), trong
đó P(n) là đa thức bậc cao (từ 2 trở lên).
Các thuật tốn với thời gian O(an), trong đó a>1, được gọi là các thuật

toán với độ phức tạp mũ , hoặc thời gian mũ.
Để giải được dạng bài toán này chúng ta sẽ cần phải sử dụng chìa khóa cơng
khai và những khái niệm dưới đây để lập mã hóa nó.
1- Số nguyên tố (prime)
Số nguyên tố là những số nguyên chỉ chia chẵn được cho 1 và cho chính nó mà
thơi. Ví dụ : 2, 3, 5, 7, 11, 13, 17, 23...
2- Khái niệm nguyên tố cùng nhau (relatively prime or coprime)
Với hai số nguyên dương a và b . Ta ký hiệu GCD (a,b) : Ước chung lớn nhất
của a và b ( Greatest Common Divisor).Để đơn giản ta ký hiệu GCD(a,b) =(a,b)
Ví dụ :

(4,6)=2

(5,6)=1

Hai số a và b gọi là nguyên tố cùng nhau khi (a,b)=1
Ví dụ :

9 và 10 nguyên tố cùng nhau vì (9,10)=1

3-Khái niệm modulo
Với m là một số nguyên dương, ta nói hai số nguyên a và b là đồng dư với nhau
modulo m nếu m chia hết hiệu a-b ( Viết là m|(a-b) )
Ký hiệu a ≡ b ( mod m)
Như vậy a ≡ b (mod m ) khi và chỉ khi tồn tại số nguyên k sao cho a = b
+km Ví dụ :
13 ≡ 3 ( mod 10 ) vì 13= 3 + 1*10
4-Phi – Hàm EULER
Định nghĩa : Phi – Hàm Euler Φ(n) có giá trị tại n bằng số các số không
vượt quá n và nguyên tố cùng nhau với n

Ví dụ :
Φ(5) = 4 , Φ(6) = 2 ,Φ(10) = 4

2


Đồ án Cơ sở lập trình
2.3. Độ phức tạp của thuật tốn

Một thuật tốn được coi là có độ phức tạp đa thức, hoặc có thời gian đa thức,
nếu số các phép tính cần thiết khi thực hiện thuật tốn khơng vượt q O(P(n)), trong
đó P(n) là đa thức bậc cao (từ 2 trở lên).
Các thuật toán với thời gian O(an), trong đó a>1, được gọi là các thuật
tốn với độ phức tạp mũ , hoặc thời gian mũ.

3. TỔ CHỨC CẤU TRÚC DỮ LIỆU VÀ THUẬT TOÁN
3.1. Phát biểu bài tốn
Mơ tả đầu vào (Input) và đầu ra (Output)
3.2. Cấu trúc dữ liệu
Thuật toán RSA được thiết kế dựa trên độ khó của bài tốn phân tích ra thừa số
nguyên tố trên tập số nguyên Zn.
Cho số nguyên dương n = p * q, với p, q là 2 số nguyên tố rất lớn (ít nhất 100
ký số). Khi biết n, muốn tìm p, q thì phải giải bài tốn phân tích ra thừa số ngun tố,
cơng việc này đòi hỏi phải thực hiện một số lượng các phép tính vơ cùng lớn.

3.3. Thuật tốn

a) Tạo khóa:
- Tạo ngẫu nhiên 2 số nguyên tố p, q khác nhau và rất lớn (có số ký tự ít nhất
là 100)

- Tính: n = p * q;
- Tính hàm euler: Ф(n) = (p -1) * (q -1).
- Chọn ngẫu nhiên một số e sao cho 1 < e < Ф(n), với e là số nguyên tố cùng
nhau với Ф(n): gcd(e, Ф(n)) = 1
- Tìm số nghịch đảo d của e đối với Ф(n) : 1 < d < Ф(n), ed = 1(mod Ф(n)),
d là số mũ bí mật và e là số mũ công khai .
- Cặp Kpub = {e, n} được chọn là khố cơng khai.
3


Đồ án Cơ sở lập trình

- Cặp Kpri = {d, n} được chọn là khố bí mật.
Ví dụ:
-Chọn số 23 và 41 hai số này là 2 số nguyên tố
-n = 23 * 41 = 943 (n = p * q)
Ф(n) = 22 * 40 = 880 ( Ф(n) = (q – 1) * (p – 1))
-Chọn e=7 vì UCLN(7,880)=1
-ed=(x*Ф(n)+1)=>7d=1+880x
=>d=503 và x=4
-n=943 và e=7 và 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 được khóa cơng khai n=943 và 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 bản gốc qua phép tốn M = Cd mod n.
Ví dụ:
-m=545503 mod 943
=>m=35

4


Đồ á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)

4. CHƯƠNG TRÌNH VÀ KẾT QUẢ
4.1. Tổ chức chương trình

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
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)
{
printf("\nnhap sai\n");
exit(1);
5


Đồ án Cơ sở lập trình
}
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; iprintf("\n%ld\t%ld", e[i], d[i]);

encrypt();
decrypt();
return 0;
}

int prime(long int pr)
{
int i;
6


Đồ án Cơ sở lập trình
j=sqrt(pr);
for(i=2; i<=j; i++)
{
if(pr%i==0)
return 0;
}
return 1;
}

void ce()
{
int k;
k=0;
for(i=2; i{
if(phin%i==0)
continue;
flag=prime(i);

if(flag==1 && i!=p && i!=q)
{
e[k]=i; flag=cd(e[k]);
if(flag>0)
{
d[k]=flag;
k++;
}
if(k==99)
break;
7


Đồ án Cơ sở lập trình
}
}
}

long int cd(long int x)
{
long int k=1;
while(1)
{
k=k+phin;
if(k%x==0)
return(k/x);
}
}
void encrypt()
{

long int pt,ct,key=e[0],k,len;
i=0;
len=strlen(msg);
while(i!=len)
{
pt=m[i];
pt=pt-96;
k=1;
for(j=0; j{
k=k*pt;
k=k%n;
8


Đồ án Cơ sở lập trình
}
temp[i]=k;
ct=k+96;
en[i]=ct;
i++;
}
en[i]=-1;
printf("\nthong tin nhap vao\n");
for(i=0; en[i]!=-1; i++)
printf("%c", en[i]);
}
void decrypt()
{
long int pt,ct,key=d[0],k;

i=0;
while(en[i]!=-1)
{
ct=temp[i];
k=1;
for(j=0; j{
k=k*ct;
k=k%n;
}
pt=k+96;
m[i]=pt;
i++;
}
9


Đồ án Cơ sở lập trình
m[i]=-1;
printf("\nthong tin tra ve\n");
for(i=0; m[i]!=-1; i++)
printf("%c",m[i]);
}
4.2. Cài đặt chương trình

4.3. Kết quả thực hiện
4.3.1. Giao diện chính của chương trình
4.3.2. Các kết quả thực thi của chương trình
Mơ tả kết quả 01 thực hiện chương trình, hình vẽ, giải thích.
Mơ tả kết quả 02 thực hiện chương trình, hình vẽ, giải thích.

….
4.3.3. Nhận xét đánh giá kết quả

5. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
5.1. Kết luận
Đề tài bước đầu đưa ra giải pháp để xử lí các phép tốn số học với số lượng lớn
trong các hệ mã cơng khai dựa trên cở sở tốn học và tính tốn độ an tồn của các hệ
mã công khai
Các kết quả nghiên cứu và ứng dụng bước đầu đã thực hiện được mục đích của
đề tài.Bằng việc tối ưu hóa các phép xử lí tính tốn phức tạp trong hệ mã công khai và
minh chứng trong hệ mã cụ thể RSA.Giải thuật được áp dụng để tối ưu hóa phép nhân
là giải thuật để xử lí có độ phức tạp nhỏ nhất được biết đến cho tới thời điểm hiện nay
Chương trình thử nghiệm được xây dựng nhằm minh chứng tính khả thi các kết
quả nghiên cứu. Chương trình hồn thiện cần có sự đầu tư nhiều hơn về mặt thời gian
và cơng sức. Đề tài có thể tiếp tục phát triển để đem lại ứng dụng đáp ứng được yêu
cầu thực tế

10


Đồ án Cơ sở lập trình
5.2. Hướng phát triển
Các kết quả của đề tài có thể được ứng dụng trong nhiều hệ mã công khai khác
nhau và tiếp tục được cải tiến để có được tốc dộ thực thi tốt hơn.
Các kết quả có thể được áp dụng trên nhiều hệ thống bảo mật thực hiện trong
các giao dịch trên mạng, thực hiện tạo và xác thực chữ ký điện tử.
Bên cạnh đó, cần tối ưu hơn nữa các phép tốn bằng các cài đặt được thử
nghiệm với các ngơn ngữ lập trình mạng.
Tác giả mong muốn có thể tiếp tục phát triển để đưa các kết quả đã nghiên cứu
vào ứng dụng thực trong thực tế.


11


Đồ án Cơ sở lập trình

TÀI LIỆU THAM KHẢO

12


Đồ án Cơ sở lập trình

PHỤ LỤC
Sinh viên bỏ Code từng phần vào đây.{Font: Time New Roman; thường; cỡ
chữ: 12; dãn dòng: 1,3; căn lề: justified}

13



×