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

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

Đ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

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

Trường Đại học Bách Khoa TP.Hồ Chí Minh Khoa Khoa Học Kĩ Thuật Máy Tính MẬT & AN NINH MẠNG BÁO CÁO BÀI TẬP LỚN Giáo viên hướng dẫn: Sinh viên thực hiện: Tp Hồ Chí Minh, tháng 3/2017 Contents 2|Page Giới thiệu 1.1 Mô tả yêu cầu hoá phương pháp giúp bảo vệ liệu cá nhân nhạy cảm máy tính, cho dù liệu cá nhân, tổ chức qua mạng Internet, hay lưu liệu cá nhân máy chủ, Cloud, , việc hoá ngăn chặn đọc liệu trước cho phép bạn Trong assignment thực chương trình hóa để giữ cho tập tin thư mục máy tính an toàn Cụ thể xây dựng chương trình hóa tập tin, thư mục sử dụng giải thuật hóa phổ biến thực tế DES, AES, RSA giải tập tin thư mục 1.2 Tổng quan - Ngôn ngữ thực : Java - Nền tảng : Javafx - Các định dạng file hỗ trợ: tất file có dung lượng nhớ cho phép Tổng quát chương trình: Chương trình thực chức hóa giải file, thực tab ứng với giải thuật * Subtitution Cipher 3|Page - Tạo key : tạo key ngẫu nhiên - Import file key có sẵn có định dạng *.sck - Export file key định dạng *.sck - hóa file định dạng bất kì, dung lượng không giới hạn tạo thành file *.sce - Giải file hóa có định dạng *.sce, trả file gốc đồng thời thêm thời gian vào tên để tránh trùng với file cũ, kiểm tra lại MD5 * RSA - Tạo key RSA gồm n,e, d - Import RSA key từ file định dạng *.rsk - Export key file định dạng *.rsk - hóa định dạng file tạo thành file *.rse - Giải file hóa có định dạng *.rse, trả file gốc đồng thời thêm thời gian vào tên để tránh trùng với file cũ, kiểm tra lại MD5 * Huffman - Tạo huffman từ file mẫu có sẵn, đồng thời hiển thị histogram giá trị file 4|Page - Import Huffman từ file định dạng *.htk - Export Huffman file định dạng *.htk - hóa file định dạng bất kì, dung lượng không giới hạn tạo thành file *.hte - Giải file hóa có định dạng *.ht, trả file gốc đồng thời thêm thời gian vào tên để tránh trùng với file cũ, kiểm tra lại MD5 1.2.1 Ưu điểm Tất file key lưu dạng binary hóa password với giải thuật tương tự One-time pad Chương trình xử lí tất định dạng file, kể file text lẫn file nhị phân Ngay công khai giải thuật, người công phải giải toàn biết key thử có hay không 1.2.2 Hạn chế Đối với giải thuật RSA, nên hóa giải file có dung lượng 10MB thời gian cho phép phút Giao diện tương đối đơn giản 5|Page Chi tiết ứng dụng 2.1 Các giải thuật 2.1.1 Giải thuật hóa thay * Giải thuật sinh key – giải thuật bánh xe sổ số(roulette wheel selection algorithm) Mục đích giải thuật nhằm tạo key hóa vị 256 phần tử B1: Khởi tạo xác suất ban đầu cho 256 phần tử B2 : Sinh số ngẫu nhiên S khoảng từ đến tổng xác suất phần tử tập B3 : với pi xác suất chọn phần tử thứ i, tìm k cho B4 : thêm k vào tập kết quả, cho pi = quay lại B2, giải thuật dừng kết đủ 256 phần tử * hóa : Đầu vào key chuỗi 256 kí tự file input, kết trả file output B1 : Tính MD5 kích thước file input, ghi vào file output B2 : Lấy lần lược khối liệu có kích thước tối đa 64KB đưa vào buffer, với phần tử c kiểu byte buffer thực phép biến đổi cho e tương ứng e = key[c+128];// java dùng kiểu liệu có dấu B3: Ghi output, quay lại B2 đến hết liệu Giải : Đầu vào key chuỗi 256 kí tự file input, kết trả file output B1: Tìm đảo key theo công thức key-1[key[i]+128] = i; B2 : đọc MD5và kích thước file lưu file input B3 :Lấy lần lược khối liệu có kích thước tối đa 64KB đưa vào buffer, với phần tử c kiểu byte buffer thực phép biến đổi cho d tương ứng 6|Page c = key-1[e+128]; B4: Ghi output, quay lại B2 đến hết liệu B5 : Kiểm tra file kết với MD5 để kiểm tra key có xác hay không this toàn vẹn file 2.1.2 Giải thuật RSA * Giải thuật sinh key: Mục đích giải thuật nhằm tạo cặp key đóng vai trò khóa công khai khóa bí mật: B1: Khởi tạo kích thước ban đầu N (modulus) 512 bit B2: Sinh cặp số nguyên tố ngẫu nhiên gồm p khoảng từ đến q khoảng từ đến B3: Với cặp giá trị p q, ta dễ dàng tính giá trị B4: Chọn số tự nhiên e cho e nguyên tố với B5: Từ khóa công khai e, ta tính khóa bí mật d cho * hóa: Đầu vào gồm key khóa công khai e file input, kết trả file output B1 : Tính MD5 file input, ghi vào file output B2 : Đọc liệu file input khối dạng byte có kích thước 64bit, sau hóa khối liệu B3: Ghi liệu hóa kích thước khối liệu sau hóa vào file output, quay lại B2 đến hóa hết liệu Giải : Đầu vào key khóa bí mật d file input, kết trả file output B1: Đọc liệu dạng Integer file input giải để lấy kích thước khối liệu hóa 7|Page B2: Đọc tiếp liệu file input với kích thước bước trên, giải khối liệu ghi vào file output B3: Lặp lại bước đọc hết file input B4: Kiểm tra MD5 file output với file input Hash trước hóa để kiểm tra tính toàn vẹn liệu 2.1.3 Giải thuật Huffman * Sinh key B1 : Tính histogram file mẫu file input B2 : Tạo huffman, áp dụng giải thuật tham lam B2.1 : Khởi tạo heap rỗng, độ ưu tiên huffman con(subtree) heap tổng xác suất giá trị node sub-tree nắm giữ B2.2 : Cho toàn node vào heap, node nắm giữ giá trị xác suất giá trị tương ứng B2.3 : Lấy sub-tree từ heap, kết hợp chúng thành sub-tree lớn thông qua node mới, hoán vị thứ tự node lấy để tạo ngẫu nhiên, để tránh từ file tạo giống lần tạo key khác B2.4: Nếu heap sub-tree, tức lúc ta có 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 NLR, quy ước L : duyệt qua trái R : duyệt qua phải E(X) : gặp mang giá trị X Ví dụ : CRYPTTOOL  LE(O) RE(C)E(L)RE(T)RE(Y)RE(P)E(R) 8|Page * hóa : Đầu vào key huffman file input, kết trả file output B1 : Tính MD5 kích thước file input, ghi vào file output B2 : Tạo từ điển, với giá trị c hóa, ta có chuỗi bit từ gốc đến node có giá trị c Ví dụ trên, C : 101 B3 : Với byte input, tra từ điển giá trị chuỗi bit tương ứng ghi vào output * Giải : Đầu vào key huffman file input, kết trả file output B1 : đọc MD5 kích thước file lưu file input B2 : Nếu số byte giải kích thước file tới B5,Khởi tạo trỏ vào node gốc huffman B3 : với bit đọc từ input, 0, đưa trỏ node trái trỏ, ngược lại đưa trỏ node phải trỏ B4 : trỏ trỏ node lá, ghi giá trị node file output, tăng số byte giải lên quay bước B5 : kiểm tra file output với MD5 2.2 Tính bảo mật 2.2.1 Giải thuật thay Trong hóa file text, tập giá trị nhỏ, xác suất phân bố tập trung vào kí tự, dấu space, tab, nên khả bị phá giải cao 9|Page Đối với file giá trị phân bố đều, số lượng key cần thử lớn, dần tiến tới 256!~8E506 2.2.2 Giải thuật RSA Sau ta xem xét số công phương pháp RSA Vét cạn khóa: cách công thử tất khóa d có để tìm giải có ý nghĩa, tương tự cách thử khóa K hóa đối xứng Với N lớn, việc công bất khả thi Phân tích N thành thừa số nguyên tố N = pq: Chúng ta nói việc phân tích phải bất khả thi hàm chiều, nguyên tắc hoạt động RSA Tuy nhiên, nhiều thuật toán phân tích đề xuất, với tốc độ xử lý máy tính ngày nhanh, làm cho việc phân tích N không khó khăn trước Năm 1977, tác giả RSA treo giải thưởng cho phá RSA có kích thước N vào khoảng 428 bít, tức 129 chữ số Các tác giả ước đoán phải 40 nghìn triệu triệu năm giải Tuy 71 nhiên vào năm 1994, câu đố giải vòng tháng Bảng sau liệt kê kích thước N RSA phá Bảng liệt kê mốc phá RSA Số chữ số N 100 110 120 129 130 140 155 160 174 200 10 | P a g e Số bit 322 365 398 428 431 465 512 530 576 633 Năm phá 1991 1992 1993 1994 1996 1999 1999 2003 2003 2005 Thuật toán Quadratic sieve Quadratic sieve Quadratic sieve Quadratic sieve GNFS GNFS GNFS Lattice sieve Lattice sieve Lattice sieve Dĩ nhiên việc phá thực phòng thí nghiệm Tuy nhiên người ta cho kích thước N phải khoảng 1024 bít (309 chữ số) bảo đảm an toàn thật Đo thời gian: Đây phương pháp phá không dựa vào mặt toán học thuật toán RSA, dựa vào “hiệu ứng lề” sinh trình giải RSA Hiệu ứng lề thời gian thực giải Giả sử người phá đo thời giải 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, bít d xảy hai phép modulo, bít có phép modulo, thời gian thực giải khác Bằng số phép thử chosen-plaintext, người phá biết bít d hay từ biết d Phương pháp phá ví dụ cho thấy việc thiết kế hệ an toàn phức tạp Người thiết kế phải lường trước hết tình xảy 2.2.3 Giải thuật Huffman Mỗi key trạng thái huffman, hóa tập gồm 256 giá trị, key huffman có 256 lá, mang giá trị cần hóa, đường từ gốc đến cho biết giá trị sau hóa Nếu không quan tâm đến giá trị node lá, quan tâm đến hình dạng huffman Gọi Q(k) số hình dạng huffman có k lá, Q(1) = Q(2) = Q(3) = Công thức quy hoạch động tổng quát: Áp dụng công thức trên, ta dùng đoạn chương trình sau để tính: author = 'DuThien' import math Q = [] 11 | P a g e for i in range(257): Q.append(0) Q[1] = Q[2] = 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 : Q(256)~4.6E149 Vậy key có tối đa Q(256)*256 ! ~ 4E657 Trong trường hợp huffman trở thành cây nhị phân đầy đủ, tức giá trị file hóa phân bố đều, số trạng thái cần thử 256 ! ~ 8E506 2.3 Áp dụng lên chương trình 2.3.1 Giải thuật thay Class SC_KeyGen Class SC_Encryptor Class SC_Decryptor 2.3.2 Giải thuật RSA Class RSA_KeyGen Class RSA_Encryptor Class RSA_Decryptor 2.3.3 Giải thuật Huffman Class HT_KeyGen 12 | P a g e Class HT_Encryptor Class HT_Decryptor Đánh giá, thực nghiệm 3.1 Giải thuật thay Cỡ file 5.96KB 366KB 1.62MB 15.7MB 85.9MB 1.4GB Tạo key 2(ms) hóa 4(ms) 22(ms) 166(ms) 416(ms) 2135(ms) 75224(ms) Giải 5(ms) 38(ms) 119(ms) 688(ms) 3694(ms) 112617(ms) hóa 190(ms) 11109(ms) 50210(ms) 491687(ms) N/A N/A Giải 132(ms) 7807(ms) 30827(ms) 285474(ms) N/A N/A hóa 41(ms) 182(ms) 581(ms) 6102(ms) Giải 36(ms) 198(ms) 600(ms) 6085(ms) 3.2 Giải thuật RSA Cỡ file 5.96KB 366KB 1.62MB 15.7MB 85.9MB 1.4GB Tạo key 2083(ms) 3.3 Giải thuật Huffman Cỡ file 5.96KB 366KB 1.62MB 15.7MB 13 | P a g e Tạo key 82(ms) 21(ms) 55(ms) 81(ms) 85.9MB 1.4GB 994(ms) 18446(ms) 30849(ms) 635776(ms) 26368(ms) 490088(ms) Khả mở rộng Các chức chưa thực hiện: - Giải thuật thay thế: sử dụng block liệu lớn thay byte - Giải thuật RSA: cho phép người dùng thay đổi kích thước block tùy chỉnh thay khối 512bit key sinh ngẫu nhiên, sử dụng multi-thread để tăng tốc xử lí - Giải thuật Huffman: xử lí block liệu lớn có kích thước khác nhau, nhằm tìm block có liệu giống nhau, giúp tăng hiệu nén liệu Nén liệu tập chữ Source code : https://github.com/duthienkt/MiniCryptool 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 14 | P a g e PHỤ LỤC Thành viên Phạm Quốc Du Thiên (51303834) Công việc - 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 - Tổng hợp báo cáo - Hiện thực giao diện - Viết thư viện hỗ trợ: nhập suất file, cấu trúc liệu - Hiện thực hóa file ứng với module thuật toán - Hiện thực lưu trữ hóa file key password với One-time pad - Fix bug, cải tiến, tăng hiệu cho giải thuật Phần trăm Nhận xé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% 15 | P a g e PHỤ LỤC * Lưu khóa: - Tạo key import 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 để hóa liệu  OK Lưu ý: Các định dạng file key file hóa phân biệt tên phần mở rộng, nên bị lỗi mở file sai định dạng * hóa file Đối với giải thuật thay RSA B1: import key tạo key cách bấm Generate, tạo key mới, sau cần chọn Export lưu key để giải B2: chọn đường dẫn cho file input B3: chọn Encrypt Đối với giải thuật Huffman Tương tự phần Generate cần chọn file mẫu để tạo key Có thể tạo key file input 16 | P a g e Lư ý: file mẫu để tạo Huffman, lần tạo key có kết khác * hóa thay 17 | P a g e * Huffman 18 | P a g e ... SC_Encryptor Class SC_Decryptor 2.3.2 Giải thuật RSA Class RSA_KeyGen Class RSA_Encryptor Class RSA_Decryptor 2.3.3 Giải thuật Huffman Class HT_KeyGen 12 | P a g e Class HT_Encryptor Class HT_Decryptor... tác duyệt NLR, quy ước L : duyệt qua trái R : duyệt qua phải E(X) : gặp mang giá trị X Ví dụ : CRYPTTOOL  LE(O) RE(C)E(L)RE(T)RE(Y)RE(P)E(R) 8|Page * Mã hóa : Đầu vào key huffman file input,... giống nhau, giúp tăng hiệu nén liệu Nén liệu tập chữ Source code : https://github.com/duthienkt/MiniCryptool 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

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

Từ khóa liên quan

Mục lục

  • 1. Giới thiệu

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

    • 1.2 Tổng quan

      • 1.2.1 Ưu điểm

      • 1.2.2 Hạn chế

      • 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ế

          • 2.1.2 Giải thuật RSA

          • 2.1.3 Giải thuật Huffman

          • 2.2 Tính bảo mật

            • 2.2.1 Giải thuật thay thế

            • 2.2.2 Giải thuật RSA

            • 2.2.3 Giải thuật Huffman

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

              • 2.3.1 Giải thuật thay thế

              • 2.3.2 Giải thuật RSA

              • 2.3.3 Giải thuật Huffman

              • 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

                • 4. Khả năng mở rộng

                • 5. Tham khảo

                • PHỤ LỤC 1

                • PHỤ LỤC 2

Tài liệu cùng người dùng

Tài liệu liên quan