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 2)

Tiêu chuẩn quốc gia Kỹ thuật Mật mã - Các thuật toán mã hóa - Thuật toán mã dữ liệu AES do Ban Kỹ thuật tiêu chuẩn TCVN/JTC1/SC 27 “Các kỹ thuật mật mã” biên soạn, Ban cơ yếu Chính phủ đề nghị, Bộ Khoa học và Công nghệ ban hành trong chương trình xây dựng tiêu chuẩn quốc gia năm 2007-2008.

Dị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.

Phạm vi áp dụng: Tiêu chuẩn AES áp dụng cho việc mã hóa dữ liệu trong các hoạt động giao dịch điện tử của các tổ chức, công dân Việt Nam và tổ chức, công dân nước ngoài có quan hệ kinh tế - xã hội với tổ chức, công dân Việt Nam.

Tiêu chuẩn này mô tả về thuật toán Rijndael là mã khối đối xứng xử lý các khối dữ liệu có độ dài 128 bit, sử dụng  khóa mã có độ dài 128, 192 và 256 bit (Thuật toán Rijndael được thiết kế còn để hỗ trợ thêm cho các kích cỡ khối và độ dài khóa khác nhưng chúng không được đưa ra trong tiêu chuẩn này).

Sau đây, thuật toán này sẽ được gọi là “thuật toán AES”. Do thuật toán này có thể được sử dụng với ba độ dài khóa khác nhau như đã đề cập ở trên nên nó cũng được tham chiếu đến bằng ba tên gọi tương ứng là “AES-128”, “AES-192” và “AES-256”.

Tiêu chuẩn mã hóa dữ liệu đầu tiên trên thế giới có tên là Tiêu chuẩn mã dữ liệu DES (Data Encyption Standard) do Cơ quan an ninh Quốc gia Hoa Kỳ (NSA) đề xuất  trên cơ sở cải tiến thuật toán Lucifer do hãng IBM công bố năm 1964. DES đã được sử dụng rộng rãi ở Hoa Kỳ và nhiều quốc gia khác trong các thập kỷ 70, 80, 90 cho đến khi được thay thế bởi Tiêu chuẩn  mới - Tiêu chuẩn mã hóa dữ liệu tiên tiến AES (Advanced Encryption Standard) vào năm 2002. Cần nói thêm rằng, được sự khuyến khích và quan tâm của cộng đồng người dùng, sau khi DES ra đời thì hàng loạt các thuật toán và tiêu chuẩn mã hóa dữ liệu đã được công bố như Thuật toán mã hóa dữ liệu quốc tế IDEA (International Data Encryption Algorithm), SAFER (Secure And Fast Encryption Routine), FEAL, SKIPJACK, RIDOC, LOKI, RC2, RC5,…

Hoạt động xây dựng tiêu chuẩn mật mã nói chung và tiêu chuẩn mã dữ liệu nói riêng rất được coi trọng trên thế giới. Tại Hoa Kỳ, tiêu chuẩn mã dữ liệu DES được công bố vào những năm 70 đã sử dụng trong vòng hơn hai mươi năm. Đến năm 1997 trước nguy cơ bị phá, Viện Tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ (NIST) đã tiến hành việc xây dựng tiêu chuẩn mới. Năm 2001 thì Tiêu chuẩn mã dữ liệu mới được chính thức đưa vào sử dụng và được gọi là Tiêu chuẩn mã dữ liệu tiên tiến AES. Liên Xô cũ công bố tiêu chuẩn mã dữ liệu GOST 28147-89 vào năm 1989, ngày nay tiêu chuẩn này đã được Liên bang Nga kế thừa và được các nước cộng đồng SNG sử dụng. Nhật Bản đã tổ chức xây dựng hệ thống tiêu chuẩn mật mã trong khuôn khổ dự án có tên là Cryptrec được tiến hành trong 4 năm (1999-2003). Hàn Quốc xây dựng chuẩn mã dữ liệu có tên là SEED hiện vẫn được sử dụng. Nhìn chung, hai nước có hoạt động sớm trong lĩnh vực này là Hoa Kỳ và Nga. Phần lớn các nước còn lại tiến hành hoạt động này vào cuối những năm 90 của thế kỷ trước, một số nước khác tiến hành vào những năm gần đây. Tuy vậy, do sự phát triển nhanh chóng  của hoạt động giao dịch điện tử như Chính phủ điện tử, thương mại điện tử, ngân hàng trực tuyến,… nên phần lớn các nước trên thế giới đều rất coi trọng hoạt động xây dựng chuẩn mã dữ liệu.

Tiêu chuẩn quốc gia Việt Nam về Mã hóa dữ liệu đã được đưa vào chương trình xây dựng tiêu chuẩn quốc gia năm 2007 của Bộ Khoa học và công nghệ. Nội dung của Tiêu chuẩn này bao gồm các phần sau:

Thuật toán mã dữ liệu AES được NIST ban hành thành FIPS PUB 197: ADVANCED ENCRYPTION STANDARD - AES (Tiêu chuẩn mã hóa dữ liệu tiên tiến - AES) ngày 26/11/2001 và ISO ban hành trong ISO/IEC 18033-3 Information technology- Security techniques- Encryption algorithms - Part 3: Block ciphers (Công nghệ thông tin - Kỹ thuật an toàn - Thuật toán mã hóa - Phần 3: Các hệ mã khối).

Các chế độ hoạt động của AES

Khi cài đặt thuật toán mã AES người ta thường không sử dụng ở dạng nguyên gốc. AES thường hoạt động ở bốn chế độ cơ bản của mã khối n-bit (ECB, CBC, CFB và OFB) đặc tả bởi tiêu chuẩn ISO/IEC 10116:1997 Information technology– Security techniques – Modes of operation for an n-bit cipher (Công nghệ thông tin- kỹ thuật an toàn- chế độ hoạt động của mã hóa nbit). Trên cơ sở bốn chế độ cơ bản ban đầu này người ta đã phát triển thêm một số chế độ khác (Có thể trong tương lai ISO/IEC sẽ công bố thêm một số chế độ hoạt động khác nữa cho mã khối. Hiện tại ISO/IEC mới quy định bốn chế độ cơ bản nói trên). Sau đây là những nét sơ lược của bốn chế độ này.

Chế độ sách mã điện tử ECB (Electronic Code Book): Trong chế độ ECB các khối rõ được mã hoá độc lập nhau và khối mã được giải mã độc lập: Ci = Ek(Mi); Mi = Dk(Ci), trong đó Ek và Dk là các phép mã hoá và giải mã theo khoá mật K.

Chế độ xích liên kết khối mã CBC (Cipher block Chaining): Trong chế độ này, đầu tiên người ta tạo ra một xâu nhị phân 64 bit được gọi là véc-tơ khởi đầu và thông báo cho nhau. Trong bước đầu tiên khối dữ liệu rõ M1 được cộng với véc-tơ khởi đầu theo phép cộng bit, kết quả nhận được sẽ được biến đổi qua các phép mã hóa để được đầu ra là khối mã C1. Ở các bước sau, mỗi khối Mi của bản rõ được cộng theo modulo 2 với bản mã trước đó Ci-1 và được mã hoá:

Ci = Ek(Mi r Ci-1)
Mi =Dk(Ci) r Ci-1

Chế độ mã liên kết ngược CFB (Cipher Feed Back): Chế độ này này khác với chế độ CBC, tại bước đầu tiên véc-tơ khởi đầu được mã hóa bằng Ek rồi cộng theo modulo 2 với khối rõ. Kết quả thu được lại làm véc-tơ khởi đầu cho bước tiếp theo, rồi lại thực hiện tương tự chế độ CBC:

Ci = Mi r Ek(Ci-1)
Mi =Ci r Dk(Ci-1) 

Chế độ đầu ra liên kết ngược OFB (Output Feedback): Thực chất của chế độ OFB là tạo ra khóa dòng rồi cộng theo modulo 2 với bản rõ. Khóa dòng được tạo như sau: Đầu tiên lấy véc-tơ khởi đầu s0 rồi mã hóa qua phép mã khối Ek được s1. Tiếp đó, s1 lại được mã hóa qua Ek để được s2,.. và cứ thế thực hiện cho đến khi tạo được khóa dòng có độ dài bằng dữ liệu cần mã.

Mỗi chế độ sử dụng mã khối trên đây đều có ưu điểm và nhược điểm riêng. Tùy từng trường hợp cụ thể mà người ta lựa chọn một chế độ sử dụng phù hợp đáp ứng yêu cầu bảo mật đặt ra.

Thực thi thuật toán AES bằng phần mềm:

Thuật toán AES cho phép thực thi 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 hiệu năng và tốc độ cao thì thuật toán thường được thực thi ở dạng phần mềm. Ngược lại, có những thiết bị phần cứng chuyên dụng cho phép thực thi thuật toán AES với tốt độ cao và khả năng vận hành bền vững.



Nếu xét về ngôn ngữ lập trình thì hiện có khá nhiều mã nguồn thực thi thuật toán AES được viết bằng nhiều ngôn ngữ lập trình (Assembler, C/C++, Visual Basic, Java, C#,…) có thể vận hành trên nhiều nền hệ điều hành (Windows, Linux/Unix, Solaris,…) chạy các vi xử lý dòng Intel, AMD,... Việc lựa chọn ngôn ngữ lập trình nào để thể hiện thuật toán AES tùy thuộc vào ý thích và khả năng của người lập trình cũng như mục đích, nền tảng phần cứng cho phép. Chẳng hạn, nếu với mục đích cứng hóa thuật toán thì người lập trình thường chọn các dạng ngôn ngữ ở thấp như hợp ngữ Assembler. Nếu hướng tới việc xây dựng các thư viện mật mã để thực thi trong nhân hệ điều hành hoặc sử dụng bởi ứng dụng khác thì người lập trình lại thường chọn ngôn ngữ C/C++. Nếu thực thi thuật toán trong các ứng dụng đồ họa thì người lập trình lại thường chọn các ngôn ngữ bậc cao như Visual Basic, Visual C++, Java, C#,… Nếu viết để thực thi thuật toán AES trên nền web thì người lập trình thường chọn các ngôn ngữ hướng web như Java, VBScript, JavaScript, C#,… Hiện nay, trên Internet có rất nhiều mã nguồn thực thi thuật toán AES do nhiều tác giả viết bằng nhiều dạng ngôn ngữ lập trình khác nhau. Tuy nhiên, chúng ta được khuyến cáo chỉ nên tham khảo một số mã nguồn thuật toán được cung cấp bởi các tác giả đáng tin cậy. Trước hết, nên tham khảo website hỗ trợ nhiều thông tin về AES cung cấp bởi NIST tại địa chỉ: https://csrc.nist.gov/archive/aes/. Nội dung của website này mô tả rất nhiều vấn đề liên quan đến AES như: đặc tả thuật toán AES, mã nguồn chương trình thực thi, các véc-tơ kiểm tra thuật toán, một số bài báo liên quan đến AES, các bản báo cáo của NIST về quá trình phát triển AES, các chế độ hoạt động của thuật toán mã khối AES, một số công cụ mật mã,…

Mã nguồn tin cậy của thuật toán AES nói riêng và thuật toán Rijndael nói chung được Vincent Rijmen đưa ra trên một website cá nhân tại địa chỉ https://www.iaik.tu-graz.ac.at/research/ krypto/aes/old/~rijmen/rijndael/. Ở website này có thể tải xuống mã nguồn thực thi thuật toán bằng nhiều ngôn ngữ lập trình cũng như một số bài viết và hình ảnh liên quan đến thuật toán Rijndael. 

Brian Gladman - một chuyên gia mật mã làm việc tại Worcester (Anh) đưa ra một số mã nguồn thực thi thuật toán AES được đánh giá cao tại website cá nhân tại địa chỉ https://fp.gladman.plus.com/index.htm. Ngoài mã nguồn thực thi thuật toán, các véc-tơ kiểm tra thuật toán AES cũng được cung cấp ở website trên.

Cộng đồng mã nguồn mở cũng đã xây dựng nên một bộ thư viện các hàm mật mã tương đối đồ sộ tại dự án OpenSSL (www.openssl.org). Bộ thư viện này bao gồm rất nhiều chương trình thực thi các thuật toán mật mã khác nhau trong đó có chương trình thực thi thuật toán AES.

Trên cơ sở mã nguồn chương trình thực thi cung cấp bởi NIST và một số nhà mật mã học nổi tiếng, Học viện Kỹ thuật Mật mã – Ban Cơ yếu Chính phủ đã xây dựng một bộ chương trình thực thi thuật toán AES bằng ngôn ngữ C/C++ theo các chế độ hoạt động của thuật toán mã khối đã nêu ở trên. Ngoài chương trình thực thi thuật toán còn cung cấp thêm các véc-tơ kiểm tra và chương trình thực thi việc kiểm tra thuật toán.

Thực thi thuật toán AES bằng phần cứng

Các thiết bị phần cứng thực thi thuật toán AES được chia làm hai dòng. Dòng thiết bị thứ nhất dựa vào một hệ vi xử lý liên kết với hệ vi xử lý chính của máy tính (co-processor). Thông thường thiết bị thuộc dòng này được thiết kế ở dạng card chuyên dụng kết nối qua giao diện ghép nối với máy tính (ví dụ qua PCI). 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 (USB Devices). Các thiết bị thuộc dòng thứ hai thường có một hệ vi xử lý (CPU) và bộ nhớ (ROM/RAM) riêng để thực thi thuật toán độc lập so với máy tính.

Công nghệ cứng hóa thuật toán hiện cũng tồn tại hai dòng. Dòng công nghệ thứ nhất sử dụng một kỹ thuật chuyên dụng chẳng hạn như ASIC (Application Specific Integrated Circuit). Công nghệ ASIC cho phép thực thi thuật toán nhanh và hiệu quả với năng lượng tiêu tốn rất ít. Tuy nhiên, công nghệ này có một số hạn chế như không cho phép sửa đổi thuật toán sau khi đã tạo thành thiết bị. Dòng công nghệ thứ hai sử dụng một bộ mạch tích hợp chứa hệ vi xử lý cho phép lập trình bằng phần mềm. Với công nghệ này, thuật toán có thể được cấu hình lại theo ý đồ của người lập trình nhưng vẫn cho phép thực thi thuật toán với tốc độ và hiệu quả cao. Điển hình cho dòng công nghệ này là các thiết bị sử dụng công nghệ FPGA (Field Programmable Gate Arrays). Hiện nay, công nghệ FPGA được coi là công nghệ có nhiều ưu điểm và được sử dụng trong hầu hết các thiết bị phần cứng thực thi thuật toán AES. Có thể tham khảo trang https://www.iaik.tu-graz.ac.at/research/krypto/AES/ để có thông tin đầy đủ hơn về các vấn đề thực thi thuật toán AES bằng phần cứng.
Với việc thực thi hiệu quả các thuật toán AES, Tiêu chuẩn quốc gia Việt Nam về Mã hóa dữ liệu sẽ góp phần thúc đẩy ứng dụng các sản phẩm bảo mật thông tin tại Việt Nam và là một công cụ hữu hiệu để đánh giá các sản phẩm mật mã.

TS. Trần Đức Lịch, KS. Hồ Sỹ Tấn, KS. Trần Kim Phượng

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

30/11/2019

Ưu, nhược điểm của dịch vụ VPS là gì? Nhóm khách hàng nào nên sử dụng VPS?

Dịch vụ VPS – Virtual Private Server được tạo thành từ phương pháp phân chia một máy chủ vật lý thành nhiều máy chủ ảo dựa trên công nghệ ảo hóa. Một VPS có vai trò tương đương với đầy đủ các chức năng quản trị và cấu hình như một máy chủ vật lý, nên sẽ có những nhóm đối tượng khách hàng cụ thể nên sử dụng dịch vụ VPS.

29/11/2019

Tại sao doanh nghiệp nên chuyển từ VPS sang thuê Cloud Server để sử dụng?

Bài viết sau sẽ đi sâu vào nghiên cứu lý do tại sao Cloud Server đang trở thành lựa chọn nền tảng tối ưu hơn VPS, qua đó doanh nghiệp sẽ có được cái nhìn bao quát hơn trước khi dịch chuyển lên đám mây.

29/11/2019

Giải đáp các câu hỏi thường gặp của khách hàng khi thuê Cloud Server

Thuê Cloud Server là việc thuê máy chủ ảo được khởi tạo từ một hạ tầng ảo hoá có năng lực xử lý và bảo mật cao. Hạ tầng này gồm nhiều server vật lý liên kết với nhau, mỗi server (hoặc nhóm server) đóng một chức năng riêng biệt: tính toán, lưu trữ, tường lửa, cân bằng tải, dự phòng, sao lưu dữ liệu,…

28/11/2019

5 yếu tố cần lưu ý giúp bạn mua được VPS giá rẻ với chất lượng tốt

Hiện tại, có nhiều giải pháp lưu trữ như hosting, VPS, máy chủ riêng,… Với shared hosting, website sẽ không đảm bảo hiệu suất khi phải chia sẻ tài nguyên máy chủ với người dùng khác. Trong khi đó, sẽ rất tốn kém tài nguyên nếu bạn mua cả một server riêng nhưng không dùng hết. VPS giá rẻ sẽ giúp chúng ta giải quyết vấn đề này.

27/11/2019

Tìm hiểu những điểm khác nhau nổi trội giữa dịch vụ VPS và Cloud Server

Khi bắt đầu vào hành trình tạo ra trang web của riêng mình, bạn sẽ phải đối mặt với rất nhiều lựa chọn và quyết định. Mỗi quyết định và lựa chọn này sẽ tạo ra sự khác biệt trong hiệu suất và thành công của trang web. Khi này có thể bạn sẽ phải băn khoăn nên lựa chọn sử dụng cloud hay virtual private server (VPS) làm nền tảng cho website?

27/11/2019

Những tiêu chí cốt lõi cần phải đánh giá khi thuê Cloud Server

Hiện nay, hầu hết các doanh nghiệp đều nhận thức được những ưu điểm có được từ việc sử dụng Cloud Server máy chủ ảo so với hạ tầng công nghệ thông tin truyền thống. Khi chuyển đổi sang Cloud, doanh nghiệp sẽ hưởng lợi trong việc tiết kiệm chi phí, linh hoạt trong triển khai, thay đổi, đơn giản hóa việc quản lý IT.

26/11/2019

Dịch vụ VPS - Ứng dụng thực tế và cách thức quản trị VPS hiệu quả

Dịch vụ máy chủ ảo VPS là gì, có những ứng dụng thực tế nào và đâu là cách thức quản lý VPS tốt nhất là những thắc mắc thường được đặt ra đối với người mới bắt đầu sử dụng dịch vụ này. Cùng tháo gỡ những khúc mắc trong bài viết này nhé!

26/11/2019

Doanh nghiệp nên ứng dụng dịch vụ VPS vào những mục đích nào?

Dịch vụ VPS là gì và cách sử dụng như thế nào? Mọi thông tin chi tiết về dịch vụ VPS sẽ đều được Viettel IDC hướng dẫn chi tiết cách dùng trong bài viết này. Hãy cùng xem ngay nhé.

25/11/2019

5 lý do chứng minh hiệu quả vượt trội của Cloud VPS so với VPS truyền thống

Không ít khách hàng mặc dù đang sử dụng VPS nhưng đã biết đến Cloud VPS và đang có ý định chuyển từ VPS lên Cloud VPS. Bài viết dưới đây sẽ chỉ ra 5 lý do vì sao Cloud VPS lại tốt hơn VPS truyền thống

23/11/2019

Vì sao sử dụng Cloud VPS của Viettel IDC là lựa chọn đáng tin cậy nhất?

Cloud VPS là một giải pháp lưu trữ web vô cùng tối ưu giúp máy chủ web có thể uptime 99,99% thời gian hoạt động với hệ thống dự phòng đầy đủ và khả năng mở rộng cao.