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

Báo cáo mã hóa và giải mã với hệ mã hóa Elgamal

22 1,5K 15

Đ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

Định dạng
Số trang 22
Dung lượng 1,09 MB
File đính kèm Demo + Source Code + Bao cao.rar (18 MB)

Nội dung

Chương trình mô phỏng hệ mã hóa Elgamal, bao gồm Mã hóa Giải mã theo Elgamal và Chữ ký số Elgamal.Ngoài ra còn tích hợp 2 công cụ:Tính phần tử nghịch đảo theo Euclid vàTính lũy thừa số lớn theo Bình phương và nhânDemo + Source code Java ở đính kèm

Trang 1

TRUYỀN THÔNG

ĐẠI HỌC THÁI NGUYÊN

-O0O -

BÁO CÁO BÀI TẬP LỚN

MÔN: An toàn và bảo mật thông tin

Trang 3

LỜI NÓI ĐẦU

Ta biết rằng tin truyền trên mạng rất dễ bị lấy cắp Để đảm bảo việc truyền tin an toàn người ta thường mã hoá thông tin trước khi truyền đi Việc mã hoá thường theo quy tắc nhất định gọi là hệ mật mã

Hiện nay có hai loại hệ mật mã: mật mã cổ điển và mật mã khoá công khai Mật mã cổ điển dễ hiểu, dễ thực thi nhưng độ an toàn không cao Vì giới hạn tính toán chỉ thực hiện trong phạm vi bảng chữ cái sử dụng văn bản cần mã hoá Với các hệ mã cổ điển, nếu biết khoá lập mã hay thuật toán lập mã, người ta có thể "dễ" tìm ra được bản rõ Ngược lại các hệ mật mã khoá công khai cho biết khoá lập mã K và hàm lập mã Ck thì cũng rất "khó" tìm được cách giải mã

Hệ mã hóa với khoá công khai Elgamal được đề xuất năm 1985, dựa vào độ phức tạp của bài toán lôgarit rời rạc Với chủ đề 5, “cài đặt hệ mã Elgamal”, chúng ta sẽ có cái nhìn tổng quan về hệ

mã hóa công khai Elgamal

Nhóm 8

MỤC LỤC

Trang 4

1.6 Thám mã đối với hệ mật mã elgamal

1.6.1.Thuật toán Shank(cân bằng thời gian)

1.6.2.Thuật toán Pohlig-Hellman

1.7 Thuật toán mật mã khóa bất đối xứng tương lai(Advanced Elgamal)

1.7.1 Thuật toán

1.7.2 quá trình mã hóa

1.7.3 quá trình giải mã

1.7.4.Chứng minh thuật toán

1.7.5 Đánh giá độ phức tạp thuật toán

1.7.6 Kết luận

Phần II : Lập trình (code)

Trang 5

PHẦN I: LÝ THUYẾT

1.1.Cơ sở xây dựng hệ mã Elgamal

Hệ mật mã elgamal được xây dựng dựa trên bài toán logarithm rời rạc

Bài toán logarithm được phát biểu như sau:

là phần tử nguyên thủy Giả sử P= Zp* , C= Zp* x Zp* Ta định nghĩa :

Trang 8

Kq = 126

= > x =133.126 mod 569 = 257

Vậy người B sau khi giải mã sẽ nhận được bản rõ x= 257

1.4 Ưu nhược điểm của hệ mật mã Elgamal

Do được xây dựng từ bài toán logarithm rời rạc nên hệ mã khó tìm được các loagarithm rời rạc nếu p được chọn cẩn thận Để khó tấn công p phải có ít nhất 150 chữ số và (p-1) phải có ít nhất 1 thừa số nguyên tố lớn

Dung lượng bộ nhớ dành cho việc lưu trữ các bản mã là lớn gấp đôi so với các hệ mã khác

Do việc sử dụng các số nguyên tố nên việc sinh khóa và quản lý khóa cũng khó khăn hơn các

hệ mã khối

1.5 Độ phức tạp của hệ mật mã Elgamal

Theo thời gian: O(p)

Theo không gian:O(1)

1.6 Thám mã đối với hệ mật mã elgamal

1.6.1.Thuật toán Shank(cân bằng thời gian)

Nếu chúng ta có đủ bộ nhớ thì có thể sử dụng bộ nhớ đó để làm giảm thời gian thực hiện của bài toán xuống

Output : cần tìm a sao cho αa mod p = β

Thuật toán:

Bước 2: Sắp xếp các cặp tj: (j, αm.j mod p ) theo αm.j mod p và lưu vào danh sách L1

Trang 9

Bước 4: Sắp xếp các cặp ti: (I, β.α-i mod p) theo β.α-i mod p và lưu vào danh sách L2.

Bước 5: Tìm trong hai danh sách L1và L2 xem có tồn tại cặp (j, αm.j mod p) và (I, β.α-i mod p) nào mà αm,j mod p= β.α-i mod p (tọa độ thứ 2 của hai cặp bằng nhau)

Bước 6: a=(m.j+i) mod (p-1)

= > am.j+i mod p = β mod p

= > a=(m.j+i) mod (p-1)

Độ phức tạp thuật toán:

L1 và L2 , đều là các phép toán lũy thừa phụ thuộc vào j và i ; mà j và I lại phụ thuộc vào m nên có thể nhận thấy là thuật toán này chỉ có thể áp dụng trong những trường hợp p nhỏ

Trang 11

B2: Sắp xếp các cặp tj theo hướng tăng dần của αm.j mod p

Trang 12

B5: Tìm trong hai danh sách L1và L2 xem có tồn tại cặp (j, αm.j mod p) và (I, β.α-i mod p) nào

Ta thấy cặp tj(1,38) và cặp ti(4,38) có tọa độ thứ 2 bằng nhau cùng bằng 38 và cặp tj(5,64) với cặp ti(7,64) có tọa độ thứ 2 bằng 64

= > chon : bộ 1: j=1 ;i=4 ; bộ 2: j=5;i=7

Trang 13

1 50 55

= > β= 55 đúng theo bài ra )

1.6.2.Thuật toán Pohlig-Hellman

Có những trường hợp đặc biệt mà bài toán Logarithm rời rạc có thể giải quyết với độ phức tạp

với các trường hợp như vậy đã được Pohlig và Hellman đưa ra vào năm 1978

Giả sử, p-1 = 2n

p, p là một số lẻ và α(p-1)/2 mod p= -1 Gọi m là số nguyên thuộc

Trang 14

=

-1 nếu m1=1

toán là : n.(2[log2p]+2) ~O((log2p)2)

1.7 Thuật toán mật mã khóa bất đối xúng tương lai(Advanced Elgamal)

1.7.1 Thuật toán

Thuật toán Elgamal còn nhược điểm khá lớn là tạo ra các văn bản mã giống nhau nếu cùng khối văn bản gốc Điều này là một yếu điểm chung của phương pháp mật mã khóa bất đối xứng, làm giảm tính an toàn của thuật toán vì có thế sự dụng phương pháp thám mã theo xác suất[1,2] Mặt khác, các khối dữ liệu sau mã hóa đi trên mạng, do chủ quan hay khách quan, một vài khối có thế

bị mất đi hoặc thêm vào hoặc bị thay đổi nội dung Nơi nhận hoàn toàn không phát hiện được Thuật toán sau giải quyết vấn đề này

đủ khó Có thể chọn bằng 8, 16, 32, 64 hoặc 128 byte

Bước 2: Thực hiện dịch vòng trái LCS(Left Circular Shift) từng byte của A[i] theo vectơ dịch

SV(Shift Vectơ) thu đưoojwc B[i]

B[i][j]=A[i][j]<<<SV

SV là ma trận hàng gồm n phần tử, mỗi phần tử thỏa điều kiện:

0≤ SV[i] ≤ 7

Trang 15

Bước 3: Thu được văn bản sau mã hóa bằng cách:

C[i]=B[i] XOR C[i-1]

Trong đó C[i-1] là văn bản liền trước Sử dụng vectơ khởi tạo IV(Initial Vectơ) cho lần đầu tiên

1.7.3 quá trình giải mã

Bước 1: Tìm B[i] = C[i] XOR C[i-1], sử dụng vectơ khởi tạo IV(Inital Vectơ)cho lần đầu tiên.

A[i][j]=B[i][j]<<< SV

1.7.4.Chứng minh thuật toán

Trước tiên ta cần chứng minh:

Nếu a XOR b = c thì c XOR b = a (1)

a XOR b XOR c = a XOR c XOR b (2)

xy mod z = [x(y mod z)] mod z (3)

Chứng minh(1): Xét bảng chân trị sau

Trang 16

So sánh cột 1 và 4, ta thấy (1) đúng với số 1 bit Vì phép XOR thực hiện trên từng bit, nên (1) cũng dúng trong trường hợp a và b là số nhiều bit Vậy (1) đã được chứng minh

Chứng minh(2): Tương tự, xét bảng chân trị sau:

So sánh cột 4 và 5, ta thấy (2) đã được chứng minh

Chứng minh(3): xy mod z = [x(y mod z)] mod z

Trang 17

xy= (k+mz) + r3

So sánh với biểu thức(1’) ta được:

(k + mz)x + r3 = nz + r1

Chứng minh thuật toán giải mã:

Theo bước 3 của quá trình mã hóa, ta có:

C[i] = B[i] XOR C[i-1]

Dựa vào (1) suy ra B[i] = C[i] XOR C[i-1]

A[i] = B[i] <<

hóa vào ta có:

Trang 18

Thay vào (*) ta thu được

= X[i]

=VP(đpcm)

1.7.5 Đánh giá độ phức tạp thuật toán

Thuật toán phát triển dựa trên độ khó của bài toàn logarit trong Elgama nên vẫn giữ được ưu điểm khó thám mã tương đương với RSA và Elgamal

Để thám mã thành công thuật toán Elgamanl độ dài 64 byte, với máy tính đơn có bộ vi xử

lý PIV 2.6 GHz, cần thời gian 300000 giờ(khoảng 34 năm) Thế nhưng nếu sử dụng mạng gồm

100000 máy thì thời gian thám mã chỉ còn hơn 3 giờ(theo tài liệu tính toán của RSA Inc)

Thuật toán Elgamal giải quyết tốt vấn đề bảo mạt, nhờ sử dụng vectơ dịch SV theo ma trận hàng Một số tính năng ưu việt nổi bật của thuật toán này như sau:

Trang 19

Độ bảo mật được tăng cường rất lớn so với các thuật toán khóa mã công khai hiện tại Với

cùng kích thước bài toán 64byte nhu trên, vectơ dịch SV là ma traanj1x64, mỗi phân của SV có giá trị 0 ddeens7 Đế thám mã thành công thuật toán Elgamal, ngoài việc vượt qua độ khó của bài toán logarit như trên, cần phải tìm được chính xác SV Tập không gian SV là

vectơ Theo trung tâm ứng dụng siêu quốc gia MỸ,(12/2003),

trên giây Với hệ thống siêu mạng này, theo ước tính của tác giả, thời gian để tìm ra chính xác SV

độ bảo mật tăng lên vô cùng lớn

Kích thước dữ liệu sau mã hóa không thay đổi So với thuật toán Elgamal, ứng với mỗi dữ

liệu x sẽ cho ra văn bản mã c gồm và Riêng thuật toán Elgamal, chỉ sinh ra văn bản mã C[i]

có kích thước bằng với kích thước văn bản gốc X[i]

Chống thám mã theo xác suất xuất hiện Các phương pháp mã hóa theo mô hình khóa đối

xứng đều có cùng nhược điểm là tạo ra các khối văn bản mã giống nhau với cùng văn bản gốc Nhờ phép XOR với văn bản mã liền trước, Advanced Elgamal sẽ tạo ra các văn bản mã khác nhau cho dù văn bản gốc đầu đều giống nhau Điều nayloại bỏ hoàn toàn thám mã theo xác suất

Nhận ra sự thay đổi dữ liệu trên đường truyền Một ai đó cố tình phá hoại hệ thống bảo mật

bằng cách tạo ra các khối giống với khối văn bản mã, hay cố tình sủa đối nội dung văn bản mã trên đường truyền Theo thuật toán Elgamal và RSA, nơi nhận không phát hiện điều này Kĩ thuật XOR các văn bản mã với nhau trong thuật toán Advanced Elgamal giúp giải quyết triệt để vấn đề này

Tốc độ thực thi cao nhờ sử dụng các phép gần với ngôn ngữ máy(phép dịch vòng, phép

độ bảo mật cao, không cần định danh trước đối tác sử dụng khóa Do đó, khả năng ứng dụng trong thương mại, giao dịch điện tử, thu tín điện tử là rất lớn

Trang 20

II PHẦN LẬP TRÌNH (CODE)

// - CODE CHÍNH

-//Mã hóa và giải mã Elgamal:

//Xử lý mã hóa:

public void xulyMahoa ( int alpha , int beta , int p , int k , String banRo ){

System out print("Mã hóa:\n");

int y1 = mod tinhMod ( alpha , k , p );

//y1=alpha^k mod p (Theo Bình phương và nhân)

tBanMa setText (""+( char ) y1 );

for ( int i = ; i banRo length (); i ++){

int x2 [] = new int [ ];

x2 = doi tachSo ((int) banRo charAt ( ));

//Vì giá trị của x2 (bản rõ) có thể lớn hơn P nên cần chia nhỏ x2 ra để xử lý

//Bản mã (y1,y2=x2.beta^k mod p) (Theo Bình phương và nhân)

tBanMa append (""+( char )(( x2 [ ] * mod tinhMod ( beta , k , p )) % p ));

tBanMa append (""+( char )(( x2 [ ] * mod tinhMod ( beta , k , p )) % p ));

}

}

//Xử lý giải mã:

public void xulyGiaima ( int alpha , int p , int a , String banMa ){

System out print("Giải mã:\n");

tBetaGiai setText (""+ mod tinhMod ( alpha , , ));

// Tự sinh beta=alpha^a mod p (Theo Bình phương và nhân)

int y1 =(int) banMa charAt ( );

tBanRo setText ("");

for ( int i = ; i banMa length (); i += 2 ){

//Bản rõ x=y2*y0

//Trong đó y2 là bản mã

//y0=(y1^a)^(-1) mod p (theo Euclid + Bình phương và nhân)

int y0 = dao Calculate ( mod tinhMod ( y1 , a , p ), p );

int ix [] = new int [ ];

ix [ ]=((int) banMa charAt ( ) * y0 ) % p ;

ix [ ]=((int) banMa charAt ( + ) * y0 ) % p ;

int x = doi ghepSo ( ix ); //Ghép cặp sô trên thu được bản rõ ban đầu

tBanRo append (""+( char ) );

}

}

Trang 21

//Chữ ký số:

public void Kyten ( int alpha , int a , int p , int k , String vanbanVao ){

int beta = mod tinhMod ( alpha , a , p );

//beta=alpha^a mod p (Theo Bình phương và nhân)

int gama = mod tinhMod ( alpha , k , p );

//gama=alpha^k mod p (Theo Bình phương và nhân)

tChuky1 setText (""+( char ) beta +""+( char ) gama );

int kDao = dao Calculate ( , ( p 1 )); //kĐảo = k^(-1) mod p (theo Euclid)

for ( int i = ; i vanbanVao length (); i ++){

int x [] = new int [ ];

x = doi tachSo ((int) vanbanVao charAt ( ));

//Tách số tương tự Mã hóa và giải mã Elgamal

tChuky1 append (""+( char )(( p 1 )-( Math abs ( [ ]- a gama )* kDao %( p 1 ))));

tChuky1 append (""+( char )(( p 1 )-( Math abs ( [ ]- a gama )* kDao %( p 1 ))));

//chữ ký xichma=(bảnRõ x - a*gama)*kĐảo mod (p-1)

int gama = (int) chuky charAt ( );

int a = mod tinhMod ((int) chuky charAt ( ), gama , );

//ký hiệu a=beta^gama mod p (Theo Bình phương và nhân)

for ( int i = ; i vanbanVao length (); i ++){

int y [] = new int [ ];

//ký hiệu y = a* gama^xichma mod p (Theo Bình phương và nhân)

y 0 ]=( a * mod tinhMod ( gama ,(int) chuky charAt (( i 1 )* 2 ), p )) % p ;

y 1 ]=( a * mod tinhMod ( gama ,(int) chuky charAt (( i 1 )* 2 1 ), p )) % p ;

int x [] = new int [ ];

//Ký hiệu x=gama^chữKý mod p (Theo Bình phương và nhân)

x = doi tachSo ((int) vanbanVao charAt ( ));

int x1 = mod tinhMod ( alpha , x 0 ], p ) % p ;

int x2 = mod tinhMod ( alpha , x 1 ], p ) % p ;

Trang 22

TÀI LIỆU THAM KHẢO

[1] Nguyễn Văn Tảo, Hà Thị Thanh, Nguyễn Lan Oanh, bài giảng an toàn và bảo mật thông tin,

2011

[2] Đại học Hàng Hải, giáo trình an toàn và bảo mật thông tin,2008.

[3] Tạp chí khoa học và công nghệ, tập 44,số 2, 2006.

[4] google.com

Ngày đăng: 22/05/2016, 23:01

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w