Xem mẫu

  1. Chương 4 MÃ HÓA THÔNG TIN Mã hoá đóng vai trò quan trọng và có rất nhiều ứng dụng trong đời sống xã hội, đặc biệt là trong lĩnh vực an toàn bảo mật thông tin. Ngày nay, các kỹ thuật mã hoá được sử dụng ngày càng phổ biến hơn trong nhiều lĩnh vực khác nhau như an ninh, quốc phòng,... và đặc biệt khi chúng ta đang triển khai mạnh mẽ TMĐT, thì việc ứng dụng mã hoá ngày càng trở nên cần thiết. Chương 4 trình bày về mã hoá dữ liệu với các vấn đề liên quan bao gồm: Các vấn đề về tính an toàn của một thuật toán mã hóa, các kỹ thuật phá mã hiện nay và đánh giá độ an toàn của một giải thuật mã hoá. Với mỗi hệ mã hóa đều giới thiệu về đặc điểm, mô hình hoạt động, những ưu, nhược điểm chính và phạm vi ứng dụng trong bảo mật thông tin. Đồng thời, một số hệ mã hoá thường dùng trong bảo mật thông tin hiện nay như hệ thống mã DES, RSA, các hệ mã hóa cổ điển cũng được giới thiệu trong chương này. 4.1. TỔNG QUAN VỀ MÃ HÓA 4.1.1. Khái niệm hệ mã hóa Mã hóa là phương thức biến đổi thông tin từ định dạng thông thường (văn bản, hình ảnh, âm thanh, biểu tượng,...) thành một định dạng khác không giống như ban đầu nhưng có thể khôi phục lại được, (việc khôi phục này gọi là giải mã). Mục đích chính của mã hóa là để đảm bảo tính bí mật của thông tin khi chúng được truyền trong những môi trường không đảm bảo an toàn. Việc mã hóa thông tin được thực hiện bằng việc sử dụng một giá trị đặc biệt gọi là khóa mã (key). Cả hai phía gửi và nhận thông tin đều phải biết giải thuật mã hóa và khóa để thực hiện việc mã hóa và giải mã thông tin. Thông tin đã được mã hóa có thể bị nghe (xem) trộm nhưng không thể 135
  2. bị giải mã để lấy ra thông tin đích thực nếu không biết giải thuật mã hóa và khóa. Như vậy, mã hóa cung cấp tính bí mật cho thông tin trong quá trình truyền thông trên các kênh truyền. Ngành khoa học chuyên nghiên cứu về mã hóa và giải mã là ngành mật mã. Đây là một ngành khoa học ứng dụng toán học, các thuật toán ứng dụng vào biến đổi thông tin từ định dạng ban đầu một định dạng khác. Nó đóng vai trò quan trọng và có rất nhiều ứng dụng trong đời sống xã hội ngày nay, từ các lĩnh vực như an ninh, quốc phòng,... đến các hoạt động trong sản xuất kinh doanh của các tổ chức, doanh nghiệp. Mã hóa thông tin nhằm mục đích giấu đi nội dung thực tế của thông tin mà người dùng muốn truyền trong quá trình truyền tin cũng như trong việc lưu trữ thông tin. Phương pháp này dùng để tránh tình trạng thông tin bị đánh cắp và sử dụng vào những mục đích không tốt. Có thể chia quá trình mã hóa thông tin thành hai phần: - Mã hóa: là giai đoạn chuyển đổi thông tin nguyên gốc ban đầu thành các định dạng thông tin được mã hóa (gọi là bản mã). - Giải mã: từ bản mã thông tin nhận được, tiến hành biến đổi để thu lại được thông tin nguyên gốc như trước khi mã hóa. Người gửi S Mã hóa X Giải mã Kênh thông tin Người nhận R Y Thông tin đã mã hóa Y Kẻ tấn công E Hình 4.1. Mô hình truyền tin có bảo mật cơ bản 136
  3. Trong truyền thông, để đảm bảo sự bí mật của thông tin thì trước khi truyền, thông tin được mã hoá ở phía người gửi sau đó được giải mã ở phía người nhận. Quá trình này còn gọi là quá trình truyền thông tin có bảo mật hay truyền tin an toàn. Có thể mô tả mô hình truyền thông tin có bảo mật như Hình 4.1. Sơ đồ mô hình truyền tin bảo mật trên có thể giải thích ngắn gọn: Giả sử có 3 đối tượng tham gia quá trình truyền tin là người gửi là S, người nhận là R và kẻ tấn công là E. - S muốn gửi một thông điệp X đến R qua một kênh truyền thông tin nào đó và E có thể nghe trộm và ăn cắp thông tin này. Để chống lại việc mất thông tin, S sử dụng một phép biến đổi (mã hóa) lên thông điệp X đang ở dạng nguyên gốc ban đầu (dạng đọc được - Plaintext) để tạo thành một đoạn mã hóa Y (Cryptogram) không thể đọc được hoặc nội dung đã bị thay đổi đi nhiều. - Khi đó Cryptogram Y (hay còn gọi là Ciphertext - thông điệp đã được mã hoá) đã thực hiện che giấu nội dung của đoạn Plaintext X ban đầu. Khóa dùng để mã hõa dữ liệu này là một thông số chỉ có bên gửi S và bên nhận R biết mà thôi, sau khi R nhận được bản Ciphertext sẽ tiến hành giải mã và lấy về nội dung ban đầu. Giả sử trong quá trình truyền tin, E nghe lén và đánh cắp được thông tin (Y) thì cũng không thể giải mã và biết được nội dung của thông tin ban đầu. Ngày nay, mã hoá đã trở thành một ngành khoa học ứng dụng quan trọng, các ứng dụng mã hóa và bảo mật thông tin ngày càng phổ biến hơn và thực sự cần thiết cho tất cả các lĩnh vực sử dụng thông tin kể cả chính phủ, các tổ chức, doanh nghiệp và các cá nhân: - Đối với chính phủ: Mã hóa nhằm đảm bảo thông tin trong quân sự và ngoại giao, bảo vệ thông tin trong các lĩnh vực trọng yếu mang tầm cỡ quốc gia. 137
  4. - Đối với các tổ chức, doanh nghiệp: Mã hóa nhằm bảo vệ các thông tin nhạy cảm, các thông tin mang tính chiến lược của các tổ chức, doanh nghiệp. - Đối với các cá nhân: Mã hóa nhằm bảo vệ các thông tin riêng tư trong liên lạc với thế giới bên ngoài thông qua các kênh truyền tin, đặc biệt là trên mạng Internet và các phương tiện truyền thông xã hội. 4.1.2. Vài nét về lịch sử mã hóa Mật mã học hay mã hóa là một ngành có lịch sử xuất hiện từ hàng nghìn năm nay, lịch sử mật mã học chính là lịch sử của những phương pháp mật mã học cổ điển hay còn gọi là các phương pháp mật mã hóa với bút, giấy và đôi khi có hỗ trợ từ những dụng cụ cơ khí đơn giản dao, đá khắc lên các vật liệu như thẻ tre, da động vật, vách đá. Vào những năm đầu của thế kỷ 20, sự xuất hiện của các cơ cấu cơ khí và điện cơ, chẳng hạn như máy Enigma, đã 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 trong những thập kỷ gần đây đã tạo điều kiện để mật mã học phát triển nhảy vọt lên một tầm cao mới, sự phát triển của mật mã học luôn luôn đi kèm với sự phát triển của các kỹ thuật phá mã (hay thám mã). Những bằng chứng sớm nhất về sử dụng mật mã học là các chữ tượng hình được tìm thấy trên các bức tượng Ai Cập cổ đại (cách đây khoảng 4500 năm). Những ký hiệu tỏ ra không phải để phục vụ mục đích truyền thông tin bí mật mà thường là nhằm mục đích gợi nên những điều thần bí, trí tò mò hoặc thậm chí để tạo sự thích thú cho người xem. Muộn hơn, các học giả về tiếng Hebrew có sử dụng một phương pháp mã hóa thay thế bảng chữ cái đơn giản chẳng hạn như mật mã Atbash (khoảng năm 500 đến năm 600). Người Hy Lạp cổ đại cũng được biết đến là đã sử dụng các kỹ thuật mật mã. Cũng có những bằng chứng rõ ràng chứng tỏ người La Mã nắm được các kỹ thuật mật mã (mật mã Caesar và các biến thể). Thậm chí đã có những đề cập đến một cuốn sách nói về mật mã trong quân đội La Mã, tuy nhiên cuốn sách này đã thất truyền. Tại Ấn Độ, mật mã học cũng khá nổi tiếng, trong cuốn sách Kama Sutra, mật mã học 138
  5. được xem là cách những người yêu nhau trao đổi thông tin mà không bị phát hiện. Mật mã học ngày càng trở nên quan trọng dưới tác động của những thay đổi, cạnh tranh trong chính trị và tôn giáo. Chẳng hạn tại châu Âu, trong và sau thời kỳ Phục Hưng, các công dân của các thành bang thuộc Ý, gồm cả các thành bang thuộc giáo phận và Công giáo La Mã, đã sử dụng và phát triển rộng rãi các kỹ thuật mật mã. Ngoài các nước ở Trung Đông và Châu Âu, mật mã học hầu như không được phát triển. Tại Nhật Bản, mãi cho tới 1510, mật mã học vẫn chưa được sử dụng và các kỹ thuật tiên tiến chỉ được biết đến sau khi nước này mở cửa với phương Tây (thập kỷ 1860). Tuy mật mã học có một lịch sử lâu dài và phức tạp, mãi cho đến thế kỷ 19 của thế kỷ 20 nó mới được phát triển một cách có hệ thống, không chỉ còn là những tiếp cận nhất thời, vô tổ chức, những ví dụ về phân tích mã bao gồm công trình của Charles Babbage trong kỷ nguyên của Chiến tranh Krim về toán phân tích mật mã đơn ký tự, công trình của ông đã được Friedrich Kasiski, người Phổ, khôi phục và công bố, tại thời điểm này, để hiểu được mật mã học, người ta thường phải dựa vào những kinh nghiệm từng trải qua để kiểm nghiệm. Trong thời gian trước và tới thời điểm của Thế chiến II, nhiều phương pháp toán học đã hình thành (đáng chú ý là ứng dụng của William F. Friedman dùng kỹ thuật thống kê để phân tích và kiến tạo mật mã và thành công bước đầu của Marian Rejewski trong việc bẻ gãy mật mã của hệ thống Enigma của Quân đội Đức). Sau Thế chiến II trở đi, cả hai ngành, mật mã học và phân tích mã, ngày càng sử dụng nhiều các cơ sở toán học, tuy thế, chỉ đến khi máy tính và các phương tiện truyền thông cùng mạng Internet trở nên phổ biến, người ta mới có thể mang tính hữu dụng của mật mã học vào trong những thói quen sử dụng hàng ngày của mọi người, thay vì chỉ được dùng bởi các chính quyền quốc gia hay các hoạt động kinh doanh lớn trước đó. 139
  6. 4.1.3. Vai trò của mã hóa và quy trình mã hóa Yêu cầu của các hệ mật mã cần phải thỏa mãn các yêu cầu sau: - Hệ mật mã 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 (Secrety), hay nói cách khác là chống truy nhậ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 trong hệ thống đến người nhận hợp pháp là xác thực (Authentication). - 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 bất kỳ hệ mật mã bất kỳ đó là có thể đánh giá được độ phức tạp tính toán mà “kẻ địch” phải giải quyết bài toán mới có thể lấy được thông tin đã được mã hoá. Tuy nhiên mỗi hệ mật mã 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 nên có thể áp dụng các thuật toán mã hoá khác nhau cho từng ứng dụng cụ thể tuỳ theo yêu cầu về độ an toàn của các ứng dụng. 4.1.4. Các yêu cầu của hệ mã hóa Để đảm bảo được các yêu cầu về an toàn và bảo mật thông tin, các hệ mã hoá cần phải có các tính chất sau: (1) Tính hỗn loạn (Confusion): Mã hoá phải làm cho sự phụ thuộc của bản mã (ciphertext) vào các bản rõ (plaintext) là thực sự phức tạp, nhằm gây sự rối loạn đối với những người có ý định tìm quy luật để phá mã nhằm thu được thông tin nguyên bản. (2) Tính khuếch tán (Diffusion): Làm cân bằng tỉ lệ xuất hiện các ký tự trong bản mã hóa, qua đó tạo ra sự khó khăn cho những người có ý định phá mã bằng phương pháp thống kê dựa trên tỷ lệ các mẫu lặp. Chẳng hạn, để san bằng xác suất xuất hiện của các ký tự cũng như các nhóm ký tự, có thể thêm một đoạn văn bản thừa vào văn bản sau khi mã hóa. 140
  7. Các thuật toán mã hóa đều có một điểm chung đó là sử dụng một loại khóa mã trong quá trình mã hóa và giải mã. Độ an toàn của giải thuật mã hóa phụ thuộc rất nhiều vào sự đảm bảo bí mật của khóa mã này, nghĩa là phụ thuộc vào việc làm thế nào để chỉ người gửi và người nhận thông tin đích thực mới biết được khoá mã. Các hệ mã hóa nói chung đều thường bị tấn công nhằm xác định ra khóa mã một cách nhanh nhất để có thể tìm được thông tin nguyên bản. Độ an toàn của một hệ mã hóa: Trên phương diện lý thuyết, về độ an toàn của một hệ mã hóa có thể phân ra làm 2 loại: an toàn vô điều kiện và an toàn tính toán. Một hệ mã hóa được coi là an toàn vô điều kiện khi bản mã thu được không chứa đủ thông tin để xác định duy nhất một nguyên bản tương ứng. Nói cách khác, không thể giải mã được với bất kể thời gian kéo dài bao lâu cũng như với tốc độ và nguồn lực máy tính lớn đến như thế nào. Trên thực tế, hiện nay, chỉ có hệ mã hóa độn một lần là an toàn vô điều kiện. Một hệ thống mã hóa được coi là an toàn tính toán nếu nó thỏa mãn một trong hai điều kiện sau: (1) Chi phí để phá mã vượt quá giá trị mà thông tin có thể mang lại. Chẳng hạn, để có thể trộm cắp được 1 tỷ đồng của ngân hàng mà kẻ tấn công phải chi ra 2 tỷ để phá mã thì cũng không mang lại lợi ích nào cho người phá mã. Trong trường hợp này có thể nói rằng chi phí phá mã vượt quá giá trị mà thông tin mang lại. (2) Thời gian phá mã vượt quá tuổi thọ thông tin. Chẳng hạn như một thông báo chỉ có giá trị trong một tháng mà thời gian giải mã kéo dài tới hai tháng thì có thể xem là thời gian phá mã vượt quá tuổi thọ của thông tin hay nói cách khác khi giải mã xong kẻ tấn công cũng không đạt được lợi ích gì. Như vậy, chỉ cần một hệ mã hóa đạt được độ an toàn tính toán là đủ cho các ứng dụng thực tế. Cho dù kẻ tấn công có phá được mã đi chăng nữa thì thông tin nhận được cũng không còn giá trị sử dụng. Tuy nhiên, để 141
  8. thỏa mãn được một trong hai điều kiện trên là khó để đánh giá, nên hiện nay, một hệ thống mã hoá được đánh giá là an toàn nếu nó thỏa mãn hai điều kiện sau đây: (1) Hệ mã hóa không có nhược điểm, (2) Hệ mã hóa có khóa mã có quá nhiều giá trị không thể thử hết. Như vậy, nếu một hệ mã hóa thỏa mãn hai điều kiện trên thì được coi là an toàn và có thể sử dụng trong các ứng dụng cho nhiều lĩnh vực khác nhau. Có hai hệ mã hóa cơ bản là hệ mã hóa đối xứng (hệ mã hóa một khóa hay hệ mã hóa khóa bí mật) và hệ mã hóa không đối xứng (mã hóa hai khóa hay hệ mã hóa khóa công khai). Hai phương pháp này khác nhau ở số lượng khóa sử dụng, hệ mã hóa đối xứng sử dụng chỉ một khóa bí mật để người gửi dùng để mã hóa và người nhận dùng để giải mã. Trong khi đó, mã hóa không đối xứng sử dụng hai khóa khác nhau: một khóa công khai và một khóa bí mật, khóa công khai dùng để mã hóa và khóa bí mật dùng để giải mã. Mỗi phương pháp mã hóa có ưu, nhược điểm riêng và do đó, có những lĩnh vực ứng dụng khác nhau. 4.1.5. Các kỹ thuật phá mã phổ biến Phá mã là nỗ lực giải mã một văn bản đã được mã hóa trong trường hợp không biết trước khóa của hệ mã hóa, phá mã dựa trên giả thiết là người giải mã nhận biết được nguyên bản cần tìm, phá mã còn được gọi là hack bản mã. Phương pháp phá mã dù tốt đến đâu thì cũng là vô nghĩa nếu người giải mã không xác định được một nguyên bản sau khi giải có chính xác hay không. Có thể lấy ví dụ một người nước ngoài muốn giải một bản mã tiếng Việt nhưng lại không biết tiếng, cho dù có tìm được khóa đúng cũng không thể nhận biết được nội dung văn bản, hiện nay có hai phương pháp phá mã phổ biến là phương pháp vét cạn và phương pháp thám mã. 4.1.5.1. Phương pháp vét cạn Phương pháp vét cạn trong phá mã là phương pháp thử tất cả các khóa có thể cho đến khi xác định được nguyên bản từ bản mã, trên thực tế, phương pháp này là không khả thi đối với các khoá có độ dài lớn. 142
  9. Như vậy, với kích thước khóa là 168 bit, với chiếc máy có thể giải mã 1012 mã trong 1giây (chưa có trong thực tế) thì cũng phải mất tới 5.9 x 1030 năm mới xong. Vì vậy, nếu sử dụng khóa độ dài 168 ký tự thì có thể coi là an toàn đối với việc phá mã bằng phương pháp vét cạn. Tuy nhiên, với các phương pháp khác thì hệ mã hóa này có thể không an toàn. Thời gian để dò khóa khi sử dụng phương pháp vét cạn như Bảng 4.1 sau đây. Bảng 4.1. Thời gian tìm khoá đối với các khoá có kích thước khác nhau Kích thước Số lượng khóa Thời gian cần thiết Thời gian cần thiết khóa (bit) (1 giải mã/μs) (106 giải mã/μs) 32 232 = 4,3 x 109 231 μs = 35,8 phút 2,15 ms 56 256 = 7,2 x 1016 255 μs = 1142 năm 10,01 giờ 128 2128 = 3,4 x 1038 2127 μs = 5,4 x 1024 năm 5,4 x 1018 năm 168 2168 = 3,7 x 1050 2167 μs = 5,9 x 1036 năm 5,9 x 1030 năm 26 ký tự 26! = 4 x 1026 2 x 1026 μs = 6,4 x 1012 năm 6,4 x 106 năm (hoán vị) 4.1.5.2. Phương pháp thám mã Dùng để khai thác những nhược điểm của giải thuật mã hóa và dựa trên những đặc trưng chung của nguyên bản hoặc một số cặp nguyên bản - bản mã mẫu. Để tiện cho việc nghiên cứu độ an toàn của một giải thuật mã hóa, người ta phân loại ra một số trường hợp để phá mã. Một thuật toán mã hóa nên đảm bảo được độ an toàn trong mọi trường hợp đề ra: Chỉ có bản mã: Chỉ biết giải thuật mã hóa và bản mã hiện có. Biết nguyên bản: Biết thêm một số cặp nguyên bản - bản mã. Chọn nguyên bản: Chọn 1 nguyên bản, biết bản mã tương ứng. 143
  10. Chọn bản mã: Chọn 1 bản mã, biết nguyên bản tương ứng. Chọn văn bản: Kết hợp chọn nguyên bản và chọn bản mã. Trên thực tế có thể gặp tất cả các trường hợp trên. Nhưng khả năng người giải mã chỉ biết giải thuật mã hóa và một số bản mã là lớn nhất và đây cũng là trường hợp khó phá mã nhất. 4.2. HỆ MÃ HÓA ĐỐI XỨNG 4.2.1. Khái niệm về hệ mã hóa đối xứng Mã hóa khóa đối xứng (hay còn gọi là mã hóa khóa đồng bộ, mã hóa một khóa) là một hệ mã hóa mà trong đó cả hai quá trình mã hóa và giải mã đều dùng chung một khóa mã. Để đảm bảo tính an toàn, khóa này phải được giữ bí mật. Vì thế các thuật toán mã hóa khóa đối xứng này còn có tên gọi khác là mã hóa với một khóa bí mật (secret key cryptography). Một điều cần lưu ý là khi một người mã hóa một văn bản gốc (plaintext) thành bản mã bằng một khóa K (ciphertext) rồi gửi bản mã cho người nhận thì người nhận sau khi nhận được và muốn giải mã cũng cần phải có khóa K, nghĩa là trước đó hai người gửi và nhận đã phải trao đổi hoặc chia sẻ khóa K cùng nhau. Có thể hiểu mã hóa đối xứng (mã hoá khoá bí mật) là hệ thống mã hóa mà bên gửi và bên nhận tin cùng sử dụng chung một khóa. Tức là việc mã hóa và giải mã đều dùng một khóa chung. Đây là kỹ thuật mã hóa duy nhất trước những năm 1970 và hiện vẫn được dùng rất phổ biến. Mã hóa đối xứng còn được gọi mà mã hoá khóa riêng hay khóa bí mật để phân biệt với hệ thống mã hóa khóa công khai hay hệ mã hóa hai khóa hiện nay. Một hệ thống mã hóa đối xứng gồm có 5 thành phần cơ bản gồm: (1) Nguyên bản: bản thông điệp trước khi được mã hóa hay nguyên bản. (2) Giải thuật mã hóa: thuật toán dùng để mã hóa nguyên bản hay chuyển đổi nguyên bản thành bản mã. 144
  11. (3) Khóa bí mật: Khóa mã, hay khóa được dùng trong quá trình mã hóa và giải mã. (4) Bản mã: thông điệp sau khi được mã hóa hay bản mã. (5) Giải thuật giải mã: thuật toán dùng để giải mã hay chuyển đổi bản mã thành nguyên bản. Hình 4.2. Mô hình hệ mã hóa đối xứng 4.2.2. Ưu điểm và nhược điểm của hệ mã hóa đối xứng Ưu điểm chính của hệ thống mã hóa đối xứng là mô hình khá đơn giản. Mọi người có thể dễ dàng tạo ra được một thuật toán mã hóa đối xứng cho riêng mình. Chẳng hạn như một thuật toán nhân thông báo với một khóa K nào đó để tạo ra bản mã. Việc giải mã chỉ đơn giản là chia cho K. Với sự đơn giản và rõ ràng của mình, các thuật toán mã hóa đối xứng hiện nay đều dễ cài đặt và hoạt động hiệu quả. So với các thuật toán mã hóa khóa công khai, các thuật toán mã hóa đối xứng hoạt động nhanh và hiệu quả hơn nhiều do tốc độ mã hoá và giải mã cao. Vì vậy, tuy gặp một số nhược điểm nhưng hệ mã hóa đối xứng vẫn được sử dụng trong nhiều ứng dụng hiện nay. Nhược điểm chính của hệ thống mã hóa đối xứng chính là việc dùng chung khóa của quá trình mã hóa và giải mã. Rõ ràng rằng, khi đã không thể truyền tin trên một kênh truyền tin an toàn thì làm thế nào đảm bảo 145
  12. được việc truyền khóa bí mật từ người gửi đến người nhận là an toàn. Mâu thuẫn này nảy sinh ra việc muốn có một kênh an toàn để truyền dữ liệu thì trước tiên phải có một kênh an toàn để truyền khoá mã. Trong mô hình mã hóa đối xứng, việc bảo mật và phân phối khóa là công việc khó khăn, phức tạp nhất. Như vậy, tính bảo mật của phương pháp mã hoá này phụ thuộc vào việc giữ bí mật của khóa K, nhưng khóa K thường cũng phải được truyền trên môi trường truyền tin nên rất dễ bị hóa giải (bị “bẻ khóa”). Mặt khác, không thể gửi thông tin đã mã hóa cho một người nào đó khi không có khả năng gửi khóa cho họ và số lượng khóa sử dụng sẽ rất lớn khi số người tham gia trao đổi thông tin lớn (n(n-1)/2 khóa cho n người). 4.2.3. Các hệ mã hóa đối xứng cổ điển Các hệ mã hóa đối xứng cổ điển được chia thành hai nhóm: Mã hóa đối xứng cổ điển dựa trên dịch chuyển mã và mã hóa đối xứng cổ điển dựa trên hoán vị. Các hệ mã hóa đối xứng dựa trên dịch chuyển mã bao gồm: Mã hóa Ceasar (mã hóa cộng); mã hóa nhân, mã hóa Vigenere, mã hóa khóa tự động (mã hóa Vigenere cải tiến),... Mã hóa đối xứng cổ điển dựa trên hoán vị bao gồm: mã hóa hàng, mã hóa hàng rào, mã hóa khối nhị phân đơn giản và Monophabetic Cipher (mã hóa thay thế),... 4.2.3.1. Hệ mã hóa thay thế Monophabetic Cipher Hệ mã hóa theo phương pháp này dựa trên phép hoán vị trong một bảng chữ cái nào đó. Chẳng hạn, trên bảng chữ cái tiếng Anh, có thể tiến hành mã hoá như sau: Bảng 4.2. Ví dụ mã hóa Monophabetic dựa trên bảng chữ cái Ký tự cần mã a b c d .......... x y z Ký tự thay thế F G N T .......... K P L 146
  13. Với thuật toán mã hoá này, ta có: Plaintext: a Bad day Ciphertext F GFT TFP Trên đây là một ví dụ mang tính minh họa cho mã hóa thay thế, thực tế, bài toán này có thể sử dụng bất kỳ một hoán vị nào của bảng chữ cái để thực hiện mã hoá, ngoài việc sử dụng bảng chữ cái, có thể sử dụng bất cứ một bảng ký hiệu nào để tiến hành thay thế chuỗi tin cần mã hoá. Xét ví dụ sau: Bảng 4.3. Mã hóa Monophabetic dựa trên chuỗi nhị phân Chuỗi cần mã 000 001 010 011 100 101 110 111 Chuỗi thay thế 101 111 000 110 010 100 001 011 Theo bảng này, ta có: Plaintext: 100101111 Ciphertext: 010100011 Với phương pháp mã hoá này, để giải mã chuỗi nhận được, yêu cầu bên nhận tin cũng phải biết khóa được sử dụng để mã hóa, do đó yêu cầu cần có một giao thức để trao đổi khóa giữa người gửi và người nhận tin. Việc trao đổi khóa này là tùy vào người gửi và người nhận, có thể thực hiện đơn giản bằng cách gặp mặt trao đổi trực tiếp, chuyển thông qua mạng Internet, hay nhờ người trung gian,... 4.2.3.2. Hệ mã hóa hàng Mã hóa hoán vị hàng (Column fence) còn gọi là mã hóa hoán vị đơn bảng với một khóa cho trước, khóa có thể là một hoán vị của k số tự nhiên đầu tiên hoặc là một chuỗi văn bản. Nguyên tắc của mã hóa hàng là viết các kí tự trong nguyên bản P theo hàng ngang trên k cột, k là số tự nhiên được chọn để lấy hoán vị 147
  14. hoặc k là số ký tự xuất hiện trong chuỗi ký tự làm khóa. Sau đó, viết lại các kí tự trên từng cột theo thứ tự xuất hiện trong khóa k. Bảng 4.4. Minh họa mã hóa hàng với K = 4 3 1 2 5 6 7 Khóa 4 3 1 2 5 6 7 Hàng 1 A T T A C K P Hàng 2 O S T P O N E Hàng 3 D U N T I L T Hàng 4 W O A M * * * Ví dụ: Với nguyên bản: ATTACK POSTPONED UNTIL TWO AM và khóa K là một hoán vị của 7 số tự nhiên đầu tiên. Khóa K=4 3 1 2 5 6 7, khi đó hệ mã hóa được tiến hành theo Bảng 4.4. Khi đó bản mã thu được sẽ là: TTNAAPTMTSUOAODWCOI*KNL*PET* Ví dụ với nguyên bản: ATTACK POSTPONED UNTIL TWO AM và khóa K = “PRIVATE” là một hoán vị của K như sau K=TEVAPRI, khi đó hệ mã hóa được tiến hành theo bảng sau: Khóa T E V A P R I Hàng 1 A T T A C K P Hàng 2 O S T P O N E Hàng 3 D U N T I L T Hàng 4 W O A M * * * Khi đó bản mã thu được sẽ là: COI*KNL*PET * TTNAAPTMAODWTSUO Nguyên tắc chung để giải mã hệ mã hóa hàng là chia tổng số ký tự xuất hiện trong bản mã cho tổng số ký tự trong khóa hoặc số tự nhiên K. Sau đó viết lại theo đúng thứ tự của khóa. 148
  15. Ví dụ với bản mã: TTNAAPTMTSUOAODWCOI*KNL*PET* Tổng có 28 ký tự, đem chia cho K=7, vậy được các nhóm có 4 ký tự như sau: TTNA/APTM/TSUO/AODW/COI*/KNL/*PET* Sau đó viết lại theo khóa K=4 3 1 2 5 6 7 thì ta thu được nguyên bản: ATTACK POSTPONED UNTIL TWO AM *** 4.2.3.3. Hệ mã hóa hàng rào Hệ mã hóa hoán vị hàng rào (Row fence) cũng là một kiểu hoán vị ký tự dựa trên nguyên tắc xây dựng hàng rào cho các lâu đài từ thời trung cổ, càng nhiều lớp hàng rào thì khả năng bảo vệ càng chắc chắn, các hàng rào được xây dựng xen kẽ nhau nhằm lớp đằng sau hỗ trợ cho lớp đằng trước. Nguyên tắc chung là dựa trên số lớp hàng rào gọi là khóa K, sau đó viết theo chiều sâu của hàng rào để xây dựng bản mã. Sau đó lấy các ký tự trên từng hàng để làm hoán vị và thu được bản mã. Ví dụ với nguyên bản: ATTACK AT MIDNIGHT và độ dày của hàng rào là 2 khi đó khóa K=2 và bản mã được xây dựng theo bảng sau: Bảng 4.5. Minh họa mã hóa hàng rào với K=2 R1 A T C A M D G T R2 T A K T I N H Khi đó bản mã thu được bằng cách lấy các ký tự trên R1 ghép với các ký tự ở R2 và thu được: ATCAMDIHTAKTINGT Việc giải mã cũng được thực hiện gần giống như hệ mã hóa hàng, lấy tổng số ký tự chia cho số hàng, sau đó viết lại theo hàng và lấy theo từng cột thì sẽ thu được nguyên bản. 149
  16. 4.2.3.4. Hệ mã hóa Ceasar (Mã hóa cộng tính đơn bảng) Trong phương pháp này, việc mã hóa được thực hiện bằng cách dịch chuyển chuỗi ký tự trong nguyên bản đi một giá trị cố định nào đó theo trình tự của một bảng chữ cái. Với phương pháp này, khóa mã chính là số được sử dụng để dịch chuyển, phương pháp dịch chuyển lần đầu được Ceasar công bố nên còn được gọi là mã hóa Ceasar. Chẳng hạn, phương pháp mã hóa cộng với khóa K = 3. Khi đó, ta có: Bảng 4.6. Minh họa mã hóa cộng tính với K=3 Ký tự cần mã a b c d .......... x y z Ký tự thay thế D E F G ......... A B C Công thức sử dụng để mã hóa trong phương pháp này là: Y = X  Z, Trong đó X là chuỗi ký tự cần mã hóa, Z là giá trị của khóa và Y là bản mã thu được, phép tính  là phép cộng đồng dư modun 26 (phép chia trung hoa). Ưu điểm nổi bật của phương pháp này là đơn giản, dễ sử dụng. Tuy nhiên do hạn chế là không gian khóa nhỏ (số lượng khóa có thể sử dụng) nên kẻ tấn công có thể tấn công bằng phương pháp vét cạn và tìm ra khóa khá dễ dàng. Mã hóa cộng tính với khóa K=3 có thể minh họa trong Hình 5.5. Hình 4.3. Mã hóa cộng tính với bước dịch chuyển bằng 3 150
  17. 4.2.3.5. Hệ mã hoá nhân tính Phương pháp mã hoá nhân tính được thực hiện tương tự như phương pháp mã hoá cộng tính đã trình bày trong mục 4.2.3.4, trong đó, phép cộng đồng dư được thay thế bằng phép nhân đồng dư: Y=X  Z Tuy nhiên, một điểm chú ý là không phải mọi giá trị khóa từ 0 đến 25 đều có thể sử dụng làm khóa mã, mà chỉ có những giá trị nguyên tố cùng nhau với 26 mới có thể dùng làm khóa được, vì vậy, chỉ có 12 khóa có thể sử dụng. Giả sử sử dụng K= 2 làm khóa mã, khi đó ta có: 2*1 = 2 mod 26 tức là ký tự B sẽ được chuyển thành ký tự C trong bản mã. 2*14 = 2 mod 26 nghĩa là ký tự O cũng được chuyển thành ký tự C trong bản mã Như vậy, cùng một ký tự C trong bản mã, có hai giá trị tương ứng trong nguyên bản, điều này dẫn đến tình trạng nguyên bản thu được sẽ có ngữ nghĩa nhập nhằng, không thống nhất, hay nói cách khác là không thể giải mã được bản mã này. Vì vậy, các khóa K có giá trị không đồng dư với 26 thì không được sử dụng cho hệ mã hóa nhân tính. Trong phương pháp mã hoá nhân tính, một hạn chế là số lượng khóa được sử dụng là rất ít nên có thể dễ dàng bị phá mã bằng thuật toán vét cạn, để tăng số lượng khóa người ta thường kết hợp phương pháp mã hoá cộng tính và phương pháp mã hoá nhân tính làm một. Chẳng hạn, sử dụng công thức: Y = X Z  K Tùy vào thực tế hiện nay có thể thực hiện việc cộng tính trước hay thực hiện nhân tính trước. Thứ tự thực hiện sẽ quyết định cách thức giải mã cho bản mã thu được. 151
  18. 4.2.3.6. Hệ mã hoá Vigenere (Mã hóa cộng tính đa bảng) Hệ mã hóa Vigenère được phát triển dựa trên mã hóa cộng tính Ceasar, do hạn chế của mã hóa cộng tính đơn bảng là số lượng khóa quá bé, có thể phá mã trong thời gian ngắn bằng vét cạn nên Vigenere cải tiến thành hệ mã hóa cộng tính đa bảng. Nguyên tắc dựa trên việc dịch chuyển xoay vòng theo thứ tự chữ cái của khóa K. Chẳng hạn với khóa D= k1k2... kd và nguyên bản P, khi đó bản mã thu được dựa trên việc dịch chuyển thứ tự từng chữ cái trong P theo thứ tự ký tự tương ứng trong D. Với mỗi chữ cái của văn bản P, khi đó, đặt p = 0 nếu chữ cái là a, p = 1 nếu chữ cái là b,... sau đó bản mã thu được dựa trên công thức C = E(p) = (p + i) mod 26 với i là kí tự thứ i trong khóa D. Mã hóa và giải mã Vigenere dựa trên nguyên tắc gọi là hình vuông Vigenere bao gồm 26 hàng và 26 cột các chữ cái tiếng Anh. Mỗi hàng dịch chuyển theo thứ tự của chữ cái đầu hàng, mỗi cột là giá trị các ký tự cần mã hóa hoặc giải mã. Ví dụ với nguyên bản: “ATTACK AT MIDNIGHT” và khóa K= “CIPHER” thì bản mã được xây dựng như Bảng 4.7 và bản mã thu được sẽ là: “CBIHGBCBBPHEKOWA” Bảng 4.7. Minh họa mã hóa Vigenere Nguyên A T T A C K A T M I D N I G H T bản Khóa K C I P H E R C I P H E R C I P H Bản mã C B I H G B C B B P H E K O W A 152
  19. Hình 4.4. Hình vuông Vigenere dùng để mã hóa và giải mã 4.2.3.7. Hệ mã hoá khóa tự động (Mã hóa cộng tính đa bảng cải tiến) Hệ mã hóa khóa tự động được cải tiến dựa trên hệ mã hóa Vigenere, thay vì khóa được lặp đi lặp lại để mã hóa nguyên bản, thì hệ mã hóa khóa tự động lấy đoạn nguyên bản đầu tiên gắn vào khóa để làm khóa tự động trong xây dựng bản mã. Nguyên tắc hoạt động tương tự như hệ mã hóa Vigenere, ví dụ với nguyên bản: “ATTACK AT MIDNIGHT” và khóa K=”CIPHER” thì bản mã của hệ mã hóa khóa tự động được xây dựng như Bảng 4.8 và bản mã thu được sẽ là: “CBIHGBAMFIFNBSPW”. 153
  20. Bảng 4.8. Minh họa mã hóa khóa tự động Nguyên A T T A C K A T M I D N I G H T bản Khóa K C I P H E R A T T A C A T M I D Bản mã C B I H G B A M F I F N B S P W Các hệ mã hóa dịch chuyển đều có thể giải mã dựa trên hình vuông Vigenere, với các hệ mã hóa đơn bảng, chỉ cần lấy trên một hàng, còn đối với các hệ mã hóa đa bảng thì lấy trên các hàng khác nhau tương ứng với ký tự trong khóa. 4.2.4. Hệ mã hóa đối xứng hiện đại 4.2.4.1. Vài nét về hệ mã hóa DES (Data Encryption Standard) Với sự ra đời và phát triển nhanh chóng của máy tính điện tử, đặc biệt là mạng máy tính đã làm cho việc trao đổi thông tin trở nên thuận tiện và trở thành nhu cầu của tất cả mọi người cũng như các tổ chức, doanh nghiệp trên toàn thế giới. Chính vì thế, nhu cầu về việc đảm bảo an toàn cho các thông tin trong quá trình trao đổi trên các kênh truyền thông ngày càng được nâng cao. Từ sau năm 1949 là thời kỳ bùng nổ của ngành khoa học mã hóa với rất nhiều phương pháp mã hóa mới ra đời, cho đến những năm 1970 của thế kỷ trước thì nhu cầu về một chuẩn mã hóa chung về mặt thuật toán đã trở nên rõ ràng với các lý do sau: (1) Sự phát triển nhanh chóng của công nghệ thông tin và mạng máy tính làm bùng nổ nhu cầu về an toàn và bảo mật thông tin, (2) Các thuật toán mã hóa theo các phương pháp trước đây không còn phù hợp trong điều kiện mới, (3) Các thiết bị khác nhau đòi hỏi cần có sự trao đổi thông tin được mã hóa khác nhau. Các thuật toán mã hóa trong giai đoạn này cần thiết phải có các tính chất: (1) Bảo mật ở mức cao, 154
nguon tai.lieu . vn