パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

タダでBSやCSを視聴できる「Magic B-CAS」カード登場」記事へのコメント

  • クラックの手法 (スコア:5, 参考になる)

    by stat (28781) <28781NO@SPAMa2the.net> on 2011年09月13日 15時42分 (#2018992) 日記
    クラックは大まかに次のような手法によるようです。

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

    #タレコミが不採用かと思って上記内容を日記に書いたら、日記投稿とほぼ同時に採用されてびっくり
    • by denchu (6847) on 2011年09月13日 17時39分 (#2019050)

      こんなところでリアルすべてがFになる [wikipedia.org]ネタを見られるとは正直思わなかった。
      しかし、この対策どうするんでしょうね。地デジ機器のファームウェア書き換えあたりで対策出来るのかなぁ。

      親コメント
    • by Anonymous Coward on 2011年09月13日 16時00分 (#2018997)

      起算日がなんでそんなに前なんだ。

      親コメント
    • by Anonymous Coward on 2011年09月13日 16時03分 (#2018998)

      なんで今時2038年問題増やすんだ・・・

      このテクニックがもしも本当なら、20年後に大慌てとかになるのでは?
      地デジ2.0でB-CASも変わるって事なんだろうか・・・
      B-CASカードの世代やメーカー依存のテクかな?

      なんだかB-CASカードのファーム更新絡みでチューナーによって有料契約見れなくなるとか一波乱来そうだ。

      # カードの対タンパがよくてもプロトコルから破られるケースって多いですよねICカード界隈

      親コメント
      • by hibirth (19787) on 2011年09月13日 21時11分 (#2019144)

        > なんで今時2038年問題増やすんだ・・・

        日付表現をmjd(修正ユリウス日)で行ってるのは国内規格策定時にベースとなったDVB規格をそのまま引き継いだだけかと。

        で、規格上は「修正ユリウス日の*下位16bit*」なので、wrap-aroundする値として規定されており、
        正しく作ってれば「オーバーフロー」なんかしないわけだが。
        本来は「2038年問題」にもなりえない。

        上位bitをいくつと仮定してオフセット加味するかは出荷時期で決める想定。
        ひとつの商品を180年も使い続ける想定は無いし、PayTVの契約期間もそんな長い想定は無いので、
        wrap-aroundを複数跨るような事態は運用で回避されるはず。

        とはいえ、規格ちゃんと読まずに実装してバグ仕込んでしまったってのはありがち。
        特に、参照すべき標準規格(STD-B10)読まずに運用規格(TR-B14)だけ読んでたりするとかね。
        なんで、2038年に次々とそーいう連中のバグが発覚ってのはあるかもね。

        > # カードの対タンパがよくてもプロトコルから破られるケースって多いですよねICカード界隈

        元コメの「クラック方法」の話なら、カード内ファームの改竄が前提になるはずなので、
        カードの耐タンパ(*対*じゃねー)破られたって話になるわけで、
        friioなんかで問題になったようなプロトコル問題とは深刻さが違うわけだが...

        カード製造元のT社にしてもM社(現P)にしても物理耐タンパ+ファーム難読化両方実施で安心って触れ込みだったんだけどねぇ。

        親コメント
        • by Anonymous Coward

          「年の下位2桁を取るという仕様なんだから2000年問題とか2100年問題とか起こりようがないよね」並みの非現実的なたわごとだな

      • by hpn_smile (11442) on 2011年09月13日 23時24分 (#2019183) 日記

        2038年にみんな「契約有効」になるんだったら、20年後に大慌てにはならないんじゃない?
        むしろ、みんな無料で見れるって大喜びでしょう。

        # むろん、その前に何らかの対策がされるんでしょうけど。

        オーバーフローを「契約有効」にしたのは地味に英断だと思います。
        オーバーフローが「契約無効」って事にしてたら、2038年に急に見れなくなって大混乱でしょう。

        親コメント
      • by Anonymous Coward
        システムっていうのがカードのことで、
        日付情報を持ってるのがテレビ側というか電波、
        ということらしいので、2030年あたりから
        実際の日付にマイナス170年した電波を流せばいいんじゃない?

        最初は新しいカードを配布すれば……と思ったけど
        それじゃ解決しないね。
      • by Anonymous Coward

        2038年までに地上デジタルの仕様を更新するよ、ってことかと思われ。

        アナログ→地デジの混乱ふたたび (得をするのは家電メーカー)

        • by Anonymous Coward
          2025年にスーパーハイビジョン本放送開始予定、その後、10年ほどでリプレースするつもりでしょう。
      • by Anonymous Coward

        後々の問題のタネを仕込んでおけば、
        対策のための天下り先が用意されるので

    • by Anonymous Coward on 2011年09月14日 11時01分 (#2019296)

      んーちょっとわかんなかった。

      > 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」はゴミになるんじゃないかな。
      販売者がその都度アップデートしてくれるなら話は別だけど…

      親コメント
      • by Anonymous Coward

        ちょっと補足します。
        #元コメ含めて非公開の部分は憶測ですので眉に唾付けてください

        >  すべての有料チャンネルのデフォルトの【Kw】は初めから持っている
        >  (だから新品B-CASカードでは1週間お試しで視聴できるが、それ以降は全て契約無効となる)

        新品のB-CASカードは、有料放送のチャンネルのECMを初めて受け取った時に、
        自動的にECMの日付の(約)一週間後の日付を有効期限としてメモリに保存します。
        これはEMMを受信したことがなくても処理されるようです。

        もし、何らかの方法でECMを偽装して、2038年のECMをB-CASに食わせることができれば、
        …つまりは【Kw】とB-CASの暗号化アルゴリズムがどこかから流出するか解析されちゃったなら、
        カード自体の耐タンパ性とは無関係な手法でクラックできるのかもしれませんね。

      • >もし不適切にオーバーフローしたら放送波の放送時間を過去だと勘違いするだけだと思うんだ。

        2ちゃんねる情報ですが、http://logsoku.com/thread/pc11.2ch.net/avi/1235667096/790-805 によると、オーバーフローしたら契約情報確認コマンドが誤動作する事例が報告されています。


        余談だけど、2009年時点でこのような大穴を複数の人間が知っていたにもかかわらず、今まで表沙汰にならなかったというのは日本人らしい行動だなあ。アメリカとかだったらあっという間にクラックカードやタダ見のためのTS改造ツールとかがばんばん出回ってると思う。
        • by Anonymous Coward

          なるほど、参照元に書いてあるB-CASのレスポンスを見る限り、
          オーバーフローさせた日付の下位ビット部を与えると過去と勘違いするんですね。

          ただ、実際に放送波に含まれる日付(ECMの日付)は、実際に放送された日付であって
          オーバーフローした日付がB-CASに渡ることは2038年まではありえないんですよね。

          参照元の例でも、あくまでもカード内部の「2010年01月31日」という期限と比較して、
          カードに与えられた「オーバーフロー済みの日付」を評価しているだけですね。

          そもそもB-CASカードの運用上、カード自体にMJDの起算日を持つ必要すらないですし…

    • by Anonymous Coward

      その日が新月だったからじゃないか?

      と適当なことを言ってみる
      # 作った人は旧暦利用者だったのかよ

    • by Anonymous Coward
      どうやってカードの起算日を書き換えてるの?このような値はROMのような領域に記録してあるもんだと思うけど。
      • by Anonymous Coward on 2011年09月13日 17時45分 (#2019055)

        レーザートリミングみたいな手法だと、場所さえ分かれば同じ方法でビット飛ばせますな。きっと計算上は限定受信システム起算日+B-CAS起算日オフセットでB-CAS上はノートリミングで0x00になってるんじゃないかな。

        親コメント
    • by Anonymous Coward

      ICチップの耐タンパ性能てそんなもんなんですかね。ちょっと衝撃。
      銀行カードもIC化で安心みたいな感じだけど、やる気になれば磁気カードと大差ないってことなのかな。
      あ、電子マネーもヤバい?

      • by Anonymous Coward on 2011年09月13日 17時49分 (#2019059)

        電子マネーのたぐいはちゃんとデータの入出力の部分の暗号化はされてます
        一方、海外でアクセスコントロールに使われてる廉価なICカードにはPICやAVR内蔵のものもあって、こいつはクラックしほうだいです(十分な暗号化もされてないはず)
        技術仕様が公開されていない特殊仕様のプロセッサを使うのがベストなのですが、B-CASカードは既存のプロセッサを使ってて暗号化や耐タンパ性の配慮もしてなかったということになりますね

        親コメント

開いた括弧は必ず閉じる -- あるプログラマー

処理中...