アカウント名:
パスワード:
んーちょっとわかんなかった。
> B−CASカードは放送波に含められている日付情報から現在の日付を計算するが、> これがオーバーフローした場合には契約確認コマンドの返り値は「契約有効」になる。
もし不適切にオーバーフローしたら放送波の放送時間を過去だと勘違いするだけだと思うんだ。そのようなことのないように、カード製造日より過去のMJDを受け取ったら上位に1bit加えて、自身の保存する契約期限情報と比較するんじゃないかな。そもそもB-CASカード(という名のコンピューター)は放送波に埋め込まれている日付情報をそのまま受け取り、保存し、比較し、結果を返せば十分だと思うんだ。
以下ちょっとあやふやですが、デジタル放送の仕組み的なものから考えてみました。放送波内の日付情報には、 放送自体の日時を継続的に送るもの、 放送波の暗号化を解く鍵【ks】を暗号化して放送するメッセージ(ECM)に含まれるもの、 ECMを解く鍵【Kw】を使ってもよい(契約有効である)日付の期限を、特定のB-CASカードに暗号化して 伝えるメッセージ(EMM)に含まれるチャンネルごとの契約期限情報が存在する。
B-CASカードは、 すべての有料チャンネルのデフォルトの【Kw】は初めから持っている (だから新品B-CASカードでは1週間お試しで視聴できるが、それ以降は全て契約無効となる) 自分宛に送られてきたEMMから、契約したチャンネルの有効期限情報を取り出し、メモリに保存する 放送波のECMを受け取ったら、その日付とメモリ内のそのチャンネルの有効期限情報を比較し、 有効期限内なら復号して【Ks】を受信機に渡すという処理を行っている。
受信機から契約情報について問合せがあったら、メモリ内の有効期限情報を返す。 (どっちがMJDを処理するのかは調べてないけど、規格書に渡し方が書いてあるハズ)
んで、すべてのチャンネルに対してMJD的にリミットの期限を返すとしたら、あらかじめすべてのチャンネルに対する偽の有効期限情報を書き込んであると思うんだ。
ただし、これができるのは【Kw】が更新されない間だけで、「一週間お試し視聴」ができなくなるデメリットを放送事業者側が受け入れるなら、個別のB-CAS向けEMMメッセージで新しい【Kw】を送れば「Magic B-CAS」はゴミになるんじゃないかな。販売者がその都度アップデートしてくれるなら話は別だけど…
ちょっと補足します。#元コメ含めて非公開の部分は憶測ですので眉に唾付けてください
> すべての有料チャンネルのデフォルトの【Kw】は初めから持っている> (だから新品B-CASカードでは1週間お試しで視聴できるが、それ以降は全て契約無効となる)
新品のB-CASカードは、有料放送のチャンネルのECMを初めて受け取った時に、自動的にECMの日付の(約)一週間後の日付を有効期限としてメモリに保存します。これはEMMを受信したことがなくても処理されるようです。
もし、何らかの方法でECMを偽装して、2038年のECMをB-CASに食わせることができれば、…つまりは【Kw】とB-CASの暗号化アルゴリズムがどこかから流出するか解析されちゃったなら、カード自体の耐タンパ性とは無関係な手法でクラックできるのかもしれませんね。
なるほど、参照元に書いてあるB-CASのレスポンスを見る限り、オーバーフローさせた日付の下位ビット部を与えると過去と勘違いするんですね。
ただ、実際に放送波に含まれる日付(ECMの日付)は、実際に放送された日付であってオーバーフローした日付がB-CASに渡ることは2038年まではありえないんですよね。
参照元の例でも、あくまでもカード内部の「2010年01月31日」という期限と比較して、カードに与えられた「オーバーフロー済みの日付」を評価しているだけですね。
そもそもB-CASカードの運用上、カード自体にMJDの起算日を持つ必要すらないですし…
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
UNIXはシンプルである。必要なのはそのシンプルさを理解する素質だけである -- Dennis Ritchie
クラックの手法 (スコア:5, 参考になる)
B−CASシステムでは、日付は1857年11月17日を起算日とした16ビットintで表す。システムが想定している日付の最大値はこれがFFFFのとき、すなわち2038年4月23日である。B−CASカードは放送波に含められている日付情報から現在の日付を計算するが、これがオーバーフローした場合には契約確認コマンドの返り値は「契約有効」になる。
カードが保持している1857年11月17日という起算日を改竄して、現在の日付でオーバーフローを起こせれば全てのチャンネルが契約有効になる。
#タレコミが不採用かと思って上記内容を日記に書いたら、日記投稿とほぼ同時に採用されてびっくり
Re:クラックの手法 (スコア:1)
んーちょっとわかんなかった。
> B−CASカードは放送波に含められている日付情報から現在の日付を計算するが、
> これがオーバーフローした場合には契約確認コマンドの返り値は「契約有効」になる。
もし不適切にオーバーフローしたら放送波の放送時間を過去だと勘違いするだけだと思うんだ。
そのようなことのないように、カード製造日より過去のMJDを受け取ったら上位に1bit加えて、
自身の保存する契約期限情報と比較するんじゃないかな。
そもそもB-CASカード(という名のコンピューター)は放送波に埋め込まれている日付情報を
そのまま受け取り、保存し、比較し、結果を返せば十分だと思うんだ。
以下ちょっとあやふやですが、デジタル放送の仕組み的なものから考えてみました。
放送波内の日付情報には、
放送自体の日時を継続的に送るもの、
放送波の暗号化を解く鍵【ks】を暗号化して放送するメッセージ(ECM)に含まれるもの、
ECMを解く鍵【Kw】を使ってもよい(契約有効である)日付の期限を、特定のB-CASカードに暗号化して
伝えるメッセージ(EMM)に含まれるチャンネルごとの契約期限情報
が存在する。
B-CASカードは、
すべての有料チャンネルのデフォルトの【Kw】は初めから持っている
(だから新品B-CASカードでは1週間お試しで視聴できるが、それ以降は全て契約無効となる)
自分宛に送られてきたEMMから、契約したチャンネルの有効期限情報を取り出し、メモリに保存する
放送波のECMを受け取ったら、その日付とメモリ内のそのチャンネルの有効期限情報を比較し、
有効期限内なら復号して【Ks】を受信機に渡す
という処理を行っている。
受信機から契約情報について問合せがあったら、メモリ内の有効期限情報を返す。
(どっちがMJDを処理するのかは調べてないけど、規格書に渡し方が書いてあるハズ)
んで、すべてのチャンネルに対してMJD的にリミットの期限を返すとしたら、
あらかじめすべてのチャンネルに対する偽の有効期限情報を書き込んであると思うんだ。
ただし、これができるのは【Kw】が更新されない間だけで、
「一週間お試し視聴」ができなくなるデメリットを放送事業者側が受け入れるなら、
個別のB-CAS向けEMMメッセージで新しい【Kw】を送れば「Magic B-CAS」はゴミになるんじゃないかな。
販売者がその都度アップデートしてくれるなら話は別だけど…
Re: (スコア:0)
ちょっと補足します。
#元コメ含めて非公開の部分は憶測ですので眉に唾付けてください
> すべての有料チャンネルのデフォルトの【Kw】は初めから持っている
> (だから新品B-CASカードでは1週間お試しで視聴できるが、それ以降は全て契約無効となる)
新品のB-CASカードは、有料放送のチャンネルのECMを初めて受け取った時に、
自動的にECMの日付の(約)一週間後の日付を有効期限としてメモリに保存します。
これはEMMを受信したことがなくても処理されるようです。
もし、何らかの方法でECMを偽装して、2038年のECMをB-CASに食わせることができれば、
…つまりは【Kw】とB-CASの暗号化アルゴリズムがどこかから流出するか解析されちゃったなら、
カード自体の耐タンパ性とは無関係な手法でクラックできるのかもしれませんね。
Re: (スコア:0)
2ちゃんねる情報ですが、http://logsoku.com/thread/pc11.2ch.net/avi/1235667096/790-805 によると、オーバーフローしたら契約情報確認コマンドが誤動作する事例が報告されています。
余談だけど、2009年時点でこのような大穴を複数の人間が知っていたにもかかわらず、今まで表沙汰にならなかったというのは日本人らしい行動だなあ。アメリカとかだったらあっという間にクラックカードやタダ見のためのTS改造ツールとかがばんばん出回ってると思う。
Re: (スコア:0)
なるほど、参照元に書いてあるB-CASのレスポンスを見る限り、
オーバーフローさせた日付の下位ビット部を与えると過去と勘違いするんですね。
ただ、実際に放送波に含まれる日付(ECMの日付)は、実際に放送された日付であって
オーバーフローした日付がB-CASに渡ることは2038年まではありえないんですよね。
参照元の例でも、あくまでもカード内部の「2010年01月31日」という期限と比較して、
カードに与えられた「オーバーフロー済みの日付」を評価しているだけですね。
そもそもB-CASカードの運用上、カード自体にMJDの起算日を持つ必要すらないですし…