
傳統數字安全非常擅長回答一類問題你是誰你有沒有權限你的簽名是不是真的當前規則是否放行。它處理的是數字身份、數字對象和數字規則之間的關系。而當系統真正開始影響現實世界執行條件里會出現一種軟件安全很少認真處理的事實空間。一個操作者有沒有權限是一個問題他此刻是不是還在設備旁邊是另一個問題。兩臺安全設備是否都已完成認證是一個問題它們是否仍然處在預期的物理距離內又是另一個問題。一次審批是否真實是一個問題審批者是否真的站在目標設備所在的現場可能也是另一個問題。于是距離不再只是地圖上的一個數字或界面上的一行位置信息。在某些執行系統里它可以成為一項執行條件——即使身份、權限、簽名、審批全部正確只要物理關系已經不成立執行仍然可以被拒絕。一、身份正確不等于人真的在這里過去大多數軟件根本不需要知道你離它多遠。登錄郵箱、查詢數據、提交代碼、操作云端服務用戶在隔壁房間還是在另一個大陸對系統沒有本質差別——憑據正確、網絡可達、權限允許流程就能繼續。這是一種典型的位置無關安全。數字系統把世界抽象成身份、憑據、請求和規則網絡把物理距離消除掉了一次調用來自同一棟樓還是來自另一個國家在應用層看起來可能只是同一個加密請求。當執行對象進入物理世界這種距離無關就不總是合理。開一扇門操作一臺現場設備啟停一臺機器對本地安全終端完成高風險授權——這些場景真正想表達的往往是不僅需要正確的人還需要正確的人此刻就在正確的位置。假設某臺設備要求操作員使用強身份憑據認證完全通過設備確認了對方身份。但這份憑據是否意味著這個人就在設備旁邊未必。他可能在遠程登錄可能把認證裝置交給了別人可能通過某個遠程系統發起請求也可能憑據正被另一個系統代理使用。從數字身份看認證完全成立從物理現場看在場并沒有被證明。身份回答你是誰在場回答你現在是否真的處在執行發生的那個物理空間里。有些場景只需要前者有些高風險場景需要兩者同時成立。二、給權力加一個物理半徑說到物理空間人們第一反應往往是定位與地理圍欄——只有人在某個園區內才允許執行。這是一種方式但位置和距離并不是同一個概念。位置回答你在哪里距離回答你和某個具體對象之間有多遠。對執行控制而言后者常常更直接。系統真正關心的未必是審批者身處哪座城市而是授權設備是否仍在目標執行設備旁邊未必是操作員在不在某間辦公室而是參與執行授權的兩個物理節點是否仍處在被允許的鄰近關系中。這種設計不必知道絕對坐標只需確認兩者之間的關系仍然成立也因此減少了對全球定位、地圖服務和外部基礎設施的依賴。網絡時代最強大的能力之一就是消除距離人可以遠程管理服務器、操作設備、發布代碼、調動資金。效率因此提升但也意味著一份數字憑據獲得的權力理論上可以從世界任何地方被行使。對某些高風險能力來說這個范圍可能太寬了。距離守衛做的其實是一件相當樸素的事給某種執行權加上物理作用半徑。某項操作只有在授權設備與執行設備保持預期的鄰近關系時才成立一旦超出這個范圍失效的不是身份不是密鑰而是執行資格。這與上一篇討論的時間邊界高度同構。時間限制一份授權能用多久距離限制它能離多遠。一份審批是真的并不意味著它在任何物理位置都應當擁有相同的執行能力。授權的范圍因此不只包含主體和動作還可以包含時間范圍與空間范圍。過去的安全模型主要關注誰和做什么后來納入了什么時候當執行真正落到物理世界在哪里、離多遠也可能成為不可忽略的一維。三、物理事實怎樣進入數字系統如果只是讓某個終端上報我當前就在設備附近并不會自動形成安全邊界。所有執行事實都要面對同一個問題這個事實是怎么來的。位置數據由誰提供主機軟件能否修改是不是來自可被任意填寫的應用層字段遠端能否偽造數據是否足夠新鮮如果一個已被控制的軟件可以直接聲明我距離目標很近那它顯然不能作為執行條件。距離守衛的核心不是系統里存在一個距離字段而是這個物理事實本身是否擁有足夠可信的來源——和時間戳、計數、設備狀態一樣事實不因為存在就可信它需要來源、新鮮度、邊界和驗證方式。這也是最工程化的難點所在。現實中的距離是連續的物理量而裁決層能處理的是數字事實中間必須有一條把物理關系轉換成可信事實的路徑。實現方式可以有很多種——無線測距、短距通信、近場機制、設備間的挑戰應答或其他物理側信號。無論用哪一種都必須回答同一組問題測量由誰完成何時完成能否被遠程轉發是否綁定當前設備身份是否綁定當前執行會話結果是否已經過期。所以真正的距離守衛不是一個傳感器而是一條把物理關系轉換為可信執行事實的協議路徑。無線系統里最容易想到的做法是看信號強度強就認為近弱就認為遠。它很方便但作為執行條件通常不夠強因為無線傳播會受到環境、遮擋、天線、功率、反射、設備姿態和干擾的影響。更根本的是信號強度首先證明的是我收到了多強的信號而不是嚴格證明對方離我多少米。這兩者不能簡單等同。工程上需要先明確當前的距離判斷究竟想達到什么安全強度——它只是一個較弱的風險信號還是要作為最終的執行不變量兩種定位會導出完全不同的設計要求。四、真正要防的是遠處被偽裝成近處如果距離只用于推薦附近的門店測偏幾米無關緊要。一旦它決定能否執行威脅模型就必須改寫攻擊者真正想做的是人在遠處卻讓系統相信他在近處。最典型的形態是中繼。兩個實際相距很遠的節點中間有系統在快速轉發通信雙方都認為自己在與合法設備通信身份真實消息也未被篡改但物理距離這個事實已經被轉發關系欺騙。認證能夠證明對方是誰卻不自動證明對方離我有多遠。這與整個執行控制的思路一致不同性質的事實需要不同的驗證機制不能用一個證明去替代另一個。由此引出兩條設計要求。其一距離最好是被雙方共同建立的關系而不是單方聲明。如果只有一端宣稱我在對方附近那仍然是一次位置主張讓關系的兩端共同參與當前這一輪鄰近性驗證得到的才更接近一種相互的物理關系。關系最好由關系兩端共同證明而不是由其中一端獨自定義。其二距離事實必須與身份綁定。僅僅知道附近有一臺設備是不夠的系統需要知道附近的是不是當前執行鏈里的那一臺。否則會出現一種典型的事實綁定錯誤某臺設備已通過認證另一臺設備恰好在附近系統卻把兩條事實合并成已認證的那臺設備就在附近。工程上應當確保鄰近性事實明確歸屬于當前的兩個已知身份、當前會話和當前執行上下文而不是一個脫離對象的抽象結論。五、它是一個有時效的事實距離是高度動態的設備會移動人會離開授權裝置會被帶走。所以某個時刻驗證過的鄰近關系隔了很久之后未必還能代表現在——它天然帶有很強的新鮮度要求更適合綁定到當前執行、當前會話、當前一輪驗證而不是變成這兩臺設備曾經靠近過此后一直算靠近。這也決定了檢查的位置。如果只在意圖創建時確認過一次隨后經過審批、排隊、裁決和調度很久之后才真正執行那么最初的距離事實很可能已經失去意義。距離越關鍵就越應當靠近真正的提交點——上游可以提前知道設備大致處在允許范圍內但在動手之前仍要重新確認執行發生的這一刻關鍵物理關系是否仍然成立。它同樣要遵守第一季討論過的那套狀態劃分。測距失敗不是遠而是未知必要的鄰近性證明根本沒有建立是缺失驗證成功但已超出允許窗口是過期一端認為有效而另一端認為無效是沖突。這些情況都不該被自動解釋成應該差不多沒問題。無法證明近不能自動等于可以認為近。六、它不該成為新的神諭同樣需要克制。距離不是萬能條件兩個人站得很近并不意味著意圖正確、審批合法、規則沒有問題或者上游沒有被攻擊兩臺設備處在允許范圍內也不代表其他執行條件自然成立。它只是一個獨立事實應當參與裁決但不能替代身份、意圖、審批、規則、狀態和證據。執行控制一貫的原則在這里同樣適用——不存在任何單一事實可以獨自證明一次執行是正確的。另一個常見誤解是把物理在場等同于業務授權。在場回答人在不在授權回答這個人有沒有權意圖回答他現在想做什么規則回答當前是否允許。完整的判斷應該是這些條件同時成立而不是檢測到有人靠近就執行。這一點必須寫死在設計里如果系統最終變成檢測到人靠近設備便自動執行那只是把一個數字條件換成了物理條件并沒有形成更完整的安全。合理的關系是——距離可以激活某些能力、允許某個步驟繼續、提升某份授權的執行資格但不應單獨成為執行觸發器。否則物理接近本身就變成了新的單點權力。順著這一季的運行時設計往下推距離守衛也不該自己承擔復雜業務邏輯。它更適合輸出一個有限而明確的事實由裁決層判斷當前意圖是否要求這個條件、它是否仍然新鮮、是否與其他事實沖突再由執行側在提交前確認它尚未失效。距離守衛負責證明物理關系裁決層負責判斷這份關系是否是本次執行的必要條件職責依然分離。七、它適合保護什么并非所有操作都適合加上這層約束。如果一項能力本來就是遠程服務強行要求現場鄰近沒有意義。真正適合的是那些業務語義本身就隱含本地在場的動作某些設備維護、物理門禁、敏感機器的啟停、高價值的本地密鑰操作或者需要人與安全裝置共同在場的授權過程。在這些場景里距離守衛并不是人為增加摩擦而是把原本隱含在制度里的要求——操作員應該在現場——變成系統真正能夠檢查的一項執行條件。從制度要求到技術邊界這是一次有價值的工程轉化。它也能壓縮遠程憑據失陷的影響范圍。假設攻擊者已經取得合法賬戶、接口憑據甚至某種遠程控制能力在沒有物理約束的系統里他可以從任何地方嘗試推動高風險執行而如果某些關鍵動作還要求特定設備在現場建立短期物理關系那么即使數字權限域已被突破他仍需跨越一條性質不同的邊界。這當然攔不住所有攻擊它增加的是一個獨立條件讓遠程控制權和現場執行權不再天然等價。純數字憑據最大的特點是易于遠程使用拿到令牌、會話或密鑰權限就可以跨網絡傳播。而當一部分執行資格依賴當前的物理環境時即使憑據被復制某些能力也不一定能被完整地帶到遠方——執行控制因此獲得了一種數字憑據難以單獨提供的性質空間錨點。Agent 場景讓這一點更有意義。自主系統的價值正在于遠程、持續、自主地執行但某些動作可能并不適合僅憑一份長期數字授權就在任何時間任何地點自主完成。此時距離守衛表達的是一種新的分工機器可以準備、可以規劃、可以請求而某些現實改變仍需物理世界中的一個條件被滿足。人的參與由此從再點一次確認變成執行上下文的一部分。八、把它變成一項不變量如果距離曾經是執行條件事后的證據也應當能回答當時這項條件是否成立。這不意味著要永久保存精確的位置軌跡——恰恰相反需要記錄的可能只是某次執行時某項必要的鄰近條件成立、由哪個邊界驗證、何時驗證、對應哪個執行對象。這樣將來審計才能說明一項本應在現場完成的操作為什么獲得了執行資格而不是只看到一行規則放行。這里還有一條不能忽略的隱私邊界。執行控制需要知道的是當前兩個節點是否滿足必要的物理關系這并不天然意味著系統需要持續追蹤位置、保存完整移動軌跡或長期記錄精確坐標。如果只需要證明足夠近就沒有必要采集具體在哪里如果只需要某個瞬間的現場驗證就沒有必要全天跟蹤。安全邊界不應以無限擴大監控能力為代價。證明一個執行條件所需要的數據應該少于描述一個人完整現實狀態所需要的數據。回到本季第一篇的說法執行控制語言真正該表達的是不變量。距離最終也應當以這種形態進入系統——對于某類動作執行發生時授權設備與目標設備之間的可信物理關系必須仍然成立。規則可以要求它測距路徑可以證明它執行側在提交前確認它尚未失效證據最后記錄它曾經成立。到這一步距離就不再是附屬的傳感器數據而進入了執行協議本身。需要說清楚的是這層邊界并不消除風險。測量會有誤差中繼攻擊有其手段物理條件也可能被人為制造。它降低的是遠程憑據獨自推動現實的概率增加的是一個必須被同時滿足的獨立條件。過去幾十年軟件安全一直在努力把世界數字化身份變成憑據權限變成角色授權變成規則行為變成接口調用結果變成日志。這種抽象讓系統得以高效運行。而當這些數字判斷開始真正控制錢、門、機器、車輛和生產環境現實又把一些曾被抽象掉的條件帶了回來——時間是其中之一空間也是。當執行開始影響現實世界物理距離就不再只是位置數據而可能成為一項安全條件。距離守衛想做的并不是讓系統知道你在哪里。它想建立的是另一種能力某些現實權力只有當數字世界與物理世界的條件同時成立時才真正生效。當這一步被工程化之后執行邊界就不再只是服務器里的一次邏輯判斷——它開始擁有空間。