Nghiên cứu các giải thuật mã hóa

96 442 0
Nghiên cứu các giải thuật mã hóa

Đ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

MỤC LỤC Lời nói đầu .3 Chương MÃ HOÁ VÀ CÁC KHÁI NIỆM VỀ MÃ HOÁ 1.1 Giới thiệu chung 1.2 Các khái niệm 1.3 Thuật toán mã hóa đối xứng (Symmetric Algorithms) 1.4 Thuật toán mã hóa phi đối xứng (Puclic-key Algorithm) .9 1.5 Thám mã (Cryptanalyis) 10 1.6 Thuật toán mã hóa dòng 12 1.7 Thuật toán mã hóa khối .13 Chương CÁC HỆ MÃ HOÁ CỔ ĐIỂN 18 2.1 Hệ mã hóa thay (Substitution Cipher) 18 2.1.1 Hệ mã hóa CAESAR 19 2.1.2 Hệ mã hóa AFFINE 20 2.1.3 Hệ mã hóa PLAYFAIR .21 2.1.4 Hệ mã hóa VIGENERE .23 2.1.5 Hệ mã hóa HILL 24 2.2 Hệ mã hóa đổi chỗ (Transposition Cipher) 25 Chương CHUẨN MÃ HÓA DỮ LIỆU DES (Data Encryption Standard) 28 3.1 Giới thiệu chung DES 28 3.2 Mô tả thuật toán .30 3.2.1 Mã hóa DES 30 3.2.2 Hoán vị khởi đầu (PI) 33 3.2.3 Khóa chuyển đổi (PC-1) 34 3.2.4 Hoán vị mở rộng (E) 35 3.2.5 Hộp thay S 36 3.2.6 Hộp hoán vị P .38 3.2.7 Hoán vị cuối (IP-1) 38 3.3 Giải mã DES .39 3.4 Các chế độ DES 39 3.4.1 Chế độ ECB 39 3.4.2 Chế độ CFB OFB 40 3.4.3 Chế độ CBC 41 3.5 Phần cứng phần mềm thực DES 42 3.6 Quá trình thay DES 44 3.7 Sự an toàn DES 44 3.8 Kết luận 47 Chương HỆ MÃ HÓA CÔNG KHAI 48 4.1 Giới thiệu 48 4.2 Lý thuyết mật mã khóa công khai 48 4.3 Ứng dụng mật mã khóa công khai .53 4.4 Các yêu cầu mật mã khóa công khai 53 4.5 Giải thuật RSA (Rivest, Shamir Adleman - 1977) .54 4.5.1 Mô tả giải thuật 54 4.5.2 Tính bảo mật giải thuật RSA .57 4.5.3 Sự che dấu thông tin hệ thống RSA 62 4.5.4 Các giải thuật toán học sử dụng RSA 63 4.6 Hệ mật Rabin 65 4.7 Hệ mã Elgamal 67 4.8 Hệ mã MHK (Merkle -Hellman Knapsack) .70 4.8.1 Thuật toán 71 4.8.2 Tính bảo mật mã hóa MHK 72 Chương CÀI ĐẶT CHƯƠNG TRÌNH THỬ NGHIỆM 73 5.1 Giao diện chương trình 73 5.2 Form mã hóa giải mã RSA 73 5.3 Form Chữ ký điện tử dùng giải thuật RSA để mã hóa giải mã .74 5.4 Form mã hóa giải mã DES 75 KẾT LUẬN .76 TÀI LIỆU THAM KHẢO 77 PHỤ LỤC: MỘT SỐ MÃ NGUỒN 78 Lời nói đầu Ngay từ xa xưa, ngành mật mã có vị trí chiến lược chiến tranh vĩ đại Để gửi thông tin quan trọng cho đội quân liên minh, người ta biết cách mã hóa văn thông thường thành văn mã nhằm đảm bảo có bị đối phương phát mã khôi phục lại thông tin ban đầu khóa bí mật Qua nhiều chiến tranh, vai trò mật mã quan trọng ngành mật mã học phát triển theo để lại thành không nhỏ hệ mã hóa cổ điển Caesar, Hill, Affine…Tất làm tảng cho ngành mật mã học ngày Ngày nay, công nghệ thông tin thâm nhập vào hầu hết lĩnh vực sống, từ quân sự, an ninh đến kinh tế, khoa học nghệ thuật… Nhưng với phát triển xã hội, hoạt động mạng lưới tình báo kinh tế ngày rộng lớn tinh vi Vấn đề ăn cắp thông tin mẻ, song với ứng dụng rộng rãi công nghệ mạng máy tính nay, đảm bảo an toàn thông tin khó kiểm soát Giải pháp thời cho vấn đề mã hóa thông tin Đối với hầu hết quốc gia, hệ thống mã hóa coi tài sản quốc gia Ở Việt Nam, hoạt động liên quan đến mã hóa thông tin thường Ban yếu Trung ương chủ trì Việc đời hệ mã đại (bất đối xứng) không làm vai trò quan trọng hệ mã cổ điển (đối xứng) mà bổ xung cho ngành mật mã nhiều phương pháp mã hóa nhiều khái niệm đời ví dụ chữ ký số, hàm băm, mã đại diện… Chính quan trọng ngành mật mã mà đồ án trình bày nghiên cứu số thuật toán mã hóa hệ mã hóa cổ điển (mã Affine, mã Vigenere, mã Hill…), hệ mã hóa đại (mã RSA, mã Balo…), chuẩn mã hóa liệu DES Đồ án gồm phần sau: Chương 1: Mã hóa khái niệm mã hóa Chương 2: Các hệ mã hóa cổ điển Chương 3: Chuẩn mã hóa liệu DES (Data Encryption Standard) Chương 4: Hệ mã hóa công khai Chương 5: Cài đặt chương trình thử nghiệm Do thời gian khả có hạn, đề tài lại rộng em tìm hiểu số hệ mã đơn giản (Affine, Viginera, Hill, RSA chuẩn mã hóa liệu DES) Chắc chắn luận văn không tránh khỏi thiếu sót, em mong nhận góp ý, dẫn thêm thầy cô bạn bè để đồ án hoàn thiện Em xin chân thành cảm ơn cô giáo hướng dẫn Bùi Thị Thanh Xuân, toàn thể thầy, cô khoa Công Nghệ Thông Tin – ĐH Thái Nguyên tạo điều kiện giúp đỡ em hoàn thành luận văn Thái Nguyên, tháng năm 2008 Chương MÃ HOÁ VÀ CÁC KHÁI NIỆM VỀ MÃ HOÁ 1.1 Giới thiệu chung Mọi người biết rằng, muốn giữ cho riêng cần phải che giấu Để gửi thư riêng cho người bạn, phải cho vào bao thư dán bao thư lại Nhưng thư quan trọng mà không muốn cho khác người nhận biết nội dung muốn chắng không bóc đọc thư Mặt khác, chắn đường thư tới tay người nhận có bị đọc trộm hay không Từ nảy sinh vấn đề bảo vệ thông tin Từ xa xưa, người ta biết áp dụng biện pháp bảo vệ thông tin thô sơ giấu thông tin, cho người canh gác,….Khi trí tuệ sáng tạo người phát triển áp dụng biện pháp thô sơ Ngày nay, với bùng nổ công nghệ thông tin, đặc biệt Internet với email, e-busuness, … vấn đề bảo vệ thông tin quan trọng, định sống công ty, đảm bảo an ninh quốc phòng, … Có hai phương pháp để đạt mục tiêu này: Kiểm soát lối vào mã hóa liệu - Phương pháp kiểm soát lối vào nhằm ngăn cản xâm nhập trái phép vào hệ thống nhờ xây dựng cách kiểm soát thích hợp, ví dụ hệ thống sử dụng mật khẩu, mà người phép sử dụng qua để vào hệ thống Hệ có số nhược điểm: Chẳng hạn liệu lưu trữ bên cần phải bảo vệ việc dường có bảo vệ túy vật lý đạt Như vậy, điều dẫn đến an toàn hệ thống Một nhược điểm khác phương pháp không thực tiễn ta quan hệ với hệ thống lớn - Sự truy nhập thông tin kiểm soát phương pháp khác: Mã hóa liệu Điều có nghĩa thông tin lưu trữ hệ thống dạng mã hóa Khi đó, người truy nhập trái phép dù có lấy thông tin, lại dạng mã hóa, thông tin vô nghĩa họ cách giải Mật mã học nghiên cứu hệ thống dùng cho việc truyền thông bí mật, gồm có hai lĩnh vực nghiên cứu: Mã hóa (cryptography) - thiết kế hệ truyền thông bí mật, giải mã (cryptanalysis) – nghiên cứu phương pháp để giải mã hệ truyền thông quân ngoại giao, áp dụng có ý nghĩa thực tế ngày xuất tất lĩnh vực xã hội Hai ví dụ minh chứng hệ thống tập tin máy tính (trong người sử dụng thích giữ riêng tập tin họ) hệ thống chuyển ngân điện tử Một người sử dụng máy tính muốn cất giữ riêng tập tin máy tính cất giấy tờ tủ hồ sơ, ngân hàng muốn việc chuyển ngân điện tử an toàn chuyển ngân xe bọc thép 1.2 Các khái niệm Mã hóa (cryptography) “nghệ thuật” che giấu bảo vệ thông tin để lưu trữ trao đổi Mục đích mã hóa làm cho thông tin đọc ngoại trừ người người tạo thông tin cho phép Các thông điệp cần chuyển cần bảo vệ an toàn gọi rõ (plaintext), ký hiệu P Nó dòng vào bit, file, âm số hóa,… Bản rõ dùng để lưu trữ để truyền đạt thông tin Trong trường hợp rõ thông điệp cần mã hóa Quá trình xử lý thông điệp trước gửi gọi trình mã hóa (encryption) Một thông điệp mã hóa gọi mã (ciphertext), ký hiệu C Quá trình xử lý ngược lại từ mã thành rõ gọi trình giải mã (decryption) Hàm mã hóa E thực P để thu C, ta có: E(P) = C Hàm giải mã D thực C để thu P, ta có: D(C) = P Việc mã hóa giải mã thường thực theo hệ mã mô tả rõ Khóa (key) giá trị dùng để thực thuật toán mã hóa Khóa số, xâu ký tự, … Khóa nhận nhiều giá trị (càng nhiều tốt) Giới hạn giá trị khóa gọi không gian khóa (space key) Mỗi khóa k xác định hàm mã hóa giải mã, hàm mã hóa giải mã biểu diễn sau: Ek(P) = C Dk(C) = P Một cách cụ thể hơn, hệ mã hóa bao gồm: Một không gian rõ, không gian mã không gian khóa - Không gian rõ * bảng chữ  tập hợp tất câu có nghĩa ngôn ngữ tự nhiên - Không gian mã * bảng chữ  - Không gian khóa K giới hạn nhận khóa k Mỗi khóa xác định cặp ánh xạ Ek Dk tương ứng Chúng ta đưa số khái niệm lý thuyết ngôn ngữ Một tập hợp khác rỗng  gọi bảng chữ (alphabet) Các phần tử bảng chữ ký tự (letter) Chuỗi hữu hạn phần tử  gọi từ (word) Một ký tự xuất vài lần từ Một từ đặc biệt không chứa ký tự gọi từ rỗng  (empty word) Độ dài từ số ký tự từ đó, ký tự đếm số lần xuất Tập hợp tất từ  ký hiệu * Các ngôn ngữ thông thường xuất  tập * Ví dụ,  bảng chữ tiếng Anh {A, B, , Z} ABBA, HORSE KOKOOKOKOONKOKOKOKKO từ  Chúng ta thêm vào bảng chữ ký tự viết thường, dấu ký tự cách cần thiết cho rõ bảng chữ mở rộng Thông thường rõ tiếng Anh mã hóa thành dạng nhị phân (encoded – mã hóa ý che dấu) cách thay ký tự số nhị phân vị trí bảng chữ tiếng Anh Với bảng chữ tiếng Anh có 26 ký tự ta có 24 < 26 < 5, ký tự cần biểu diễn số nhị phân bit: A = 00001, B = 00010, C = 00011, , N = 01110, , Z = 11010 Trong hệ mã hóa khóa để mã khóa để giải giống thì: Dk(Ek(P)) = P Hình 1.1 Mã hóa với khóa mã khóa giải giống Có nhiều thuật toán mà khóa mã khóa giải khác Khi đó, khóa mã k1 khác với khóa giải k2: Ek1(P) = C Dk2(C) = P Dk2(Ek1(P)) = P Hình 1.2 Mã hóa với khóa mã khóa giải khác 1.3 Thuật toán mã hóa đối xứng (Symmetric Algorithms) Thuật toán mã hóa đối xứng thuật toán có khóa dùng để giải mã tính toán từ khóa dùng để mã hóa Trong nhiều hệ thống khóa dùng để mã hóa khóa dùng để giải mã giống Những thuật toán mã hóa gọi thuật toán mã hóa bí mật, khóa đơn, hay khóa (secret-key algorithms, single-key algorithms, one-key algorithms) Thuật toán mã hóa cần người gửi người nhận thống khóa trước trao đổi thông tin Khóa cần phải hai giữ bí mật Sự bảo mật thuật toán đối xứng dựa khóa Tiết lộ khóa có nghĩa biết khóa mã hóa giải mã thông tin hệ thống Nhóm mã hóa giải mã thuật toán đối xứng thể công thức: Ek(P) = C Dk(C) = P Dk(Ek(P)) = P Thuật toán đối xứng lại chia làm hai loại Một loại thực rõ bít một, gọi thuật toán mã hóa dòng (stream algorithms, stream ciphers) Còn loại thực rõ theo nhóm bít một, thuật toán gọi thuật toán mã hóa khối (block algorithms, block ciphers) Những thuật toán mã hóa khối thường thực máy tính, thông thường cỡ khối 64 bits – khối đủ lớn để ngăn ngừa phân tích nhà thám mã đủ nhỏ để làm việc cách hiệu Trước máy tính đời, thuật toán thực rõ lần ký tự Ta xem thuật toán mã hóa dòng thực dòng ký tự thuật toán mã hóa khối thực khối bits 1.4 Thuật toán mã hóa phi đối xứng (Puclic-key Algorithm) Thuật toán mã hóa phi đối xứng hay gọi thuật toán mã hóa khóa công khai Chúng thiết kế sở khóa dùng để mã hóa khác với khóa dùng để giải mã Khóa dùng để giải mã khó mà tính toán từ khóa dùng để mã hóa (thông thường không đủ thời gian) Chúng gọi hệ thống khóa công khai khóa dùng để mã công bố rộng rãi Một người sử dụng khóa mã để mã hóa thông điệp, có số người với khóa giải tương ứng giải mã thông điệp Trong hệ thống này, khóa dùng để mã hóa gọi khóa công khai (public key), khóa dùng để giải mã gọi khóa riêng (private key) Thuật toán thể bằng: Ek1(P) = C Dk2(C) = P Dk2(Ek1(P)) = P Trong số trường hợp, thông điệp mã hóa khóa riêng giải mã khóa công khai, điều thường áp dụng chữ ký điện tử 1.5 Thám mã (Cryptanalyis) Thám mã “nghệ thuật” tìm lại thông điệp gốc cách phân tích mã Mục đích mật mã phải giữ bí mật rõ (hoặc khóa, hai) khỏi người nghe trộm (attacker) Thám mã cần phục hồi rõ thông điệp từ mã khóa Nếu thành công, người phân tích mã thu rõ khóa, tìm thấy điểm yếu hệ thống mã hóa Các thuật toán sử dụng cho phần lớn hệ thống mã hóa tiếng, giả thiết người thám mã biết thuật toán để bắt đầu thám mã Như vậy, vấn đề cốt yếu hệ mã hóa tốt việc khôi phục rõ P từ mã C biết Dk phải khó, tốt Có tình mà người thám mã có phân tích Trong tình giả sử người thám mã biết thuật toán dùng để mã hóa: Chỉ biết mã (Ciphertext-only attack): Trong trường hợp này, người thám mã có mã thông điệp, biết thuật toán dùng để mã hóa Công việc người thám mã phải tìm rõ thông điệp, tốt hết tìm khóa sử dụng để mã hóa thông điệp, để từ giải mã thông điệp khác mã hóa với khóa Để việc phân tích người thám mã có hiệu tốt hết mã phải dài Trong hệ đơn giản, ví dụ Affine, mã ngắn đưa lại kết có khóa sử dụng để mã hóa Trong hệ hoàn chỉnh mã dài cần thiết Hiệu phương pháp phân tích dựa thông tin thống kê liên quan tới ngôn ngữ mà rõ sử dụng Ví dụ thông tin tần số xuất ký tự riêng lẻ tiếng Anh Đầu vào: C1 = Ek(P1), C2 = Ek(P2), Ci = Ek(Pi) Cần tìm: Hoặc P1, P2, Pi; k; thuật toán để nhận Pi+1 từ Ci+1=Ek(Pi+1) Biết rõ (Known-plaintext attack): Người thám mã mã vài thông điệp mà biết rõ thông điệp Công việc người thám mã tìm khóa (hoặc khóa) sử dụng để mã hóa 10 private private private private private private private private private private private private private private private private private private private private private private private private private System.Windows.Forms.Label label1; System.Windows.Forms.Button button3; System.Windows.Forms.TextBox textBox1; System.Windows.Forms.Button button1; System.Windows.Forms.Label label2; System.Windows.Forms.Button button2; System.Windows.Forms.RichTextBox richTextBox1; System.Windows.Forms.RichTextBox richTextBox2; System.Windows.Forms.Label label3; System.Windows.Forms.Label label6; System.Windows.Forms.ListView listView1; System.Windows.Forms.ColumnHeader columnHeader1; System.Windows.Forms.ColumnHeader columnHeader2; System.Windows.Forms.ColumnHeader columnHeader3; System.Windows.Forms.ColumnHeader columnHeader4; System.Windows.Forms.ColumnHeader columnHeader5; System.Windows.Forms.ColumnHeader columnHeader6; System.Windows.Forms.ColumnHeader columnHeader7; System.Windows.Forms.ColumnHeader columnHeader8; System.Windows.Forms.ColumnHeader columnHeader9; System.Windows.Forms.ColumnHeader columnHeader10; System.Windows.Forms.Button button4; System.Windows.Forms.Label label9; System.Windows.Forms.TextBox textBox4; SteepValley.Windows.Forms.ThemedControls.XPSoftBarrier xpSoftBarrier1; private System.Windows.Forms.Label label5; private System.ComponentModel.IContainer components; public RSA2() { InitializeComponent(); } protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } Windows Form Designer generated code /// /// The main entry point for the application /// #region Tính nhanh hàm a mũ x mod n private long RR(long a,long x,long n) { long d=1; while(x!=0) { if(x%2!=0) d=(d*a)%n; x = x/2; a = (a*a)%n; } return d; } #endregion #region Thuat toan tim phan tu nghich dao private long Nghichdao(long a,long modul) { long[] u,v,uu; u = new long[3]; v = new long[3]; uu = new long[3]; long t = 0; u[0] = 1; u[1] = 0; u[2] = a; v[0] = 0; v[1] = 1; v[2] = modul; while(v[2]!=0) { 82 for(int j = 0;j

Ngày đăng: 03/08/2016, 16:26

Từ khóa liên quan

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

Tài liệu liên quan