v2.0: 新增 ChaosCryptChat 端到端加密聊天系统 + 更新文档
This commit is contained in:
+67
@@ -765,4 +765,71 @@ DeriveKey(K\_user, K\_short, n) 包含:
|
||||
================================================================================
|
||||
|
||||
|
||||
================================================================================
|
||||
十、ChaosCryptChat 聊天模块安全分析(v2.0)
|
||||
================================================================================
|
||||
|
||||
本部分分析 ChaosCryptChat(端到端加密聊天系统)的安全模型。
|
||||
|
||||
10.1 威胁模型
|
||||
|
||||
假设:
|
||||
- 中央服务器可被攻击者完全控制(最坏情况)
|
||||
- 网络传输可被监听、篡改、重放
|
||||
- 客户端本地文件可信(不讨论端侧木马)
|
||||
|
||||
10.2 端到端加密
|
||||
|
||||
消息路径:
|
||||
明文 → 混沌加密(群密钥 + nonce 派生消息密钥)→ 密文 → 网络 → 密文 → 混沌解密 → 明文
|
||||
|
||||
关键属性:
|
||||
- 群密钥只存在于客户端本地,永不上传服务器
|
||||
- 服务器仅中继密文,无法解密任何消息
|
||||
- 每条消息使用独立 nonce 派生消息密钥,避免重放
|
||||
- HMAC-SHA256 完整性校验:密文被篡改将导致解密失败
|
||||
|
||||
10.3 中央服务器模型
|
||||
|
||||
服务器职责:用户认证 + 群成员管理 + 消息中继
|
||||
|
||||
服务器不持有:
|
||||
- 群密钥(session key)
|
||||
- 消息明文
|
||||
- 每用户密钥(user key,经服务器持有密钥加密后下发)
|
||||
|
||||
服务器被攻陷的影响:
|
||||
- 无法解密历史或实时聊天内容
|
||||
- 可能泄露:用户名、登录时间、中继日志、群成员关系
|
||||
- 可实施:拒绝服务、成员关系观察(元数据泄露)
|
||||
|
||||
10.4 身份认证
|
||||
|
||||
用户密码:PBKDF2-HMAC-SHA256,120,000 次迭代 + 随机盐
|
||||
每用户密钥:加入群时签发,用于 HMAC 签名,防止成员冒充他人
|
||||
群密钥认证:加入群需提供群密钥派生的认证凭据,证明是群成员
|
||||
|
||||
10.5 消息完整性
|
||||
|
||||
文本/语音/文件消息均携带 HMAC:
|
||||
- 文本: HMAC(密文 + 群密钥)
|
||||
- 二进制: HMAC('BIN|' + 群密钥 + nonce + 密文)
|
||||
|
||||
篡改检测:接收方重算 HMAC 不匹配 → 拒绝消息
|
||||
|
||||
10.6 已知限制
|
||||
|
||||
1. 端到端(P2P)模式下,群主主机既是聊天者又是服务器,若群主被攻陷则群聊失守
|
||||
2. 服务器虽无法解密内容,但能观察到元数据(谁和谁在何时通信)
|
||||
3. 群密钥通过群主手动分享,存在被截获的风险(需可信渠道传递)
|
||||
4. 语音播放/录音依赖第三方库(pygame/sounddevice),其安全性不在本系统保证范围
|
||||
5. 消息撤回仅做本地标记 + 服务器广播,已离线成员仍可能看到撤回前的消息
|
||||
|
||||
10.7 结论
|
||||
|
||||
ChaosCryptChat 提供端到端加密 + 完整性校验 + 身份认证,服务器无法解密内容。
|
||||
其安全边界符合"服务器不可信"模型,适合对隐私有要求但不涉及合规认证的通信场景。
|
||||
元数据泄露与密钥分享渠道仍需用户自行权衡与管理。
|
||||
|
||||
================================================================================
|
||||
|
||||
|
||||
Reference in New Issue
Block a user