01 檔案
JACAR B03050731500 是外務省關於反袁起義的一卷檔案(1.6.1.75-1_015,膠捲1-0955,第0244–0302幀)。附函為電送第一九八〇號,密碼,由外務大臣石井於1916年5月25日下午4時35分發給駐肇慶領事 Ōta,用日文明文說明了附件是什麼:
黃興ヨリ林虎李根源宛電報依頼アリタルニ付同人ニ伝達アリタシ 內容ハ先日來電ノ挨拶ナリ(以下支那側暗號)
“黃興請求向林虎、李根源發一份電報,請轉交他們。內容是對日前來電的答覆。(以下為中方密碼。)”
要緊的是三幀:0246,印在帝國政府電報局轉發電報用紙上的電報;0247,標題為電稿,是草書寫的中文譯文;0248,一名書記員在外務省用紙上把譯文改排成日語語序的版本,附有他自己的註釋。
REKUTATA UHOYAKATE SEKANAOKU SAKEKINISE OSUKAKUCHI REUHONIUSU MAKASUSAKU FUREOHIHE YENIKIYEHI TAKASUREU SASHIKIHE WAONIAAHO SAYEHITE UHINAKUTA NEATEMUYE SUHEUHAKA YESOMIKANU TEASUUKU TSUHAKOSE KEKININAKI TEAKETASHI KONUOHIKE HIMIKANO SHIKUSAHE UHATAKASA KEKINIKA ATAREUSASU OSOYUANIRA KISU
按假名讀,這是139個音節,其中36個各不相同。完全沒有濁音假名(沒有ga、za、da、ba),這在電報通訊中很正常,因為濁音符號根本不傳送。這些音節是日語的(SHI、CHI、TSU,以及舊式的 YE 和 WA),而不是六週前發給孫中山的汕頭電報所用壓縮碼中的子音-母音字母。
02 外務省的譯文
第0247幀是譯文:標題電稿,下面四列,分別為12、11、12和11個字,共四十六個字的電文。第0248幀是為日本讀者重新排列的同一文字,它是兩幀中更有用的一幀,因為書記員在沒有把握的地方加了註釋。
隱印崧蕘邕行諸兄鑒:正發書翰之際,適接哿電,敬悉一切。護國軍能速入湘贛甚好。章行嚴何日東渡?速令出發,並望預電。興 徑
“致 Yin、Yin、Song、Yao、Yongxing 諸兄:正要發信,適接二十日來電,一切敬悉。護國軍若能迅速進入湖南、江西,甚好。章行嚴何日東渡日本?望令其即刻啟程,並請預先電告。——興,二十五日。”
大部分身份的確認都來自書記員的註釋。在開頭那一串名字旁,他寫了林虎・李根源等ノ字ナラン,即“大概是林虎、李根源等人的字”;他也是在猜,而其中一個肯定是蔡鍔的字松坡。他把湘贛注為湖南江西,即湖南和江西;把東渡注為日本ニ來ル,即來日本。章行嚴就是章士釗,黃興的親密同志。有兩個字是日期,用的是中文電報中表示日期的韻目代日:哿 = 20日,徑 = 25日。署名的最後一個字徑,與附函上的發電日期完全吻合。這一吻合是證明這份譯文屬於這份電報的最好的單項檢驗。
更正,第二輪。上面的連貫文字是書記員根據第0248幀所作的意譯(50字)。在500 dpi 下檢視第0247幀上的草書,共46字:隱印崧誥邕行諸兄鑒正發書 · 間適接哿電敬悉一切護國 · 軍能速入湘贛甚好[章]行嚴何日 · 東渡望速啟行先電示興徑,其中章是行間補寫的。這一字數與46個假名三元組恰好吻合;見第03節。
草書中有幾個字形仍不確定,這裡是綜合兩幀給出的。各列字數為 2 + 12 + 11 + 12 + 11;Tomokiyo 的筆記給出了同樣的數字,卻把它們加成68,實際相加是48。
03 方案
四十六個字對應138個可用假名,就是每個字三個假名,末尾多出一個假名。這確定了比率。問題在於每個假名的哪一部分在起作用,而五十音圖的形狀回答了這個問題:它是一張十個子音行乘五個母音的網格。
如果子音行承載一個數字,而母音可以自由選擇,那麼明文中重複出現的字,會重複為同一組行的三元組,但不一定重複為同一組假名的三元組。這是一個可檢驗的預言,而計數結果毫不含糊。在46組中:
| 讀解 | 觀察到的重複 | 隨機預期 | 置換檢驗 |
|---|---|---|---|
| 子音行 | 7 | 1.03 | p = 0.006 |
| 母音 | 8 | 8.28 | p = 0.70 |
| 字面假名 | 1 | — | — |
子音行重複了七次,而隨機預期只有一次。母音重複了八次,隨機預期也是八次:在這種分組下,母音不承載任何資訊。而表面的假名,也就是截獲者實際看到的東西,在四十六組中只重複了一次。機制在這些重複的組本身中清晰可見,同一個字被拼成兩種不同的樣子:
S K N → SE-KA-NA 和 SHI-KO-NU
R — H → RE-U-HO 和 RE-O-HI
T — H → TA-U-HO 和 TE-U-HI
S K H → SA-KU-FU 和 SHI-KI-HE
那是最初的分析,而這些幀糾正了它。重新獲取並在500 dpi 下檢視後,第0247幀在標題之後有四列,分別為12、11、12和11個字,共46個,正是假名三元組的數目:
隱印崧誥邕行諸兄鑒正發書 · 間適接哿電敬悉一切護國 · 軍能速入湘贛甚好[章]行嚴何日 · 東渡望速啓行先電示興徑
上面早先那段50字的明文依據的是書記員在第0248幀上的日文意譯;草書原文有46個字,章是行間補寫的。這段明文中,行重複三次(位置6、32、41),速重複兩次(26、39),電重複兩次(17、43)。在上面的分組下,這幾對中只有一對吻合。去掉第106位的一個假名,即第36個字開頭 OHIKE 中的 O,從那裡起的每個三元組都移動一位:行三次都成了 KE-KI-NI,速兩次都是 HE-U-HA,電兩次都是 RE-U-SA,末尾多出的 SU 則補全了最後一個字。歸檔的電報多了一個假名,而這種程式碼是確定性的:同一個字總是同樣的三個假名,母音也不例外。
因此,表中的七次子音行碰撞並不是同一個字用不同母音寫出。移位之後,它們是若干對不同的字(印/護、誥/日、鑒/間、書/敬、國/嚴、甚/何、諸/示),共享同一組行三元組,只在母音上不同。母音承載資訊。最初分析中保留下來的,是比率,即每字三個假名,以及假名所在的行與其程式碼值相關這一事實;行碰撞超出隨機預期的部分,正是這種相關性從外部看上去的樣子。在50個假名的音節表上,三個假名可以定址125,000個條目,遠多於任何私人程式碼本;最自然的解釋仍然是一種三位數程式碼,每一位數字寫成一組假名中的一個,只是這些組並不是行。
對此做過一次檢驗,結果失敗。如果這些行是一本按字典順序編排的程式碼本的數字,那麼十個行的某種置換,應能使42個不同字的程式碼號按標準電碼順序單調排列。在全部3,628,800種置換中,最好的 Spearman rho 是0.524;對明文做十二次隨機打亂後進行同樣的搜尋,得到的零假設分佈均值為0.468,最大值為0.614。沒有訊號。
04 仍未解決的部分
- 假名到數字的對照表。行並不是數字,而46個字不足以確定36個假名到十個值的分配。
- 這份電報所確定的42個條目(字到假名三元組)之外的程式碼本內容。
同一程式碼的第二份電報可以解決這兩個問題。這一份解決的是方案、明文,以及那個掩蓋了重複的傳輸錯誤。
05 來源
- JACAR(Japan Center for Asian Historical Records,亞洲歷史資料中心),Ref. B03050731500,袁世凱帝制計畫一件(極秘)/反袁動亂及各地狀況 第十五巻,日本外務省外交史料館,1.6.1.75-1_015,第0244–0302幀。
- S. Tomokiyo,“Chinese Cryptography: 1871–1945”和“Unsolved Historical Ciphers”;以及他的部落格文章“Chinese Coded Telegram (1916) from Huang Xing”,其中報告了歸檔的譯文和初步分析。
- 用倉庫中的
targets/sunyatsen/huang.py可復現這些統計;密文就在指令碼里,無需任何資料檔案。
