Skip to content

Latest commit

 

History

History
355 lines (272 loc) · 9.34 KB

File metadata and controls

355 lines (272 loc) · 9.34 KB

MeshKit 功能详解

本文档详细说明 MeshKit 的三大核心功能及其安全特性。

1. 文件传输 (File Transfer)

概述

基于 WebRTC Data Channel 的 P2P 文件传输系统,传输层加密保护,支持大文件、多文件的高速安全传输。

安全保障

传输层加密 (DTLS/SRTP)

  • DTLS 1.2+: 握手加密,密钥协商
  • SRTP: 数据流加密,128-256位 AES-GCM
  • 完美前向保密: 每次连接使用新密钥
  • 中间人防护: WebRTC 内置证书验证
  • 数据完整性: 防篡改、防重放攻击

注意: WebRTC 提供传输层加密,文件内容在传输过程中自动加密。未来版本将支持端到端文件加密。

核心特性

1.1 极速传输

  • 局域网速度: 20-50 MB/s
  • 广域网速度: 取决于网络带宽
  • 零服务器中转: 文件直接在设备间传输
  • 自动优化: 根据网络质量动态调整chunk大小

1.2 大文件支持

  • 理论无限制: 支持 1GB+ 大文件
  • 流式传输: 不占用内存,边读边发
  • 智能背压: 防止缓冲区溢出
  • 内存优化: 传输 1GB 文件仅占用 ~10MB 内存

1.3 多文件队列

  • 批量传输: 一次选择多个文件
  • 队列管理: 自动排队、按序传输
  • 进度跟踪: 每个文件独立进度显示
  • 错误处理: 单文件失败不影响其他文件

1.4 实时进度

  • 精确百分比: 实时显示传输进度
  • 速度监控: MB/s 速度实时计算
  • 剩余时间: 基于当前速度估算
  • 文件信息: 文件名、大小、类型

技术实现

数据流

文件选择 → 分块读取(1MB) → WebRTC DC → 分块重组 → 下载
 ↓
 背压控制 (防止溢出)

关键参数

  • Chunk Size: 1MB (可配置)
  • Send Delay: 1ms (背压控制)
  • Timeout: 300秒 (可配置)
  • Max Buffered: 64MB

使用场景

  1. 文件快速分享
  • 局域网内共享文件,无需U盘
  • 手机和电脑互传照片、视频
  1. 会议协作
  • 快速分发会议资料
  • 团队文档共享
  1. 开发场景
  • 共享代码、构建产物
  • 快速部署测试文件

支持的平台

  • Chrome/Edge (最佳体验)
  • Firefox
  • Safari (包括 iOS)
  • Electron Desktop
  • ⏳ React Native Mobile

2. 便签墙 (Sticky Notes)

概述

基于 Yjs CRDT 的实时协同便签墙,WebRTC 加密传输,支持多人同时编辑,无冲突合并。

安全保障

传输层加密 (WebRTC)

  • DTLS 加密: 同文件传输,使用 DTLS 1.2+ 协议
  • P2P 直连: 数据不经过中央服务器
  • 本地存储: 数据保存在本地 IndexedDB,不上传服务器
  • 隐私保护: 便签内容仅在设备间同步

注意: 便签数据使用 WebRTC 传输层加密。如需更高安全性,请使用加密聊天功能传递敏感信息。

核心特性

2.1 实时协同

  • 多人编辑: 支持多个设备同时编辑
  • 即时同步: 编辑内容实时同步到所有设备
  • 无冲突合并: CRDT 算法保证数据一致性
  • 离线支持: 离线编辑,上线后自动同步

2.2 丰富的便签

  • 多种颜色: 7种预设颜色
  • 自由拖动: 拖拽改变位置
  • 大小调整: 支持缩放(规划中)
  • 富文本: 支持多行文本

2.3 P2P 同步

  • 去中心化: 无需中央服务器
  • WebRTC 传输: 基于 y-webrtc
  • 本地持久化: 数据保存在 IndexedDB
  • 自动恢复: 刷新页面后自动恢复

技术实现

CRDT 同步

Yjs.Doc  Y.Array<Note>  y-webrtc  Sync
 
 IndexedDB (持久化)

数据结构

interface Note {
 id: string;
 content: string;
 color: string;
 position: { x: number; y: number };
 timestamp: number;
 author: string;
}

使用场景

  1. 头脑风暴
  • 团队创意收集
  • 思维整理
  1. 任务管理
  • 看板式任务跟踪
  • 待办事项列表
  1. 教学场景
  • 课堂互动
  • 学生笔记共享
  1. 会议记录
  • 实时记录要点
  • 多人协作整理

支持的平台

  • All browsers with IndexedDB
  • Electron Desktop
  • ⏳ React Native Mobile

3. 加密聊天 (Encrypted Chat)

概述

端到端加密 (E2EE) 的即时通讯,基于 libsodium (NaCl) 军事级加密库,256位密钥保证通讯绝对隐私。

安全保障

军事级端到端加密

加密算法栈

  • 密钥交换: ECDH (Curve25519) - 椭圆曲线 Diffie-Hellman
  • 对称加密: Salsa20 流密码 (256位密钥)
  • 消息认证: Poly1305-AES MAC
  • 组合模式: NaCl crypto_box (XSalsa20 + Poly1305)

安全特性

  • 端到端加密 (E2EE): 只有通信双方能解密
  • 完美前向保密 (PFS): 每次连接生成新密钥
  • 防篡改: Poly1305 消息认证码
  • 防重放: Nonce 随机数保护
  • 零服务器存储: 消息不经过服务器,不持久化

密钥强度

密钥长度: 256 位 (32 字节)
密钥空间: 2^256 ≈ 1.16 × 10^77 种可能
破解时间: 以目前算力,破解需要数十亿年

技术细节

// 密钥生成
Curve25519: 高性能椭圆曲线加密
密钥对生成: crypto_box_keypair()
共享密钥: crypto_box_beforenm(peerPublicKey, secretKey)

// 消息加密
算法: XSalsa20 流密码
密钥长度: 256 
Nonce: 192 位随机数 (防重放)
认证: Poly1305-AES (防篡改)

核心特性

3.1 端到端加密

  • NaCl 加密库: 使用 libsodium (NaCl) 工业级加密实现
  • XSalsa20 流密码: 256位密钥,高速加密
  • Poly1305 认证: 防止消息篡改和伪造
  • 军事级强度: 与 Signal、WhatsApp 同级别加密
  • 完全私密: 消息仅在设备间传输,服务器无法窃听

3.2 安全密钥交换

  • ECDH 算法: Elliptic Curve Diffie-Hellman 密钥协商
  • Curve25519: 高性能椭圆曲线,抗侧信道攻击
  • 会话密钥: 每次连接生成全新密钥对
  • 完美前向保密: 密钥泄露不影响历史消息安全
  • 自动交换: 建立连接时自动完成密钥协商

3.3 即时通讯

  • WebRTC DC: 基于 Data Channel
  • 低延迟: <50ms (局域网)
  • 可靠传输: 有序、可靠的消息传递
  • 连接状态: 实时显示在线/离线

技术实现

加密流程

明文消息 → libsodium加密 → 密文 → WebRTC → 解密 → 明文
 ↑ ↓
 共享密钥 ← ECDH密钥交换 → 共享密钥

密钥交换

// 生成密钥对
const keyPair = sodium.crypto_box_keypair();

// 交换公钥 (通过 WebRTC)
send(publicKey);
receive(peerPublicKey);

// 计算共享密钥
const sharedKey = sodium.crypto_box_beforenm(
 peerPublicKey,
 secretKey
);

// 加密消息
const encrypted = sodium.crypto_box_easy(
 message,
 nonce,
 peerPublicKey,
 secretKey
);

安全性分析

威胁防护

  • 窃听保护: 端到端加密,256位密钥
  • 篡改保护: Poly1305 消息认证码
  • 重放攻击: 192位 Nonce 随机数
  • 密钥安全: Curve25519 椭圆曲线,抗侧信道攻击
  • 前向保密: 每次连接新密钥,历史消息不受影响
  • 中间人攻击: 密钥指纹验证(规划中)

安全级别

  • 加密强度: 军事级 (与 Signal、WhatsApp 同级)
  • 密钥长度: 256 位 (当前无法破解)
  • 认证强度: Poly1305 (2^106 安全边界)
  • 随机性: 192 位 Nonce (2^192 组合)

已知限制

  • 本地安全: 不加密本地存储(消息不持久化,刷新即清空)
  • 身份验证: 当前无公钥指纹验证机制
  • 群聊: 暂不支持多人加密群聊
  • 元数据: 连接信息(IP、时间)未加密

使用场景

  1. 企业通讯
  • 内部保密沟通
  • 敏感信息传递
  1. 隐私聊天
  • 个人隐私保护
  • 安全的即时通讯
  1. 团队协作
  • 项目讨论
  • 技术交流

支持的平台

  • All browsers with WebCrypto
  • Electron Desktop
  • ⏳ React Native Mobile

功能对比

功能 文件传输 便签墙 加密聊天
技术栈 WebRTC DC Yjs CRDT + WebRTC libsodium + WebRTC
加密方式 DTLS/SRTP 传输层 DTLS 传输层 E2EE 端到端
加密算法 AES-GCM (128-256位) DTLS 1.2+ XSalsa20+Poly1305 (256位)
密钥管理 每次连接新密钥 (PFS) 每次连接新密钥 (PFS) ECDH 自动交换 (PFS)
隐私级别 传输加密 传输加密 端到端加密
持久化 IndexedDB (本地) IndexedDB (本地) 不持久化 (内存)
多人协作 一对一 多人实时 一对一
离线支持 需在线 离线可用 需在线
实时性 高 (20-50 MB/s) 高 (<100ms) 极高 (<50ms)
数据大小 无限 (1GB+) 适中 (<10MB) 小 (<1MB)
安全威胁防护 中间人、窃听 窃听 窃听、篡改、重放

未来计划

文件传输

  • ⏳ 断点续传
  • ⏳ 文件加密传输
  • ⏳ 文件夹传输
  • ⏳ 二维码扫描接收

便签墙

  • ⏳ 便签大小调整
  • ⏳ 图片便签
  • ⏳ 便签分组
  • ⏳ 导出/导入

加密聊天

  • ⏳ 消息历史(加密存储)
  • ⏳ 文件加密传输
  • ⏳ 语音消息
  • ⏳ 视频通话
  • ⏳ 群聊支持
  • ⏳ 公钥指纹验证

更多问题? 查看 FAQ 或提交 Issue