如果戰國有加密通訊:合縱連橫的密碼學與情報戰
陰符與陰書:戰國版的「一次性密碼本」?
《六韜·龍韜》中記載了「陰符」與「陰書」兩種軍事通訊方法。陰符是用不同長度的符節來表示不同的軍情,例如「大勝克敵」用長一尺的符、「請糧請兵」用長五寸的符——這是一種預先約定代碼本的編碼通訊,跟烽火台的邏輯類似,但更精細。
真正有意思的是「陰書」:當訊息太複雜、無法用符節表達時,就把整封書信拆成三部分,派三名使者分別送出,每人只持其中一部分,只有三部分都送達並合併,才能讀出完整內容。這在概念上已經非常接近現代的「秘密分享」(Secret Sharing)——把一個秘密拆成多個碎片,單一碎片無法還原原貌,必須達到一定數量才能重組。
如果再往前推一步,陰書其實可以發展成一種原始的「一次性密碼本」(One-Time Pad):發送方與接收方共用一本隨機排列的「密碼底本」,每個字都用底本上對應位置的隨機字替換,只要底本不外洩、且只用一次,理論上就是無法破解的。戰國時期沒有隨機數生成器,但各國完全可以用「卦象」、「曆法」或「樂譜」來產生偽隨機序列——這在技術上是可行的。如果蘇秦真的設計出這種東西,合縱聯盟的通訊安全等級,將會直接跳躍兩千年。
張儀的「連橫」其實是一場中間人攻擊
我們已經提過張儀欺楚是中間人攻擊。但如果用更嚴格的密碼學語言來拆解,張儀的手法其實包含三個層次:
第一層是「身份偽造」。張儀以秦國使者的身分出現,但楚國無法驗證他是否真的代表秦王。當時沒有「國書驗證」的機制,使者講的話是否代表君主意志,全靠個人信用與君主授權。這就等於沒有數位簽章——任何人都可以自稱代表某國,只要對方願意相信。
第二層是「訊息篡改」。「六百里」變「六里」,這是最赤裸的篡改。在沒有雜湊函數(Hash)或訊息驗證碼(MAC)的時代,口頭承諾一旦說出口,就沒有任何機制能證明它原本的內容。楚國手上沒有「原始訊息的指紋」,自然無法舉證。
第三層是「重放攻擊」。張儀在楚國與齊國之間來回穿梭,把兩國對彼此的善意訊息「延遲送達」或「選擇性送達」,讓雙方都以為對方先變心。這正是重放攻擊的精髓:訊息本身是真的,但送達的時機與順序被惡意操控,導致接收方做出錯誤判斷。
如果戰國有現代的公開金鑰基礎建設(PKI),楚懷王只要要求張儀出示「秦王私鑰簽署的國書」,再用秦王公鑰驗證,就能立刻識破騙局。張儀的整個連橫戰略,本質上就是建立在「沒有數位簽章」這個歷史漏洞之上。
三、合縱連橫的密碼學重構:六大邦交國的信任難題
現在讓我們認真做一次思想實驗:假設西元前 330 年的戰國七雄,突然獲得了一套完整的現代密碼學知識。他們會怎麼用?又會遇到哪些今天我們同樣頭痛的問題?
對稱加密與「合縱盟約」的金鑰分發困境
最直覺的方案,是六國共用一套對稱加密系統:大家約定同一把金鑰,所有外交密信都用這把金鑰加密。聽起來很簡單,但馬上就會遇到密碼學史上最著名的難題之一——金鑰分發問題(Key Distribution Problem)。
六國要共用一把金鑰,這把金鑰要怎麼送到各國手中?如果派使者送,使者可能被秦國收買或攔截;如果用書信寄,書信可能被拆閱;如果各國自己約定,那秦國只要收買其中一國,就能拿到金鑰,整個系統立刻崩盤。更麻煩的是,六國之間的信任程度並不對等:燕國與齊國有世仇,趙國與魏國摩擦不斷,楚國態度曖昧。在這種情況下,要讓六國共用一把金鑰,幾乎是不可能的任務。
這正是合縱聯盟在密碼學上的根本困境:對稱加密要求參與者彼此信任,但合縱聯盟的前提,恰恰是參與者彼此不信任。歷史上蘇秦之所以能促成合縱,靠的是他個人的外交手腕與各國對秦國的共同恐懼;但這種「人治」的信任基礎極其脆弱,一旦蘇秦離開或死亡,聯盟就迅速瓦解。如果當時有公開金鑰密碼學,這個問題就能被大幅緩解——因為公開金鑰密碼學的核心價值,正是讓互不信任的雙方,在不安全的通道上建立安全通訊。
數位簽章與「合縱盟書」的不可否認性
合縱聯盟的另一個致命問題,是盟約的不可否認性。戰國時代的盟誓,通常以「歃血為盟」的方式進行,參與者割破手指、塗血於口,對天發誓。這套儀式在文化上有很強的約束力,但在技術上,它完全無法防止某一方事後否認——「我當時是被逼的」、「那不是我簽的」、「盟書是偽造的」,這些賴帳的說詞在歷史上層出不窮。
如果六國採用數位簽章機制,情況就完全不同了。每一國君主持有一對金鑰:私鑰由君主親自保管(或藏在太廟密室),公鑰則公開給所有盟國。簽署盟書時,各國用私鑰對盟書內容進行簽章;任何一方事後想否認,其他國家只要用該國的公鑰驗證簽章,就能證明「這份盟書確實是你簽的,而且內容沒有被篡改」。這在技術上解決了合縱聯盟最脆弱的環節:讓背盟的成本變得可證明、可追究。
歷史上,秦國之所以能一次次瓦解合縱,靠的就是各國互相猜疑、事後互推責任。如果盟約有了密碼學上的不可否認性,秦國要收買其中一國背叛,難度就會大幅提高——因為背叛者將留下無法抵賴的證據,這在重視信義的春秋戰國語境中,是極嚴重的政治代價。
公開金鑰基礎建設(PKI)與「質子」制度
講到這裡,不能不提戰國時代一個非常有趣的制度:質子。各國為了確保盟約履行,常常互派公子作為人質,例如秦始皇的父親異人(子楚)就曾在趙國當質子。從密碼學的角度看,質子制度其實就是一種原始的「憑證交換」:雙方各自交出一個「抵押品」,作為對方履行承諾的保證。
但質子制度有一個明顯的缺陷:它只能保證「人質的安全」,不能保證「訊息的真實性」。秦國可以一邊扣著趙國的質子,一邊派張儀去騙楚國;質子制度完全無法阻止這種跨國詐騙。如果當時有一套完整的 PKI,各國就能建立一個「憑證頒發機構」(CA)——例如由周天子(雖然當時已名存實亡)或某個中立小國擔任,負責簽發各國使者的身分憑證。使者持憑證出使他國,對方只要驗證憑證上的簽章,就能確認「這個人確實代表秦國,而且有權簽署這份協議」。
這套系統在今天看起來理所當然,但在戰國時代,它會徹底改變外交遊戲規則:使者不能再冒充他國、協議不能再被隨意否認、訊息不能再被輕易篡改。合縱聯盟的穩定性將大幅提升,秦國統一六國的難度也將成倍增加。
四、情報戰的暗線:細作、反間與密碼分析
密碼學從來不是單向的防禦。有加密,就有破譯;有簽章,就有偽造。戰國時代的情報戰,其實已經是一場「攻防對抗」的競賽,只是當時的人們還沒有意識到,他們玩的正是密碼學的核心遊戲。
荊軻刺秦王:一次失敗的「憑證撤銷」
西元前 227 年,荊軻帶著燕國督亢地圖與樊於期的人頭,前往咸陽刺殺秦王政。這個故事大家耳熟能詳,但從情報安全的角度看,它其實暴露了一個嚴重的系統漏洞:秦國對「外部憑證」的驗證機制,存在致命缺陷。
荊軻能進入秦王宮殿,是因為他持有燕國使者的「合法憑證」——地圖與人頭。秦國查驗了這些憑證,確認「這是燕國派來的使者」,於是允許他靠近秦王。問題是,秦國只驗證了「使者身分」,卻沒有驗證「使者意圖」。這就像今天的系統只檢查「你有沒有通行證」,卻不檢查「你進來之後要做什麼」。
更精確地說,這是一次典型的「憑證撤銷失敗」。燕國派荊軻出使時,名義上是為了求和,實際上是要刺殺。秦國的情報系統如果足夠完善,應該能在荊軻出發後、抵達前,透過其他管道(例如潛伏在燕國的細作)得知「這次出使有問題」,並及時撤銷荊軻的通行憑證。但秦國沒有做到,因為當時的情報傳遞速度太慢,且缺乏跨國的情報共享機制。
如果戰國有現代的憑證撤銷清單(CRL)或線上憑證狀態協定(OCSP),秦王只要在荊軻進宮前查詢一下「這個使者的憑證是否仍然有效」,就能發現異常——當然,前提是燕國境內有秦國的情報節點。這也說明了密碼學的一個重要限制:再強的密碼技術,也無法取代情報網絡本身。
李斯與秦的「統一加密標準」
秦國最終能統一六國,原因很多,但其中一個常被忽略的因素,是標準化。李斯推動的「書同文、車同軌、統一度量衡」,本質上是一場大規模的「協議標準化」工程。從資訊科學的角度看,這解決了一個非常關鍵的問題:不同系統之間的互通性。
在戰國時代,各國文字不同、度量衡不同、就連驛站的文書格式都不一樣。這意味著,即使秦國截獲了趙國的密信,也可能因為文字與格式的差異,而難以快速解讀。反過來說,秦國要對六國發動情報戰,也必須針對每一國設計不同的通訊協議,成本極高。
李斯的標準化,等於是把整個華夏世界的「通訊協議」統一了:大家用同一套文字、同一套格式、同一套度量衡。這讓秦國的情報系統能夠橫向擴展——同一套密碼本、同一套解讀規則,可以適用於所有新佔領的地區。從密碼學的角度看,這就像是把一個異質網路,改造成了一個同構網路,大幅降低了管理與攻擊的成本。
當然,標準化也有副作用:一旦標準被敵人掌握,整個系統就門戶洞開。秦國統一文字之後,六國遺民只要學會秦篆,就能讀懂秦國的官方文書;這在資訊安全上,等於是把加密系統的演算法公開了,只剩下金鑰作為最後防線。這也解釋了為什麼秦朝滅亡後,劉邦入關時能那麼快接管秦國的檔案與制度——標準化的好處與壞處,從來是一體兩面。
五、假如戰國真的有了密碼學:歷史會怎麼走?
歷史沒有如果,但思想實驗有價值。讓我們沿著這條腦洞,推演幾個關鍵節點,看看密碼學的引入,會如何改寫戰國的歷史走向。
長平之戰的資訊迷霧
西元前 260 年,秦趙長平之戰,趙括紙上談兵,四十萬趙軍被坑殺。這場戰役的關鍵轉折,是趙王中了秦國的反間計,用趙括替換了老將廉頗。秦國是怎麼做到的?答案是資訊操縱:秦國細作在趙國散布謠言,說「秦國最怕的是趙括,廉頗不足為懼」,同時買通趙王身邊的近臣,讓這些假訊息順利進入決策圈。
如果趙國有一套完善的訊息來源驗證機制,情況會完全不同。趙王收到「秦國怕趙括」的情報時,應該問三個問題:這條情報是誰提供的?他的可信度如何?有沒有其他獨立來源可以交叉驗證?在現代情報學中,這叫做「來源可靠性評估」與「多源交叉驗證」;在密碼學中,這接近於「信任鏈」的概念——你必須能追溯每一條訊息的源頭,並確認中間沒有被篡改。
當然,趙王的問題不只是技術問題,更是政治問題:他想相信趙括,因為趙括的父親趙奢曾經大敗秦軍,趙王希望歷史重演。密碼學可以驗證訊息的真實性,但無法阻止決策者「選擇性相信」符合自己期望的訊息。這是所有安全系統的共同弱點:技術再強,也擋不住人性的偏誤。
秦滅六國的「零知識證明」
最後一個腦洞,留給秦國統一的密碼學隱喻。秦國在滅六國的過程中,有一個非常有趣的策略:它從不讓對手知道自己的真實意圖。秦國今天拉攏齊國、明天攻打魏國、後天又與楚國結盟,各國永遠猜不透秦國下一步要打誰。這種策略,在密碼學上有一個精妙對應:零知識證明(Zero-Knowledge Proof)。
零知識證明的核心概念是:證明者可以向驗證者證明「我知道某個秘密」,但不透露秘密本身。秦國對六國的行為,某種程度上就是一種零知識證明:它讓各國知道「秦國有統一野心」,但從不透露「下一個目標是誰」、「什麼時候動手」、「用什麼方式」。各國只能被動猜測,而猜測永遠伴隨著不確定性與恐懼——這正是秦國想要的。
如果六國能建立一套「威脅情報共享」機制,像今天的 ISAC(資訊共享與分析中心)那樣,把各自觀察到的秦軍調動、糧草運輸、使者往來等資訊彙整起來,或許就能拼湊出秦國的戰略意圖。但歷史上的六國,各自心懷鬼胎,情報共享幾乎不可能。這也再次印證了那個殘酷的真理:密碼學可以保護通訊,但無法強迫人與人之間合作。
六、結語:密碼學從來不是技術問題,而是信任問題
回顧整場思想實驗,我們會發現一個有趣的現象:戰國時代的人們,其實已經在無意識中使用了很多密碼學的概念——符節是身分驗證,陰書是秘密分享,烽火是編碼通訊,質子是憑證交換。他們缺少的,不是智慧,而是系統化的數學工具與標準化的協議設計。
但更關鍵的發現是:即使把現代密碼學整套搬到戰國,合縱聯盟也未必能成功。因為密碼學解決的是「技術上的信任」——確保訊息沒有被篡改、確保身分沒有被冒充、確保承諾無法被否認。但它解決不了「政治上的信任」——六國願不願意為了共同利益,犧牲部分主權?願不願意在秦國的威脅下,真正團結起來?願不願意在盟友背叛時,仍然遵守盟約?
這些問題,兩千三百年後的我們,依然沒有完美答案。今天的國際關係中,情報共享、網路安全、加密通訊的談判,依然卡在同樣的困境上:每個國家都想要安全,但每個國家都不願意先交出信任。戰國的合縱連橫,其實是人類歷史上第一場大規模的「多方安全協議」實驗,而它失敗的原因,和今天許多跨國安全合作失敗的原因,如出一轍。
所以,如果戰國真的有加密通訊,歷史或許會有一些不同:張儀的騙局可能沒那麼容易得逞,楚懷王可能不會輕易與齊國斷交,長平之戰的結局可能改寫。但秦國統一六國的大勢,恐怕不會因為幾套密碼系統而逆轉——因為真正的密碼,不在竹簡與符節之中,而在人心與利益之間。
而這,或許才是「歷史腦洞」最迷人的地方:我們用現代的技術概念去拆解古代的故事,最後發現,科技會演進,人性卻始終如一。密碼學再怎麼進步,我們依然在問同一個問題:在這個充滿不確定與背叛的世界裡,我該把信任交給誰?
💬 想說點什麼?
歡迎到留言板分享你的想法、心得或疑問。
💬 前往留言板 →