Xem mẫu

  1. Đồ án chuyên ngành Tìm hiểu và cài đặt một số thuật toán mã hoá
  2. M ỤC L ỤC LỜI NÓI ĐẦU ................................ ................................ ................................ ................ 1 MỤC LỤC ................................ ................................ ....... Error! Bookmark not defined. CHƯƠNG I. TỔNG QUÁT VỀ ĐỀ TÀI ................................ ................................ ...... 5 1) Lý do chọn đề tài ................................ ................................ ................................ 5 2) Mục đích đề tài ................................ ................................ ................................ ... 5 3) Nội dung đề tài ................................ ................................ ................................ ... 5 CHƯƠNG II. SƠ LƯỢC VỀ MÃ HÓA ................................ ................................ ....... 6 1) Lịch sử mật mã học ................................ ................................ ............................ 6 2) Ứng dụng mã hóa ................................ ................................ ............................... 6 3) Các thành phần của một hệ mã ................................ ................................ ........... 7 CHƯƠNG III. TÌM HIỂU THUẬT TOÁN MÃ HÓA ................................ ................ 10 1) Mã hóa bảng băm (Hashing) ................................ ................................ ............. 10 2) Mã hóa đối xứng................................ ................................ ............................... 11 3) Mã hóa bất đối xứng ................................ ................................ ......................... 14 CHƯƠNG IV. TÌM HIỂU THUẬT TOÁN ................................ ................................ 18 1) Thuật toán MD5 (Message Digest 5) ................................ ................................ 18 2) Thuật toán RSA ................................ ................................ ................................ 25 CHƯƠNG V. KẾT LUẬN ................................ ................................ ......................... 29 CHƯƠNG VI. TÀI LIỆU THAM KHẢO: ................... Error! Bookmark not defined.
  3. DANH MỤC HÌNH ẢNH Hình 1. Cây gậy mã hóa của người Hy Lạp ................................ ................................ .. 6 Hình 2. Trường hợp nghe không hợp pháp này được gọi là nghe trộm ........................ 12 Hình 3. Trường hợp nghe trộm khi Alice mã hoá thông tin gửi cho Bob ...................... 12 Hình 4. Mã hoá công khai với khoá Public và giải mã với Private ............................... 16 Hình 5. Mã hoá công khai với khoá Private và giải mã với Public ............................... 16 Hình 6. Sơ đồ 1 vòng mã hoá MD5 ................................ ................................ ............. 22 Hình 7. Trước khi mã hoá MD5................................ ................................ ................... 24 Hình 8. Sau khi mã hoá với MD5 ................................ ................................ ................ 25 Hình 9. Sơ đồ các bước thực hiện mã hoá theo thuật toán RSA ................................ ... 26 Hình 10. Form tạo khoá ................................ ................................ ................................ . 26 Hình 11. Trước khi mã hoá với RSA ................................ ................................ ............. 27 Hình 12. Sau khi mã hoá với RSA với khoá riêng tư ................................ .................... 27 Hình 13. Sau khi giải mã với khoá công khai................................ ................................ . 28
  4. LỜI NÓI ĐẦU Từ khi con người có nhu cầu trao đổi thông tin, thư từ cho nhau thì nhu cầu giữ bí mật và bảo vệ tính riêng tư của những thông tin được trao đổi từ đó cũng nảy sinh. Từ trước công nguyên con người đã phải quan tâm tới việc làm thế nào để đảm bảo an toàn bí mật cho các tài liệu văn bản đặc biệt là các thông tin nhạy cảm trong các lĩnh vực như quân sự, ngoại giao hay kinh doanh. Ngày nay cùng với sự xuất hiện của máy tính, các tài liệu văn bản giấy tờ và các thông tin quan trọng đều được số hoá và xử lý trên máy tính, được truyền đi trong một môi trường mặc định là không an toàn. Do đó yêu cầu cần phải có ít nhất một cơ chế, giải pháp để bảo vệ sự an toàn và bí mật của các thông tin nhậy cảm, quan trọng ngày càng trở nên cấp thiết. Mã hoá là một trong những giải pháp tốt cho những vấn đề này. Hiện nay việc sử dụng mã hoá trong các ứng dụng tin học là điều không thể thiếu và đã hình thành rất nhiều các thuật toán mã hoá cho việc mã hoá như các thuật toán đối xứng và bất đối xứng, các hàm băm, …. Trong đồ án môn học “ Tìm hiểu và cài đặt một số thuật toán mã hoá” sẽ đi tìm hiểu chi tiết về các thuật toán mã hoá như hàm băm, hệ mã đối xứng và hệ mã bất đối xứng nhằm đưa ra các đánh giá về các thuật toán và thực hiện cài đặt một số thuật toán như MD5, RSA trên ngôn ngữ C#. Trong thời gian qua dù đã cố gắng hết sức song mã hoá là một chủ đề hết sức rộng lớn và khó trong khi thời gian có hạn nên khi thực hiện đồ án không tránh khỏi những sai xót, khiếm khuyết nên em mong nhận được sự đóng góp, giúp đỡ của mọi người để đồ án trở này có thể hoàn thiện hơn. Cũng qua đồ án môn học này em xin chân thành cảm ơn sự hướng dẫn của Giảng viên Ths. Huỳnh Ngọc Thọ cùng các Thầy cô khác trong khoa đã nhiệt tình hướng dẫn để em có thể hoàn thành đồ án này. Đà Nẵng, Ngày 1 tháng 12 năm 2011 Sinh viên thực hiện Vũ Đình Huy
  5. CHƯƠNG I. TỔNG QUÁT VỀ ĐỀ TÀI 1) Lý do chọn đề tài Trong thời đại của công nghệ thông tin như hiện nay,tất cả các dữ liệu, thông tin trên thế giới đã, đang và sẽ được số hóa. Việc này tạo rất nhiều thuận lợi trong việc tìm kiếm, tổ chức lưu trữ cũng như chia sẻ tri thức nhân loại, tăng mức độ trao đổi thông tin. Nhưng bên cạnh đó việc bảo mật dữ liệu được số hóa hiện đang là một vấn đề rất ít được quan tâm đến dẫn đến các tài liệu mang tính riêng tư được công khai dẫn đến nhiều tổn thất trong nhiều mặt. Nhận thức được vấn đề này nên em quyết định chọn đồ án chuyên ngành là “Tìm hiểu và cài đặt một số thuật toán mã hoá”. 2) Mục đích đề tài Đề tài tập trung nghiên cứu, tìm hiểu các vấn đề cơ bản trong việc mã hóa thông tin, các khái niệm cơ bản trong mật mã học các phương pháp mã hóa thông tin cơ bản, các giao thức mật mã. Tìm hiểu các phương thức mã hóa cơ bản Bảng Băm, Mã hóa đối xứng và bất đối xứng. Cài đặt thuật toán một số thuật toán mã hóa với ngôn ngữ C#. 3) Nội dung đề tài Trong bản báo cáo này trình bày các vấn đề cơ bản trong việc mã hoá như: Chương II Trình bày sơ lược về mã hoá như: lịch sử ngành mật mã học, các ứng dụng của mã hoá trong thực tế, các thành phần trong mã hoá thông tin. Chương III Trình bày một số loại thuật toán mã hoá như hàm băm, mã hoá đối xứng, mã hoá bất đối xứng. Chương IV Trình bày cài đặt các thuật toán và đưa ra một số đánh giá về thuật toán mã hoá như MD5 và RSA. Chương V Trình bày kết luận của báo cáo.
  6. CHƯƠNG II. SƠ LƯỢC VỀ Mà HÓA 1) Lịch sử mật mã học Mật mã học là một ngành có lịch sử từ hàng nghìn năm. Trong phần lớn lịch sử phát triển lịch sử mật mã học chính là của phương pháp mã hóa cổ điển – Các phương pháp mã hóa với bút và giấy hay đôi khi sử dụng một vài dụng cụ cơ khí đơn giản. Hình 1. Cây gậy mã hóa của người Hy Lạp – Dụng cụ mã hoá đầu tiên trong ngành mật mã học Đến thế kỷ XX, cùng với sự xuất hiện cuarcasc cơ cấu cơ khí và điện cơ đã cung cấp những cơ chế phức tạp và hiệu quả hơn cho việc mật mã hóa. Sự ra đời và phát triển mạnh mẽ của ngành điện tử và máy tính đã làm cho mật mã học phát triển nhảy vọt lên một tầm cao mới. Tuy nhiên cùng với các kỹ thuật mã hóa thì các kỹ thuật phá mã (hay thám mã) cũng phát triển song hành. Các kỹ thuật phá mã trong một số trường hợp đã có ảnh hưởng đáng kể đến các sự kiện lịch sử như việc phát hiện ra “Bức điện Zimmermann”đã khiến Hoa Kỳ tham gia thế chến I và việc phá mã thành công hệ thống mật mã của ĐỨc Quốc xa đã góp phần đẩy nhanh thời điểm kết thúc của thế chiến II. Cho tới thập kỷ 70 của thế kỷ XX các kỹ thuật mã hóa hầu như nằm trong tay của các chính phủ. Hai sự kiện đã khiến mật mã học trở nên thích hợp cho mọi người là sự xuất hiện của tiêu chuẩn mật mã hóa DES (Data Encryption Standard) và sự ra đời của các kỹ thuật “Mật mã hóa khóa công khai”. 2) Ứng dụng mã hóa Ngày nay khó có thể tìm thấy các ứng dụng trên máy tính mà lại không sử dụng tới các thuật toán và các giao thức mật mã học. Từ các ứng dụng cho các máy tính cá
  7. nhân cho tới các chương trình hệ thống như hệ điều hành, các ứng dụng mạng hay các hệ cơ sở dữ liệu đều có sử dụng thuật toán mã hóa mật khẩu người dùng bằng một hệ mã hoặc một hàm băm nào đó. Đặc biệt với sự phát triển mạnh mẽ của thương mại điện tử, các mô hình chữ ký điện tử ngày càng đóng vai trò tích cực cho môi trường an toàn cho người sử dụng. Tuy vậy chúng ta vẫn có thể chia các lĩnh vực ứng dụng của mật mã học thành một số lĩnh vực như sau: Bảo mật (Confidentiality): Che giấu nội dung của thông điệp được trao đổi trong một phiên truyền thông hoặc giao dịch các thông điệp trên một hệ thống máy tính Xác thực hóa(Authentication: Đảm bảo nguồn gốc của một thông điệp, người dùng Toàn vẹn (Integrity): Đảm bảo chỉ có các tổ chức đã được xác thực hóa mới có thể thây đổi các tài sản của hệ thống cũng như các thông tin trên đường truyền Dịch vụ không thể chối từ( Non-Repudiaton): Các bên đã xác thực không thể phủ nhận việc tham gia một giao dịch hợp lệ Các lĩnh vực khác: Như chữ ký điện tử, dịch vụ chứng minh danh tính cho phép thay thế hình thức xác thực hóa người dùng dựa trên các mật khẩu bằng cá kỹ thuật mạnh hơn hoặc dịch vụ thương mại điện tử cho phép tiến hành các giao dịch các giao dịch an toàn các kênh truyền thông không an toàn như môi trường Internet 3) Các thành phần của một hệ mã 3.1 Định nghĩa Một hệ mật là một bộ (P,C,K,E,D) thỏa mãn các điều kiện sau: P là một tập hợp hữu hạn các bản rõ (Plain text), nó còn được gọi là không gian bản rõ. C là tập hữu hạn các bản mã (Crypto),nó còn được gọi là không gian các bản mã. Mỗi phần tử trong C có thể nhận được bằng cách áp dụng phép mã hóa Ek lên một phần tử của P với k K. K là một tập hợp hữu hạn các khóa hay còn gọi là không gian khóa. Đối với mỗi phần tử k của K được gọi là một khóa (Key). Số lượng của không
  8. gian khóa phải đủ lớn để “kẻ địch” không có đủ thời gian để thử mọi khóa có thể (phương pháp vét cạn). Đối với mỗi k K có một quy tắc mã eK :P->C và một quy tắc giải mã tương ứng dK D. Mỗi eK:P -> C và dK:C -> P là những hàm mã 3.2 Phân loại hệ mật mã Có nhiều cách để phân loại hệ mật mã nhưng dựa vào cách truyền khóa có thể phân hệ mật mã thành hai loại: Hệ mật đối xứng (hay còn gọi là khóa bí mật) là những hệ mật dùng chung một khóa trong cả quá trình mã hóa d ữ liệu và giải mã dữ liệu. Do đó khóa phải được giữ bí mật tuyệt đối Hệ mã bất đối xứng (hay còn gọi là mã hóa công khai) Các hệ mật này dùng một khóa để mã hóa và mọt khá khác để giải mã, nghĩa là khóa để mã và giải mã là hoàn toàn khác biệt.Các khóa này tạo nên từng cặp chuyển đổi ngược nhau và không có khóa nào có thể suy ra được từ khóa kia. Khóa dùng để mã hóa là công khai nhưng khóa để giải mã là bí mật. 3.3 Tiêu chuẩn đánh giá một hệ mật mã. Để đánh giá một hệ mã người ta thường đánh giá thông qua các tính chất sau: a. Độ an toàn: Một hệ mật mã được đưa vào sử dụng điều đầu tiên phải có độ an toàn cao. Ưu điểm của mật mã là có thể đánh giá được độ an toàn thông qua độ an toàn tính toán mà không cần phải cài đặt. Một hệ mật được coi là an toàn nếu để phá mật mã này cần phải dùng tới n phép toán. Để giải quyết được n phép toán này cần một thời gian vô cùng lớn, khó có thể chấp nhận được. Một hệ mật mã được gọi là tốt thì nó cần phải đảm bảo các tiêu chuẩn như: Chúng phải có phương pháp bảo vệ mà chỉ dựa trên sự bí mật của các khóa và công khai thuật toán Khi cho khoá công khai e K và bản rõ P thì chúng ta dễ dàng tính được eK(P) = C. Ngược lại khi cho dK và bản mã C thì dễ dàng tính được dK(M)=P. Khi không biết dK thì không có khả năng để tìm được M từ C, nghĩa là khi cho hàm f: X → Y thì việc tính y=f(x) với mọi x∈ X là dễ còn việc tìm x khi biết y lại là vấn đề khó và nó được gọi là hàm một chiều.
  9. Bản mã C không được có các đặc điểm gây chú ý, nghi ngờ.. b. Tốc độ mã hóa và giải mã c. Phân phối khóa Một hệ mật mã phụ thuộc vào khóa, khóa này được truyền công khai hay truyền khóa bí mật. Phân phối khóa bí mật thì chi phí sẽ cao hơn so với các hệ mật có khóa công khai. Vì vậy đây cũng là một tiêu chí khi lựa chọn hệ mật mã.
  10. CHƯƠNG III. TÌM HIỂU THUẬT TOÁN MÃ HÓA 1) Mã hóa bảng băm (Hashing) 1.1 Khái niệm: Hashing là một phương thức mã hóa nhưng mà nó không phải là một thuật toán mã hóa. Hashing sử dụng một chứng chỉ số duy nhất được biết đến với tên như: hashing value (Giá trị hashing), Hash (Bảng Băm), Message Authencation Code (Đoạn mã chứng thực), fingerprint (Vân tay) hay chỉ là môt đoạn massage. Không như các phương thức mã hóa khác, Hashing sử dụng một hash value và không thay đổi dữ liệu ban đầu, quá trình Hashing có thể sử dụng để bảo vệ và kiểm tra tính toàn vẹn của dữ liệu khi một tiến trình copy được thực hiện và đảm bảo tính chính xác của dữ liệu khi chúng được copy. Thông số Hash-Value để phát hiện ra dữ liệu có còn toàn vẹn trong quá trình mã hóa và giải mã thông tin hay không Dữ liệu đầu vào của Hashing có thể là một file text, một chuỗi string, một bức thư điện tử…. có độ dài bất kỳ, dữ liệu đầu ra của hashing là một chuỗi có chiều dài cố định. 1.2 Ví dụ : Chuỗi: The quick brown fox jumps over the lazy dog =e107d9d372bb6826bd81d3542a419d6 Và chỉ cần thêm 1 chữ nó sẽ hoàn toàn khác: The quick brown foxjumps over the lazy doga = ccb0962bd083791df15cd2bc1846afc7 Thậm chí là một chuỗi rỗng cũng có kết quả: = d41d8cd98f00b204e9800998ecf8427e 1.3 Đặc tính hàm băm: Hàm Băm là thuật toán một chiều nên nó chỉ mã hoá một chuỗi có chiều dài bất kỳ thành một chuỗi có chiều dài cố định mà không có thuật toán giải mã nên nó sử dụng chủ yếu trong các hoạt động mã hoá mật khẩu để chứng thực vì có chiều dài cố định 128bit nên tốc độ so sánh của nó rất nhanh. Một vấn đề cần phải bàn đó là sự đụng độ của hàm Băm. Theo nguyên lý Diricle “Nếu có n+1 con thỏ cho vào n cái chuồng thì phải tồn tại ít nhất một cái chuồng mà
  11. trong đó có ít nhất là hai con thỏ ở chung”. Rõ ràng với không gian giá trị giới hạn của hàm băm nhỏ hơn rất nhiều so với không gian về mặ kích thwowcjsthif chắc chắn sẽ tồn tại đụng độ nghĩa là sẽ có hai tin x khác x’ mà có h(x) = h(x’). 1.4 Ứng dụng của hàm băm Các hàm băm được ứng dụng trong khá nhiều lĩnh vực, chúng thường được thiết kế phù hợp với từng ứng dụng. Ví dụ như trong mật mã học để giả thiết sự tồn tại của một đối phương – người có thể cố tình tìm các dữ liệu cùng với một giá trị băm. Một hàm băm tốt là một phép biến đổi một chiều, nghĩa là không có một phương pháp thực tiễn nào để tính toán được dữ liệu vào nào đó tương ứng với giá trị băm mong muốn. Khi đó việc giả mạo sẽ rất khó khăn. Bảng băm là một ứng dụng của hàm băm cho phép tra cứu nhanh một bản ghi dữ liệu nếu cho trước một khoá nào đó của bản ghi đó. Các hàm băm còn được sử dụng trong việc phát hiện và sửa lỗi tập trung phân biệt các trường hợp mà dữ liệu đã bị làm nhiễu bởi các quá trình ngẫu nhiên. Các hàm băm còn được sử dụng trong các ứng dụng nhận dạng âm thanh như việc xác định một file mp3 có khớp với một file trong danh sách một loại file khác hay không. 2) Mã hóa đối xứng 2.1 Tìm hiểu mã hoá đối xứng Chương trình mã hóa đối xứng còn được gọi là chương trình hay thuật toán một khóa, khóa bí mật hoặc khóa đối xứng. Có thể dễ dàng hiểu được đặc điểm của công nghệ mã hóa đối xứng thông qua ví dụ sau: Có hai người sử dụng, Alice và Bob, muốn giao tiếp trên một kênh không an toàn (Internet, WIFI, điện thoại di động...). Vấn đề thực sự bắt đầu khi có một cô gái xấu tên là Eve truy cập vào kênh đó, ví dụ bằng cách xâm nhập vào một bộ định tuyến Internet hoặc nghe tín hiệu phát sóng của liên lạc Wi-Fi.Hiển nhiên, trong nhiều tình huống Alice và Bob sẽ muốn liên lạc mà bị Eve nghe trộm. Trường hợp nghe không hợp pháp này được gọi là nghe trộm.
  12. Hình 2. Trường hợp nghe không hợp pháp này được gọi là nghe trộm của nhân vật Eve Ví dụ, nếu Alice và Bob đại diện cho hai văn phòng của một nhà sản xuất xe hơi, và họ đang truyền đạt cho nhau các tài liệu nói về chiến lược kinh doanh để giới thiệu các mẫu xe mới trong vài năm tới, những tài liệu này không nên bị rơi vào tay các đối thủ cạnh tranh của họ. Trong trường hợp này, công nghệ mã hóa sẽ đưa ra một giải pháp hiệu quả: Alice phải mã hóa thông điệp của mình bằng cách sử dụng thuật toán đối xứng, tạo ra văn bản mật mã. Bob sẽ nhận văn bản mật mã đó và giải mã thông điệp của Alice. Do vậy, giải mã là quá trình nghịch đảo của mã hóa. Điều này đem lại lợi ích gì? Nếu chúng ta có một thuật toán mã hóa mạnh thì đối với Eve văn bản mật mã đó chỉ giống như những bit ngẫu nhiên và không chứa bất cứ thông tin hữu ích nào. Hình 3. Trường hợp nghe trộm của nhân vật Eve khi Alice mã hoá thông tin gửi cho Bob Hệ thống mã hóa đối xứng khi có hai thuộc tính sau: 1. Sử dụng cùng một khóa bí mật để mã hóa và giải mã.
  13. 2. Hàm mã hóa và giải mã giống hệt nhau. Trong trường hợp trên, có một điều quan trọng và cũng phản trực là cả hai thuật toán mã hóa và giải mã đều được công khai. Dường như việc giữ bí mật cho các thuật toán mã hóa sẽ làm cho toàn bộ hệ thống khó bị phá vỡ. Tuy nhiên, các thuật toán bí mật cũng có nghĩa là chưa được kiểm tra: Cách duy nhất để tìm hiểu xem một phương pháp mã hóa có mạnh hay không, tức là không thể bị phá vỡ bởi một kẻ tấn công có chủ ý, là để nó công khai cho người khác phân tích. Trước khi có máy vi tính, mật mã học bao gồm các thuật toán dựa trên ký tự. Các thuật toán mã hóa đó thường thay ký tự này bằng một ký tự khác hoặc hoán vị các ký tự cho nhau. Thuật toán tốt hơn hết là thực hiện cả hai điều đó nhiều lần. Ngày nay mọi thứ đều đã phức tạp hơn nhưng triết lý vẫn tương tự như trước đây. Chỉ có điểm thay đổi cơ bản là các thuật toán hoạt động theo bit thay vì các ký tự. Điều này thực sự chỉ là sự thay đổi về kích thước bảng chữ cái: từ 26 yếu tố đến hai yếu tố. Các thuật toán mã hóa hiệu quả nhất vẫn là kết hợp các yếu tố thay thế và hoán vị. 2.2 Một số thuật toán mã hoá Thuật toán mã hoá Caesar: nổi tiếng là thuật toán thay thế theo cách đơn giản mà mỗi ký tự văn bản gốc sẽ được thay thể bởi ký tự th ứ ba tính từ bên phải nó trong bảng 26 chữ cái (“A” được thay thế bởi “D,” “B” được thay thế bởi “E,”..., “W” được thay thế bởi “Z,” “X” được thay thế bởi “A,” “Y” được thay thế bởi “B,” and “Z” được thay thế bởi “C”). Thuật toán mã hoá chuyển vị Đây là một phương pháp mã hóa mà những vị trí được tổ chức bởi các đơn vị của văn bản gốc (thường là các ký tự hoặc nhóm ký tự) được chuyển dịch theo một hệ thống có quy tắc, như vậy văn bản mã hóa tạo nên sự hoán vị của văn bản gốc. Đó chính là sự thay đổi thứ tự của các đơn vị. Thuật toán mã hoá luồng: mã hóa từng bit, hết bít này đến bít khác.. Có thể thực hiện điều này bằng cách thêm một bit từ luồng khóa vào một bit
  14. văn bản gốc. Những loại thuật toán mã hóa luồng đồng bộ là luồng khóa chỉ phụ thuộc vào khóa đó và loại không đồng bộ là luồng khóa còn phụ thuộc vào văn bản mật mã. Một số thuật toán mã hoá luồng mạnh như RC4, RC5… Thuật toán mã hoá khối: mã hóa cả khối bit của văn bản thường cùng một lúc và với cùng một khóa. Điều này có nghĩa là sự mã hóa bất kỳ bit nào trong khối đã cho cũng phụ thuộc vào mọi bit khác trong cùng khối. 2.3 Đánh giá mức độ an toàn của thuật toán: Độ dài khóa Ước tính độ an toàn An toàn trong thời gian ngắn: vài giờ hoặc vài ngày 56-64 bit An toàn trong thời gian dài: nhiều thập kỷ nếu không có sự 112-128 bit tồn tại của máy tính lượng tử An toàn trong thời gian: nhiều thập kỷ, ngay cả khi máy tính lượng tử vận hành các thuật toán máy tính lượng tử đang được 256 bit biết đến hiện nay 3) Mã hóa bất đối xứng Trong mô hình mật mã cổ điển mà cho tới nay vẫn còn đang được nghiên cứu: Người gửi (A) và người nhận (B) bằng cách chọn một khoá bí mật K. Sau đó A dùng khoá K để mã hoá theo quy luật eK và B dùng khoá K đó để giải mã theo quy luật dK. Trong hệ này, dk hoặc giống như eK hoặc dễ dàng nhận được từ nó vì quá trình giải mã hoàn toàn tương tự quá trình mã hoá, nhưng thủ tục khoá thì ngược lại. Nhược điểm lớn của hệ mật này là nếu ta để lộ eK thì làm cho hệ thống mất an toàn, chính vì thế nên chúng ta tạo cho hệ mật một kênh an toàn mà kinh phí để tạo một kênh an toàn không phải là rẻ. Ý tưởng xây dựng một hệ khoá công khai là tìm được một hệ mật không có khả năng tình toán để xác định dK dù có biết được eK . Nếu thực hiện như vậy thì quy tắc eK có thể được sử dụng công khai công bố nó ra ngoài, và khi người gửi muốn gửi một bản tin cho người nhận thì người đó không phải thông tin trước với người nhận về khoá mật, và người gửi sẽ mã hoá thông tin bằng cách dùng luật mã hoá công khai eK.
  15. Khi bản tin này được chuyển cho người nhận thì chỉ duy nhất người nhân mới có thể giải được bản tin này bằng cách sử dụng luật giải mã bí mật dK. Ý tưởng về hệ mật này đã được Diffie và Heliman đưa ra vào năm 1976. Còn việc thực hiện hệ mã công khai thì được Rivest, Shamin và Adieman đưa ra lần đầu tiên năm 1977. Họ tạo nên hệ mật RSA nổi tiếng. Sau đó đã có rất nhiều hệ mật khác ra đời như: Hệ mật xếp ba lô Hệ mật McEliece Hệ mật ElGamal Hệ mật Chor – Rivest Hệ mật trên các đường cong Elliptic 3.1 Định nghĩa: Mật mã bất đối xứng (astmmetric cryptography) còn có tên gọi khác là mật mã hoặc mật mã hai khoá ( two key khoá công khai (public key crytography) crytography). Đặc trưng của kỹ thuật mã hoá bất đối xứng là dùng 2 khoá riêng biệt cho hai việc mã hoá và giải mã. Một trong hai khoá được phổ biển công khai là khoá public dùng để mã hoá, khoá còn lại là khoá riêng hay còn gọi là khoá bí mật (private key hay PR) dùng để giải mã.
  16. Hình 4. Mã hoá công khai với khoá Public và giải mã với Private Hình 5. Mã hoá công khai với khoá Private và giải mã với Public Nhìn chung mã hoá đối xứng không phải là một mã hoá có tính an toàn cao hơn các hệ mã khác. Như phần trên đã trình bày, độ an toàn của một thuật toán phụ thuộc vào hai yếu tố: độ dài của khoá và mực độ phức tạp khi thực hiện thuật toán trên máy tính. Hơn nữa mặc dù ra đời sau song không có nghĩa rằng mật mã bất đối xứng hoàn toàn ưu điểm hơn và sẽ thay thế cho mật mã đối xứng. Mỗi kỹ thuật mã hoá có thế mạnh riêng và mật mã đối xứng vẫn rất thích hợp cho các hệ thống nhỏ và đơn giản. Ngoài ra, vấn đề phân phối khoá trong mật mã bất đối xứng cũng được đánh giá là một trong những vấn đề phức tạp khi triển khai kỹ thuật này trên thực tế. 3.2 Nguyên tắc hoạt động Các thành phần của một hệ thống mật mã bất đối xứng tương tự như một hệ thống mật mã quy ước, chỉ khác ở chi tiết dùng 2 khoá K khác nhau cho hai bước mã hoá và giải mã. Khi người dùng muốn gửi thông tin cho một người dùng khác thì phải có một trong hai khoá của user nhận, do vậy mỗi user phải lưu trữ sẵn một danh sách các khoá của nhiều user khác có quan hệ trao đổi dữ liệu. Một cơ chế để quản lý các khoá này trên máy tính là key ring. Các bước cơ bản của một hệ thống mật mã dùng khoá công khai bao gồm:
  17. Mỗi thực thể thông tin (user) tạo ra một cặp khoá public/private để dùng cho việc mã hoá và giải mã. Mỗi user thông báo một trong 2 khoá của mình cho các user khác muốn trao đổi thông tin biết. Khoá này gọi là khoá công khai. Khoá còn lại được giữ khoá bí mật còn gọi là khoá riêng. Nếu một user A muốn gửi một thông tin cho user B, user A thực hiện việc mã thông tin cần gửi bằng khoá công khai của user B. Khi nhận được thông tin mã hoá từ user A, user B thực hiện việc giải mã thông tin đó bằng khoá riêng của mình. Do khoá riêng không phổ biến công khai nên chỉ có một mình user B có khả năng giải mã được. 3.3 Ứng dụng của mật mã đối xứng Mật mã bất đối xứng dùng cho các mục đích như: Ứng dụng rõ ràng nhất của mật mã hóa khóa công khai là bảo mật: một văn bản được mã hoá bằng khóa công khai của một người sử dụng thì chỉ có thể giải mã với khoá bí mật của người đó. Các thuật toán tạo chữ ký số khoá công khai có thể dùng chứng thực. Một người sử dụng có thể mã hoá văn bản với khoá bí mật của mình. Nếu một người khác có thể giải mã với khóa công khai của người gửi thì có thể tin rằng văn bản thực sự xuất phát từ người gắn với khóa công khai đó.
  18. CHƯƠNG IV. TÌM HIỂU THUẬT TOÁN 1) Thuật toán MD5 (Message Digest 5) 1.1 Thuật toán Mã Hóa Ronald Rivest là người đã phát minh ra thuật toán MD2, MD4(1990) và MD5(1991). MD5 là một cả tiến của MD4 và cũng là hàm được sử dụng rộng rãi nhất. Các nguyên tắc thiết kế của hàm này cũng là nguyên tắc chung cho rất nhiều các hàm băm khác. MD5 từng có thời gian được xem là một chuẩn trên internet, được sử dụn rộng rãi trong các ch ương trình an ninh mạng và cũng để kiểm tra tính nguyên vẹn của tập tin. a. Miêu tả MD5: Đầu vào là những khối 512 bit được chia thành 16 khối con 32 bit, đầu ra của thuật toán là thiết lập của 4 khối 32 bit để thạo thành một hàm băm 128 bit duy nhất. Đầu tiên ta đưa thông điệp cần mã hoá ra chia thành các kh ối 512bit với khối cuối cùng đặt là x (x
  19. đó các bit “0“ được thêm vào để có một độ dài đồng dư với 448 môđun 512. Trong tất cả các trường hợp, có ít nhất 1 và nhiều nhất 512 bit được thêm vào. Bước 2 : Gắn thêm độ dài Dạng biểu diễn 64 bit độ dài b của chuỗi ban đầu được thêm vào phía sau kết quả của bước 1. Trong trường hợp b lớn hơn 2^64 thì chỉ có 64 bit thấp của b được sử dụng. ( Các bit này được thêm vào phía sau dưới dạng 2 word 32 bit, gắn word thấp trước theo quy ước ở trên ) Bước 3 : Khởi tạo bộ đệm MD Một bộ đệm 4 word (A,B,C,D) được dùng để tính mã số thông điệp. Ở đây mỗi A,B,C,D là một thanh ghi 32 bit. Những thanh ghi này được khởi tạo theo những giá trị hex sau ( các byte thấp trước ) : word A : 01 23 45 67 word B : 89 ab cd ef word C : fe dc ba 98 word D : 76 54 32 10 Bước 4 : Xử lý thông điệp theo từng khối 16 word Trước hết ta định nghĩa các hàm phụ, các hàm này nhận đầu vào là 3 word 32 bit và tạo ra một word 32 bit. F(X,Y,Z) = XY v not(X) Z G(X,Y,Z)= XZ v Y not(Z) H(X,Y,Z) = X xor Y xor Z I(X,Y,Z) = Y xor (X v not(Z)) Với mỗi bit, F hoạt động như một điều kiện : nếu X thì Y nếu không thì Z. Hàm F có thể định nghĩa bằng phép + thay vì v bởi vì XY và not(X)Z không bao giờ có “1“ ở cùng 1 vị trí bit.Các hàm G,H và I tương tự như F, ở chỗ chúng tác động theo từng bit tương ứng để tạo ra kết quả từ các bit của X,Y và Z Bước này sử dụng một bảng 64 giá trị T[1 .. 64] được tạo ra từ hàm sin. Gọi T[i] là phần tử thứ i của bảng, thì T[i]là phần nguyên của 4294967296*|sin(i)| , i được tính theo radian. Làm như sau :
  20. /* Xử lý mỗi khối 16 word */ For i = 0 to N/16-1 do /* Copy block i into X. */ For j = 0 to 15 do Set X[j] to M[i*16+j]. end /* of loop on j */ /* Lưu A vào AA, B vào BB, C vào CC, D và DD . */ AA = A BB = B CC = C DD = D /* Vòng 1. */ /* Ký hiệu [abcd k s i] nghĩa là thực hiện như sau : a = b + ((a + F(b,c,d) + X[k] + T[i])
nguon tai.lieu . vn