跳至主要內容

在邊緣進行盲目 replica 同步

閱讀時間 8 分鐘 作者 NT²

同步不必把本機保管箱變成雲端資料庫。邊緣可以辨識帳號、儲存不透明 replica frame 並傳遞更新,卻不必知道更新裡有什麼。

在邊緣進行盲目 replica 同步

同步服務必須看見足以完成工作的資訊。它需要知道請求是否獲得授權、儲存的物件屬於哪個帳號、訂閱是否允許同步,以及某台裝置還缺哪些加密更新。

但這不代表服務必須看見護照紀錄的標題、登入憑證裡的使用者名稱、安全筆記的文字,或附件內容。

這正是 NT² Premium 同步背後的主張:雲端中繼密文並維護有限的帳號中繼資料,但無法讀取保管箱內容。 replica 資料跨越網路前,會先在裝置上加密;取得資料的授權裝置則在本機解密。位於兩者之間的服務只處理不透明的 frame。

這並不是說伺服器什麼都看不見。它會看見請求時間、物件大小、帳號身份與計費狀態等營運事實。網路若沒有中繼資料,就無法路由封包;訂閱服務若沒有帳號紀錄,也無法執行使用權限。真正有用的安全界線必須更精確:伺服器不應取得能解讀個人保管箱的金鑰或明文。

這條界線會限制同步系統可以變成什麼。

雲端優先的限制

多數同步 API 都從伺服器擁有的資料模型開始。

客戶端送出包含 titlecategoryupdatedAtnotes 等欄位的 JSON。伺服器驗證欄位、寫入關聯式資料欄、建立索引、處理衝突,再把整理好的資料呈現傳回每台裝置。這是一種高生產力的架構,伺服器端搜尋、分析、客服工具與資料遷移都很容易實作。

但除非另加一層加密,這也表示服務提供者能讀取資料。

有些應用所謂的「已加密」,是指資料庫磁碟有加密,或傳輸途中受 HTTPS 保護。兩者都很重要,卻都不會讓服務看不見內容。應用伺服器仍會收到明文。它可能把請求本文寫入日誌、索引一筆機密、透過內部管理台暴露內容,或使用同一個執行環境可取得的金鑰解密儲存值。

客戶端加密可以改善這個模型,但前提是界線真的存在。如果伺服器收到加密 blob,旁邊卻放著明文標題、類別、URL、預覽或搜尋 token,看似不透明的 payload 仍可能透露一個人生活中的許多資訊。如果提供者為了帳號還原而保有解密金鑰,那些 blob 對提供者而言就不是盲目的。如果客服人員可以按一下「檢視保管箱」,架構早已回答了信任問題。

對本機優先的保管箱而言,改造這種傳統 API 並不是正確起點。裝置已經擁有資料庫、索引,以及解讀項目欄位的能力。同步應該在 replica 之間搬運變更,而不是在雲端重建一套可讀的保管箱應用。

把同步單位設計成不透明 frame

NT² 把每台授權裝置視為一份保管箱 replica。本機保管箱仍是理解結構化紀錄的地方。變更符合同步資格前,敏感內容會先在本機加密,再把同步表示封裝成 replica 批次中的不透明 frame。

對中繼服務而言,frame 刻意設計得很無聊。它的外層資訊足以讓服務儲存、排序及傳遞加密物件,但有意義的 payload 是密文。中繼服務不需要為銀行名稱、文件號碼、筆記本文或登入憑證 URL 建立資料欄。它也不需要知道某個 frame 代表新項目、更新後的附件,還是另一種私密保管箱事實。

這種分離形成兩套不同的 schema:

  1. 本機保管箱 schema 理解結構化資產、關係與索引。
  2. 中繼 schema 理解帳號、不透明物件、replica 進度與傳遞。

讓兩套 schema 維持差異,本身就是一項隱私功能。雲端資料表如果根本沒有項目標題欄,就不會意外暴露標題。服務若從未收到可讀的類別,客服查詢就無法篩出「所有護照紀錄」。資料庫匯出仍然可能敏感,因為中繼資料也很重要;但它不會是保管箱明文內容的匯出檔。

replica 批次也讓傳輸更實際。裝置可以把加密變更分組、上傳並記錄進度,不必每修改一個本機欄位就發出一次雲端請求。另一台授權裝置可以要求取得最後已知位置之後的 frame、下載缺少的批次、在本機驗證與解密,再把變更套用到自己的 replica。

邊緣很適合這份工作,因為它靠近裝置,也擅長處理簡短的授權與傳輸請求。它不需要執行保管箱運算;它的職責是驗證帳號請求、接收或回傳不透明物件,以及保存傳遞所需的少量協調狀態。

物件儲存保存位元組,不是第二個保管箱

加密 replica frame 與附件資料可能比帳號資料列更大、數量更多。物件儲存很適合這種工作負載:以不透明識別碼儲存位元組序列,並在授權請求下傳回。

重點不在於使用哪一套儲存產品,而是包圍它的合約。

物件儲存收到的是加密資料。邊緣帳號紀錄指向擁有權與同步狀態。兩者都不需要剖析個人的項目欄位。物件名稱不應從可讀標題衍生;日誌不應包含解密後的 payload;上傳與下載前都應檢查授權。保留與刪除行為仍然重要,因為即使服務無法讀取,密文依然是使用者資料。

這個設計也避免假裝一種資料庫技術應該負責所有事情。邊緣帳號資料表適合保存少量、可查詢的事實:

  • 密碼學帳號身份;
  • 驗證已認證請求所需的公開資料;
  • 帳號是否已停用;
  • 目前是否有 NT² Premium 同步使用權限;
  • 計費狀態與時間戳記;
  • 協調 replica 所需的游標或參照。

這些是帳號與服務事實,不是保管箱項目欄位。資料表不應包含解密後的標題、使用者名稱、筆記、附件名稱、文件預覽,或伺服器產生的全文搜尋索引。

這條線很容易隨時間模糊。產品團隊可能希望客服儀表板顯示「最近五個項目名稱就好」。工程師可能提議加入明文類別來簡化指標。搜尋功能可能從「無害的」確定性 token 開始。每個捷徑都會讓服務多知道一項保管箱事實,也多建立一個必須保護、治理、揭露並最終刪除的欄位。

更嚴格的架構會改問另一個問題:這項功能能否在已經持有金鑰的裝置上執行?如果可以,邊緣就不該知道答案。

即時通知可以保持輕量

批次同步不需要每台裝置持續輪詢。輕量的協調服務可以通知已連線的 replica:目前有新的加密資料。它可能維持短暫連線、發出序號變更訊號,或依序處理每個保管箱的一小段協調狀態。

通知本身不必承載機密。「位置 42 之後有新的 frame」就已足夠。接收裝置可以完成認證、取得不透明批次,再於本機解密。

這項區分很重要,因為即時基礎設施常會逐漸長成第二套應用後端。一旦它開始解讀項目操作、產生預覽或做出依賴內容的決策,盲目中繼的界線就會弱化。即時通道應該改善傳遞延遲,而不是重建保管箱意義的地方。

它也應該只是提升體驗,而不是正確性的必要條件。漏掉通知只會造成不便,不會導致資料遺失。下次通過認證的同步,可以從持久進度狀態找出缺少的 frame。休眠或離線的裝置,應該不必永久維持連線也能追上進度。

取捨:同步是選用,離線才是常態

盲目同步會放棄雲端優先產品常視為基本配備的能力。

NT² 不能依賴伺服器,在沒有本機保管箱的瀏覽器 session 中呈現你的紀錄。它不能在你的裝置離線時,要求雲端搜尋所有機密。衝突處理與遷移必須妥善設計,讓授權客戶端能完成真正的工作。客服也不能查看某筆紀錄,診斷它的內容為什麼看起來不對。

我們也不能誠實地承諾中繼資料會消失。服務能觀察帳號何時同步、傳輸多少位元組,或是否有多份活躍 replica。流量分析與端點遭入侵,是不同於伺服器端明文存取的風險。零知識會縮小信任範圍,卻不會消除系統安全問題。

作為交換,預設路徑保持簡單:在本機建立保管箱、在本機解鎖、在本機搜尋,並在沒有網路時繼續使用。NT² Premium 同步是付費便利功能,提供給想在多台裝置上維持加密 replica 的人;它不是擁有或開啟保管箱的必要條件。

這項產品界線也控制了成本。不需要中繼的人,不該因為強制帳號而被迫負擔費用。選擇同步的人,則為儲存、傳輸與協調付費。訂閱增加跨裝置可用性,不代表使用者授權提供者讀取底層紀錄。

因此,離線操作不是降級後備方案,而是同步功能向外延伸的正常路徑。

我們拒絕打造的東西

明確說出拒絕,架構會更清楚。

不在伺服器端搜尋機密。 全文搜尋應留在已解鎖裝置上,讓本機索引在使用者控制下處理可讀資料。上傳明文標題或提供者可讀的搜尋索引,確實能簡化雲端搜尋;但也會為保管箱原本要保護的事實,建立一套可搜尋的集合。

不提供營運人員「檢視保管箱」工具。 客服與維運需要服務健康工具:帳號狀態、使用權限失敗、傳輸錯誤、物件數量與傳遞時間。他們不需要能解密客戶紀錄的按鈕。如果這個按鈕能存在,代表提供者握有金鑰或通往金鑰的路徑,「盲目中繼」就不再是準確描述。

這些拒絕會帶來後果。疑難排解必須依賴客戶端診斷、安全的錯誤碼,以及不暴露內容的中繼資料。產品分析無法回答每一個與內容相關的問題。還原流程也不能偷偷依賴由提供者保管的解密機密。

這些不是等待補上的管理功能,而是維持此模型的限制。

讓網路幫忙,但不取得擁有權

雲端優先之外的實用選項,不是永久隔離。本機保管箱可以受益於邊緣傳遞、持久物件儲存與即時通知,同時把資料解讀留在授權裝置上。

責任分界才是重點:

  • 裝置建立、索引、加密、解密及搜尋保管箱內容;
  • 邊緣驗證帳號與同步使用權限;
  • 物件儲存保留不透明 replica frame;
  • 輕量協調機制通知 replica 何時取得資料;
  • 沒有任何伺服器元件具備開啟保管箱的能力。

這就是「盲目 replica 同步」在實務上的意義。雲端可以搬運與協調加密狀態,卻不會升格成可讀主要副本的擁有者。

若想了解本機解鎖與雲端驗證的分界,請閱讀解鎖本機保管箱,不等於登入雲端。若想了解更廣的本機優先架構,請見為什麼選擇 PWA 本地優先、零伺服器的 Vault。如果這套模型符合你保存敏感紀錄的方式,歡迎開啟 NT² Vault

最後更新 2026-08-05

相關故事