Tổng quan hệ thống mã hóa
Khoa học mật mã
1.1.1 Giới thiệu về khoa học mật mã
Khoa học mật mã là ngành khoa học ứng dụng toán học vào việc biến đổi thông tin thành một dạng khác với mục đích che dấu nội dung, ý nghĩa thông tin cần mã hóa.
Khoa học mật mã 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ê 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…
Cùng với sự phát triển của khoa học máy tính và internet, các nghiên cứu và ứng dụng của khoa học mật mã ngày càng trở lên đa dạng hơn, mở ra nhiều hướng nghiên cứu chuyờn sõu vào từng lĩnh vực, ứng dụng đặc thù với những đặc trưng riêng Ứng dụng của khoa học mật mã không chỉ đơn thuần là mã hóa và giải mã thông tin mà còn bao gồm nhiều vấn đề khác nhau cần được nghiên cứu và giải quyết: Chứng thực nguồn gốc, nội dung thông tin (kỹ thuật chữ ký điện tử), chứng thực nhận tính xác thực về người sở hữu mã hóa, các quy trình giúp trao đổi thông tin và thực hiện giao dịch điện tử, an toàn trên mạng… Những kết quả nghiên cứu về mật mã cũng đã được đưa vào trong các hệ thống phức tạp hơn, kết hợp với những kỹ thuật khác nhau trong thực tế, ví dụ như hệ thống bỏ phiếu bầu cử qua mạng, hệ thống đào tạo từ xa, hệ thống quản lý an ninh của các đơn vị, hệ thống cung cấp dịch vụ multimedia trên mạng với yêu cầu cung cấp dịch vụ và bảo vệ quyền sở hữu trí tuệ đối với thông tin số…
1.1.2 Quá trình phát triển của khoa học mật mã
Khoa học mật mã có lịch sử lâu dài và đầy màu sắc Những dạng sớm nhất của cách viết bí mật này chỉ cần có giấy và bút Người ta sử dụng phương pháp này chủ yếu để mã hóa và giải mã các văn bản.
Các thiết bị và các kỹ thuật khác nhau cũng đã được sử dụng để mật mã hóa Một trong những thiết bị sớm nhất có lẽ là gậy mật mã Trong nửa đầu thế kỷ
XX, một số thiết bị cơ khí đã được phát minh để thực hiện mật mã hóa, bao gồm máy rotor machines – nổi tiếng nhất là máy Enigma được người Đức sử dụng trong đại chiến thế giới hai Mật mã được thực hiện bằng các máy móc này đã tăng độ phức tạp lên đáng kể đối với việc phân tích mã hóa và giải mã.
Với sự ra đời của máy tính kỹ thuật số và điện tử học thỡ cỏc mật mã cực kỳ phức tạp đã có thể được thực hiện Đặc trưng của mật mã máy tính là chúng thực hiện trờn cỏc chuỗi nhị phân không giống như mô hình mật mã cổ điển và cơ học Mật mã máy tính cũng có khả năng chịu đựng việc phân tích mật mã tốt hơn, rất ớt cỏc mật mã như thế dễ bị tổn thương chỉ bởi các tấn công văn bản mã.
Các nghiên cứu rộng rãi có tính học thuật về mật mã hiện đại là DES, AES, RSA…Kể từ đó, mật mã húa đó trở thành công cụ được sử dụng rộng rãi trong liên lạc và bảo mật máy tính.
Phỏ mó nghiờn cứu các nguyên lý và phương pháp giải mã thường là không biết khóa Thông thường khi đưa cỏc mó mạnh ra làm chuẩn phổ biến công khai cỏc mó đú được các kẻ phá mã cũng như những người phát triển mã tìm hiểu và nghiên cứu.
Mục tiêu của phỏ mã là tìm những điểm yếu hoặc không an toàn trong phương thức mật mã húa Thỏm mó có thể được thực hiện bởi những kẻ tấn công ác ý, nhằm làm hỏng hệ thống; hoặc bởi những người thiết kế ra hệ thống (hoặc những người khác) với ý định đánh giá độ an toàn của hệ thống.
Một số phương pháp tấn công hệ thống:
Bất cứ ai cũng có thể tạo ra một hệ thống thông tin mã hóa cho riêng mình. Nhưng để có một hệ thống an toàn và hiệu quả đòi hỏi người thiết kế phải có kiến thức toán học sâu sắc, có kinh nghiệm về bảo mật và am hiểu các phương pháp tấn công.
• Brute-force attack (exhaustive key search): phương pháp tấn công bằng cách thử tất cả những chìa khóa có thể có Đây là phương pháp tấn công thô sơ nhất và cũng khó khăn nhất.
Theo lý thuyết, tất cả các thuật toán hiện đại đều có thể bị đánh bại bởi brute-force nhưng trong thực tiễn việc này chỉ có thể thực hiện được trong thời gian hàng triệu, thậm chí hàng tỉ năm Vì thế có thể coi một thuật toán là an toàn nếu như không còn cách nào khác để tấn công nó dễ hơn là brute-force Ví dụ: Thuật toán DES có độ dài chìa khóa là 56 bit tức là có tổng cộng tất cả 256 chìa để dùng Nếu ai đó muốn “bẻ khoỏ” DES bằng cách thử hàng loạt chìa (brute-force attack) thì sẽ phải thử đến 256 lần (khoảng hơn 70 triệu tỉ lần).
• Frequency analysis: thống kê tần suất, chỉ có thể áp dụng được đối với các thuật toán cổ điển dùng phương pháp thay thế, ví dụ phương pháp Caesar Để thực hiện phương pháp này ta cần một lượng văn bản đã mã hóa đủ lớn để phép thống kê được chính xác Ngoài ra còn phải biết ngôn ngữ sử dụng trong văn bản ban đầu, nếu văn bản ban đầu là tiếng Anh thì nhiều khả năng kí tự xuất hiện nhiều nhất trong văn bản đã mã hóa là do chữ e mã hóa thành, kí tự nhiều thứ nhì bắt nguồn từ chữ a
• Differential cryptanalysis: Eli Biham và Adi Shamir tìm ra phương pháp này vào khoảng cuối những năm 1980, nó thường được sử dụng để tấn công các thuật toán khối Phương pháp này dựa trên việc phân tích những biến đổi của hai văn bản gốc có liên quan khi được mã hóa bởi cùng một chìa.
Còn rất nhiều phương pháp khác như Mod-n cryptanalysis, Linear cryptanalysis, Birthday attack, Algebraic attack mà bất cứ ai thiết kế hệ thống mã hóa cũng phải chú ý tới.
Mật mã hóa được sử dụng phổ biến để đảm bảo an toàn thông tin liên lạc.
Vì thế nó cần đảm bảo được các thuộc tính sau:
Hệ thống mã hóa
Chống lặp lại: Không cho phép bên thứ ba copy lại văn bản và gửi nhiều lần đến người nhận mà người gửi không hề hay biết.
Tuy nhiên, tùy vào từng ngữ cảnh của thực tế để thực hiện đảm bảo đỳng cỏc mục tiêu mà người sử dụng mong muốn.
1.2.1 Các khái niệm cơ bản của hệ thống mã hóa
Mã hóa là một kỹ thuật bảo mật làm biến đổi dữ liệu từ hình thức đơn giản, rõ ràng sang hình thức dữ liệu biến thành mật mã Chỉ những ai có được thông tin giải mã cần thiết mới có thể giải mã và đọc được nội dung dữ liệu Mã hóa có thể là một chiều có nghĩa là mã hóa được thiết kế để ẩn bản rõ đi và không bao giờ có thể giải mã được Hoặc có thể hai chiều chuỗi ký tự được mã hóa có thể chuyển trở lại thành bản rõ và đọc được.
1.2.2 Quá trình mã hóa và giải mã
Sơ đồ mã hóa và giải mã:
Hình 1.1: Sơ đồ mã hóa Trong đó:
Bản rõ ( plaintext) : Chứa cỏc sõu ký tự gốc, thông tin trong bản rõ là thông tin cần mã hóa để giữ bí mật.
Bản mã ( ciphertext) : Chứa cỏc kớ tự sau khi đã được mã hóa mà nội dung được giữ bí mật.
Sự mã hóa ( encryption ) : Là quá trình che dấu thông tin bằng phương pháp nào đó để làm ẩn nội dung bên trong của bản rõ.
Sự giải mã ( dencryption ) : Là quá trình biến đổi trả lại bản mã thành bản rõ.
Khóa (key ): Là phương thức, là dụng cụ dùng để mã hóa và giải mã.
Hệ thống mã hóa là một bộ năm ( P, C, K, E,D ) thỏa món cỏc điều kiện sau:
Tập nguồn P là tập hữu hạn tất cả các mẫu tin nguồn cần mã hóa có thể có.
Tập đích C là tập hữu hạn tất cả các mẫu tin có thể có sau khi mã hóa.
Tập khóa K là tập hữu hạn cỏc khúa có thể được sử dụng.
E và D lần lượt là tập mã hóa và giải mã với mỗi khóa k € K, tồn tại mật mã hóa ek € E và luật giải mã dk € D tương ứng Luật mã hóa ek : P → C và luật giải mã dk : C → P là hai ánh xạ thỏa mãn dk(ek(x)) = x x € P. x € P.
1.2.3 Phân loại các thuật toán mã hóa
Có rất nhiều các thuật toán mã hóa khác nhau Từ những thuật toán được công khai để mọi người cùng sử dụng và áp dụng như là một chuẩn chung cho việc mã hóa dữ liệu đến những thuật toán mã hóa không được công bố Có thể phân loại các thuật toán mã hóa như sau:
Phân loại theo các phương pháp mã hóa:
Mã hóa bất đối xứng.
Mã hóa khóa bí mật.
Mã hóa khóa công khai.
Nguyên tắc đầu tiên trong mã hóa 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 của thuật toán để 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:
Nếu chi phí 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 để 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ã hóa thì thuật toán đó tạm thời được coi là an toàn.
Các tính chất cơ bản của quá trình mã hóa và giải mã
Trong quá trình mã hóa và giải mã luôn đảm bảo được các tính chất sau:
Tính bí mật (confidentiality/privacy): tính chất này đảm bảo thông tin chỉ được hiểu bởi những ai biết chìa khóa bí mật.
Tính toàn vẹn (integrity): tính chất này đảm bảo thông tin không thể bị thay đổi mà không bị phát hiện Tính chất này không đảm bảo thông tin không bị thay đổi, nhưng một khi nó bị nghe lén hoặc thay đổi thì người nhận được thông tin có thể biết được là thông tin đã bị nghe lén hoặc thay đổi Các hàm một chiều (one-way function) như MD5, SHA-1, MAC được dùng để đảm bảo tính toàn vẹn cho thông tin.
Tính xác thực (authentication): người gửi (hoặc người nhận) có thể chứng minh đúng họ Người ta có thể dụng một password, một challenge dựa trên một thuật toán mã hóa hoặc một bí mật chia sẻ giữa hai người để xác thực.
Sự xác thực này có thể thực hiện một chiều (one-way) hoặc hai chiều (multual authentication).
Tớnh không chối bỏ (non-repudiation): người gửi hoặc nhận sau này không thể chối bỏ việc đã gửi hoặc nhận thông tin Thông thường điều này được thực hiện thông qua một chữ ký điện tử (electronic signature)
Tính nhận dạng (identification): người dùng của một hệ thống, một tài nguyên sở hữu một chứng minh thư (identity) như là một chìa khóa ban đầu(primary key) identity này sẽ xác định những chức năng của người dùng,giới hạn cho phép của người dùng cũng như các thuộc tính liên quan(thường gọi chung là credential) Identity có thể là login, dấu vân tay,ADN, giản đồ võng mạc mắt…
Hệ thống mã hóa đối xứng
1.4.1 Giới thiệu về hệ thống mã hóa đối xứng
Mã hóa đối xứng là hình thức mật mã trong đó mã hóa và giải mã được thi hành cùng một khóa, cùng một thuật toán mã hóa và giải mã.
1.4.2 Mô hình mã hóa đối xứng
Hình 1.2: Mô hình mã hóa đối xứng
Mó hóa đối xứng có năm thành phần:
Bản rõ: Đây là thông điệp gốc, đọc được, là đầu vào của thuật toán.
Thuật toán mã hóa: Thi hành các thay thế và dịch chuyển trên bản rõ.
Mật khóa: Khóa bí mật, đầu vào của thuật toán mã hóa.
Bản mờ: Đầu ra của thuật toán, phụ thuộc vào bản rõ và mật khóa Bản mờ nhìn thấy được nhưng không thể hiểu được nội dung.
Thuật toán giải mã: Về bản chất là ngược lại với thuật toán mã hóa Nó nhận bản mờ và mật khóa phục hồi thông điệp.
Có hai yêu cầu để sử dụng an toàn của mã hóa khóa đối xứng:
1 Chúng ta cần một thuật toán mã hóa mạnh mẽ Tối thiểu, chúng ta mong muốn các thuật toán phải đảm bảo được rằng một kẻ tò mò nào đó biết được thuật toán và truy xuất vào một hay nhiều đoạn ciphertext cũng không thể giải mã hay tìm được mật khóa.
2 Người gửi và người nhận phải nhận được các bản sao của khóa bí mật một cách an toàn và phải giữ chúng thật bí mật Nếu ai đó khám phá được mật khóa và biết thuật toán thì tất cả các giao dịch sử dụng khóa này sẽ bị phơi bày
Chúng ta giả thiết rằng không thể giải mã một thông điệp dựa trên cơ sở của ciphertext cộng với các kiến thức về thuật toán mã hóa và giải mã Nói cách khác, chúng ta không cần giữ bí mật thuật toán, mà chỉ cần giữ bí mật mật khóa Đặc điểm này của mã hóa đối xứng là cái mà làm cho nó được sử dụng rộng rãi Sự thực rằng không cần thiết phải giữ kín thuật toán, có nghĩa là các nhà sản xuất có thể được phép phát triển các chip thi hành các thuật toán mã hóa và giải mã với giá thành thấp Với việc sử dụng mã hóa đối xứng, nguyên tắc bảo mật là duy trì tính bí mật của mật khóa
1.5 Hệ thống mó hóa bất đối xứng
1.5.1 Giới thiệu hệ thống mó hóa bất đối xứng
Nếu như vấn đề khó khăn đặt ra với các phương pháp mã hóa đối xứng chính là bài toán trao đổi mó khúa thỡ ngược lại, các phương pháp mã hóa khóa bất đối xứng giúp cho việc trao đổi khóa trở nên dễ dàng hơn Trong mã hóa bất đối xứng, nội dung của khóa không cần phải giữ bí mật như đối với khóa trong các phương pháp mã hóa đối xứng Sử dụng khóa công khai này, chúng ta có thể thiết lập một quy trình an toàn để truy đổi khóa bí mật được sử dụng trong hệ thống mã hóa đối xứng.
Khái niệm: Mó hoá bất đối xứng là một dạng hệ thống mật hoá trong đó mó hoá và giải mã được thực hiện với cỏc khoỏ khác nhau, một công khai và một giành riêng Nú còn được gọi là mó hoỏ khoỏ công khai.
1.5.2 Mô hình mã hóa bất đối xứng
Hình 1.3: Mô hình mã hóa bất đối xứng Plaintext (bản rõ): đầu vào của thuật toán mó hoỏ
Encryption (thuật toỏn mó hoỏ): thi hành các chuyển dịch trên plaintext. Cặp khoá public key & private key : Là cặp khoá được chọn để sử dụng một cho mã hoá cái kia cho giải mã Cỏc phép dịch chuyển được thi hành bởi thuật toán phụ thuộc hoàn toàn vào một trong hai khoá này.
Ciphertext (bản mờ): thông điệp đó mó hoỏ, nú tuỳ thuộc vào plaintext và khoá
Decryption (thuật toán giải mã): nhận ciphertext và một khoá phù hợp, thi hành các chuyển dịch để phục hồi plaintext
Để liên lạc với B, A sinh một cặp khóa, một cho riêng mình (Private key), một (Public key).
A đặt khóa công cộng (public key) Ai muốn gửi cho A, chỉ việc dựng khúa này mã hóa thông điệp.
B cũng làm tương tự Nếu A muốn gửi một thông điệp riêng cho B, A mó hoỏ thông điệp bằng khoá chung (public key).
Khi nhận được ciphertext, B dùng khúa riêng (Private key) giải mã Không ai nhận được thông điệp của A có thể giải mã được trừ B.
Trong những năm gần đây, các phương pháp mã hóa bất đối xứng, đặc biệt là phương pháp RSA, được sử dụng ngày càng nhiều trong các ứng dụng mã hóa trên thế giới và nó có thể xem như đây là phương pháp chuẩn được sử dụng phổ biến nhất trên Internet, ứng dụng trong việc bảo mật thông tin liên lạc cũng như trong lĩnh vực thương mại điện tử.
1.5.3 So sánh sự an toàn của hệ thống mã húa khúa đối xứng và mã hóa khóa công khai
Sự phát triển của hệ thống mật hoỏ khoỏ công khai là vĩ đại nhất và có lẽ là cuộc cách mạng đúng đắn nhất trong lịch sử ngành mật mã Tuy nhiên có ba sai lầm mà người dùng mắc phải đó là:
Sai lầm I: cho rằng mó hoỏ khoỏ công khai an toàn hơn so với mó hoỏ đối xứng
Sự an toàn của các hình thức mó hoỏ là tuỳ thuộc vào chiều dài khoá và các thao tác tính toán bẻ mã Về nguyên tắc, chẳng có nguyên tắc nào trong cả mó hoỏ đối xứng và mó hoỏ khoỏ công khai làm cho hình thức này vượt hơn hình thức kia xét theo quan điểm về sức đề kháng chống lại phân tích bẻ mã
Sai lầm 2: cho rằng mó hoỏ khoỏ công khai là một kỹ thuật đa năng thay thế cho mó hoỏ đối xứng đã lỗi thời
Trái ngược với quan niệm này, do sự phức tạp tính toán của các hình thức mó hoỏ khoỏ công khai nên dường như không có khả năng xảy ra việc mó hoỏ đối xứng bị ruồng bỏ.
Sai lầm 3: cho rằng bàn giao mật khoá trở nên tầm thường trong sử dụng mó hoỏ khoỏ công khai.
Thực tế, một số giao thức thường đòi hỏi qua một đơn vị trung gian và các thủ tục là cần thiết, nó chẳng đơn giản hơn và cũng không hiệu quả hơn những gì đòi hỏi trong mó hoỏ đối xứng.
Trên thực tế, khóa công cộng dễ bị tấn công hơn khóa bí mật Để tìm ra được khóa bí mật, người giải mã cần phải có thêm một số thông tin liên quan đến các đặc tính của văn bản nguồn trước khi mã hóa để tìm ra manh mối giải mã thay vì phải sử dụng phương pháp vét cạn mó khúa Ngoài ra, việc xác định xem thông điệp sau khi giải mã có đúng là thông điệp ban đầu trước khi mã hóa hay không lại là một vấn đề khó khăn Ngược lại, đối với cỏc khúa công cộng, việc công phá hoàn toàn có thể thực hiện được với điều kiện có đủ tài nguyên và thời gian xử lý. Ngoài ra, để có thể giải mã một thông điệp sử dụng phương pháp mã hóa khóa công cộng, người giải mã cũng không cần phải vét cạn toàn bộ không gian mó khúa mà chỉ cần khảo sát trên tập con của không gian này
Bên cạnh đú, khúa công cộng còn là mục tiêu tấn công đáng giá đối với những người giải mã hơn các khóa bí mật Khóa công cộng thường dùng để mã hóa các khóa bí mật khi thực hiện việc trao đổi mã khóa bí mật Nếu khóa công cộng bị phỏ thỡ cỏc thông điệp sau đó sử dụng mó khúa này cũng bị giải mã. Trong khi đó, nếu chỉ phát hiện được một mã khóa bí mật thì chỉ có thông điệp sử dụng mó khúa này mới bị giải mã Trên thực tế, mã khóa bí mật thường chỉ được sử dụng một lần nên ít có giá trị hơn so với khóa công cộng Tóm lại, mặc dù khóa công cộng được dùng để mã hóa các thông tin ngắn nhưng đây lại là các thông tin quan trọng
Hệ thống mã hóa bất đối xứng
2.1.1 Sự ra đời của AES
Vào năm 1999, NIST đã công bố một phiên bản mới của chuẩn DES và cũng khuyến cáo rằng DES chỉ nên sử dụng trong các hệ thống kế thừa, các ứng dụng mới nên áp dụng 3DES 3DES có hai sức hút chớnh, nú sẽ là kiểu mật hoá được sử dụng rộng rãi trong những năm tiếp theo Thứ nhất với chiều dài khoá 168 bit, nó vượt trên DES trong việc chống lại các tấn công brute- force Thứ hai, bản chất của thuật toán mó hoỏ trong 3DES cũng giống như trong DES Thuật toán này đã trải qua các thử nghiệm ngặt nghèo trong một thời gian dài và, không tìm thấy một cách tấn công phân tích mã nào trên thuật toán này đạt được hiệu quả cao hơn so với tấn công brute-force đã được phát hiện Vì vậy, có thể hoàn toàn tin rằng 3DES đề kháng tốt với phân tích mã Nếu chỉ phải quan tâm đến vấn đề an ninh, thì 3DES sẽ thích hợp là một thuật toán mật hoá chuẩn cho vài thập kỷ tiếp theo.
Nhược điểm quan trọng của 3DES là thuật toán khá chậm chạp DES vào giữa những năm 1970 được thiết kế cho thi hành phần cứng, nó không có mã phần mềm hiệu quả 3DES, có số vòng nhiều hơn gấp ba lần so với DES nên cũng chậm tương ứng Một nhược điểm thứ hai là cả DES và 3DES đều sử dụng kích thước khối 64 bit Với các lý do về an ninh và hiệu quả, người ta mong đợi một kích thước khối lớn hơn Do các nhược điểm này, 3DES đã không trở thành một ứng viên cho sử dụng dài hạn Để thay thế, vào năm 1977, NIST ra lời kêu gọi về một chuẩn mó hoỏ cải tiến (Advanced Encryption Standard - AES), là loại mật mã mà cần có tính bảo mật bằng hoặc tốt hơn hơn 3DES nhưng hiệu quả phải được cải thiện đáng kể Thêm nữa, NIST chỉ ra rằng AES phải là một mật mã khối đối xứng với chiều dài khối 128 bit và có hỗ trợ chiều dài khoá đến 128, 192, thậm chí là 256 bit. Ở vòng đánh giá tiêu chuẩn thứ nhất, có 15 thuật toán đề nghị được chấp nhận Vòng hai hẹp hơn chỉ còn 5 thuật toán NIST hoàn thành tiến trình đánh giá của họ và công bố chuẩn cuối cùng vào tháng 11 năm 2001 NIST đã chọn
Mật mã AES
Giới thiệu về AES
2.1.1 Sự ra đời của AES
Vào năm 1999, NIST đã công bố một phiên bản mới của chuẩn DES và cũng khuyến cáo rằng DES chỉ nên sử dụng trong các hệ thống kế thừa, các ứng dụng mới nên áp dụng 3DES 3DES có hai sức hút chớnh, nú sẽ là kiểu mật hoá được sử dụng rộng rãi trong những năm tiếp theo Thứ nhất với chiều dài khoá 168 bit, nó vượt trên DES trong việc chống lại các tấn công brute- force Thứ hai, bản chất của thuật toán mó hoỏ trong 3DES cũng giống như trong DES Thuật toán này đã trải qua các thử nghiệm ngặt nghèo trong một thời gian dài và, không tìm thấy một cách tấn công phân tích mã nào trên thuật toán này đạt được hiệu quả cao hơn so với tấn công brute-force đã được phát hiện Vì vậy, có thể hoàn toàn tin rằng 3DES đề kháng tốt với phân tích mã Nếu chỉ phải quan tâm đến vấn đề an ninh, thì 3DES sẽ thích hợp là một thuật toán mật hoá chuẩn cho vài thập kỷ tiếp theo.
Nhược điểm quan trọng của 3DES là thuật toán khá chậm chạp DES vào giữa những năm 1970 được thiết kế cho thi hành phần cứng, nó không có mã phần mềm hiệu quả 3DES, có số vòng nhiều hơn gấp ba lần so với DES nên cũng chậm tương ứng Một nhược điểm thứ hai là cả DES và 3DES đều sử dụng kích thước khối 64 bit Với các lý do về an ninh và hiệu quả, người ta mong đợi một kích thước khối lớn hơn Do các nhược điểm này, 3DES đã không trở thành một ứng viên cho sử dụng dài hạn Để thay thế, vào năm 1977, NIST ra lời kêu gọi về một chuẩn mó hoỏ cải tiến (Advanced Encryption Standard - AES), là loại mật mã mà cần có tính bảo mật bằng hoặc tốt hơn hơn 3DES nhưng hiệu quả phải được cải thiện đáng kể Thêm nữa, NIST chỉ ra rằng AES phải là một mật mã khối đối xứng với chiều dài khối 128 bit và có hỗ trợ chiều dài khoá đến 128, 192, thậm chí là 256 bit. Ở vòng đánh giá tiêu chuẩn thứ nhất, có 15 thuật toán đề nghị được chấp nhận Vòng hai hẹp hơn chỉ còn 5 thuật toán NIST hoàn thành tiến trình đánh giá của họ và công bố chuẩn cuối cùng vào tháng 11 năm 2001 NIST đã chọn
Rijndael làm thuật toán AES đề nghị Hai nhà nghiên cứu đã phát triển và đệ trình Rijndael làm AES đều là các nhà phân tích mã đến từ Bỉ: tiến sỹ Joan Daemen và tiến sỹ Vincent Rijmen.
Cuối cùng, AES được gắn cho mục đích thay thế 3DES, nhưng tiến trình này sẽ còn phải mất nhiều năm NIST lường trước rằng 3DES là thuật toán sẽ còn tiếp tục được chấp nhận (chính phủ Mỹ còn sử dụng) trong tương lai gần.
2.1.2 Tiêu chuẩn đánh giá AES
Có hai tập tiêu chuẩn được NIST sử dụng trong việc đánh giá các ứng viên tiềm năng Các tiêu chuẩn này trải đều trong phạm vi có liên quan đến ứng dụng thực tế về các mật mã khối đối xứng hiện đại Năm 1977, NIST công bố yêu cầu cụ thể với các thuật toán đề cử rằng, các thuật toán phải được so sánh dựa trên các yếu tố liệt kê trong bảng 2.1 (được xếp hạng theo thứ tự giảm dần về mức độ quan trọng) Có ba loại tiêu chuẩn như sau:
An ninh: Đề cập tới nỗ lực cần thiết để phân tích mã của một thuật toán.
Sự nhấn mạnh vào tiêu chuẩn đánh giá dựa trên thực tiễn thi hành các tấn công Do kích thước khoá tối thiểu cho AES là 128 bit, các tấn công brute-force dựa trên công nghệ đương đại và tương lai được coi là phi thực tế Cho nên, tầm quan trọng của điểm này là nó nhằm vào các kỹ thuật phân tích mã khác với tấn công brute-force.
Chi phí: NIST có ý muốn AES phải thiết thực trong một phạm vi rộng của các ứng dụng Theo đó, AES phải có hiệu quả thi hành cao để áp dụng được trong các ứng dụng tốc độ cao, như các liên kết dùng băng thông rộng.
Các đặc trưng thuật toán và thi hành: Loại tiêu chuẩn này bao hàm các cân nhắc khác nhau, gồm tính linh hoạt, tính phù hợp đối với sự thi hành khác nhau của phần cứng và phần mềm và, tính đơn giản là cái mà sẽ làm cho phân tích an ninh trở nên dễ thực hiện.
Bảng 2.1 Tiêu chuẩn đánh giá AES của NIST (12/12/1997)
An ninh thực sự: được so sánh với các thuật toán đề xuất khác (cùng kích thước mật khoá và kích thước khối).
Tính ngẫu nhiên: mức độ mà đầu ra của thuật toán là không thể phân biệt được từ một hoán vị ngẫu nhiên trên khối đầu vào.
Tính hoàn hảo: của cơ sở toán học đối với an ninh của thuật toán.
Các yếu tố an ninh khác: đã được công khai trong quá trình đánh giá, bao gồm bất cứ tấn công nào chứng minh được rằng an ninh thực sự của thuật toán là không được như đã khẳng định bởi người đệ trình. Chi phí:
Các yêu cầu về giấy phép: NIST có ý định rằng khi AES được công bố, các thuật toán đã chỉ định trong AES sẽ được cung cấp toàn thế giới, không độc quyền, không nhuận bút sáng chế.
Hiệu quả tính toán: Sự đánh giá về hiệu quả tính toán sẽ được áp dụng cho cả sự thi hành phần cứng và phần mềm Vòng phân tích thứ nhất, NIST sẽ quan tâm chủ yếu đến các thi hành trên phần mềm và đặc biệt là trên chỉ một tổ hợp kích thước của khối mật khoá (128-128) Vòng hai sẽ chú ý hơn đến các thi hành phần cứng và các tổ hợp kích thước khối mật khoá khác Hiệu quả tính toán về cơ bản là nói về tốc độ của thuật toán Các bình luận công khai về hiệu quả của mỗi thuật toán sẽ được cân nhắc bởi NIST.
Các đòi hỏi bộ nhớ: Bộ nhớ đòi hỏi để thi hành một thuật toán đề xuất cho cả thi hành phần cứng và phần mềm cũng sẽ được xem xét trong quá trình đánh giá Vòng 1, NIST sẽ chỉ quan tâm tới các thi hành phần mềm ; vòng 2 sẽ xem xét các thi hành phần cứng Các đòi hỏi bộ nhớ sẽ bao gồm các yếu tố chẳng hạn số cổng yêu cầu để thi hành phần cứng và kích thước mã và đòi hỏi RAM cho thực thi phần mềm
Các đặc trưng thuật toán và thi hành:
Tính linh hoạt: Các thuật toán đề xuất có tính linh hoạt cao hơn sẽ đáp ứng được sự cần thiết của nhiều người dùng hơn, và sẽ được ưa dùng hơn Nhưng, sẽ có những hạn chế trong chức năng (chẳng hạn, mật khoá rất ngắn); với các trường hợp này, sở thích là không cho phép. Một vài ví dụ về tính linh hoạt có thể đưa vào thuật toán như sau đây (nhưng không thực sự giới hạn).
Thuật toán có thể chấp nhận thêm các kích thước mật khoá và kích thước khối khác (ví dụ, kích thước khối 64-bit, kích thước khoá khác với chỉ định Các đòi hỏi tối thiểu chấp nhận được (chẳng hạn, các kích thước khoá giữa 128 và 256 theo bội của 32 bit, v.v ).
Thuật toán có thể được thi hành an toàn và hiệu quả trên diện rộng với các nền tảng phần mềm và các ứng dụng khác nhau (ví dụ, các bộ vi xử lý 8- bit, các mạng ATM, truyền thông giọng nói và vệ tinh, HDTV, B-ISDN, v.v ).
Thuật toán AES
2.2.1 Tổng quan về thuật toán AES
Rijndael được đề xuất thành AES định nghĩa một mật mã mà trong đó chiều dài khối và chiều dài khoá có thể được chỉ định độc lập là 128, 192, hay 256 bit Chỉ định kỹ thuật của AES sử dụng tuỳ ý ba kích thước khoá nêu trên nhưng giới hạn chiều dài khối là 128 bit Một số tham số AES phụ thuộc vào chiều dài của mật khoá (bảng 2.3) Khi mô tả mục này, chúng ta giả thiết chiều dài mật khoá là 128 bit Thực ra, chiều dài khoá này được thi hành phổ biến nhất.
Rijndael được thiết kế với các đặc trưng sau đây:
Có khả năng chống lại tất cả các tấn công đã được biết đến.
Tốc độ và tính súc tích của mó trờn nhiều nền tảng.
Sự thiết kế đơn giản
Hình 2.1 trình bày toàn bộ cấu trúc của AES Đầu vào các thuật toán mó hoỏ và giải mã là một khối đơn 128 bit Khối này được miêu tả như một ma trận vuông chứa các byte Khối này được sao chép vào mảng State, mảng này được thay đổi tại mỗi giai đoạn mó hoỏ hay giải mã Sau giai đoạn cuối cùng, State được sao chép đến một ma trận đầu ra Các hoạt động này được mô tả trong hình 2.2
Tương tự, 128 bit khoá cũng được mô tả như một ma trận vuông chứa các byte Khoá này rồi được mở rộng thành một mảng các word, mỗi word gồm bốn byte; khoá đầu vào gồm tổng cộng là 44 word, cho 128 bit mật khoỏ (hỡnh 2.2b).Chú ý rằng trật tự của các byte trong một ma trận là theo cột Vậy, lấy ví dụ, bốn byte đầu tiên của 128 bit plaintext đầu vào mó hoỏ chiếm cột đầu tiên của ma trận;bốn byte thứ hai chiếm cột thứ hai và … Tương tự, bốn byte của khoá mở rộng,tạo ra một word, chiếm cột đầu của ma trận w.
Bảng 2.3 Các tham số AES
Kích thước khoá (word/byte/bit) 4/16/128 6/24/192 8/32/256 Kích thước khối plaintext (word/byte/bit) 4/16/128 4/16/128 4/16/128
Kích thước khoá mỗi vòng (word/byte/bit) 4/16/128 4/16/128 4/16/128Kích thước khoá mở rộng (word/byte) 44/176 52/208 60/240
Hình 2.1: Mã hóa và giải mã AES
Hình 2.2: Các cấu trúc dữ liệu của AES
Hình 2.3: Vòng mã hóa AES
Cấu trúc tổng thể của AES:
1 Một đặc điểm đáng nhớ là AES không mang cấu trúc Feistel Nhắc lại về cấu trúc Feistel cổ điển, một nửa khối dữ liệu được dùng để sửa đổi nửa kia và rồi, hai nửa được tráo đổi Hai trong số ứng viên cuối cùng của AES không sử dụng cấu trúc Feistel mà xử lý toàn bộ khối dữ liệu song song trong mỗi vòng bằng cỏc phộp thay thế và hoán vị.
2 Mật khoá đầu vào được mở rộng thành một ma trận gồm 44 word 32- bit, w[i] Bốn word phân biệt (128 bit) trở thành một khoá con tại mỗi vòng; chúng được biểu diễn trong hình 2.1.
3 Bốn giai đoạn khác nhau được sử dụng, một cho hoán vị và ba cho thay thế: a Thay thế các byte: Sử dụng một hộp S để thực hiện một phép thay thế từng byte một cho khối. b Dịch chuyển hàng: Chỉ là một hoán vị đơn giản. c Trộn các cột: Một phép thay thế sử dụng số học GF(2 8 ). d Thờm khoỏ vũng: Một phép XOR bit đơn giản của khối hiện tại với một phần của khoá mở rộng.
4 Cấu trúc khá đơn giản Cả mó hoỏ và giải mã, mật mã bắt đầu với một giai đoạn thờm khoỏ vũng, theo sau bởi chớn vũng mỗi vòng gồm cả bốn giai đoạn, và vòng thứ mười gồm ba giai đoạn Hình 2.3 mô tả cấu trúc một vũng mó hoỏ đầy đủ.
5 Chỉ có giai đoạn thờm khoỏ vũng sử dụng khoỏ Vỡ lý do này nên mật mã bắt đầu và kết thúc với giai đoạn thờm khoỏ vũng Bất cứ giai đoạn nào khỏc, dự áp dụng ở đầu hay cuối, là nghịch đảo được mà không biết đến khoá, vì thế nó chẳng hề tăng cường thêm an ninh.
6 Giai đoạn thờm khoỏ vũng có dạng của mật mã Vernam và tự nó không có gì đặc biệt Ba giai đoạn kia cùng đưa ra sự xáo trộn, khuếch tán và phi tuyến tính nhưng tự chúng không đưa ra được sự bảo mật nào, vỡ chỳng khụng sử dụng khoá Chúng ta có thể xem như là các hoạt động mó hoỏ XOR qua lại (thờm khoỏ vũng) của một khối, theo sau bởi sự xáo trộn của khối (ba vòng kia), tiếp nối bởi mó hoỏ XOR và, v.v… Sự dàn xếp này vừa đạt hiệu quả vừa an ninh cao.
7 Mỗi giai đoạn dễ dàng nghịch đảo được Với các giai đoạn Thay thế Byte, Dịch chuyển dòng và Trộn các cột, một hàm nghịch đảo được sử dụng trong thuật toán giải mã Với giai đoạn Thờm khoỏ vũng, phộp nghịch đảo đạt được bằng cách XOR với cựng khoỏ vũng với khối sử dụng kết quả A A B = B.
8 Với hầu hết các mật mã khối, thuật toán giải mã sử dụng khoá mở rộng theo trật tự ngược lại Tuy nhiên, thuật toán giải mã không phải là giống hệt như thuật toán mó hoỏ Điều này là hệ quả riờng cú về cấu trúc của AES.
9 Một khi đã thiết lập được cả bốn giai đoạn là nghịch đảo được, rất dễ dàng kiểm tra thuật toán giải mã thực hiện phục hồi được plaintext. Hình 2.1 cho thấy cách thức sắp xếp mó hoỏ và giải mã tiến hành ngược chiều nhau Tại mỗi điểm (như thể hiện bằng một đường ngang nét đứt), mảng State là giống cho cả mó hoỏ và giải mã.
10 Vòng cuối cùng của cả mó hoỏ và giải mã chỉ chứa ba giai đoạn Một lần nữa lại là cấu trúc riêng của AES, nó được đòi hỏi để làm mật mã phục hồi được.
2.2.2 Các phép biến đổi của AES
Bây giờ ta chuyển sang thảo luận về từng giai đoạn sử dụng trong AES. Với mỗi giai đoạn, chúng ta sẽ mô tả thuật toán (mó hoỏ), thuật toán ngược (giải mã) và phân tích nguồn gốc cho từng giai đoạn Sau đó, chúng ta thảo luận về mở rộng khoá
AES sử dụng số học trường hữu hạn GF(2 8 ), với đa thức tối giản 1 m(x) = x 8 + x 4 + x 3 + x + 1 Các nhà phát triển Rijndael đã xây dựng ý định của riêng họ và chọn một trong số 30 đa thức tối giản bậc 8
2.2.2.1 Phép biến đổi thay thế byte
Ứng dụng của mật mã AES
Ứng dụng chuẩn mã hóa AES và các phiên bản mở rộng vào Hệ thống thư điện tử an toàn tại Việt Nam.
Bảo vệ dữ liệu và thông tin mật của bạn với công nghệ mã hóa AES.
USB với công nghệ mã hóa AES – 256 bit.
Thiết lập một mật khẩu cho một phần mềm mới với công nghệ mã hóa AES
Chứng thực giữa client và server :SSL sử dụng các kĩ thuật mã hóa và giải mã AES để thực hiện thao tác chứng thực.
Ưu, nhược điểm của mật mã AES
Phương pháp Rijndael thích hợp cho việc triển khai trên nhiều hệ thống khác nhau, không chỉ trờn cỏc máy tính cá nhân mà điển hình là sử dụng các chip Pentium, mà cả trờn cỏc hệ thống thẻ thông minh Trờn cỏc máy tính cá nhân, thuật toán AES thực hiện việc xử lý rất nhanh so với các phương pháp mã hóa khỏc Trờn cỏc hệ thống thẻ thông minh, phương pháp này càng phát huy ưu điểm không chỉ nhờ vào tốc độ xử lý cao mà còn nhờ vào mã chương trình ngắn gọn, thao tác xử lý sử dụng ít bộ nhớ Ngoài ra, tất cả các bước xử lý của việc mã hóa và giải mã đều được thiết kế thích hợp với cơ chế xử lý song song nên phương pháp Rijndael càng chứng tỏ thế mạnh của mỡnh trờn cỏc hệ thống thiết bị mới.
Do đặc tính của việc xử lý thao tác trên từng byte dữ liệu nên không có sự khác biệt nào được đặt ra khi triển khai trên hệ thống big-endian hay little-endian. Xuyên suốt phương pháp AES, yêu cầu đơn giản trong việc thiết kế cựng tớnh linh hoạt trong xử lý luôn được đặt ra và đã được đáp ứng Độ lớn của khối dữ liệu cũng như của mó khúa chớnh có thể tùy biến linh hoạt từ 128 đến 256-bit với điều kiện là chia hết cho 32 Số lượng chu kỳ có thể được thay đổi tùy thuộc vào yêu cầu riêng được đặt ra cho từng ứng dụng và hệ thống cụ thể
Tuy nhiên, vẫn tồn tại một số hạn chế mà hầu hết liên quan đến quá trình giải mã Mã chương trình cũng như thời gian xử lý của việc giải mã tương đối lớn hơn việc mã hóa, mặc dù thời gian này vẫn nhanh hơn đáng kể so với một số phương pháp khác Khi cài đặt bằng chương trình, do quá trình mã hóa và giải mã không giống nhau nên không thể tận dụng lại toàn bộ đoạn chương trình mã hóa cũng như các bảng tra cứu cho việc giải mã Khi cài đặt trên phần cứng, việc giải mã chỉ sử dụng lại một phần các mạch điện tử sử dụng trong việc mã hóa và với trình tự sử dụng khác nhau
Phương pháp Rijndael với mức độ an toàn rất cao cựng cỏc ưu điểm đáng chú ý khác chắc chắn sẽ nhanh chóng được áp dụng rộng rãi trong nhiều ứng dụng trờn cỏc hệ thống khác nhau.
An ninh của mật mã AES
Vào thời điểm năm 2006, dạng tấn công lên AES duy nhất thành công là tấn công kờnh bờn (side channel attack]) Vào tháng 6 năm 2003, chính phủ Hoa Kỳ tuyên bố AES có thể được sử dụng cho thông tin mật.
"Thiết kế và độ dài khóa của thuật toán AES (128, 192 và 256 bít) là đủ an toàn để bảo vệ các thông tin được xếp vào loại tối mật (secret) Các thông tin tuyệt mật (top secret) sẽ phải dựng khúa 192 hoặc 256 bớt Cỏc phiên bản thực hiện AES nhằm mục đích bảo vệ hệ thống an ninh hay thông tin quốc gia phải được NSA kiểm tra và chứng nhận trước khi sử dụng." Điều này đánh dấu lần đầu tiên công chúng có quyền tiếp xúc với thuật toán mật mã mà NSA phê chuẩn cho thông tin tuyệt mật Nhiều phần mềm thương mại hiện nay sử dụng mặc định khúa cú độ dài 128 bít.
Phương pháp thường dùng nhất để tấn công các dạng mã hóa khối là thử các kiểu tấn công lên phiên bản có số chu trình thu gọn Đối với khóa 128 bít, 192 bít và 256 bít, AES có tương ứng 10, 12 và 14 chu trình Tại thời điểm năm 2006,những tấn công thành công được biết đến là 7 chu trình đối với khóa 128 bít, 8 chu trình với khóa 192 bít và 9 chu trình với khóa 256 bít.
Một số nhà khoa học trong lĩnh vực mật mã lo ngại về an ninh của AES.
Họ cho rằng ranh giới giữa số chu trình của thuật toán và số chu trình bị phá vỡ quá nhỏ Nếu các kỹ thuật tấn công được cải thiện thì AES có thể bị phá vỡ Ở đây, phá vỡ có nghĩa chỉ bất cứ phương pháp tấn công nào nhanh hơn tấn công kiểu duyệt toàn bộ Vì thế một tấn công cần thực hiện 2 120 cũng được coi là thành công mặc dù tấn công này chưa thể thực hiện trong thực tế Tại thời điểm hiện nay, nguy cơ này không thực sự nguy hiểm và có thể bỏ qua Tấn công kiểu duyệt toàn bộ quy mô nhất đã từng thực hiện là do distributed.net thực hiện lên hệ thống
64 bít RC5 vào năm 2002 (Theo định luật Moore thỡ nó tương đương với việc tấn công vào hệ thống 66 bít hiện nay).
Một vấn đề khác nữa là cấu trúc toán học của AES Không giống với các thuật toán mã hóa khác, AES có mô tả toán học khá đơn giản Tuy điều này chưa dẫn đến mối nguy hiểm nào nhưng một số nhà nghiên cứu sợ rằng sẽ có người lợi dụng được cấu trúc này trong tương lai.
Vào năm 2002, Nicolas Courtois và Josef Pieprzyk phát hiện một tấn công trên lý thuyết gọi là tấn công XSL và chỉ ra điểm yếu tiềm tàng của AES Tuy nhiên, một vài chuyên gia về mật mã học khác cũng chỉ ra một số vấn đề trong cơ sở toán học của tấn công này và cho rằng các tác giả đó cú sai lầm trong tính toán. Việc tấn công dạng này có thực sự trở thành hiện thực hay không vẫn còn để ngỏ và cho tới nay thì tấn công XSL vẫn chỉ là suy đoán.
Tấn công kờnh bờn không tấn công trực tiếp vào thuật toán mã hóa mà thay vào đó, tấn công lờn cỏc hệ thống thực hiện thuật toán có sơ hở làm lộ dữ liệu.
Tháng 4 năm 2005, Daniel J Bernstein công bố một tấn công lên hệ thống mã hóa AES trong OpenSL Một máy chủ được thiết kế để đưa ra tối đa thông tin về thời gian có thể thu được và cuộc tấn công cần tới 200 triệu bản rõ lựa chọn.Một số người cho rằng tấn công không thể thực hiện được trên Internet với khoảng cách vài điểm mạng.
Tháng 10 năm 2005, Adi Shamir và 2 nhà nghiên cứu khỏc cú một bài nghiên cứu minh họa một vài dạng khác Trong đó, một tấn công có thể lấy được khóa AES với 800 lần ghi trong 65 mili giây Tấn công này yêu cầu kẻ tấn công có khả năng chạy chương trình trờn chính hệ thống thực hiện mã hóa.
Mật mã SAES
Tổng quan
Hình 3.1 miêu tả toàn bộ cấu trúc của S-AES Thuật toán mó hoỏ nhận một khối 16-bit plaintext và khoá 16-bit làm đầu vào và sinh ra khối ciphertext 16-bit. Thuật toán giải mã S-AES nhận một khối ciphertext 16-bit với cựng khoỏ 16-bit đó dựng để sinh ra ciphertext đó và phục hồi trở lại khối 16-bit plaintext.
Thuật toán mó hoỏ cần sử dụng bốn hàm: thờm khoỏ (add key - AK), thay thế nibble (nibble substitution - NS), dịch chuyển dòng (shift row -SR) và, trộn cột (mix column - MC).
Chúng ta trình bày ngắn gọn thuật toán mó hoỏ dưới dạng tổng hợp của các hàm:
AK2 º SR º NS º AK1 º MC º SR º NS º AK0 theo đó, AK0 được áp dụng trước.
Thuật toán mó hoỏ được tổ chức thành ba vũng Vũng 0 đơn giản là một vũng thờm khoỏ, vũng 1 chứa đầy đủ bốn hàm; và vòng 2 chỉ chứa ba hàm Mỗi vòng bao gồm hàm thờm khoỏ sử dụng khoá 16 bit Ban đầu 16 bit khoá được mở rộng thành 48 bit để mỗi vũng cú riờng một khoá 16 bit.
Mỗi hàm làm việc một ma trận state 22 nibble mà một nibble gồm 4 bit.Giá trị ban đầu của ma trận state là 16 bit plaintext; ma trận state rồi được thay đổi trong tiến trình mó hoỏ sau mỗi hàm và sau cùng đưa ra 16 bit ciphertext
Hình 3.1 Mó hoá và giải mã S-AES
Hình 3.2 Cấu trúc dữ liệu trong S-AES
Hình 3.3 Các thàn h phần của một vòng đầy đủ trong S-AES
Như được minh họa trong hình 3.2a, trật tự của các nibble trong ma trận là theo cột Vậy, ví dụ, 8 bit đầu tiên của 16 bit plaintext đầu vào chiếm cột đầu của ma trận, 8 bit tiếp theo chiếm cột thứ hai 16 bit cũng được tổ chức tương tự, nhưng được xem như 2 byte thay vì 4 nibble nên dễ theo dõi hơn (hình 3.2b). Khoá mở rộng 48 bit được coi như ba khoỏ vũng, với các bit được đặt nhãn như sau: K0 = k0 k15; K1 = k16 k31; K2 = k32 k47.
Giải mã cũng đã được minh họa trong hình 3.1 và mang bản chất là quá trình nghịch đảo của trình tự mó hoỏ:
AK0 º INS º ISR º IMC º AK1 º INS º ISR º AK2 trong đó, ba trong số các hàm có chức năng nghịch đảo tương ứng là: nghịch đảo thay thế nibble (inverse nibble substitution - INS), nghịch đảo dịch dòng (inverse shift row -ISR) và, nghịch đảo trộn cột (inverse mix column -IMC).
3.2 Mó hoá và giải mã S-AES
Bây giờ chúng ta quan tâm từng hàm thành phần của thuật toán mó hoỏ.
Chứa phép XOR bit của ma trận state 16 bit và 16 bit khoỏ Hỡnh 3.4 cho thấy điều này như một hoạt động trên cột, nhưng nó cũng có thể được xem như hoạt động trên nibble hay các hoạt động bit Dưới đây là một ví dụ:
Phép nghịch đảo của hàm thờm khoỏ giống hệt với phép biến đổi xuôi, bởi hoạt động XOR tự nó đã nghịch đảo.
3.2.2.Phép thay thế nibble (Nibble Substitution)
Hàm thay thế nibble đơn giản là một bảng tra (hình 3.4) AES định nghĩa một ma trận 44 các giá trị nibble, được gọi là một hộp S (bảng 3.1a) chứa một hoán vị của tất cả các giá trị có thể Mỗi nibble riêng biệt của ma trận được ánh xạ thành một nibble mới theo cách sau đây: Hai bit trái nhất của nibble được sử dụng như một giá trị dòng và hai bit phải nhất được dùng như giá trị cột Cỏc dũng và cột này làm thành các chỉ số cho hộp S để chọn một giá trị đầu ra 4-bit duy nhất.
Ví dụ, giá trị thập lục phân tham chiếu đến hàng 2, cột 2 của hộp S nơi chứa giá trị
0 Theo đó, giá trị A được ánh xạ thành giá trị 0.
Sau đây là một ví dụ về phép biến đổi thay thế nibble:
Phép thay thế nibble nghịch đảo sử dụng hộp S cho trong hình 3.1b
Hình 3.4 Các phép biến đổi trong S-AES
Bảng 3.1 Các hộp S của S-AES
3.2.3 Hàm dịch chuyển dòng (Shift Row)
Hàm dịch chuyển dòng thực hiện dịch chuyển một nibble của dòng thứ hai trong ma trận state; dòng thứ nhất không thay đổi (hình 3.4) Sau đây là một ví dụ:
Nghịch đảo của hàm dịch chuyển dòng là giống hệt với hàm xuụi, vỡ nú dịch chuyển hàng thứ hai trở lại vị trí ban đầu.
3.2.4 Hàm trộn cột (Mix Column)
Hàm trộn cột hoạt động trên từng cột riêng Mỗi nibble của một cột được ánh xạ thành một giá trị mới mà là một hàm của cả hai nibble trong cột đó Phép biến đổi có thể được định nghĩa bằng phép nhân ma trận trên ma trận state như sau (hình 3.4):
Thực hiện phép nhân ma trận, ta được:
Với thi hành tính toán số học trong GF(2 4 ) và ký hiệu • đại diện cho phép nhân trong GF(2 4 ) Dưới đây là một ví dụ:
Hàm trộn cột nghịch đảo được định nghĩa như sau:
Chúng ta chứng minh thực sự đã định nghĩa được sự nghịch đảo theo cách sau đây:
Phép nhân ma trận trên sử dụng các kết quả đưa ra từ trong GF(2 4 ), như sau: 9 +
(2 • 4) = 9 + 8 = 1; (9 • 4) + 2 = 2 + 2 = 0 Các phép tính này có thể được kiểm tra bằng cách sử dụng các kiến thức số học đa thức.
Thực sự, hàm trộn cột là khó mường tượng nhất
3.2.5 Mở rộng khoá (Key Expansion)
Với việc mở rộng khoá, 16 bit khoá ban đầu được nhóm lại thành một dòng gồm các word 8-bit Hình 3.5 minh họa miêu tả sự mở rộng thành 6 word bằng sự tính toán ra bốn word mới từ hai word ban đầu Thuật toán như sau: w2 = w0 g(w1) = w0 RCON(1) SubNib(RotNib(w1)) w3 = w2 w1 w4 = w2 g(w3) = w2 RCON(2) SubNib(RotNib(w3)) w5 = w4 w3
RCON là một hằng của vòng, được định nghĩa như sau: RC[i] = x i + 2 , mà RC[1] x 3 = 1000 và RC[2] = x 4 mod (x 4 + x + 1) = x + 1 = 0011 RC[i] thiết lập nibble bên trái của một byte, còn nibble bên phải gồm toàn các số 0 Do đó, RCON(1) 10000000 và RCON(2) = 00110000.
Ví dụ, giả sử khoá là 2D55 = 0010 1101 0101 0101 = w0w1 Thì w2 = 00101101 10000000 SubNib(01010101)
Hình 3.5 Phép mở rộng khoá trong S-AES
Hộp S được xây dựng như sau:
1 Hộp S ban đầu cú cỏc giá trị tăng dần theo từng hàng Hàng đầu chứa các giá trị thập lục phân 0, 1, 2, 3; hàng thứ hai chứa 4, 5, 6, 7; và v.v…
Do đó, giá trị của nibble tại dòng i, cột j là 4i + j.
2 Coi mỗi nibble như một phần tử trong trường hữu hạn GF(2 4 ) chia dư bởi x 4 +x + 1 Mỗi nibble a0a1a2a3 biểu diễn một đa thức bậc 3.
3 Ánh xạ mỗi byte trong hộp S với hệ số nhân nghịch đảo của nó trong trường hữu hạn GF(2 4 ) chia lấy dư với x 4 + x + 1; giá trị 0 được ánh xạ là chính nó.
4 Xét mỗi byte trong hộp S chứa 4 bits cú nhón (b0, b1, b2, b3) Áp dụng biến đổi sau đây cho mỗi bit trong mỗi byte của hộp S: Chuẩn AES miêu tả biến đổi này dưới dạng ma trận như sau:
Dấu (') biểu thị rằng các biến được cập nhật bằng giá trị bên phải Hãy nhớ rằng phép cộng và phép trừ được tính với phép chia dư cho 2.
Bảng 3.1a minh họa hộp S kết quả Đây là một ma trận phi tuyến tính và nghịch đảo được Hộp S nghịch đảo cho trong bảng 3.1b.
Bây giờ chúng ta khảo sát một số khía cạnh quan trọng khác nhau có liên quan tới cấu trúc của AES Trước hết, lưu ý rằng các thuật toán mó hoỏ và giải mã đều bắt đầu và kết thúc bởi hàm thờm khoỏ Cỏc hàm khác, tại đầu và cuối mỗi thuật toán, là nghịch đảo dễ dàng mà không cần biết đến khoá và thế chỳng khụng tăng thêm an ninh cho thuật toán Cho nên, chỉ cú một vòng 0 chứa hàm thờm khoỏ. Điểm thứ hai cần lưu ý là vòng 2 không chứa hàm trộn cột Lý giải cho vấn đề này thực sự quan hệ tới một quan sát thứ ba đó là, dù cho thuật toán giải mã là quá trình ngược của thuật toán mó hoỏ, như có thể thấy trong hình 3.1, thỡ nó không theo cùng trình tự thực hiện các hàm Vậy
Mó hoá: AK2 º SR º NS º AK1 º MC º SR º NS º AK0
Giải mã: AK0 º INS º ISR º IMC º AK1 º INS º ISR º AK2
Mã hoá và giải mã S-AES
AES vào mã hóa file
Sau một thời gian làm đồ án, nghiên cứu phương pháp mã hóa AES, em đã thiết lập một chương trình ứng dụng của mật mã AES vào mã hóa các file dữ liệu. Chương trình được viết bằng ngôn ngữ C# trên môi trường Visual Studio 2008.
Khi chạy chương trình thì màn hình sẽ hiện ra giao diện của chương trình như sau:
Hình 4.1 Giao diện chính của chương trình
Khi giao diện của chương trình đã hiện ra, bây giờ bạn muốn mã hóa file nào thì bạn hãy ấn nút browse và chọn file dữ liệu mà bạn cần mã hóa trong máy của bạn File dữ liệu này có thể là file ảnh, có thể là file text Tùy theo dữ liệu mà bạn chọn để mã hóa thông tin Sau khi bạn đã chọn được file dữ liệu thì file đó sẽ có đuôi “.aes” Chương trình dưới đây minh họa cho thao tác này:
Xây dựng chương trình sử dụng thuật toán mã hóa AES vào mã hóa file
Chương trình cài đặt
Khi chạy chương trình thì màn hình sẽ hiện ra giao diện của chương trình như sau:
Hình 4.1 Giao diện chính của chương trình
Khi giao diện của chương trình đã hiện ra, bây giờ bạn muốn mã hóa file nào thì bạn hãy ấn nút browse và chọn file dữ liệu mà bạn cần mã hóa trong máy của bạn File dữ liệu này có thể là file ảnh, có thể là file text Tùy theo dữ liệu mà bạn chọn để mã hóa thông tin Sau khi bạn đã chọn được file dữ liệu thì file đó sẽ có đuôi “.aes” Chương trình dưới đây minh họa cho thao tác này:
Hình 4.2 Giao diện chọn file dữ liệu
Lúc này, tại nút encrypt nổi màu xanh thể hiện đây là quá trình mã hóa dữ liệu Trên màn hình ta thấy cú nỳt save Đây là nút tự động lưu dữ liệu với đuôi là aes Nếu bạn muốn mã hóa, bạn phải nhập một password bất kỳ, sau đó ấn nút encrypt, dữ liệu sẽ được thay đổi trong file mà bạn đã chọn với đuôi aes Dưới đây là hình minh họa:
Hình 4.3 Giao diện mã hóa dữ liệu
File dữ liệu được mã hóa:
Hình 4.4 Dữ liệu đã được mã hóa
Như vậy là bạn đã mã hóa dữ liệu thành công Bây giờ là công việc giải mã chúng Tại màn hình giao diện thay vì nút encrypt nổi đèn xanh thì ta sẽ ấn vào nút decrypt Lúc này thì tại nút decrypt sẽ nổi đèn xanh thể hiện rằng đây là quá trình giải mã Hình ảnh minh họa:
Hình 4.5 Giao diện khi ấn nút decrypt
Tương tự như quá trình mã hóa Ta lại chọn file dữ liệu cần được giải mã và khi đó màn hình sẽ hiện lên như sau:
Hình 4.6 Giao diện chọn file giải mã dữ liệu Muốn giải mã, bạn ấn nút decrypt như hình dưới đây:
Hình 4.7: Giao diện giải mã dữ liệu
Kết quả giải mã trong file như hình dưới đây:
Hình 4.8: Kết quả giải mã
Như vậy chúng ta đã hoàn thành xong chương trình ứng dụng của mã hóaAES vào giải mã file dữ liệu.
Kiến nghị
Vì thời gian hạn chế và mức độ nghiên cứu chưa sâu rộng Em rất mong đồ án sẽ là tài liệu tham khảo cho các bạn sinh viên khóa sau khắc phục một số khuyết điểm để chương trình được hoàn thiện hơn như:
Xõy dựng ứng dụng có giao diện thõn thiện, dễ sử dụng.
Bắt lỗi chi tiết từng lỗi và nêu ra lỗi ở đâu.
Xây dựng hệ thống trợ giúp.
Mở rộng AES để có thể mã hóa được các file có dung lượng lớn.