update code and readme
本项目基于开源虚拟机监控器 Rust-Shyper 以及开源Unikernel——Unishyper,实现了虚拟机间的 HTTP SHA256 哈希加密服务。其中,Rust语言实现的轻量级安全内核Unishyper上运行HTTP加密服务器,能够为通用虚拟机提供加密服务。
tiny_http
本教程以RocketChip RK3588开发板为例。
编译Rust-Shyper
# 在 源代码/Rust-Shyper 下编译 # 编译产物: # 源代码/Rust-Shyper/target/aarch64/release/Image_aarch64_rk3588 make rk3588
编译Unishyper
# 在 源代码/Unishyper 下编译 # 编译产物: # 源代码/Unishyper/examples/http_crypto_service/http_crypto_service_aarch64_release.bin make build APP=examples/http_crypto_service ARCH=aarch64 MACHINE=rk3588 PROFILE=release
在RK3588上运行Rust-Shyper和管理虚拟机
管理虚拟机即本赛题中的通用Linux虚拟机,启动方法详见Rust-Shyper开源仓库:https://gitee.com/openeuler/rust_shyper
运行Unishyper
# 将 Tools/ 下的shyper-cli、shyper.ko、vm1-config.json文件放在通用虚拟机的用户目录下 # 安装shyper内核模块 sudo insmod ./shyper.ko # 配置Unishyer安全内核信息 sudo ./shyper-cli vm config vm1-config.json # 启动Unishyper安全内核服务 sudo ./shyper-cli vm boot 1
运行完上述步骤后,通用Linux虚拟机和安全内核Unishyper都已正常运行,在使用安全服务之前,需要为通用虚拟机配置网络,内容详见下一部分——网络配置,安全内核无需配置网络。
```bash nmcliconmod'Wiredconnection1'ipv4 method manual nmcliconmod'Wiredconnection1'ipv4 addresses10.0.0.1/24 nmcliconup'Wiredconnection1 ```
安装UFW
apt update apt install ufw
编辑/etc/default/ufw
修改下面两项:
IPV6=no DEFAULT_FORWARD_POLICY="ACCEPT"
编辑/etc/ufw/sysctl.conf
去除行net/ipv4/ip_forward=1的#
编辑/etc/ufw/before.rules
在文件开头加入如下内容
*nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.0.0.0/24 -o eth1 -j MASQUERADE COMMIT
http://10.0.0.3:3000
POST /hash
GET /
对数据进行 SHA256 哈希加密
请求格式:
POST /hash HTTP/1.1 Content-Type: application/json { "data": "要进行哈希的数据" }
响应格式:
{ "original": "原始数据", "hash": "SHA256哈希结果(十六进制大写)", "status": "success" }
错误响应:
{ "error": "错误信息", "status": "error" }
# 基本测试 curl -X POST http://10.0.0.3:3000/hash \ -H "Content-Type: application/json" \ -d '{"data": "hello world"}' # 预期响应 { "original": "hello world", "hash": "B94D27B9934D3E08A52E52D7DA7DABFAC484EFE37A5380EE9088F7ACE2EFCDE9", "status": "success" }
import requests import json url = "http://10.0.0.3:3000/hash" data = {"data": "hello world"} response = requests.post(url, json=data) print(json.dumps(response.json(), indent=2))
fetch('http://10.0.0.3:3000/hash', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({data: 'hello world'}) }) .then(response => response.json()) .then(data => console.log(data));
0.0.0.0:3000
application/json
text/html
src/ ├── main.rs # 主程序入口 ├── hash_service.rs # 哈希服务逻辑 ├── http_handler.rs # HTTP 请求处理 └── response.rs # 响应格式定义
sha256_hash()
handle_hash_request()
handle_request()
create_response()
基于 Rust-Shyper 项目的许可证。
欢迎提交 Issue 和 Pull Request!
安全是操作系统的重要需求,通用操作系统在密码凭证、生物信息等敏感数据保护方面存在风险,现有安全保护机制依赖处理器特定的硬件机制(如TrustZone、SGX等),在部署使用存在一定的局限性。基于虚拟化进行系统安全增强(如Windows的VBS机制、Android的pKVM等)也是近年来的重要方案,此外目前基于内存安全语言Rust实现操作系统也能够规避安全风险实现安全内核,将两者结合,可以借助虚拟化技术实现双内核架构可以解决安全和生态的平衡,通过同时运行通用内核和安全内核,由安全内核运行安全应用,为通用内核提供安全服务;由虚拟化层提供内存隔离和安全通信,从而支持内存隔离、凭据保护、安全分级等需求。
基于虚拟化技术构建双内核架构,包括通用内核和安全内核,其中安全内核采用Rust语言实现,从而提升自身安全性。具体要求如下:
马俊 majun@nudt.edu.cn
©Copyright 2023 CCF 开源发展委员会 Powered by Trustie& IntelliDE 京ICP备13000930号
🔐 Chirunix HTTP Crypto Service项目说明
本项目基于开源虚拟机监控器 Rust-Shyper 以及开源Unikernel——Unishyper,实现了虚拟机间的 HTTP SHA256 哈希加密服务。其中,Rust语言实现的轻量级安全内核Unishyper上运行HTTP加密服务器,能够为通用虚拟机提供加密服务。
🌟 功能特性
tiny_http的轻量级 HTTP 服务器🚀 快速开始
本教程以RocketChip RK3588开发板为例。
编译和运行
编译Rust-Shyper
编译Unishyper
在RK3588上运行Rust-Shyper和管理虚拟机
管理虚拟机即本赛题中的通用Linux虚拟机,启动方法详见Rust-Shyper开源仓库:https://gitee.com/openeuler/rust_shyper
运行Unishyper
运行完上述步骤后,通用Linux虚拟机和安全内核Unishyper都已正常运行,在使用安全服务之前,需要为通用虚拟机配置网络,内容详见下一部分——网络配置,安全内核无需配置网络。
通用虚拟机网络配置
配置虚拟网卡eth0
配置直通网卡eth1
安装UFW
编辑/etc/default/ufw
修改下面两项:
编辑/etc/ufw/sysctl.conf
去除行net/ipv4/ip_forward=1的#
编辑/etc/ufw/before.rules
在文件开头加入如下内容
服务访问
http://10.0.0.3:3000POST /hashGET /(浏览器访问)📋 API 接口
POST /hash
对数据进行 SHA256 哈希加密
请求格式:
响应格式:
错误响应:
🧪 测试示例
使用 curl 测试
使用 Python 测试
使用 JavaScript 测试
🛠️ 技术架构
依赖库
关键特性
🔧 配置说明
服务器配置
0.0.0.0:3000application/json,text/html安全特性
🎯 使用场景
📝 开发说明
代码结构
关键函数
sha256_hash(): SHA256 哈希计算handle_hash_request(): 处理哈希请求handle_request(): HTTP 请求路由create_response(): 构造 JSON 响应🚨 注意事项
📄 许可证
基于 Rust-Shyper 项目的许可证。
🤝 贡献
欢迎提交 Issue 和 Pull Request!
赛题题目:基于虚拟化技术的操作系统安全增强技术
赛题说明:
安全是操作系统的重要需求,通用操作系统在密码凭证、生物信息等敏感数据保护方面存在风险,现有安全保护机制依赖处理器特定的硬件机制(如TrustZone、SGX等),在部署使用存在一定的局限性。基于虚拟化进行系统安全增强(如Windows的VBS机制、Android的pKVM等)也是近年来的重要方案,此外目前基于内存安全语言Rust实现操作系统也能够规避安全风险实现安全内核,将两者结合,可以借助虚拟化技术实现双内核架构可以解决安全和生态的平衡,通过同时运行通用内核和安全内核,由安全内核运行安全应用,为通用内核提供安全服务;由虚拟化层提供内存隔离和安全通信,从而支持内存隔离、凭据保护、安全分级等需求。
赛题要求:
基于虚拟化技术构建双内核架构,包括通用内核和安全内核,其中安全内核采用Rust语言实现,从而提升自身安全性。具体要求如下:
评分标准:
功能完整性(30%):
应用效果(40%):
代码规范性(20%):
文档质量(10%):
赛题联系人:
马俊 majun@nudt.edu.cn
参考资料:
参赛资源支持:无