🔒 深入了解 MemCloud 的安全对等身份验证:设备如何在局域网安全共享 RAM

发布: (2025年12月12日 GMT+8 00:38)
6 min read
原文: Dev.to

Source: Dev.to

当我发布 MemCloud(一个面向 macOS & Linux 的分布式 RAM 引擎)时,收到的最大疑问是:

“让其他设备存储你的 RAM 不会很危险吗?它是怎么保证安全的?”

下面是一篇针对 MemCloud 背后的身份验证、加密和信任模型的深度剖析——专为热爱协议、威胁模型和密码学设计的工程师而写。本文只关注安全 & 身份验证层。

(如果你对 MemCloud 还不熟悉,请先阅读介绍博客——本文假设你已经了解基本概念。)

威胁模型

威胁示例
冒充恶意设备假装是受信任的对等节点
中间人攻击(MITM)攻击者拦截或篡改握手流量
重放攻击重复使用旧的握手消息
未授权内存访问设备悄悄加入集群
会话劫持窃取或预测流量密钥

MemCloud 的协议针对上述所有威胁提供了解决方案。

身份密钥

每台设备都有一对长期身份密钥,存放在:

~/.memcloud/identity_key
  • 算法: Ed25519(快速 + 安全)
  • 用途: 仅用于对握手记录进行签名——从不用于加密。

这相当于一种设备证书,却不需要 PKI 的复杂性。

身份验证流程(Noise XX)

MemCloud 使用受 Noise Protocol Framework 启发的身份验证流程,具体为 Noise_XX 模式,选择它的原因是:

  • 双方均从未认证状态开始
  • 支持首次使用信任(TOFU)
  • 提供相互认证
  • 确保前向保密性

简化握手

A → B : eA, nonceA
B → A : eB, nonceB
A → B : identity proof (encrypted)
B → A : identity proof (encrypted)

eAeB 为临时 X25519 公钥。

每条握手消息都会被哈希进一个记录:

H = Hash(H || message)

这可以防止重放、降级以及跨会话攻击,随后该记录会被用于密钥派生。

密钥派生 & 身份证明

  1. 计算共享密钥:

    shared_secret = DH(eA, eB)
  2. 派生会话密钥:

    session_key = HKDF(shared_secret + transcript_hash)
  3. 每台设备使用其长期身份密钥对记录哈希进行签名:

    signature = Sign(TranscriptHash, IdentityKey)
    • 签名会被加密、绑定到记录,且不能被重放。
    • 若验证失败,连接会立即关闭。

流量加密

最终的流量密钥如上所述派生,并使用 ChaCha20‑Poly1305 AEAD,这对于高速 LAN 通信来说是理想选择。

受信任的对等节点

受信任的对等节点信息存放在:

~/.memcloud/trusted_devices.json

对已知节点的后续连接:

  • 仍然进行密码学认证
  • 跳过交互式批准
  • 不能被悄悄伪装或替换

身份验证失败会怎样?

如果出现以下任意情况,MemCloud 会拒绝会话:

  • 身份签名失败
  • 记录哈希不匹配
  • 握手格式错误
  • 设备不在受信任列表中
  • 同意层阻止授权

被拒绝的节点将无法:

  • 读取你的 RAM
  • 接收块数据
  • 加入集群
  • 冒充之前的节点

为什么不使用 TLS?

TLS 功能强大,但并非 P2P LAN 内存引擎的最佳选择:

  • MemCloud 追求 零配置;Noise 开箱即用。
  • 目标延迟是 10 ms 以下;Noise 的轻量二进制协议更快。
  • 相互认证、身份隐藏、前向保密和 TOFU 等需求天然由 Noise 模式满足。

测试结果

攻击尝试结果
重放通过记录不匹配被阻止
MITM通过身份证明不匹配被阻止
冒充通过签名无效被阻止
降级尝试不可能实现
有效负载篡改通过 MAC 失败被阻止

迄今为止,该协议在真实 LAN 环境中表现极佳。

计划中的改进

  • 🔄 信任撤销广播
  • 🖥 GUI 信任管理器
  • 🛡 可选硬件支持的身份密钥
  • 🔁 会话恢复
  • 📦 跨节点加密复制

欢迎贡献代码。

资源

  • 身份验证代码: memnode/src/net/auth
  • 主仓库:
  • 文档:
  • CLI 信任管理器: memcli trust

MemCloud 表面看起来很简单——“设备在 LAN 上共享 RAM”——但其底层是一套精心设计的安全协议,确保这种共享真正安全。

如果你想进一步了解 P2P 二进制协议、内存隔离模型、配额强制或零拷贝流设计,随时告诉我!

Back to Blog

相关文章

阅读更多 »