以降、諸図面を参照しながら、本発明の実施態様を詳細に説明する。本発明は、パケット(放送波)の伝送路が有線、無線であろうと適用することができるが、パケットロスが起こり易く、本発明のメリットを最も享受できるであろう、無線伝送路を用いるワンセグメント放送システムに適用した態様で説明する。ワンセグメント放送の受信機能を持つ受信装置の典型例は、携帯電話端末やノートパソコンなどである。
図1は、本発明の一実施態様による受信装置の基本的な構成を示すブロック図である。図に示すように、受信装置100は、アンテナANT1、受信部110と、ハッシュ値計算部(生成部)120、パケット処理部130、認証部140、制御部150、メモリ160、出力部170、およびデコーダ180を具える。アンテナANT1は、パケットを含む放送波を受信し、受信した放送波を受信部110に供給する。受信部110は、受信した放送波から信号処理(OFDM復調処理など)して得たトランスポートストリーム(TS)信号(TSパケットおよび検証パケット)を、ハッシュ値計算部120、パケット処理部130、およびメモリ160に供給する。メモリ160はTSパケットを格納する。
また、受信部110は、受信したトランスポートストリームから、コンテンツを特定する情報(例えば、プログラム・アソシエーション・テーブルPAT、プログラム・マップ・テーブルPMTを格納している番組特定情報PSI)を分離して解析し、その情報に基づいて、トランスポートストリームから、映像信号、音声信号、データ信号を分離する。デコーダ180は、メモリ160に格納されている音声パケット、映像パケット、データ放送パケットなどをデコードして、出力部170に設けられた表示部172やスピーカ174に供給する。
パケット処理部130は、TS信号から検証パケット(VPパケット)を抽出し、当該検証パケットに含まれている、検証パケット間の区間[VP-VP]に存在する一連のTSパケットに対する署名情報としてのハッシュ値Hを取得し、取得したハッシュ値Hをメモリ160に格納しておく。ハッシュ値計算部120は、検証パケット以降の一連のTSパケットの先頭から、TSパケットを1つずつ読み出し、この1つのTSパケットと計算したハッシュ値hとを連鎖的に用いて、所定の関数を用いて署名情報としてのハッシュ値を生成/計算し(生成手法の詳細は後述する)、生成したハッシュ値hを認証部140に供給する。ハッシュ値計算部120は、新たな検証パケットを受信する毎に、同様のハッシュ値計算処理を繰り返す。
認証部140は、照合部142および処理部144を具える。照合部142は、次の検証パケットに含まれる署名情報としてのハッシュ値Hと、前記生成されたハッシュ値hとが一致するか否かを照合する。デコーダ180は、メモリ160に格納されている音声パケット、映像パケット、データ放送パケットなどをデコードして出力部170に設けられた表示部172やスピーカ174に供給する。処理部144は、照合部142による照合の結果、次の検証パケットに含まれる署名情報としてのハッシュ値Hと、生成されたハッシュ値hとが一致しない場合、当該区間を不正区間であると判定し、判定結果(照合結果)を制御部150に供給する。
制御部150は、出力部170やデコーダ180へのデータの供給を制御する。制御部150は、認証部140から供給された判定結果に基づき、不正区間と判定された区間のトランスポートストリームパケットを用いてコンテンツまたはサービスの出力を停止したり、不正区間である旨を示す字幕を付加して出力したり、その旨の文字をスーパーインポーズして出力したり、その旨を示す音声を出力したりするように表示部172やスピーカ174を制御する。
図2は、本発明の一実施態様による送信装置の基本的な構成を示すブロック図である。図に示すように、送信装置200は、ハッシュ値計算部(生成部)210、ストリーム生成部220、送信部230、カウンタ部240、メモリ250、およびアンテナANT2を具える。送信装置200は、有線経由などで上位装置(コンテンツサーバなど)から、送信されるべきオリジナルメッセージ(元の一連のTSパケット)を受け取る。ハッシュ値計算部210は、例えば、第1のヌルパケットと、それの1以上後の第2のヌルパケット(即ち、2番目以降のヌルパケット)との間にある「一連のパケット」の先頭から、TSパケットを1つずつ読み出し、この1つのTSパケットと計算したハッシュ値とを連鎖的に用いて、所定のハッシュ関数を用いて署名情報としてのハッシュ値hを計算する。当該区間の最後のTSパケットのメッセージと前回計算したハッシュ値hを用いて算出したハッシュ値を署名情報としてのハッシュ値Hとする。カウンタ部240は、前述した一連のパケットの中で処理したパケットの数をカウントし、カウントした値をメモリ250に格納する。
ストリーム生成部220は、先行する一連のパケットの区間に対する署名情報としてのハッシュ値Hを含む検証パケットを生成し、前述したヌルパケットをこの検証パケットに置き換える。ヌルパケットは、タイミングをとるためにストリームにある程度定期的に挿入されるものであり、本実施態様では、このヌルパケットを検証パケットに置き換えて、署名のための情報(ハッシュ値H)を受信者に伝達する。
このようにして、ストリーム生成部220は、検証パケット間の区間のメッセージを認証する署名情報としてのハッシュ値Hを含む検証パケットを、一連のトランスポートストリームパケットの後に配置する。従って、ストリーム生成部220は、検証パケット、一連のトランスポートストリームパケット、検証パケットという順番でストリームを生成していく。生成された一連のストリームは、送信部230が、変調処理など必要な処理を行った後でアンテナANT2から放送波として送出される。
図3は、図1の受信装置で実行される署名検証方法の一例を示すフローチャートである。まず、ハッシュ値計算部120は、ステップJ11にて検証パケットを選び出し、次に、ループ1(ステップJ13,J14)を開始する。次にステップJ13では、TSパケットのメッセージm(ペイロード)と、前回のハッシュ値h0(最初の実行時はヌル)とから、ステップJ14の終了条件を満たすまで、すなわち次の検証パケットを受信するまで、受信した全てのTSパケットから、以下の所定のハッシュ関数fを用いてハッシュ値hを生成する。
h=f(m,h0)
次の検証パケットを受信してループ1を終了すると、ステップJ15で、パケット処理部130は、次の検証パケットに格納されている署名情報としてのハッシュ値Hを取得し、これをメモリ160に格納する。認証部140内の照合部142は、ステップJ16にて、検証パケットから取得した署名情報としてのハッシュ値Hと、ハッシュ値計算部120で生成したハッシュ値hとが一致するか否かを照合する。取得したハッシュ値Hと生成したハッシュ値hとが一致する場合は、署名情報を正常に認証できたものとして処理を終え、制御部150の制御により、当該区間のTSパケットは正常にデコーダ180によりデコードされ、出力部170により出力される。Hとhとが一致しない場合は、ステップJ17に進み、照合部142は、当該区間を不正区間であると見なし、制御部150は、当該区間で受信したコンテンツを出力しないように、デコーダ180および出力部170を制御する。
図4は、図2の送信装置で実行されるストリーム生成方法の実施態様を示すフローチャートである。ここでは、署名検証区間内の全てのTSパケットからハッシュ値Hを求め、これをストリームに含ませて送信する実施態様を説明する。図4に示すように、ステップK11では、送信装置200に設けられたネットワーク部(図示しない)が上位装置(コンテンツサーバなど)から受け取った、オリジナルメッセージ(元の一連のTSパケット)から、第1のヌルパケットと、それの1以上後の第2のヌルパケット(即ち、2番目以降のヌルパケット)との区間を署名検証区間に設定する。
次に、ステップK12にて、ハッシュ値計算部210が、この署名検証区間にある一連のパケット全て(但し、区間内のヌルパケットは除く。)から、所定のハッシュ関数を用いて署名情報としてのハッシュ値Hを計算する。ステップK13にて、ストリーム生成部220が、求めたハッシュ値Hを含む検証パケットを作成する。次に、ステップK14にて、ストリーム生成部220が、生成した検証パケットで当該区間の終点(または始点)のヌルパケットを置換することによって、当該署名検証区間内の一連のTSパケットと、検証パケットとからなる一連のストリームを生成する。最後に、ステップK15にて、送信部230が、生成した一連のストリームに含まれるパケットを順次、送信(放送)する。なお、送信装置200内の各ブロックにて作成、生成されたデータや情報は、必要に応じてメモリ250に一時的に格納され、同様に必要に応じて格納したデータや情報は読み出されるものとする。
図5を用いて、図2に示した送信装置200の送信処理について説明する。図5は、送信装置200においてヌル(NULL)パケットを含むトランスポートストリーム(TS)からハッシュ値を計算する手法(送信装置側)を説明する図である。
図5の上段に示すように、オリジナルメッセージ(元のTSパケット)は、パケットP0(ヌルパケット)、P1(PID=A)、P2(PID=B)、P3(PID=C)、P4(PID=A)、P5(ヌルパケット)、P6(PID=A)の順のパケットストリームである。ここで、PID=Aは映像信号、PID=Bは音声信号、PID=Cはデータ放送信号を示すパケット識別子である。送信装置200のハッシュ値計算部210は、署名検証区間[P1−P4]のTSパケットであるパケットP1−P4を連鎖的に用いてハッシュ値を生成(計算)する。最初に、図5の下段に示すように、パケットP1(PID=A)のペイロード部に格納されているメッセージ(184バイト)から、所定のハッシュ関数を用いて、16バイトのハッシュ値h1を生成(計算)する。次に、ハッシュ値h1とパケットP2(PID=B)のメッセージm1(184バイト)から、ハッシュ値h2を生成(計算)する。同様に、ハッシュ値h2とパケットP3(PID=C)のメッセージm2(184バイト)から、ハッシュ値h3を生成(計算)し、さらに、ハッシュ値h3とパケットP4(PID=A)のメッセージm3(184バイト)から、ハッシュ値h4を生成(計算)する。区間内の全てのパケットを処理し終えたため、最後のハッシュ値h4を最終的なハッシュ値Hとし、このハッシュ値Hを含む検証パケット(VP)で、パケットP5(ヌルパケット)を置換する。そして、これらのパケットをストリームとして送信(放送)する。
図5に示したストリームの受信処理について図6を参照しながら説明する。図6は、図1の受信装置100において、受信したトランスポートストリーム(TS)のメッセージからハッシュ値を計算し、メッセージの正当性を検証する手法を説明する図である。図に示すように、受信装置100のハッシュ値計算部210は、署名検証区間[P1−P4]のTSパケットであるパケットP1−P4を連鎖的に用いてハッシュ値を生成する。最初に、パケットP1(PID=A)のペイロード部に格納されているメッセージ(184バイト)から、所定のハッシュ関数を用いて、16バイトのハッシュ値h1を生成(計算)する。次に、ハッシュ値h1とパケットP2(PID=B)のメッセージm1(184バイト)から、ハッシュ値h2を生成(計算)する。同様に、ハッシュ値h2とパケットP3(PID=C)のメッセージm2(184バイト)から、ハッシュ値h3を生成(計算)し、さらに、ハッシュ値h3とパケットP4(PID=A)のメッセージm3(184バイト)から、ハッシュ値h4を生成(計算)する。ハッシュ値計算部120は、区間内の全てのパケットを処理し終えたため、最後のハッシュ値h4を最終的なハッシュ値とする。照合部142は、署名検証区間に後続するパケットP5(検証パケットVP)に格納されている署名情報としてのハッシュ値Hをメモリ160から取得する。そして、照合部142は、計算したハッシュ値h4と検証パケットP5のハッシュ値Hとを照合する。照合部142の照合結果に応じて、制御部150は、当該署名検証区間のコンテンツやサービスの出力を制御する。
このように、本実施態様では、区間内の全てのTSパケット(4個)をハッシュ値の生成元として使用しているため、TSパケット数と同じ数だけハッシュ計算が行われることになり、ストリーム全体としての認証処理が可能となる。しかしながら、小型の携帯端末は計算能力が低い場合が多く、ハッシュ計算の負荷が重すぎるという事態の発生が考えられる。
図5、6に示した手法では、4つのTSパケットを例にして説明しているが、検証区間を長くすればするほど、その演算処理の負荷が大きくなる。そこで、小型の携帯端末向けの低負荷の署名検証手法を図7以降の図面を参照しながら説明する。
図7は、本発明の一実施態様による低負荷の署名検証手法を適用した受信装置の基本的な構成を示すブロック図である。図に示すように、受信装置100Aは、アンテナANT1、受信部110と、ハッシュ値計算部(生成部)120A、カウンタ部125、パケット処理部130A、認証部140A、制御部150A、メモリ160、出力部170、およびデコーダ180を具える。アンテナANT1は、パケットを含む放送波を受信し、受信した放送波を受信部110に供給する。受信部110は、受信した放送波から信号処理(OFDM復調処理など)して得たトランスポートストリーム(TS)信号(TSパケットおよび検証パケット)を、ハッシュ値計算部120A、パケット処理部130A、およびメモリ160に供給する。メモリ160はTSパケットを格納する。
パケット処理部130Aは、TS信号から検証パケットを抽出し、さらに検証パケットに格納されている第1の識別子(パケットID:PID)と第2の識別子(一連のTSパケットのうち、署名情報の作成に使用されたパケットの数:n)とを取得し、取得した第1および第2の識別子(PIDとn)をメモリ160に格納しておく。また、パケット処理部130Aは、検証パケット間(区間[VP-VP])に対する署名情報としてのハッシュ値Hをさらに取得し、これをメモリ160に格納しておく。
ハッシュ値計算部120Aは、PIDとnを取り出した検証パケット以降の一連のTSパケットから、第1の識別子で規定されたPIDと同じPIDを持つTSパケット(検証対象パケット)をnと同じ数だけ選び出し、選び出したTSパケットを連鎖的に用いてハッシュ値を生成し、生成したハッシュ値hを認証部140に供給する。カウンタ部125は、検証パケットを受信すると、カウンタを0でクリアし、第1の識別子と同じPIDを持つTSパケットを選び出す毎に、1ずつインクリメントし、そのカウント値をメモリ160に格納する。ハッシュ値計算部120Aおよびカウンタ部125は、新たな検証パケットを受信する毎に、同様のハッシュ値計算処理およびカウント処理を繰り返す。また、ハッシュ計算に用いるパケット(第1の識別子で規定されたPIDを持つパケット)は、検証パケットを受信した直後からn個を選択してもよいし、さらに次に受信する検証パケットより前に受信したパケットのうち前記次に受信する検証パケットに近い方からn個としてもよい。つまり、予め受信装置と送信装置との間で選択ルールを決定しておき、その選択ルールに応じてn個を選択すればよい。また、この第2の識別子で規定される数nは、受信装置の計算能力に応じて、適宜設定することができるものである。
認証部140Aは、照合部142および処理部144Aを具える。照合部142は、ハッシュ計算を開始するトリガーとなった検証パケットの次に受信する検証パケットに含まれる署名情報としてのハッシュ値Hと、前記生成されたハッシュ値hとが一致するか否かを照合する。処理部144Aは、照合の結果、次の検証パケットに含まれる署名情報としてのハッシュ値Hと、生成されたハッシュ値hとが一致しない場合、当該区間は不正区間であると判定する。制御部150Aは、不正区間におけるコンテンツまたはサービスの、出力部170による出力を制御する。例えば、制御部150Aは、デコーダ180における当該区間のデコードを中止するように制御する。
このように、ハッシュ値の計算に、第1の識別子と第2の識別子とで指定された特定のパケットのみを用いるため、ストリームを構成する全パケットを用いてハッシュ値を計算する場合よりも、受信側での計算負荷を軽減することができる。なお、パケット(メッセージ)を改竄されにくくする、即ち、攻撃への耐性を高めるために、第1の識別子であるPIDは、署名検証区間毎にランダムに変更するのが好適である。また、ハッシュ値の計算に用いるパケットの数nは、受信装置の処理能力に応じて指定することができる。
図8に、本発明の一実施態様による送信装置のブロック図を示す。この送信装置200Aによる処理を、図9を用いて説明する。図9は、ストリーム全体を認証しながら、第1の識別子(PID)と第2の識別子(ハッシュ計算に用いるパケット数n)を用いてハッシュ計算の負荷を軽減させた送信側でのハッシュ値計算手法を説明する図である。ここで、第1の識別子(PID)と第2の識別子(ハッシュ計算に用いるパケット数n)とは、送信装置200Aに設けた設定部(図示しない)によって設定される。図9の上段に示すように、オリジナルメッセージ(元のTSパケット)は、パケットP0(ヌルパケット)、P1(PID=A)、P2(PID=B)、P3(PID=A)、P4(PID=C)、P5(PID=A)、P6(ヌルパケット)、P7(PID=A)、P8(PID=B)、P9(PID=A)、P10(PID=B)、P11(ヌルパケット)の順のパケットストリームである。本実施態様では、検証パケット間の署名検証区間[VP-VP]にはパケットP1〜P10が存在する。ヌルパケットのパケットP0を、VPパケットに置換する。このVPパケット(P0)は、後続の署名検証区間[VP-VP]のための第1の識別子としての”PID=A”と、第2の識別子としてのパケット数”n=4”と、自己に先行する区間のためのハッシュ値Hとを含む。
送信装置200Aのハッシュ値計算部210Aは、第1の識別子および第2の識別子に従って、PIDがAのTSパケットを順次にn個まで選び出して、連鎖的にハッシュ値を生成する。即ち、ハッシュ値計算部210Aは、第1の識別子で規定されたPIDと同じPIDを持つTSパケットをnと同じ数だけ用いてハッシュ値を生成し、生成したハッシュ値を含む検証パケットで、パケットP11(ヌルパケット)を置換する。また、このストリームは、パケットP9にPIDがAのパケットがあるが、パケットP7の時点で、nで指定された数のパケットを選び出しているため、パケットP9はハッシュ計算には使わない。また、パケットP2などのPIDがA以外のパケットは、ハッシュ計算から除外される。具体的には、まず、図9の下段に示すように、パケットP1(PID=A)のペイロード部に格納されているメッセージ(184バイト)から、所定のハッシュ関数を用いて16バイトのハッシュ値h1を生成する。次に、ハッシュ値h1とパケットP3(PID=A)のメッセージm1(184バイト)から、ハッシュ値h2を生成する。同様に、ハッシュ値h2とパケットP5(PID=A)のメッセージm2(184バイト)から、ハッシュ値h3を生成し、さらに、ハッシュ値h3とパケットP7(PID=A)のメッセージm3(184バイト)から、ハッシュ値h4を生成する。区間内のn個のパケットを処理し終えたため、最後のハッシュ値h4を最終的なハッシュ値Hとし、このハッシュ値Hを含む検証パケット(VP)で、パケットP11(ヌルパケット)を置換する。そして、これらのパケットをストリームとして送信する。
このような限定した数のパケットを用いてハッシュ計算を行う送信装置200Aの処理のフローチャートを図10に示す。図10に示すように、ステップK21では、送信装置200Aに設けられたネットワーク部(図示しない)が上位装置(コンテンツサーバなど)から受け取った、オリジナルメッセージ(元の一連のTSパケット)のヌルパケットに基づいて、署名検証区間を設定する。ステップK22にて、この署名検証区間にある「一連のパケット」から、ハッシュ値の算出の対象となるパケットの識別子(例えば映像信号のパケットを示すPID)、および、当該識別子を持つハッシュ値の生成に使用するべきパケット数n(但し、nは2以上の整数)を設定する。次に、ステップK23にて、ハッシュ値計算部210Aが、区間の最初から、設定した識別子(PID)と同じPIDを持つTSパケットをn個選び出し、それらの選び出した一部のTSパケットを連鎖的に用いて、所定のハッシュ関数を用いて署名情報としてのハッシュ値Hを計算する。
このようにして、一連のTSパケットの一部から署名情報としてのハッシュ値を生成する。ステップK24にて、ストリーム生成部220が、第1の識別子(PID)および第2の識別子(n)と、署名検証区間用のハッシュ値Hとが格納される検証パケットを作成する。但し、第1の識別子(PID)および第2の識別子(n)は該検証パケットに後続する署名検証区間に用いる識別子を格納し、ハッシュ値は、当該検証パケットに先行する署名検証区間に対応する値を格納する。
次にステップK25にて、ストリーム生成部220が、後続する署名検証区間用の第1の識別子(PID)および第2の識別子(n)と、当該検証パケットに先行する署名検証区間用のハッシュ値Hとを含む検証パケットで当該区間の始点のヌルパケットを置換する。このヌルパケットの置換を繰り返すことによって、検証パケット、当該署名検証区間内の一連のTSパケット、検証パケットとからなる一連のストリームを生成する。最後に、ステップK26にて、送信部230が、生成した一連のストリームに含まれるパケットを順次、送信(放送)する。
図9に示したストリームの受信処理について説明する。図11は、図7の受信装置100Aにおいて、受信したトランスポートストリーム(TS)のメッセージからハッシュ値を計算し、メッセージの正当性を検証する手法(受信装置側)を説明する図である。図に示すように、受信装置100Aのハッシュ値計算部120Aは、第1の識別子(PID=A)および第2の識別子(n)に従って、PIDがAのTSパケットを順次にn個まで選び出して、連鎖的にハッシュ値を生成する。即ち、ハッシュ値計算部120Aは、第1の識別子で規定されたPIDと同じPIDを持つTSパケットをnと同じ数だけ用いてハッシュ値を生成する。また、このストリームには、PIDがAを示すパケットP9があるが、パケットP7の時点で、nで指定された数のパケットを選び出しているため、パケットP9はハッシュ計算には使わない。また、パケットP2などのPIDがA以外のパケットは、ハッシュ計算から除外される。
なお、図9,11の手法において、パケットの選択方法以外は、図3におけるハッシュ計算手法と同様である。このようにして、P1−P10の10個のパケット中、PIDがAを示す4個(n=4)のパケットが署名情報としてハッシュ値の計算に使用されるため、パケットストリーム全体(一連のパケット)を認証しつつも、計算負荷を40%まで低減することが可能となる。このように、本実施態様では、区間内の特定のTSパケット(PIDがAを示すパケットであり、区間の始点から4個目までのパケット)をハッシュ値の生成データとして使用しているため、限定した数のパケットを用いて、ハッシュ計算が行われることになる。これにより、受信装置における署名検証の処理負荷を低く抑えることが出来る。
図9、11に示した手法においてパケットロスに対応できないケースに対応するために、区間内で対応する識別子(第1の識別子)を持つ対象パケット数Nを検証パケットにさらに含ませたストリームを生成する送信装置200Aの処理のフローチャートを図12に示す。図12のストリーム生成処理に対応するために、図8の送信装置200Aのストリーム生成部220、カウント部240およびメモリ250の動作を以下のように変更する。カウント部240は、区間内に含まれている第1の識別子に該当する対象パケット数Nをカウントし、カウントされた対象パケット数Nはメモリ250に格納される。送信装置200Aのストリーム生成部220は、メモリ250に格納されている区間内で対応する識別子(第1の識別子)を持つ対象パケット数Nを検証パケットにさらに含ませたストリームを生成する。
図12では、ステップK31−36を示してあるが、図10のステップと異なるステップのみを説明する。ステップK32では、署名検証区間にある「一連のパケット」から、ハッシュ値の算出の対象となるパケットの識別子(例えば映像信号のパケットを示すPID)を設定し、送信装置200Aのカウンタ部240が、当該区間において、このPIDを持つパケット数をカウントする。そして、設定した当該識別子を持つ対象パケット数N、当該識別子を持つハッシュ値の生成に使用するべきパケット数n(但し、n<N、nは2以上の整数)を設定する。また、ステップK34では、ストリーム生成部220が、第1の識別子、ハッシュ生成に使用したTSパケットの数nを規定する第2の識別子、並びに求めたハッシュ値H、対象パケット数Nを含む第1の検証パケットを作成する。但し、第1の識別子(PID)および第2の識別子(n)は該検証パケットに後続する署名検証区間に用いる識別子を格納し、ハッシュ値は、当該検証パケットに先行する署名検証区間に対応する値を格納する。また、対応パケット数Nは上記いずれの検証パケットに格納しても良い。
次にステップK35にて、ストリーム生成部220が、後続する署名検証区間用の第1の識別子(PID)および第2の識別子(n)と、当該検証パケットに先行する署名検証区間用のハッシュ値Hおよび対象パケット数Nとを含む検証パケットで当該区間の始点のヌルパケットを置換する。このヌルパケットの置換を繰り返すことによって、検証パケット、当該署名検証区間内の一連のTSパケット、検証パケットからなる一連のストリームを生成する。このように対象パケット数Nを新たに含ませた検証パケットを送信(放送)することによって、図9、11に示した手法で対応できなかったパケットロスを適正に処理することが可能となる。
図13は、図9、11に示した手法においてパケットロスに対応できないケースを説明する図である。図13のストリーム構成(パケット構成、順序)は図8、10と同じである。図13の(a)はパケットロスが発生しないパターンを示したものである。この場合には、求めたハッシュ値h4と、パケットVP(パケットP11)内に格納されていた署名検証のためのハッシュ値Hとが一致しており、当該署名検証区間の照合が成功となり、当該区間の非改竄性が保証される。他方、図13の(b)は、署名情報のハッシュ値の計算に送信時において使用したパケットP7(PID=A)をパケットロスで受信できなかっため、パケットP9を間違って対象のTSパケットと判定し、当該パケットのメッセージm3´と、前段のハッシュ値h3とからハッシュ値h4´を計算してしまっている。従って、計算したハッシュ値h4´と、検証パケットVP(パケットP11)のハッシュ値Hとは一致せず、照合失敗となってしまう。この場合は、攻撃者による不正放送波が原因というよりは、むしろパケットロスが主たる要因であると考えられる。特に、パケット伝送に無線経路を用いる場合には、パケットロスは高い頻度で発生する。このようなパケットロスを攻撃者による不正放送であると一律に判定すると、ユーザに正常放送として表示できる区間が僅かなものとなってしまうという不都合が発生する。このようなパケットロスを判定して、ユーザビリティを向上させる仕組みを図14に示す。
図14は、対象TSP数Nを新たに検証パケットに含ませることによってパケットロスを検出する署名検証方法(受信装置側)を説明する図である。図14の(a)に示すように、署名検証区間[P1−P5]の後の検証パケットであるパケットP6に、当該区間の一部のパケットを用いて作成したハッシュ値Hと、さらに、当該区間において対象となるTSパケット数N=5を含ませる。なお、各パケット間には、第1の識別子で指定した、対象のパケットPID=A以外のパケットが存在するが、説明の便宜上、省略したものであることに注意されたい。ここでは、パケットP3が通信エラーによってパケットロスとなっており、ハッシュ値生成に使用しなかったパケットP5をハッシュ値計算のために間違って使用してしまう。従って、計算したハッシュ値h4と、検証パケットVP(パケットP6)格納されているハッシュ値Hとを照合しても、一致しない。他方、カウントした受信対象TSP個数cが4個であり、パケットP6で規定された対象TSP数N=5であるため、これも不一致であり、パケットロスが発生していることが判明する。このようなケースでは、ハッシュ値不一致の主原因がパケットロスであると見なすことができ、例えば、当該区間を署名検証区間から除外することが可能となる。この後、照合処理をリセットし、次の署名検証区間[P7−P12]の検証を開始する。ここでは、署名情報としてのハッシュ値の計算に使用されたパケット以外のパケットP11がパケットロスとなっているため、ハッシュ値の照合は成功している。図14の(b)に示すように、パケットロスが主原因と考えられる認証失敗という事実を把握することが可能となる。このような場合は、当該区間を不正とは判定せずに、単に認証区間から除外し、先行する区間や後続の区間の認証結果に基づき、出力制御することが好適である。従って、受信装置は、「パケットロスあり、認証失敗」という事実を把握し、「認証失敗の原因はパケットロスである可能性が高い」ことを認識することもできる。従って、受信装置は、認証失敗した区間であっても、当該装置のポリシーに応じて、当該区間のコンテンツ再生を継続したり、制限付き、或いは、認証結果を示す字幕/表示などを付加した状態で再生したりすることが可能となる。例えば、認証失敗した区間のコンテンツを、認証結果を示す字幕/表示付きで再生すれば、無線環境などにおいても実用上問題ない程度でコンテンツ再生を行うことが可能となり、ユーザビリティが格段に向上する。
即ち、第1の識別子(PIDなど)で規定したパケットのパケットロスト(受信エラー)が原因であってもこれを認識できていなかったため、照合部142においてハッシュ値が一致しない場合は、不正なストリームを受信しているものと判定せざるを得なかった。しかしながら、本実施態様では、カウンタ部125と処理部144とを設けることによって、第1の識別子(PIDなど)で規定したパケットにパケットロスが発生した可能性があることを受信装置側で判定できるようにして、そのようなパケットロスが発生した区間を署名検証区間から除外できるように構成した。これによって、ハッシュ値が一致せず、署名検証区間内に存在するべき対象パケット数Nと、当該区間内で受信した対象PIDに該当するパケット数(カウント値c)とが一致した場合には、完全に不正なストリームであるという判定ができるようになった。
図14の署名検証方法に対応するために、図7の受信装置のハッシュ値計算部120A、カウンタ部125、パケット処理部130A、認証部140A、制御部150Aの動作を以下のように変更する。
パケット処理部130Aは、TS信号から検証パケットを抽出し、さらに検証パケットに格納されている第1の識別子(パケットID:PID)と第2の識別子(一連のTSパケットのうち、署名情報の作成に使用されたパケットの数:n)とを取得し、取得した第1および第2の識別子(PIDとn)をメモリ160に格納しておく。また、パケット処理部130Aは、次の検証パケットに含まれている、「現在の検証パケット」と「次に受信した検証パケット」との間の区間[VP-VP]に含まれている第1の識別子に該当する対象パケット数N(但し、Nは整数であり、N≧n)と、区間[VP-VP]に対する署名情報としてのハッシュ値Hをさらに取得し、取得した対象パケット数N、ハッシュ値Hもメモリ160に格納しておく。
ハッシュ値計算部120Aは、PIDとnを取り出した検証パケット以降の一連のTSパケットから、前記PIDと同じPIDを持つTSパケット(検証対象パケット)をnと同じ数だけ選び出し、選び出したTSパケットを連鎖的に用いてハッシュ値を生成し(生成手法の詳細は後述する)、生成したハッシュ値hを認証部140に供給する。カウンタ部125は、検証パケットを受信すると、カウンタを0でクリアし、第1の識別子と同じPIDを持つTSパケットを選び出す毎に、1ずつインクリメントし、そのカウント値をメモリ160に格納する。ハッシュ値計算部120Aおよびカウンタ部125は、新たな検証パケットを受信する毎に、同様のハッシュ値計算処理およびカウント処理を繰り返す。また、ハッシュ計算に用いるパケットは、検証パケットを受信した直後からn個を選択してもよいし、さらに次に受信する検証パケットより前に受信したパケットのうち前記次に受信する検証パケットに近い方からn個としてもよい。つまり、予め受信装置と送信装置との間で選択ルールを決定しておき、その選択ルールに応じてn個を選択すればよい。また、この第2の識別子で規定される数nは、受信装置の計算能力に応じて、適宜設定することができるものである。
認証部140Aは、照合部142、および処理部144Aを具える。照合部142は、次の検証パケットに含まれる署名情報としてのハッシュ値Hと、前記生成されたハッシュ値hとが一致するか否かを照合する。処理部144Aは、照合部142による照合の結果、次の検証パケットに含まれる署名情報としてのハッシュ値Hと、生成されたハッシュ値hとが一致しない場合、検証パケットと次の検証パケットとの間の区間において、カウンタ部125でカウントされたパケットの数c(即ち、当該区間において正常に受信した対象となるパケットの数)と、第1の識別子のPIDに該当する対象パケット数Nとが一致しないときは、パケットロスが発生したと見なし、当該区間を署名検証区間から除外する。
処理部144Aは、照合部142による照合の結果、署名情報としてのハッシュ値Hと、生成されたハッシュ値hとが一致しない場合、かつ、カウンタ部125でカウントされたパケットの数cと、前記該当する対象パケット数Nとが一致したときは、当該区間を不正区間であると判定する。デコーダ180は、メモリ160に格納されている音声パケット、映像パケット、データ放送パケットなどをデコードして出力部170に設けられた表示部172やスピーカ174に供給するが、例えば、制御部150Aは、デコーダ180における当該区間のデコードを中止するように制御する。
制御部150Aは、出力部170やデコーダ180へのデータの供給を制御する。署名検証区間から除外した区間のトランスポートストリームパケットを用いてコンテンツまたはサービスを出力する場合、当該除外した区間の前および/または後の区間の認証部140Aによる署名検証結果に基づいて、当該コンテンツまたはサービスの出力を制御する。例えば、制御部150Aは、前または後の区間の署名検証が正常であれば、除外区間では検証対象パケットのロスによりハッシュ値が一致しなかったものと見なし、除外区間のコンテンツまたはサービスを出力する。また、制御部150Aは、前または後の区間の署名検証が異常(不一致)であれば、除外区間では出力を停止する。また、制御部150Aは、除外区間について、出力を停止したり、パケットロスがあった旨を示す字幕を付加して出力したり、その旨の文字をスーパーインポーズして出力したり、その旨を示す音声を出力したりするように表示部172やスピーカ174を制御する。このように、ハッシュ値の計算に、第1の識別子と第2の識別子とで指定された特定のパケットのみを用いるため、ストリームを構成する全パケットを用いてハッシュ値を計算する場合よりも、受信側での計算負荷を軽減することができる。なお、パケット(メッセージ)を改竄されにくくする、即ち、攻撃への耐性を高めるために、第1の識別子であるPIDは、署名検証区間毎にランダムに変更するのが好適である。また、ハッシュ値の計算に用いるパケットの数nは、受信装置の処理能力に応じて指定することができる。
図15は、図7の受信装置で実行される署名検証方法の一例を示すフローチャートである。図に示すように、ステップS11では、初期値を設定する(カウント値c、前回のハッシュ値h0をゼロにする)。次にステップS12にて、ハッシュ値計算部120Aは、受信して復調されたTS信号を監視し、予め定めた固有の識別子を持つ検証パケットを選び出す。次にステップS13にて、ハッシュ値計算部120Aは、選び出した検証パケットから第1の識別子(PID)と第2の識別子(ハッシュ作成に使用するパケットの個数n)とを抽出する。
ステップS14では、ハッシュ値計算部120Aは、ループ2(ステップS15、S16、S17)を開始する。ステップS15では、該当するPIDを持つTSパケットを選び出し、パケットを選び出す毎にカウンタ部125はカウント値cを1ずつ増分する。次にステップS16では、TSパケットのメッセージm(ペイロード)と、前回のハッシュ値h0(最初の実行時はヌルでり、2回目以降は前回計算したハッシュ値)とから、ハッシュ計算(生成)回数が、第2の識別子で規定されたn回になるまで所定のハッシュ関数fを用いてハッシュ値hを生成する。
h=f(m,h0)
このように、本発明によれば、一連のパケットのうち一部をPIDによってフィルタリングすることによって、署名検証に使用されるパケット数を限定し、さらに、個数nによってもハッシュ計算回数を制限しているため、ハッシュ計算に計算能力を割り当てる余裕がない、小型の携帯端末においても適正な計算負荷(低負荷)のもとでスムーズに署名検証処理を実行させることが可能となる。
次に、ステップS17にて、ループ2の終了条件を満たすまでループ2を繰り返す。終了条件は、検証パケットと次の検証パケットとの間の区間[VP-VP]において、第1の識別子で規定されたPIDを持つTSパケットを全て(n個)処理することである。次にステップS18にて、第1の識別子に該当するPIDを示すTSパケットを検出すると、カウンタ部125は、カウント値を1つ増分する。尚これは、次の検証パケットを受信するまで行われる。次にステップS19にて、パケット処理部130Aは、次の検証パケットを受信すると、次の検証パケットに格納されている署名情報としてのハッシュ値Hを取得し、これをメモリ160に格納する。認証部140A内の照合部142は、ステップS20にて、検証パケットから取得した署名情報としてのハッシュ値Hと、ハッシュ値計算部120で生成(計算)したハッシュ値hとが一致するか否かを照合する。取得したハッシュ値Hと生成したハッシュ値hとが一致する場合は、署名情報を正常に認証できたものとして処理を終え、当該区間のTSパケットは正常にデコーダ180によりデコードされ出力部170により出力される。取得したハッシュ値Hと、生成したハッシュ値hとが一致しなかった場合は、ステップS21に進み、パケットロス検出処理を行う。なお、このパケットロス検出処理と上記ハッシュ値の照合処理は、並行して行われてもよい。つまり、ハッシュ値が一致しているか否かに関わらず、パケットロス検出処理を行ってもよい。
ステップS21にて、パケット処理部130Aが、次の検証パケットに含まれている区間[VP-VP]間に存在するべき対象パケット数Nをメモリ160から取得する。次にステップS22にて、処理部144Aは、対象パケットのパケットロスが発生しているか否かを確かめるために、計測したカウント値cと、区間内に存在するべき対象パケット数Nとが一致するか否かを判定する。計測したカウント値cと対象パケット数Nとが一致している場合は、ステップS23に進み、パケットロスがないにも関わらず、ハッシュ値の照合に失敗したことになるため、当該区間を不正区間であると見なし、処理部144Aは、当該区間のデコードを停止するようにデコーダ180を制御する。或いは、処理部144Aは、デコーダ180ではなく、直接、出力部170が出力しないように制御してもよい。ステップS22にて、計測したカウント値cと対象パケット数Nとが一致しなかった場合は、ステップS24に進み、処理部144Aは、パケットロスが発生していることになるため、当該区間を署名検証区間から除外して、処理を終える。
最後に本発明の利点を再度述べる。本発明の実施態様によれば、演算能力の低い装置であっても、ストリーム全体を適正に認証することができ、かつ、パケットロス(受信エラー)を検知することによってエラー耐性およびユーザビリティを向上させることができるようになる。即ち、本発明では、一連のストリームパケットの一部に限定して署名情報としてのハッシュ値を生成し、当該一部のパケットとは離れた位置の検証パケットに格納するため、攻撃者は、署名情報を含む検証パケットと、署名情報生成に使用された一部のパケット(メッセージ)との関連性を見つけ出すことが困難であり、改竄への耐性が高い堅牢な認証/検証システムを提供することが可能である。また、第1の識別子と第2の識別子とで指定されるパケットの種類および対象パケットの個数を設定して、一連のパケットから一部のパケットに限定することによって、一連のパケット全体(即ち、ストリーム全体)を適正にカバーしつつも、ハッシュ計算の対象メッセージ数を低減して、特に受信装置側における署名検証のための計算処理を低減することが可能である。また、無線環境に特有のパケットロスにも対応することが可能である。
本発明を諸図面や実施例に基づき説明してきたが、当業者であれば本開示に基づき種々の変形や修正を行うことが容易であることに注意されたい。従って、これらの変形や修正は本発明の範囲に含まれることに留意されたい。例えば、各部、各手段、各ステップなどに含まれる機能などは論理的に矛盾しないように再配置可能であり、複数の手段やステップなどを1つに組み合わせたり、或いは分割したりすることが可能である。
実施態様では、第1の識別子として映像のPIDを利用したが、音声のPIDやデータ放送のPIDなどを用いたり、或いは、区間が更新される毎に、映像、音声、データ放送のうちのからランダムにPIDを選択したりしてもよい。また、フィッシングサイトへの誘導の防止のみを目的とする場合は、BMLを含むデータ放送のPIDのみを用いてもよい。さらに、第1の識別子は、2以上のPID(例えば、映像、データ放送の組み合わせ)、および、複数個の数nを含むことが可能である。この場合は、対象パケット数Nも複数となる。さらに、対象パケット数Nは、対象とする署名検証区間よりも後の検証パケットに格納したが、検証開始の起点である検証パケットに含ませてもよい。また、実施態様では、前方から順に各メッセージおよび生成したハッシュ値を用いて連鎖的にハッシュ値を生成したが、それらは単なる例示に過ぎず、例えば、後方から順に各メッセージ連鎖的に用いてハッシュ値を生成するなど、本発明はハッシュ生成に様々な形式を使用することが可能である。