Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 74 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
74
Dung lượng
696,07 KB
Nội dung
MỤC LỤC LỜI CẢM ƠN Chương MỘT SỐ KHÁI NIỆM CƠ BẢN 1.1 CÁC KHÁI NIỆM TRONG TOÁN HỌC 1.1.2 Khái niệm số nguyên tố 1.1.3 Một số khái niệm đại số 1.1.4 Một số khái niệm độ phức tạp 1.2 HỆ MÃ HÓA 1.2.1 Khái niệm mã hóa liệu 1.2.2 Phân loại hệ mã hóa 11 1.2.3 Hệ mã hóa đối xứng cổ điển 15 1.2.4 Hệ mã hóa công khai 22 1.3 CHỮ KÝ SỐ 24 1.3.1 Giới thiệu chữ ký số 24 1.3.2 Sơ đồ chữ kí số 25 1.3.3 Phân loại chữ ký số 26 1.3.4 Chữ ký RSA 29 1.3.5 Chữ ký ELGAMAL 31 1.3.6 Chữ ký DSS 32 1.3.7 Chữ ký phủ định 35 Chương GIAO THỨC PHÂN PHỐI KHÓA MẬT 39 2.1 KHÁI NIỆM PHÂN PHỐI KHÓA MẬT 39 2.1.1 Phân phối khóa theo phƣơng pháp thông thƣờng 40 2.1.2 Phân phối khóa theo phƣơng pháp thơng thƣờng 41 2.2 GIAO THỨC PHÂN PHỐI KHÓA BLOM 42 2.2.1 Giao thức phân phối khóa Blom với k=1 43 2.2.2 Giao thức phân phối khóa Blom với k>1 48 2.3 GIAO THỨC PHÂN PHỐI KHÓA DIFFIE- HELLMAN 49 Chương GIAO THỨC THỎA THUẬN KHÓA MẬT 52 3.1 KHÁI NIỆM THỎA THUẬN KHÓA MẬT 52 3.2 GIAO THỨC THỎA THUẬN KHÓA DIFFIE – HELLMAN 54 3.3 GIAO THỨC THỎA THUẬN KHÓA TRẠM TỚI TRẠM 57 Chương THỬ NGHIỆM CHƢƠNG TRÌNH 61 4.1 CHƢƠNG TRÌNH PHÂN PHỐI KHĨA BLOM 61 4.1.1 Cấu hình hệ thống 61 4.1.2 Các thành phần chƣơng trình 61 4.1.3 Chƣơng trình 62 4.1.4 Hƣớng dẫn sử dụng chƣơng trình 66 4.2 CHƢƠNG TRÌNH PHÂN PHỐI KHĨA DIFFIE - HELLMAN 69 4.2.1 Cấu hình hệ thống 69 4.2.2 Các thành phần chƣơng trình 69 4.2.3 Chƣơng trình 70 4.2.4 Hƣớng dẫn sử dụng chƣơng trình 72 KẾT LUẬN 73 TÀI LIỆU THAM KHẢO 74 LỜI CẢM ƠN Em xin chân thành gửi lời cảm ơn tới thầy cô trường, thầy cô Ban giám hiệu thầy cô Bộ môn Tin học trường Đại học Dân lập Hải Phịng tận tình giảng dạy, giúp đỡ tạo điều kiện cho chúng em suốt thời gian học tập trường Và em xin gửi lời cảm ơn tới thầy Trịnh Nhật Tiến – Giáo viên hướng dẫn tận tình, hết lịng hướng dẫn em suốt q trình nghiên cứu để hoàn thành đồ án tốt nghiệp Em mong thầy luôn mạnh khoẻ để nghiên cứu giảng dạy, đào tạo nguồn nhân lực cho đất nước Một lần em xin chân thành cảm ơn Hải Phòng, ngày tháng năm 2011 Sinh viên thực Phạm Thị Phượng Chương MỘT SỐ KHÁI NIỆM CƠ BẢN 1.1 CÁC KHÁI NIỆM TRONG TOÁN HỌC 1.1.1 Khái niệm số nguyên tố Số nguyên tố số tự nhiên lớn có hai ước Ví dụ: Các số 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31,37 ,43 số nguyên tố Trong số số nguyên tố chẵn Số ngun tố có vai trị ý nghĩa to lớn số học lý thuyết mật mã Bài toán kiểm tra tính nguyên tố số nguyên dương n phân tích số n thừa số nguyên tố toán quan tâm 1.1.2 Khái niệm số nguyên tố Một ước chung d >0 số nguyên a1, a2, an, ước chung a1, a2, an ước d, d gọi ước chung lớn (UCLN) a1, a2 , an Kí hiệu d = bgd(a1, a2, an) hay d= UCLN(a1, a2, an) Nếu gcd (a1, a2 an)=1,thì số a1, a2, an gọi số nguyên tố Ví dụ: Hai số 13 hai số ngun tố có gcd (8,13) =1 1.1.3 Một số khái niệm đại số 1/ Khái niệm Nhóm: Nhóm phần tử (G, *) thỏa mãn tính chất: + Kết hợp: ( x * y ) * z = x * ( y * z ) với x, y, z + Tồn phần tử trung lập e G G: e * x= x * e = x , x + Tồn phần tử nghịch đảo x’ G G: x’ * x = x * x’ = e 2/ Khái niệm Nhóm con: Nhóm G tập S G, S thỏa mãn tính chất sau: +Phần tử trung lập e G nằm S + S khép kín phép tính(*) G, tức với x, y + S khép kín phép lấy nghịch đảo G, tức x-1 S x * y S với x S S 3/ Khái niệm Nhóm Cyclic: G gọi nhóm Cyclic tồn g G cho phần tử G luỹ thừa nguyên g Ví dụ: Nhóm (Z+, +) gồm số nguyên dương Cyclic với phần tử sinh g =1 4/ Tập hợp thặng dƣ thu gọn theo modulo: Kí hiệu ={ x Zn , x nguyên tố với n} Tức x phải khác gọi tập thặng dư theo mod n có số phần tử (n) 1.1.4 Một số khái niệm độ phức tạp thuật toán 1.1.4.1 Khái niệm toán Bài toán diễn đạt hai phần: Input: Các liệu vào toán Output: Các liệu tốn(kết quả) Khơng tính chất tổng qt tốn giả thiết liệu toán số nguyên 1.1.4.2 Khái niệm thuật toán “Thuật toán” hiểu đơn giản cách thức để giải tốn Cũng hiểu hai quan niệm: Trực giác hay Hình thức sau: 1/ Quan niệm trực giác “thuật toán” Một cách trực giác, thuật toán hiểu dãy hữu hạn qui tắc( thị, mệnh lệnh) mơ tả q trình tính tốn, để từ liệu cho (Input) ta nhận kết (Output) toán 2/ Quan niệm toán học “thuật tốn” Một cách hình thức, người ta quan niệm thuật tốn máy tính Turing Thuật tốn chia thành hai loại: Đơn định không đơn định Thuật toán đơn định (Deterministic): Là thuật toán mà kết phép toán xác định Thuật tốn khơng đơn định (Nondeterministic): Là thuật tốn có phép tốn mà kết khơng 1.1.4.3 Hai mơ hình tính tốn Hai quan niệm thuật tốn ứng với hai mơ hình tính tốn Ứng với hai mơ hình tính tốn có hai cách biểu diễn thuật tốn 1/ Mơ hình ứng dụng: Thuật tốn biểu diễn ngôn ngữ tựa Algol + Đơn vị nhớ: Một ô nhớ chứa toàn liệu + Đơn vị thời gian: Thời gian để thực phép tính số học hay logic cộng, trừ, nhân, chia 2/ Mơ hình lý thuyết: Thuật tốn biểu diễn ngôn ngữ máy Turing + Đơn vị nhớ: Một chứa tín hiệu Với mã nhị phân đơn vị nhớ bit + Đơn vị thời gian: Thời gian để thực bước chuyển hình trạng 1.1.4.4 Khái niệm độ phức tạp thuật tốn 1/ Chi phí thuật tốn ( Tính theo liệu đầu vào) Chi phí phải trả cho q trình tính tốn gồm chi phí thời gian nhớ: Chi phí thời gian q trình tính tốn thời gian cần thiết để thực q trình tính tốn Với thuật tốn tựa Algol: chi phí thời gian số phép tính thực trình tính tốn Chi phí nhớ q trình tính tốn số nhớ cần thiết để thực mơt q trình tính tốn Gọi A thụât toán, e liệu vào tốn mã hố cách Thuật tốn A tính liệu vào e phải trả giá định Ta kí hiệu: t A(e) giá thời gian IA(e) giá nhớ 2/ Độ phức tạp nhớ (Trong thƣờng hợp xấu nhất) LA(n) =max{ IA(e), với n}, n “kích thuớc” đầu vào thuật toán 3/ Độ phức tạp thời gian ( Trong trƣờng hợp xấu nhất) TA(n) = max{ tA(e), với n} 4/ Độ phức tạp tiệm cận Độ phức tạp PT(n) gọi tiệm cận tới hàm f(n), kí hiệu O(f(n)) tồn số n0., c mà PT(n) c.f(n), n n0 5/.Độ phức tạp đa thức Độ phức tạp PT(n) gọi đa thức, tiệm cận tới đa thức p(n) 6/ Thuật toán đa thức Thuật toán gọi đa thức, độ phức tạp thời gian( trường hợp xấu nhất) đa thức HỆ MÃ HỐ 1.2 1.2.1 Khái niệm mã hố liệu Để đảm bảo an tồn thơng tin lưu trữ máy tính (giữ gìn thơng tin cố định) hay đảm bảo an tồn thơng tin đường truyền tin (trên mạng máy tính), người ta phải “che giấu” thơng tin “Che” thơng tin (dữ lệu) hay cịn gọi “mã hố” thơng tin thay đổi hình dạng thơng tin gốc, người khác khó nhận “Giấu” thông tin (dữ liệu) cất giấu thông tin tin khác, người khác khó nhận 1/ Hệ mã hoá Việc mã hoá phải theo nguyên tắc định, quy tắc gọi Hệ mã hố Hệ mã hoá định nghĩa năm (P,C,K,E,D) đó: P: tập hữu hạn rõ C: tập hữu hạn mã K: tập hữu hạn khố E: tập hàm lập mã D: tập hàm giải mã Với khóa lập mã ke Với khố giải mã kd K, có hàm lập mã eke K, có hàm lập mã ekd cho dkd (eke(x))=x, x E, eke :P D, eke :C P Ở x gọi rõ, eke(x) gọi mã C, P, 2/ Mã hoá giải mã Người gửi G Người nhận N eke (Có khóa lập mã ke ) (Có khóa giải mã kd ) Tin tặc trộm mã eke(T) Người gửi G muốn bán tin T cho người nhận N Để bảo đảm bí mật, G mã hố tin khố lập mã ke, nhận mã eke(T), sau gửi cho N Tin tặc trộm mã eke(T), “khó” hiểu tin gốc T khơng có khố giải mã kd Người nhận N nhận mã, họ dùng khoá giải mã kd, để giải mã eke(T), nhận tin gốc T = dkd(eke(T)) 10 2/ Giao thức STS không đưa khẳng định khoá Tức bước 2), Trong bước 1/, 3/ av av yv gửi tới U, chưa bảo đảm thật an toàn yu gửi tới V, chưa bảo đảm thật an tồn Có thể bảo đảm an tồn yv yu cách: Trong bước 2/: mã hoá yv khoá K: yv = eK(sigv( av , au )) = eK(yv) Trong bước 3/: mã hoá yu khoá K: yu = eK(sigu( au , av )) = eK(yu) 60 Chương THỬ NGHIỆM CHƢƠNG TRÌNH 4.1 CHƢƠNG TRÌNH PHÂN PHỐI KHĨA BLOM VỚI K > 4.1.1 Cấu hình hệ thống +Phần cứng Yêu cầu phần cứng chương trình: CPU Khoảng 15- 20M + Phần mềm Yêu cầu phần mềm chương trình: Tubo C++ phiên 4.9.9.2, Hệ điều hành Windown XP 4.1.2 Các thành phần chƣơng trình Thành phần chương trình gồm : + Input: - Số lượng người dùng, hệ số k, số nguyên tố p - Các phần tử công khai hệ số a ngẫu nhiên bí mật + Output: - Khóa tương ứng cặp người dùng 61 4.1.3 Chƣơng trình #include #include using namespace std; // -int a[1000][1000];//cac so ngau nhien bi mat ma TT chon int k; //he so k int p; //so nguyen to p int n; //so luong nguoi dung int r[1000]; //phan tu cong khai cua n nguoi dung // -void gx(int y) { int heso_x[100] = {0}; for(int i=0;i