---
title: "/zh/mpcium/security"
description: "Mpcium 安全模型"
url: https://docs.fystack.io/zh/mpcium/security
last_updated: 2026-11-13
---

> ## Documentation index
> Fetch the complete documentation index at: https://docs.fystack.io/llms.txt
> Use it to discover all available pages before exploring further.

## Mpcium 核心安全原则

Mpcium 实现了门限签名方案，并采用业界标准的安全实践来保护密码学操作：

1. **分布式信任**：任何单一实体都不持有完整的私钥
2. **门限密码学**：签名操作需要 t+1 个节点参与
3. **端到端校验**：所有通信都会被签名和校验
4. **纵深防御**：多层加密与校验

## 身份与认证

### 节点身份管理

- **Ed25519 密钥对**：每个节点都拥有唯一的 Ed25519 密钥对作为身份
- **身份生成**：使用 `generate-identity` 命令安全地创建身份：
  ```
  go run cmd/mpcium-cli/main.go generate-identity --node=node0 --peers=peers.json --encrypt
  ```
- **元数据跟踪**：每个身份都包含创建信息、机器详情和时间戳
- **身份校验**：所有操作都需要身份的密码学证明

### 消息认证

Mpcium 网络中的每条消息都要经过严格校验：

```go
// Messages are signed before transmission
signature, err := s.identityStore.SignMessage(&tssMsg)
if err != nil {
    s.ErrCh <- fmt.Errorf("failed to sign message: %w", err)
    return
}
tssMsg.Signature = signature

// Messages are verified upon receipt
if !s.verifyMessageSignature(message) {
    return fmt.Errorf("invalid message signature")
}
```

- **确定性签名**：消息在签名前会被规范化，以确保一致性
- **Party ID 校验**：TSS 协议确保所有参与节点都拥有有效身份
- **签名校验**：所有入站消息在处理前都要经过签名校验

## 加密技术

### 私钥加密

私钥通过多种机制进行保护：

1. **Age 加密**：

   - 基于 X25519 的先进文件加密工具
   - 基于口令的加密使用 Scrypt 密钥派生
   - 认证加密，确保防篡改

   ```
   # Decrypt private key for use
   age --decrypt -o event_initiator.key event_initiator.key.age
   ```

2. **密码要求**：
   - 以高熵方式生成：
     ```
     < /dev/urandom tr -dc 'A-Za-z0-9!@#$^&\*()-\_=+[]{}|;:,.<>?/~' | head -c 16; echo
     ```
   - 系统通过不会在屏幕上回显的安全输入方式提示用户输入密码

### 本地存储加密

所有节点本地的敏感数据都会被加密：

```go
// BadgerDB with mandatory encryption
	badgerKv, err := kvstore.NewBadgerKVStore(
		dbPath,
		[]byte(viper.GetString("badger_password")),
	)
```

- **缺少密钥即报错**：如果未提供加密密钥，系统将拒绝启动
- **加密索引**：数据和元数据都会被加密
- **ZSTD 压缩**：为提高效率，数据在加密前会先被压缩

## 网络安全

### TLS 实现

所有生产环境通信都使用 TLS：

```yaml
nats:
  url: tls://127.0.0.1:4222 # Required TLS for production
  username: ""
  password: ""

consul:
  address: https://consul.example.com # Required HTTPS for production
```

- **证书校验**：Consul 和 NATS 连接会校验服务器证书
- **双向 TLS**：客户端和服务器相互认证
- **强加密套件**：仅使用现代、安全的加密套件

### 安全消息架构

NATS 消息基础设施提供：

- **主题隔离**：每个会话使用唯一的主题
- **直接消息**：点对点安全通信
- **JetStream 持久化**：关键消息以加密方式持久化
- **队列管理**：带认证的分布式队列处理

## 门限签名协议安全

### 多方计算

门限签名实现包括：

- **密钥重新分享**：支持在保持公钥不变的情况下轮换密钥
- **灵活的门限**：可根据安全需求配置门限
- **协议校验**：消息中包含轮次和协议校验信息

### 会话安全

每个签名或密钥生成会话都实现了：

- **会话隔离**：唯一标识符可防止跨会话干扰
- **超时处理**：未在规定时间内完成的会话将过期
- **错误传播**：安全的错误处理，防止信息泄露
- **轮次校验**：协议的每一轮都会校验预期输入

## 运维安全

### 节点分布

- 将节点部署在不同的：
  - 云服务商
  - 地理区域
  - 网络分段
  - 管理域

### 密钥管理

- **分离密钥材料**：将加密后的密钥与密码分开存储
- **硬件安全**：生产部署可考虑集成 HSM
- **密钥轮换**：建立定期的密钥轮换流程
- **备份安全**：为所有密钥材料维护安全的加密备份

### 网络加固

- **防火墙规则**：仅允许必要端口的通信
- **IP 白名单**：仅允许来自已知 IP 地址的连接
- **DDoS 防护**：为面向公网的组件实施 DDoS 缓解措施
- **网络监控**：监控异常流量模式

### 持续安全

- **依赖扫描**：定期扫描并更新依赖项
- **渗透测试**：定期开展安全评估
- **审计日志**：为所有操作维护完整的审计日志
- **事件响应**：制定并演练安全事件响应流程
