![]()
本文來自微信公眾號: HavenlonLabs ,作者:HavenlonLabs
在日常生活中,我們經常會遇到這樣一類人。
他們鎖車以后,會再回頭拉一下車門;發出重要郵件之前,會重新檢查收件人和附件;完成轉賬之前,會再次核對姓名、賬號和金額;簽署合同之前,即使文件已經經過多人審核,也會重新翻到最后一頁確認版本。
站在旁觀者的角度,這些動作很容易被理解為過度謹慎。
明明已經按了鎖車鍵,為什么還要拉一次車門?明明流程已經審核通過,為什么還要重新打開文件?明明系統已經顯示綠色,為什么還要再確認一次?
有時,周圍的人甚至會覺得,這個人是不是有些神經質。
但真正經歷過事故的人,往往不會這樣看。
他們知道,現實世界里的很多問題,并不是因為人們什么都沒有做,而是因為人們做完某個動作以后,太早相信事情已經按照預期發生。
真正成熟的安全意識,不是反復懷疑自己,而是拒絕過早相信現實。
這正是理解“對抗性完整”的一個生活化入口。
一、很多事故,都發生在“已經確認過”之后
人們通常認為,安全問題來自明顯的故障、違規或者破壞。
門沒有鎖,是因為有人忘了鎖;轉賬出錯,是因為有人填錯賬號;系統執行危險操作,是因為權限管理失效;數據被刪除,是因為攻擊者繞過了防線。
但現實中的大量事故,并沒有這么明顯。
人確實按下了鎖車鍵,車輛卻因為信號干擾沒有真正完成鎖定;審批人確實點擊了同意,但審批頁面展示的摘要與最終執行內容并不完全一致;合同確實通過了審核,但正式發出的附件已經不是此前確認的版本。
從流程上看,每一步似乎都發生了。
有人提交,有人審批,有系統記錄,有操作日志,權限也完全合法。問題不在于流程不存在,而在于流程中的某個對象、內容、條件或者結果已經發生變化,后面的環節卻仍然沿用了前面的信任。
也就是說,人們檢查過一件事,卻沒有繼續檢查這件事后來是否還是原來的樣子。
很多嚴重錯誤,不是沒有經過確認,而是確認過一次以后,所有人便默認它不會再變化。
鎖車以后再拉一下車門,看起來是在重復確認,實際上檢查的并不是同一個問題。
第一次確認的是:“我有沒有按下鎖車鍵?”
第二次確認的是:“車門現在到底有沒有鎖上?”
一個檢查動作,一個檢查結果。
一個確認系統接收了命令,一個確認現實已經發生了變化。
這兩個問題看起來接近,實際上并不相同。
二、別人眼里的“多余”,往往只是換了一個角度
在低風險環境中,重復檢查確實可能顯得效率不高。
一條普通消息發錯了,可以撤回;一個普通文件選錯了,可以重新發送;一個普通設置改錯了,可以恢復。在這些場景里,快速行動通常比反復核對更重要。
但當事情涉及資金、醫療、生產系統、重要數據或者不可逆操作時,判斷標準會完全改變。
醫院在手術開始前,要重新確認患者身份、手術部位和具體項目。飛機起飛前,機組人員會按照清單進行交叉檢查。工業設備啟動前,需要確認人員位置、環境狀態和關鍵閥門。銀行轉賬執行前,會再次展示收款人和金額。
外行第一次看到這些流程,可能會問:這些信息不是早就確認過了嗎?
答案是,前面確實確認過。
但前面確認的是前面的狀態,最后需要確認的是此刻即將發生的現實。
這些檢查也并非簡單重復。它們通常來自不同角色、不同系統、不同信息來源和不同觀察角度。
一個人確認業務意圖,另一個人確認實際對象;一個系統檢查權限,另一個系統檢查執行參數;前面的流程回答“是否允許”,最后的邊界回答“當前條件下是否仍然應該發生”。
重復同一種檢查,可能只是形式主義;從不同角度重新審視,才是真正的安全設計。
如果所有確認都依賴同一個界面、同一份數據和同一個系統,那么檢查次數再多,也可能只是重復接受同一個錯誤。
例如,一個錯誤的收款地址被寫進申請單,審批頁面、財務系統和執行程序都從同一條記錄中讀取它。整個流程可能經過三個人確認,但三個人看到的都是同一個錯誤來源。
表面上,這是多重審核。
實際上,只是不同的人重復相信了同一個事實。
真正有效的確認,需要有不同的觀察角度:申請內容與實際執行內容是否一致,審批對象與最終操作對象是否一致,系統記錄與現實狀態是否一致,權限合法與結果安全是否是同一件事。
對抗性完整關注的,正是這種“換一個角度再看一次”的能力。
三、為什么叫Adversarial Completeness
“對抗性完整”的正式英文是:
Adversarial Completeness
這里的兩個詞都很重要。
首先是Adversarial。
它不是單純指系統可能自然出錯,而是強調系統面對的是一種帶有主動性的環境。有人可能故意制造誤導,隱藏關鍵信息,替換執行對象,污染上下文,利用界面差異,或者誘導審批人做出錯誤判斷。
普通錯誤是偶然發生。
對抗性環境中的錯誤,可能是有人故意讓它發生,并且故意讓它看起來沒有發生。
因此,對抗性完整并不是在理想環境中檢查流程是否合理,而是在假設某些參與者、信息來源或者中間環節可能不可信的情況下,重新審視系統是否仍然可靠。
其次是Completeness。
這里沒有使用常見的Integrity,是因為兩者關注的重點并不相同。
Integrity通常更容易讓人聯想到數據是否被修改、文件是否損壞、信息在傳輸中是否保持一致。它強調的是某個對象本身有沒有被篡改。
Completeness強調的則是:我們對風險的考慮是否足夠完整。
審批通過了,不代表執行對象沒有變化;身份合法,不代表操作結果安全;簽名正確,不代表簽署內容符合原始意圖;日志完整,也不代表這項操作本來就應該發生。
每一項單獨看都可能正確,但如果系統只檢查其中一項,就仍然可能留下能夠被利用的缺口。
所以,“完整”不是指某份數據完整,而是指安全判斷不能只覆蓋一個局部。
它需要從意圖、身份、對象、權限、參數、環境、過程、結果和證據等多個角度,檢查一件事情是否仍然成立。
Adversarial Completeness不是證明某一個環節沒有問題,而是確認那些可能被對手利用的關鍵角度,沒有被遺漏。
這也是為什么用Completeness更準確。
它強調的不是“這個東西有沒有被改”,而是“我們是不是少看了某個決定性的問題”。
四、對抗性完整到底在檢查什么
用大白話解釋,對抗性完整就是:
一件重要的事情,不能因為某一道檢查通過,就默認整體安全,而要從不同角度確認,還有沒有能夠被利用的缺口。
這意味著,系統不能只問一個問題。
不能只問:“是誰發起的?”
還要問:“發起人真正想做的是什么?”
不能只問:“他有沒有權限?”
還要問:“這次操作是否超出了具體授權范圍?”
不能只問:“審批有沒有通過?”
還要問:“審批人看到的內容,是否與最終執行內容一致?”
不能只問:“簽名是否有效?”
還要問:“簽名所對應的對象、金額、目標和條件是否仍然沒有變化?”
不能只問:“日志是否存在?”
還要問:“日志能否證明當時看到的、批準的和最終執行的是同一件事?”
這些問題單獨看都不復雜。
真正困難的是,很多系統只檢查其中一個問題,然后把一個局部成立的結論,擴大成整體安全的證明。
身份正確,于是默認意圖正確。
權限合法,于是默認結果安全。
審批通過,于是默認執行內容沒有變化。
簽名有效,于是默認簽署對象值得信任。
這正是大量執行風險產生的原因。
局部正確不等于整體安全,流程完整也不等于風險覆蓋完整。
對抗性完整要求系統繼續追問:有沒有另一個角度,可以推翻當前的安全結論?
如果攻擊者不能偽造身份,他是否可以誘導合法身份做錯事?
如果無法繞過審批,他是否可以操縱審批人看到的內容?
如果無法修改簽名,他是否可以在簽名前替換簽署對象?
如果無法刪除日志,他是否可以讓日志完整記錄一次錯誤執行?
這種思考方式看起來有些多疑,但它不是無邊界的懷疑,而是面向真實攻擊路徑的系統性檢查。
五、為什么這種做法經常被認為“神經質”
對抗性完整在組織內部并不總是受歡迎。
因為它會制造摩擦。
當所有人都急著推進項目時,有人要求重新核對執行對象;當審批已經完成時,有人仍然要求比較最終參數;當系統所有狀態都顯示正常時,有人還想確認底層實際狀態。
這類人容易被評價為保守、拖慢效率、不夠信任團隊,甚至總是假設事情會出問題。
但安全工作的矛盾就在這里。
當風險尚未發生時,所有保護動作看起來都像額外成本;只有事故真正發生以后,人們才會意識到,之前被省掉的那一步并不是多余。
火災發生之前,消防通道占用了經營面積;數據丟失之前,備份系統消耗了存儲空間;生產事故發生之前,停機檢查影響了效率;錯誤轉賬發生之前,二次確認增加了操作時間。
這些措施的價值,很難通過“今天創造了多少收入”來直接證明,因為它們成功的表現,恰恰是某件壞事沒有發生。
邊界在災難發生之前叫成本,災難發生之后才會被重新命名為必要。
所以,對抗性完整并不是一種性格上的過度謹慎。
它是一種把經驗中的“不放心”轉化為工程機制的能力。
它不要求每個人始終保持高度警覺,也不要求某位經驗豐富的員工發現所有異常。它要求系統提前明確:哪些操作不可逆,哪些對象必須在最終執行前重新確認,哪些信息不能只來自一個來源,哪些變化必須重新審批,哪些條件不滿足就必須停止。
換句話說,它把個人習慣中的謹慎,轉化為組織能夠穩定執行的制度。
六、AI時代,執行鏈條正在迅速變長
在傳統軟件時代,人通常還是最終操作的主體。
系統提供信息,人完成判斷,然后點擊按鈕。即使軟件出現錯誤,許多關鍵動作仍然需要人主動發起。
AI Agent的出現正在改變這一點。
AI不再只是回答問題、生成文字或者提供建議。它開始讀取郵件、調用工具、編寫代碼、修改云資源、管理賬戶、生成交易,甚至根據環境變化連續完成一系列任務。
這意味著,從人的最初意圖到現實結果之間,出現了一條更長、更復雜的執行鏈條。
一個人只說一句自然語言,模型需要先理解任務,再拆解計劃,選擇工具,讀取外部信息,組合參數,申請權限,獲得審批,最終執行。
每增加一個環節,就多了一次理解偏差、對象替換、上下文污染或者信息遺漏的可能。
更重要的是,AI并不會天然知道自己正在受到誘導。
一份文檔中的惡意內容,可能被模型當成任務要求;一個網頁中的隱藏指令,可能影響后續工具調用;一個錯誤的接口返回,可能被當成真實環境狀態;一個經過包裝的審批摘要,可能掩蓋真正危險的執行參數。
在這種環境里,僅僅提高模型準確率是不夠的。
因為企業最終承擔后果的,不是模型曾經說過什么,而是系統最后做了什么。
AI時代最大的安全變化,不是機器開始思考,而是機器開始把判斷直接兌現成現實。
過去,一次錯誤回答可能只需要重新生成。
未來,一次錯誤判斷可能意味著資金轉出、權限改變、數據刪除、服務中斷或者設備動作。
當錯誤從信息層進入執行層,對抗性完整就不再只是高級安全設計,而會逐漸成為AI系統的基礎能力。
七、AI越智能,越容易讓人過早放心
AI有一個特殊風險:它非常擅長制造“事情已經被理解”的感覺。
它能夠生成完整的解釋、清晰的計劃、專業的摘要和看起來合理的理由。正因為表達過于完整,人們很容易把“解釋得通”誤認為“事情已經被完整驗證”。
但語言上的完整,并不等于執行上的完整。
AI可以正確總結一項操作,卻遺漏一個危險參數;可以生成合理計劃,卻在調用工具時選擇錯誤對象;可以獲得合法審批,卻在審批后因為環境變化執行到另一項資源;可以完整保存日志,卻把一次錯誤行動記錄得非常清楚。
傳統系統中的很多信任機制,在AI面前可能變得更加脆弱。
因為人容易被摘要說服,被自然語言解釋安撫,被自動化流程降低警惕。
當系統告訴人們“風險已檢查”“操作已批準”“目標已確認”時,人們很少繼續追問:這些結論是否來自獨立信息?檢查者是否和執行者共享了同一個錯誤上下文?審批人看到的是否真的是即將執行的內容?
AI最危險的能力之一,不是制造錯誤,而是把錯誤解釋得像一個合理決定。
因此,AI時代的對抗性完整必須特別強調獨立驗證。
不能讓AI生成計劃,再讓同一個AI根據自己的計劃判斷計劃是否安全;不能讓系統生成摘要,再讓審批人只依據摘要批準;不能只驗證Agent的身份和權限,而忽略它實際準備執行的對象、參數和后果。
越是高風險的操作,越需要從AI之外獲得新的判斷角度。
八、對抗性完整不是不斷增加審批
談到多角度檢查,很多人會立刻想到增加更多審批人、更多彈窗和更多確認按鈕。
但這并不等于對抗性完整。
十個人在同一個界面上點擊同意,不一定比一個人更安全。如果十個人看到的都是同一個被操縱的摘要,他們只是共同接受了同一個錯誤。
系統連續彈出五次“是否確認”,也不一定有意義。如果五次確認都沒有增加新的信息,用戶最終只會形成機械點擊。
真正的對抗性完整,不是增加檢查數量,而是增加判斷維度。
審批人看到的是業務意圖,執行層還要驗證實際對象;模型提供操作建議,獨立規則還要檢查金額和邊界;SaaS負責協調流程,最終執行層還要確認關鍵條件;日志記錄過程,證據系統還要證明意圖、審批與結果之間存在可靠關聯。
檢查次數不是安全,獨立角度才是安全。
這也意味著,對抗性完整不能只存在于流程圖里。
它必須落實為具體能力:對象綁定、參數綁定、上下文綁定、執行前復核、狀態交叉驗證、獨立證據以及最終拒絕。
只要某個關鍵事實發生變化,系統就不能繼續沿用舊的授權。
九、真正重要的是,最后一層能不能說“不”
對抗性完整最終不是為了讓系統看到更多問題,而是為了讓系統在發現問題時真正停下來。
如果最終檢查發現執行對象已經變化,但系統仍然必須繼續;如果參數已經超出審批范圍,但執行層沒有拒絕能力;如果關鍵證據無法驗證,卻只能記錄日志而不能阻斷,那么所謂檢查仍然只是形式。
真正的安全邊界必須擁有否決權。
它不一定負責理解全部業務,也不需要比AI更聰明。它只需要在少數明確的高風險條件下,能夠拒絕執行。
例如,金額超過授權上限時拒絕,執行對象與審批對象不一致時拒絕,關鍵參數發生變化時拒絕,環境狀態無法確認時拒絕,證據鏈不完整時拒絕。
這樣的系統看起來可能不夠聰明。
它不會生成漂亮的解釋,也不會理解所有上下文,但它能夠守住那些已經明確不能越過的邊界。
最后一道邊界不需要無所不知,但必須有能力拒絕無法證明安全的事情。
AI系統越能自主完成復雜任務,這種最終拒絕能力就越重要。
因為“擅長完成任務”與“適合承擔最終風險”并不是同一件事。
一個系統越擅長推動事情向前,就越需要另一個獨立機制,在必要時讓它停下來。
十、對抗性完整不是讓所有事情都變慢
有人可能會認為,如果每個關鍵節點都從不同角度檢查,AI系統就會失去效率。
但這是一種誤解。
對抗性完整并不要求所有操作都經過同樣復雜的審查。
低風險、可撤銷、影響有限的動作,可以快速自動完成。真正需要更強驗證的,是那些影響重大、難以恢復或者可能被攻擊者利用的執行。
整理文檔與刪除生產數據庫,不應采用同樣的控制強度;生成轉賬建議與正式發出資金,不應共享同樣的執行邊界;創建測試資源與修改核心權限,也不應依賴相同的確認機制。
成熟的系統,不是在所有地方增加阻力,而是把阻力放在后果最嚴重的位置。
安全設計的目標不是讓每一步都變慢,而是讓錯誤無法輕易跨過最后一步。
從長期看,這種設計反而能夠提高組織效率。
因為它減少了事故后的回滾、調查、賠償和信任損失,也降低了企業對少數經驗人員的依賴。
系統不再要求每個人始終保持警覺,而是在關鍵節點自動提供新的判斷角度。
十一、把“神經質”變成制度
生活中那些被認為過度謹慎的人,往往是在用個人習慣彌補系統缺失。
他們反復核對,是因為流程不會替他們核對;他們回頭拉門,是因為按鍵動作不能直接證明現實結果;他們保存截圖和記錄,是因為事后很難證明當時到底發生了什么。
真正成熟的組織,不應把安全寄托在個人是否足夠謹慎。
它應當把這種謹慎轉化為設計。
哪些關鍵步驟必須從不同角度驗證,哪些信息需要獨立來源,哪些變化必須重新審批,哪些操作應該留下可驗證證據,哪些條件不滿足時必須停止執行,都應在系統運行之前確定。
這樣一來,所謂“神經質”就不再是個人性格,而成為組織穩定運行的一部分。
對抗性完整,不是把每個人都變得多疑,而是把關鍵時刻的多疑變成制度。
它不是假設所有人都會作惡,也不是要求系統永遠不犯錯。
它只是承認,信息會變化,人會誤判,系統會失效,AI會受到誘導,攻擊者也會利用信任和慣性。
因此,在那些不可逆的地方,我們不能只問“前面有沒有檢查過”,還必須繼續問:
現在執行的,還是最初被同意的那件事嗎?
審批人看到的,與系統真正準備執行的內容一致嗎?
當前身份、權限、對象、參數、環境和結果,是否同時成立?
我們是不是遺漏了某個能夠被利用的角度?
結語
很多人理解安全,習慣尋找更聰明的模型、更復雜的規則和更準確的識別技術。
但在現實世界中,真正擋住事故的,往往不是一個無所不知的系統,而是一個看起來有些多余的動作。
再核對一次收款人,再拉一下車門,再比較一次最終參數,再從另一個系統確認一次現實狀態。
這些動作不會創造直接收入,也不會讓報表更加漂亮。
它們唯一的作用,是防止一個已經偏離原意的事情,被整個系統順利、準確而高效地執行到底。
這就是Adversarial Completeness|對抗性完整所關心的問題。
它不是證明某個單獨環節沒有被破壞,而是確認系統沒有遺漏那些能夠被錯誤、欺騙和攻擊利用的關鍵角度。
在AI只負責回答問題時,這可能只是一種高級安全理念。
當AI開始管理資金、代碼、生產系統、數字資產和現實設備以后,它將成為所有執行系統必須面對的基礎問題。
因為AI時代真正危險的,并不是機器偶爾說錯一句話。
而是身份合法、權限有效、審批通過、簽名正確、日志完整,所有流程看起來都沒有問題,最后卻把一件早已偏離原意的事情,不可逆地執行到了現實里。
對抗性完整的價值,不是讓系統永遠正確,而是確保那些決定性的問題,沒有因為所有人都覺得“已經檢查過”而被遺漏。
本內容由作者授權發布,觀點僅代表作者本人,不代表虎嗅立場。如對本稿件有異議或投訴,請聯系 tougao@huxiu.com。
本文來自虎嗅,原文鏈接:https://www.huxiu.com/article/4877247.html?f=wyxwapp
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.