Skip to content

M004#27

Open
Ink-dark wants to merge 27 commits into
MoDa-Browser:devfrom
Ink-dark:M004
Open

M004#27
Ink-dark wants to merge 27 commits into
MoDa-Browser:devfrom
Ink-dark:M004

Conversation

@Ink-dark
Copy link
Copy Markdown
Contributor

989ffad5f2d45d 的修改总结,共 13 个提交

1. feat(M004): 添加零拷贝消息类型和通道管理器 (ddd3372)

  • 扩展 IPC 架构,添加消息优先级、TTL、消息类型
  • 实现广播通道支持
  • 添加通道管理器(ChannelManager)
  • 引入 ZeroCopyMessage 使用 bytes::Bytes 实现零拷贝传输

2. test(M004): 添加IPC模块单元测试 (c4a0142)

  • 为 IPC 模块添加完整的单元测试覆盖

3. docs(M004): 更新开发日志 (fa3989d)

  • 更新 MoDa-Browser-dev.md 开发日志

4. fix(M004): 修复通道管理器错误处理和会话令牌验证漏洞 (7c8598d)

  • 修复 ChannelManager 的 list_channels 和 list_broadcast_channels 使用 unwrap() 的问题
  • 添加 session_token 字段到 IpcMessage
  • 修复 detect_connection_hijacking 使用 message.id 而非 session_token 的安全漏洞

5. fix(M004): 修复BroadcastChannel广播逻辑错误和add_receiver返回类型 (6a4a060)

  • 重新设计 BroadcastChannel,存储发送者而非接收者
  • 修复 add_receiver 返回 sender 而非 receiver 的错误
  • 添加 remove_receiver 和 get_receiver_count 方法

6. fix(M004): 修复generate_session_token中的unwrap调用 (684da5c)

  • 将 generate_session_token 的返回类型改为 Result
  • 使用安全的错误处理替代 unwrap()

7. fix(M004): 改进receive_with_timeout通道断开时的错误信息 (f6f0b3f)

  • 改进错误信息为 "Channel disconnected, all senders dropped"

8. fix(M004): 修复get_receiver_count方法中的unwrap调用 (00083d8)

  • 将 get_receiver_count 返回类型改为 Result
  • 使用安全的错误处理替代 unwrap()

9. fix(M004): 将连接劫持检测的时间阈值改为可配置参数 (66ce973)

  • 添加 max_message_age_seconds 配置字段
  • 添加 with_max_message_age 构建器方法
  • 默认值设为 300 秒(5 分钟)
  • 改进错误信息显示实际时间和配置阈值

10. fix(M004): 修复签名验证逻辑,将nonce与签名一起存储和传输 (a1be48b)

  • 创建 MessageSignature 结构体包含 nonce 和 signature
  • 修改 sign_message 和 verify_signature 使用相同的 nonce

11. fix(M004): 在validate_message中添加max_message_age_seconds检查 (018a259)

  • 在 validate_message 中添加 max_message_age_seconds 检查
  • 添加测试用例验证旧消息被拒绝

12. fix(M004): 改进锁中毒错误信息和签名验证逻辑 (68b0d1e)

  • 将 "Lock poisoned" 改为 "Receiver lock poisoned"
  • 使用 bincode 进行确定性序列化替代手动拼接字节
  • 添加 SignatureData 结构体包含时间戳以防止重放攻击

13. fix(M004): 为ZeroCopyMessage添加序列化支持 (5f2d45d)

  • 为 ZeroCopyMessage 添加 Serialize 和 Deserialize
  • 为 Bytes 类型实现自定义序列化模块
  • 添加测试用例验证序列化功能

主要改进

  1. 安全性增强:会话令牌验证、连接劫持检测、时间戳防重放攻击
  2. 错误处理改进:统一使用 Result 类型,消除 unwrap() 导致的 panic 风险
  3. 架构扩展:广播通道、通道管理器、零拷贝消息支持
  4. 序列化支持:ZeroCopyMessage 完整序列化能力
  5. 测试覆盖:添加了多个测试用例确保功能正确性

- 在 BroadcastChannel::broadcast 方法中添加消息过期检查,避免发送无效消息
- 将签名算法从 AES-GCM 加密改为 HMAC-SHA256 专门签名算法,提高安全性
- 添加 hmac 和 sha2 依赖
- 更新 IpcSecurity 结构体,添加独立的 signature_key 字段
- 清理未使用的 MessageSignature 结构体和变量
将消息年龄检查逻辑从 validate_message 提取到独立的 check_message_age 方法以提高代码可维护性。
同时修复解密时硬编码的标签长度,改为使用 AES_256_GCM.tag_len() 获取实际标签长度。
避免在每次循环迭代中克隆消息,改为在循环外克隆一次
修改is_expired方法返回Result类型以处理系统时间错误
添加TimeError枚举类型用于表示系统时间错误
更新相关调用点处理可能的错误情况
将 TimeError 改为包含详细错误信息
提取重复的过期检查逻辑到共享方法
添加中文注释说明安全验证逻辑
在检查IPC消息过期时间时,使用checked_add替代直接加法运算,避免潜在的整数溢出问题。当检测到溢出时返回错误而非静默处理。
添加hkdf依赖并实现从主密钥派生独立加密和签名密钥的功能,增强安全性
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants