## Tổng quan nghiên cứu

Kỹ thuật chương trình kèm bằng chứng (Proof Carrying Code – PCC) được giới thiệu lần đầu vào năm 1996 nhằm đảm bảo tính an toàn của chương trình chưa được tin cậy bằng cách kèm theo bằng chứng do nhà phát triển cung cấp, được người tiêu thụ chương trình kiểm chứng trước khi thực thi. Một điểm nổi bật là việc kiểm chứng này chỉ thực hiện một lần khi khởi chạy chương trình, giúp bảo toàn hiệu năng và hạn chế khai thác tài nguyên ở thiết bị người dùng. Tuy nhiên, PCC truyền thống gặp nhiều khó khăn về kích thước lớn của bằng chứng và bộ phận đáng tin cậy (Trusted Computing Base – TCB) khá phức tạp. Mục tiêu chính của luận văn tập trung nghiên cứu các kỹ thuật PCC, phân tích điểm mạnh - yếu, đặc biệt chú trọng mô hình mở rộng EPCC do Danny Dubé và cộng sự phát triển tại Đại học Laval. Với phạm vi nghiên cứu trong khoảng thời gian 2008-2009 và triển khai trên mô hình máy ảo VEP, luận văn đề xuất giải pháp tự động hóa quá trình kiểm chứng an toàn của VEP nhằm tăng tính khả thi cho ứng dụng thực tế. Các chỉ số quan trọng được khảo sát là kích cỡ bằng chứng, độ phức tạp TCB, và tỉ lệ tự động chứng minh an toàn bằng công cụ Frama-C. Kết quả nghiên cứu hướng tới việc cải thiện độ tin cậy và hiệu quả triển khai PCC trên các nền tảng hạn chế tài nguyên như thiết bị di động hoặc hệ thống nhúng.

## Cơ sở lý thuyết và phương pháp nghiên cứu

### Khung lý thuyết áp dụng

Luận văn dựa trên nền tảng lý thuyết của Proof Carrying Code, bao gồm ba kỹ thuật chính: PCC truyền thống, OPCC (Oracle-based PCC), FPCC (Foundational PCC) và mở rộng EPCC. Các thuật ngữ chuyên ngành trọng tâm gồm:

- **Verification Condition (VC):** điều kiện logic được sinh ra từ chính sách an toàn và mã nguồn, dùng làm cơ sở kiểm chứng chương trình.
- **Trusted Computing Base (TCB):** thành phần hệ thống mà người tiêu dùng phải tin tưởng để đảm bảo bảo mật.
- **First-Order Logic và Higher-Order Logic:** các hệ thống luận lý được sử dụng để mô tả và chứng minh tính đúng đắn của chương trình và bằng chứng.
- **Lambda Calculus:** mô hình tính toán cơ bản dùng để biểu diễn các hàm và thao tác logic trong PCC.
- **Virtual Machine for Extended PCC (VEP):** máy ảo thiết kế riêng để chạy generator tạo bằng chứng trong EPCC.
- **Garbage Collector dựa trên Reference Counting:** thuật toán quản lý bộ nhớ tự động áp dụng trong VEP nhằm tránh rò rỉ bộ nhớ do vòng tham chiếu.

Hai khung lý thuyết trọng tâm khoảng luận văn hỗ trợ khả năng chứng minh tự động an toàn chương trình và giảm thiểu kích thước TCB trên nền tảng luận lý chính xác. 

### Phương pháp nghiên cứu

Phương pháp luận được triển khai theo hai hướng: nghiên cứu lý thuyết sâu về đặc điểm từng kỹ thuật PCC, và nghiên cứu thực nghiệm với mô hình VEP trong khuôn khổ EPCC. Nguồn dữ liệu chính là tài liệu gốc, báo cáo kỹ thuật và mã nguồn của các nhóm nghiên cứu tại Đại học Laval và Đại học Carnegie Mellon. 

Phân tích định lượng bao gồm đánh giá kích thước TCB (ví dụ, ~23000 dòng code cho VCGen truyền thống giảm còn ~2700 dòng trong FPCC), kích thước bằng chứng (bằng chứng OPCC nhỏ hơn đến 30 lần so với PCC gốc), cũng như tốc độ và tỉ lệ thành công chứng minh tự động qua công cụ Frama-C kết hợp prouveur Alt-Ergo.

Timeline nghiên cứu thiết kế theo 3 giai đoạn chính: (1) khảo sát và tổng hợp kiến thức về PCC và các biến thể; (2) phân tích và đề xuất thuật toán truy xuất bộ nhớ không đệ quy cho VEP; (3) thiết kế và thử nghiệm mô hình chứng minh an toàn tự động bằng Frama-C, đồng thời phát triển giao diện trực quan hỗ trợ chứng minh.

## Kết quả nghiên cứu và thảo luận

### Những phát hiện chính

1. **Giảm thiểu kích thước TCB:** FPCC loại bỏ thành phần VCGen phức tạp, giảm dòng lệnh từ khoảng 23000 trong OPCC xuống còn 2700, giúp TCB nhỏ và an toàn hơn.

2. **Giảm kích thước bằng chứng:** OPCC dùng chuỗi oracle thay vì toàn bộ bằng chứng, giảm kích thước dữ liệu truyền giữa nhà sản xuất và người tiêu thụ xuống còn khoảng 12% kích thước chương trình, giảm 30 lần so với PCC truyền thống.

3. **Ứng dụng EPCC tối ưu hóa bằng chứng:** EPCC kết hợp lợi thế FPCC và OPCC, sử dụng VEP chạy generator bằng chứng giúp giảm kích thước bằng chứng và giữ TCB nhỏ (~300 dòng code cho VEP), đáp ứng tốt với các thiết bị giới hạn tài nguyên.

4. **Tự động chứng minh an toàn VEP:** Sử dụng công cụ Frama-C kết hợp plugin Jessie và Alt-Ergo, hơn 88 trong số 137 mục tiêu chứng minh cho bộ thu gom bộ nhớ được tự động xác minh thành công; nhóm lệnh thao tác trên ngăn xếp và bộ nhớ code được chứng minh hoàn toàn tự động.

### Thảo luận kết quả

Giảm thiểu kích thước TCB giúp giảm rủi ro lỗi trong phần mềm trọng yếu, đồng thời giảm thời gian và chi phí bảo trì bảo mật hệ thống. Việc giảm kích thước bằng chứng qua OPCC và EPCC tối ưu hoá băng thông và bộ nhớ trong các hệ thống nhúng, thiết bị di động, rất phù hợp với các ứng dụng IoT hay hệ thống hạn chế tài nguyên.

Đồ thị thể hiện sự giảm thiểu kích thước bằng chứng so với kích thước chương trình ở các kỹ thuật (PCC truyền thống, OPCC, EPCC) sẽ minh họa rõ hiệu quả. Bảng so sánh khối lượng code TCB cũng cho thấy sự khác biệt rõ rệt giữa các mô hình.

Tuy nhiên, tính tự động hóa chứng minh cũng bị giới hạn bởi năng lực hiện tại của prouveur; một phần chứng minh vẫn yêu cầu can thiệp thủ công hoặc bổ sung các trùm luận (axiom) hay đoạn chứng minh trung gian. Vấn đề này tương đồng với các nghiên cứu trước cho thấy thách thức trong tự động hóa chứng minh phức tạp với logic cấp cao. Giải pháp theo luận văn là phát triển các framework chứng minh và mô hình riêng biệt, đồng thời tạo giao diện hỗ trợ người dùng giám sát quá trình chứng minh, từ đó nâng cao khả năng áp dụng thực tế.

## Đề xuất và khuyến nghị

1. **Triển khai thuật toán thu gom bộ nhớ không đệ quy:** Thay thế thuật toán đệ quy hiện có trong VEP bằng thuật toán không đệ quy dựa trên cấu trúc hàng đợi giúp tăng độ ổn định và tránh lỗi tràn ngăn xếp. Thời gian thực hiện: 6-12 tháng; chủ thể: nhóm phát triển phần mềm EPCC.

2. **Tăng cường tích hợp và nâng cấp công cụ chứng minh tự động:** Tích hợp thêm các prouveur mạnh mẽ như Coq, Z3 bên cạnh Alt-Ergo, đồng thời phát triển kho trùm luận và chứng minh trung gian để giảm thiểu sự can thiệp thủ công. Thời gian: 12-18 tháng; chủ thể: nhóm nghiên cứu phần mềm và bảo mật.

3. **Phát triển giao diện người dùng trực quan:** Tiện ích để theo dõi tiến trình chứng minh, quản lý các ràng buộc, chứng minh từng bước nhằm tăng hiệu quả làm việc của người vận hành. Thời gian: 3-6 tháng; chủ thể: nhóm phát triển phần mềm.

4. **Nghiên cứu và tùy chỉnh mô hình PCC cho nền tảng hạn chế tài nguyên:** Thử nghiệm triển khai EPCC trên các thiết bị di động, IoT để đánh giá khả năng mở rộng thực tế, tối ưu hóa chính sách an toàn phù hợp. Thời gian: 12 tháng; chủ thể: nhóm phát triển tích hợp hệ thống.

## Đối tượng nên tham khảo luận văn

1. **Nhà nghiên cứu bảo mật phần mềm:** Nhóm này sẽ có lợi từ các phân tích sâu sắc về công nghệ PCC và các mở rộng EPCC, giúp phát triển các phương pháp kiểm chứng bảo mật mã nguồn và hệ thống nhúng.

2. **Kỹ sư phát triển hệ thống nhúng và IoT:** Luận văn cung cấp nền tảng công nghệ kiểm soát an toàn chương trình tối ưu cho các thiết bị hạn chế tài nguyên, hỗ trợ đảm bảo bảo mật khi chạy phần mềm trên thiết bị không được tin cậy.

3. **Giảng viên và sinh viên ngành khoa học máy tính:** Các khái niệm về logic, chứng minh tự động, và kỹ thuật PCC được trình bày chi tiết giúp xây dựng tài liệu giảng dạy hoặc nghiên cứu tiếp nối trong lĩnh vực an toàn phần mềm.

4. **Nhà phát triển trình biên dịch và công cụ phân tích tĩnh:** Với các kiến thức về chứng minh hợp lệ mã máy cũng như thu thập bằng chứng đi kèm chương trình, họ có thể áp dụng để tăng cường độ tin cậy trình biên dịch và công cụ kiểm tra mã.

## Câu hỏi thường gặp

1. **PCC là gì và tại sao cần kèm bằng chứng?**  
PCC là kỹ thuật gắn kèm bằng chứng toán học với chương trình để chứng minh chương trình đó tuân thủ chính sách bảo mật trước khi thực thi. Phương pháp này giúp tránh việc phải tin tưởng hoàn toàn vào nhà phát triển, tăng bảo mật.

2. **Sự khác biệt giữa PCC truyền thống, OPCC, FPCC và EPCC là gì?**  
PCC truyền thống có TCB lớn và bằng chứng kích thước lớn. OPCC giảm kích thước bằng chứng bằng chuỗi oracle nhưng làm tăng phức tạp TCB. FPCC giảm kích thước TCB bằng cách loại bỏ VCGen nhưng lại làm bằng chứng lớn hơn. EPCC kết hợp ưu điểm, sử dụng máy ảo chạy generator bằng chứng để giảm kích thước bằng chứng và giữ TCB nhỏ.

3. **Vì sao cần máy ảo VEP trong EPCC?**  
VEP chạy generator bằng chứng trên phía người tiêu thụ, giúp tái tạo lại bằng chứng một cách hiệu quả, giảm đáng kể kích cỡ dữ liệu cần trao đổi và giữ TCB nhỏ, thuận tiện cho các thiết bị tài nguyên hạn chế.

4. **Làm thế nào để tự động kiểm chứng an toàn của VEP?**  
Sử dụng công cụ Frama-C với annotation ACSL và plugin Jessie kết hợp prouveur Alt-Ergo để tạo và chứng minh tự động các điều kiện an toàn (pre/post conditions). Phương pháp này giảm thiểu lỗi do kiểm chứng thủ công, tăng độ tin cậy.

5. **Những điểm yếu hiện tại của PCC là gì?**  
Bao gồm kích thước lớn của các thành phần TCB và bằng chứng, cũng như giới hạn trong tự động hóa chứng minh bằng prouveur hiện tại, đòi hỏi đôi khi phải can thiệp thủ công hoặc bổ sung axioms. Đây là thách thức chính trong việc đưa PCC vào ứng dụng thương mại.

## Kết luận

- PCC là công nghệ tiềm năng giúp chứng minh an toàn chương trình trước khi thực thi, phù hợp với các môi trường đòi hỏi bảo mật khắt khe và tài nguyên hạn chế.  
- EPCC với máy ảo VEP cho thấy sự cải tiến vượt trội trong việc cân bằng kích thước TCB và bằng chứng, tăng tính khả thi cho ứng dụng thực tế.  
- Thuật toán thu gom bộ nhớ không đệ quy được đề xuất giúp nâng cao tính ổn định của VEP, tăng tính tự động chứng minh an toàn.  
- Công cụ Frama-C cùng plugin Jessie và prouveur Alt-Ergo có thể tự động chứng minh phần lớn các điều kiện an toàn cho VEP, giảm thiểu công sức con người.  
- Các bước tiếp theo bao gồm hoàn thiện tự động hóa chứng minh bằng cách mở rộng bộ axioms, cải tiến giao diện hỗ trợ, và ứng dụng EPCC trên nền tảng thực tế như hệ thống nhúng và di động.

Hành động tiếp theo: Khuyến nghị nghiên cứu và ứng dụng EPCC trong hệ thống bảo mật thực tế; phát triển thêm các công cụ chứng minh tự động và đào tạo nhân lực chuyên sâu trên nền tảng này.