先日の速報には10万を超える爆発的なアクセスがあったが、いろいろ間違いがあり、多くのコメントやTBなどで訂正していただいた。まず私がB-CASの規格(ARIB STD-B25)を誤解していたため混乱をまねいたことをおわびし、あらためて(私の理解している範囲で)正確に問題をまとめておく。非常にテクニカルな話なので、関係者以外は無視してください。

私は、まずカードを挿入しないと見えないという程度の簡単な(スクランブルなしの)B-CASが導入され、地デジに移行するときコピーワンスを実装するためにMULTI2が導入されたと理解していたのだが、システム上は最初からMULTI2は入っており、最初は使わなかっただけらしい。そのしくみを簡単に解説すると、いっせいに数千万人に信号を送るため、暗号鍵を共通のECM(Entitlement Control Message)とカード固有のEMM(Entitlement Management Message)にわけているのが特徴だ。次の図はARIBの仕様書(p.319)のものだが、TS(放送波)に含まれている暗号をEMM処理(B-CASカード)とECM処理(受信機本体)にわけて処理する。
図をみればわかるように、大部分の処理はECMで行なわれるが、これだと限定受信にできないので、EMM処理によって取り出したKw(ワークキー)を使ってACI(Account Control Information)処理を行なうとともに、ECMの復号化を行なって最終的なKs(スクランブルキー)を取り出す。鍵は放送波とともに不特定多数に送られるので、コピーして不正利用されるのを防ぐため、最短1秒ごとに変更される。

多くの人の意見では、これは放送用のCASとしてはそれほど特殊なシステムではないようだ。EMMをカード(ポータブルなファームウェア)で処理したことも、システムの汎用性を高めるためにはやむをえなかったという。しかし最終的にはKsがACI(ID情報)とは別の共通鍵として出てくるため、Ksが不正流通しても出所がわからず、問題のIDを止められないというバグがある。今回のFriioのネット配信は、この「穴」を見事に突いたわけだ。

致命的な失敗は、暗号システム(MULTI2)が完成してからコピーワンスをつけることが決まったため、コピー制御(CGMS)のフラグ自体は生の数ビットの信号だったことである。このためKsを(LANやインターネットなどによって)送るだけで暗号が解けてTSが再生され、そこに含まれたフラグも簡単に無視できる(それを検知しなければよい)。Friio以外にも同様の機器はたくさんあり、秋葉原で堂々と売られている。

ふつう暗号をクラックする作業は非常に高度な数学を使う知的ゲームで、最近ではB-CASのような128ビットの暗号も危ないといわれる。しかしFriioのやり方は、暗号そのものを破ったのではなく、ARIBの行き当たりばったりの意思決定によるバグを利用しただけだ。小寺氏の意見とは違って、これは技術が破られたのではなく、B-CASという出来の悪いカルテルが破られたのだ。したがって本質はその違法性にある。これについては、今週のASCII.jpに書く予定。

謝辞:コメントをいただいたseldon、猪口、hibirthおよび匿名の諸氏に感謝します。この記事も誤りを含んでいると思われるので、訂正はコメント欄で(gooIDなし)。

追記:Friio社から、この記事の記述は正しいというメールが来た。B-CASは長く続いてくれたほうがいいそうだ。英文ブログにも書いた。