Đề tài Tìm hiểu một số thuật toán mã hóa dữ liệu và ứng dụng

Trong những năm gần đây, mạng Internet đã trở thành nền tảng chính cho sự trao đổi thông tin trên toàn cầu. Có thể thấy một cách rõ ràng là Internet đã và đang tác động lên nhiều mặt của đời sống chúng ta từ việc tìm kiếm thông tin, trao đổi dữ liệu đến việc hoạt động thương mại, học tập nghiên cứu và làm việc trực tuyến. Nhờ Internet mà việc trao đổi thông tin cũng ngày càng tiện lợi, nhanh chóng hơn, khái niệm thư điện tử (email) cũng không còn mấy xa lạ với mọi người.

doc53 trang | Chia sẻ: vietpd | Lượt xem: 3396 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Đề tài Tìm hiểu một số thuật toán mã hóa dữ liệu và ứng dụng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
LỜI CẢM ƠN Em xin gửi lời cảm ơn chân thành tới quý thầy cô giáo khoa Công Nghệ Thông Tin, trường Đại học Vinh nói chung và thầy cô giáo trong bộ môn Hệ Thống Thông Tin nói riêng, đã giúp đỡ, tạo điều kiện cho em trong suốt quá trình làm đề tài. Đặc biệt em xin chân thành cảm ơn thầy giáo ThS. Cao Thanh Sơn, người đã giúp đỡ, chỉ bảo, hướng dẫn tận tình cho em trong quá trình làm đề tài. Trong thời gian làm việc với thầy, em không những học hỏi được nhiều kiến thức bổ ích về các phương pháp mã hóa và tầm quan trọng của mã hóa dữ liệu trong thời đại ngày nay mà còn học được tinh thần làm việc, thái độ nghiên cứu khoa học nghiêm túc của thầy. Xin gửi lời cảm ơn chân thành đến gia đình, cha mẹ và bạn bè vì đã luôn là nguồn động viên to lớn, giúp đỡ con vượt qua những khó khăn trong suốt quá trình làm việc. Mặc dù em đã cố gắng hoàn thành đề tài với tất cả nổ lực của bản thân nhưng chắc chắn sẽ không tránh khỏi những thiếu sót. Em kính mong nhận được sự cảm thông và tận tình chỉ bảo của quý thầy cô và các bạn. Một lần nữa, em xin chân thành cảm ơn và luôn mong nhận được sự đóng góp quý báu của tất cả mọi người. Ngày 20 tháng 5 năm 2011 Sinh viên thực hiện Trần Thị Kim Nhung MỤC LỤC LỜI CẢM ƠN DANH MỤC VIẾT TẮT, THUẬT NGỮ STT Từ viết tắt Giải nghĩa 1 DES Data Encryption Standard 2 AES Advanced Encryption Standard 3 RC Rivest Cipher 4 CATS Carlisle Adams, and Stafford Tavares 5 MD Message Digest 6 SHA Secure Hash Alorithm 7 FIPS Federal Information Processing Standard (tiêu chuẩn xử lý thông tin liên bang) 8 RSA Rivest, Shamir, Adleman 9 MIT Học viện công nghệ Massachusetts 10 NSA Cơ quan Bảo mật quốc gia Hoa Kỳ DANH MỤC HÌNH VẼ Hình 1.1: Mô hình mã hóa 7 Hình 1.2: Mô hình mã hóa khóa bí mật 10 Hình 1.3: Mô hình mã hóa khóa công khai 11 Hình 2.1: Hình vuông Vigenere 15 Hình 3.1: Sơ đồ tổng quát mã hóa DES 20 Hình 3.2: Sơ đồ tạo khóa 21 Hình 3.3: Biểu diễn dãy 64 bit x chia thành 2 thành phần L0,R0 23 Hình 3.4: Sơ đồ chi tiết một vòng 23 Hình 3.5: Sơ đồ hoạt động của hàm f 24 Hình 3.6: Hoán vị mở rộng 25 Hình 3.7: Sơ đồ thuật toán RSA 32 Hình 3.8: Mô hình một vòng 38 Hình 3.9: Sơ đồ vòng lặp của MD5 40 Hình 3.10: Sơ đồ khối tổng quát 44 Hình 3.11: Sơ đồ xử lý 512 bit 46 Hình 3.12: Ứng dụng MD5 trong đăng ký bản quyền công ty 48 MỞ ĐẦU Lí do chọn đề tài Trong những năm gần đây, mạng Internet đã trở thành nền tảng chính cho sự trao đổi thông tin trên toàn cầu. Có thể thấy một cách rõ ràng là Internet đã và đang tác động lên nhiều mặt của đời sống chúng ta từ việc tìm kiếm thông tin, trao đổi dữ liệu đến việc hoạt động thương mại, học tập nghiên cứu và làm việc trực tuyến... Nhờ Internet mà việc trao đổi thông tin cũng ngày càng tiện lợi, nhanh chóng hơn, khái niệm thư điện tử (email) cũng không còn mấy xa lạ với mọi người. Tuy nhiên trên môi trường truyền thông này, ngoài mặt tích cực Internet cũng tiềm ẩn những tiêu cực của nó đối với vấn đề bảo vệ thông tin. Do đó, những yêu cầu được đặt ra đối với việc trao đổi thông tin trên mạng: Bảo mật tuyệt đối thông tin trong giao dịch. Đảm bảo tính toàn vẹn của thông tin. Chứng thực được tính đúng đắn về pháp lí của thực thể tham gia trao đổi thông tin. Đảm bảo thực thể không thể phủ nhận hay chối bỏ trách nhiệm của họ về những hoạt động giao dịch trên Internet. Mã hóa thông tin là một ngành quan trọng và có nhiều ứng dụng trong đời sống xã hội. Ngày nay các ứng dụng mã hóa và bảo mật thông tin đang được sử dụng ngày càng phổ biến hơn trong các lĩnh vực khác nhau trên Thế giới, từ các lĩnh vực an ninh, quân sự, quốc phòng…. Cho đến các lĩnh vực dân sự như thương mại điện tử, ngân hàng… Trong đề tài này tôi tìm hiểu một số phương pháp mã hóa đang được sử dụng rộng rãi hiện nay. Cấu trúc khóa luận như sau: Chương 1: Tổng quan về hệ mật mã Chương 2: Một số phương pháp mã hóa cổ điển Chương 3: Một số thuật toán mã hóa hiện đại CHƯƠNG 1: TỔNG QUAN VỀ HỆ MẬT MÃ Khái niệm về mã hóa thông tin 1.1.1 Khái niệm Mã hóa thông tin là chuyển đổi thông tin từ dạng rõ (dạng đọc được) sang dạng mờ (dạng không thể đọc được) và ngược lại. Nhằm mục đích ngăn chặn nguy cơ truy cập thông tin truyền đi trên mạng một cách bất hợp pháp. Thông tin sẽ được truyền đi trên mạng dưới dạng mờ và không thể đọc được với bất kỳ ai cố tình muốn lấy thông tin đó. Khi chúng ta có nhu cầu trao đổi thông tin, thì Internet là môi trường không an toàn, đầy rủi ro và nguy hiểm, không có gì đảm bảo rằng thông tin mà chúng ta truyền đi không bị đọc trộm trên đường truyền. Vì vậy mã hóa là biện pháp giúp ta bảo vệ chính mình cũng như thông tin mà ta gửi đi [1, 2, 7]. Ngoài ra mã hóa còn đảm bảo tính toàn vẹn của dữ liệu. 1.1.2 Vai trò của mã hóa Các hệ mã hóa phải thực hiện được các vai trò sau. Các hệ mã hóa phải che dấu được nội dung của văn bản rõ (PlainText) để đảm bảo sao cho chỉ người chủ hợp pháp của thông tin mới có quyền truy cập thông tin, hay nói cách khác là chống truy cập không đúng quyền hạn. Tạo các yếu tố xác thực thông tin, đảm bảo thông tin lưu hành trên hệ thống đến người nhận hợp pháp xác thực. Tổ chức các sơ đồ chữ ký điện tử, đảm bảo không có hiện tượng giả mạo, mạo danh để gửi thông tin trên mạng. Ưu điểm lớn nhất của các hệ mã hóa là có thể đánh giá được độ phức tạp của tính toán mà “kẻ địch” phải giải quyết bài toán để có thể lấy được thông tin của dữ liệu. Tuy nhiên mỗi hệ mã hóa đều có một số ưu và nhược điểm khác nhau, nhưng nhờ đánh giá được độ phức tạp tính toán, mức độ an toàn của mỗi hệ mã hóa mà ta có thể ứng dụng cụ thể tùy theo yêu cầu về độ an toàn [1, 2, 3]. 1.1.3 Các thành phần của hệ mã hóa Một hệ mã hóa là một bộ 5 (P, C, D, K, E) thõa mã các điều kiện sau. - P là một tập hợp hữu hạn các bản rõ (PlainText), nó còn được gọi là không gian bản rõ. - C là tập hợp hữu hạn các bản mã (CipherText), nó còn được gọi là không gian bản mã. Mỗi phần tử của 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. - K là 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 gian khóa phải đủ lớn để “kẻ địch” không đủ thời gian để thử mọi khóa (phương pháp vét cạn). - E và D lần lượt là tập luật mã hóa và giải mã. Với mỗi k của K có một quy tắc mã hóa 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à: dk(ek(x))=x với mọi bản rõ x € P. Hình 1.1: Mô hình mã hóa 1.2 Tiêu chuẩn để đánh giá hệ mã hóa 1.2.1 Độ an toàn của thuật toán Nguyên tắc đầu tiên trong mã hoá là “Thuật toán nào cũng có thể bị phá vỡ”. Các thuật toán khác nhau cung cấp mức độ an toàn khác nhau, phụ thuộc vào độ phức tạp để phá vỡ chúng. Tại một thời điểm, độ an toàn của một thuật toán phụ thuộc [1, 7]. Nếu chi phí hay phí tổn cần thiết để phá vỡ một thuật toán lớn hơn giá trị của thông tin đã mã hóa thuật toán thì thuật toán đó tạm thời được coi là an toàn. Nếu thời gian cần thiết dùng để phá vỡ một thuật toán là quá lâu thì thuật toán đó tạm thời được coi là an toàn. Nếu lượng dữ liệu cần thiết để phá vỡ một thuật toán quá lớn so với lượng dữ liệu đã được mã hoá thì thuật toán đó tạm thời được coi là an toàn. 1.2.2 Tốc độ mã hóa và giải mã Khi đánh giá hệ mã hóa phải chú ý đến tốc độ mã hóa và giải mã. Hệ mã hóa tốt thì thời gian mã hóa và giải mã nhanh. 1.2.3 Phân phối khóa Một hệ mã hóa phụ thuộc vào khóa, khóa này được truyền công khai hay truyền bí mật. Phân phối khóa bí mật thì chi phí sẽ cao hơn so với các thuật toán mã hóa khóa công khai. Vì vậy đây cũng là một tiêu chí khi lựa chọn hệ mã hóa. Khóa 1.3.1 Khái niệm Một khóa mã hóa là một phần thông tin đặc biệt được kết hợp với một thuật toán để thi hành mã hóa và giải mã. Mỗi khóa khác nhau có thể tạo ra các văn bản mã hóa khác nhau, nếu không chọn đúng khóa thì không thể mở được tài liệu đã mã hóa trên, cho dù biết được thuật toán trên dùng thuật toán mã hóa gì, sử dụng khóa càng phức tạp thì độ an toàn của dữ liệu càng lớn [1, 2, 7]. 1.3.2 Ví dụ Mã hóa nội dung của một bức thư với khóa là “Thay thế mỗi ký tự xuất hiện trong bức thư bằng ký tự đứng thứ 3 sau nó”. Cùng thật toán trên nhưng sử dụng khóa là “Thay thế mỗi ký tự xuất hiện trong bức thư bằng ký tự đứng thứ 4 sau nó”. Như vậy kết quả của một bức thư có nội dung như nhau sau khi sử dụng hai khóa khác nhau sẽ có hai bản mã khác nhau. 1.4 Phân loại các thuật toán mã hóa 1.4.1 Phân loại theo các phương pháp 1.4.1.1 Mã hoá cổ điển Xuất hiện trong lịch sử, thuật toán sử dụng khóa đơn giản, dễ hiểu. Là phương pháp mà từng ký tự (hay từng nhóm ký tự) trong bản rỏ được thay thế bằng một ký tự (hay nhóm ký tự) khác tạo nên bản mã [1, 7]. Bên nhận chỉ cần đảo ngược lại trình tự thay thế trên thì sẽ nhận được bản rõ ban đầu. Mã hóa cổ điển có hai phương pháp nổi bật là: Mã hóa thay thế và mã hóa hoán vị. Các hệ mã hóa thường được sử dụng trong lịch sử là: Hệ mã hóa Ceasar, Vigenere, Hill… 1.4.1.2 Mã hóa đối xứng Mã hóa đối xứng hay mã hóa chia sẻ khóa là mô hình mã hóa hai chiều, có nghĩa là tiến trình mã hóa và giải mã đều dùng chung một khóa. Khóa này được chuyển giao bí mật giữa hai đối tượng tham gia giao tiếp. Khóa này có thể được cấu hình trong Software hoặc được mã hóa trong Hardware. Mã hóa đối xứng thực hiện nhanh nhưng có thể gặp rủi ro nếu khóa bị đánh cắp [1, 7]. Một số thuật toán mã hóa đối xứng nổi tiếng như: DES, AES, RC2, RC4, RC5, RC6… Ngoài ra còn một số thuật toán như: Skipjact, Blowfish, CATS-128. 1.4.1.3 Mã hóa bất đối xứng Mã hóa bất đối xứng là mô hình mã hóa hai chiều sử dụng một cặp khóa là khóa chung (Public Key) và khóa riêng (Private Key). Trong đó khóa chung Public Key có thể được công bố rộng rải. Thông thường thông tin được người gửi sử dụng khóa Public Key để mã hóa và gửi đi. Người nhận thông tin sẽ dùng khóa Private Key để giải mã. Khóa Private Key chỉ do một người giữ do đó các phương pháp mã hóa bất đối xứng đảm bảo tính bí mật hơn. Một điều quan trọng của phương pháp mã hóa này là cặp khóa Public Key và Private Key phải tương đồng nhau. Có nghĩa là chỉ có Private Key trong cùng một cặp khóa mới có thể giải mã được dữ liệu đã mã hóa bởi khóa Public Key tương ứng [1, 2, 7]. Thuật toán mã hóa bất đối xứng nổi tiếng và được sử dụng nhiều nhất hiện nay là RSA. Ngoài ra còn một số thuật toán khác như: Hellman, Elgamal… 1.4.1.4 Mã hóa hàm băm Là cách thức mã hóa một chiều tiến hành biến đổi bản rõ thành bản mã mà không bao giờ giải mã được. Người ta ví loại mã hóa này như một củ hành được băm nhuyễn thì sẽ không bao giờ tái tạo lại được củ hành ban đầu. Trong xử lý hàm băm, dữ liệu đầu vào có thể khác nhau về độ dài, nhưng độ dài của xử lý băm luôn xác định. Hàm băm được xử lý trong mô hình xác thực Password [1, 2, 7]. Một số thuật toán mã hóa hàm băm thường dùng như: MD4, MD5, SHA… 1.4.2 Phân loại theo số lượng khóa 1.4.2.1 Mã hóa khóa bí mật Mã hóa khóa bí mật là thuật toán mà tại đó khóa giải mã có thể được tính toán từ khóa mã hóa [1, 2, 7]. Trong rất nhiều trường hợp khóa mã hóa và khóa giải mã là giống nhau. Thuật toán này yêu cầu người gửi và người nhận thõa thuận một khóa trước khi thông tin được gửi đi và khóa này phải đảm bảo tính bí mật. Độ an toàn của thuật này phụ thuộc nhiều vào độ bí mật của khóa, nếu để lộ khóa thì thì bất kì người nào cũng có thể mã hóa và giải mã thông tin một cách dễ dàng. Hình 1.2: Mô hình mã hóa khóa bí mật Trong đó : K1 có thể trùng K2. K1 có thể được tính từ K2. K2 có thể được tính từ K1. Mã hóa khóa bí mật thường được sử dụng cho các trường hợp dễ chuyển khóa. Tức là người nhận và người gửi có thể trao đổi khóa cho nhau an toàn, khó bị kẻ khác tấn công. Thường dùng để trao đổi trong văn phòng. Một số vấn đề liên quan Các phương pháp mã hóa khóa bí mật đòi hỏi người mã hóa và người giải mã phải cùng chung một khóa hoặc là có thể biết khóa của nhau, khi đó khóa phải được giữ bí mật tuyệt đối. Do đó kẻ địch dễ dàng xác định được một khóa nếu biết khóa kia. Phương pháp này không đảm bảo được sự an toàn nếu có xác suất cao khóa người gửi bị lộ. Khóa phải được gửi đi trên kênh an toàn nếu kẻ địch tấn công trên kênh này có thể phát hiện ra khóa. Vấn đề quản lý và phân phối khóa là khó khăn và phức tạp, người gửi và người nhận phải thống nhất với nhau về khóa việc thay đổi khóa là khó khăn và dễ bị lộ. 1.4.2.2 Mã hóa khóa công khai Mã hóa khóa công khai là các thuật toán sử dụng khóa mã hóa và khóa giải mã là hoàn toàn khác nhau. Hơn nữa khóa giải mã không thể tính toán được từ khóa mã hóa [1, 2, 7]. Khác với mã hóa khóa bí mật, khóa mã hóa của thuật toán mã hóa công khai được công bố rộng rãi. Một người bất kì có thể sử dụng khóa công khai để mã hóa thông tin, nhưng chỉ có người nhận thông tin có khóa giải mã phù hợp với khóa mã hóa để giải mã thông tin đó. Mô hình mã hóa khóa công khai. Hình 1.3: Mô hình mã hóa khóa công khai Trong đó : Khóa mã hóa không thể giống khóa giải mã. Khóa giải mã không thể được tính từ khóa mã hóa. Một điều đặc biệt của loại mã hóa này là cả khóa công khai và bản mã có thể được gửi đi trên kênh không an toàn mà thông tin vẫn không hoặc khó bị đọc trộm dù biết được khóa mã hóa. Chính vì mức độ an toàn cao nên mã hóa khóa công khai được sử dụng trên mạng công khai Internet. Mã hóa khóa công khai có nhiều ứng dụng quan trọng trong các hệ thống lớn. CHƯƠNG 2: MỘT SỐ PHƯƠNG PHÁP MÃ HÓA CỔ ĐIỂN 2.1 Hệ mã hóa thay thế 2.1.1 Hệ mã hóa CEASAR Hệ mã hóa CEASAR là một ví dụ điển hình cho hệ mã hóa thay thế. Nó làm việc trong bảng chữ cái tiếng Anh 26 ký tự [1, 7]. Ceasar sử dụng các số nguyên thay cho các ký tự, đánh số các ký tự trong bảng chử cái theo thứ tự bảng sau. Các phép toán số học được thực hiên trên Modul 26 (có nghĩa là 26 tương ứng với 0, 27 tương ứng với 1, 28 tương ứng với 2,…, 79 = 26x3 + 1 tức 79 tương ứng với 1). Hệ CAESAR sử dụng thuật toán mã hóa Ek, trong đó mỗi ký tự được thay thế bởi một ký tự khác được xác định bằng cách dịch ký tự cần mã hóa sang phải k bước theo modul 26. Ek(a) = (a + k) MOD 26. Với a là một ký tự, 0 £ k £ 26, MOD là phép chia lấy phần dư. Thuật toán giải mã tương ứng Dk là lùi lại k bước trong bảng chữ cái theo modul 26. Dk(a) = (a - k) MOD 26 Không gian khóa của hệ CEASAR bao gồm 26 số: 0, 1, 2, …, 25. Ví dụ: Với k = 3, A được thay bằng D, B được thay bằng E,…, W được thay bằng Z,…, Y được thay bằng B và Z được thay bằng C. Ta có: Bảng chữ cái gốc. Bảng chữ cái dùng để mã hóa. Trong trường hợp này bản rõ “DAI HOC VINH” được mã hóa thành “GDL KRF YLQK”, (Chú ý: Các ký tự trống trong bảng mã được bỏ đi để đảm bảo tính an toàn). Thêm một vài ví dụ minh họa: E25(IBM) = HAL, E6(MUPiD) = SAVOJ. E3(HELP) = KHOS, E1(HOME) = IPNF. Hệ CEASAR là hệ mã hóa cũ và không an toàn vì không gian khóa của nó rất nhỏ, do đó có thể thám mã theo phương pháp vét cạn. Khóa giải mã có thể tính ngay ra được từ khóa mã hóa. Do chỉ có 26 khóa nên ta có thể thử lần lượt các khóa cho đến khi tìm được khóa đúng. Hệ mã hóa VIGENERE Hệ mã hóa này được đặt theo tên của một nhà mật mã người Pháp Blaise De Vigenere (1523 – 1596) [1, 7]. Vinegere cũng giống như Caesar, nhưng ở đây khóa được thay đổi theo từng bước. Hình vuông VIGENERE được sử dụng để mã hóa và giải mã. A B C D E F G H I J K L M N O P Q R S T U V W X Y Z B C D E F G H I J K L M N O P Q R S T U V W X Y Z A C D E F G H I J K L M N O P Q R S T U V W X Y Z A B D E F G H I J K L M N O P Q R S T U V W X Y Z A B C E F G H I J K L M N O P Q R S T U V W X Y Z A B C D F G H I J K L M N O P Q R S T U V W X Y Z A B C D E G H I J K L M N O P Q R S T U V W X Y Z A B C D E F H I J K L M N O P Q R S T U V W X Y Z A B C D E F G I J K L M N O P Q R S T U V W X Y Z A B C D E F G H J K L M N O P Q R S T U V W X Y Z A B C D E F G H I K L M N O P Q R S T U V W X Y Z A B C D E F G H I J L M N O P Q R S T U V W X Y Z A B C D E F G H I J K M N O P Q R S T U V W X Y Z A B C D E F G H I J K L N O P Q R S T U V W X Y Z A B C D E F G H I J K L M O P Q R S T U V W X Y Z A B C D E F G H I J K L M N P Q R S T U V W X Y Z A B C D E F G H I J K L M N O Q R S T U V W X Y Z A B C D E F G H I J K L M N O P R S T U V W X Y Z A B C D E F G H I J K L M N O P Q S T U V W X Y Z A B C D E F G H I J K L M N O P Q R T U V W X Y Z A B C D E F G H I J K L M N O P Q R S U V W X Y Z A B C D E F G H I J K L M N O P Q R S T V W X Y Z A B C D E F G H I J K L M N O P Q R S T U W X Y Z A B C D E F G H I J K L M N O P Q R S T U V X Y Z A B C D E F G H I J K L M N O P Q R S T U V W Y Z A B C D E F G H I J K L M N O P Q R S T U V W X Z A B C D E F G H I J K L M N O P Q R S T U V W X Y Hình 2.1: Hình vuông Vigenere Mỗi cột của hình vuông Vigenere có thể xem như là một hệ CEASAR, với các khóa: 0, 1, 2,...., 25. Để mã hóa thì bản rõ được đọc từ các hàng và khóa được đọc từ các cột. Ví dụ: Mã hóa bản “DAI HOC VINH” với từ khóa “ KHOA KINH TE”. Đầu tiên ta tìm điểm giao của hàng D cột K ta được N, tiếp tục ta tìm điểm giao của hàng A cột H ta được H. Cứ như vậy ta được bản mã là “ NHW HYK IPGL” . Ta sẽ thu được bản mã tưng tự nếu ta đọc bản rõ tưng ứng với cột và khóa đọc tưng ứng với hàng. Muốn giải mã thông tin vừa mã hóa trên ta thực hiện bằng cách, ta nhìn vào hàng nào chứa N trong cột K, ta tìm được chữ D, tương tự nhìn vào hàng nào chứa H trong cột H, ta tìm được chữ A. Cứ như vậy ta sẽ tìm được bản rõ là “DAI HOC VINH”. Trong ví dụ trên thì độ dài bản rõ bằng độ dài khóa. Nhưng trong thực tế độ dài bản rõ thường dài hơn rất nhiều so với khóa. Như vậy để mã hóa hay giải mã thì ta phải áp dụng từ khóa một cách tuần hoàn. Nghĩa là từ khóa được lặp đi lặp lại nhiều lần sao cho các ký hiệu trong bản rõ phải được đọc hết. Ta thấy rằng trong hệ mã hóa VIGENERE, với khóa có độ dài d thì sẽ có 26d khóa hợp lệ. Vì vậy chỉ cần với giá trị d nhỏ thì phương pháp thám mã vét cạn cũng đòi hỏi khá nhiều thời gian. Hệ mã hóa hoán vị Hệ mã hóa hoán vị hay còn gọi là hệ mã hóa đổi chỗ. Là hệ mã hóa mà các ký tự của bản rõ vẫn được giữ nguyên, nhưng thứ tự của chúng được đổi chỗ vòng quanh [1, 7]. Phương pháp này có các kỹ thuật mã hóa sau. 2.2.1 Đảo ngược toàn bộ bản rõ Nghĩa là bản gốc được viết theo thứ tự ngược lại từ sau ra trước, để tạo bản mã. Đây là phương pháp mã hóa đơn giản nhất vì vậy không đảm bảo an toàn. Ví dụ: PlainText SECURE EMAIL Bản mã: LIAMEERUCES 2.2.2 Mã hóa theo mẫu hình học Bản gốc được sắp xếp lại theo một mẫu hình học nào đó, thường là một mảng hoặc ma trận hai chiều. Ví dụ: Bản rõ “KHOA CONG NGHE THONG TIN” được viết theo ma trận 4x5 như sau: Nếu lấy các ký tự ra theo số thứ tự cột 3, 1, 4, 2, 5 thì ta thu được bản mã “OGTTKOHNANHIHNEGCGON”. 2.2.3 Đổi chỗ cột Đầu tiên biểu diễn các ký tự trong ban rõ thành dạng hình chữ nhật theo cột, sau đó các cột được sắp xếp lại và các chữ cái được lấy ra theo hàng ngang. Ví dụ: Bản rõ là “KHOA CONG NGHE THONG TIN” được viết dưới dạng ma trận 4x5 theo cột như sau: Vì có 5 cột nên ta có thể sắp xếp lại theo 5!=120 cách khác nhau. Để tăng độ an toàn có thể chọn một trong các cách sắp xếp lại đó. Nếu ta chuyển vị trí các cột theo các cột theo thứ tự 3, 5, 2, 4, 1. Rồi lấy các ký tự ra theo hàng ngang ta sẽ được bản mã là: “NGCTKGTOHHHINOOENGNA”. Lưu ý: Các ký tự cách trống được bỏ đi. Hoán vị các ký tự của bản rõ theo chu kì cố định Nếu hàm f là một hoán vị của một khối gồm d ký tự thì khóa mã hóa được biểu diễn bởi K(d, f). Do vậy, bản rõ: M=m1m2