(前回から続く)

 「時田さん,それが竹田部長が…」

 「また絞られたんだな。どうせ,もっと小さくしろとでも言われたんだろ。例のアイデアのこと言ってみたのか?」

 「いえ,まだです。できるかどうか自信なくて…」

 「なんだよ,なんだよ。やってみなくちゃ分かんねえだろ。可能性があるんだから,やってみろよ」

 相も変わらず止まらない時田の話は,市川と反町の2人に欠かせないスパイスだった。硬直した議論は,時田の言葉に刺激を受け,かき回され,新たな方向に導かれた。竹田の叱咤しったにしょげ返っていた市川と反町に,やる気がむくむくとわいてきた。

 MISTYの処理を忠実にハードウエアに実装すると,回路規模は40kゲート~50kゲートに達する。ただし,MISTYには最初から回路規模を小さくする工夫が盛り込まれている。1つの回路を何度も使い回すことができるのだ。

 MISTYは,同一の操作を,データやパラメータを入れ替えて8回繰り返すことでデータを暗号化する注1)。それぞれの操作は,唯一の秘密鍵を基に一時的に使う拡大鍵を生成する「鍵スケジュール部」と,それを用いてデータを変換・撹拌かくはんする「データ・ランダム化部」から成る。つまり,拡大鍵を生成する回路と,データを撹拌する回路をそれぞれ1つだけ用意し,データを順次変更して8回処理する構成を採れば,回路規模を約1/8にできるわけである。この工夫で,回路規模を10数kゲートまで小さくできることは実証済みだった。

注1)このような方式を,暗号研究の世界では,8段のラウンド関数を持つブロック暗号と呼ぶ。MISTYには,MISTY1とMISTY2の2種類がある。このうちMISTY1のデータ・ランダム化部は,DESと同様なFeistel型と呼ぶ構造を採用した。MISTY2はFeistel型を使わず,処理の並列度を高められる方式を採った。三菱電機はMISTY1を8段,MISTY2を12段で利用することを推奨している

 市川と反町に求められたのは,さらなる小型化である。次に手を着けるとしたら,1段分の処理を実行する回路しかない。市川と反町は,鍵の拡大やデータの撹拌の操作にも,1つの回路を使い回すことで実行できる部分があることに目を付けた。回路規模が10数kゲートになる設計では,処理速度を高めるために,同一の回路を複数個用意し,並列に処理する構成を採っている。この処理を,1つの回路で逐次的に実行する構成に変えれば,処理時間は長くなるが,回路規模は格段に減る。この発想により,回路規模を何割も削減するメドが立った。

 これは竹田を大いに勇気づけた。勢いづいて竹田が吠える。「市川,反町,ちょっと来い!できないとはもう言わせないぞ。まだ何か隠してるだろ。もっともっと小型化しろ!」

結局は不採用

 奮闘のかいあって,MISTYの処理回路は,最後には6kゲートまで小さくなった。もともと小粒だった回路をさらに半減した。暗号処理回路としては,破格のサイズである。それでも,1kゲートには遠く及ばなかった。

 CPTWGでは,悪意のないユーザーの複製,いわゆる「カジュアル・コピー」を防げばよいという考え方が主流になった。カジュアル・コピーを防ぐ程度であれば「解読不可能」な安全性を備える暗号技術は必ずしも要らない。MISTYの回路規模がいくら小さくなったといっても,機器メーカーの要求とは懸け離れていた。最後のとりでのコンテンツ業界も,スクランブラで十分と納得した。