Tìm hiểu, thực thi thư viện mật mã Google Tink ứng dụng trong ký số văn bản điện tử

Nghiên cứu chuyên sâu về thư viện lập trình Google Tink, khám phá các tính năng bảo mật tiên tiến và tiềm năng ứng dụng trong phát triển phần mềm an toàn.

Chuyên ngành

Công nghệ thông tin

Tác giả

Hà Huy Vương

Người đăng

Ẩn danh

Thể loại

Đồ án tốt nghiệp đại học

2022

59
0
0

Phí lưu trữ

30 Point

Tóm tắt

I. Khám phá Google Tink Thư viện Lập trình Mật mã Hiện đại và Tiềm năng Ứng dụng

Trong bối cảnh kỷ nguyên số bùng nổ, bảo mật thông tin trở thành yếu tố then chốt, quyết định sự thành công và tin cậy của mọi giao dịch trực tuyến cũng như lưu trữ dữ liệu. Các tổ chức và cá nhân ngày càng có nhu cầu cao về việc bảo vệ thông tin cá nhân và doanh nghiệp khỏi các mối đe dọa mạng. Đây là lý do ra đời của thư viện mật mã Google Tink, một giải pháp mạnh mẽ được thiết kế để đơn giản hóa việc triển khai mật mã an toàn. Google Tink không chỉ cung cấp các thuật toán mã hóa tiên tiến mà còn tập trung vào việc dễ sử dụng, giúp các nhà phát triển tích hợp các tính năng bảo mật phức tạp vào ứng dụng một cách hiệu quả, giảm thiểu rủi ro lỗi do con người. Việc nghiên cứu thư viện lập trình Google Tink và ứng dụng của nó không chỉ là một yêu cầu cấp thiết mà còn mở ra những hướng đi mới trong việc xây dựng các hệ thống an toàn thông tin vững chắc. Nó giải quyết những thách thức cố hữu của việc sử dụng mật mã, từ đó thúc đẩy sự phát triển của các ứng dụng bảo mật thế hệ mới, đặc biệt là trong lĩnh vực ký số văn bản điện tử.

1.1. Thư viện mật mã Google Tink Nền tảng bảo mật vững chắc cho kỷ nguyên số

Thư viện mật mã Google Tink là một bộ sưu tập các API mật mã đa ngôn ngữ, mã nguồn mở, được Google phát triển với mục tiêu cung cấp các nguyên hàm mật mã an toàn và dễ sử dụng cho các nhà phát triển. Mục tiêu chính của Google Tink là giúp người dùng không chuyên về mật mã có thể dễ dàng triển khai các hoạt động mã hóa, giải mã, ký số và xác thực một cách chính xác và an toàn. Thay vì yêu cầu người dùng phải hiểu sâu về từng thuật toán phức tạp, Tink tập trung vào các nhiệm vụ mật mã cấp cao (như AEAD, Digital Signatures), giúp giảm thiểu rủi ro mắc lỗi bảo mật khi sử dụng. Nền tảng này hỗ trợ nhiều ngôn ngữ lập trình phổ biến và được thiết kế để linh hoạt, cho phép tích hợp vào nhiều môi trường phát triển khác nhau, từ ứng dụng di động đến hệ thống máy chủ, qua đó tạo nên một giải pháp bảo mật toàn diện.

1.2. Bối cảnh an toàn thông tin và nhu cầu mật mã hóa dữ liệu cấp thiết

Trong bối cảnh Internet ngày càng phổ biến, các giao dịch trực tuyến và trao đổi thông tin số hóa diễn ra liên tục, đặt ra nhu cầu cấp thiết về an toàn thông tin. Việc giới thiệu thông tin trên mạng xã hội, thực hiện các phiên giao dịch, hoặc lưu trữ dữ liệu nhạy cảm đòi hỏi các biện pháp bảo mật mạnh mẽ. Mật mã hóa dữ liệu đóng vai trò trung tâm trong việc bảo vệ tính bảo mật, toàn vẹn và xác thực của thông tin. Tuy nhiên, việc áp dụng mật mã một cách đúng đắn không phải lúc nào cũng dễ dàng, thường đòi hỏi kiến thức chuyên sâu và kinh nghiệm thực tế. Sự phát triển của các mối đe dọa mạng ngày càng tinh vi cũng như các quy định về bảo vệ dữ liệu (như GDPR) đã thúc đẩy sự ra đời của các công cụ như Google Tink, nhằm đáp ứng nhu cầu bảo vệ thông tin trong một thế giới số hóa đầy rủi ro.

II. Tại sao Cần Google Tink Thách thức và Giới hạn của Thư viện Mật mã Truyền Thống

Mặc dù các thư viện mật mã đã tồn tại từ lâu, nhưng chúng thường đặt ra những thách thức đáng kể cho các nhà phát triển, đặc biệt là những người không phải chuyên gia mật mã. Việc lựa chọn thuật toán phù hợp, quản lý khóa an toàn, và triển khai các giao thức mật mã đúng cách là những nhiệm vụ phức tạp, dễ dẫn đến các lỗ hổng bảo mật nghiêm trọng. Các thư viện mật mã truyền thống thường cung cấp các nguyên hàm cấp thấp, đòi hỏi người dùng phải có kiến thức sâu rộng về mật mã để sử dụng chúng một cách an toàn. Điều này tạo ra rào cản lớn, làm chậm quá trình phát triển ứng dụng và tăng nguy cơ vi phạm dữ liệu. Nhu cầu về một giải pháp đơn giản hơn, nhưng vẫn đảm bảo độ an toàn cao, trở nên cấp bách, và Google Tink ra đời để giải quyết chính những vấn đề này, cung cấp một cách tiếp cận mới để bảo mật thông tin hiệu quả.

2.1. Hạn chế của thư viện mật mã phổ biến và nguy cơ lỗ hổng bảo mật

Các thư viện mật mã phổ biến như OpenSSL, Crypto++, hoặc Bouncy Castle, mặc dù mạnh mẽ, thường mắc phải một số hạn chế. Chúng thường cung cấp các API cấp thấp, yêu cầu người dùng tự quản lý nhiều chi tiết phức tạp như lựa chọn chế độ hoạt động (mode of operation), khởi tạo vector (IV), và đệm (padding). Việc lựa chọn sai hoặc triển khai không chính xác một trong những yếu tố này có thể dẫn đến lỗ hổng bảo mật nghiêm trọng. Ví dụ, việc sử dụng lại IV hoặc chọn chế độ mã hóa không phù hợp có thể làm suy yếu đáng kể khả năng bảo mật của hệ thống. Ngoài ra, việc duy trì tính tương thích và cập nhật các thuật toán mới trong các thư viện mật mã truyền thống cũng là một thách thức, tiềm ẩn nguy cơ khai thác từ các cuộc tấn công mạng ngày càng tinh vi.

2.2. Khó khăn khi triển khai mật mã an toàn Yêu cầu chuyên môn cao

Triển khai mật mã an toàn đòi hỏi không chỉ kiến thức về các thuật toán mà còn về các nguyên tắc bảo mật, quản lý khóa và cách thức tấn công. Hầu hết các nhà phát triển phần mềm không phải là chuyên gia mật mã, và việc yêu cầu họ phải nắm vững tất cả những khía cạnh này là không thực tế. Điều này dẫn đến tình trạng các tính năng bảo mật thường được triển khai không tối ưu, tạo ra các điểm yếu có thể bị khai thác. Google Tink được thiết kế để giải quyết vấn đề này bằng cách cung cấp các nguyên hàm mật mã được thiết kế bởi các chuyên gia và được kiểm tra kỹ lưỡng, giúp người dùng dễ dàng sử dụng mà không cần phải hiểu sâu về mọi chi tiết kỹ thuật. Nó ẩn đi sự phức tạp của việc lựa chọn thuật toán và quản lý khóa, giảm thiểu gánh nặng cho nhà phát triển và nâng cao độ an toàn tổng thể của ứng dụng, đặc biệt trong các ứng dụng Google Tink cho ký số văn bản điện tử.

III. Giải pháp Đột phá từ Google Tink Kiến trúc Nguyên lý và Ưu điểm Vượt trội

Google Tink nổi bật như một giải pháp đột phá trong lĩnh vực mật mã, được thiết kế để cung cấp các API mật mã an toàn và dễ sử dụng. Với mục tiêu giảm thiểu lỗi do người dùng và tối đa hóa độ an toàn, Tink áp dụng một kiến trúc độc đáo tập trung vào các nguyên hàm mật mã cấp cao, thay vì phơi bày các chi tiết cấp thấp phức tạp. Kiến trúc này cho phép các nhà phát triển chỉ cần tập trung vào mục đích sử dụng mật mã (ví dụ: mã hóa dữ liệu, ký số) mà không cần lo lắng về việc lựa chọn thuật toán cụ thể hay quản lý khóa phức tạp. Google Tink cũng tích hợp khả năng quản lý phiên bản khóa và chuyển đổi khóa an toàn, đảm bảo rằng ngay cả khi có lỗ hổng trong một thuật toán, hệ thống vẫn có thể được cập nhật mà không ảnh hưởng đến dữ liệu đã mã hóa trước đó. Điều này mang lại một ưu thế vượt trội so với các thư viện mật mã truyền thống, làm cho ứng dụng Google Tink trở thành lựa chọn hàng đầu cho bảo mật thông tin.

3.1. Kiến trúc các lớp thuật toán mật mã của Google Tink Đơn giản hóa phức tạp

Kiến trúc các lớp thuật toán mật mã trong Google Tink được xây dựng để đơn giản hóa việc sử dụng mật mã. Thay vì cung cấp quyền truy cập trực tiếp vào các thuật toán mã hóa khối (block ciphers) hay hàm băm (hash functions), Tink tập trung vào các nguyên hàm mật mã (cryptographic primitives) như AEAD (Authenticated Encryption with Associated Data) cho mã hóa xác thực, Digital Signatures cho ký số, và MAC (Message Authentication Codes) cho xác thực thông điệp. Các nguyên hàm này được triển khai với các thiết lập bảo mật mặc định mạnh mẽ, giảm thiểu khả năng người dùng cấu hình sai. Tink cũng sử dụng một hệ thống quản lý khóa mạnh mẽ, cho phép người dùng định nghĩa các tập khóa (keysets) thay vì các khóa riêng lẻ, hỗ trợ việc xoay vòng khóa và quản lý đa dạng các thuật toán một cách liền mạch. Điều này giúp các nhà phát triển có thể triển khai bảo mật Google Tink hiệu quả mà không cần phải là chuyên gia mật mã.

3.2. So sánh Google Tink với các thư viện mật mã khác Nâng cao tính bảo mật và dễ sử dụng

Khi so sánh Google Tink với các thư viện mật mã khác như OpenSSL, Crypto++ hay Bouncy Castle, Tink thể hiện nhiều ưu điểm vượt trội về tính bảo mật và dễ sử dụng. Trong khi các thư viện truyền thống thường cung cấp các khối xây dựng cơ bản, yêu cầu người dùng phải tự lắp ráp và đảm bảo tính an toàn, Google Tink cung cấp các 'khối chức năng' đã được kiểm định về mặt bảo mật. Ví dụ, việc sử dụng AEAD trong Tink tự động đảm bảo cả tính bảo mật và toàn vẹn của dữ liệu, điều mà người dùng các thư viện khác phải tự triển khai một cách cẩn thận. Bảng so sánh cho thấy Tink nổi bật với việc giảm thiểu bề mặt tấn công, dễ dàng trong việc chọn thuật toán an toàn, và khả năng xoay vòng khóa. Những tính năng này giúp giảm thiểu rủi ro lỗi người dùng, nâng cao đáng kể độ an toàn tổng thể và làm cho thư viện lập trình Google Tink trở thành lựa chọn tối ưu cho các dự án đòi hỏi an toàn thông tin cao.

IV. Thực thi và Ứng dụng Google Tink Bí quyết Ký số Văn bản Điện tử An toàn Hiệu quả

Một trong những ứng dụng Google Tink nổi bật và được quan tâm là trong lĩnh vực ký số văn bản điện tử. Với khả năng cung cấp các nguyên hàm mật mã mạnh mẽ và dễ sử dụng, Tink trở thành công cụ lý tưởng để xây dựng các hệ thống ký số an toàn, đảm bảo tính xác thực và toàn vẹn của tài liệu số. Việc thực thi thư viện mật mã Google Tink trong việc ký số giúp giải quyết bài toán lớn về việc xác minh danh tính và chống giả mạo trong môi trường số. Quy trình này bao gồm việc tạo khóa, ký dữ liệu, và xác minh chữ ký, tất cả đều được đơn giản hóa thông qua các API của Tink. Nghiên cứu đã chứng minh rằng việc ứng dụng Google Tink trong ký số văn bản điện tử không chỉ mang lại hiệu quả cao về mặt bảo mật mà còn tối ưu hóa quá trình phát triển, giảm thiểu thời gian và công sức cần thiết để triển khai một giải pháp ký số đáng tin cậy. Điều này khẳng định vai trò quan trọng của Google Tink trong việc xây dựng các giải pháp bảo mật tiên tiến.

4.1. Quy trình ký số văn bản điện tử với Google Tink Từ tạo khóa đến kiểm tra xác thực

Quy trình ký số văn bản điện tử với Google Tink được thực hiện qua các bước rõ ràng và an toàn. Đầu tiên, một cặp khóa (khóa riêng tư và khóa công khai) được tạo bằng thư viện mật mã Google Tink. Khóa riêng tư được sử dụng để tạo chữ ký số cho văn bản, trong khi khóa công khai được dùng để xác minh chữ ký đó. Khi một văn bản cần được ký, nội dung của văn bản sẽ được băm (hashing) để tạo ra một giá trị băm duy nhất. Giá trị băm này sau đó được mã hóa bằng khóa riêng tư để tạo thành chữ ký số. Ở phía người nhận, họ sẽ sử dụng khóa công khai tương ứng để giải mã chữ ký, thu được giá trị băm. Đồng thời, họ cũng tính toán giá trị băm của văn bản nhận được và so sánh hai giá trị băm này. Nếu chúng khớp nhau, chữ ký số là hợp lệ, chứng tỏ văn bản không bị thay đổi và đúng nguồn gốc. Google Tink hỗ trợ các thuật toán chữ ký số mạnh mẽ như ECDSA, đảm bảo tính toàn vẹn và xác thực cao cho ký số văn bản điện tử.

4.2. Mô phỏng chương trình ký số dùng Google Tink Kết quả và đánh giá thực tiễn

Việc mô phỏng chương trình ký số dùng Google Tink đã được thực hiện để đánh giá hiệu quả và tính khả thi của giải pháp này. Trong môi trường Ubuntu, các modun tạo khóa, ký số và kiểm tra ký số đã được xây dựng và thử nghiệm. Kết quả cho thấy Google Tink cung cấp một phương pháp đơn giản và hiệu quả để thực hiện các thao tác mật mã cần thiết cho ký số. Quá trình tạo khóa diễn ra nhanh chóng, và việc ký/xác minh chữ ký được thực hiện một cách chính xác. Các thử nghiệm đã chứng minh rằng thư viện lập trình Google Tink không chỉ đảm bảo tính an toàn cao mà còn tối ưu hóa về hiệu suất. Chương trình mô phỏng đã thành công trong việc tạo ra một hệ thống ký số văn bản điện tử hoạt động ổn định và đáng tin cậy, khẳng định tiềm năng lớn của Tink trong các ứng dụng bảo mật thực tế. Đánh giá thực tiễn cho thấy Google Tink là một công cụ mạnh mẽ, giúp các nhà phát triển dễ dàng xây dựng các giải pháp bảo mật thông tin vững chắc.

V. Google Tink và Tương lai Bảo mật Đánh giá Hiệu quả và Hướng Phát triển Mới

Qua quá trình nghiên cứu thư viện lập trình Google Tink và ứng dụng của nó trong ký số văn bản điện tử, có thể khẳng định Google Tink là một công cụ mật mã mạnh mẽ, dễ sử dụng và đáng tin cậy. Thư viện này đã thành công trong việc đơn giản hóa sự phức tạp của mật mã học, giúp các nhà phát triển, ngay cả những người không chuyên, có thể dễ dàng triển khai các tính năng bảo mật cấp cao vào ứng dụng của mình. Tink không chỉ giải quyết các vấn đề về lỗi triển khai thường gặp trong các thư viện mật mã truyền thống mà còn cung cấp một nền tảng linh hoạt, hỗ trợ nhiều ngôn ngữ và khả năng quản lý khóa hiệu quả. Tiềm năng của Google Tink không chỉ dừng lại ở ký số mà còn mở rộng ra nhiều lĩnh vực khác như mã hóa dữ liệu lưu trữ, bảo mật kênh truyền, và phát triển các hệ thống IoT an toàn. Việc tiếp tục nghiên cứu và ứng dụng thư viện lập trình Google Tink sẽ góp phần đáng kể vào việc nâng cao an toàn thông tin trong tương lai.

5.1. Đánh giá hiệu quả của thư viện lập trình Google Tink trong bảo mật

Thư viện lập trình Google Tink đã được đánh giá cao về hiệu quả trong việc cung cấp các giải pháp bảo mật mạnh mẽ. Ưu điểm nổi bật của nó nằm ở việc đơn giản hóa API, giảm thiểu khả năng mắc lỗi của nhà phát triển, đồng thời vẫn đảm bảo sử dụng các thuật toán mật mã mạnh mẽ và hiện đại. Tính năng quản lý tập khóa (keyset management) và hỗ trợ xoay vòng khóa (key rotation) giúp duy trì tính bảo mật theo thời gian, ngay cả khi các lỗ hổng mới được phát hiện. Sự hỗ trợ đa ngôn ngữ và khả năng tương thích cao làm cho Tink trở thành một lựa chọn linh hoạt cho nhiều dự án khác nhau, từ ứng dụng di động đến hệ thống doanh nghiệp lớn. Nhờ đó, Google Tink đóng vai trò quan trọng trong việc nâng cao tiêu chuẩn an toàn thông tin, giúp bảo vệ dữ liệu và giao dịch trực tuyến một cách đáng tin cậy.

5.2. Tiềm năng phát triển của Google Tink và các ứng dụng đột phá

Tiềm năng phát triển của Google Tink là rất lớn. Ngoài ký số văn bản điện tử, Tink có thể được mở rộng để ứng dụng trong nhiều lĩnh vực khác nhau như bảo mật dữ liệu đám mây, hệ thống xác thực người dùng, và bảo vệ thông tin trong các thiết bị IoT. Với kiến trúc linh hoạt và khả năng tích hợp dễ dàng, Google Tink có thể trở thành nền tảng bảo mật cho các công nghệ mới nổi. Các nhà nghiên cứu và phát triển có thể tiếp tục khám phá các cách thức tối ưu hóa hiệu suất, mở rộng bộ thuật toán được hỗ trợ, và tích hợp Tink vào các khuôn khổ phát triển phần mềm phổ biến hơn. Việc phát triển các hướng dẫn chi tiết và ví dụ thực tiễn cho các ứng dụng Google Tink đa dạng sẽ khuyến khích cộng đồng sử dụng và đóng góp, qua đó thúc đẩy sự phát triển của một hệ sinh thái bảo mật mạnh mẽ và bền vững.

Tóm tắt và mô tả trên trang này được tạo với sự hỗ trợ của AI. Nếu bạn thấy nội dung không chính xác hoặc có vấn đề, vui lòng Báo lỗi nội dung.

14/03/2026
Nghiên cứu thư viện lập trình google tink và ứng dụng

Trích đoạn nội dung tài liệu

Chương 1 đã trình bày được về các thư viện mật mã phổ biến hiện nay như OpenSSL, Crypto++, GMP, JCA… So sánh các thư viện mật mã này với nhau và đã đưa ra các ứng dụng phổ biến của thư viện mật mã hiện nay. THƯ VIỆN MẬT MÃ GOOGLE TINK 2.1 Thông tin chung Google Tink là thư viện mật mã mã nguồn mở được viết bởi các nhà mật mã học và kỹ sư Google. Phiên bản đầu tiên 1.0 phát hành năm 2017, hiện nay phiên bản mới nhất 1.1 vào tháng 7 năm 2022. Google Tink được thiết và xây dựng với mục đích tạo ra nền tảng mã nguồn cài đặt mật mã có thể sử dụng 1 cách dễ dàng và đảm bảo an toàn.

Hiện nay tại tập đoàn Google, thư viện mật mã nay đã được triển khai trên nhiều hệ thống như Gmail, Youtube, Androids,… Hình 2.1: Logo của Tink 2.2 Các ưu điểm Google Tink Hỗ trợ nhiều ngôn ngữ, Google Tink hiện nay thì hỗ trợ các hàm API mật mã với các ngôn ngữ phổ biến C, C++, Python, Java. Điều này giúp ích rất lớn cho các nhà phát triển phần mềm bảo mật trên các nền tảng hiện hành khác nhau. - Tink dễ sử dụng: Theo đội ngũ phát triển công bố Google Tink cung cấp các hàm API rất đơn giản, dễ hiểu, đảm bảo tính bảo mật tránh cạm bẫy trong mã nguồn cài đặt. - Độ an toàn của Google Tink có mã nguồn mở vì vậy các nhà phát triển kiểm tra mã nguồn này.

Google Tink phân tách các API một cách rõ ràng, giúp cho người phát triển kiểm tra, theo dõi 1 cách dễ dàng hơn. - Tính tương thích cao của Google Tink: Tương thích hầu hết các thư viện mật mã hiện có như OpenSSl, Crypto++. Tink cũng hỗ trợ mã hóa hoặc lưu trữ khóa trong Amazon KMS, Google Cloud KMS, Android Keystore và IOs Keychain.2 Kiến trúc các lớp thuật toán mật mã Google Tink được xây dựng và phát triển theo kiến trúc phân thành các lớp các thuật toán mật mã.2 mô tả tổng quát các thuật toán mật mã mà Tink hỗ trợ.2: Thuật toán mật mã Tink hỗ trợ - Các thuật toán mà Google Tink hỗ trợ. + AEAD: hệ mã xác thực với dữ liệu liên kết.

+ Streaming AEAD: Mã dòng có xác thực với dữ liệu liên kết. + Deterministic AEAD: Mã hóa xác thực dữ liệu với dữ liệu liên kết tất định. + MAC: Mã xác thực thông báo. + Prf (Pseudo Random Function): Hàm sinh số giả ngẫu nhiên.

+ Digital Signatures: Các lược đồ ký số. + Hybrid Encryption: Lược đồ mã hóa lai ghép.1 AEAD (Authenticated Encyption with Associated Data) AEAD là thuật ngữ chỉ thuật toán mã hóa với dữ liệu liên kết. AEAD có thực thi hai cả hai cơ chế là mã hóa và xác thực trong kiến trúc và thường được gọi các thuật toán mã hóa có xác thực. - AEAD có các đặc trưng sau: + Tính bí mật : Với cơ chế mã hóa dữ liệu trong kiến trúc thì đảm bảo cho chỉ bên gửi và bên nhận biết khóa bí mật mới nắm bắt được nội dung dữ liệu.

+ Tính xác thực : Với cơ chế xác thực bằng thẻ xác thực đi kiemf thì kẻ tấn công không có khóa thì không thể thay đổi bản mã mà không bị phát hiện. + Đối xứng : Việc mã hóa/giải mã và xác thực thông điệp được thực hiện với cùng một khóa. + Ngẫu nhiên hóa: Mã hóa được ngẫu nhiên hóa. Hai bản rõ giống nhau là đầu vào của AEAD thì sẽ cho các bản mã khác nhau, lý do là AEAD có sự tham gia của dữ liệu liên kết.

Điều này ngăn những kẻ tấn công biết bản mã nào tương ứng với một bản rõ nhất định. Với AEAD - hệ mã xác thực với dữ liệu liên kết thư viện Google Tink hỗ trợ các cài đặt thuật toán dưới đây: + AES-GCM + AES-CCM + AES-CTR-HMAC + AES-EAX + KMS Envelope Ngoài ra còn có 2 thuật toán khác là AES-GCM-SIV và CHACHA20- POLY1305 chỉ được hỗ trợ qua các ngôn ngữ khác như: Java, C++. còn Python không được hỗ trợ 2 thuật toán này. Trong phần này của đồ án thuật toán trình bày chi tiết về một thuật toán AEAD điển hình là AES-CCM để có thể hiểu rõ hơn về AEAD.

AES là chuẩn mã hóa tiên tiến của Hoa Kỳ năm 2001. Còn CCM là chế độ mã hóa được tiêu chuẩn hóa bởi NIST trong việc đảm bảo độ bảo mật của mạng Wifi IEEE 802.11 và có thể đựơc sử dụng cho bảo mật đường truyền mạng yêu cầu mã hóa có xác thực. CCM là một chế độ mã hóa xác thực tiếp cận theo hướng encrypt-and-MAC được định nghĩa trong chuẩn NIST SP 800 38C [4]. AES-CCM là thuật toán mã khối AES thực thi trong chế độ mã hóa có xác thực CCM bao gồm: chế độ mã hóa CTR và cơ chế xác thực CMAC.

Một khóa bí mật K được sử dụng cho quá trình tính mã hóa và mã xác thực. Đầu vào quá trình mã hóa CCM bao gồm 3 thành phần: 1) Dữ liệu bản rõ P có độ dài là Plen 2) Dữ liệu liên kết A được thực thi trong quá trình xác thực nhưng không sử dụng trong quá trình mã hóa của chế độ CCM. 3) Một quá trình nonce N cũng tham gia vào quá trình tính mã xác thực trong CCM. Đây là giá trị duy nhất cho từng bản rõ P, điều này sẽ đem lại khả năng chống tấn công phát lại trong chế độ CCM.

Quá trình mã hóa và tạo thẻ xác thực Quá trình mã hóa AES-CCM được chia làm hai giai đoạn: giai đoạn tạo thẻ xác thực và giai đoạn mã hóa, có 8 bước thực hiện như sau: 1) Tiến hành ghép nối các giá trị liên kết Nonce, Ass.Data, Plaintext và chuyển thành các khối bản rõ B0, B1,…,Br. 3) Thực thi vòng lập For i = 1 to r, do 𝑌𝑖 = 𝐸(𝐾, (𝐵𝑖 ⨁𝑌𝑖−1 )). 5) Thực thi chế độ CTR với các bộ đếm CTr0, CTr1,…,CTrm, trong đó 𝑚 = ⌈𝑃𝑙𝑒𝑛/128⌉. 6) Thực thi vòng lặp For j = 0 to m, do 𝑆𝑗 = 𝐸(𝐾, 𝐶𝑇𝑅𝑗 ).

8) Kết quả đầu ra 𝐶 = (𝑃⨁𝑀𝑆𝐵𝑃𝑙𝑒𝑛 (𝑆))||(𝑇⨁𝑀𝑆𝐵𝑇𝑙𝑒𝑛 (𝑆)), với 𝐶1 = (𝑃⨁𝑀𝑆𝐵𝑃𝑙𝑒𝑛 (𝑆)) và 𝐶2 = (𝑇⨁𝑀𝑆𝐵𝑇𝑙𝑒𝑛 (𝑆)). Ghi chú các ký hiệu: E: là quá trình mã hóa của AES. MSB: là bít có trọng số cao nhất trong một dãy bít. Tlen: là độ dài của thẻ xác thực, thường theo mật định là 128 bít.

Plen: là độ dài của bản rõ P. Giải thích chi tiết về quá trình mã hóa CCM: - Giai đoạn 1: Tạo thẻ xác thực T bao gồm từ bước 1 đến bước 4, được thực thi như hình 2.3: Giai đoạn tạo thẻ xác thực T + Đầu tiên tạo bản rõ được liên kết từ các giá trị Noce, Ass.Data, Plaintext, sau đó chia bản rõ thành các khối bản rõ từ B0, B1,…, Br, mỗi khối đầu vào có độ dài 128 bit. Cho bản rõ chạy qua chế độ tạo thẻ xác thực CMAC và chịu tác động của khóa K tạo ra thẻ xác thực T. + Trong quá trình tạo thẻ xác thực khối bản rõ chạy qua Chế độ CMAC để tạo ra thẻ xác thực T.

Chế độ CMAC được thực thi theo các bước tại hình 2. K AES K AES K AES T Hình 2.4: Chế độ tạo thẻ xác thực CMAC + Tương ứng với bản rõ B0 thực hiện phép tính XOR với vector khởi tạo bằng chạy qua mã khối AES và chịu tác động của khóa K tuơng ứng cho ra một bản mã. Sau đó bảng mã tiếp tục XOR với bản rõ B1, tiếp tục mã hóa bằng mã khối AES với khóa K tương ứng. Quá trình thực hiện cho đến giá trị cuối cùng cùng của bản rõ Br, tạo ra thẻ xác thức T.

- Giai đoạn 2: bao gồm từ bước 5 đến bước 8, thực thi mã hóa bản rõ P để tính bản mã C được thực thi theo các bước như hình 2.5: Giai đoạn mã hóa + Tạo bản mã C1: Thực thi chế độ CTr bằng mã khối AES với khóa K tưong ứng, đối với các bộ đếm CTr1, CTr2,…, CTrm, trong đó 𝑚 = ⌈𝑃𝑙𝑒𝑛/128⌉. Tạo ra các giá trị S1, S2,…, Sm, sau đó gán các giá trị này với nhau thành một giá trị S. Lấy MSBPlen(S) (lấy Plen bít có trong số cao nhất) XOR với bản rõ Plantext tạo thành bản mã C1 + Tạo bản mã C2: Mã hóa bộ đếm CTr0 bằng mã khối AES với khóa K tương ứng thu được giá trị S0, sau đó lấy MSBTlen(S0) (lấy Tlen bít có trong số cao nhất) XOR với thẻ xác thực T cho ra bản mã C2. + Gán bản mã C1 với C2 tạo thành bản mã C.

Quá trình giãi mã và kiểm tra thẻ xác thực Để giải mã và kiểm tra tính xác thực, người nhận có một số dữ liệu sau: bản mã C, nonce N, dữ liệu liên quan A, khóa K và bộ đếm ban đầu Ctr0. Quá trình giải mã và kiểm tra thẻ xác thực đựoc chia làm hai giai đoạn: giai đoạn giải mã và giai đoạn kiểm tra thẻ xác thực, có 10 bước thực hiện như sau: 1) Nếu Clen # Tlen, thì báo lỗi INVALID. 2) Thực thi chế độ CTR với các bộ đếm CTr0, CTr1,…,CTrm, trong đó 𝑚 = ⌈𝐶𝑙𝑒𝑛 − 𝑇𝑙𝑒𝑛/128⌉. 3) Thực thi vòng lập For j = 0 to m, do 𝑆𝑗 = 𝐴𝐸𝑆𝐾 (𝐶𝑇𝑟𝑗 ).

7) Nếu N, A, hoặc P không chính xác thì trả về INVALID, nguợc lại sẽ thực hiện ham ghép các giá trị (N,A,P) và chia thanh các khối nhị phân 8) Gắn 𝑌0 = 𝐴𝐸𝑆𝐾 (𝐵0 ). 9) Thực hiện vòng lặp For i = 0 to r, do 𝑌𝑗 = 𝐴𝐸𝑆𝐾 (𝐵𝑖 ⊕ 𝑌𝑖−1 ). 10) Gắn MSBTlen(Yr) = T’, Nếu T # T’, thì báo INVALID, không chấp nhận P Giải thích chi tiết về quá trình giải mã và kiểm tra thẻ xác thực: - Giai đoạn 1: bao gồm từ bước 1 đến buớc 5, thực thi quá trình giải mã tìm bản rõ P, được thực thi theo các bước tại hình 2.6: Giai đoạn giải mã + Thực thi chế độ CTr bằng mã khối AES với khóa K tưong ứng, đối với các bộ đếm CTr0, CTr1,…, CTrm, trong đó 𝑚 = ⌈𝐶𝑙𝑒𝑛 − 𝑇𝑙𝑒𝑛/128⌉. Tạo ra các giá trị S1, S2,…, Sm, sau đó gắn các giá trị này với nhau thành một giá trị S.

Lấy MSBClen-Tlen(S) (lấy bít có trong số cao nhất của Clen-Tlen trong giá trị của S) XOR với MSBClen-Tlen(C) (lấy bít có trọng số cao nhất của Clen-Tlen trong giá trị của C), tính được bản rõ P.7: Tính thẻ xác thực T - Giai đoạn 2: kiểm tra thẻ xác thực, thực hiện từ buớc 6 đến bước 10 + Tại bước 6 thực thi quá trình tìm thẻ xác thực T được thực thi tại hình 2.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ