跳至內容
Secret Knock

適用於 iPhone、iPad、Mac 和 Apple Watch 的 fwknop SPA 用戶端

fwknop 以一個經過加密與驗證的封包,取代可被猜出的序列。Secret Knock 會使用您的金鑰在裝置上建立該封包,並透過 UDP 或 HTTP 傳送至 fwknopd。

與 fwknopd 相容

Secret Knock 會透過 UDP 傳送 fwknop 的 Rijndael (AES) 加密及 HMAC(預設為 SHA-256,也可選擇其他摘要演算法)至連接埠 62201 或您設定的其他連接埠,或將其作為 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 的金鑰」貼上 fwknop --key-gen 的輸出內容;或者,在 iPhone 和 iPad 上掃描金鑰的 QR code。
  3. 3或選擇 + › 從檔案輸入,然後選取您的 .fwknoprc。
  4. 4金鑰會保留在鑰匙圈中;開啟同步後,會透過 iCloud 鑰匙圈以端對端加密方式傳送至您自己的裝置。

GitHub 上的所有範例 → 本頁的每項設定皆可直接複製:github.com/mobilcomm/secretknock-examples(公眾領域)。

問題

為什麼使用 fwknop 而非 knockd?

knockd 序列會以明文傳送,任何看見它的人都能重放。一個 SPA 封包經過加密與驗證,且無法被重放。

Apple Watch 可以自行傳送 SPA 嗎?

可以,透過 HTTP:Apple Watch App 無法傳送原始 UDP,因此當 Apple Watch 不在 iPhone 附近時,會將 SPA 封包作為 HTTP 要求傳送。請參閱 Apple Watch 指南,了解伺服器端設定。

適用於您設定的指南