01 文獻
Schmeh 釋出的那張圖片是 Tony Gaffney 發給他的,它不是米蘭報紙本身,而是羅馬的一張單張:Dispaccio del Card. Soglia. Tratto dal giornale l’Italia del Popolo 30 Giugno,由 Via Lata 的 Clemente Puccinelli 印製。評論者在一天之內就確認了那份報紙(Helmut Winkler、Hans Jahr:L’Italia del Popolo,馬志尼的義大利民族協會的機關報,第一年,第 40 號)。它的前言交代了編者所知道的情況:
隨後是兩份文書。第一份是一封完全明寫的信,編號 6235:教皇已讀過大使 5 月 27 日的兩封信,贊同他應奧地利外交大臣之邀追隨皇帝的決定;“指示是什麼,您將從我同時發出的加密急件中得知”;不可把外交部的說法與教皇本人的意願混為一談。第二份是加密急件,以明寫開頭(“得知您已離開維也納並遷往皇帝陛下現今駐蹕的那座城市,我藉此機會把這份急件寄往那裡”),然後是十四行數字,中間插入一句明寫(“為節省時間,您須立即出示本急件”),最後再有兩行數字,署名 G. Card. Soglia,羅馬,1848年6月15日。頁尾寫著:Un premio non tenue è destinato al migliore interprete di queste cifre。
所用的轉錄出自 Joe,是 2014年12月15日 Schmeh 文章下的第四條評論。我們把掃描件切成長條逐行核對,除一處外都正確:第 12 行印出的 …2251242496774740906… 漏了一個 4。改正後,全段為 955 個數字。印刷工自己犯了一個錯誤,下文再談。印件中行內出現點的地方(3099.7.39、67367.067),同樣忽略不計:沒有它們文字照樣能解密。
02 密碼體系
在猜測任何金鑰之前,數字中就能看出三件事。
- 5 分隔詞語。在每個 5 處切開,全段分成 102 個非空片段,其中 92 個是偶數位。十個奇數位的片段中,有七個是單獨的數字 1 到 4,一個以這樣的數字結尾,一個是印刷錯誤,還有一個是多出來的 8。單獨的 1、2、3 或 4 是標點:逗號、分號、冒號、句號。句號 4 緊挨在印出的那句明寫句子之前。並非每個詞的分界處都寫了 5;短詞常常連寫(conmio、oper、perdilui)。
- 8 標記碼組。數字 8 從不作為數對的第二位出現。凡是它出現的地方,都是一個四位陣列的開頭:8247、8319、8620。數對取自 0 1 2 3 4 6 7 9 這八個數字,構成一張 64 格的表。
- 數對是字母和音節。共 355 個數對,56 種不同的:符號數比一套字母表所需的多,又遠少於一部程式碼。
復原出的表。行是第一位數字,列是第二位;短橫表示該格在這份訊息中沒有出現。
| 0 | 1 | 2 | 3 | 4 | 6 | 7 | 9 | |
|---|---|---|---|---|---|---|---|---|
| 0 | – | del | 無 | k | s | ta | al | a |
| 1 | chi | m | in | – | ma | c | – | p |
| 2 | gli | e | ne | la | n | che | – | – |
| 3 | qu | da | – | b | mi | t | con | d |
| 4 | de | l | di | se | e | o | al | r |
| 6 | il | f | – | per | si | st | i | te |
| 7 | v (u) | ti | g | – | z | to | b | p |
| 9 | c | f | l | d | g | m | n | s |
同音符:e 21、44;b 33、77;c 16、90;d 39、93;f 61、91;g 72、94;l 41、92;m 11、96;n 24、97;p 19、79;s 04、99;al 07、47。八個空格(00 13 17 27 29 32 62 73)在這份訊息中沒有出現。a 只有一格 09,而它是文中最常見的組(38 次)。70 是 u 和 v;雙寫時就是 92 70 36 74 46 70 70 Lutzovv 中的 w。
程式碼詞和詞幹。8XXX 組代表整個詞,或由字母補全的詞幹:40 20 8424 67 degli (ordin)i,19 09 04 99 09 8446 67 passa(port)i,41 21 8433 16 67 19 46 le (parte)cipo。有九個由上下文確定,無可置疑,而它們的值隨字母順序遞增:
| 8319 | 8340 | 8374 | 8422 | 8424 | 8429 | 8433 | 8446 | 8620 |
|---|---|---|---|---|---|---|---|---|
| Imperatore | istruzione | Monsignor | opportuno | ordin- | Padre | parte | port- | Roma |
這正是 Kent Ramliden 在 2015年1月7日的評論中根據 1814 年維也納會議期間維也納教廷大使館的密碼所描述的設計:雙位數表示字母和音節,一套四位數系列表示詞和人名,5 作分詞符。在那裡,詞系列以 7 開頭,雙位數避開 5 和 7;而這裡以 8 開頭,雙位數避開 5 和 8。他以 7 為標記的解析在這份文字上行不通;換成 8 就行了。
印刷錯誤:第一個 passaporti 印成了 19 09 05 99 09 8446 67。其中的 5 會把這個詞切成兩半。文中稍後的第二個 passaporti 是 19 09 04 99 09 8446 67,可見印刷工把 4 排成了 5。第 1 行 si 之後那個孤立的 8 無法解釋。
03 金鑰是如何復原的
- 簡單替換失敗了,而這次失敗很能說明問題。以 5 為分詞符,一個簡單替換求解器(模擬退火,每個數對一個字母)配合義大利語、法語和拉丁語的 5-gram 模型都一無所獲,在每種語言上大約都是每字元 −3.4 奈特。同一求解器又在一份合成對照上執行:一段同樣長度的義大利語文字,用 68 個兩位數符號作同音替換加密,分詞方式相同(
synth.py)。它把對照完全解了出來。所以求解器沒有問題,問題在於這些數對不可能全是單個字母。 - 名碼本求解器。下一個求解器允許每個數對代表一個字母或一個常見音節,每個數對一個值,8XXX 組則作為未知詞擱置。在它的輸出中,像 circostanze、intendendosi 和 indirizzata 這樣的片段都是文書處行文中的完整義大利語詞,任何偶然得到的金鑰都不會產生這些詞。
- 先固定詞語,再手工解密。把這三個詞固定下來後重新執行求解器;此後便手工逐詞解密,一次一個數對,每個值都與該數對的所有其他出現位置核對。Lutzovv 和 Inspruck 從字母中自然浮現。Morichini 在最後一行拼寫了出來。
- 程式碼。字母一旦確定,8XXX 組就可以被解析出來並排序:Imperatore 8319 在 istruzione 8340 之前,後者又在 Monsignor 8374 之前,如此一直到 Roma 8620。按字母順序排列的單表程式碼允許根據一個未知碼組落在哪兩個已知碼組之間來估計它的值(§05)。
04 解讀
拼寫已規範化(密碼中把 u 寫作 v,並寫作 commeteva);(…) 為根據上下文補出的程式碼詞;[8xxx] 為未復原的碼組;斜體句子在印件上為明寫
Con mio (foglio) del [8734][8760][8904][8739][8413] si le commetteva che in seguito degli (ordin)i dati a Sua Eccellenza il (Signor), [8227] di Lützow, di abbandonare (Roma), Ella si facesse del pari a richiedere i passa(port)i per restituirsi alla Dominante, o per condursi in (Colonia), che (è) (lontan)a della (guerra), (com)e [8704]e lo avesse creduto (opportuno). (Tuttavia) per nuove sopraggiunte circostanze Le (parte)cipo [8093][8102] del (Padre) che Ella rimanga in Inspruck presso l’(Imperatore) e ovunque egli fosse per recarsi; intendendosi sospesa la indicata delibera [8136] relativa alla domanda de’ passa(port)i: interessa [8131] a (Padre) (cotest)a nuova (istruzione), che Le viene indirizzata per tre diverse vie, (col fine di) assicurarne l’arrivo. A risparmio di tempo dovrà con ogni sollecitudine rendere ostensibile il presente dispaccio a (Monsignor) Morichini per di lui norma alle pratiche affidategli.
中文釋義
我在[……]的(信)中曾指示您:鑑於已命令 Lützow 閣下(先生)[……]離開(羅馬),您也應同樣索要護照,以便返回首都,或者前往遠離(戰爭)的(科隆),(如)[……]您認為(合適)的話。(然而)由於新近出現的情況,我通知您聖(父)[……],您須留在因斯布魯克的(皇帝)身邊,無論他前往何處都要跟隨;上述關於索要護照的決定[……]應視為暫停執行。聖(父)[……]關心(這)項新(指示),它正經由三條不同的途徑發給您,(以便)確保其送達……為節省時間,您須立即出示本急件給 Morichini (蒙席),以作為他處理所受託交涉事務的依據。
方括號以外的每一組都是用字母拼寫的,解密時別無選擇。La Dominante 指首都羅馬。以 interessa 開頭的那句話語法上不完整,其動詞在未解的碼組 [8131] 中或在其後;但意思很清楚。
05 按排位檢驗的程式碼詞
有十個碼組是根據上下文補出的:foglio、Signor、Colonia、è、lontan-、guerra、com-、Tuttavia、cotest-、col fine di。按字母順序排列的程式碼允許進行一項不依賴上下文的檢驗。我們對九個確定的錨點擬合了一條直線:程式碼值對應於該詞在一份 19 世紀義大利語語料中 1,500 個最常見詞的排序表裡的排位(斜率約為每個詞 0.47 個程式碼值; rankfit2.py)。錨點本身在這條線周圍散佈10到60個值,所以容差就取這個範圍。於是每個由上下文得出的讀法都按自己的排位得到一個預測值:
| 程式碼 | 讀法 | 預測值 | 偏差 |
|---|---|---|---|
| 8110 | col(fine di) | 8114 | −4 |
| 8116 | Colonia | 8117 | −1 |
| 8120 | com(e) | 8122 | −2 |
| 8122 | cotest(a) | 8145 | −23 |
| 8211 | è | 8199 | +12 |
| 8247 | foglio | 8245 | +2 |
| 8310 | guerra | 8289 | +21 |
| 8346 | lontan(a) | 8339 | +7 |
| 8632 | Signor | 8596 | +36 |
| 8737 | Tuttavia | 8665 | +72 |
可靠錨點相對同一條線的偏差:Imperatore +24,istruzione +21,Monsignor −14,opportuno −10,ordin- −11,Padre −10,parte −18,port- −41,Roma +60。
有四個讀法落在預測值上下五個值以內,另有五個落在錨點自身的散佈範圍內,只有一個,Tuttavia,超出了這個範圍。兩個最大的殘差,Signor和Tuttavia,都位於最後一個可靠錨點Roma之後,而且都是正值,Roma自己的殘差也是正的:在這部程式碼裡,字母表靠後的部分比詞表裡更密,而這條線在越過它之後是外推出來的。這些讀法彼此之間的順序也是對的(col < Colonia < come < cotesta < è < foglio < guerra < lontano),在錨點之間的位置也是對的,而這一點單靠上下文是保證不了的。
順序還能排除一些讀法。con mio [8247] del最自然的讀法是dispaccio,但一個d開頭的詞不可能排在8211的è之後;預測值為8245的foglio則可以。[8227]若讀作Conte(後接di Lützow),就必須落在come(8120)和cotesta(8122)之間,僅憑可靠錨點也會把它放在8133附近;而8227位於e–f區間。這兩處排除都依賴離它們最近的上下文讀法,所以可靠程度與那些讀法相當。
06 歷史:晚了一天
1848年5月17日,皇帝斐迪南離開維也納前往因斯布魯克。教廷大使應奧地利外交大臣之邀隨駕前往,並於5月27日致信羅馬;與密文一同刊印的明文信,就是教皇對此的認可。當時羅馬與維也納已瀕臨決裂:教廷志願軍正在威尼託與奧地利人作戰,奧地利大使 Lützow 伯爵在5月初就收到了護照(羅馬的Gazzetta在5月9日宣佈了此事),據 Agostino Chigi 親王的日記,他於5月16日晚離開羅馬。密文所提到的那份較早的指示(其日期就在未定碼組裡)正是教廷的答覆:教廷大使也應索迴護照回國,或者去科隆,遠離戰事。
這份密文撤銷了那道指示。所謂nuove sopraggiunte circostanze是什麼,密文沒有說。Nisibis 大主教 Carlo Luigi Morichini 直到4月還是教皇國的財政大臣,他於5月27日以特命宗座代表的身份離開羅馬,前往皇帝和查理·阿爾貝特處,6月10日夜抵達因斯布魯克(據 Chigi);教皇希望自己的教廷大使在 Morichini 談判期間留在皇帝身邊,也希望 Morichini 看到這道命令。
這兩件事都來不及了。據Dizionario Biografico degli Italiani,教廷大使於6月14日離開因斯布魯克,以教廷代表身份前往法蘭克福和科隆,9月才回到維也納的任所。而這份急件的日期是15日。一份副本於20日在都靈寄出,始終沒有到他手裡;Chigi 聽說它在都靈或米蘭被截獲了。它於30日在米蘭刊出,7月5日或6日被張貼在羅馬街頭。7月8日,Chigi 記下:人們擔心的內閣危機不會因此而起,據說教皇毫不為難地把密文部分給內閣看了。
與解讀對照,前人公開的猜測有中有不中。Spada 的訊息來源說,密文裡是教皇對教廷大使與宮廷保持良好關係、避免被逐出之醜聞的嘉許。嘉許其實在明文信裡;密文是一道命令,它要阻止的決裂恰恰是羅馬自己下令的。2016年 Cipherbrain 上轉述的7月7日Il Labaro猜測其內容涉及離開宮廷以及 Nisibis 主教的某種角色,這更接近真相,只是方向正好反了。
07 十一個未定碼組
有十一個碼組各只出現一次,上下文也無法確定它們。字母順序給了每個碼組一個視窗:它在已知值之間的位置,換算成排序詞表中的一段(windows2.py,在所有錨點之間分段計算;大約±15個詞)。
| 程式碼 | 視窗 | 上下文 |
|---|---|---|
| 8734 8760 8904 8739 8413 | tr–tu / venti–vo(lgente) / v之後 / tu–u / n–o | 較早那封信的日期:con mio foglio del …,可能是6月初的某個日期,如tre volgente,並附有一處引注 |
| 8227 | ess–età–ex–fa | il Signor, […] di Lützow;Chigi 稱他為ex-ambasciatore |
| 8704 | te–ti | come […]e lo avesse creduto opportuno |
| 8093 8102 | ch–ci / ci–co | Le partecipo […] […] del Padre |
| 8131 8136 | cr–da / da–dar | interessa […] al Padre;delibera […] relativa |
用字元模型給這些視窗裡的每個候選詞打分,挑出來的只有虛詞(ciò、da、esse),讀不出意思。8904比詞表裡所有的詞都靠後,在這類程式碼裡可能是z開頭的詞,或是數字、人名的附錄。要填上這些空,需要1848年的教廷程式碼本,或用同一程式碼寫成的其他信件:梵蒂岡的國務院檔案和維也納教廷大使館檔案,或者 Haus-, Hof- und Staatsarchiv 里奧地利截獲的信件,Ramliden 在2015年就指出過後者。
2026年9月30日又試了一次,因為 Lasry 希望引用的段落少一些空缺。這部程式碼顯然從8000開始:在排序詞表裡過Colonia(8116)和Imperatore(8319)畫一條線,第一個a開頭的詞落在7996–8005。從8000出發,經Colonia和各可靠錨點插值,預測col在8113–8114、come在8120–8122,都正好是上下文讀法所在的位置,同時也把第一對碼組的範圍縮小了:8093落在ce-(cenno的預測值為8093–8097),8102落在ch–ci。按文意,Le partecipo之後、del Padre之前該出現的詞全都被位置排除了:volontà、mente、desiderio、ordine(8424是ordin-)、comando和commissione都排在Colonia之後,beneplacito則遠在前面。Cenno(“per cenno del Santo Padre”,奉聖父之命)符合8093,但這樣一來就沒有哪個ch–ci開頭的詞能和它組成短語,所以這一對仍然空著。[8136]若讀作presa(“delibera presa”),它是p開頭的詞,不可能位於8136;視窗在d的前段(da–dar),而且沒有它,這個分句讀起來也是完整的。[8131]同樣在d的前段;像d’assai這樣的副詞(“interessa d’assai al Padre cotesta nuova istruzione”,這一新指示對聖父十分要緊)能讓句子合乎語法,但那是按文意的推測(I),不是讀法。用一份1,000詞的義大利語詞表做同樣的插值,也會預測cotesta在8145–8159附近,比它在8122的位置高出23到37:這個上下文讀法是c組裡依據最弱的。
08 尚不確定之處
- 上面那十一個碼組,因而還有較早那封信的日期,以及三個分句的確切措辭。
- 十個上下文讀法是靠順序檢驗過的,並未得到證明。最弱的是guerra(8310,只比8319的Imperatore低九個值,於是幾乎所有h和i開頭的詞都得擠在它們之間)和lontan-(8346,比istruzione高六個值,只給從istr-到lon-之間的所有詞留下五個值)。兩者都符合句意和順序,但程式碼在這一段如此稀疏,是不尋常的。Tuttavia離預測值最遠,原因見§05。
- 該是dalla guerra的地方印作della guerra,以及第1行si後面多出的8,都是照印本原樣;究竟是譯碼員還是米蘭排字工的錯,從一份翻印本上無法判斷。
- 這張單頁是米蘭報紙的羅馬翻印本。米蘭原刊(見 repubblicaromana-1849.it)沒有逐個數字核對過。
09 來源
- Dispaccio del Card. Soglia. Tratto dal giornale l’Italia del Popolo 30 Giugno,單頁印刷品,羅馬,Tip. Clemente Puccinelli,1848年;影象出自 K. Schmeh,“Wer knackt die verschlüsselte Nachricht von Kardinal Soglia?”,Cipherbrain,2014年12月13日(scienceblogs.de),由 Tony Gaffney 提供。十四條評論:Joe 的轉錄(第4條),Kent Ramliden 談1814年維也納教廷大使館密碼和 Spada(第7、8、10條),Thomas 和 Armin 談Il Labaro(第12–14條)。那裡沒有人貼出過解讀;據2026年9月的搜尋,其他地方也沒有。
- L’Italia del Popolo,米蘭,第一年第40期,1848年6月30日(repubblicaromana-1849.it)。
- G. Spada,Storia della rivoluzione di Roma,第二卷(佛羅倫薩,1868–69),第十四章,第387–390頁:明文信及對密文內容的轉述(Wikisource)。
- Diario del principe Agostino Chigi Albani,1848年:5月6日和9日、5月17日、5月27日、6月20日、7月6日和8日(Wikisource)。
- L. Sandoni,“Viale Prelà, Michele”,Dizionario Biografico degli Italiani 99(2020)(Treccani)。
校正後的密文(ct2.txt),帶字表和程式碼的解碼器(decode.py, key.json, codes.json),人工合成的對照(synth.py),排位擬合與視窗(rankfit2.py, windows2.py),與轉錄核對過的逐行圖條(strips/)以及筆記都在程式碼庫中(targets/soglia1848/)。執行 python decode.py --guess 可得到填入上下文程式碼詞後的讀法。

