レッド暗号

レッド暗号（レッドあんごう、Red）とは、機械式暗号の一種で、日本の外務省が使用していた正式名称「暗号機A型」（通称：九一式欧文印字機）による暗号に対してアメリカ合衆国陸軍がつけたコードネームである（米海軍では、M-3 と呼ばれていた）。
概要.
レッド暗号は「クリハ暗号 ()」を参考にされたが、当時の外交用機械暗号として最も貧弱な分類に入る。
暗号機の構成.
米陸軍が製作したレッド模造機は以下の部品から構成される。なお手動式の模造機も製作された。
電動タイプライター.
入出力用に英文用が2台。
プラグボード (Plugboard).
プラグボードは、入力直後と出力直前の2箇所にあって、アルファベットA - Zを単文字換字する。プラグボードの配線には法則があった。プラグボードを通過しても6つの母音 (A,E,I,O,U,Y) は必ず母音に変換され、母音用ハーフローターに送られた。つまり原文で母音だった箇所は必ず暗号文でも母音になっていた。同様に子音も子音だけに換字される。
1938年12月1日には、入力タイプライターとプラグボードの間に、アルファベット26文字を9文字、9文字、8文字に分割して変換する3組のローターが組み込まれ、機密性の高い電文の暗号化に用いられていた。暗号文のページごとに手動で規則的に回しており、エニグマのUhrローターと同じ設計と推定される。とはいえ、その頃にはアメリカ側も復号に習熟していたため、暗号強度の向上には寄与しなかったものとみられる。
外務省も運用後期の1936年頃には、母音 - 母音にこだわらないランダムな換字を採用したが、理論解読がなされ模造機が完成した後では手遅れだった。
ハーフローター (Half rotor).
エニグマのローター（鼓胴）と同様、スライド式の多表を生み出す。ハーフローターの配線には母音用 (AEIOUY) と子音用の2系統があり、それぞれの周期は6文字と20文字であるから、多表全体の周期は60文字となる。配線自体はレッドの運用期間を通して不変であり、文字の対応関係はプラグボードにより変更されていた。
ピンホイール (Pinwheel).
ハーフローターの移動量、すなわち多表スライド量を制御するホイールである。ピンホイールには47の歯 (pin) があり、その内5・6・11・12・17・20・30・31・34・39・40番目の11個だけがホイールから着脱可能。通常1文字を換字するたびにホイールはその歯1個分だけ回転し、2つのハーフローターも連動して1段階進む（次の多表にシフトする）が、もし歯が1本抜き去られていたら2段階、隣り合う2本の歯がなければ3段階進む。
外務省は抜き去る歯の本数を4・5・6の3通りと決めていたので、実際に使用される歯は41、42または43本。また取り外し可能な歯の配列からスライド量は1・2・3の3通りしかあり得ず、しかもスライド量が3となるのは4, (5), (6), 7と10, (11), (12), 13と29, (30), (31), 32と38, (39), (40), 41番目の4か所しか作り出せない。
鍵規約.
暗号鍵の規約は以下の通り。
プラグボード.
日本側の安易な鍵規約を米、独の解読機関がそれぞれ発見していた。
開始位置符号 (indicator).
各暗号文の前には5桁の数字が付けられた。240通りある符号が指定されるとハーフローターとピンホイールの各スタート位置、そしてピンホイールから取り去るピンの位置が決まった。符号は運用期間中に変更されることがなかったので、米陸軍は鍵パターンを全て回収した。
安全性.
レッド暗号文の単文字頻度を調べると母音の頻度が原語にほぼ近くなる。それを説明できる暗号方式として、次の3つが考えられる。
ここで、機械式暗号はもっぱら換字式である。さらに、転置式ならば母音と子音がランダムに連接するはずだが、暗号文はそうなっていないので 2. が候補に残る。なお、英国解読チームは、1933年12月21日付けの2,000字超の電文を使用し、日本語ローマ字によく表れる母音の3連続、YOOとYUUに注目して解読に辿りついた。
このように母音を母音だけに換字した理由は、電信オペレーターが読み上げやすい電報文にして電報料金のコストダウンを狙ったためと推定される。このような電文はartificial wordsと呼ばれ、母音がある程度登場する必要がある（例：5文字ごとに母音が最低1字以上）。この規約は後に撤廃され、1936年12月までには母音と子音を混ぜて換字するように規約が拡張されたが、理論解読が済み、模造機が完成した後では毎日の解読作業を遅らせる効果しかなかった。このartificial words対応仕様が次世代のパープル暗号に引き継がれたため外務省暗号機の根本的欠点も解消しなかった。