Skip to content

文档

安全模型

设备身份、配对证明、签名信令与"先鉴权后串流"。


Nearshell 的安全目标很直接:只有你亲自配对过的两台设备,才能互相控制;即使我们的服务器被攻破,也无法冒充任一端、篡改内容,或看到你的屏幕。

设备身份

  • Mac 拥有一个稳定且不可编辑的设备身份;
  • 双方各自持有一对 Curve25519 密钥,私钥存于 Keychain,永不离开设备;
  • 配对完成后,双方各自固定(pin)对端的公钥。

配对:一次性二维码 + HMAC 双向证明

  1. Mac 生成一个一次性邀请,包含设备名称、型号与一个一次性 secret,以二维码 / 文本形式展示;
  2. iPhone 导入后,双方基于该一次性 secret 通过 HMAC 双向证明彼此身份,并自动固定对端公钥;
  3. Mac 随即销毁一次性 secret,之后全程使用签名信令。

一次性 secret 只在配对窗口内有效,证明完成即失效,不会长期驻留。

签名信令

一旦对端公钥被固定,建连所需的每一条信令(accept / offer / answer / candidate)都会被签名。对端在处理前会校验:

  • 会话:属于当前会话;
  • 端点身份:签名者是你固定过的对端;
  • 时间窗:在允许的时钟窗口内(抗重放);
  • 单调序列:序列号单调递增(抗重放 / 乱序注入);
  • 签名:内容摘要与 Curve25519 签名匹配。

先鉴权,后串流

连接建立后并不会立刻传画面。只有在控制通道上完成双向 challenge-response、双方都证明了身份之后,连接才进入串流状态,画面在此之后才开始传输。对端在拿到任何屏幕内容之前,必须先证明自己是谁。

端到端加密

画面、键鼠输入与终端文本走端到端加密的实时通道。信令服务器只转发签名后的建连信息,拿不到、也解不开你的内容;即使连接必须经过我们的 TURN 中转,节点转发的也只是密文。参见首页隐私一节。

输入注入的边界

  • Mac 端仅在你授予辅助功能权限后才注入键鼠输入;
  • 连接离开串流状态时,会立即释放所有仍按下的鼠标 / 键盘按键,避免”卡键”。