Đăng ký Đăng nhập
Trang chủ Tìm hiểu và mô phỏng hệ thống mật mã hóa tiên tiến aes...

Tài liệu Tìm hiểu và mô phỏng hệ thống mật mã hóa tiên tiến aes

.PDF
28
1
85

Mô tả:

[Type here] HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG KHOA VIỄN THÔNG 1 ---------- BÀI TIỂU LUẬN TÌM HIỂU VÀ MÔ PHỎNG HỆ THỐNG MẬT MÃ HÓA TIÊN TIẾN AES Tên học phần : An ninh mạng viễn thông Giảng viên : Phạm Anh Thư Nhóm tiểu luận : 06 Nhóm môn học : 06 Sinh viên thực hiện : Vũ Trọng Linh Vũ Đình Trường Trịnh Xuân Đạt Hà Nội, 27/06/2021 1 Bài thi cuối kỳ môn ANM MỤC LỤC Bảng phân công công việc ....................................................................................................... 3 Danh mục thuật ngữ ................................................................................................................ 4 Danh mục hình ảnh .................................................................................................................. 5 MỞ ĐẦU ................................................................................................................................... 6 I. Giới thiệu chung ............................................................................................................. 7 1.1 Giới thiệu ..................................................................................................................... 7 1.2 Sơ lược lịch sử AES ...................................................................................................... 7 II. Các tiêu chí đánh giá thuật toán AES ......................................................................... 8 2.1 Bảo mật ......................................................................................................................... 8 2.2 Chi phí ......................................................................................................................... 8 2.3 Đặc điểm thực hiện và thuật toán................................................................................... 8 III. Cấu trúc cơ bản của thuật toán mã hóa tiên tiến AES ............................................. 8 IV. Quá trình mã hóa ........................................................................................................... 9 4.1 Phép biến đổi SubBytes ............................................................................................... 10 4.2 Phép biến đổi ShiftRow ............................................................................................... 12 4.3 Phép biến đổi MixColumns.......................................................................................... 12 4.4 Phép biến đổi AddRoundKey ...................................................................................... 13 4.5 Mở rộng khóa (ExpandKey) ........................................................................................ 14 V. Quá trình giải mã ......................................................................................................... 15 5.1 Tổng quan về giải mã AES-128 ..................................................................................... 15 5.2 Chức năng AddRoundKey đảo .................................................................................... 17 5.3 Chức năng InvShiftRows ............................................................................................. 17 5.4 Chức năng InvSubBytes .............................................................................................. 18 5.5. Chức năng InvMixColumns......................................................................................... 19 5.6 Chức năng InvKeyExpansion ...................................................................................... 23 VI. Demo thuật toán AES bằng Python. .......................................................................... 24 6.1 Giới thiệu ................................................................................................................... 24 6.2 Thiết lập ứng dụng ....................................................................................................... 25 6.2.1 Các thư viện hỗ trợ cho ứng dụng ................................................................................. 25 6.2.2 Thuật toán mã hóa ...................................................................................................... 25 6.2.3 Thuật toán giải mã .................................................................................................... 26 6.2.4 Các trường hợp được ứng dụng ................................................................................... 27 VII. Kết luận ........................................................................................................................ 27 Tài liệu tham khảo ................................................................................................................. 28 2 Nhóm 6 2 Bài thi cuối kỳ môn ANM Bảng phân công công việc Họ tên    Trịnh Xuân Đạt – B17DCVT       Vũ Trọng Linh – B17DCVT219       Vũ Đình Trường– B17DCVT Nhiệm vụ Danh mục thuật ngữ viết tắt I. Giới thiệu chung II. Các tiêu chí đánh giá thuật toán AES Mục lục Danh mục hình ảnh Mở đầu III. Cấu trúc cơ bản của thuật toán AES IV. Quá trình mã hóa Tổng hợp word Bảng phân công công việc Lý do chọn đề tài Mục đích và phạm vi tiểu luận VII. Quá trình giải mã VIII. Demo thuật toán AES bằng Python. Kết luận Tổng hợp word 3 Nhóm 6 3 Bài thi cuối kỳ môn ANM Danh mục thuật ngữ AES DES SPN SubByte Shift Row Mix Columns Add Round Key Expand Key Inv SubByte Inv Shift Row Inv Mix Columns Inv Add Round Key Advanced Encryption Standard Data Encryption Standard Substitution and Permutation Network Substitute byte Inverse Substitute byte Inverse Shift Row Inverse Mix Columns Inverse Add Round Key 4 Nhóm 6 4 Chuẩn mã hóa tiên tiến Chuẩn mã hóa dữ liệu Mạng thay thế và hoán vị Thay thế byte Chuyển hàng Trộn cột Thêm khóa vòng Mở rộng khóa Đảo thay thế byte Đảo chuyển hàng Đảo trộn cột Đảo thêm khóa vòng Bài thi cuối kỳ môn ANM Danh mục hình ảnh Hình 1. Cấu trúc cơ bản của AES ................................................................................... 9 Hình 2. Kiến trúc mã hóa chung của AES .................................................................... 10 Hình 3. Bảng S-box ...................................................................................................... 11 Hình 4. Ví dụ phép biến đổi SubBytes .......................................................................... 11 Hình 5. Ví dụ phép biến đổi ShiftRow .......................................................................... 12 Hình 6. Ví dụ phép biến đổi MixColumns .................................................................... 13 Hình 7. Ví dụ về AddRoundKey ................................................................................... 13 Hình 8. Mở rộng khóa ................................................................................................... 14 Hình 9. Quá trình giải mã (Inverse Cipher) .................................................................. 16 Hình 10. Ma trận khóa vòng thứ 10 và ma trận dữ liệu đã mã hóa ............................... 16 Hình 11. Chức năng AddRoundKey ............................................................................. 17 Hình 12. Chức năng InvShiftRows ............................................................................... 17 Hình 13. Bảng S-box đảo của chuẩn AES .................................................................... 18 Hình 14. Chức năng InvSubBytes ................................................................................. 18 Hình 15. Ma trận chuyển đổi dùng trong InvMixColumns ........................................... 19 Hình 16. Chức năng InvMixColumns ........................................................................... 22 Hình 17. Mạch nguyên lý nhân một byte A với các phần tử trong ma trận chuyển đổi InvMixColumns............................................................................................................. 23 5 Nhóm 6 5 Bài thi cuối kỳ môn ANM MỞ ĐẦU Với sự phát triển ngày càng mạnh về nhu cầu truyền tin và bảo mật trên Internet hiện nay thì chúng ta rất cần một thuật toán mã hóa đủ mạnh, cực kỳ khó phá để thay thế các thuật toán mã hóa đã cũ và lỗi thời. Hiện nay có rất nhiều thuật toán mã hóa tiên tiến, một trong số đó là thuật toán mã hóa tiên tiến AES. Với những ưu điểm vượt trội của mình thì AES đã và đang được kỳ vọng là thuật toán tiên tiến nhất được đưa vào áp dụng trên toàn cầu trong tương lai gần. Đó chính là lý do chúng em chọn đề tài này làm bài tiểu luận. Mục đích của bài tiểu luận là giúp mọi người có cái nhìn tổng quan nhất về thuật toán mã hóa tiên tiến AES. Qua bài tiểu luận chúng ta có thể hiểu được những vấn đề cơ bản về AES như cấu trúc cơ bản của thuật toán, quá trình mã hóa và giải mã. Phạm vi của bài tiểu luận sẽ xoay quanh những vấn đề cơ bản của thuật toán mã hóa tiên tiến AES. Về cấu trúc của bài tiểu luận, chúng em chia thành 7 phần lớn như sau: I. Giới thiệu chung II. Các tiêu chí đánh giá thuật toán AES III. Cấu trúc cơ bản của thuật toán mã hóa tiên tiến AES IV. Quá trình mã hóa V. Quá trình giải mã VI. Demo thuật toán AES bằng Python. VII. Kết luận Mặc dù đã rất cố gắng nhưng do hạn hẹp về thời gian và kiến thức nên bài làm của chúng em còn những hạn chế và sai sót nhất định. Chúng em rất mong nhận được sự góp ý của cô về chủ đề này giúp bài làm của chúng em hoàn thiện hơn. Qua đây chúng em cũng chân thành cảm ơn tới TS. Phạm Anh Thư, người đã giúp đỡ chúng em rất nhiều trong việc hoàn thành môn học này. 6 Nhóm 6 6 Bài thi cuối kỳ môn ANM I. Giới thiệu chung 1.1 Giới thiệu Mật mã là một trong những kỹ thuật quan trọng và phổ biến nhất để bảo mật dữ liệu khỏi những kẻ tấn công bằng cách sử dụng hai quy trình quan trọng đó là Mã hóa và Giải mã. Mã hóa là quá trình mã hóa dữ liệu để ngăn chặn những kẻ xâm nhập có thể đọc dữ liệu gốc một cách dễ dàng. Giai đoạn này có khả năng chuyển đổi dữ liệu gốc (Plaintext) sang bản mã (Cipher text). Quá trình tiếp theo phải được thực hiện bởi người có thẩm quyền là Giải mã. Giải mã trái với mã hóa. Đây là quá trình chuyển đổi văn bản mật mã thành bản gốc mà không bỏ sót bất kỳ từ nào. Để thực hiện các quy trình này, mật mã dựa vào các phép tính toán học cùng với một số thay thế và hoán vị có hoặc không có khóa. Ngày nay, có một số thuật toán đã có sẵn để mã hóa và giải mã dữ liệu nhạy cảm, thường được chia thành ba loại. Một là mật mã đối xứng: là cùng một khóa được sử dụng để mã hóa và giải mã dữ liệu. Thứ hai là mật mã không đối xứng. Loại mật mã này dựa trên hai khóa khác nhau để mã hóa và giải mã. Cuối cùng, hàm băm mật mã không sử dụng khóa mà thay vào đó nó được trộn dữ liệu. Khóa đối xứng hiệu quả hơn và nhanh hơn nhiều so với Không đối xứng. Một số thuật toán đối xứng phổ biến là AES, S-DES và 3DES. Mục đích chính của bài báo này sẽ cung cấp thông tin chi tiết về thuật toán Tiêu chuẩn mã hóa nâng cao (AES) cho dữ liệu mã hóa và giải mã, sau đó thực hiện so sánh giữa thuật toán AES và DES để đưa ra một số ý tưởng tại sao lại thay thế thuật toán DES thành AES. Sơ lược lịch sử AES AES (Advanced Encryption Standard ) là một trong những thuật toán mật mã khối đối xứng phổ biến và được sử dụng trên toàn thế giới. Thuật toán này có một cấu trúc đặc biệt riêng để mã hóa và giải mã dữ liệu quan trọng và được áp dụng trong phần cứng và phần mềm trên toàn thế giới. Rất khó để tin tặc lấy được dữ liệu thực khi mã hóa bằng thuật toán AES. Cho đến nay không phải là bất kỳ bằng chứng nào để đánh lừa thuật toán này. AES có khả năng xử lý ba kích thước khóa khác nhau như AES 128, 192 và 256 bit và mỗi mật mã này có kích thước khối 128 bit. Bài báo cáo này chúng sẽ đưa ra cái nhìn tổng quan về thuật toán AES và giải thích chi tiết một số tính năng quan trọng của thuật toán này 1.2 Thuật toán AES là một trong những thuật toán mã hóa mật mã khối được Viện Tiêu chuẩn và Công nghệ Quốc gia (NIST) xuất bản vào năm 2000. Mục đích chính của thuật toán này là thay thế thuật toán DES sau khi xuất hiện một số khía cạnh dễ bị tấn công của nó. NIST đã mời các chuyên gia làm việc về mã hóa và bảo mật dữ liệu trên 7 Nhóm 6 7 Bài thi cuối kỳ môn ANM toàn thế giới để giới thiệu một thuật toán mật mã khối cải tiến để mã hóa và giải mã dữ liệu với cấu trúc mạnh mẽ và phức tạp. Sau khi thực hiện các tiêu chí và đánh giá các thông số bảo mật khác nhau, họ đã chọn một trong năm thuật toán mã hóa được đề xuất bởi hai nhà mật mã học người Bỉ Joan Daeman và Vincent Rijmen. Tên ban đầu của thuật toán AES là thuật toán Rijndel. Tuy nhiên, tên này đã không trở thành một tên phổ biến cho thuật toán này thay vào đó nó được công nhận là thuật toán Tiêu chuẩn mã hóa nâng cao (AES) trên khắp thế giới II. Các tiêu chí đánh giá thuật toán AES Ba tiêu chí quan trọng đã được NIST sử dụng để đánh giá các thuật toán được gửi bởi các chuyên gia mật mã. 2.1 Bảo mật Một trong những khía cạnh quan trọng nhất mà NIST đã xem xét để lựa chọn thuật toán đó là bảo mật. Lý do chính đằng sau điều này là rõ ràng vì mục đích chính của AES là cải thiện vấn đề bảo mật của thuật toán DES. AES có khả năng tốt nhất để bảo vệ dữ liệu nhạy cảm khỏi những kẻ tấn công và không cho phép chúng phá dữ liệu mã hóa so với các thuật toán được đề xuất khác. Điều này đạt được bằng cách thực hiện nhiều thử nghiệm trên AES dựa trên lý thuyết và các cuộc tấn công thực tế. 2.2 Chi phí Một tiêu chí khác được NIST nhấn mạnh để đánh giá các thuật toán đó là chi phí. Một lần nữa, các yếu tố đằng sau các biện pháp này cũng rõ ràng do một mục đích chính khác của thuật toán AES là cải thiện hiệu suất thấp của DES. AES là một trong những thuật toán được NIST đề cử vì nó có thể có hiệu quả tính toán cao và có thể được sử dụng trong nhiều ứng dụng, đặc biệt là trong các liên kết băng thông rộng với tốc độ cao. Đặc điểm thực hiện và thuật toán Tiêu chí này rất quan trọng để ước tính các thuật toán nhận được từ các chuyên gia mật mã. Một số khía cạnh quan trọng đã được đo lường trong giai đoạn này là tính linh hoạt, tính đơn giản và tính phù hợp của thuật toán đối với sự đa dạng của việc triển khai phần cứng và phần mềm. 2.3 Cấu trúc cơ bản của thuật toán mã hóa tiên tiến AES AES là một thuật toán mã hóa mới thay thế mật mã DES. Nó dựa trên hai kỹ thuật phổ biến để mã hóa và giải mã dữ liệu là mạng thay thế và hoán vị (Substitution and Permutation Network SPN). SPN là một số phép toán được thực hiện trong các thuật toán mật mã khối. AES có khả năng xử lý 128 bit (16 byte) như kích thước khối bản rõ cố định. 16 byte này được biểu diễn trong ma trận 4x4 và AES hoạt động trên ma trận byte. Ngoài ra, một tính năng quan trọng khác trong AES là số vòng. Số vòng phụ thuộc vào độ dài của khóa. Có ba kích thước khóa khác nhau được sử dụng bởi thuật toán AES để mã hóa và giải mã dữ liệu như (128, 192 hoặc 256 bit). Các kích thước khóa quyết III. 8 Nhóm 6 8 Bài thi cuối kỳ môn ANM định đến số vòng như AES sử dụng 10 vòng cho khóa 128 bit, 12 vòng cho khóa 192 bit và 14 vòng cho khóa 256 bit. Hình 1. Cấu trúc cơ bản của AES IV. Quá trình mã hóa Mã hóa là một kỹ thuật phổ biến đóng vai trò chính để bảo vệ dữ liệu khỏi những kẻ xâm nhập. Thuật toán AES sử dụng một cấu trúc cụ thể để mã hóa dữ liệu nhằm mang lại sự bảo mật tốt nhất. Để làm được điều đó, nó dựa vào số vòng và bên trong mỗi vòng bao gồm bốn quy trình phụ. Mỗi vòng bao gồm bốn bước sau để mã hóa khối 128 bit 9 Nhóm 6 9 Bài thi cuối kỳ môn ANM Hình 2. Kiến trúc mã hóa chung của AES Phép biến đổi SubBytes Bước đầu tiên của mỗi vòng bắt đầu với phép biến đổi SubBytes. Bước này phụ thuộc vào bảng S-box phi tuyến để thay thế một byte trong ma trận trạng thái thành một byte khác. 4.1 10 Nhóm 6 10 Bài thi cuối kỳ môn ANM Hình 3. Bảng S-box Ta có ví dụ sau đây về phép biến đổi SubBytes: Hình 4. Ví dụ phép biến đổi SubBytes Trong ví dụ, ta sẽ thay tham số EA trong ma trận trạng thái bằng số 87 trong bảng S-box. 87 chính là giao điểm của hàng E và cột A trong bảng S-box. 11 Nhóm 6 11 Bài thi cuối kỳ môn ANM Phép biến đổi ShiftRow Bước tiếp theo sau SubByte thực hiện trên ma trận trạng thái là ShiftRow. Trong quá trình này, các byte của hàng số 0 vẫn giữ nguyên và không thực hiện bất kỳ hoán vị nào. Trong hàng đầu tiên, chỉ có một byte được chuyển theo vòng tròn sang trái. Hàng thứ hai được dịch chuyển hai byte sang trái. Hàng cuối cùng được dịch chuyển ba byte sang trái. Kích thước của ma trận trạng thái mới không bị thay đổi mà vẫn giữ nguyên như kích thước ban đầu 16 byte nhưng xáo trộn các byte để tạo các cột khác nhau trước khi sử dụng cột cho thao tác MixColumns. 4.2 . Hình 5. Ví dụ phép biến đổi ShiftRow Phép biến đổi MixColumns Một bước quan trọng khác là MixColumn. Phép biến đổi MixColumns thực hiện biến đổi độc lập từng cột trong ma trận trạng thái bằng một phép nhân đa thức. Mỗi byte của một hàng trong phép biến đổi ma trận nhân với mỗi giá trị (byte) của cột trạng thái. Nói cách khác, mỗi hàng của phép biến đổi ma trận phải nhân với mỗi cột của trạng thái. Kết quả của phép nhân này được sử dụng với XOR để tạo ra bốn byte mới cho trạng thái tiếp theo. Trong bước này, kích thước ma trận trạng thái không bị thay đổi mà vẫn là kích thước ban đầu 4x4 như trong hình sau. 4.3 12 Nhóm 6 12 Bài thi cuối kỳ môn ANM Hình 6. Ví dụ phép biến đổi MixColumns b1 = (b1 * 2) XOR (b2 * 3) XOR (b3 * 1) XOR (b4 * 1) Và cứ tiếp tục như vậy cho đến khi tất cả các cột của ma trận trạng thái kết thúc. Phép biến đổi AddRoundKey Trong thao tác AddRoundKey, 128 bit của ma trận state sẽ được XOR với 128 bit của khóa con của từng vòng. Vì sử dụng phép XOR nên phép biến đổi ngược của AddRoundKey trong cấu trúc giải mã cũng chính là AddRoundKey. Việc kết hợp với khóa bí mật tạo ra tính làm rối (confusion) của mã hóa. Sự phức tạp của thao tác mở rộng khóa (KeySchedule) giúp gia tăng tính làm rối này. 4.4 Hình 7. Ví dụ về AddRoundKey 13 Nhóm 6 13 Bài thi cuối kỳ môn ANM 4.5 Mở rộng khóa (ExpandKey) ExpandKey là thao tác tạo lược đồ khóa hay mở rộng khóa, tạo ra Nr+1 khóa vòng từ khóa chính K, mỗi khóa vòng gồm Nb từ 32 bit, trong đó đối với AES thì Nb = 4, còn Nr được xác định theo. Các phép biến đổi để tạo khóa vòng trong ExpandKey là khác nhau đối với các giá trị khác nhau của kích thước khóa K. Sau đây là việc mở rộng khóa đối với khóa mã 128 bit. Hình 8. Mở rộng khóa Trong thao tác mở rộng khóa với khóa mã 128 bit có đầu vào là 16 byte (4 word) của khóa mã, và sinh ra một mảng khóa vòng (Nr+1)x4=44 từ (word) hay 176 byte. 44 word này được sử dụng cho 11 vòng mã hóa của AES, mỗi vòng dùng 4 word. Từ bốn word đầu vào w0w1w2w3, trong lần lặp đầu tiên thao tác ExpandKey sinh ra bốn word w4w5w6w7, lần lặp thứ 2 từ w4w5w6w7 sinh ra w8w9w10w11 , cứ như thế cho đến lần lặp thứ 10 (tùy thuộc chiều dài khóa) sinh ra bốn word cuối cùng w40w41w42w43 như hình vẽ. Mục đích của ExpandKey: dùng để chống lại known-plaintext attack  Biết một số bit của khóa hay khóa con cũng không thể tính các bit còn lại.  Không thể tính ngược: biết một khóa con cũng không thể tính lại các khóa con trước đó.  Tính khuếch tán: một bit của khóa chính tác động lên tất cả các bit của các khóa con. 14 Nhóm 6 14 Bài thi cuối kỳ môn ANM V. Quá trình giải mã 5.1 Tổng quan về giải mã AES-128 Mã hóa chuyển một "bản rõ" (plaintext) thành một "bản mã" (ciphertext) thông qua một khóa mã (key) giúp che dấu thông tin gốc ban đầu. Giải mã là quá trình nghịch đảo (Inverse cipher) của quá trình mã hóa. Nó giúp khôi phục lại bản rõ từ một bản mã. Trong quá trình giải mã, ma trận ciphertext sẽ bị biến đổi bởi các chức năng AddRoundKey, InvSubBytes, InvShiftRows hoặc InvMixColumns để tạo ra các dữ liệu trung gian gọi là ma trận trạng thái. Ma trận khóa mã sẽ bị biến đổi bởi chức năng KeyExpansion như trong quá trình mã hóa. Tuy nhiên, thứ tự sử dụng các khóa vòng trong quá trình giải mã ngược với quá trình mã hóa, nghĩa là khóa vòng số 10 sẽ được sử dụng đầu tiên. Tiếp theo đó là khóa vòng số 9, số 8, ..., cuối cùng là khóa mã gốc. Quá trình giải mã được thực hiện qua 5 chức năng cơ bản là AddRoundKey, InvSubBytes, InvShiftRows, InvMixColumns và InvKeyExpansion. Chú ý, InvKeyExpansion không phải là một chức năng được mô tả trong chuẩn mà là một tên gọi được tác giả thêm vào để chỉ quá trình biến đổi ngược giá trị khóa vòng từ khóa vòng số 10 đến khóa mã gốc.  Bước 1. Bước khởi tạo: Dữ liệu cần được mã hóa cipher_text[127:0] kết hợp với khóa vòng thứ 10, round_key_10[127:0], bằng chức năng AddRoundKey  Bước 2. Bước lặp giải mã: kết quả bước 1 được sử dụng để thực hiện tuần tự các chức năng InvShiftRows, InvSubBytes, AddRoundKey và InvMixColumns. Bước này được lặp lại 9 lần. Chú ý, InvKeyExpansion thực hiện song song với bước AddRoundKey để tạo khóa vòng cho chức năng này.  Bước 3. Bước tạo ngõ ra: Sau 9 lần lặp ở bước 2, kết quả được sử dụng để thực hiện tuần tự các chức năng InvShiftRows, InvSubBytes và AddRoundKey với khóa mã ban đầu để khôi phục lại plain_text[127:0]. 15 Nhóm 6 15 Bài thi cuối kỳ môn ANM Hình 9. Quá trình giải mã (Inverse Cipher) Quá trình giải mã AES-128 sẽ được giải thích trên một ví dụ cụ thể. Giả sử chuỗi dữ liệu cần mã hóa cipher_text[127:0] và khóa vòng cuối cùng lấy từ quá trình mã hóa round_key_10[127:0] có giá trị như sau:  cipher_text[127:0] = 69 c4 e0 d8 6a 7b 04 30 d8 cd b7 80 70 b4 c5 5a  round_key_10[127:0] = 13 11 1d 7f e3 94 4a 17 f3 07 a7 8b 4d 2b 30 c5 Dữ liệu và khóa mã được sắp xếp dưới dạng ma trận với mỗi phần tử là một byte. Hình 10. Ma trận khóa vòng thứ 10 và ma trận dữ liệu đã mã hóa Giá trị dùng làm ví dụ lấy từ phần "INVERSE CIPHER (DECRYPT)" của phụ lục "C.1 AES-128 (Nk=4, Nr=10)" của tài liệu mô tả chuẩn mã hóa. 16 Nhóm 6 16 Bài thi cuối kỳ môn ANM Chức năng AddRoundKey đảo Chức năng AddRoundKey đảo trong quá trình giải mã cũng chính là chức năng AddRoundKey trong quá trình mã hóa nên gọi chung là AddRoundKey. 5.2 Hình 11. Chức năng AddRoundKey Chức năng InvShiftRows InvShiftRows là đảo của chức năng ShiftRows. InvShiftRows thực hiện quay phải từng hàng của ma trận trạng thái, sinh ra từ bước trước đó, theo byte với hệ số quay tăng dần từ 0 đến 3. Hàng đầu tiên có hệ số quay là 0 thì các byte được giữ nguyên vị trí. Hàng thứ hai có hệ số quay là 1 thì các được quay một byte. Hàng thứ ba quay hai byte và hàng thứ tư quay ba byte. 5.3 Hình 12. Chức năng InvShiftRows 17 Nhóm 6 17 Bài thi cuối kỳ môn ANM Chức năng InvSubBytes Chức năng InvSubBytes là thực hiện thay thế từng byte của ma trận trạng thái, bằng một giá trị đã quy định trong chuẩn AES. Bảng quy định giá trị thay thế cho InvSubBytes gọi là S-box đảo (Inverse S-box). 5.4 Hình 13. Bảng S-box đảo của chuẩn AES Hình 14. Chức năng InvSubBytes 18 Nhóm 6 18 Bài thi cuối kỳ môn ANM Chức năng InvMixColumns InvMixColumns của quá trình giả mã là đảo của MixColumns trong quá trình mã hóa. Từng cột của ma trận trạng thái sẽ được nhân với ma trận chuyển đổi sau đây. 5.5. Hình 15. Ma trận chuyển đổi dùng trong InvMixColumns Việc biến đổi một cột của ma trận trạng thái được thực hiện bởi hai phép toán là nhân (.) và XOR (+). Nguyên tắc tính toán InvMixColumns là biến đổi phép nhân với một số thành phép nhân với H02 và H01. Phép nhân với H01 thì giữ nguyên giá trị. Phép nhân với H02 tương đương với việc dịch trái một bit và XOR có điều kiện như sau: Nếu bit MSB của giá trị được dịch bằng 1 thì giá trị sau khi dịch được XOR với H1b  Nếu bit MSB của giá trị được dịch bằng 0 thì giữ giá trị sau khi dịch. Như vậy, việc biến đổi về phép nhân với H01 và H02 sẽ giúp dễ dàng thiết kế mạch logic thực hiện chức năng InvMixColumns với tài nguyên được tối ưu hóa. Thiết kế và RTL code sẽ được phân tích trong những bài sau. Tuy nhiên, các bạn cần hiểu cách tính InvMixColumns sẽ được trình bày sau đây:  Phép nhân một byte A với H0e = B00001110 sẽ tương đương như sau: A.H0e = A.H08 + A.H04 + A.H02 Trong đó, phép nhân với H04 và H08 hoàn toàn có thể chuyển về phép nhân với H02. A.H04 = A.H02.H02 A.H08 = A.H02.H02.H02 Như vậy: 19 Nhóm 6 19 Bài thi cuối kỳ môn ANM A.H0e = A.H02.H02.H02 + A.H02.H02 + A.H02 Phép nhân một byte A với H0b=B00001011 sẽ tương đương như sau: A.H0e = A.H08 + A.H02 + A.H01 = A.H02.H02.H02 + A.H02 + A.H01 Phép nhân một byte A với H0d=B00001101 sẽ tương đương như sau: A.H0e = A.H08 + A.H04 + A.H01 = A.H02.H02.H02 + A.H02.H02 + A.H01 Phép nhân một byte A với H09=B00001001 sẽ tương đương như sau: A.H0e = A.H08 + A.H01 = A.H02.H02.H02 + A.H01 Biểu thức sau là biến đổi của phần tử H54, H là ký hiệu của số Hex, ở cột 1 trong bảng minh họa "chức năng InvMixColumns". H54 = He9.H0e + Hf7.H0b + H4e.H0d + Hec.H09 STT Phép tính 1 He9.H0e = He9.H08 + He9.H04 +He9.H02 = Hc9+H H89+H09 = H49           2 Hf7.H0b 20 Nhóm 6 20 Giải thích chi tiết He9.H02 = Hc9 (B11001001) He9 (B11101001) dịch trái 1 bit: B11010010 Vì bit MSB(trước khi dịch) là 1 nên kết quả dịch trái được XOR với H1b (B00011011): B11001001 He9.H04 = He9.H02.H02 = H89 (B10001001) Kết quả He9.H02 được dùng để dịch trái 1 bit: B10010010 Vì bit MSB là 1 nên kết quả dịch trái được XOR với H1b (B00011011): B10001001 He9.H08 = He9.H04.H02 = H09 (B00001001) Kết quả He9.H04 được dùng để dịch trái 1 bit: B00010010 Vì bit MSB là 0 nên kết quả dịch trái là kết quả cuối cùng. Kết quả phép nhân He9.H0e là XOR 3 giá trị: Hc9 (B11001001) H89 (B10001001) H09 (B00001001) H49 (B01001001 ) Hf7.H01 = Hf7 (B11110111)
- Xem thêm -

Tài liệu liên quan