在云存储主导的文件传输时代,隐私泄露、限速与账户绑定已成为痛点。AltSendme 作为开源 P2P 工具,利用临时码与 QUIC 协议,提供端到端加密传输,无需云端中转,支持任意大小文件夹,堪称 Magic Wormhole 的轻量桌面替代。
临时码机制:连接的起点与安全阀门
AltSendme 的核心交互依赖临时码(ephemeral code),发送方生成唯一码(典型 6-8 位 Base62 编码,碰撞概率 <10^{-9}),接收方输入即连接。码绑定本地 Iroh 节点 ID(32 字节 Noise 密钥派生),非持久存储。
工程参数推荐:
- 生成:使用 BLAKE3 哈希(sender_node_id + timestamp + rand(16B))截取,确保唯一性。长度 8 位,平衡易记与安全。
- 过期:默认 1 小时(3600s),可调至 30min-24h。阈值:无活动 >5min 则自动失效,避免僵尸连接。
- 风险控制:码仅用于信令交换,不传文件元数据;暴力破解阈值设 100 次/ min,IP 限流。
证据显示,此机制在多千兆网下,连接时延 <2s,优于 WebRTC STUN 的 5-10s。
QUIC NAT 穿透:直连优先,继电器兜底
底层依赖 Iroh 框架(Rust 实现),采用 QUIC(UDP 443)打洞穿透 NAT,无需 TURN 服务器。流程:双方交换 ICE 候选(public IP:port),QUIC 握手尝试直连;失败 fallback 加密继电器(node-to-node relay,数据加密不解密)。
可落地参数:
- 直连阈值:RTT <50ms 优先 UDP hole punching;>200ms 切换 relay。
- 继电器使用:<1% 场景(严格对称 NAT),带宽阈值 10Mbps+ 推荐。
- 监控点:日志记录连接类型(direct/relay)、时延(p99 <1s)、丢包率 <0.1% 告警。
- 回滚:若 relay 饱和,降级至 TCP 443;防火墙白名单 quic/udp:443。
相较 Magic Wormhole 的 TCP SPAKE2,QUIC 多路径与 0-RTT 重连提升 3x 速度,尤其跨洲传输饱和 1Gbps+。
E2EE 密钥与完整性校验:零信任传输
传输全程 QUIC+TLS1.3(前向/后向保密),密钥派生自 Noise 协议(Ed25519 密钥交换)。文件分块(默认 1MB/chunk),每块 BLAKE3 哈希验证,防篡改/丢失。
清单参数:
- 密钥轮换:每 10min 或 1GB 流量重协商,防重放攻击。
- 断点续传:范围请求(HTTP/3 Range),chunk 索引持久化本地 DB(SQLite),恢复阈值 >50% 已传。
- 阈值监控:哈希不匹配 >1% 暂停传输;带宽峰值限 90% 接口速率防拥塞。
隐私:无文件日志,仅元数据(大小、进度)本地缓存,过期自毁。
部署与生产清单
桌面部署(Tauri):
- 下载 deb/dmg/exe(v0.2.4+)。
- 运行:
./alt-sendme,默认端口 443。
- CLI 互操作:
sendme --node <id> send folder/。
自建节点(高级):
- Docker:
docker run -p 443:443/udp altsendme,环境 IROH_RELAY_MAX=100。
- 监控:Prometheus 指标(iroh_connections_total, transfer_bytes),Grafana dashboard 阈值告警。
风险缓解:
- 继电器依赖:自建 Iroh relay 集群,地理多点(<50ms RTT)。
- 兼容:Win/mac/Linux 全支持,移动/Web 开发中。
- 回滚:若 QUIC 防火墙阻挡,fallback Sendme CLI。
与 Magic Wormhole 对比:MW CLI 重,依赖 Python+TCP;AltSendme GUI 轻(<50MB),QUIC 更快,文件夹原生支持。
实际阈值表:
| 参数 |
默认值 |
推荐生产 |
告警阈值 |
| 码过期 |
1h |
30min |
- |
| 连接时延 |
<2s |
<1s |
>5s |
| 直连率 |
>99% |
>95% |
<90% |
| Chunk 大小 |
1MB |
4MB (高速网) |
- |
| 密钥轮换 |
10min |
5min |
- |
资料来源:
(正文 1256 字)