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

Đồ án xây dựng phần mềm mã hoá khoá công khai

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 (723.78 KB, 66 trang )

Đồ án tốt nghiệp chuyên ngành Mạng Máy Tính

MỤC LỤC
MỤC LỤC...............................................................................................................1
DANH MỤC HÌNH VẼ..........................................................................................3
CHƯƠNG 1: TỔNG QUAN VỀ LÝ THUYẾT MẬT MÃ.................................5
1.1.

Giới thiệu về mật mã học.........................................................................5

1.1.1. Giới thiệu............................................................................................5
1.1.2. Các hệ mật mã cổ điển........................................................................6
1.1.3. Hệ mật mã chuẩn DES........................................................................9
1.2.

Hệ mật mã khóa cơng khai.....................................................................19

1.2.1. Giới thiệu..........................................................................................19
1.2.2. Cơ sở tốn học..................................................................................20
1.2.3. Hệ mật RSA......................................................................................23
1.2.4. Hệ mật Rabin....................................................................................25
1.2.5. Hệ mật ElGamal................................................................................26
1.3.

Hàm băm và chữ ký số...........................................................................27

1.3.1. Giới thiệu hàm băm..........................................................................27
1.3.2. Chữ ký số..........................................................................................28
CHƯƠNG 2: NGHIÊN CỨU HỆ MẬT RSA VÀ HÀM BĂM MD5...............30
2.1.


Hệ mật RSA...........................................................................................30

2.1.1. Sơ lược về RSA................................................................................30
2.1.2. Tạo khóa...........................................................................................30
2.1.3. Mã hóa..............................................................................................31
2.1.4. Giải mã..............................................................................................31
2.1.5. Cơ sở của RSA..................................................................................31
2.1.6. Tính bảo mật của RSA......................................................................31
1


Đồ án tốt nghiệp chuyên ngành Mạng Máy Tính
2.2.

Hàm băm MD5.......................................................................................32

2.2.1. Giới thiệu..........................................................................................32
2.2.2. Mơ tả thuật tốn................................................................................32
2.2.3. Tính bảo mật của MD5.....................................................................37
CHƯƠNG 3: XÂY DỰNG PHẦN MỀM MÃ HÓA KHÓA CƠNG KHAI.....38
3.1.

Cấu trúc tổng qt..................................................................................38

3.2.

Xây dựng chương trình..........................................................................38

3.2.1. Lớp RSA...........................................................................................38
3.2.2. Lớp MD5..........................................................................................43

3.2.3. Lớp PublicKey..................................................................................43
3.2.4. Source code.......................................................................................49
3.3.

Chạy chương trình..................................................................................62

3.3.1. Xem khóa..........................................................................................62
3.3.2. Mã hóa..............................................................................................62
3.3.3. Chữ ký điện tử..................................................................................63
KẾT LUẬN...........................................................................................................65
TÀI LIỆU THAM KHẢO.....................................................................................66

2


Đồ án tốt nghiệp chuyên ngành Mạng Máy Tính

DANH MỤC HÌNH VẼ
Hình 1-1. Sơ đồ khái qt của thuật tốn lập mật mã DES..................................14
Hình 1-3. Tạo chữ ký số.......................................................................................33
Hình 1-4. Thẩm định chữ ký số............................................................................33
Hình 2-1. Sơ đồ vịng lặp chính của MD5...........................................................37
Hình 3-1. Hiển thị khóa........................................................................................66
Hình 3-2. Mã hóa một số ngun.........................................................................67
Hình 3-3. Mã hóa một chuỗi ký tự.......................................................................67
Hình 3-4. Chữ ký điện tử......................................................................................68

3



Đồ án tốt nghiệp chuyên ngành Mạng Máy Tính
LỜI MỞ ĐẦU
Trước đây khi cơng nghệ máy tính chưa phát triển, khi nói đến vấn đề an tồn bảo
mật thơng tin, chúng ta thường hay nghĩ đến các biện pháp nhằm đảm bảo cho thông
tin được trao đổi hay cất giữ một cách an tồn và bí mật, chẳng hạ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ã 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 trữ 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ệ, đặc
biệt là sự phát triển của Internet, việc sử dụng máy tính và điện thoại cá nhân ngày
càng trở nên phổ biến, dẫn đến càng nhiều thông tin được lưu trữ trên máy tính và gửi
trên mạng Internet. Do đó nhu cầu về an tồn và bảo mật thơng tin trên máy tính càng
nhiều và việc sử dụng mật mã mã hóa càng được phổ biến. Vì vậy em chọn đề tài xây
dựng phần mềm mã hóa khóa cơng khai để phục vụ mã hóa thơng tin trên mạng.

4


Đồ án tốt nghiệp chuyên ngành Mạng Máy Tính

CHƯƠNG 1:

TỔNG QUAN VỀ LÝ THUYẾT MẬT MÃ

1.1. Giới thiệu về mật mã học
1.1.1. Giới thiệu
Mật mã học là một lĩnh vực liên quan đến các kỹ thuật ngơn ngữ và tốn học để
đảm bảo an tồn thơng tin, cụ thể là trong thơng tin liên lạc. Trong lịch sử, mật mã học
gắn liền với q trình mã hóa; điều này có nghĩa là nó gắn với các cách thức để chuyển
đổi thông tin từ dạng này sang dạng khác nhưng ở đây là từ dạng thông tin có thể nhận

thức được thành dạng khơng nhận thức được, làm cho thông tin trở thành dạng không
thể đọc được nếu như khơng có các kiến thức bí mật. Q trình mã hóa được sử dụng
chủ yếu để đảm bảo tính bí mật của các thơng tin quan trọng, chẳng hạn trong cơng
tác tình báo, qn sự hay ngoại giao cũng như các bí mật về kinh tế, thương mại. Trong
những năm gần đây, lĩnh vực hoạt động của mật mã hóa đã được mở rộng: mật mã hóa
hiện đại cung cấp cơ chế cho nhiều hoạt động hơn là chỉ duy nhất việc giữ bí mật và có
một loạt các ứng dụng như: chứng thực khóa cơng khai, chữ ký số, bầu cử điện
tử hay tiền điện tử. Ngoài ra, những người khơng có nhu cầu thiết yếu đặc biệt về tính
bí mật cũng sử dụng các cơng nghệ mật mã hóa, thơng thường được thiết kế và tạo lập
sẵn trong các cơ sở hạ tầng của cơng nghệ tính tốn và liên lạc viễn thông.
Mật mã học là một lĩnh vực liên ngành, được tạo ra từ một số lĩnh vực khác. Các
dạng cổ nhất của mật mã hóa chủ yếu liên quan với các kiểu mẫu trong ngơn ngữ. Gần
đây thì tầm quan trọng đã thay đổi và mật mã hóa sử dụng và gắn liền nhiều hơn
với toán học, cụ thể là toán học rời rạc, bao gồm các vấn đề liên quan đến lý thuyết
số, lý thuyết thơng tin, độ phức tạp tính tốn, thống kê và tổ hợp. Mật mã hóa cũng
được coi là một nhánh của cơng nghệ, nhưng nó được coi là khơng bình thường vì nó
liên quan đến các sự chống đối ngầm. Mật mã hóa là cơng cụ được sử dụng trong an
ninh máy tính và mạng.

5


Đồ án tốt nghiệp chuyên ngành Mạng Máy Tính
1.1.2. Các hệ mật mã cổ điển
a) Mã chuyển dịch
Các hệ mật mã chuyển dịch đều có bảng ký tự bản rõ và bảng ký tự bản mã là
bảng ký tự của ngon ngữ viết thơng thường. Vì bảng ký tự tiếng Việt dùng nhiều dấu
phụ làm cho cách xác định ký tự khó thống nhất nên ta sẽ sử dụng bảng ký tự tiếng
Anh để minh họa. Bảng ký tự này gồm có 26 ký tự, được đánh dấu từ 0 đến 25. Ta có
thể đồng nhất nó với tập Z26. Được định nghĩa như sau:

S = (P , C , K , E , D ) ,
Trong đó: P = C = K = Z26 , các ánh xạ C và D được cho bởi:
Với mọi K, x,y ∈ Z26: C(K,x)=x+K mod 26
D(K,y)=y-K mod 26
Các hệ mật đã được xác định như vậy là đúng đắn, vì với mọi K, x , y ∈ Z26

ta đều có:
dk(ek(x)) = (x +K ) - K mod26 = x.
Các hệ mật mã chuyển dịch đã được sử dụng từ rất sớm. Hệ mật mã với K=3 đã
được dùng bởi J.Caesar từ thời đế quốc La Mã, được gọi là hệ mã Caesar.
b) Mã thay thế
Sơ đồ các hệ mật mã được định nghĩa như sau:
S = (P , C , K , E , D ) ,
trong đó: P = C = Z26 , K là tập hợp tất cả các phép hoán vị trên Z26 các ánh xạ C
và D được cho bởi:
e(x)= π(x),
d π(y)= π-1(y),
với mọi x ∈ P, y ∈ C, π ∈ K là một phép hoán vị trên Z26.
Ta thường đồng nhất Z26 với bảng ký tự tiếng Anh, do đó phép hốn vị trên Z26
cũng được hiểu là một phép hoán vị trên tập hợp các ký tự tiếng Anh.
c) Mã apphin
Hệ mật mã apphin được định nghĩa như sau:
S = (P , C , K , E , D ) ,
Trong đó P=C= Z26, K={(a,b) ∈ Z26 x Z26 | gcd(a,26)=1},

6


Đồ án tốt nghiệp chuyên ngành Mạng Máy Tính
Các ánh xạ C và D được cho bởi:

Ek(x)=ax+b mod26,
Dk(y)= a-1(y-b)mod26
Với mọi x ∈ P, y ∈ C, K=(a,b) ∈ K.
Có điều kiện gcd(a,26)=1 là để đảm bảo có phần tử nghịch đảo a -1mod26 của a,
làm cho thuật toán giải mã d k ln thực hiện được. Có tất cả Φ(26)=12 số a ∈ Z26
nguyên tố với 26, đó là các số
1,3,5,7,9,11,15,17,19,21,23,25
và các số nghịch đảo theo mod26 tương ứng của chúng là
1,9,21,15,3,19,7,23,11,5,17,25
Thí dụ với bản rõ “hengapnhauvaochieuthubay” có dãy số tương ứng là:
x= 7 4 13 6 0 15 13 7 0 20 21 0 14 2 7 8 4 20 1 0 24
nếu dùng khóa K=(5,6) ta sẽ được bản mã:
y= 15 0 19 10 6 3 19 15 6 2 7 6 24 16 15 20 0 2 23 15 2 11 6 22,
chuyển sang dòng ký tự tiếng Anh ta được bản mã:
patkgdtpgchgyquacxpclgw.
d) Mã Vigenere
Sơ đồ mật mã này lấy tên cua Blaise de Vigenere, sống vào thế kỷ 16. Hệ mật
Vigenere không thực hiện trên từng ký tự một, mà được thực hiện trên từng bộ m ký tự
(m là số nguyên dương).
Sơ đồng hệ mật Vigenere được định nghĩa như sau:
S=(P,C,K,C,D),
m
trong đó P=C=K= Z26
, các ánh xạ C và D được cho bởi:

ek(x1,…, xm) = (x1+k1,…, xm+km) mod26
dk(y1,…, ym) = (y1-k1,…, xm-km) mod26
với mọi x=(x1,…, xm) ∈ P, y= (y1,…, ym) ∈ C, K= (k1,…, km) ∈ K.

7



Đồ án tốt nghiệp chuyên ngành Mạng Máy Tính
Sơ đồ Vigenere có thể xem là mở rộng của sơ đồ mã chuyển dịch, nếu mã chuyển
dịch thực hiện việc chuyển dịch từng ký một thì mã Vigenre thực hiện đồng thời từng
bộ m ký tự liên tiếp. Thí dụ lấy m =6 và K = (2,8,15,7,4,17). Để lập mã cho bản rõ
Hengapnhauvaochieuthubay,
ta cũng chuyển nó thành dãy số và tách thành từng đoạn 6 số liê tiếp:
x= 7 4 13 6 0 15 | 13 7 0 20 21 0 | 14 2 7 8 4 20 | 19 7 20 1 0 24
nếu độ dài của x không phải là bội số của 6, ta có thể quy ước thêm vào đoạn cuối của
x một số phần tử nào đó, chẳng hạn là các số 0, để bao giờ cũng có thể xem là x tách
được thàng các đoạn có 6 số liên tiếp. Cộng theo mod26 các ố trong từng đoạn đó với
các số tương ứng trong khóa K ta sẽ được bản mã
y=9 12 2 13 4 6 | 15 15 15 1 25 17 | 16 10 22 15 8 11 | 21 15 9 8 4 15
chuyển sang dãy ký tự ta được bản mã là
jmcnegpppbzrqkwpilvpjiep
Từ bản mã trên, dùng thuật toán giải mã tương ứng ta thu được bản rõ ban đầu.
e) Mã hóa vị
Các hệ mã hoán vị cũng được thực hiện trên từng bộ m ký tự liên tiếp, nhưng bản
mật mã chỉ là một hoán vị của các ký tự trong từng bộ m ký tự của bản rõ. Ta ký hiệu
Sm là tập hợp tất cả các phép hoán vị của tập hợp {1,2, ,m}. Sơ đồ các phép hoán vị
được cho bởi
S=(P, C, K, C, D),
trong đó P=C= Z26m , K = Sm, các ánh xạ C và D được cho bởi:
ek(x1,…, xm) = (x1+k1,…, xm) = (x(1),…, x(m))
dk(y1,…, ym) = (x1+k1,…, xm) = (x-1(1),…, x-1(m)),
với mọi x=(x1,…, xm) ∈ P, y=(y1,…, ym) ∈ C, K= ∈ Sm , -1 là hoán vị nghịch
đảo của .

8



Đồ án tốt nghiệp chuyên ngành Mạng Máy Tính
Thí dụ: chọn m =6 và phép hoạn vị  ∈ S6 được cho bởi:
i= 1 2 3 4 5 6
(1) = 3 5 2 6 4 2
Khi đó phép hốn vị -1 sẽ là
j= 1 2 3 4 5 6
-1(j) =3 6 1 5 2 4
Với bản rõ hengapnhauvaochieuthubay, tức cũng là với
x= 7 4 13 6 0 15 | 13 7 0 20 21 0 | 14 2 7 8 4 20 | 19 7 20 1 0 4
ta sẽ có bản mã tương ứng là:
y= 13 0 7 15 6 4 0 21 13 0 20 7 7 4 14 20 8 2 20 0 19 24 1 7
chuyển thành dãy ký tự là nahpgeavnauhheouicuatybh. Dùng cho từng bộ 6 ký tự liên
tiếp của bản mật mã này (tức là của ) phép giải mã d k ta sẽ thu lại được x và bản rõ ban
đầu.
1.1.3. Hệ mật mã chuẩn DES
DES (viết tắt của Data Encryption Standard, hay Tiêu chuẩn Mã hóa Dữ liệu) là
một phương pháp mật mã hóa được FIPS (Tiêu chuẩn Xử lý Thơng tin Liên bang Hoa
Kỳ) chọn làm chuẩn chính thức vào năm 1976. Sau đó chuẩn này được sử dụng rộng
rãi trên phạm vi thế giới.

9


Đồ án tốt nghiệp chun ngành Mạng Máy Tính
Thuật tốn DES được mơ tả như sau:

Hình 1-1. Sơ đồ khái quát của thuật toán lập mật mã DES


10


Đồ án tốt nghiệp chun ngành Mạng Máy Tính
Mơ tả DES:
DES mã hoá một xâu bit x của bản rõ độ dài 64 bằng một khoá 56 bit. Bản mã
nhận được cũng là một xâu bit có độ dài 64.
Thuật toán tiến hành theo 3 bước:
B1: Với bản rõ cho trước x, một xâu bit x0 sẽ được xây dựng bằng cách hoán vị
các bit của x theo phép hoán vị cố định ban đầu IP. Ta viết: x0 = IP(x) = L0R0, trong đó
L0 gồm 32 bit đầu và R0 là 32 bit cuối.
B2: Sau đó tính tốn 16 lần lặp theo một hàm xác định. Ta sẽ tính LiRi, 1≤ i ≤ 16
theo quy tắc sau:
Li = Ri-1; Ri = Li-1 ⊕ f(Ri-1, ki)
Trong đó:
-⊕ là phép loại trừ của hai xâu bit
- f là một hàm sẽ được mô tả ở sau
- k1, k2, …, k16 là các xâu bit có độ dài 48 được tính như 1 hàm của khóa k (ki
chính là một phép chọn hốn vị bit trong k).
Một vịng của phép mã hóa được mơ tả như sau:

B3: Áp dụng phép hốn vị ngược IP-1 cho xâu bit R16L16, ta thu được bản mã y.
Tức là y = IP-1(R16L16). Hãy chú ý thứ tự đã đảo của L16 và R16
11


Đồ án tốt nghiệp chun ngành Mạng Máy Tính

 Mơ tả hàm f:
Hàm f có 2 biến vào:

-

Xâu bit A có độ dài 32
Xâu bit J có độ dài 48
Đầu ra của f là xâu bit có độ dài 32
Các bước thực hiện:
B1: Biến thứ nhất A được mở rộng thành một xâu bit độ dài 48 theo một hàm

mở rộng cố định E. E(A) gồm 32 bit của A (được hoán vị theo cách cố định) với 16 bit
xuất hiện hai lần.
B2: Tính E(A) ⊕J và viết kết quả thành một chuỗi 8 xâu 6 bit là B 1 B2 B3 B4 B5
B6 B7 B 8
B3: Bước tiếp theo dùng 8 bảng S1S1,…,S8 ( được gọi là các hộp S ). Với mỗi S i
là một bảng 4x6 cố định có các hàng là các số nguyên từ 0 đến 15. Với xâu bit có độ
dài 6 (kí hiệu Bi = b1 b2 b3 b4 b5 b6 b7 b8), ta tính Sj (Bj) như sau:
- Hai bit b1b6 xác định biểu diễn nhị phân hàng r của Sj (0<=r<=3)
- Bốn bit (b2b3b4b5) xác định biểu diễn nhị phân của cột c của Sj(0<=c<=15)
- Khi đó Sj(Bj) sẽ xác định phần tử Sj(r, c) ; phần tử này viết dưới dạng nhị phân
là một xâu bit có độ dài 4.
- Bằng cách tương tự tính các Cj = Sj(Bj), (1 ≤ j ≤ 8)
B4: Xâu bit C = C1 C2 … C8 có độ dài 32 được hốn vị theo phép hoán vị cố
định P. Xâu kết quả là P(C) được xác định là f(A, J)

12


Đồ án tốt nghiệp chun ngành Mạng Máy Tính

Phép hốn vị ban đầu IP:


13


Đồ án tốt nghiệp chuyên ngành Mạng Máy Tính
Bảng này có ý nghĩa là bit thứ 58 của x là bit đầu tiên của IP(x); bit thứ 50 của x
là bit thứ 2 của IP(x)
Phép hoán vị ngược IP-1:

Hàm mở rộng E:

14


Đồ án tốt nghiệp chuyên ngành Mạng Máy Tính
Các hộp S:

15


Đồ án tốt nghiệp chuyên ngành Mạng Máy Tính

16


Đồ án tốt nghiệp chun ngành Mạng Máy Tính

Phép hốn vị P:

Mơ tả tính bảng khóa từ khóa k.
-


-

Trên thực tế k là một xâu bit độ dài 64, trong đó có 56 bit khóa và 8 bit kiểm tra
tính chẵn lẻ nhằm phát hiện sai.
Các bit ở các vị trí 8, 16, … , 64 được xác định sao cho mỗi byte chứa một số lẻ
các số “1”. Bởi vậy, một sai sót đơn lẻ có thể phát hiện được trong mỗi nhóm 8
bit.
Các bit kiểm tra bị bỏ qua trong q trình tính bảng khóa.

17


Đồ án tốt nghiệp chuyên ngành Mạng Máy Tính
Các bước tính bảng khóa DES:
-

Với một khóa k 64 bit cho trước, ta loại bỏ các bit kiểm tra tính chẵn lẻ và hốn
vị các bit cịn lại của k theo phép hoán vị cố định PC-1. Ta viết PC-1(k) = C0D0
Với i thay đổi từ 1 đến 16:
Ci = LSi(Ci-1)
Di = LSi(Di-1)

18


Đồ án tốt nghiệp chuyên ngành Mạng Máy Tính

1.2. Hệ mật mã khóa cơng khai
1.2.1. Giới thiệu

Mật mã hóa khóa cơng khai là một dạng mật mã hóa cho phép người sử dụng trao
đổi các thông tin mật mà không cần phải trao đổi các khóa chung bí mật trước đó. Điều
này được thực hiện bằng cách sử dụng một cặp khóa có quan hệ tốn học với nhau là
khóa cơng khai và khóa cá nhân (hay khóa bí mật).
Thuật ngữ mật mã hóa khóa bất đối xứng thường được dùng đồng nghĩa với mật
mã hóa khóa cơng khai mặc dù hai khái niệm khơng hồn tồn tương đương. Có những
thuật tốn mật mã khóa bất đối xứng khơng có tính chất khóa cơng khai và bí mật như
đề cập ở trên mà cả hai khóa (cho mã hóa và giải mã) đều cần phải giữ bí mật.
Trong mật mã hóa khóa cơng khai, khóa cá nhân phải được giữ bí mật trong khi
khóa cơng khai được phổ biến cơng khai. Trong 2 khóa, một dùng để mã hóa và khóa
cịn lại dùng để giải mã. Điều quan trọng đối với hệ thống là khơng thể tìm ra khóa bí
mật nếu chỉ biết khóa cơng khai.
Hệ thống mật mã hóa khóa cơng khai có thể sử dụng với các mục đích:
-

Mã hóa: giữ bí mật thơng tin và chỉ có người có khóa bí mật mới giải mã được.
Tạo chữ ký số: cho phép kiểm tra một văn bản có phải đã được tạo với một khóa
bí mật nào đó hay khơng.
Thỏa thuận khóa: cho phép thiết lập khóa dùng để trao đổi thơng tin mật giữa 2
bên.

19


Đồ án tốt nghiệp chuyên ngành Mạng Máy Tính
1.2.2. Cơ sở tốn học
 Cấu trúc đại số
Định nghĩa nhóm: Tập hợp G đó với phép tốn . đã cho được gọi là nhóm, nếu
nó thỏa mãn các tính chất sau với mọi phần tử a, b, c thuộc G:
-


Tính kết hợp (a.b).c = a.(b.c)
Có đơn vị e: e.a = a.e = a
Có nghịch đảo a-1: a.a-1 = e
Nếu có thêm tính giao hốn a.b = b.a, thì gọi là nhóm Aben hay nhóm giao
hốn.

Định nghĩa nhóm xyclic:
-

Định nghĩa lũy thừa như là việc áp dụng lặp phép tốn: Ví dụ: a3 = a.a.a

-

Và đơn vị e=a0

-

Một nhóm được gọi là xyclic nếu mọi phần tử đều là lũy thừa
của một phần tử cố định nào đó. Chẳng hạn b = a k đối với a cố định và
mỗi b trong nhóm. Khi đó a được gọi là phần tử sinh của nhóm.

Vành: Cho một tập R các “số” với hai phép toán được gọi là cộng và nhân. Ở đây
“số” được hiểu là phần tử của tập hợp và hai phép tốn trên xác định trên tập hợp đó.
Tập với hai phép toán trên được gọi là vành, nếu hai phép tốn thoả mãn các tính chất
sau:
-

Với phép cộng, R là nhóm Aben
Với phép nhân, có:

+ tính đóng và tính kết hợp
+ Tính phân phối đối với phép cộng a(b+c) = ab + ac

- Nếu phép nhân có tính giao hốn thì tạo thành vành giao hốn.
- Nếu phép nhân có nghịch đảo và khơng có thương 0 (tức là khơng có hai
phần khác 0 mà tích của chúng lại bằng 0), thì nó tạo thành miền ngun
Trường: là một tập hợp F với hai phép toán cộng và nhân, thoả mãn tính chất:
-

Với phép cộng F là nhóm Aben
Với phép nhân F trừ phần tử 0 là nhóm Aben.
F là một vành

20



×