1. Trang chủ
  2. » Công Nghệ Thông Tin

Báo cáo và chương trình bài tập lớn Mật mã an ninh mạng

19 823 18

Đ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 đề Mật Mã & An Ninh Mạng
Người hướng dẫn Giáo Viên Hướng Dẫn
Trường học Trường Đại Học Bách Khoa TP.Hồ Chí Minh
Chuyên ngành Khoa Khoa Học Và Kĩ Thuật Máy Tính
Thể loại báo cáo
Năm xuất bản 2017
Thành phố TP.Hồ Chí Minh
Định dạng
Số trang 19
Dung lượng 308,64 KB
File đính kèm MiniCryptool.zip (251 KB)

Nội dung

Assignment 1, môn Mật mã an ninh mạng, ĐH Bách khoa.Đề tài : Hiện thực chương trình áp dụng các thuật toán mã hóa3 giải thuật mã hóa : giải thuật thay thế, RSA, Huffman TreeProject mã hóa file tất cả các định dạng, sử dụng ngôn ngữ java với nền tảng JAVAFXCác chức năng chính: mã hóa file mọi định dạng với 3 thuật toán, lưu và mã hóa key file phục vụ mã hóa và giải mã, kiểm tra tính toàn vẹn của file bằng MD5

Trang 1

Trường Đại học Bách Khoa TP.Hồ Chí Minh Khoa Khoa Học Và Kĩ Thuật Máy Tính

MẬT MÃ & AN NINH MẠNG

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

Giáo viên hướng dẫn:

Sinh viên thực hiện:

1

2

3

Trang 2

1 Giới thiệu 3

1.1 Mô tả yêu cầu 3

1.2 Tổng quan 3

1.2.1 Ưu điểm 5

1.2.2 Hạn chế 5

2 Chi tiết ứng dụng 6

2.1 Các giải thuật 6

2.1.1 Giải thuật mã hóa thay thế 6

2.1.2 Giải thuật RSA 7

2.1.3 Giải thuật Huffman 8

2.2 Tính bảo mật 10

2.2.1 Giải thuật thay thế 10

2.2.2 Giải thuật RSA 10

2.2.3 Giải thuật Huffman 11

2.3 Áp dụng lên chương trình 12

2.3.1 Giải thuật thay thế 12

2.3.2 Giải thuật RSA 12

2.3.3 Giải thuật Huffman 13

3 Đánh giá, thực nghiệm 13

3.1 Giải thuật thay thế 13

3.2 Giải thuật RSA 13

3.3 Giải thuật Huffman 13

4 Khả năng mở rộng 14

PHỤ LỤC 1 14

PHỤ LỤC 2 14

Trang 3

1 Giới thiệu

1.1 Mô tả yêu cầu

Mã hoá là phương pháp giúp bảo vệ dữ liệu cá nhân nhạy cảm trên máy tính, cho dù đó là dữ liệu cá nhân, tổ chức nào đó qua mạng Internet, hay sao lưu dữ liệu

cá nhân trên các máy chủ, Cloud, , thì việc mã hoá sẽ ngăn chặn bất cứ ai có thể đọc được dữ liệu trước khi được sự cho phép của bạn Trong assignment này chúng

ta sẽ thực hiện một chương trình mã hóa để giữ cho các tập tin và thư mục trên máy tính được an toàn Cụ thể là xây dựng chương trình mã hóa các tập tin, thư mục sử dụng các giải thuật mã hóa phổ biến trong thực tế như DES, AES, RSA

và giải mã các tập tin và thư mục đó

1.2 Tổng quan

- Ngôn ngữ hiện thực : Java

- Nền tảng : Javafx

- Các định dạng file hỗ trợ: tất cả các file có dung lượng mà bộ nhớ cho phép Tổng quát về chương trình:

Chương trình thực hiện chức năng mã hóa và giải mã file, hiện thực trên 3 tab ứng với 2 giải thuật

* Subtitution Cipher

Trang 4

- Tạo key mới : tạo một key ngẫu nhiên

- Import một file key có sẵn có định dạng *.sck

- Export file key dưới định dạng *.sck

- Mã hóa một file định dạng bất kì, dung lượng không giới hạn tạo thành file

*.sce

- Giải mã file đã mã hóa có định dạng *.sce, trả về file gốc đồng thời thêm mã thời gian vào tên để tránh trùng với file cũ, kiểm tra lại bằng MD5

* RSA

Trang 5

- Tạo một bộ key RSA gồm n,e, d.

- Import RSA key từ file định dạng *.rsk

- Export key ra file định dạng *.rsk

- Mã hóa bất kì định dạng file nào tạo thành file *.rse

- Giải mã file đã mã hóa có định dạng *.rse, trả về file gốc đồng thời thêm mã thời gian vào tên để tránh trùng với file cũ, kiểm tra lại bằng MD5

* Huffman

- Tạo một cây huffman từ một file mẫu có sẵn, đồng thời hiển thị histogram của các giá trị trong file

- Import một cây Huffman từ file định dạng *.htk

- Export cây Huffman ra file định dạng *.htk

- Mã hóa một file định dạng bất kì, dung lượng không giới hạn tạo thành file

*.hte

- Giải mã file đã mã hóa có định dạng *.ht, trả về file gốc đồng thời thêm mã thời gian vào tên để tránh trùng với file cũ, kiểm tra lại bằng MD5

Trang 6

1.2.1 Ưu điểm

Tất cả các file key đều được lưu dưới dạng binary và được mã hóa bằng

password với giải thuật tương tự One-time pad

Chương trình xử lí được tất cả các định dạng file, kể cả file text lẫn file nhị phân

Ngay cả khi công khai giải thuật, người tấn công phải giải mã toàn bộ thì mới biết được key đã thử có đúng hay không

1.2.2 Hạn chế

Đối với giải thuật RSA, chỉ nên mã hóa và giải mã các file có dung lượng dưới 10MB nếu thời gian cho phép là 1 phút

Giao diện còn tương đối đơn giản

2 Chi tiết ứng dụng

2.1 Các giải thuật

2.1.1 Giải thuật mã hóa thay thế

* Giải thuật sinh key – giải thuật bánh xe sổ số(roulette wheel selection

algorithm)

Mục đích của giải thuật nhằm tạo ra key là một hóa vị 256 phần tử

Trang 7

B1: Khởi tạo xác suất ban đầu bằng nhau cho 256 phần tử

B2 : Sinh một số ngẫu nhiên S trong khoảng từ 0 đến tổng xác suất các phần

tử trong tập

B3 : với pi là xác suất được chọn của phần tử thứ i, tìm k sao cho ∑

j=1

k

p j ≥ S

B4 : thêm k vào tập kết quả, cho pi = 0 và quay lại B2, giải thuật dừng khi

kết quả đã đủ 256 phần tử

* Mã hóa :

Đầu vào key là 1 chuỗi 256 kí tự và file input, kết quả trả về trong file output B1 : Tính MD5 và kích thước của file input, ghi vào file output

B2 : Lấy ra lần lược các khối dữ liệu có kích thước tối đa 64KB đưa vào

buffer, với mỗi phần tử c kiểu byte trong buffer thực hiện phép biến đổi cho ra e

tương ứng

e = key[c+128];// vì java dùng kiểu dữ liệu có dấu

B3: Ghi output, quay lại B2 đến khi hết dữ liệu

Giải mã :

Đầu vào key là 1 chuỗi 256 kí tự và file input, kết quả trả về trong file output B1: Tìm đảo của key theo công thức

key-1[key[i]+128] = i;

B2 : đọc mã MD5và kích thước file được lưu trong file input

B3 :Lấy ra lần lược các khối dữ liệu có kích thước tối đa 64KB đưa vào

buffer, với mỗi phần tử c kiểu byte trong buffer thực hiện phép biến đổi cho ra d

tương ứng

c = key-1[e+128];

B4: Ghi output, quay lại B2 đến khi hết dữ liệu

B5 : Kiểm tra file kết quả với mã MD5 để kiểm tra key có chính xác hay không cũng như this toàn vẹn của file

Trang 8

2.1.2 Giải thuật RSA

* Giải thuật sinh key:

Mục đích của giải thuật nhằm tạo ra một cặp key đóng vai trò là khóa công khai và khóa bí mật:

B1: Khởi tạo kích thước ban đầu của N (modulus) là 512 bit

B2: Sinh một cặp số nguyên tố ngẫu nhiên gồm p trong khoảng từ 2 256 đến

2257 và q trong khoảng từ 2255 đến 2256

B3: Với cặp giá trị p và q, ta dễ dàng tính được giá trị N= pq

ϕ ( N )=( p−1)( q−1)

B4: Chọn số tự nhiên e sao cho 1<e <ϕ ( N ) và e là nguyên tố cùng nhau với

ϕ ( N )

B5: Từ khóa công khai e, ta tính được khóa bí mật d sao cho de ≡ 1(mod ϕ( N ))

* Mã hóa:

Đầu vào gồm key là khóa công khai e và file input, kết quả trả về là file output

B1 : Tính MD5 của file input, ghi vào file output

B2 : Đọc dữ liệu file input lần lượt từng khối dưới dạng byte có kích thước 64bit, sau đó mã hóa các khối dữ liệu đó

B3: Ghi dữ liệu mã hóa và kích thước khối dữ liệu sau mã hóa vào file output, quay lại B2 đến khi mã hóa hết dữ liệu

Giải mã :

Đầu vào key là khóa bí mật d và file input, kết quả trả về trong file output B1: Đọc dữ liệu dạng Integer của file input và giải mã để lấy kích thước của khối dữ liệu mã hóa

B2: Đọc tiếp dữ liệu của file input với kích thước ở bước trên, giải mã khối

dữ liệu đó và ghi vào file output

B3: Lặp lại các bước 1 và 2 cho đến khi đọc hết file input

Trang 9

B4: Kiểm tra MD5 file output với file input đã được Hash trước khi mã hóa

để kiểm tra tính toàn vẹn của dữ liệu

2.1.3 Giải thuật Huffman

* Sinh key

B1 : Tính histogram của file mẫu hoặc file input

B2 : Tạo cây huffman, áp dụng giải thuật tham lam

B2.1 : Khởi tạo heap rỗng, độ ưu tiên của một cây huffman con(sub-tree) trong heap bằng tổng xác suất của giá trị mà các node lá trong sub-tree nắm giữ

B2.2 : Cho toàn bộ các node lá vào heap, mỗi node lá nắm giữ giá trị

và xác suất của giá trị tương ứng

B2.3 : Lấy 2 sub-tree từ heap, kết hợp chúng thành một sub-tree lớn hơn thông qua một node mới, hoán vị thứ tự 2 node lấy ra để tạo ra cây ngẫu nhiên,

để tránh từ một file có thể tạo cây giống nhau trong các lần tạo key khác nhau

B2.4: Nếu trong heap còn ít hơn 2 sub-tree, tức lúc này ta đã có 1 cây huffman tree hoàn chỉnh, ngược lại tiếp tục B2.3

* Lưu trữ key

Cách 1: Danh sách cạnh

Cách 2: Các theo tác duyệt cây NLR, nếu quy ước

L : duyệt qua trái

R : duyệt qua phải E(X) : gặp lá mang giá trị X

Ví dụ : CRYPTTOOL  LE(O) RE(C)E(L)RE(T)RE(Y)RE(P)E(R)

Trang 10

* Mã hóa :

Đầu vào key là 1 cây huffman và file input, kết quả trả về trong file output B1 : Tính MD5 và kích thước của file input, ghi vào file output

B2 : Tạo từ điển, với mỗi giá trị c mã hóa, ta có 1 chuỗi bit là các đi từ gốc đến node có giá trị c Ví dụ ở trên, C : 101.

B3 : Với mỗi byte trong input, tra trong từ điển giá trị chuỗi bit tương ứng và ghi nó vào output

* Giải mã :

Đầu vào key là 1 cây huffman và file input, kết quả trả về trong file output B1 : đọc mã MD5 và kích thước file được lưu trong file input

B2 : Nếu số byte đã giải mã bằng kích thước file thì tới B5,Khởi tạo con trỏ vào node gốc của cây huffman

B3 : với mỗi bit đọc ra từ input, nếu là 0, đưa con trỏ về node trái của con trỏ, ngược lại đưa con trỏ về node phải của con trỏ

B4 : nếu con trỏ đang trỏ về node lá, ghi giá trị của node lá ra file output, tăng số byte đã giải mã lên 1 và quay về bước 2

B5 : kiểm tra file output với mã MD5

2.2 Tính bảo mật

2.2.1 Giải thuật thay thế

Trong mã hóa file text, tập giá trị nhỏ, xác suất phân bố tập trung vào các kí tự, dấu space, tab, nên khả năng bị phá giải cao hơn

Trang 11

Đối với các file mà giá trị phân bố đều, số lượng key cần thử sẽ rất lớn, và dần tiến tới 256!~8E506

2.2.2 Giải thuật RSA

Sau đây ta sẽ xem xét một số các tấn công phương pháp RSA

1 Vét cạn khóa: cách tấn công này thử tất cả các khóa d có thể có để tìm ra

bản giải mã có ý nghĩa, tương tự như cách thử khóa K của mã hóa đối xứng Với N lớn, việc tấn công là bất khả thi

2 Phân tích N thành thừa số nguyên tố N = pq : Chúng ta đã nói rằng việc

phân tích phải là bất khả thi thì mới là hàm một chiều, là nguyên tắc hoạt động của RSA Tuy nhiên, nhiều thuật toán phân tích mới đã được đề xuất, cùng với tốc độ xử lý của máy tính ngày càng nhanh, đã làm cho việc phân

tích N không còn quá khó khăn như trước đây Năm 1977, các tác giả của RSA đã treo giải thưởng cho ai phá được RSA có kích thước của N vào

khoảng 428 bít, tức 129 chữ số Các tác giả này ước đoán phải mất 40 nghìn triệu triệu năm mới có thể giải được Tuy 71 nhiên vào năm 1994, câu đố

này đã được giải chỉ trong vòng 8 tháng Bảng sau liệt kê kích thước N của

các RSA đã phá mã được cho đến hiện nay

Bảng liệt kê các mốc phá mã RSA

Trang 12

200 633 2005 Lattice sieve

Dĩ nhiên là việc phá mã trên chỉ được thực hiện trong phòng thí nghiệm Tuy

nhiên người ta cho rằng kích thước của N phải khoảng 1024 bít (309 chữ số) thì

mới bảo đảm an toàn thật sự

3 Đo thời gian: Đây là một phương pháp phá mã không dựa vào mặt toán học

của thuật toán RSA, mà dựa vào một “hiệu ứng lề” sinh ra bởi quá trình giải

mã RSA Hiệu ứng lề đó là thời gian thực hiện giải mã Giả sử người phá mã

có thể đo được thời giải mã dùng thuật toán bình phương liên tiếp Trong

thuật toán bình phương liên tiếp, nếu một bít của d là 1 thì xảy ra hai phép

modulo, nếu bít đó là 0 thì chỉ có một phép modulo, do đó thời gian thực hiện giải mã là khác nhau Bằng một số phép thử chosen-plaintext, người

phá mã có thể biết được các bít của d là 0 hay 1 và từ đó biết được d

Phương pháp phá mã này là một ví dụ cho thấy việc thiết kế một hệ mã an toàn rất phức tạp Người thiết kế phải lường trước được hết các tình huống có thể xảy ra

2.2.3 Giải thuật Huffman

Mỗi key là một trạng thái của cây huffman, trong mã hóa tập gồm 256 giá trị, key là một cây huffman có 256 lá, và các lá mang giá trị cần mã hóa, đường đi từ gốc đến lá cho biết giá trị sau khi mã hóa

Nếu không quan tâm đến các giá trị trên node lá, chỉ quan tâm đến hình dạng của cây huffman

Gọi Q(k) là số hình dạng của cây huffman có k lá, khi đó

Q(1) = 1

Q(2) = 1

Q(3) = 2

Công thức quy hoạch động tổng quát: Q (k )=

i=1

k−1

Q(i)∗Q(k −i)

Áp dụng công thức trên, ta có thể dùng đoạn chương trình sau để tính:

Trang 13

author = 'DuThien'

import math

Q = []

for i in range(257):

Q.append(0)

Q[1] = 1

Q[2] = 1

for n in range(3, 257):

for k in range(1, n):

Q[n] = Q[n] + Q[k] * Q[n - k]

print(Q[256])

Kết quả : Q(256)~4.6E149

Vậy key có thể có tối đa Q(256)*256 ! ~ 4E657

Trong trường hợp cây huffman trở thành cây cây nhị phân đầy đủ, tức khi các giá trị của file mã hóa phân bố đều, thì số trạng thái cần thử là 256 ! ~ 8E506

2.3 Áp dụng lên chương trình

2.3.1 Giải thuật thay thế

Class SC_KeyGen

Class SC_Encryptor

Class SC_Decryptor

2.3.2 Giải thuật RSA

Class RSA_KeyGen

Class RSA_Encryptor

Trang 14

2.3.3 Giải thuật Huffman

Class HT_KeyGen

Class HT_Encryptor

Class HT_Decryptor

3 Đánh giá, thực nghiệm

3.1 Giải thuật thay thế

3.2 Giải thuật RSA

3.3 Giải thuật Huffman

Trang 15

366KB 21(ms) 182(ms) 198(ms)

4 Khả năng mở rộng

Các chức năng chưa thực hiện:

- Giải thuật thay thế: sử dụng 1 block dữ liệu lớn hơn thay vì 1 byte

- Giải thuật RSA: cho phép người dùng thay đổi kích thước block cũng như tùy chỉnh thay vì khối 512bit và key sinh ngẫu nhiên, sử dụng multi-thread

để tăng tốc xử lí

- Giải thuật Huffman: xử lí các block dữ liệu lớn hơn và có kích thước khác nhau, nhằm tìm ra các block có dữ liệu giống nhau, giúp tăng hiệu quả nén

dữ liệu Nén dữ liệu trên tập chữ cái

Source code : https://github.com/duthienkt/MiniCryptool

5 Tham khảo

https://vi.wikipedia.org/wiki/RSA_(m%C3%A3_h%C3%B3a)

https://vi.wikipedia.org/wiki/M%C3%A3_h%C3%B3a_Huffman

Trang 16

PHỤ LỤC 1

Phạm Quốc Du Thiên

(51303834)

- Thiết kế giải thuật

- Giải thuật Huffman(Báo cáo, code)

- Báo cáo giải thuật thay thế

- Tổng hợp báo cáo

- Hiện thực giao diện

- Viết các thư viện hỗ trợ:

nhập suất file, cấu trúc dữ liệu

- Hiện thực mã hóa file ứng với mỗi module thuật toán

- Hiện thực lưu trữ và mã hóa file key bằng

password với One-time pad

- Fix bug, cải tiến, tăng hiệu năng cho giải thuật

50%

Nguyễn Hoàng Đức

Tâm

(51303513)

- Giải thuật RSA(Báo cáo, code)

30%

Nguyễn Thanh Hải

(51301050)

- Giải thuật thay thế(code)

- Tiêu đề báo cáo

20%

Trang 17

PHỤ LỤC 2

* Lưu một khóa:

- Tạo một key mới hoặc import một key đã có sẵn

- Chọn Export, cửa sổ chọn file xuất hiện, chọn đường dẫn muốn lưu

- Nhập password để mã hóa dữ liệu  OK

Lưu ý: Các định dạng file key và file được mã hóa chỉ phân biệt bằng tên phần mở rộng, nên có thể bị lỗi nếu mở file sai định dạng

* Mã hóa một file

Đối với giải thuật thay thế và RSA

B1: import key hoặc tạo key mới bằng cách bấm Generate, nếu tạo key mới, sau đó cần chọn Export và lưu key để giải mã

B2: chọn đường dẫn cho file input

B3: chọn Encrypt

Đối với giải thuật Huffman

Trang 18

Lư ý: trên cùng một file mẫu để tạo cây Huffman, mỗi lần tạo key sẽ có kết quả khác nhau

* Mã hóa thay thế

Trang 19

* Huffman

Ngày đăng: 06/04/2017, 15:38

HÌNH ẢNH LIÊN QUAN

Bảng liệt kê các mốc phá mã RSA - Báo cáo và chương trình bài tập lớn Mật mã an ninh mạng
Bảng li ệt kê các mốc phá mã RSA (Trang 10)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w