taichistereoのtumblog

taichistereoこと入江太一(コエカタマリン)のtumblrブログ。


運営サイト
9月 14

B−CASシステムでは、日付は1857年11月17日を起算日とした16ビットintで表す。システムが想定している日付の最大値はこれがFFFFのとき、すなわち2038年4月23日である。B−CASカードは放送波に含められている日付情報から現在の日付を計算するが、これがオーバーフローした場合には契約確認コマンドの返り値は「契約有効」になる。
カードが保持している1857年11月17日という起算日を改竄して、現在の日付でオーバーフローを起こせれば全てのチャンネルが契約有効になる。


日付表現をmjd(修正ユリウス日)で行ってるのは国内規格策定時にベースとなったDVB規格をそのまま引き継いだだけかと。
で、規格上は「修正ユリウス日の*下位16bit*」なので、wrap-aroundする値として規定されており、
正しく作ってれば「オーバーフロー」なんかしないわけだが。
本来は「2038年問題」にもなりえない。
上位bitをいくつと仮定してオフセット加味するかは出荷時期で決める想定。
ひとつの商品を180年も使い続ける想定は無いし、PayTVの契約期間もそんな長い想定は無いので、
wrap-aroundを複数跨るような事態は運用で回避されるはず。
とはいえ、規格ちゃんと読まずに実装してバグ仕込んでしまったってのはありがち。
特に、参照すべき標準規格(STD-B10)読まずに運用規格(TR-B14)だけ読んでたりするとかね。
なんで、2038年に次々とそーいう連中のバグが発覚ってのはあるかもね。

スラッシュドット・ジャパン ハードウェア | タダでBSやCSを視聴できる「Magic B-CAS」カード登場