Nghiên cứu và cài đặt một số hệ mã hóa

93 401 1
Nghiên cứu và cài đặt một số hệ 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 Mục Lục Error! Bookmark not defined LỜI MỞ ĐẦU CHƯƠNG I MỘT SỐ KHÁI NIỆM CHUNG VỀ HỆ MẬT MÃ I.1 Khái niệm hệ mật mã .5 I.1.2 Phân loại hệ thống mật mã .5 I.1.3 Hệ mã cổ điển (Symmetric-key encryption) I.1.3.1 Mã hoán vị (MHV) I.1.3.2 Mã dịch vòng ( shift cipher) I.1.3.3 Mã thay 11 I.1.3.4 Mã Affine .13 I.1.3.5 Mã Vigenère 17 I.1.3.6 Mật mã Hill 19 I.1.3.7 Các hệ mã dòng .24 I.1.3.8.Hệ mã DES 28 CHƯƠNG II MỘT SỐ HỆ MÃ HÓA CÔNG KHAI 37 II.2 Một số hệ mã công khai thông dụng 38 II.2.1 Hệ mã RSA (R.Rivest, A.Shamir, L.Adleman) .38 II.2.2 Hệ mã Rabin 44 II.2.3 Hệ mã Elgamal .47 II.2.4 Hệ mã MHK ( Merkle -Hellman Knapsack ) .51 CHƯƠNG III CÀI ĐẶT CHƯƠNG TRÌNH 54 III.1.Tổng quan ngôn ngữ JAVA 54 III.1.1Giới thiệu Java 54 III.1.2 Java ? .54 III.1.3 Các đặc trưng Java 55 III.1.4 Các kiểu chương trình Java .59 III.1.5 Máy ảo Java (JVM-Java Virtual Machine) 60 III.1.6 Bộ công cụ phát triển JDK (Java Development Kit)………… 63 III.1.7 Các đặc trưng Java .65 III.2 Giới thiệu công cụ JBuilder .66 III.2.1 Jbuilder X : 66 III.2.2 Tại dùng Jbuilder X ? 66 III.2.3 Ưu điểm, nhược điểm sử dụng công cụ Jbuilder X .67 III.2.4 Các bước xây dựng chương trình ứng dụng đơn giản với Jbuider X 67 III.2.5 Thiết kế giao diện Frame .67 III.2.6 Đóng gói chương trình 68 III.2.7 Một số đối tượng thường sử dụng để xây dựng giao diện Jbuilder X .68 III.3 Chương trình cài đặt 69 III.3.1 Giới thiệu : 69 III.3.2 Chương trình : .70 III.3.2.1.Thuật toán DES……………………………………………… 71 III.3.2.2.Thuật toán RSA……………………………………………… 76 III.3.2.3 Mã hoá Hoán vị………………………………………… … 81 III.3.2.4 Mã hoá Dịch Vòng…………………………… …………… 85 KẾT LUẬN 89 NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN 90 TÀI LIỆU THAM KHẢO 91 LỜI MỞ ĐẦU Ngày mà xã hội loài người bước tiếp cận với CNTT chắn không thừa nhận ưu điểm, mạnh ứng dụng ngành công nghệ phát triển kinh tế, trí tuệ, đời sống nước CNTT xem mấu chốt quan trọng mở đầu cho bước tiến tất lĩnh vực đời sống người, xem công cụ phục vụ đắc lực cho người bước đường phát triển đời sống, kinh tế, xã hội ngày nhờ có mà tốc độ trao đổi, thu nhập, xử lý thông tin quốc gia giới trở nên dễ dàng, xác nhanh chóng nhiều, từ có định hướng phù hợp, xây dựng nên cấu phát triển kinh tế tốt đưa nhân loại bước sang kỷ nguyên mới, kỷ nguyên khoa học kỹ thuật công nghệ cao Tuy nhiên việc phát triển công nghệ nhanh dẫn đến vấn đề phải quan tâm ,đó an toàn liệu Để vừa bảo đảm tính bảo mật thông tin lại không làm giảm phát triển việc trao đổi thông tin quảng bá toàn cầu giải pháp tốt mã hoá liệu Có thể hiểu sơ lược mã hoá thông tin che thông tin làm cho kẻ công chặn thông báo đường truyền đọc phải có giao thức người gửi người nhận để trao đổi thông tin, chế mã giải mã thông tin Hiểu mã hóa liệu vấn đề quan trọng , quan tâm, tận tình bảo thầy giáo Th.S Bùi Ngọc Tuấn, em chọn nghiên cứu đề tài Nghiên cứu cài đặt số hệ mã hóa với mong muốn sau hoàn thành đề tài em khám phá nhiều ứng dụng đồ thị việc giải lớp toán liên quan tới toán luồng cực đại Em xin gửi lời cảm ơn chân thành tới thầy giáo Th.S Bùi Ngọc Tuấncùng thầy giáo, cô giáo khác tận tình bảo để em hoàn thành đề tài Em xin gửi lời cảm ơn tới bạn sinh viên lớp K2A có ý kiến đóng góp để chương trình em hoàn thiện Mặc dù cố gắng chắn đề tài em không tránh khỏi thiếu sót Em mong nhận góp ý thầy cô giáo bạn để đề tài em hoàn thiện Em xin chân thành cảm ơn! Thái Nguyên, ngày 14 tháng năm 2008 CHƯƠNG I MỘT SỐ KHÁI NIỆM CHUNG VỀ HỆ MẬT MÃ I.1 Khái niệm hệ mật mã Đối tượng mật mã tạo khả liên lạc kênh không mật cho hai người sử dụng ( Giả sử người A người B ) cho đối phương hiểu thông tin truyền Kênh đường dây điện thoại mạng máy tính Thông tin mà B muốn gửi cho A (bản rõ) văn tiếng Anh, liệu số tài liệu có cấu trúc tuỳ ý Khi đó, B mã hoá rõ khoá xác định trước gửi mã kết kênh Đối phương có mã thu trộm kênh song xác định nội dung rõ, A (người biết khoá mã) giải mã thu rõ Ta mô tả hình thức hoá nội dung cách dùng khái niệm toán học sau: Một hệ mật (P, C, K, E, D) thoả mãn điều kiện sau: P (Plaintext): Là tập hữu hạn rõ C (Ciphertext): Là tập hữu hạn mã K (Key): Là tập hữu hạn khoá E (Encryption): Là tập hàm mã hoá D (Decryption): Là tập hàm giải mã Đối với k K có quy tắc mã ek: P  C quy tắc giải mã tương ứng dk  D Mỗi ek: P  C dk: C  P hàm mà: d k (ek (x)) = x với rõ x  P I.1.2 Phân loại hệ thống mật mã Theo chế mã hoá giải mã gồm + Hệ mã cổ điển ( hệ mã đối xứng) : dùng khoá để mã hoá giải mã + Hệ mã đại ( hệ mã bất đối xứng) : dùng khoá để mã hoá khoá để giải mã Khoá mã hoá công khai ,khoá giải mã phải giữ bí mật Theo cách mã hoá + Mã khối : mã hoá sử dụng thuật toán khối , liệu chia thành khối trước mã với kích thước tuỳ ý phải cố định + Mã dòng : thuật toán việc mã hoá giải mã thực theo bit thời điểm I.1.3 Hệ mã cổ điển (Symmetric-key encryption) a Khái niệm Hệ mã cổ điển loại mã thực thông qua hàm f có tính thuận nghịch, sử dụng f để mã hoá, biết f suy hàm giải mã f-1 Là hệ mã dùng khoá để mã hoá giải mã Khoá phải giữ bí mật b Một số hệ mã cổ điển I.1.3.1 Mã hoán vị (MHV) ý tưởng MHV giữ ký tự rõ không thay dổi thay đổi vị trí chúng cách xếp lại ký tự MHV (còn gọi mã chuyển vị) dùng từ hàng trăm năm Thật phân biệt MHV MTT Giovani Porta từ 1563 Định nghĩa hình thức cho MHV nêu hình 1.7 Ta phép toán đại số cần thực mã hoá giải mã nên thích hợp dùng ký tự mà không dùng thặng dư theo modulo 26 Định nghĩa dạng toán học: Cho m số nguyên dương xác định Cho P = C = (Z26 )m cho K gồm tất hoán vị {1, , m} Đối khoá  ( tức hoán vị) ta xác định: e(x1, , xm ) = (x(1), , x(m)) d(x1, , xm ) = (y -1(1), , y -1(m))  -1 hoán vị ngược  Dưới ví dụ minh họa: Giả sử m = khoá phép hoán vị (  ) sau: 6 Khi phép hoán vị ngược  -1 là: 6 Giả sử ta có rõ : khoacongnghethongtindaihocthainguyen Trước tiên ta nhóm rõ thành nhóm ký tự : khoaco | ngheth | ongtin | daihoc | thaing | uyenzz Bây nhóm chữ xếp lại theo phép hoán vị , ta có: AOKOHC| EHNHGT | HIDCAO | IATGHN | NEUZYZ Như mã AOKOHCEHNHGTHIDCAOIATGHNNEUZYZ Như mã mã theo cách tương tự phép hoán vị đảo  -1 Việc thực giải mã đựơc thực thông qua hoán vị đảo  -1 I.1.3.2 Mã dịch vòng ( shift cipher) Phần mô tả mã dịch (MD) dựa số học theo modulo Trước tiên điểm qua số định nghĩa số học a Định nghĩa Giả sử a b số nguyên m số nguyên dương Khi ta viết a  b (mod m) m chia hết cho b-a Mệnh đề a  b (mod m) gọi " a đồng dư với b theo modulo m" Số nguyên m gọi mudulus Giả sử chia a b cho m ta thu thương nguyên phần dư, phần dư nằm m-1, nghĩa a = q1m + r1 b = q 2m + r2  r1  m-1  r2  m-1 Khi dễ dàng thấy a  b (mod m) r1 = r2 Ta dùng ký hiệu a mod m (không dùng dấu ngoặc) để xác định phần dư a chia cho m (chính giá trị r1 trên) Như vậy: a  b (mod m) a mod m = b mod m Nếu thay a a mod m ta nói a rút gọn theo modulo m Nhận xét: Nhiều ngôn ngữ lập trình máy tính xác định a mod m phần dư dải - m+1, , m-1 có dấu với a Ví dụ -18 mod -4, giá trị nàykhác với giá trị giá trị xác định theo công thức Tuy nhiên, để thuận tiện ta xác định a mod m số không âm Bây ta định nghĩa số học modulo m: Zm coi tập hợp {0,1, .,m-1} có trang bị hai phép toán cộng nhân Việc cộng nhân Zm thực giống cộng nhân số thực trừ điểm kết rút gọn theo modulo m Ví dụ tính 11 13 Z16 Tương tự với số nguyên ta có 11 13 = 143 Để rút gọn 143 theo modulo 16, ta thực phép chia bình thường: 143 =  16 + 15, 143 mod 16 = 15 Z16 Các định nghĩa phép cộng phép nhân Zm thảo mãn hầu hết quy tắc quen thuộc số học Sau ta liệt kê mà không chứng minh tính chất này: Phép cộng đóng, tức với a,b  Zm ,a +b  Zm Phép cộng giao hoán, tức với a,b  Zm a+b = b+a Phép cộng kết hợp, tức với a,b,c  Zm (a+b)+c = a+(b+c) phần tử đơn vị phép cộng, có nghĩa với a  Zm a+0 = 0+a = a Phần tử nghịch đảo phép cộng phần tử (a  Zm) m-a, nghĩa a+(m-a) = (m-a)+a = với a  Zm Phép nhân đóng , tức với a,b  Zm , ab  Zm Phép nhân giao hoán , nghĩa với a,b  Zm , ab = ba Phép nhân kết hợp, nghĩa với a,b,c  Zm , (ab)c = a(cb) phần tử đơn vị phép nhân, tức với a  Zm a1 = 1a = a 10 Phép nhân có tính chất phân phối phép cộng, tức a,b,c  Zm , (a+b)c = (ac)+(bc) a(b+c) = (ab) + (ac) Các tính chất 1,3,5 nói lên Zm lâp nên cấu trúc đại số gọi nhóm theo phép cộng Vì có thêm tính chất nhóm gọi nhóm Aben (hay nhóm giao hoán) Các tính chất 1-10 thiết lập nên vành Zm Ta thấy nhiều ví dụ khác nhóm vành sách Một số ví dụ quên thuộc vành số nguyên Z, số thực R số phức C Tuy nhiên vành vô hạn, mối quan tâm giới hạn vành hữu hạn Vì phần tử ngược phép cộng tồn Zm nên trừ phần tử Zm Ta định nghĩa a-b Zm a+m-b mod m Một cách tương tính số nguyên a-b rút gon theo modulo m Ví dụ : Để tính 11-18 Z31, ta tính 11+13 mod 31 = 24 Ngược lại, lấy 11-18 -7 rồid sau tính -7 mod 31 = 24 Ta mô tả định nghĩa mã dịch vòng xác định Z26 (do có 26 chữ bảng chữ tiếng Anh) xác định Zm với modulus m tuỳ ý Dễ dàng thấy rằng, MDV tạo nên hệ mật xác định trên, tức dk (ek(x)) = x với x Z26 b.Định nghĩa mã dịch vòng Giả sử P = C = K = Z26 với  k  25 , ta định nghĩa mã dịch vòng dạng toán học sau: ek(x) = x + k ( mod 26 ) dk(x) = y - k ( mod 26 ) (với x,y  Z26) Nhận xét: Trong trường hợp K = 3, hệ mật thường gọi mã Caesar Julius Caesar sử dụng Ta sử dụng MDV (với modulo 26) để mã hoá văn tiếng Anh thông thường cách thiết lập tương ứng kí tự thặng dư theo modulo 26 sau: A  0,B  1, , Z  25 Vì phép tương ứng dùng vài ví dụ nên ta ghi lại để tiện dùng sau Ví dụ minh họa: Giả sử khoá cho MDV K = rõ là: Khoacongnghethongtin Trước tiên biến đổi rõ thành dãy số nguyên nhờ dùng phép tương ứng Ta có: Cuối biến đổi dãy số nguyên thành kí tự thu mã sau: PMTFHTSLSLMJYMTSLYNS Để giả mã mã này, trước tiên, Ta biến đổi mã thành dãy số nguyên trừ giá trị cho 11 ( rút gọn theo modulo 26) cuối biến đổi lại dãy thành ký tự Nhận xét: Trong ví dụ , ta dùng chữ in hoa ch o mã, chữ thường cho rõ để tiện phân biệt Quy tắc tiếp tục sử dụng sau Nếu hệ mật sử dụng thực tế phải thoả mãn số tính chất định Ngay sau nêu hai số đó: Mỗi hàm mã hoá eK hàm giải mã dK phải có khả tính toán cách hiệu Đối phương dựa xâu mã phải khả xác định khoá K dùng khả xác định xâu rõ x 10 }else { JOptionPane.showMessageDialog(dialog,"Error! Out Of Memory Error : Java heap spac","Encrypt File",JOptionPane.ERROR_MESSAGE); } } } Giao diện giả mã liệu //Giải mã public void runRSADec(){ if(cipherfile!=null && cipherfile.exists()){ RSAEncrypter rsaEncrypter = new RSAEncrypter(); WritePrivateKeyToFile data = rsaEncrypter.readPrivateCipherFromFile(keyfile); rsaEncrypter.setRSAPrivateKey(data.getRsaKey()); createCipherFileFrom(cipherfile); if(data!=null){ File f = new File("c:"+File.separator+"Cipher"+File.separator+"RSA"+File.separator+"Decry 79 pt"+File.separator+cipherfile.getName().substring(0,cipherfile.getName().length( )-7)); rsaEncrypter.decryptFileUseProgressBar(cipherfile,f,this.progressBar); JOptionPane.showMessageDialog(dialog,"Successful ! Click Ok","Decrypt File",javax.swing.JOptionPane.INFORMATION_MESSAGE); stop(); this.progressBar.setValue(0); this.progressBar.setMaximum(0); this.jLabel2.setVisible(false); this.progressBar.setVisible(false); } } else { cipherfile = null; JOptionPane.showMessageDialog(dialog,"Error File",JOptionPane.ERROR_MESSAGE); } } 80 File !","Error Open III.3.2.3 Mã hoá Hoán vị Giao diện mã hoá liệu // Hàm xử lý mã hoá mã hoán vị private void button3_Click(object sender, System.EventArgs e) { if(this.richTextBox1.Text.Equals("")) { MessageBox.Show("Yêu cầu nhập rõ !"); this.richTextBox1.Select(); } else { this.button3.Enabled = false; this.richTextBox2.Enabled = true; this.button6.Enabled = true; this.label5.Enabled = true; //Them cho du so luong ky tu if(m.Length%n!=0) { for(int j = 0;j[...]... ma trận mã hoá ở trên có nghịch đảo trong Z26 20 Vì ( Mọi phép toán số học đều được thực hiện theo modulo 26) Sau đây là một ví dụ minh hoạ cho việc mã hoá và giải mã trong hệ mật mã Hill a.Ví dụ Giả sử cần mã hoá bản rõ "July" Ta có hai phần tử của bản rõ để mã hoá: (9,20) (ứng với Ju) và (11,24) (ứng với ly) Với khóa Ta có Ta tính như sau Bởi vậy bản mã của July là DELW Để giải mã ta sẽ tính Và 21... ánh xạ vào một ký tự duy nhất Vì lý do đó, các hệ mật còn được gọi hệ thay thế đơn biểu Ta sẽ trình bày ( trong hình 1.2.4.1) một hệ mật không phải là bộ chữ đơn, đó là hệ mã Vigenère nổi tiếng Mật mã này lấy tên của Blaise de Vigenère sống vào thế kỷ XVI Sử dụng phép tương ứng A  0, B  1, , Z  25 ở trên, ta có thể gắn cho mỗi khoá K với một chuỗi kí tự có độ dài m được gọi là từ khoá Mật mã Vigenère... Trong hệ mật Vigenère có từ khoá độ dài m, mỗi ký tự có thể được ánh xạ vào trong m ký tự có thể có (giả sử rằng từ khoá chứa m ký tự phân biệt) Một hệ mật như vậy được gọi là hệ mật thay thế đa biểu (polyalphabetic) Nói chung, việc thám mã hệ thay thế đa biểu sẽ khó khăn hơn so việc thám mã hệ đơn biểu 18 I.1.3.6 Mật mã Hill Trong phần này sẽ mô tả một hệ mật thay thế đa biểu khác được gọi là mật mã. .. Hill Mật mã này do Lester S.Hill đưa ra năm 1929 Giả sử m là một số nguyên dương, đặt P = C = (Z26)m ý tưởng ở đây là lấy m tổ hợp tuyến tính của m ký tự trong một phần tử của bản rõ để tạo ra m ký tự ở một phần tử của bản mã Ví dụ nếu m = 2 ta có thể viết một phần tử của bản rõ là x = (x1,x2) và một phần tử của bản mã là y = (y1,y2) ở đây, y1cũng như y2 đều là một tổ hợp tuyến tính của x 1và x2 Chẳng... thuyết số b.Định nghĩa 1.3 Giả sử a  1 và m  2 là các số nguyên UCLN(a,m) = 1 thì ta nói rằng a và m là nguyên tố cùng nhau Số các số nguyên trong Zm nguyên tố cùng nhau với m thường được ký hiệu là (m) ( hàm này được gọi là hàm Euler) Một kết quả quan trọng trong lý thuyết số cho ta giá trị của (m) theo các thừa số trong phép phân tích theo luỹ thừa các số nguyên tố của m ( Một số nguyên p 1 là số. .. đại số tuyến tính nên sẽ thấy rằng phải dùng ma trận nghịch đảo K-1 để giả mã Bản mã được giải mã bằng công thức yK-1 Sau đây là một số định nghĩa về những khái niệm cần thiết lấy từ đại số tuyến tính Nếu A = (xi,j) là một ma trận cấp l  m và B = (b1,k ) là một ma trận cấp m  n thì tích ma trận AB = (c1,k ) được định nghĩa theo công thức : Với 1  i  l và 1  k  l Tức là các phần tử ở hàng i và. .. toán học: Cho m là một số nguyên dương cố định Cho P = C = (Z26 )m và cho K = { các ma trận khả nghịch cấp m  m trên Z26} Với một khoá k  K ta xác định: ek(x) = x*k d k(y) = y*k -1 Trong đó tất cả các phép toán được thực hiện trong Z26 23 I.1.3.7 Các hệ mã dòng Trong các hệ mật nghiên cứu ở trên, cácb phần tử liên tiếp của bản rõ đều được mã hoá bằng cùng một khoá K Tức xâu bản mã y nhạn được có dạng:... P Ta có thể coi mã khối là một trường hợp đặc biệt của mã dòng trong đó dùng khoá không đổi: Zi = K với mọi i 1 Sau đây là một số dạng đặc biệt của mã dòng cùng với các ví dụ minh hoạ Mã dòng được gọi là đồng bộ nếu dòng khoá không phụ thuộc vào xâu bản rõ, tức là nếu dòng khoá được tạo ra chỉ là hàm của khoá K Khi đó ta coi K là một "mần" để mở rộng thành dòng khoá z1z2 Một hệ mã dòng được gọi... giải mã Như đã chỉ ra trong ví dụ trên , điều kiện để một hệ mật an toàn là phép tìm khoá vét cạn phải không thể thực hiện được; tức không gian khoá phải rất lớn Tuy nhiên, một không gian khoá lớn vẫn chưa đủ đảm bảo độ mật I.1.3.3 Mã thay thế 11 Một hệ mật nổi tiếng khác là hệ mã thay thế Hệ mật này đã được sử dụng hàng trăm năm Trò chơi đố chữ "cryptogram" trong các bài báo là những ví dụ về MTT Hệ. .. khác ngoài 1 và p Mọi số nguyên m 1 có thể phân tích được thành tích của các luỹ thừa các số nguyên tố theo cách duy nhất Ví dụ 60 = 2 3  3  5 và 98 = 2  7 2 ) c.Định lý 1 2 Giả sử m =  pi Trong đó các số nguyên tố pi khác nhau và ei >0 ,1 Định lý này cho thấy rằng, số khoá trong mã Affine trên Zm bằng m(m), trong đó (m) được cho theo công thức trên ( Số các phép chọn của b là m và số các phép

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