跳至内容
Secret Knock

适用于 iPhone、iPad、Mac 和 Apple Watch 的 fwknop SPA 客户端

fwknop 使用一个经过加密和认证的数据包来替代可被猜测的序列。Secret Knock 使用您的密钥在设备上构建该数据包,并通过 UDP 或 HTTP 将其发送至 fwknopd。

兼容 fwknopd

Secret Knock 通过 UDP 向端口 62201 或您设置的其他端口发送 fwknop 的 Rijndael (AES) 加密和 HMAC(默认使用 SHA-256,也可选择其他摘要算法),或将其作为 HTTP 请求发送。您可以为数据包来源地址请求访问权限,也可以指定另一个地址;如果服务器允许,还可以发送 fwknop 命令模式消息。

设置服务器

使用 fwknop --key-gen 生成密钥对,并将两个密钥都放入服务器的 access.conf。

SOURCE              ANY
OPEN_PORTS          tcp/22
KEY_BASE64          <output of fwknop --key-gen>
HMAC_KEY_BASE64     <output of fwknop --key-gen>
FW_ACCESS_TIMEOUT   30
/etc/fwknop/access.conf

在 App 中添加门

  1. 1新建门 › 类型:单数据包 (fwknop),或从模板开始 › fwknop。
  2. 2使用“粘贴密钥”粘贴 fwknop --key-gen 的输出;或者,在 iPhone 和 iPad 上扫描密钥的 QR 码。
  3. 3或者选择 + › 从文件导入,然后选取您的 .fwknoprc。
  4. 4密钥会保留在钥匙串中;开启同步后,密钥将通过 iCloud 钥匙串端到端加密地传输至您自己的设备。

GitHub 上的所有示例 → 本页面上的每项配置均可直接复制:github.com/mobilcomm/secretknock-examples(公共领域)。

问题

为什么使用 fwknop 而不是 knockd?

knockd 序列以明文传输,任何看到它的人都可以重放。SPA 数据包经过加密和认证,且无法被重放。

Apple Watch 可以自行发送 SPA 吗?

可以,通过 HTTP:Apple Watch App 无法发送原始 UDP,因此当远离 iPhone 时,Apple Watch 会将 SPA 数据包作为 HTTP 请求发送。有关服务器端设置,请参阅 Apple Watch 指南。

适用于您设置的指南