Man On a Mission

システム運用屋が、日々のあれこれや情報処理技術者試験の攻略を記録していくITブログ…というのも昔の話。今や歴史メインでたまに軍事。別に詳しくないので過大な期待は禁物。

【日本の暗号】あんごうあれこれ【解読・通信解析・乱数】

映画、イミテーションゲームに触発されて、しばらく前から暗号についての記事をいくつか書いています。
(なお、イミテーションゲームは、第二次大戦時ドイツ軍が使用していた暗号機エニグマの解読を題材とした映画です。2017/07/07現在、Amazonビデオのプライム対象Amazonプライム会員見放題)のようです。)

今回は、以前に書いた記事で書き洩らしたことあれこれを、思いつくまま挙げていきたいと思います。

 なお、今まで書いてきた暗号関連記事は以下。

oplern.hatenablog.com

oplern.hatenablog.com

oplern.hatenablog.com

oplern.hatenablog.com

大日本帝国の逆襲

日本の暗号に関する記事では、アメリカに暗号解読された話ばかり出てきました。
では逆に、日本によるアメリカ暗号の解読は行われなかったのでしょうか?

当然ながら、日本側もアメリカ(というか連合国)の暗号解読を試みていました。

以下、日本海軍の例。
海軍では1929年に6名ほどの解読チームが発足した後、軍令部第四課別室、第四部第十一課を経て1940年末に軍令部特務班に昇格します。
満州事変から日中戦争にかけて、中国の航空暗号や米英外交暗号の一部を解読するなどの成果を挙げています。
ただし、後述するストリップ方式の暗号については解読できなかったようで、この辺については陸軍から連携があったようです。
ひたすらいがみ合ってるばかりではなかったのですね。(当たり前だろ、と言いたいところですが、普段のやり取りを見てると…。)

また以前は、太平洋戦争の戦前・戦中期において日本はアメリカの暗号をほとんど解読できなかった、と言われていたのですが、近年、アメリ国務省の最高強度暗号を解読していたことが明らかになっています。
アメリ国務省が使用していた暗号は、グレー、ブラウン、A1、B1…と複数あるのですが、最高強度とされていたのはM138という暗号で、ストリップ方式のものでした。こちらの解読は、陸軍の担当と推察されています。
ストリップ方式というのは、アルファベットを不規則な並びで印字したセルロイドの棒(ストリップバー)を複数用意し、使用規定に従って配列、ストリップバーをスライドさせることで暗号化を行うものです。
ストリップバーは50本が配布されていますが、暗号化の際は、そのうちの30本を選んで使用します。どのストリップバーを使うか、どのように配列するかは毎日変更*1され、解読を困難なものにしていました。
陸軍は、これに対し原文仮定法という手法で解読したといいます。

解けない時は通信解析?

暗号解読においては、暗号書等の情報を盗み出したり(盗読)することもありますが、大抵、通信を傍受して暗号文のサンプルを集めることが必要になります。
(乱数表などの「鍵」更新もあるため、盗読だけでは恒常的に解読できないことがほとんどです。盗読を手掛かりに拡張解読する、といった手法もとられていました。)

たまに勘違いしている人がいるのですが、「通信を傍受」という記録があっても、それは「暗号を解読していた」ということではありません。暗号文のサンプル収集かもしれないのです。
また、通信傍受は、暗号文サンプル収集以外に「通信解析」に利用されたりもします。

通信解析というのは、通信量、通信時間、呼出符号(発信者、着信者、通報先)、送信機の型式や特徴、さらには電信員のクセなどを解析して、敵の兵力編成、所在、行動などを推定する手法です。大規模作戦に先立って出現する通信上のパターンをつかむと、作戦発動時期や目標などを割と正確に予測できました。
日本海軍の軍令部特務班は、太平洋戦争時、米海軍の暗号解読を試みていましたが難航、そのため中途より通信解析に注力したといわれています。通信解析によりマリアナ、フィリピン、沖縄と米軍の作戦をほぼ正確に予報したとか。ただし、暗号解読と異なり、通信解析は「予測」に過ぎませんので、万人に対する説得力を有せないのが悩みの種だったそうです。

ついでの蛇足。故意か勘違いかわかりませんが、この通信解析と暗号解読を取り違える人も結構いるので要注意です。

乱数

陸軍暗号の記事でも軽く触れましたが、乱数について少々。

暗号と乱数は切っても切れない仲というか、暗号技術において乱数は極めて重要な役割を担っています。
日本海軍や日本陸軍で使用していたコード式暗号では、乱数を使って秘匿を行いましたし、また、現代のコンピュータ暗号技術においても鍵生成や初期化ベクトル生成などに乱数が用いられます。

しかし、この「乱数」については誤解している人が多いようです。ある程度「乱数」を理解していないと、あらぬ勘違いをしてしまうことがありますので、ごく簡単ながら乱数について書いてみます。

数学辞典によると「乱数」とは、「互いに独立で同分布の確率変数列の実現値とみなしうるもの」だそうです。
うん、正直、何を言ってるのかよくわかりません。
とはいえ、よくわからないで終わると、じゃあなんでこんな記事を書いたんだと怒られそうなので「暗号技術入門」から少し引用してみます。
「暗号技術入門」によれば、乱数には以下の性質があるそうです。

  • 無作為性
  • 予測不可能性
  • 再現不可能性

無作為性とは、「統計的な偏りがなく、でたらめな数列になっているという性質」
予測不可能性とは、「過去の数列から次の数を予測できないという性質」
再現不可能性とは、「同じ数列を再現できないという性質。再現するためには、数列そのものを保存しておくしかない。」

正確な表現でないことを承知であえて書くならば

どの数が出てくるのかには偏りがなく(同分布)、各々の数字には相互の関連性が無いため次に来る数を予測できず(独立)、さらに「乱数を作るシステム(確率変数列、やや無理目?)」は乱数列(実現値)を作るにあたり、過去に生成した乱数列と同じものを作ることは無い、

ってとこでしょうか。

陸軍暗号の記事で触れた、シャノンの「無限乱数(ワンタイムパッド)による暗号は解読できない」は数学の主張なので、「乱数」も数学上の定義を持つことを前提にしなければなりません。
同陸軍暗号記事で述べた通り、乱数を使いまわして重複使用する有限乱数では上記の性質を保持できなくなるため、「理論的に解読できない」とは言えなくなるわけです。

ちなみに、昔ソ連軍において5桁数字の乱数の補給が続かなくなった際に、スターリン全書の文字を数字に直して「乱数」として使用したそうです。しかし、同じところを重複利用することはなかったにも関わらず、関東軍に解読されてしまいました。
これは、スターリン全書から変換した数字列が、乱数としての性質を備えていなかったからです。
(元々が文章なので、分布に偏りがあり、過去の数字から次にくる数字を予測することも可能です。)
使い捨てであれば良いってわけじゃない、ということですね。暗号運用者の乱数の理解不足が原因で、暗号強度が低下することは割と多かったりします。

なお、日本陸軍での乱数生成は、数字を記載したカードを袋に入れてそこからカードを無作為に取り出して数字列を作成する、というやり方でした。
かなり時間のかかりそうなやり方です。そこで、陸軍は機械式の乱数生成器を試作したこともあったとか。
1944年9月だか10月頃だかに、参謀本部の服部卓四郎*2作戦課長が硫黄島に作戦指導で訪れた際に携行したそうですが、機械の不調で使えなかったとのこと。

最後に

色々書いてきましたが、暗号が解読できても、それが有効に利用されるかはまた別の話だったりします。
生の情報(インフォメーション)は、分析・評価され「インテリジェンス」に昇華することで、真に価値のある情報となりますが、この辺に問題があるケースも多々見られました。
個人的に印象に残っているのは、ローズヴェルトさんが「インテリジェンス」になる前の生情報(インフォメーション)に直接触れてたことでしょうか。その結果、日米の戦争回避に悪影響を与えたことが指摘されています。
なお、ローズヴェルトさんには、秘書のゴミ箱にマジック(日本の外交暗号の解読文)が捨てられていたというエピソードもあります。機密…。
(発覚後、半年ばかりローズヴェルトに解読電を手渡さないようになったとか。)

 

 

*1:以前の記事で、暗号を「暗号アルゴリズム」と「鍵」に分ける考え方を紹介しましたが、M138では、「どのストリップバーを使うか、どのように配列するか」が「鍵」となっています。

*2:田中新一、辻政信と並ぶ参謀本部のアレな人。最終階級は大佐。警察予備隊(後の陸上自衛隊)の創設に関わりあり。