Mpcium 核心安全原则
Mpcium 实现了门限签名方案,并采用业界标准的安全实践来保护密码学操作:
- 分布式信任:任何单一实体都不持有完整的私钥
- 门限密码学:签名操作需要 t+1 个节点参与
- 端到端校验:所有通信都会被签名和校验
- 纵深防御:多层加密与校验
身份与认证
节点身份管理
- Ed25519 密钥对:每个节点都拥有唯一的 Ed25519 密钥对作为身份
- 身份生成:使用
generate-identity命令安全地创建身份:go run cmd/mpcium-cli/main.go generate-identity --node=node0 --peers=peers.json --encrypt - 元数据跟踪:每个身份都包含创建信息、机器详情和时间戳
- 身份校验:所有操作都需要身份的密码学证明
消息认证
Mpcium 网络中的每条消息都要经过严格校验:
// 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 协议确保所有参与节点都拥有有效身份
- 签名校验:所有入站消息在处理前都要经过签名校验
加密技术
私钥加密
私钥通过多种机制进行保护:
-
Age 加密:
- 基于 X25519 的先进文件加密工具
- 基于口令的加密使用 Scrypt 密钥派生
- 认证加密,确保防篡改
# Decrypt private key for use age --decrypt -o event_initiator.key event_initiator.key.age -
密码要求:
- 以高熵方式生成:
< /dev/urandom tr -dc 'A-Za-z0-9!@#$^&\*()-\_=+[]{}|;:,.<>?/~' | head -c 16; echo - 系统通过不会在屏幕上回显的安全输入方式提示用户输入密码
- 以高熵方式生成:
本地存储加密
所有节点本地的敏感数据都会被加密:
// BadgerDB with mandatory encryption
badgerKv, err := kvstore.NewBadgerKVStore(
dbPath,
[]byte(viper.GetString("badger_password")),
)
- 缺少密钥即报错:如果未提供加密密钥,系统将拒绝启动
- 加密索引:数据和元数据都会被加密
- ZSTD 压缩:为提高效率,数据在加密前会先被压缩
网络安全
TLS 实现
所有生产环境通信都使用 TLS:
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 缓解措施
- 网络监控:监控异常流量模式
持续安全
- 依赖扫描:定期扫描并更新依赖项
- 渗透测试:定期开展安全评估
- 审计日志:为所有操作维护完整的审计日志
- 事件响应:制定并演练安全事件响应流程