第2部 · 技術解説

文密を破る――文字の構造からパラメータのない二つの鍵へ

「fazihipego wezelucuna」から「報傳取消日人態度遽變」へ至る道のり。翻字、30回に及ぶ計算(その大半は失敗)、すべてを変えた一つの単純な統計検定、そしてそれぞれ一行で書ける二つの鍵。

点線の下線を付した箇所は未確認の推測である。

1916年の日本の電信局を想起させる場面。実際の「文密」電報用紙には、ラテン文字の暗号語が記されている(トップページの画像を参照)。
1916年の日本の電信局を想起させる場面。実際の「文密」電報用紙には、ラテン文字の暗号語が記されている(トップページの画像を参照)。 AIによる歴史的再現イラスト。

同じラテン文字でも、暗号方式は異なる

公開電碼は符号化の段階であり、秘密そのものではない。1916年の文密は、二つの固有の表で音節に変換する。

  1. ロザモンド · 1915–1916

    英語文字を相互に置換

    you ↔ hea

    一文字を別の文字に置き換える。同じ表で暗号化と復号を行う。

  2. 中文電碼

    漢字公開の4桁番号表

    文 → 2429

    公開の表なので、これだけでは内容を隠せない。

  3. 圧縮符号 · 複数の表

    4桁の中文電碼2桁ずつの数 → 音節

    00–99 → CV

    方式ごとに表が異なる。CVは子音と母音を表す。

  4. 文密 1916 · G0 / Y0

    4桁の中文電碼二つの異なる音節表

    報 → 1032 → fa | zi

    G0のみの例。Y0は別の表なので、相互に代用できない。

要点:暗号方式

35秒でわかる解読:日本の電報用紙から中国語の本文まで、ただ一つの誤字の訂正も含めて。アニメーションはコードで生成、字幕は5言語。

1916年の二つの系統は、いずれも5つの操作で暗号化されている。現代的な意味での秘密鍵はない。東京 → 肇慶の系統(1916年6〜9月)を例にとる。

中国語の本文報
公開の電信符号1032
二つに分ける10 | 32
半分ずつ → 音節(G0 表)fa | zi
音節をつなぎ、10文字ずつに区切るfazihipego

G0 表は、00〜99 の各数に「子音+母音」の音節を一つずつ割り当てる。子音は h から始まるアルファベットの逆順(h g f d c b z y x w v t s r q p n m l k)で、十の位ごとに二つ。母音 a e i o u が一の位を表し、組の最初の子音では昇順、二番目の子音では降順に並ぶ(蛇行配列):

つまり ha = 00、hu = 04、gu = 05、ga = 09、fa = 10……ka = 99。Python で書けば:

ORDER, V = "hgfdcbzyxwvtsrqpnmlk", "aeiou"
G0 = {c + v: 10 * (i // 2) + (j if i % 2 == 0 else 9 - j)
      for i, c in enumerate(ORDER) for j, v in enumerate(V)}

def decode(letters):          # "fazihipego..." -> ["1032", "0278", ...]
    s = [letters[k:k+2] for k in range(0, len(letters), 2)]
    return ["%02d%02d" % (G0[a], G0[b]) for a, b in zip(s[::2], s[1::2])]

各電報は署名「伸」(heyu = 0135)、ときに「伸令」で終わり、その後に日付が続く。日付は韻目代日(巧 18日、漾 23日、元 13日……)か、漢数字(卅 30日)で書かれる。

試してみる

電報を選び、漢字をクリックするか一字ずつ再生すると、対応する二つの音節が、暗号文と、電報の下に表示される鍵の表で強調表示される。二つの系統(G0、Y0)を選べる。オレンジの破線で囲まれた字は疑わしい字(用紙の判読が不確か、または稀な字)である。

各枠:音節 · 電信符号 · 漢字。

出発点:公開済みの研究

出発点は「Sun Yat-sen's circle on the wire, 1916–17」[1]とリポジトリ dbourdeau/cyphersolver[2]である。そこでは電報用紙の翻字と、孫文周辺の約60通の電報の解読が公開されている。これらの電報は、S. Tomokiyo 氏が Cryptiana で紹介した山田純三郎の「圧縮表」[8]の系統に属する表を用いる。子音20・母音5、すなわち00〜99の各数に一つずつ対応する100音節である。

趙伸の暗号電報はこれと異なる。10文字の語で加算の跡は見えず、そこでは未解決の問題とされていた[1]。軍務院系統の電報の多くは平文の前置き 2429 1378 で始まり、「文密」と読める。これがこの暗号の名である。雲南宛ての電報は同じ構造で母音が6つあり、標識「Cg」で始まる。私たちは特定済みの文書と翻字、そして電碼の半分が1音節になるという考え方から出発した。以下に示すとおり、東京発の系統では表は単純な規則に従っている。アルファベットの逆順、10ごとに子音二つ、母音の蛇行配置である。

ルール

歴史的暗号の解読は、自分自身をだますのに格好の場である。パラメータが十分にあれば、どんな雑音の中にも中国語を「読める」。そこで私たちは、あらかじめ定めたルールの下で作業し、追記のみのログ(約1,400行、31回のセッション)に記録した。

第1段階 ―― 職員の書いた文字を読む

用紙から意味へ:実際の例

ロザモンド、上海 → 東京、1915年7月7日。英語の置換暗号の例であり、文密のG0ではない。

  1. 1 · 史料

    JACAR所蔵の日本側写し:B03050087700、画像50。クリックで拡大。

    JACAR所蔵の日本側写し:B03050087700、画像50。クリックで拡大。

  2. 2 · 文字群を書き起こす

    gowoisrjat
  3. 3 · 置換表を適用

    g o w o i s r j a t
    ↕
    b e m e r c i f u l
  4. 4 · 単語に区切って訳す

    be merciful

    「どうか慈悲を。」

暗号文は日本の職員による手書きの写ししか残っていない。g と q、x と d、u と n は混同しやすく、一字の誤りで漢字が一つ変わり、一字の脱落でそれ以降の全体がずれる。

ある読みの細部が決定的だった。長いあいだ q は g の字形の異体とみなされていた。人間の読みがこれを区別したことで、アルファベットはちょうど20の子音(b c d f g h k l m n p q r s t v w x y z、j なし)になった。当時の最良のモデルでは、この区別だけでスコアが681から829に上がった。

表明しておくバイアス

私の読みのうち2回(「支援付きの読み」と、疑わしい16符号の再読)はブラインドではなかった。私はモデルの提案を知っていた。リスクを抑えるため、各電報の最後の4単位(署名と日付)はこの方法では変更できないこととし、検証用電報0406には一切手を触れず、すべての提案は画像上で確認することを条件とした(採用18、却下27)。

第2段階 ―― うまくいかなかったこと(とその理由)

30回のセッションを通じて、私たちは未知の換字式暗号に対する古典的な方法をとった。

これらの探索はすべて失敗し、対照がその理由を教えてくれた。ソルバーは正の対照の鍵を復元できた(たとえば267符号中258)。つまり能力はあった。だが記録上の最良スコア(約900)は本物の文章(1,200〜1,350)に遠く及ばず、一方でシャッフルしたデータ(約670)ははっきり上回っていた。任意のコードブックで暗号化した文章は810〜940となる。記録はまさにそのように見えた。

仮定の中に二つの誤りが潜んでいた。

  1. 誤ったアンカー。16日から30日について、韻目代日は当初想定したものとは別の声調の系列を用いる(刊行された孫文の原電で確認[11])。そのため複数のアンカーが誤っていた。
  2. 鍵空間が広すぎた。自由に配置できる100マスの表には、900前後の雑音の最適解を作り出すだけの自由度がある。逆の実験がこれを裏付ける。最終的に見つかった構造を緩めると(実験 E21)、当てはまりは良くなるが検証用電報は読めなくなる。過学習である。

並行して、文献の手がかりも最後まで追った。在漢口日本総領事館の報告(1916年5月9日・11日)[5][6]は、「111を加える」、続いて「4桁を逆順にして111を加える」という再暗号化を記している。報告に添付された4月の電報は確かにその方法で解ける(算術的な繰り上がり、末尾に韻目)。しかし東京発の系統では、±111 のあらゆる変種――逆順の有無を問わず、音節表の下で生じる残差のずれも含めて――が否定的だった(実験 E13、E15、E16)。結論:7月の電報には加算鍵はない。

第3段階 ―― 鍵を使わない検定:子音が十の位を表す

転機は、鍵をまったく探さない検定からやってきた。電信符号には独特の形がある。千の位の数字は偏っており(常用符号はほとんど 0000〜7999 にあり、8xxx や 9xxx はまれ)、一の位はほぼ一様である。符号の半分(2桁)が一つの音節になるのなら、問題は音節のどの部分が十の位を担うのかである。

そこで、電報内の位置ごとに文字を数えた(実験 S3)。符号の前半(千の位と百の位)を担う位置では、子音の分布が極端に偏っていた(z ≈ 22)。h と g が支配的で、l、p、m は一度も現れない。一方母音は一様だった(z ≈ 1)。シミュレーション(S4)によれば、ランダムな表がこのパターンを生むことはない(400回中0回)が、子音が十の位、母音が一の位を表す座標表なら再現できる。

この仮説(H9)は探索空間を劇的に狭める。100の音節を自由に置くのではなく、各子音を十の位に、各母音を数字に割り当てるだけになるからだ。また、日付アンカーのいくつかの組がありえないこともわかった。H9 の下では、想定した韻目の一部が、同じ子音を二つの十の位に対応させることを要求してしまう。

第4段階 ―― 制約付きソルバーと検証用電報

新しいソルバー(anchor_coord)は座標表だけを探索する。アンカーなしでは正の対照すら解けないが、正しいアンカーが10あれば鍵全体を復元できる。そこで H9 と両立するアンカーの組(324組中97組)を列挙し、最も妥当なものを試した。一組だけが抜きん出た:D = {6月23日 漾、7月18日 巧、7月19日 皓、9月13日 元}。

指標(アンカー組 D)記録シャッフル(零の対照)正の対照
スコア、コーパス v47053491,203
スコア、コーパス v5(q ≠ g)8293321,216
再現性(シード3つ)最適解は 0.001 以内で一致、96/96 単位が一致

判定役は、探索から外しておいた0406号電報である。言語モデルの下で、平均的な字に対する1字あたりの対数尤度の平均利得を測る。解読結果が中国語らしければ正、そうでなければ負になる。表 D はコーパス v4 で1字あたり +1.9、コーパス v5 で +3.47 を示した。他の候補表はすべて0以下、零の対照の表は −1〜−2.5 である。交差検証(S7:5通で鍵を求め、6通目で判定)でも、6通中6通で表が転用できた。文章は句ごとに読めるようになる:三十式槍、萬一千、軍用品已到門司、年息一割、無擔保、第二批械、軍務院、豫定計畫……

第5段階 ―― G0 表

当てはめた表を1マスずつ眺めると、規則性が目に飛び込んでくる。子音はアルファベットの逆順に、十の位ごとに二つずつ並び、母音は上がってから下がる。外れている少数のマスは、データによる制約が弱かったところだ。そこで当てはめた表を、それが近似している規則的な表に置き換える。これが G0 であり、もはや自由なパラメータは一つもない。

結果は、本研究で最も強い検証となった。まったく調整せずに、G0 は検証用電報0406を1字あたり +3.99 で解読する。元になった当てはめの表(+3.48)よりも良い。当てはめでぼやけた表が、その中に隠れていた単純な規則に及ばない。規則こそが本当の鍵なら、まさにそうなるはずである。G0 は7通すべての351符号を与え、電報の末尾も一貫したものになる。署名「伸」の後に日付(6月23日は「漾」、7月18日は「巧」、9月13日は「元」、9月30日は「卅」、7月12日は「文」)。

二つの末尾が変則的に見えた。7月19日は「皓」(4110)ではなく 4210 で終わる。これは一文字の誤りで、第二の系統によって説明がついた(第6段階)。6月30日付の電報は「卄」(20日)で終わる。読みは画像で再確認済みで、食い違いは符号化の誤りか、20日起草・30日発信のいずれかである。

なぜ信じられるのか:対照検証

あらかじめ定めた基準結果
同形式の正の対照が復元されるはい(1,203〜1,216、鍵を復元)
記録のスコアが零の対照を明確に上回るはい(829 対 約335、再読後は1,144)
異なる初期値から同じ最適解が得られるはい(シード3つで同一)
検証用電報が調整なしで読める(1字あたり ≥ +2.5)はい:G0 で +3.99
中国語として通り、用紙の日付と整合するおおむね。351字中12字が疑わしい(ほかに稀だが確認済みの6字)
独立した外部からの裏付けはい:発信者「伸」=趙伸。同じ兵器契約を扱う2026年の研究[7]によって、解読の後に同定、その後電報用紙(趙伸の氏名と住所)で確認
第二の系統:閉じた鍵の下で検証用電報が読めるはい:0496a は Y0 で +4.62、蔡鍔の八日福岡での死去を告げる
第二の系統:アンカー以外の日付末尾が用紙と一致はい:4通中4通

最後の点は強調に値する。趙伸の名、「第二次分の兵器」の引き渡し、広東による担保拒否、雲南と広東の間の兵器配分は、承紅磊の論文を読む前に、解読された電報の中に現れていた。これらの語は一つとして探索に注入されていない。

限界:G0 表は当てはめの表から読み取ったもの、Y0 表は五つのアンカーから導いたもので、天から降ってきたわけではない。最後の数回の読みはブラインドではない。訳は作業訳である。

第6段階 ―― 第二の系統と Y0 表

別の電報用紙の群は「文密」の名を持たないが、同じ発信者のもので、多くは平文の標識「Cg」で始まる。1916年7月から11月にかけて東京と雲南の間でやりとりされた15枚で、趙伸の署名があるか、彼に宛てられている。アルファベットが異なり、y が母音で、G0 では何も出てこない。位置の検定は同じ座標構造を示す(子音 z ≈ 22、母音 z ≈ 5)が、焼きなまし法による4回の探索(E26〜E29)は、人間の読みと日付アンカーを用いても否定的だった。ソルバーは正の対照を完全に復元するのに、検証用電報(0496a)は1字あたり +0.9 前後にとどまり、閾値 +2.5 に遠く及ばない。

突破口は、電報の冒頭と末尾を人間が読んだことから開けた。

この五つの値(bu = 01、ky = 35、ha = 29、ry = 60、fo = 14)は、ある線形の音節表にぴったり当てはまる。c・j・q を除くアルファベット順の17子音、蛇行する6母音、値 = 6 × 子音の順位 + 母音の順位。アンカーで決まらなかったのは e と i の順序だけで、解読の前に対称性から定めた(機械判読では、逆にした変種は1字あたり +2.76、Y0 は +4.23)。

CONS = "bdfghklmnprstvwxz"          # 17子音(c、j、q なし)
Y0 = {c + v: 6 * i + r for i, c in enumerate(CONS)
      for r, v in enumerate("yuoiea" if i % 2 == 0 else "aeiouy")}
# 102音節:ze = 100、za = 101 は使われない

Y0 の下、一切調整しない結果:

ルールについて二点。Y0 のアンカーは同日の平文電報、つまり推測ではなく文書から得たものである。一方、「ありそうな語」(「電」)を試したことがある。これはクリブ禁止ルールからの公表済みの逸脱であり、何の改善ももたらさず、却下された(E29)。また、この系統の本文は人間のブラインド再読をすべて終え、語数もすべて用紙の記載と一致する。それでも第一の系統ほど確かではなく、多くの稀な字がなお明示されている。

この系統は第一の系統の訂正にも役立った。7月19日の肇慶宛て電報はありえない符号で終わっていたが、同日に雲南へ送られた「双子」の電報はきちんと「伸皓」(十九日)で終わる。画像で確認すると、誤った文字は e ではなく i だった。モールス符号では e は ·、i は ·· である。

未解決の問題:1917年の電報

1917年6月の暗号電報 0509 と 0511(孫文 ↔ 戴季陶)は破れていない。「文密」の前置きも「Cg」の標識もなく、アルファベットもさらに異なる(c と j があり、y は子音にも母音にもなり、変則的な組もいくつかある)。G0 でも Y0 でも読めず、その後に試した表の系統(同型の表、任意順の17または18 × 6 表、錨つき座標、ありうる語)でも偶然以上のものは出ていない。ブラインド判読、ありうる取り違え、すべての方向は電報一覧に詳しい。

復元した表とその発見日

調査(2026年10月)で見つかった表の一覧。読める電報の時期順に並べる。コンデンサーの構成は「子音の順/母音の順/母音ごとの充填(V:値 = 20 × 母音の順位 + 子音の順位)または子音ごとの充填(C:値 = 5 × 子音の順位 + 母音の順位)/最初の数」の順に記す。D. Bourdeau が公表した表[1]は載せない。

表電報構成発見日参照
Hong Kong香港、1914年3月y k u l o c a p i t → 0 1 2 3 4 5 6 7 8 92026年10月15日定義
「Laisaosang」1914年6月〜1915年2月c…b / o a e u i / V / 012026年10月15日1915年
「New York」1914年7月〜1915年2月b…z / a e i o u / C / 002026年10月15日1915年
「Hsuweilin」サンフランシスコ →「Hsuweilin」、1914年7月b…z sans k / a e i o u / C / 012026年10月15日27/7/1914
候補 · 「Kai」長春と上海、1914年8〜9月g…f / e o a u i / V / 012026年10月15日1914年(未公表)
Rosamonde英語、東京 ↔ 上海、1915–1916年a↔u b↔g c↔s e↔o f↔j h↔y i↔r k↔z l↔t m↔w n↔v q↔x (相互置換)2026年10月15日ロザモンド
「Thirtieth」上海 ↔ 東京、1915年2〜5月v…t / u i e o a / V / 012026年10月15日1915年
「Thirteenth」東京 → 上海、1916年2〜3月n…m / o a e i u / V / 012026年10月15日1915年
Sixteenth上海 ↔ 東京、1916年4月t…s / e u o i a / V / 012026年10月15日定義
Seventeenth上海 ↔ 東京、1916年4月p…n / i u a e o / V / 012026年10月15日定義
「Thirtyeight」東京 → 上海、1916年5月k…j / e a i u o / V / 012026年10月13日1916年5月
黃興東京 ↔ 上海(「Ylchang」)、1916年5月末〜6月d c b t h j f q g k n m p s r l x w z v / u i o e a / C / 012026年10月15日黄興
G0(「文密」)東京 → 軍務院、1916年6〜9月h g f d c b z y x w v t s r q p n m l k / a→u, u→a2026年10月9日第5段階
Y0(「Cg」)東京 ↔ 雲南、1916年7〜11月17 × 6 (y) / serpentin2026年10月11日第6段階

確立した表と未裏付けの候補「Kai」を区別する。「Kai」は公開済み解読に数えない。期間には未刊ロットの用例も含む。

このほか D. Bourdeau の表二つを確認・補正した。暫定として公表された第二の「マニラ」表は1915年1月6日の電報を訂正なしで読む(2026年10月15日)。「ホノルル」表は w を v とすれば1916年4〜5月の「Aloha」電報を読む(2026年10月13日)。

1914年:Hsuweilinと候補「Kai」

同じ系列の1914年7月〜1915年1月の簿冊(JACAR B03050087500)には十通ほどのコンデンサー電報があり、しばしば標識となる平文の語(「Ting」「Kai」「Sixth」「Chung」)が先頭に付く。1915年と同じ検定(コンデンサー表の全系列、既知の鍵、六つの撹拌対照)の結果、2026年10月15日に次のことがわかった。

「Chung」の付いた電報はなお読めない。 未裏付けの候補。「Kai」の最大差は3.01 − 1.61 = 1.40で、公開基準1.5を下回る。2通とも公開コーパスに含めず、指示語の人物も同定しない。

現在は校正を適用し、Hsuweilin・Sixth・Tingを未刊電報のロットに掲載した。Kai二通は下記の得点差と可読性の理由で未掲載。

追加の表:各読みに用いた手順を明記する

1913〜1916年のロットには二種類の手順がある。圧縮符号は子音+母音を二桁に変換し、香港方式は一字母を一桁に置き換える。四桁を公開の中国電信符号表で漢字に戻す。最初から数字の電文は同じ符号表で直接読めるので、それだけでは秘密暗号の証拠にならない。

Sixteenth・Seventeenth:母音ごとの配列

基本子音列はb c d f g h j k l m n p q r s t v x y z。Sixteenthは左に15文字、Seventeenthは左に11文字循環させる。循環後の子音の順位をi、表の母音順の順位をj(ともに0始まり)とすれば、音節値は(20 × j + i + 1) modulo 100。二桁で書き、二音節を加算せず連結する。Sixteenthではxe·qu → 03·38 → 0338 → 兄となり、1916年4月19日電の冒頭が読める。

表子音順母音順式
Sixteentht v x y z b c d f g h j k l m n p q r se u o i a(20 × j + i + 1) modulo 100
Seventeenthp q r s t v x y z b c d f g h j k l m ni u a e o(20 × j + i + 1) modulo 100

Hsuweilin:子音ごとの配列

子音はb c d f g h j l m n p q r s t v w x y z(kなし)、母音はa e i o u。式は(5 × i + j + 1) modulo 100。gu·ca → 25·06 → 2506 → 昨は1914年7月27日電の冒頭。Sixteenthとは字母の一覧も異なるので、そのまま使う必要がある。

香港:一字母から一桁

y k u l o c a p i t → 0 1 2 3 4 5 6 7 8 9で置換し、送信用の語をつなげて四字ずつ区切る。1914年3月13日電のkcpk → 1571 → 已が例である。圧縮符号の音節とは異なる。長さの誤りは写しの問題であり、整列の提案を画像で読めた字母として扱わない。

対照と復元を分ける

掲載は1符号あたり1.5以上、シャッフル対照より厳密に1.5を超える得点差、既定の表、意味の通る本文、人の校正の反映を要する。得点だけでなく可読性も調べる。1914年9月23日のKai電は草稿段階、8月9日電は差が不足(3.013 − 1.613 = 1.400)で、いずれも未掲載。初期得点と整列提案は一覧で分け、疑問箇所と補字を残す。

1915年の追加9通は新しいソルバーによるものではない。Thirtiethは2〜5月、上海表は6月、サンフランシスコ表は10月にも確認できる(公表済み表[1])。記入済み転写R23の後、印を付けた字をR24で再校正し、否定や保留は確認済みにしなかった。全20通446符号、疑問53字・判読不能1字。3月6日・7日のRosamonde追加分も既述の方式。校正されたqqは暗号文に残し、英文の[pp]は1915年に見られるpをqで表す用法を示す。

本節は最初に分析した史料を説明する。1914年の用例は一覧、1915年追加9通のR23校正は上記を参照。

さらに三つの表:1915年

同じ系列の1915年の二冊(JACAR B03050087600、B03050087700)[17]は、これまで誰も開いていなかった。そこには1916年のものより一年古い圧縮符号の電報がある。各電報について圧縮符号表の系統全体(604 800表:20子音のアルファベット順または逆順、始点、5母音の順序、子音順・母音順・蛇行の埋め方、00または01始まり)を試し、最高点を六つの対照(同じ音節を並べ替えたもの)の得点と比べた。三つの表がはっきりと抜け出し、それぞれ複数の電報を読む:

さらに、1915年1月6日の東京発「Konglipo」(マニラ)宛ての電報は、Daniel Bourdeau が1916年5月の一通だけから暫定的に提案した表[1]で、訂正なしに読める:無其事。文覆(「そのような事実はない。文、返信」)。この表は十六か月前から使われていたことになる。

文字はスキャンから Claude が読み、疑わしい箇所を私がブラインドで読み直した(77問、うち対照の10音節はすべて確認。提案された22の訂正のうち15を、何が期待されているか知らずに読み当てた)。電報は電報一覧のページにある。

1916年3月には東京・上海間で四つ目の新しい表も使われている:「Thirteenth」。1916年2月28日の電報にこの語が平文で記されている。子音は n から、母音は o a e i u、母音順に埋め、01から始まる。1916年3月12日と16日の電報を読む(符号あたり4.83と4.52)。2月28日のその電報自体も読める(4.40)。暗号文の中に英単語が一つ平文で残されている:正金銀行 bearer 票、すなわち横浜正金銀行の持参人払票である。1916年2〜3月を参照。

ロザモンド:相互置換の下の英語

2026年10月15日検討の初期標本。1915年3月6日・7日の追加分を含まない。

同じ冊に、また1916年5月の B03050089000[16]に、圧縮符号らしくない電報がある。子音と母音が交互にならない十文字の単語で、子音の連続や母音の重複がある。鍵なしの検定は陰性(音節表ではない)だが、三つの統計が方向を示した。文字の一致指数は0.062で自然言語のもの(無作為な文字なら0.038)、f と q は一度も現れず、同じ三文字列が電報をまたいで繰り返される(hea は十回)。自然言語の文に対する単純置換の特徴である。

26文字のすべての置換を焼きなまし法で探索し、英語の四文字組モデルで評価すると、最初の試みで英語が現れた(your letter、received my life、cable)。得られた表はほぼ対合(各文字が別の文字と入れ替わる)であり、探索を相互置換に限ると鍵が定まる:a↔u b↔g c↔s e↔o f↔j h↔y i↔r k↔z l↔t m↔w n↔v q↔x、d と p はそのまま。hea = you、teno = love。 上表は基本の置換を示す。1915年の用紙では、pに対して予想される暗号字母の代わりにqを使う例もある。3月6日に再読されたqqは英文で[pp]と記す。この用法を記録し、相互置換表を暗黙に変更しない。

三つの検証。(1)同じ長さの英文を無作為な表で暗号化すると、同じ探索で100%復元できる。(2)標本外:1915年の電報だけから得た鍵は、私が発見前にブラインドで翻字した1916年5月の七通を読む(無作為な相互置換表2000個に対して z = 7.5)。(3)私が1915年の電報をブラインドで読み直したもの(50行、Claude の読みも平文も見ずに)も同様に読める(z = 10.9)。別方式の電報は読めないまま(z = 0.6)。内容——孫文と宋慶齢の恋の往復——はロザモンド電報のページで紹介する。

なぜ1916年5月は訂正した文字が多いのか

校訂文で角括弧に入れたのは、用紙が別の文字で書いている、または書き落としている文字である。その割合は1916年5月(611文字中109、17.8%)が1915年(1061文字中59、5.6%)の三倍で、二枚にわたる5月12日の電報だけでその半分を占める(234文字中56)。私はこれらの文字を一つずつ、期待される文字を見ながら画像で確かめた(2026年10月15日)。133文字のうち99は用紙に確かに別の文字で書かれており、18は期待される文字として読むことができ、16はなお不確かである。 この統計と以下の比較は、2026年10月15日に確認した初期標本を対象とし、1915年3月6日・7日の追加分を含まない。

方法の違いでは、ほとんど説明がつかない。1915年の校訂文は二つの独立した読みを組み合わせ、1916年のものは私一人の読みによる。しかし読み手を同じにして——1915年の私のブラインドの読みだけで——比べると、期待される暗号文とのずれは1915年が約7%、1916年が18%である。1916年の用紙のほうが不正確で、ずれは三組の文字に集中している:

期待される文字1915年(私のブラインドの読み)1916年5月(画像で確認)
v(平文 n)47回中 v 41回v 18回、n 23回
r(平文 i)51回中 r 51回r 7回、i 24回
h(平文 y)47回中 h 46回h 16回、y 7回

これらの誤りは送信によるものではない。モールス符号では n と v、i と r、h と y に共通点はない。誤りは誰かが筆記体を読むときに生じる——おそらく窓口の係員が発信者の手書きの電文を書き写すときである——そして、ほぼ常に同じ向きである。期待される v は n になるが逆はなく、h は y になるが逆はない。原因は二つ考えられるが、どちらとも決められない。一つは急いで書かれた電報であること。1916年5月、孫文は上海から蜂起を指揮しており(“now very busy”)、暗号化そのものもより雑で、語全体が平文のまま残され(know、own、iron、trunk)、半分だけの語さえある(anxi-ous)。もう一つは係員の違い。上海の電信係は自分のものではないラテン文字の筆跡を読んでいた。ただし、東京から出た宋慶齢の二通の電報にも同じ誤りがある。

鍵そのものが影響を大きくしている。この鍵はまさに形の似た文字どうし(a/u、c/s、e/o、h/y、i/r、l/t、n/v…)を入れ替えるので、筆のわずかなためらいでも、見た目にはもっともらしいが解読には誤った文字が生まれる。1916年の鍵は確かに1915年のものである。自動探索で最初に見つかった変種(v↔p、n・i・r はそのまま)はこれらの誤りによる見かけにすぎず、平文のすべての v と矛盾する。用紙はそれを n と書き、p と書くことは一度もない。

私たちの知る限り、この方式もこれらの文も未発表である。Daniel Bourdeau の覚え書き[2]、Cryptiana[8]、二人の結婚に関する研究[18][19]、J. Chang と J. Halliday の伝記[20]のいずれにも見当たらない(2026年10月15日確認)。

延長:1916年5〜6月、既知の鍵で新たな電報を読む

ここでは鍵は新しくない。1916年5月の東京→上海(「Junzaburo」)の電報は「山田」圧縮符号で暗号化されており、すでに特定・公開されている[1, 2]。新しいのは電報そのものである。公開された翻字は JACAR B03050089100(5月末)で終わっている。逓信省のその後の送付分(B03050089000、B03050089200、B03050089400)を開き、同じ系列の5月17日から6月15日までの、未翻字の電報10通を見つけた。

方法は調査全体の逆向きの適用である。鍵が分かっているので、すべては文字の判読にかかる。Claude が画像から各用紙を読み、意味の通らない字があれば、1文字ずつ(筆写やモールスの取り違え)変えて文が通る文字を探した。それを私が、何を探しているかを承知のうえで画像と一つずつ照合した(V1〜V6、約40か所。大半が確認され、少数は否定されて疑わしいまま残した)。鍵とは独立の検証:韻目の日付が用紙と一致し、署名持(謝持)が繰り返し現れ、言及される人物(席正銘、趙瑾卿、廖仲愷、居正、萱野)は実在し、同じ人脈に属する。結果は電報のページを参照。

1916年5月上旬:上海からの返電。5月上旬の束には、東京発の電報のほか、上海から東京への返電がある。同じ「山田」鍵を逆向きに使って読め、うち1通は文の署名である。上海へ転送されたマニラ発の電報もあり、既発表のマニラ→頭山鍵[1]で読める。疑わしい語は Brice Dudout が画像と照合した。

5月10日の「w」:あえて採る読み、そして手がかり。5月10日の用紙(0042a)では、暗号作成者が「山田」表で p のはずの箇所に二度 w を書いている(「xetuwotedi」「rusidewari」)。同じ用紙には p も使われている。「山田」のアルファベット(子音20、w なし)に w はなく、書き損じとも考えにくい。そこで我々はこれを意図的な選択として扱う:w は p のもう一つの書き方(同音異字)であり、電報のページではこの電報を w = p とした「山田」表で読み、文字は書かれたとおりに示す。w の20通りの値のうち p の値がはっきり最良で、「昨日到」と「乘原船」を与える唯一の値である。表の他の部分は変わらない(署名持と日付灰(10日)が合う)。同じ用紙の k 二つも p の代わりらしい(事、灰)が、提案にとどめる。その後、wの手掛かりは結果につながった。指示語のない東京発と「Ylchang」宛ての上海発から、子音順を入れ替えた黄興の表が得られた。同節に記すとおり、これで読めない電報も残る。一方G0は上記の逆順アルファベットに従う。

ホノルル:鍵の「Aloha」変種。4月30日のホノルル発の電報(平文の前置語「Aloha」、宛名「Rosamonde」すなわち孫文)は、圧縮符号のアルファベットにない w を v と並べて用いる。既発表の「ホノルル」鍵[1]で、w に v の値を与えると読める。同じ文字のもう一つの書き方であり、5月10日の p に対する w と同様である。これをこの鍵の「Aloha」変種として示す。電報は鐵城(呉鉄城、当時ホノルル在住)の署名で、「黃轉到日,換船赴滬。鐵城」(「黄〔興〕は日本へ回り、船を乗り換えて上海へ向かう」)と読める。3文字を送信誤りとして訂正し(r が s として受信されたのが2回、e が o として1回)、冒頭の黃は文脈から補った。黄興は5月9日に日本に着く(電報0042a)。

同時期の二つの系統は読めないように見えた。「Thirtyseventh」の前置きのない東京発の電報(互いに文字列の反復を共有する)と、上海から「Ylchang」(黄興)への電報である。実際には両者とも同じ一つの新しい表で読める。黄興の表を参照。

新しい表「Thirtyeight」(1916年5月)

5月上旬の東京発の電報2通は、「Thirtyseven」ではなく別の平文の前置語「Thirtyeight」を持つ。鍵によらない検定では同じ型の表(2文字 → 2数字)だが、「山田」鍵では読めない。圧縮符号表の族(子音の起点、母音の順序と向き、オフセット:57,600表)を探索すると、一つがはっきり首位に立つ(z = 6.7):子音はアルファベット順に k から、母音は e a i u o、値 = 20 × 母音の順位 + 子音の順位 + 1(100を法とする)。「山田」と同じ構成(子音は q から、母音は e u i o a)で、パラメータだけが異なる。この表は一つのマスも変えずに5月12日の電報を読む:「箱已交犬塚,十五日附法船來。若有要事,請電如下」(「箱は犬塚に渡した。15日にフランス船で送る。急用があれば次へ打電されたい」)。続いて平文の宛先がある。訂正は1文字のみ(d → x、他でも見られる写し誤り)。管見の限り、この表は未公表である。もう1通の「Thirtyeight」電報(5月11日)も読める:「聞張繼已回日,頗奇,是否?」(「張継が日本に戻ったと聞いた。たいへん意外だ。本当か」)。訂正は1文字(o → e)。

第二の新しい表:黄興の表(1916年5月末〜6月)

1916年5月26日から6月6日にかけて、東京から「Junzaburo」(上海)宛に、前置語「Thirtyseven」のない電報が送られた。既知の表ではどれも読めなかった[2]、[8]が、二つの観察が探索の手がかりとなった。6月6日の電報は6月3日の電報の後半を符号ごとに繰り返し、送信で失われた9符号を補っている。また3通の電報は日付にかかわらず同じ2符号で終わる。これは日付(謝持の「持」に韻目を続けるような)ではなく、結びの語と署名である。

黄興の別の電報(1916年5月25日、林虎・李根源宛)の三仮名コードとは別物である。その方式は D. Bourdeau が、対応の公式は S. Tomokiyo が明らかにした[22][23]。

鍵なしの検定では座標型の表(子音が十の位を担う)が示されていた。そこで焼きなまし法により、20の子音それぞれが連続する5つの値のブロックを任意の順で占め、母音は共通または交互の順に並ぶ表を探した。探索はまず較正した。すでに読めた電報をこの族の無作為な表で暗号化し直したものは、完全に復元された(12通中12通)。東京発の電報6通(140符号)では、独立した6回の試行がすべて同じ表に達し、対照(同じ音節を混ぜたもの)を大きく上回った:1符号あたり4.26対0.73。

表は非常に規則的である。子音の順は d c b t h j f q g k n m p s r l x w z v、それぞれ連続する5つの値を占め、01〜99、ついで00と番号づけられる(du = 01、di = 02 … va = 00)。母音の順は u i o e a。東京発の電報はすべて覆。興(「返電を。興」)で終わる。5月9日から東京にいた黄興である。一つの欄も変えずに、同じ表は上海から「Ylchang」(黄興)宛の、文または孫文(孫文)署名の電報も読む。6月6日の電報は日付魚(6日)で終わり、用紙の日付と一致する。

内容:6月3日、黄興は田中(田中、おそらく参謀次長田中義一)に会い、「槍二千、砲六門不日可運」(小銃2000挺と砲6門を近日中に送れる)。5月31日、資金20万と武器若干、胡漢民(漢民)に青木(青木)へ当局に再び打電するよう頼ませた。〔日本側は〕孫文が急いで山東へ赴くことを望まず、黄興は張継(溥泉)と声望ある軍人による調停を提案する。9通が読めた。疑わしい文字はBrice Dudoutが用紙上で確認し(意味を知らない読み)、電報は電報ページに掲載した。上海から「Ylchang」宛の2通(5月29日、6月8日)は別の発信者のもので(冒頭と末尾の符号が共通)、この表では読めない。

管見の限り、この表は未公表であった。これらの電報はDaniel Bourdeauのノート[2]とCryptiana[8]で未解読とされている(2026年10月15日確認)。

道具

ソルバー、二つの鍵、判読データ、言語モデルは GitHub リポジトリの solver/ フォルダで公開しており、探索を再現できる。調査の完全なログは追って公開する。