Gửi lúc: 09/05/2018 16:07:44
Bookmark and Share

Chương trình xác nhận thuật toán mật mã - CAVP

Bài báo này giới thiệu về Chương trình xác nhận thuật toán mật mã (Cryptographic Algorithm Validation Program - CAVP) được NIST và CSE công bố năm 2003. Tới nay, Chương trình này vẫn được ứng dụng và sử dụng hiệu quả trong thực tế.

Thuật toán mật mã là thành phần cốt lõi của môđun mật mã cũng như sản phẩm an toàn thông tin (ATTT), nó đóng vai trò quan trọng trong an toàn tổng thể của một sản phẩm ATTT. Việc xác nhận (phê duyệt) sự chính xác của các thuật toán mật mã làm nền tảng cho công tác kiểm định, đánh giá chất lượng của sản phẩm ATTT. Đây là một công việc tốn nhiều thời gian và công sức. CAVP được thành lập nhằm xác nhận việc thực thi các thuật toán mật mã trong các môđun mật mã của sản phẩm ATTT. Chương trình này đảm bảo rằng các triển khai thuật toán mật mã trong sản phẩm tuân thủ các chi tiết kỹ thuật được nêu trong tài liệu của nhà cung cấp.


Hình 1: Mô hình một hệ thống ATTT

Giới thiệu CAVP 

Để đảm bảo an toàn các sản phẩm ATTT, thì việc kiểm tra, đánh giá chất lượng các sản phẩm ATTT theo các tiêu chuẩn, quy chuẩn kỹ thuật tương ứng là hết sức cần thiết và cấp bách. Hệ thống các tiêu chí, phương pháp luận đánh giá chất lượng an toàn sản phẩm ATTT đã được phát triển từ rất sớm trên thế giới và ngày càng hoàn thiện. Trong đó, kiểm định, đánh giá chất lượng môđun mật mã cũng như thuật toán thực thi trong sản phẩm là một lĩnh vực độc lập đang được nhiều nhà khoa học quan tâm, nghiên cứu. Bảng 1 dưới đây trình bày ví dụ về một ứng dụng ATTT và các tiêu chí để đánh giá:

Bảng 1: Một ví dụ về Ứng dụng ATTT và các tiêu chí đánh giá

Năm 1995, Viện tiêu chuẩn công nghệ quốc gia Hoa Kỳ (National Institute of Standards and Technology – NIST) và Cơ quan thiết lập an toàn Canada (Communications Security Establishment Canada – CSE) đã thành lập chương trình phê duyệt môđun mật mã (Cryptographic Module Validation Program - CMVP). Lúc đó, CMVP bao gồm cả chức năng của CMVP hiện tại và chương trình xác nhận thuật toán mật mã CAVP. Năm 2003, CAVP [1] được NIST và CSE thành lập như một chương trình riêng biệt để xác nhận sự chính xác khi triển khai các thuật toán mật mã trong các môđun hay sản phẩm mật mã. CMVP phê duyệt môđun mật mã theo FIPS 140-2, trong khi CAVP xác nhận việc thực thi các thuật toán mật mã được chấp thuận bởi NIST. Việc xác nhận tính hợp lệ các thuật toán mật mã được thực thi trong môđun mật mã là một công việc độc lập và là điều kiện tiên quyết để phê duyệt môđun mật mã đó.

CAVP thiết kế một bộ kiểm tra cho mỗi thực thi thuật toán mật mã để kiểm tra các đặc tả thuật toán, các thành phần, tính năng, hoặc chức năng của việc thực thi thuật toán đó. Một môđun mật mã gồm một hoặc nhiều thực thi thuật toán mật mã, mỗi thực thi thuật toán có một tên và số phiên bản duy nhất. Khi thực thi thuật toán mật mã đang được xác nhận lần đầu tiên, nó được gọi là xác nhận mới. Khi một thực thi thuật toán mật mã là phiên bản sửa đổi thì được gọi là xác nhận cập nhật (ví dụ AES thêm chế độ CFB…).

Vai trò và trách nhiệm của các bên tham gia CAVP

Sơ đồ dưới đây thể hiện vai trò và trách nhiệm của các bên tham vào CAVP. Trong đó bao gồm 4 chủ thể: Nhà cung cấp, Phòng thí nghiệm CST, Cơ quan phê duyệt CAVP, Người sử dụng. 


Hình 2: Quy trình xác nhận việc thực thi thuật toán mật mã trong CAVP

Nhà cung cấp: Vai trò của nhà cung cấp là triển khai các thuật toán mã hóa tuân thủ các yêu cầu được quy định trong các tài liệu của FIPS hoặc NIST được áp dụng. Khi việc triển khai thuật toán mã hóa đã sẵn sàng để kiểm định, nhà cung cấp lựa chọn một phòng thí nghiệm CST để xác nhận việc thực thi thuật toán của họ.

Phòng thí nghiệm CST: Vai trò của phòng thí nghiệm CST là kiểm định việc thực thi thuật toán mật mã một cách độc lập. Phòng thí nghiệm CST liên lạc với CAVP khi việc kiểm định thực thi thuật toán thành công để CAVP đánh giá kết quả và xác nhận việc thực thi thuật toán mật mã.

Cơ quan phê duyệt CAVP: Ở đây, cơ quan phê duyệt CAVP là NIST. Cơ quan này có vai trò phê duyệt kết quả kiểm định cho mỗi thực thi thuật toán mật mã. Nếu việc thực thi thuật toán mật mã được xác định là phù hợp với tài liệu kèm theo, thì việc thực thi được xác nhận và danh sách thực thi thuật toán mật mã được cập nhật trực tuyến.

Người sử dụng: Người dùng xác minh rằng việc thực thi thuật toán mật mã bên trong một môđun mật mã hoặc một sản phẩm mà họ đang cân nhắc mua đã được xác nhận là chính xác. Danh sách các thực thi thuật toán mật mã đã phê duyệt được công bố tại trang chủ của NIST [3]. 

Quy trình xác nhận thuật toán mật mã của CAVP

Hình 3 trình bày tổng quát chương trình xác nhận thuật toán mật mã CAVP. Bao gồm 12 bước kiểm định, đánh giá và cấp chứng nhận cơ bản được thể hiện như sau:


Hình 3: Quy trình xác nhận thuật toán mật mã CAVP


Bước 1: Nhà cung cấp chọn một trong các phòng thí nghiệm CST được công nhận để yêu cầu thực hiện kiểm định hoặc giám sát việc kiểm định việc thực thi thuật toán mật mã của họ. Lưu ý rằng, việc kiểm định thực thi thuật toán mật mã của nhà cung cấp có thể được thực hiện tại chỗ hoặc có thể được gửi đến phòng thí nghiệm CST để kiểm định (thuật ngữ “người kiểm định” là bên thực hiện kiểm định thực thi thuật toán).

Bước 2: Phòng thí nghiệm CST yêu cầu nhà cung cấp gửi thông tin liên quan đến thực thi thuật toán mật mã trong quá trình thực hiện kiểm định.

Bước 3: Sau khi nhận được tài liệu, người kiểm định sử dụng tài liệu để xác nhận sự phù hợp với tham chiếu việc thực thi thuật toán cụ thể được nêu trong tài liệu đi kèm của mỗi thuật toán. Các tài liệu này đã được phê duyệt trên trang chủ của NIST theo từng thuật toán cụ thể, đồng thời, phòng thí nghiệm CST thiết kế ra bộ kiểm tra.

Bước 4: Đối với mỗi thực thi thuật toán đang được kiểm định, phòng thí nghiệm CST sử dụng thông tin này và công cụ xác nhận thuật toán mật mã (Cryptographic Algorithm Validation System - CAVS) để tạo các vectơ kiểm tra đầu vào sử dụng trong các bài kiểm tra.

Bước 5: Phòng thí nghiệm CST cung cấp các vector kiểm tra đầu vào cho người kiểm định.

Bước 6: Người kiểm định sử dụng vectơ kiểm tra như là đầu vào để thực thi thuật toán.

Bước 7: Các kết quả thực thi thuật toán được chuyển tiếp đến phòng thí nghiệm CST. 

Bước 8: Phòng thí nghiệm CST sử dụng công cụ CAVS để xác minh kết quả của các bài kiểm tra bằng cách so sánh kết quả thực thi thuật toán của nhà cung cấp và kết quả thực thi thuật toán của phòng thí nghiệm. Nếu kết quả không chính xác, công cụ CAVS ghi lại các bài kiểm tra thất bại và nêu lý do tại sao.

Bước 9: Khi quá trình kiểm định, đánh giá hợp lệ, việc thực thi thuật toán mật mã được thực hiện thành công, phòng thí nghiệm CST sẽ đệ trình gói tài liệu yêu cầu đến NIST. Gói này chứa yêu cầu xác nhận việc thực thi thuật toán chính thức từ phòng thí nghiệm và tất cả các tệp tin được tạo ra từ công cụ CAVS bao gồm tệp tóm tắt kết quả kiểm định cho mỗi thuật toán được kiểm định.

Bước 10: NIST đánh giá gói đầy đủ và xác nhận rằng tất cả các bài kiểm tra đã thực hiện xong. Nếu điều này là đúng, NIST và CSE sẽ xác nhận thực việc thực thi thuật toán mật mã.

Bước 11: NIST nhập tất cả các thông tin thích hợp liên quan đến việc xác nhận hợp lệ này vào cơ sở dữ liệu nội bộ, tạo ra chứng chỉ hợp nhất xác nhận thuật toán mật mã (có chứa nhiều thực thi thuật toán mật mã). NIST ký chứng chỉ xác nhận hợp nhất này và gửi đến CSE để ký tên.

Bước 12: CAVP tạo ra danh mục thuật toán được phê duyệt, thuật toán mật mã được đăng lên danh sách thuật toán mật mã được phê duyệt của CAVP. (link http://csrc.nist.gov/groups/STM/cavp/validation.html).     
    
Danh sách các thuật toán mật mã đã được xác nhận trên trang chủ của NIST bao gồm: AES, CCM, DRBG, ECDSA, HMAC, KAS, KDF, RSA, SHA-3, TDES… Mỗi thuật toán mật mã được xác nhận bao gồm một danh sách các môđun mật mã đã được phê duyệt chứa thuật toán đó.

Công cụ xác nhận thuật toán mật mã CAVS

Việc sử dụng công cụ CAVS đảm bảo rằng việc thực thi thuật toán mật trong sản phẩm là chính xác và là một điều kiện tiên quyết của việc xác nhận thuật toán mật mã của CAVP. Phòng thí nghiệm CST sử dụng công cụ CAVS phiên bản mới nhất và thông tin từ nhà cung cấp thực thi thuật toán này tạo ra vector kiểm định đầu vào. Phòng thí nghiệm sử dụng công cụ CAVS tạo ra 3 loại tệp tin [2], đó là: 

- FAX: Tệp tin phản hồi;

- Request: Tệp tin chứa vector kiểm định đầu vào;

- Sample: Định dạng yêu cầu của tệp tin phản hồi;

Tệp tin phản hồi được tạo ra bằng cách thực hiện thuật toán của nhà cung cấp.


Hình 4: Quy trình sử dụng công cụ CAVS

Vectơ kiểm định được tạo ra và đặt trong các tệp yêu cầu được cung cấp cho người kiểm định cùng với tệp mẫu có chứa thông tin định dạng tệp phản hồi. Người kiểm định sử dụng vectơ kiểm định, tính toán kết quả thực hiện thuật toán và lưu trữ chúng theo định dạng được chỉ định trong các tệp phản hồi, sau đó gửi tệp phản về phòng thí nghiệm CST. Công cụ CAVS xác định thuật toán mật mã trong sản phẩm thực hiện chính xác bằng cách so sánh giá trị của kết quả thực hiện với các kết quả dự kiến.

Trong quá trình này, công cụ CAVS tạo ra một bản tóm tắt và một tệp nhật ký. Tệp tóm tắt chỉ ra các bài kiểm tra đã được chạy và việc chạy có thành công hay không. Số kết quả thành công trong tổng số kết quả sẽ được ghi lại. Nếu xảy ra lỗi, tệp nhật ký sẽ chỉ ra giá trị nào không thành công và nêu lý do không thành công. Có 2 loại lỗi thường xảy ra trong quá trình này gồm:

- Lỗi chính: Tệp nhật ký cho thấy phản hồi kiểm tra không có vấn đề về định dạng, nhưng không thể xác định.

- Lỗi phụ: Tệp nhật ký cho thấy phản hồi kiểm tra không thể đọc chính xác hoặc có vấn đề về định dạng.

Phòng thí nghiệm CST sử dụng các tệp này để cung cấp các thông tin cho nhà cung cấp thuật toán liên quan đến lỗi đã xảy ra. Căn cứ vào đó, nhà cung cấp sẽ khắc phục lỗi trong việc thực thi thuật toán mật mã của họ. Phòng thí nghiệm CST thông báo cho nhà cung cấp rằng việc thực thi thuật toán không đáp ứng các yêu cầu của tài liệu tham khảo có liên quan và cung cấp các thông tin do CAVS tạo ra để hỗ trợ nhà cung cấp xác định vị trí thuật toán thực thi của họ sai lệch so với thông số kỹ thuật trong tài liệu tham khảo.

Kết luận

Việc CAVP công bố công khai thông tin về danh mục thuật toán mật mã được xác nhận và chi tiết các kết quả kiểm định thực thi thuật toán trong sản phẩm, sẽ giúp ích rất nhiều cho các nhà phát triển sản phẩm ATTT trong quá trình tích hợp các thuật toán mật mã theo tiêu chuẩn. Đồng thời cũng giúp cho công tác quản lý chất lượng và kiểm định sản phẩm chặt chẽ hơn.

TÀI LIỆU THAM KHẢO

[1] NIST & CSE, Cryptographic Algorithm Validation Program Management Manual CAVP, Ver 1.0, 2009.

[2] Yuan Xu, Analysis and Solutions for CAVS Testing Errors, Ottawa, Canada, May-18, 2016.

[3] http://csrc.nist.gov

KS. Hoàng Anh Thuận