stxkxs/hsm
GitHub: stxkxs/hsm
一个使用 Rust 编写的生产级软件 HSM,为云原生和 Web3 场景提供企业级的密钥管理、密码学运算及防篡改审计能力。
Stars: 1 | Forks: 1
# hsm
[](LICENSE)
[](https://www.rust-lang.org)
[]()
一个生产级、基于软件的 Hardware Security Module (HSM),使用 Rust 实现。专为云原生部署设计,具备企业级的安全性、可审计性和高性能。
## 概述
该 HSM 提供加密密钥管理和操作服务,具备通常在硬件 HSM 中发现的功能,但它是通过针对 Kubernetes 环境强化的软件实现的。它支持多租户,提供防篡改的审计日志,并提供全面的密钥生命周期管理。
**核心能力:**
- 加密操作(签名、验证、加密、解密、密钥生成)
- 基于 RBAC 的多租户 namespace 隔离
- 使用 hash chain 和 Merkle 树的防篡改审计追踪
- mTLS 客户端身份验证
- Prometheus 指标和健康检查
- 具备原子操作的加密密钥存储
- 通过 Shamir's Secret Sharing 进行灾难恢复
## 快速开始
### 前置条件
- Rust 1.93 或更高版本
- Protocol Buffers 编译器 (`protoc`)
- OpenSSL 开发库
### 安装
```
# Clone the repository
git clone https://github.com/stxkxs/hsm
cd hsm
# Build the project
cargo build --release
# Run tests
cargo test --workspace
# 启动 HSM 服务器(LOCAL DEVELOPMENT — 内存密钥,无 TLS)。
# 服务器默认需要 TLS + mTLS 客户端认证,如果未提供则拒绝启动;
# 此 flag 仅用于开发环境以禁用该检查。
HSM_ALLOW_INSECURE_TRANSPORT=true cargo run --bin hsm-server
# Production:提供服务器证书、密钥和 client-auth CA,
# 以便通过双向认证的 TLS 提供 crypto API:
# HSM_TLS_CERT=server.crt HSM_TLS_KEY=server.key HSM_TLS_CA=client-ca.crt \
# cargo run --bin hsm-server
# # 对于在重启后依然保留的加密持久化存储,还需要提供数据
# directory 和 master key。master key 可以通过三种方式提供,
# 安全性依次递减:
# HSM_MASTER_KEY_SHARES_DIR Shamir K-of-N shares(完整密钥永不静止)
# HSM_MASTER_KEY_FILE 文件中的十六进制密钥(例如 KMS-mounted secret)
# HSM_MASTER_KEY 环境变量中的十六进制密钥(安全性最低;会发出警告)
# 例如:
# HSM_DATA_DIR=/data/hsm HSM_MASTER_KEY=$(openssl rand -hex 32) ...
# # 服务器通过 flags/environment variables 进行配置;运行时附带 --help 获取
# 完整列表。没有配置文件。
```
### 基本用法
```
# 生成签名密钥 (gRPC)
grpcurl -plaintext -d '{
"namespace": "default",
"key_id": "signing-key-1",
"algorithm": "Ed25519"
}' localhost:50051 hsm.v1.HSM/GenerateKey
# 签名数据
grpcurl -plaintext -d '{
"namespace": "default",
"key_id": "signing-key-1",
"data": "SGVsbG8gV29ybGQ="
}' localhost:50051 hsm.v1.HSM/Sign
# 验证签名
grpcurl -plaintext -d '{
"namespace": "default",
"key_id": "signing-key-1",
"data": "SGVsbG8gV29ybGQ=",
"signature": ""
}' localhost:50051 hsm.v1.HSM/Verify
```
## 功能
### 加密操作
**非对称算法:**
- **RSA**:2048、3072、4096 位密钥(PKCS#1,PSS padding)
- **ECDSA**:P-256、P-384、P-521 曲线
- **Ed25519**:EdDSA 签名(高性能)
**对称加密:**
- **AES-GCM**:128、192、256 位密钥
- **AES-CBC**:PKCS#7 padding
**密钥派生:**
- **PBKDF2**:基于密码的密钥派生
- **HKDF**:基于 HMAC 的密钥派生
- **Argon2**:内存困难型密码哈希
**哈希:**
- SHA-256、SHA-384、SHA-512、SHA3-256、SHA3-512
### 区块链与 Web3
**HD 密钥派生:**
- **BIP-32**:分层确定性密钥派生
- **BIP-39**:助记词生成(12/24 个单词)
- **BIP-44**:适用于多条链的多账户层级结构
**Ethereum 签名:**
- **EIP-191**:个人消息签名 (`eth_sign`)
- **EIP-712**:类型化结构数据签名(许可、兑换等)
- **交易签名**:支持 RLP 编码的交易
**多链支持:**
- **Ethereum**:完整的签名和地址派生
- **Bitcoin**:地址生成和交易签名
- **Solana**:基于 Ed25519 的签名
- **StarkNet**:Stark 曲线 ECDSA,SNIP-12 类型化数据
**验证者保护:**
- **Ethereum 验证者**:针对证明和提案的防 slashing 保护
- 防止双重投票
- 环绕/被环绕投票检测
- 用于客户端迁移的 EIP-3076 交换格式
- **Babylon EOTS**:用于 Bitcoin 质押的可提取一次性签名
- 基于高度的双重签名预防
- 私钥保护(双重签名会暴露私钥)
### 交易策略
**WASM 策略引擎:**
- 使用 Rust、AssemblyScript 或任何 WASM 语言编写自定义策略
- 基于 fuel 的执行限制(gas 计量)
- 针对沙盒化执行的内存和时间限制
**策略决策:**
- `Allow`:交易已批准
- `Deny`:交易已拒绝
- `RequireApproval`:需要额外授权
**策略上下文:**
- 交易详情(to、from、value、data)
- 签名者信息(密钥 ID、namespace、角色)
- 环境(时间戳、chain ID、模拟模式)
### 安全模型
#### 身份验证
- **mTLS(双向 TLS)**:所有客户端必须出示由 HSM 的 CA 签名的有效 X.509 证书
- **OIDC/OAuth2**:与身份提供商集成(Okta、Auth0、Azure AD、Google)
- **会话管理**:具有限时和自动过期的 session
- **速率限制**:可配置的基于客户端和基于 namespace 的速率限制
#### 授权
- **RBAC(基于角色的访问控制)**:细粒度权限系统
- `KeyAdmin`:创建、删除、轮换密钥
- `KeyUser`:签名、加密、解密操作
- `Auditor`:对审计日志的只读访问
- `NamespaceAdmin`:管理 namespace 配置
- **ACL(访问控制列表)**:基于单个密钥的访问限制
- **namespace 隔离**:租户之间完全的逻辑隔离
#### 审计追踪
- **Hash Chain**:每个审计事件都通过加密 hash 链接到前一个事件
- **Merkle 树**:使用 Merkle root 进行定期批量验证
- **篡改检测**:启动时自动进行完整性验证
- **不可变日志**:仅支持追加,并进行日志轮转和归档
### 存储与持久性
#### 加密存储
- **静态加密**:对所有密钥材料使用 AES-256-GCM
- **密钥加密密钥 (KEK)**:使用 Argon2 从主密码派生
- **原子写入**:预写式日志确保一致性
- **日志记录**:通过日志重放进行崩溃恢复
#### 备份与恢复
- **完整备份**:导出所有密钥和配置
- **增量备份**:仅导出自上次备份以来更改的密钥
- **Shamir's Secret Sharing**:将 KEK 拆分为 N 份,需要 M 份才能恢复
- **加密导出**:备份使用独立的密码短语进行加密
- **完整性验证**:为所有备份产物提供 SHA-256 校验和
### 监控与可观测性
#### 指标(Prometheus 格式)
```
# 操作
hsm_operations_total{operation="sign",namespace="default",result="success"}
hsm_operation_duration_seconds{operation="sign",quantile="0.99"}
# 密钥
hsm_keys_total{namespace="default",algorithm="Ed25519",state="active"}
# 会话
hsm_active_sessions{namespace="default"}
# 审计
hsm_audit_events_total{event_type="sign",result="success"}
hsm_audit_integrity_violations_total
```
#### 健康检查
- **存活状态**:`/health/live` - 服务器正在运行
- **就绪状态**:`/health/ready` - 准备好接受请求
- **启动状态**:`/health/startup` - 初始化完成
## 架构
该 HSM 作为一个模块化单体应用构建,包含 23 个组织成功能组的独立 crate:
```
┌─────────────────────────────────────────────────────────────────┐
│ API Layer │
│ gRPC API (50051) │ REST API │ KMIP Server │
├─────────────────────────────────────────────────────────────────┤
│ Security & Auth │
│ Auth/RBAC/OIDC │ WASM Policy Engine │ Webhooks │
├─────────────────────────────────────────────────────────────────┤
│ Core Services │
│ Key Manager │ Crypto Engine │ Audit │ Metrics │ Secrets │
├─────────────────────────────────────────────────────────────────┤
│ Blockchain & Web3 │
│ HD Keys (BIP-32/39/44) │ EIP-191/712 │ Validator/Anti-Slash │
│ Bitcoin │ Solana │ StarkNet │
├─────────────────────────────────────────────────────────────────┤
│ Storage & Recovery │
│ Storage │ Backup/Shamir │ Config │ Hardware Backend │
├─────────────────────────────────────────────────────────────────┤
│ Advanced Cryptography │
│ ZK Proofs │ Verification │ PKCS#11 Bridge │
└─────────────────────────────────────────────────────────────────┘
```
### 模块职责
**核心 HSM:**
| 模块 | 用途 | 关键类型 |
|--------|---------|-----------|
| **crypto-engine** | 加密原语 | `Ed25519Signer`, `RsaSigner`, `AesGcm` |
| **key-manager** | 密钥生命周期与策略 | `KeyStore`, `RotationPolicy` |
| **auth** | 身份验证、RBAC、OIDC | `MtlsAuthenticator`, `RbacPolicy`, `OidcProvider` |
| **audit** | 防篡改日志 | `AuditLogger`, `TamperDetector` |
| **metrics** | Prometheus 指标 | `MetricsCollector` |
| **storage** | 加密持久化 | `EncryptedFileStorage` |
| **backup** | 备份与恢复 | `BackupManager`, `ShamirSecretSharing` |
| **config** | 配置管理 | `HsmConfig` |
**区块链与 Web3:**
| 模块 | 用途 | 关键类型 |
|--------|---------|-----------|
| **blockchain** | HD 密钥、链签名 | `HdWallet`, `Eip191Signer`, `Eip712TypedData`, `StarknetKey` |
| **validator** | 防 slashing 保护 | `SlashingDb`, `EthereumValidator`, `BabylonEots` |
**策略与事件:**
| 模块 | 用途 | 关键类型 |
|--------|---------|-----------|
| **wasm-policy** | 自定义 WASM 策略 | `PolicyEngine`, `PolicyContext`, `PolicyDecision` |
| **webhooks** | 事件投递 | `WebhookDispatcher`, `WebhookRegistry` |
**API 与协议:**
| 模块 | 用途 | 关键类型 |
|--------|---------|-----------|
| **grpc-api** | gRPC 服务器 | `HsmServiceImpl` |
| **rest-api** | REST 服务器 | `RestService` |
| **kmip-server** | KMIP 协议 | `KmipServer` |
| **pkcs11-bridge** | PKCS#11 接口 | `Pkcs11Provider` |
**进阶功能:**
| 模块 | 用途 | 关键类型 |
|--------|---------|-----------|
| **verification** | 签名验证 | `SignatureVerifier` |
| **zk-proofs** | 零知识证明 | `ZkProver`, `ZkVerifier` |
| **hardware-backend** | 硬件 HSM 支持 | `HardwareProvider` |
| **secrets** | 密钥管理 | `SecretStore` |
## 配置
### 配置文件
创建 `config.yaml`:
```
server:
host: "0.0.0.0"
port: 50051
max_connections: 1000
timeout_seconds: 30
tls_enabled: true
tls_cert_path: "/etc/hsm/server-cert.pem"
tls_key_path: "/etc/hsm/server-key.pem"
tls_ca_cert_path: "/etc/hsm/ca-cert.pem"
storage:
backend: "encrypted_file"
data_dir: "/var/lib/hsm"
cache_size_bytes: 104857600 # 100 MB
wal_enabled: true
sync_mode: "full" # full | normal | none
security:
key_derivation_iterations: 100000
encryption_at_rest: true
encryption_algorithm: "aes256gcm"
session_timeout_seconds: 3600
max_auth_attempts: 5
lockout_duration_seconds: 300
audit_log_enabled: true
audit_log_path: "/var/log/hsm/audit.log"
require_strong_passwords: true
min_password_length: 12
logging:
level: "info" # trace | debug | info | warn | error
format: "json"
output: "both" # console | file | both
file_path: "/var/log/hsm/hsm.log"
max_file_size_bytes: 104857600
max_backup_files: 10
metrics:
enabled: true
format: "prometheus"
listen_addr: "0.0.0.0"
listen_port: 9090
collection_interval_seconds: 60
enable_histograms: true
histogram_buckets: [0.001, 0.01, 0.1, 1.0, 10.0]
namespaces:
default:
description: "Default namespace"
max_keys: 10000
access_control:
allowed_ips: []
denied_ips: []
max_concurrent_sessions: 100
```
### 环境变量
通过环境变量覆盖配置:
```
export HSM_SERVER__PORT=50051
export HSM_STORAGE__DATA_DIR=/var/lib/hsm
export HSM_SECURITY__SESSION_TIMEOUT_SECONDS=7200
```
### 预设
使用配置预设应对常见场景:
```
// Development (insecure, fast)
HsmConfig::development()
// Production (secure defaults)
HsmConfig::production()
// Testing (in-memory, minimal)
HsmConfig::test()
```
## 文档
### API 文档
全面的 API 文档以 Rust 文档 的形式提供:
```
# 为所有 crates 生成并打开文档
cargo doc --workspace --no-deps --open
# 或查看特定 crate 文档
cargo doc -p crypto-engine --no-deps --open
cargo doc -p audit --no-deps --open
cargo doc -p key-manager --no-deps --open
```
**文档内容包括:**
- 所有公开的 API,包含示例和错误处理
- 模块级架构概述
- 加密函数的安全注意事项
- 性能特征和复杂度分析
- 算法说明(Merkle 树、hash chain、Shamir's Secret Sharing)
**直接链接**(构建后):
- [crypto-engine](target/doc/crypto_engine/index.html) - 加密原语
- [audit](target/doc/audit/index.html) - 防篡改日志
- [key-manager](target/doc/key_manager/index.html) - 密钥生命周期管理
- [auth](target/doc/auth/index.html) - 身份验证与授权
- [grpc-api](target/doc/grpc_api/index.html) - gRPC 服务实现
- [storage](target/doc/storage/index.html) - 加密持久化
- [backup](target/doc/backup/index.html) - 备份与恢复
- [config](target/doc/hsm_config/index.html) - 配置管理
- [metrics](target/doc/metrics/index.html) - Prometheus 指标
### gRPC 服务定义
请参阅 `crates/grpc-api/proto/hsm.proto` 获取完整的 API 规范。
**核心操作:**
- `GenerateKey(GenerateKeyRequest) -> GenerateKeyResponse`
- `ImportKey(ImportKeyRequest) -> ImportKeyResponse`
- `DeleteKey(DeleteKeyRequest) -> DeleteKeyResponse`
- `ListKeys(ListKeysRequest) -> ListKeysResponse`
- `RotateKey(RotateKeyRequest) -> RotateKeyResponse`
**加密操作:**
- `Sign(SignRequest) -> SignResponse`
- `Verify(VerifyRequest) -> VerifyResponse`
- `Encrypt(EncryptRequest) -> EncryptResponse`
- `Decrypt(DecryptRequest) -> DecryptResponse`
- `Hash(HashRequest) -> HashResponse`
**管理操作:**
- `CreateNamespace(CreateNamespaceRequest) -> CreateNamespaceResponse`
- `GetAuditLog(GetAuditLogRequest) -> GetAuditLogResponse`
- `CreateBackup(CreateBackupRequest) -> CreateBackupResponse`
- `RestoreBackup(RestoreBackupRequest) -> RestoreBackupResponse`
### 客户端库
```
// Rust client example
use tonic::transport::Channel;
use hsm_proto::hsm_service_client::HsmServiceClient;
#[tokio::main]
async fn main() -> Result<(), Box> {
let channel = Channel::from_static("https://hsm.example.com:50051")
.tls_config(tls_config)?
.connect()
.await?;
let mut client = HsmServiceClient::new(channel);
let request = tonic::Request::new(GenerateKeyRequest {
namespace: "production".to_string(),
key_id: "api-signing-key".to_string(),
algorithm: Algorithm::Ed25519 as i32,
..Default::default()
});
let response = client.generate_key(request).await?;
println!("Generated key: {:?}", response.get_ref());
Ok(())
}
```
## 部署
### Kubernetes
```
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: hsm
spec:
serviceName: hsm
replicas: 3
selector:
matchLabels:
app: hsm
template:
metadata:
labels:
app: hsm
spec:
containers:
- name: hsm
image: stxkxs/hsm:latest
ports:
- containerPort: 50051
name: grpc
- containerPort: 9090
name: metrics
volumeMounts:
- name: data
mountPath: /var/lib/hsm
- name: config
mountPath: /etc/hsm
env:
- name: HSM_STORAGE__DATA_DIR
value: /var/lib/hsm
livenessProbe:
httpGet:
path: /health/live
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /health/ready
port: 8080
initialDelaySeconds: 10
periodSeconds: 5
volumes:
- name: config
configMap:
name: hsm-config
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 10Gi
```
### Docker Compose
```
version: '3.8'
services:
hsm:
build: .
ports:
- "50051:50051"
- "9090:9090"
volumes:
- ./data:/var/lib/hsm
- ./config.yaml:/etc/hsm/config.yaml:ro
- ./certs:/etc/hsm/certs:ro
environment:
RUST_LOG: info
```
## 性能
### 基准测试
在 Apple M1 Pro 上测量(单线程):
| 操作 | 吞吐量 | 延迟 (p99) |
|--------------------------|-------------------|---------------|
| Ed25519 Sign | 12,000 ops/sec | 0.2 ms |
| Ed25519 Verify | 8,500 ops/sec | 0.3 ms |
| ECDSA P-256 Sign | 3,200 ops/sec | 0.8 ms |
| AES-256-GCM Encrypt | 850 MB/sec | 0.1 ms |
| Key Generation (Ed25519) | 9,000 ops/sec | 0.3 ms |
| Audit Log Write | 15,000 events/sec | 0.15 ms |
运行基准测试:
```
cargo bench --workspace
```
### 优化建议
1. **批量操作**:使用批量 API 进行多项操作
2. **会话重用**:保持 session 活跃以避免重新身份验证
3. **连接池**:维持持久的 gRPC 连接
4. **禁用同步写入**:为非关键设置 `sync_mode: "normal"`(仅用于测试)
5. **调整缓存大小**:为重度依赖密钥的工作负载增加 `cache_size_bytes`
## 开发
### 项目结构
```
hsm/
├── crates/
│ ├── crypto-engine/ # Cryptographic primitives
│ ├── key-manager/ # Key lifecycle management
│ ├── auth/ # Authentication, RBAC, OIDC
│ ├── grpc-api/ # gRPC server implementation
│ ├── rest-api/ # REST server implementation
│ ├── audit/ # Audit logging & tamper detection
│ ├── metrics/ # Prometheus metrics
│ ├── storage/ # Encrypted storage backend
│ ├── backup/ # Backup & recovery
│ ├── config/ # Configuration management
│ ├── hsm-server/ # Main binary
│ ├── blockchain/ # HD keys, EIP-191/712, multi-chain
│ ├── validator/ # Anti-slashing for ETH/Babylon
│ ├── wasm-policy/ # WASM policy engine
│ ├── webhooks/ # Event delivery system
│ ├── verification/ # Signature verification
│ ├── zk-proofs/ # Zero-knowledge proofs
│ ├── hardware-backend/ # Hardware HSM support
│ ├── pkcs11-bridge/ # PKCS#11 interface
│ ├── secrets/ # Secret management
│ ├── kmip-server/ # KMIP protocol support
│ ├── cluster/ # Raft-based high availability
│ └── bridge-monitor/ # Cross-chain bridge monitoring
├── docs/
│ ├── architecture/ # Design documents
│ └── phases/ # Implementation plans
├── .claude/ # Claude Code configuration
│ ├── skills/ # Custom development skills
│ └── settings.json # Hooks and preferences
└── config/ # Example configurations
```
### 运行测试
```
# 所有测试
cargo test --workspace
# 特定模块
cargo test -p crypto-engine
# 集成测试
cargo test --test integration_tests
# 显示输出
cargo test -- --nocapture
# 性能测试(发出警告,而非失败)
cargo test performance
```
### 代码质量
```
# 格式化代码
cargo fmt --all
# Linting
cargo clippy --all -- -D warnings
# 安全审计
cargo audit
# 测试覆盖率
cargo install cargo-llvm-cov
cargo llvm-cov --workspace --lib --summary-only
# 生成 HTML 覆盖率报告
cargo llvm-cov --workspace --lib --html
open target/llvm-cov/html/index.html
# 检查过期依赖
cargo outdated
# Fuzzing(仅限 crypto-engine)
cd crates/crypto-engine
cargo fuzz run fuzz_ed25519_sign
```
### 贡献
1. Fork 该仓库
2. 创建一个功能分支 (`git checkout -b feature/amazing-feature`)
3. 进行您的更改
4. 运行测试 (`cargo test --workspace`)
5. 运行 clippy (`cargo clippy --all -- -D warnings`)
6. 提交您的更改 (`git commit -m 'add amazing feature'`)
7. 推送到该分支 (`git push origin feature/amazing-feature`)
8. 提交一个 Pull Request
**代码风格:**
- 遵循 Rust 标准格式化 (`cargo fmt`)
- 为新功能编写全面的测试
- 更新 API 更改的 rustdoc 文档(函数使用 `///`,模块使用 `//!`)
- 在文档中尽可能包含示例
- 为加密/认证代码记录安全注意事项
- 移除琐碎的注释 - 提倡自解释代码
## 安全注意事项
### 威胁模型
**防范措施:**
- 未经授权访问密钥材料
- 篡改审计日志
- 重放攻击
- 会话劫持
- 内部威胁(通过 RBAC 和审计)
**未防范措施:**
- 对正在运行的进程的内存攻击(为此请使用硬件 HSM)
- 物理访问存储介质(通过静态加密缓解)
- CA 私钥泄露(定期轮换 CA)
- 侧信道攻击(在可能的情况下使用常量时间加密)
### 已知漏洞
**RUSTSEC-2023-0071:RSA Marvin 攻击**(中等严重程度)
- **受影响**:RSA 加密/解密操作
- **问题**:在 PKCS#1 v1.5 解密中可能通过时序侧信道导致密钥恢复
- **缓解措施**:目前没有上游修复可用。建议在可能的情况下使用 OAEP padding 代替 PKCS#1 v1.5
- **参考**:https://rustsec.org/advisories/RUSTSEC-2023-0071
**RUSTSEC-2024-0398:Shamir Secret Sharing 系数偏差**
- **受影响**:使用 Shamir's Secret Sharing 进行备份和恢复
- **问题**:在密钥拆分期间,多项式系数可能存在偏差
- **缓解措施**:目前没有上游修复可用。考虑为关键的密钥拆分增加额外的随机性来源
- **参考**:https://rustsec.org/advisories/RUSTSEC-2024-0398
上述两项建议包含了与安全相关的缓解措施。已接受的传递性建议的完整规范列表(所有未维护 crate 的警告,且无上游修复、无运行时暴露 —— 例如 `paste`、`fxhash`、`derivative`、`serde_cbor`)及其逐项理由记录在 [`.cargo/audit.toml`](.cargo/audit.toml) 中。`cargo audit --deny warnings` 可以根据该忽略列表通过检查。
### 最佳实践
1. **密钥轮换**:定期轮换 KEK 和数据密钥
2. **访问控制**:使用最小权限的 RBAC 策略
3. **审计审查**:监控审计日志以发现可疑活动
4. **备份安全**:将备份存储在独立、安全的位置
5. **TLS 配置**:使用强加密套件和 TLS 1.3+
6. **速率限制**:为每个 namespace 配置适当的速率限制
7. **监控**:为指标异常设置警报
### 合规性
此 HSM 实现可帮助满足以下要求:
- **PCI DSS**:密钥管理和审计日志记录
- **HIPAA**:静态加密和访问控制
- **SOC 2**:审计追踪和访问管理
- **GDPR**:数据加密和访问日志记录
## 故障排除
### 常见问题
**HSM 启动失败:**
```
# 检查日志
tail -f /var/log/hsm/hsm.log
# 验证配置
cargo run --bin hsm-server -- --config config.yaml --validate
# 检查权限
ls -la /var/lib/hsm
```
**身份验证失败:**
```
# 验证证书
openssl verify -CAfile ca-cert.pem client-cert.pem
# 检查证书日期
openssl x509 -in client-cert.pem -noout -dates
# 启用 debug 日志记录
export RUST_LOG=debug
```
**性能下降:**
```
# 检查 metrics
curl http://localhost:9090/metrics | grep hsm_operation_duration
# 监控资源使用情况
htop
# 检查存储 I/O
iostat -x 1
```
## 许可证
根据您的选择,在以下双重许可证下授权:
- MIT 许可证 ([LICENSE-MIT](LICENSE-MIT) 或 http://opensource.org/licenses/MIT)
- Apache 许可证,版本 2.0 ([LICENSE-APACHE](LICENSE-APACHE) 或 http://www.apache.org/licenses/LICENSE-2.0)
## 致谢
构建工具:
- [RustCrypto](https://github.com/RustCrypto) - 加密实现
- [Tonic](https://github.com/hyperium/tonic) - gRPC 框架
- [Tokio](https://github.com/tokio-rs/tokio) - 异步运行时
- [Prometheus](https://prometheus.io/) - 指标和监控
标签:HSM(硬件安全模块), Python工具, Rust, 区块链, 可视化界面, 子域名突变, 密码学, 手动系统调用, 网络流量审计, 自定义请求头, 通知系统