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)

19/10/2019

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

15/09/2020

[Phân tích chuyên sâu] Vấn đề bảo mật của doanh nghiệp khi sử dụng Cloud

Việc ứng dụng công nghệ đám mây đã trở thành chiến lược chung của rất nhiều tổ chức trên tất cả các lĩnh vực trên con đường hướng tới chuyển đổi kỹ thuật số. Khi sử dụng Cloud, các doanh nghiệp có thể tối đa hóa rất nhiều quy trình làm việc phức tạp và giúp năng suất được cải thiện đáng kể, nhưng vấn đề bảo mật vẫn còn khiến nhiều tổ chức phân vân, chưa biết giải quyết.

15/09/2020

Vì sao ngày càng nhiều khách hàng tin dùng dịch vụ VPS Việt Nam?

Một điều cần công nhận là dịch vụ VPS ở nước ta đang được đầu tư và phát triển mạnh mẽ hơn. Điều đó giúp dịch vụ VPS trong nước không hề kém cạnh khi đem đi so với các đối thủ quốc tế. Nhờ vào nhiều điểm vượt trội, dịch vụ VPS Việt Nam còn đang được ngày càng nhiều khách hàng lựa chọn sử dụng hơn.

14/09/2020

Thời điểm nào doanh nghiệp nên thuê Cloud Server?

Quyết định khi nào nên thuê Cloud Server thường không dễ dàng đối với một số tổ chức công ty, nhất là những doanh nghiệp nhỏ và vừa đang trong giai đoạn chuyển đổi công nghệ số.

13/09/2020

Tổng quan so sánh VPS Việt Nam và VPS nước ngoài

​Sự tồn tại giữa VPS Việt Nam và VPS nước ngoài ít nhiều sẽ gây khó khăn cho khách hàng sử dụng VPS lựa chọn ra đâu là nhà cung cấp họ cần. Tuy nhiên, mỗi loại sẽ những ưu và nhược điểm nhất định, và khách hàng có thể thông qua những điểm đó để sự lựa chọn trở nên dễ dàng hơn.

12/09/2020

Các tiêu chí để lựa chọn máy chủ giá rẻ có chất lượng tốt

​Hiện nay, máy chủ giá rẻ được quảng cáo rất nhiều trên thị trường, nhưng để chọn ra được một máy chủ giá rẻ có chất lượng tốt phù hợp nhu cầu của doanh nghiệp thì không hẳn ai cũng biết. Dưới đây là các tiêu chí để khách hàng dễ dàng lựa chọn cho mình một sản phẩm tốt mà giá cả cực kỳ phải chăng.

12/09/2020

Hiểu đúng về máy chủ, trường hợp nào bạn nên sử dụng loại máy chủ nào để đạt hiệu quả tối ưu

Máy chủ hay còn gọi là Server, là một máy tính được kết nối mạng, có cấu hình cao và khả năng xử lý vượt trội. Người ta đa phần sử dụng server cho các mục đích về kinh doanh cũng như để vận hành các hệ thống lớn. Trong bài này Viettel IDC sẽ cùng các bạn đi sâu hơn vào việc sử dụng máy chủ như thế nào cho hiệu quả nhé.

12/09/2020

VPS là gì? Năm 2020 là thời điểm VPS thoái vị, Cloud VPS lên ngôi

VPS là một trong nhiều hình thức cung cấp không gian lưu trữ trên Internet dành cho cá nhân hoặc tổ chức. Tuy nhiên, liệu rằng các bạn ở đây khi sử dụng đã thực sự hiểu được bản chất của VPS là gì hay chưa? Nếu chưa thì cũng đừng quá lo, bài viết này Viettel IDC sẽ cùng các ban làm rõ khái niệm VPS là gì và trường hợp nào thì nên sử dụng VPS nhé.

11/09/2020

Dịch vụ cho thuê VPS là gì? Có những loại hình dịch vụ cho thuê VPS nào?

Dịch vụ cho thuê VPS có thể còn khá mơ hồ đối với những khách hàng đang bắt đầu tìm hiểu về VPS. Khi nhắc về nó, có nhiều từ ngữ mới mang tính chuyên ngành mới khá khó hiểu.Vậy thực sự bản chất của dịch vụ này là gì? Hãy cùng Viettel IDC tìm hiểu hôm nay nhé!

10/09/2020

Sử dụng Free Hosting cho Website của bạn, hại nhiều hơn lợi

Dịch vụ Free Hosting hiện nay đang được khá nhiều các nhà cung cấp dịch vụ Hosting sử dụng như một cách để quảng bá và PR thương hiệu. Tuy nhiên việc sử dụng những dịch vụ Free Hosting này đôi khi hại nhiều hơn lợi.

10/09/2020

[Bạn có biết?] Cloud Server và những tính năng vượt trội của Cloud Server

Chuyên mục "Bạn có biết?" tháng 9/2020 của Viettel IDC lần này sẽ cung cấp cho các bạn những kiến thức cơ bản về "Cloud Server và những tính năng vượt trội của Cloud Server", cùng đón đọc nhé!