# microkylin_manager **Repository Path**: openkylin/microkylin_manager ## Basic Information - **Project Name**: microkylin_manager - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-16 - **Last Updated**: 2026-01-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## microkylin_manager ### 简介 microkylin_manager是一个运行在x-kernel上的服务,负责对x-kernel上的其他应用或服务进行度量和校验。它承接pvmfw处的Dice可信链,并在应用层对Dice可信链进行了拓展。其实现参考了Android的microdroid。 ### 基本架构 1. 代码集 - fileverify 包括哈希树的实现、算法类型的定义、v3、v4文件(对于APK文件)和文件压缩的实现。 - libdice microkylin_manager的Dice Driver和示例数据,Dice Driver用于联系kernel的Dice和microkylin_manager。 - microkylin_payload_metadata 参考Android实现,Android为Apex文件设计,在主程序中实际并未使用,此处保留以待后续扩展。 - opendice 从opendice(C库)中转出的rust接口,包括计算Dice链、获取Handover值、从CDI计算密钥对等底层核心操作函数。 - rustutils 对于文件系统和Socket所做操作。 - 主程序 rust层面的Dice链派生、instance的创建、签名和验证、数据校验等关键函数,以及主运行逻辑。 2. 测试集 - data 存储测试数据(文件)和测试列表。 - dice 测试所用的dice数据。 - instance 测试用的instance镜像。 - ssl 测试所用的密钥和签名数据。 ### 运行环境 Starry OS,或其他具有rust std环境、rust-mbedtls和dice crate的Linux系统。 ### 快速开始 1. 准备环境 确保在/var/lib下存在microkylin目录,并在microkylin目录下存在data、dice、instance和ssl目录。将官方公钥添加到/etc/ssl目录下(暂无,用户可以自行配置,命名为microkylin_pub.pem)。 2. 运行测试 cargo test ### 运行指南 1. 创建to_be_verified文件列表 创建一个tbv文件,将待校验的应用或服务源文件路径写入其中,tbv文件使用cdi_seal进行加密,确保文件不被非法篡改。 `cargo run tbv add ` 向tbv文件中添加待校验的文件。 `cargo run tbv pop` 从tbv文件中删除最后一个待校验的文件。 `cargo run tbv read` 读取tbv文件中的待校验文件列表。 2. 生成签名 对于用户而言,标准签名文件应该已经存在于/var/lib/microkylin/ssl目录下。 对于开发者而言,可以通过 `cargo run sig ` 来生成签名文件。 注意:所有tbv中包含的文件都需要进行签名。签名的私钥和microkylin_pub.pem必须对应。 3. 创建instance镜像 `cargo run img` 4. 运行 `cargo run` 5. 进程间调用 `cargo run ipc` 调用进程需实现ipc通信函数,可参考ipc.rs中`request_dice_chain_from_server()`函数的实现。通过ipc通信将Dice链数据传递给进程。 ### 预期结果 验证通过,microkylin_manager将生成Dice链数据,并输出Success。 应用或服务若被篡改,验证将失败,microkylin_manager将报错异常退出。