Man On a Mission

システム運用屋が、日々のあれこれを記録していくブログです。情報処理技術者試験の話題多し。高度試験の攻略なども。最近はやや歴史づいてます…。

【日本の暗号】かいぐんのあんごう【海軍D暗号】

以前、第二次世界大戦当時の日本の暗号について、外務省暗号を中心に記事を書きました。

oplern.hatenablog.com

今回はその延長というか、当時の大日本帝国海軍の暗号について触れてみます。

 海軍の暗号

前回も触れましたが、旧日本軍は全体で単一の暗号を使っていたわけではなく、海軍と陸軍で異なる暗号を利用しています。
さらに、同じ組織内でも使用目的等に応じて異なる暗号を使用していました。
例えば、海上部隊にて用いられる戦術用の乙暗号、航空通信用のF暗号など。ちなみに、前回取り上げた九七式欧文印字機による暗号も、欧米武官用として用いられています*1

今回は、これら海軍暗号の中でも、戦略暗号であるD暗号(米側呼称JN-25)について取り上げます。

D暗号 戦前から終戦まで

さて、太平洋戦争開戦時の日本海軍は、用途別に20種以上の暗号を用いていましたが、戦略レベルの重要通信は、そのほとんどがD暗号を使用していました。

D暗号は1939年6月1日に導入され、以来、乱数表や暗号書の更新を行いながらも、終戦まで同一系列の暗号方式を使用しています。
(ただし、暗号方式は同一系統ながら、暗号書更新に伴ってD暗号 → DI、呂、DII、波…と暗号呼称は変更されています。)

日本海軍の暗号チーム(軍令部第四部)は、D暗号方式に絶対の自信を持っており、艦艇沈没などによる暗号書等の鹵獲*2(いわゆる暗号事故)でも無い限り、D暗号が破られるなどあり得ない、というスタンスでした。
そのため、ミッドウェー海戦山本五十六搭乗機の遭難など、暗号が解読されていると疑わしき事態が起こっても、暗号書や乱数表の更新で十分とし新たな暗号方式の導入などは行われなかった、という経緯があります。
(呂暗号への更新あたりから、乱数表の更新頻度を高める、という施策が行われました。この辺も「暗号が破られたのは暗号事故のせい」という発想が透けて見える…というと言い過ぎですかね。)

D暗号の仕組み

さて、簡単にD暗号の仕組みについて紹介しておきましょう。

D暗号は、以前の記事で取り上げたエニグマ九七式欧文印字機と違い、コード式を採用しています。

エニグマおよび九七式欧文印字機は換字式という方式であり、これは、簡単にいうと文字(アルファベットや50音など)の1文字1文字を別の文字に置き換えることにより、暗号化を行う方式です。
(詳細についてはエニグマの記事に書いてますのでそちらを参照ください。)

前述の通り、D暗号では換字式は採用されませんでした。理由として、日本語を利用する場合アルファベットに比して文字数が多く複雑になる、日本語の言語特性から解読が容易化する、漢字が使えないことから同音多義語を誤解するおそれがある、といった点が挙げられます。

これに対して、D暗号で採用されたコード式は語句暗号とも呼ばれ、一つの語句・文章に対して、あらかじめ対応する文字や数字を対応付ける方式です。
(対応付ける文字や数字を暗号符字あるいは暗号数字と言います。)

例えば「連合艦隊」という語句には「49728」、「出撃す」という語句には「73551」という暗号数字を割り当て、これらの対応一覧は「暗号書(コードブック)」に記載しておきます。
発信者・受信者はこれを参照して暗号化・復号化を行います。

無論、上記仕組みだけでは、実際の行動観測や傍受した通信内容などの情報を蓄積・推測していけば、簡単に暗号解読できてしまいます。
そこで、乱数表を組み合わせることで暗号解読を困難にすることが良く行われます。
暗号書により作成した暗号文(一次暗号文)に対し、乱数表から取り出した数字を加算するなどの加工を行い、さらに暗号化します(二次暗号文)。
(乱数表は、やはり発信者・受信者で共通のものを所有しますが、乱数表から取り出す数字は、通信毎に異なるように位置を変更しています。)

D暗号も、コード式に乱数表を組み合わせた方式でした。
暗号書は00000から99999の5桁の数字に語句を割り当てていますが、10万の数字全てに割り当てているわけではなく、3で割り切れる数のみを利用しています(3万3333個)。
乱数表は5数字の乱数5万を収録*3し、暗号書の5数字と乱数表から取り出した5数字を非算術加算(1桁ごとに加算、繰上げは行なわない)することで暗号化します。

例えば、先に例として出した「連合艦隊」を意味する「49728」(一次暗号)に対し、乱数表から「85226」という乱数を取り出して二次暗号にする場合を以下に示します。

暗号書:49728
乱数表:85226

暗号文:24944

暗号文を元に戻す(復号)する場合は、まず暗号文「24994」から、指定の乱数「85226」を非算術減算することで一次暗号「49728」を復元します。後は、暗号書から49728に対応する語句を確認すれば「連合艦隊」に戻せるわけです。

また、乱数表を組み合わせる方式では、乱数表から取り出す乱数の開始位置(乱数開始符)についても発信者・受信者双方で共有する必要があります。
D暗号ではこの乱数開始符の秘匿規定について、暗号文冒頭の発令日時に秘匿する方式となっていました。
具体的には、受信側は、発令日時の下2桁と下3桁を合成した5桁の数字を、冒頭第3語の5桁の数字から非算術減算することで、乱数開始位置が確認できます。
例えば、発令日時が120738だった場合、その下2桁と下3桁を横に並べて合成し「38738」を導出します。この数字を、冒頭第3語の数字から非算術減算し、暗号開始符を割り出します。
割り出した暗号開始符は、最初の3桁が乱数表のページ数、4桁目が行数、5桁目が列数となっています。

以下、具体例。

発令日時120738の場合
冒頭第3語:71936
合成数字 :38738

開始符  :43208

上記では、乱数表432ページの行0、列8からの乱数を使用します。

なお、D暗号は暗号書・乱数表以外に「使用規定」や「特定地点略語表」、「暦日換字表」などから構成されています。
「特定地点略語表」は、まんま特定の地点に対応する略語一覧を記載したものですが、ミッドウェー海戦における暗号解読のエピソード(後述)で有名な「AF*4」はこれに掲載されていたものです。

海軍暗号(JN-25)の解読

さて、このD暗号に対して、米海軍は1940年9月より暗号解読に乗り出します。
米海軍では、D暗号を「JN-25」と呼称しました。JNは「Japanese Navy」の略で、暗号書の更新などに応じて末尾に「a」、「b」などのマイナーチェンジ記号が付与されています。

米海軍は、ワシントンの海軍省ビル第6棟に所在するOP-20-G本部(通称「N(ネガト)」)およびフィリピンのキャビテ軍港に所在する「C(キャスト)」局にてJN-25の解読を進めます。
結果、翌1941年の4月頃に解読の見通しがついたものの、日本海軍は1940年12月1日、暗号を更新(JN-25b)してしまい、解読作業が振り出しに戻ることとなりました。
米海軍は、その後、ジョセフ・ロシュフォート中佐率いるハワイのステーション「H(ハイポ)」局を加えて、JN-25bの解読に取りかかります。
ちなみに、ステーションHでは、トーマス・ダイアー少佐により、IBMの機械式コンピュータである「タビュレーター(統計機)」を用いて乱数攻略の省力化を行いました。これによりダイアーは「コンピュータ暗号解読の父」と呼ばれています。

しかしながら、JN-25bの解読は容易ではなく、結局、開戦までには解読できませんでした。
1941年12月1日時点*5での解明率は暗号書が11.4パーセント、乱数表が5パーセントです。

暗号を破った、というと100パーセント解読できると思われがちですが、実際には「かなりの確率で主要な内容が読み取れるようになった」ということを意味します。
使用される語句の頻度には偏りがありますので、暗号書に収められた語句の10パーセント以上が判明しているのであれば、それなりに内容が把握できたりします。しかし、これは一次暗号まで復元できればの話です。二次暗号から一次暗号への復号に必要となる乱数表の解明率が5パーセントでは、解読は困難と言わざるをえません。

また、D暗号の「暦日換字表」や「特定地点略語表」の解明もなかなか進みませんでした。暗号解読では、前後の文章などからの類推が重要ですが、日付や地名について類推可能なケースは少ないからです。

それでも、1942年5月に至るころには、乱数表はほとんど再現されました。
JN-25bの解読について、1942年1月20日に撃沈された伊一二四潜水艦から、暗号書が引き揚げられ解析されたことによる影響も指摘されていますが、その後、日本海軍による暗号書や乱数表の更新が行なわれても、極めて短期間に解読されている点を考慮すると、「正攻法」で攻略されてしまったと考えざるを得ないかと思います。

JN-25b解読後

JN-25bが破られてまもない時期、1942年6月5日から7日にかけてミッドウェー海戦が起こり、日本海軍はこれに惨敗します。
敗因はいくつかありますが、主な原因として、暗号(JN-25b)が解読され米海軍の待ち伏せを受けたことが挙げられるでしょう。

ちなみに、ミッドウェー海戦の折のよく知られたエピソードとして、特定地点AFの解明にまつわるものがあります。
解読した暗号文中の地点略語「AF」が、ミッドウェーを指していると推測しながらも断定できなかったロシュフォート中佐が、一計を案じて「ミッドウェーで真水蒸留装置故障」という偽通信を行ったところ、日本側が「ミッドウェーで真水が不足」という暗号通信をしたことからミッドウェーであると確定できた、というものです。
…ちょっと出来すぎ感がありますね。

閑話休題
ミッドウェー海戦後、日本は暗号が破られていることを疑い暗号書を更新しますが、D暗号系列の方式であることは変わらなかったため、短期間で解読されてしまいます。
これにより、山本五十六連合艦隊司令長官搭乗機が撃墜される事件もありましたが、日本海軍の暗号専門家らは、海軍暗号は難攻不落である、として暗号方式の見直しは行なわれず、暗号書や乱数表の更新にとどまりました。
結局、その後も同方式の暗号が使われ続け、終戦まで米側に暗号解読を許すこととなります。

最後に

太平洋戦争においては、よく日本とアメリカの物量差が勝敗の理由に結びつけられますが、実のところ情報戦においても敗北していました。
暗号解読に限らず、ミッドウェー作戦においては機密保持の面でも多々問題があったことが指摘されています。

まあ、日本の場合、問題点は大量にあるわけで、情報戦の敗北はその一角に過ぎません。
戦略方針が一本化できなかったり、作戦目的が明確にならなかったり、決戦ばかり考えてシーレーンを軽視したり。こんなことを言うのもなんですが、つくづく「戦争に向いてない国」だなあ、と思ったりします*6。※個人の感想です。

 

 

*1:独伊を除き、開戦前に処分されました。

*2:ろかく、と読みます。

*3:1ページ収容乱数100、総ページ数は約500ページ

*4:ミッドウェーを指す略語

*5:ちなみに真珠湾攻撃は1941年12月8日

*6:ついでにいうと結果からのフィードバックが極めて苦手な国だと感じてます。反省しなかったり、あらぬ方に反省して事態を悪化させたり。まあ、開戦後の話なんかよりも、「そもそも、なんでこんな戦争したの?」とか言われるのが一番つらい感じではありますが。