stxkxs/hsm

GitHub: stxkxs/hsm

一个使用 Rust 编写的生产级软件 HSM,为云原生和 Web3 场景提供企业级的密钥管理、密码学运算及防篡改审计能力。

Stars: 1 | Forks: 1

# hsm [![License](https://img.shields.io/badge/license-MIT%2FApache--2.0-blue.svg)](LICENSE) [![Rust 版本](https://img.shields.io/badge/rust-1.93%2B-orange.svg)](https://www.rust-lang.org) [![构建状态](https://img.shields.io/badge/build-passing-brightgreen.svg)]() 一个生产级、基于软件的 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, 区块链, 可视化界面, 子域名突变, 密码学, 手动系统调用, 网络流量审计, 自定义请求头, 通知系统