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