Tiêu chuẩn mã hóa dữ liệu AES là gì và các chế độ hoạt động của AES phần 1
27/06/2018Dịch vụ sao lưu dữ liệu trực tuyến Cloud Backup hiện mã hóa dữ liệu theo các tiêu chuẩn mã hóa mới nhất, đảm bảo sao lưu dữ liệu an toàn.
Tiêu chuẩn Advanced Encryption Standard (AES) - Tiêu chuẩn mã hóa tiên tiến là một thuật toán tiêu chuẩn của chính phủ Hoa Kỳ nhằm mã hóa và giải mã dữ liệu do Viện Tiêu chuẩn và Công nghệ quốc gia Hoa Kỳ (National Institute Standards and Technology– NIST) phát hành ngày 26/11/2001 và được đặc tả trong Tiêu chuẩn Xử lý thông tin Liên bang 197 (Federal Information Processing Standard – FIPS 197) sau quá trình kéo dài 5 năm trình phê duyệt, AES tuân theo mục 5131 trong Luật Cải cách quản lý công nghệ thông tin năm 1996 và Luật An toàn máy tính năm 1997.
AES là một thuật toán “mã hóa khối” (block cipher) ban đầu được tạo ra bởi hai nhà mật mã học người Bỉ là Joan Daemen và Vincent Rijmen. Kể từ khi được công bố là một tiêu chuẩn, AES trở thành một trong những thuật toán mã hóa phổ biến nhất sử dụng khóa mã đối xứng để mã hóa và giải mã (một số được giữ bí mật dùng cho quy trình mở rộng khóa nhằm tạo ra một tập các khóa vòng). Ở Việt Nam, thuật toán AES đã được công bố thành tiêu chuẩn quốc gia TCVN 7816:2007 năm 2007 về Thuật toán mã hóa dữ liệu AES.
Đặc điểm kỹ thuật
AES là một thuật toán mã hóa khối đối xứng với độ dài khóa là 128 bít (một chữ số nhị phân có giá trị 0 hoặc 1), 192 bít và 256 bít tương ứng dọi là AES-128, AES-192 và AES-256. AES-128 sử dụng 10 vòng (round), AES-192 sử dụng 12 vòng và AES-256 sử dụng 14 vòng.
Vòng lặp chính của AES thực hiện các hàm sau: SubBytes(), ShiftRows(), MixColumns() và AddRoundKey(). Ba hàm đầu của một vòng AES được thiết kế để ngăn chặn phân tích mã bằng phương thức “mập mờ“ (confusion) và phương thức “khuếch tán“ (diffusion), còn hàm thứ tư mới thực sự được thiết kế để mã hóa dữ liệu. Trong đó “khuếch tán“ có nghĩa là các kiểu mẫu trong bản rõ (Dữ liệu đầu vào của phép mã hóa hoặc dữ liệu đầu ra của phép giải mã) được phân tán trong các bản mã (Dữ liệu đầu ra của phép mã hóa hoặc dữ liệu đầu vào của phép giải mã), “mập mờ“ nghĩa là mối quan hệ giữa bản rõ và bản mã bị che khuất. Một cách đơn giản hơn để xem thứ tự hàm AES là: Trộn từng byte (SubBytes), trộn từng hàng (ShiftRows), trộn từng cột (MixColumns) và mã hóa (AddRoundKey).
Đặc tả thuật toán AES
Đối với thuật toán AES, độ dài của khối đầu vào, khối đầu ra và trạng thái là 128 bít, số các cột (các từ có độ dài 32 bít) tạo nên trạng thái là Nb = 4.
Trong thuật toán AES, độ dài khóa mã K có thể là 128, 192 hay 256 bít. Độ dài khóa được biểu diễn bằng Nk = 4, 6 hoặc 8 thể hiện số lượng các từ 32 bít (số cột) của khóa mã.
Đối với thuật toán AES, số vòng được thay đổi trong quá trình thực hiện thuật toán phụ thuộc vào kích cỡ khóa. Số vòng này được ký hiệu là Nr. Nr = 10 khi Nk = 4, Nr = 12 khi Nk = 6 và Nr = 14 khi Nk = 8.
Các tổ hợp khóa-khối-vòng phù hợp đối với tiêu chuẩn này thể hiện trong Bảng 1. Việc thực hiện cụ thể thuật toán có liên quan đến độ dài khóa, kích cỡ khối và số vòng.
Bảng 1: Tổ hợp Khóa-khối-vòng
|
Độ dài khóa(Nk từ) |
Độ dài khối (Nb từ)
|
Số vòng (Nr)
|
AES-128 |
4 |
4 |
10 |
AES-196 |
6 |
4 |
12 |
AES-256 |
8 |
4 |
14 |
Đối với phép mã hóa và phép giải mã, thuật toán AES sử dụng một hàm vòng gồm bốn phép biến đổi byte như sau: phép thay thế byte (một nhóm gồm 8 bít) sử dụng một bảng thay thế (Hộp-S), phép dịch chuyển hàng của mảng trạng thái theo các offset (số lượng byte) khác nhau, phép trộn dữ liệu trong mỗi cột của mảng trạng thái, phép cộng khóa vòng và trạng thái. Các phép biến đổi này (cũng như các phép nghịch đảo tương ứng của chúng) được mô tả trong phần dưới đây.
Phép mã hóa
Tại thời điểm bắt đầu phép mã hóa, đầu vào được sao chép vào mảng trạng thái sử dụng các quy ước. Sau phép cộng khóa vòng khởi đầu, mảng trạng thái được biến đổi bẳng cách thực hiện một hàm vòng liên tiếp với số vòng lặp là 10, 12 hoặc 14 (tương ứng với độ dài khóa), vòng cuối cùng khác biệt không đáng kể với Nr-1 vòng đầu tiên. Trạng thái cuối cùng được chuyển thành đầu ra. Hàm vòng được tham số hóa bằng cách sử dụng một lược đồ khóa – mảng một chiều chứa các từ 4 byte nhận từ phép mở rộng khóa.
Phép biến đổi cụ thể gồm SubBytes(), ShiftRows(), MixColumns() và AddRoundKey() dùng để xử lý trạng thái.
SubBytes()
Phép biến đổi dùng trong phép mã hóa áp dụng lên trạng thái (kết quả mã hóa trung gian, được mô tả dưới dạng một mảng chữ nhật của các byte) sử dụng một bảng thay thế byte phi tuyến (Hộp S – bảng thay thế phi tuyến, được sử dụng trong một số phép thay thế byte và trong quy trình mở rộng khóa, nhằm thực hiện một phép thay thế 1-1 đối với giá trị mỗi byte) trên mỗi byte trạng thái một cách độc lập.
ShiftRows()
Phép biến đổi dùng trong phép mã hóa áp dụng lên trạng thái bằng cách chuyển dịch vòng ba hàng cuối của trạng thái theo số lượng byte các offset khác nhau.
MixColumns()
Phép biến đổi trong phép mã hóa thực hiện bằng cách lấy tất cả các cột trạng thái trộn với dữ liệu của chúng (một cách độc lập nhau) để tạo ra các cột mới.
AddRoundKey()
Phép biến đổi trong phép mã hóa và phép giải mã. Trong đó, một khóa vòng (các giá trị sinh ra từ khóa mã bằng quy trình mở rộng khóa) được cộng thêm vào trạng thái bằng phép toán XOR (phép toán hoặc và loại trừ). Độ dài của khóa vòng bằng độ dài của trạng thái.
Mở rộng khóa
Thuật toán AES nhận vào một khóa mã K và thực hiện phép mở rộng khóa để tạo ra một lược đồ khóa. Phép mở rộng khóa tạo ra tổng số Nb(Nr+1) từ. Thuật toán yêu cầu một tập khởi tạo gồm Nb từ và mỗi trong số Nr vòng đòi hỏi Nb từ làm dữ liệu khóa đầu vào. Lược đồ khóa kết quả là một mảng tuyến tính các từ 4 byte.
Phép giải mã
Các phép biến đổi trong phép mã hóa có thể được đảo ngược và sau đó thực hiện theo chiều ngược lại nhằm tạo ra phép giải mã trực tiếp của thuật toán AES. Các phép biến đổi sử dụng trong phép giải mã gồm: InvShiftRows(), InvSubBytes(), InvMixColumns() và AddRoundKey().
InvSubBytes()
Phép biến đổi InvSubBytes() là nghịch đảo của phép thay thế theo byte SubBytes(), trong đó sử dụng một hộp-S nghịch đảo áp dụng cho mỗi byte của trạng thái.
InvShiftRows()
Phép biến đổi InvShiftRows() là phép biến đổi ngược của ShiftRows(). Các byte trong ba từ cuối của trạng thái được dịch vòng theo số byte khác nhau. Ở hàng đầu tiên (r=0) không thực hiện phép chuyển dịch, ba hàng dưới cùng được dịch vòng Nb-shift(r,Nb) byte.
InvMixColumns()
Phép biến đổi InvMixColumns() là phép biến đổi ngược của MixColumns(). Nó thao tác theo từng cột của trạng thái, xem mỗi cột như một đa thức bốn hạng tử.
Biến đổi nghịch AddRoundKey()
Phép biến đổi AddRoundKey() là phép biến đổi thuận nghịch vì nó chỉ áp dụng một phép toán XOR nên nó được thực hiện như nhau ở cả phép mã hóa và phép giải mã.
Ngoài các phép giải mã trên, thuật toán AES còn cho phép thực hiện một phép giải mã tương đương có cùng thứ tự các phép biến đổi như trong phép mã hóa (các biến đổi được thay bằng các phép biến đổi ngược). Có thể thực hiện được điều này là nhờ một thay đổi trong lược đồ khóa. Hai tính chất tạo nên một phép giải mã tương đương là: Tính giao hoán giữa hai phép biến đổi SubBytes() và ShiftRows() (tính chất này cũng đúng với phép nghịch đảo InvSubBytes() và InvShiftRows()), Các phép toán trộn cột MixColumns() và InvMixColumns() là tuyến tính đối với đầu vào cột. Các tính chất này cho phép đảo ngược thứ tự của các phép biến đổi InvSubBytes() và InvShiftRows(). Thứ tự của các phép biến đổi AddRoundKey() và InvMixColumns() cũng có thể đảo ngược với điều kiện đảm bảo rằng các cột của lược đồ khóa giải mã được chỉnh sửa bằng cách sử dụng phép biến đổi InvMixColumns().
Vấn đề thực hiện khóa
Yêu cầu về độ dài khóa
Việc thực hiện khóa của thuật toán AES sẽ hỗ trợ ít nhất một trong ba độ dài khóa là 128 bít, 192 bít và 256 bít. Việc thực hiện khóa có thể tùy chọn hỗ trợ hai hoặc ba độ dài khóa, nhằm tăng thêm tính tương tác cho các thực hiện thuật toán.
Tham số hóa độ dài khóa, kích thước khối và số vòng
AES quy định cụ thể các giá trị được phép dùng cho chiều dài khóa, kích thước khối và số vòng. Tuy nhiên, các giá trị này có thể thay đổi trong tương lai. Do đó, những nhà triển khai thuật toán AES có thể lựa chọn thiết kế linh hoạt với mong muốn của họ.
Ứng dụng
Thuật toán AES cho phép thực hiện hiệu quả bằng cả phần mềm và phần cứng. Thông thường với những ứng dụng không yêu cầu cao về hiệu năng và tốc độ thì AES được thực hiện ở dạng phần mềm. Với việc thực hiện trên phần mềm, thuật toán AES có thể được viết bằng nhiều ngôn ngữ lập trình như Assembler, C/C++, Visual Basic, Java, C#... và có thể vận hành trên nhiều hệ điều hành như Windows, Linux/Unix, Solaris.... Khi thực hiện trên phần cứng, thuật toán AES hỗ trợ thực hiện hai dòng: dòng thiết bị thứ nhất dựa vào một hệ vi xử lý phụ kết hợp với hệ vi xử lý chính của máy tính, dòng thiết bị thứ hai thường được thiết kế ở dạng thẻ thông minh (smart card) hoặc các thiết bị cắm qua cổng USB (Universal Serial Bus). Trong Thông tư số 01/2011/TT-BTTTT ngày 04/01/2011 của Bộ Thông tin và Truyền thông Công bố Danh mục tiêu chuẩn kỹ thuật về ứng dụng công nghệ thông tin trong cơ quan nhà nước quy định Khuyến nghị áp dụng tiêu chuẩn AESvà được xếp vào nhóm Tiêu chuẩn về an toàn thông tin.
Đặng Thị Thu Hương, Cục Tin học hóa
Dịch vụ sao lưu dữ liệu trực tuyến Cloud Backup của Viettel IDC mã hóa dữ liệu bằng các chuẩn mã hóa như (AES 256, DES 64, RC2 128, 3DES 168) đảm bảo an toàn bảo mật thông tin.
Tìm hiểu thêm về dịch vụ sao lưu dữ liệu Cloud Backup TẠI ĐÂY
Hoặc gọi: 1800 8088 để được tư vấn.
Tin liên quan
Viettel IDC đáp ứng Nghị định 13/2023/NĐ-CP về Bảo vệ dữ liệu cá nhân
Với gần 78 triệu người sử dụng internet (chiếm hơn 79% dân số), Việt Nam hiện đang xếp thứ 12 trên thế giới về số lượng người sử dụng internet. Đi cùng sự phát triển mạnh mẽ của công nghệ và hạ tầng không gian mạng, việc bảo vệ dữ liệu cá nhân đang ngày càng trở nên đặc biệt quan trọng.
Quản lý quy trình đa chiều an toàn, hiệu quả cùng Viettel CyberWork
Trong xu hướng chuyển đối số hiện nay, quản lý quy trình đóng vai trò quan trọng giúp doanh nghiệp tăng năng suất làm việc của nhân viên. Với sự gia tăng mạnh mẽ của số lượng dữ liệu và thông tin, việc duy trì quy trình truyền thống, thủ công không còn đủ để đảm bảo tính thích nghi linh hoạt.
Viettel IDC đồng hành cùng Viettel Telecom xây dựng giải pháp hệ thống mail server trên AWS
Để đáp ứng về mặt hạ tầng cho các dịch vụ, Viettel Telecom đã tin tưởng triển khai giải pháp do Viettel IDC xây dựng, sử dụng Amazon Simple Email Service – Amazon (SES) tích hợp với hệ thống mail server và hệ thống phần mềm hiện tại của Viettel Telecom để gửi email tới khách hàng đầu cuối một cách nhanh chóng, chính xác và hiệu quả.
Dịch vụ cho thuê chỗ đặt thiết bị chuyên nghiệp cùng Viettel Colocation
Giải pháp thuê chỗ đặt thiết bị chuyên nghiệp là sự lựa chọn thông minh, mang tính tối ưu cho các doanh nghiệp và tổ chức cần không gian vật lý để triển khai, quản lý máy chủ hệ thống công nghệ thông tin.
Dịch vụ cho thuê máy chủ vật lý server chất lượng giá hợp lý - Viettel Server Leasing
Hiện nay, nhiều doanh nghiệp, cá nhân vẫn có nhu cầu sử dụng các hệ thống server vật lý riêng đáp đáp ứng các nhu cầu đặc thù, trong khi lại không có bộ máy để triển khai hoặc quản trị các hệ thống server vật lý này hoặc chi phí đầu tư, quản trị hệ thống cao, nhiều rủi ro phát sinh.
Lưu trữ đám mây là gì? Ưu điểm và lợi ích khi ứng dụng
Một thực tế không thể phủ nhận là dù bạn có quen thuộc với các thuật ngữ như "Cloud Storage", "Lưu trữ đám mây", hay "Điện toán đám mây" hay không thì hàng ngày, khi tiếp xúc với công nghệ, chúng ta đều đã có sự tương tác liên tục với các nền tảng này.
Viettel Drive - Giải pháp lưu trữ dữ liệu trực tuyến tốt nhất năm 2023
Việc lựa chọn giải pháp lưu trữ dữ liệu trực tuyến đòi hỏi sự cân nhắc kỹ lưỡng về yếu tố kỹ thuật, tài chính và phù hợp với mục tiêu kinh doanh. Sự đa dạng của các nhà cung cấp và dịch vụ lớn nhỏ có thể gây nhầm lẫn, khiến người dùng phải đối mặt với vô số lựa chọn phức tạp.
Viettel CyberWork - Phần mềm giao việc tốt nhất cho doanh nghiệp 2023
Để đảm bảo hiệu quả tổ chức tối đa, phần mềm giao việc và quản lý hồ sơ dự án Viettel CyberWork đã được ra đời và phát triển mạnh mẽ như những "người bạn đồng hành" đáng tin cậy của các doanh nghiệp và cá nhân.
Dịch vụ điện toán đám mây - Giải pháp cung cấp tài nguyên dùng chung tốt nhất hiện nay
Mặc dù dịch vụ điện toán đám mây là thuật ngữ đã xuất hiện trong vài năm gần đây, song những thông tin về chúng vẫn được nhiều người quan tâm, đặc biệt là các doanh nghiệp đang tìm kiếm một giải pháp quản lý toàn diện.
Quản lý doanh nghiệp trong kỷ nguyên số cùng Viettel CyberWork
Viettel CyberWork được phát triển nhằm cung cấp nền tảng cần thiết, mang đến lộ trình chuyển đổi số tối ưu nhất cho các doanh nghiệp.