(57)【要約】【課題】送信機から受信機に秘密のデータを安全に提供する改良された方法を提供する。【解決手段】本発明は、秘密のデータを送信機から１つ以上の受信機に安全に提供するためのシステム及び方法を提供する。受信機は、１つ以上のシードの支配下にある数学的変換を使用して、秘密のデータを、入力変換空間から出力変換空間に移動させるために、関数の階層から生じる関数列を使用する。シードは、送信機によって受信機に提供される。送信機は、シードを制御することによって、受信機が秘密のデータを獲得することを条件付きで可能にする。【選択図】図５
2010206796.tif 000002
【特許請求の範囲】
【請求項１】
秘密のデータ（Ｚ）を送信機から１つ以上の受信機に安全に提供するためのシステムであって、
前記受信機が、関数の階層から生じる関数列を記憶するように構成された第１のメモリを備え、
各関数（Ｆ）が、シード（Ｓ、Ｓ＊）の支配下にある数学的変換を使用して、前記秘密のデータ（Ｚ）を、入力変換空間（ＩＮ）から出力変換空間（ＯＵＴ）に移動させるように構成され、
前記送信機が、前記シード（Ｓ、Ｓ＊）を前記受信機に提供するように構成されると共に、
前記受信機が、前記シード（Ｓ、Ｓ＊）の支配下にある前記関数列を使用して、前記秘密のデータ（Ｚ）を、前記入力変換空間（ＩＮ）から最終出力変換空間（ＯＵＴ１、ＯＵＴ２、ＯＵＴ３、ＯＵＴ４）に移動させるように構成される
ことを特徴とするシステム。
【請求項２】
前記関数列における各関数が、特有のシード（Ｓ、Ｓ＊）により支配されていると共に、
前記送信機が、各特有のシード（Ｓ、Ｓ＊）を前記受信機に提供するように構成される
ことを特徴とする請求項１に記載のシステム。
【請求項３】
前記関数列が、前記受信機に特有である
ことを特徴とする請求項２に記載のシステム。
【請求項４】
前記受信機が、個別化されたシードを記憶するように構成された第２のメモリを備えると共に、
前記受信機が、前記秘密のデータ（Ｚ）を前記最終出力変換空間（ＯＵＴ１、ＯＵＴ２、ＯＵＴ３、ＯＵＴ４）から前記個別化されたシードの支配下にある平文変換空間に移動させることによって、前記秘密のデータ（Ｚ）を獲得するように構成される
ことを特徴とする請求項１から請求項３のいずれか一項に記載のシステム。
【請求項５】
各関数が、コード難読化によって保護されている
ことを特徴とする請求項１から請求項４のいずれか一項に記載のシステム。
【請求項６】
前記送信機が、新しい関数を前記受信機に送信するように構成されると共に、
前記受信機が、前記メモリ内の前記関数列における前記関数の内の１つ以上を、前記新しい関数に置き換える
ことを特徴とする請求項１から請求項５のいずれか一項に記載のシステム。
【請求項７】
秘密のデータ（Ｚ）を１つ以上の受信機に安全に提供すると共に、請求項１から請求項６のいずれか一項に記載のシステムにおいて使用するための送信機であって、
前記送信機が、関数の階層を定義するように構成され、
各関数（Ｆ）が、シード（Ｓ、Ｓ＊）の支配下にある数学的変換を使用して、前記秘密のデータ（Ｚ）を、入力変換空間（ＩＮ）から出力変換空間（ＯＵＴ）に移動させるように構成されると共に、
前記送信機が、前記シード（Ｓ、Ｓ＊）を前記受信機に提供するように構成される
ことを特徴とする送信機。
【請求項８】
秘密のデータ（Ｚ）を送信機から安全に受け取ると共に、請求項１から請求項６のいずれか一項に記載のシステムにおいて使用するための受信機であって、
関数の階層から生じる関数列を記憶するように構成された第１のメモリを備え、
各関数（Ｆ）が、シード（Ｓ、Ｓ＊）の支配下にある数学的変換を使用して、前記秘密のデータ（Ｚ）を、入力変換空間（ＩＮ）から出力変換空間（ＯＵＴ）に移動させるように構成され、
前記受信機が、１つ以上のシード（Ｓ、Ｓ＊）を前記送信機から受け取るように構成されると共に、
前記受信機が、前記シード（Ｓ、Ｓ＊）の支配下にある前記関数列を使用して、前記秘密のデータ（Ｚ）を、前記入力変換空間（ＩＮ）から最終出力変換空間（ＯＵＴ１、ＯＵＴ２、ＯＵＴ３、ＯＵＴ４）に移動させるように構成される
ことを特徴とする受信機。
【請求項９】
秘密のデータ（Ｚ）を送信機から１つ以上の受信機に安全に提供するための方法であって、
前記受信機が、関数の階層から生じる関数列を記憶するように構成された第１のメモリを備え、
各関数（Ｆ）が、シード（Ｓ、Ｓ＊）の支配下にある数学的変換を使用して、前記秘密のデータ（Ｚ）を、入力変換空間（ＩＮ）から出力変換空間（ＯＵＴ）に移動させるように構成され、
前記方法が、
（１）１つ以上のシード（Ｓ、Ｓ＊）を前記送信機から前記受信機に提供するステップと、
（２）前記受信機において、前記シード（Ｓ、Ｓ＊）の支配下にある前記関数列を使用して、前記秘密のデータ（Ｚ）を、前記入力変換空間（ＩＮ）から最終出力変換空間（ＯＵＴ１、ＯＵＴ２、ＯＵＴ３、ＯＵＴ４）に移動させるステップとを含む
ことを特徴とする方法。
【請求項１０】
前記関数列における各関数が、特有のシード（Ｓ、Ｓ＊）により支配されていると共に、
前記方法が、各特有のシード（Ｓ、Ｓ＊）を前記送信機から前記受信機に提供するステップを含む
ことを特徴とする請求項９に記載の方法。
【請求項１１】
前記関数列が、前記受信機に特有である
ことを特徴とする請求項１０に記載の方法。
【請求項１２】
（３）前記受信機において、第２のメモリから個別化されたシードを読み取るステップと、
（４）前記受信機において、前記秘密のデータ（Ｚ）を前記最終出力変換空間（ＯＵＴ１、ＯＵＴ２、ＯＵＴ３、ＯＵＴ４）から前記個別化されたシードの支配下にある平文変換空間に移動させることによって、前記秘密のデータ（Ｚ）を獲得するステップと
を更に含むことを特徴とする請求項９から請求項１１のいずれか一項に記載の方法。
【請求項１３】
各関数が、コード難読化によって保護されている
ことを特徴とする請求項９から請求項１２のいずれか一項に記載の方法。
【請求項１４】
（５）新しい関数を前記送信機から前記受信機に送信するステップと、
（６）前記受信機の前記メモリ内の前記関数列における前記関数の内の１つ以上を、前記新しい関数に置き換えるステップと
を更に含むことを特徴とする請求項９から請求項１３のいずれか一項に記載の方法。
【請求項１５】
送信機における、秘密のデータ（Ｚ）を前記送信機から１つ以上の受信機に安全に提供するための方法であって、
（１０）関数の階層を定義するステップと、
（１１）１つ以上のシード（Ｓ、Ｓ＊）を前記受信機に提供するステップとを含み、
各関数（Ｆ）が、シード（Ｓ、Ｓ＊）の支配下にある数学的変換を使用して、前記秘密のデータ（Ｚ）を、入力変換空間（ＩＮ）から出力変換空間（ＯＵＴ）に移動させるように構成される
ことを特徴とする方法。
【請求項１６】
受信機における、秘密のデータ（Ｚ）を送信機から安全に受け取るための方法であって、
前記受信機が、関数の階層から生じる関数列を記憶するように構成された第１のメモリを備え、
各関数（Ｆ）が、シード（Ｓ、Ｓ＊）の支配下にある数学的変換を使用して、前記秘密のデータ（Ｚ）を、入力変換空間（ＩＮ）から出力変換空間（ＯＵＴ）に移動させるように構成され、
前記方法が、
（２０）１つ以上のシード（Ｓ、Ｓ＊）を前記送信機から受け取るステップと、
（２１）前記シード（Ｓ、Ｓ＊）の支配下にある前記関数列を使用して、前記秘密のデータ（Ｚ）を、前記入力変換空間（ＩＮ）から最終出力変換空間（ＯＵＴ１、ＯＵＴ２、ＯＵＴ３、ＯＵＴ４）に移動させるステップとを含む
ことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、秘密のデータを送信機から１つ以上の受信機に安全に提供するためのシステム、秘密のデータを１つ以上の受信機に安全に提供するための送信機、秘密のデータを送信機から安全に受け取るための受信機、秘密のデータを送信機から１つ以上の受信機に安全に提供するための方法、送信機における、秘密のデータを送信機から１つ以上の受信機に安全に提供するための方法、及び受信機における、秘密のデータを送信機から安全に受け取るための方法に関係する。
【背景技術】
【０００２】
様々な暗号化技術が、送信機から受信機に対する保護されたデータの提供のために知られており、該技術において、データは、暗号化鍵を使用して送信機において暗号化され、暗号化されたデータは、受信機に送られると共に、暗号化されたデータは、暗号解読鍵を使用して受信機において解読される。なお、暗号解読鍵は、送信機から受信機に提供され得ると共に、その場合に、暗号解読鍵は、安全に提供される必要がある秘密のデータである。もしどの受信機が秘密のデータを獲得することができるかについて送信機が主導権を持っているならば、その場合に、秘密のデータは条件付きで提供される。
【０００３】
例えば、有料テレビ（ペイテレビ：pay-tv）のための条件付きのアクセスシステムにおいて、一般的に、プレミアムコンテンツ（premium content）は、制御語（ＣＷ：control word）を暗号化鍵として使用して、ヘッドエンドシステムにおいてスクランブル化されている。スクランブル化されたコンテンツは、条件付きのアクセス受信機に放送される。スクランブル化されたコンテンツを受信機がデスクランブルすることを可能にするために、スマートカードが受信機に挿入されるべきである。受信機を通して、スマートカードは、ヘッドエンドシステムから、受信機の鍵ＣＳＵＫによって暗号化されたチップセットセッションキー（ＣＳＳＫ：chipset session key）を含む暗号化された資格管理メッセージ（ＥＭＭ：entitlement management message）を受け取る。受信機を通して、スマートカードは、ヘッドエンドシステムから、ＣＳＳＫによって暗号化されたＣＷを含む資格制御メッセージ（ＥＣＭ：entitlement control message）を更に受け取る。一般的に、ＣＷは、ＣＳＳＫより更に短い存続期間を有している。従って、ＣＳＳＫは、時間とともに複数のＥＣＭによって受け取られた複数のＣＷを解読するために使用され得る。解読されたＣＳＳＫを用いて、スマートカードは、ＣＷを解読すると共に、ＣＷは、続いて、スクランブル化されたコンテンツをデスクランブルするために、受信機によって使用され得る。追加の鍵階層がＣＷを解読するために使用され得るということが知られている。
【０００４】
攻撃者（attacker）が、コンピュータ環境を侵害するために時間とともに新しい手法を発展させ、そして更に洗練された対策が組み込まれる必要があるので、受信機が更に安全にされると、製造原価は増加する。
【０００５】
特に有料テレビの分野では、スマートカードが、受信機に信用された環境を提供するための選択肢のプラットフォームになった。しかしながら、スマートカードは、安全だけれども、それらが分配されて、追跡される必要があるので、物流の観点から、及び部品コストの観点から、費用がかかる。更に、あらゆる他のハードウェアソリューションに関しても、一度配置されたスマートカードを、いくらかの傷が発見された場合に無効にして交換することは、難しく、多大の費用を要する。それは、スマートカードアプリケーションの設計及び開発は、非常に気を付ける必要があると共に徹底的に検査する必要があることを意味する。更に、スマートカードは、放送コンテンツのバルク暗号解読（bulk decryption）を実行するための十分なＣＰＵ電力を供給しない。従って、スマートカードの役割は、獲得されたＣＷを、専用の受信機または多目的の受信機におけるデスクランブラーのような更に強力なハードウェアに中継することに、ほとんど制限される。そのような受信機は、同様に、不都合にも、スマートカードと通信するときに、スマートカードと受信機との間で共有された鍵のような、いくらかの特有の秘密事項を必要とする、最低限度の秘密保持を保証しなければならない。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
秘密のデータを、安全に、そして条件付きで、送信機から受信機に提供することに関する改良された解決法の必要性がある。
【０００７】
送信機から受信機に、例えば制御語または暗号解読鍵のような秘密のデータを安全に提供する改良された方法を提供することが、本発明の目的である。
【課題を解決するための手段】
【０００８】
本発明の特徴によれば、システムが、秘密のデータを送信機から１つ以上の受信機に安全に提供するために提案される。前記受信機は、関数の階層から生じる関数列を記憶するように構成された第１のメモリを備える。各関数は、シードの支配下にある数学的変換を使用して、前記秘密のデータを、入力変換空間から出力変換空間に移動させるように構成される。前記送信機は、前記シードを前記受信機に提供するように構成される。前記受信機は、前記シードの支配下にある前記関数列を使用して、前記秘密のデータを、前記入力変換空間から最終出力変換空間に移動させるように構成される。
【０００９】
本発明の特徴によれば、方法が、秘密のデータを送信機から１つ以上の受信機に安全に提供するために提案される。前記受信機は、関数の階層から生じる関数列を記憶するように構成された第１のメモリを備えると共に、各関数は、シードの支配下にある数学的変換を使用して、前記秘密のデータを、入力変換空間から出力変換空間に移動させるように構成される。前記方法は、１つ以上のシードを前記送信機から前記受信機に提供するステップを含む。前記方法は、前記受信機において、前記シードの支配下にある前記関数列を使用して、前記秘密のデータを、前記入力変換空間から最終出力変換空間に移動させるステップを更に含む。
【００１０】
本発明の特徴によれば、送信機が、秘密のデータを１つ以上の受信機に安全に提供するために提案される。前記送信機は、上で定義されたような特徴の内の１つ以上を有するシステムにおいて使用するためのものである。前記送信機は、関数の階層を定義するように構成される。各関数は、シードの支配下にある数学的変換を使用して、前記秘密のデータを、入力変換空間から出力変換空間に移動させるように構成される。前記送信機は、前記シードを前記受信機に提供するように構成される。
【００１１】
本発明の特徴によれば、送信機における方法が、秘密のデータを前記送信機から１つ以上の受信機に安全に提供するために提案される。前記方法は、関数の階層を定義するステップを含み、各関数は、シードの支配下にある数学的変換を使用して、前記秘密のデータを、入力変換空間から出力変換空間に移動させるように構成される。前記方法は、１つ以上のシードを前記受信機に提供するステップを更に含む。
【００１２】
本発明の特徴によれば、受信機が、秘密のデータを送信機から安全に受け取るために提案される。前記受信機は、上で定義されたような特徴の内の１つ以上を有するシステムにおいて使用するためのものである。前記受信機は、関数の階層から生じる関数列を記憶するように構成された第１のメモリを備える。各関数は、シードの支配下にある数学的変換を使用して、前記秘密のデータを、入力変換空間から出力変換空間に移動させるように構成される。前記受信機は、１つ以上のシードを前記送信機から受け取るように構成される。前記受信機は、前記シードの支配下にある前記関数列を使用して、前記秘密のデータを、前記入力変換空間から最終出力変換空間に移動させるように構成される。
【００１３】
本発明の特徴によれば、受信機における方法が、秘密のデータを送信機から安全に受け取るために提案される。前記受信機は、関数の階層から生じる関数列を記憶するように構成された第１のメモリを備え、各関数は、シードの支配下にある数学的変換を使用して、前記秘密のデータを、入力変換空間から出力変換空間に移動させるように構成される。前記方法は、１つ以上のシードを前記送信機から受け取るステップを含む。前記方法は、前記シードの支配下にある前記関数列を使用して、前記秘密のデータを、前記入力変換空間から最終出力変換空間に移動させるステップを更に含む。
【００１４】
従って、秘密のデータは、受信機におけるスマートカードのような特定のハードウェアの必要性なしで、送信機から受信機に、条件付きで有利に提供され得る。
【００１５】
変換（transform、またはtransformation）は、可逆圧縮であると共に、元のオリジナルの表現に簡単に戻すことができないように選択された特別なデータ符号化である。一般的にある代数学（algebra）の特性に基づいている、いくらかの種類の符号化が知られている。変換空間は、全ての考え得るクリアデータ（clear data）に関する符号化を含む特定の変換によって定義された領域であると共に、クリアデータに対する操作は、写像された、符号化されたデータに対する同等の操作によって実行される。
【００１６】
“シードの支配下にある”は、受信機が秘密のデータを受け取ることを許される場合、関数によって実行された数学的変換が、秘密のデータの意味のある出力変換空間になるように、シードは、秘密のデータの入力変換空間と適合する、値、一組の値、または関数のような特定のデータを含む、ということを意味する。すなわち、変換の後の出力変換空間は、平文変換空間に続いて移動させられたとき、秘密のデータが入手可能であるように、対応するシードの支配下にある次の関数によって実行される次の変換の入力変換空間として使用され得る。受信機が秘密のデータを受け取ることを許されない場合、送信機は、変換を行うことができない関数になるシードを送信することができるか、または、無意味な出力を伴う数学的変換を行う関数になる誤ったシードを送信することができる。後者の場合において、秘密のデータは、平文変換空間に対する移動によって獲得されることができない。
【００１７】
関数は、一般的に、メモリに格納されるソフトウェアコード部分、またはソフトウェアモジュールである。プロセッサは、秘密のデータを、入力変換空間から最終の出力変換空間に移動させるために、関数列における関数を実行する。
【００１８】
請求項２及び請求項１０の実施例は、送信機が、受信機のグループが秘密のデータを獲得することを無効にすることを、有利に可能にする。
【００１９】
請求項３及び請求項１１の実施例は、送信機が、特定の受信機が秘密のデータを獲得することを無効にすることを、有利に可能にする。
【００２０】
請求項４及び請求項１２の実施例は、特定の受信機、すなわち概して受信機に特有である正しい個別化されたシードを有する受信機によってのみ秘密のデータが獲得可能になることを、有利に可能にする。
【００２１】
請求項５及び請求項１３の実施例は、リバースエンジニアリング（逆行分析）及び／または関数の逆実行からの保護を、有利に可能にすると共に、それにより、関数の間のインタフェースは、保護する必要がなくなる。
【００２２】
請求項６及び請求項１４の実施例は、関数のリバースエンジニアリングからの追加の保護を、有利に提供する。
【００２３】
以下、本発明の実施例が、更に詳細に説明されることになる。しかしながら、これらの実施例が、本発明に関する保護の範囲を制限する、と解釈され得ないということが認識されるべきである。
【図面の簡単な説明】
【００２４】
【図１】従来技術の数学的変換を行う関数を示す図である。
【図２】本発明の代表的な実施例のシードの支配下にある数学的変換を行う関数を示す図である。
【図３】本発明の代表的な実施例の関数列を示す図である。
【図４】本発明の代表的な実施例の関数列を示す図である。
【図５】本発明の代表的な実施例の変換階層を示す図である。
【図６】本発明の代表的な実施例の変換階層を示す図である。
【図７】本発明の代表的な実施例の条件付きのアクセス受信機を示す図である。
【図８】本発明の代表的な実施例のシステムにおける方法のステップを示す図である。
【図９】本発明の代表的な実施例の送信機における方法のステップを示す図である。
【図１０】本発明の代表的な実施例の受信機における方法のステップを示す図である。
【図１１】一般的な言葉で変換関数及び暗号化を明瞭にする図である。
【発明を実施するための形態】
【００２５】
本発明の特徴は、図面に示された代表的な実施例を参照することによって更に詳細に説明されることになる。
【００２６】
図１において示された関数Ｆは、ＩＮ及びＯＵＴで識別された異なる２つの変換空間（例えば暗号化空間）を横断してデータＺを移動させる数学的操作である。出力変換空間ＯＵＴの次元は、少なくとも、入力変換空間ＩＮと同じくらい大きいと共に、あらゆるデータＺは、入力変換空間及び出力変換空間の両方において、それぞれ（恐らくは、特有ではない）Ｘ及びＹとして表される。変換空間ＩＮ及びＯＵＴは、変換空間のいずれにおいてもデータＺとその表現との間に明白な割り当て（mapping）が存在しないように、すなわち、Ｘ及びＹだけを知ることで、対応するＺを獲得することが、困難であるか、または本当に不可能であるように定義される。逆方向に実行することが難しいように、関数Ｆは設計される。入力変換空間と出力変換空間との間に明白な割り当てが存在しないので、そして変換空間ＩＮ及びＯＵＴの次元が好ましくは著しく大きいので、関数Ｆの再生成が妨げられる。更に、関数Ｆは、例えば、既知のホワイトボックス技法（white box techniques）を使用して、及び／または既知のコード難読化技法（code obfuscation techniques）を使用してデータＺが関数を通過するように、データＺを抽出することが難しくなるような方法で実装される。
【００２７】
図１を参照すると、関数Ｆは、例えば、“Ｆ（Ｘ）＝３×Ｘ＋２”として定義される。もし入力変換空間ＩＮが平文変換空間であるならば、その場合に、Ｘ＝（Ｚ）ＩＮ＝Ｚである。移動の後に、次の結果“Ｙ＝（Ｚ）ＯＵＴ＝３×Ｘ＋２”がもたらされる。出力変換空間から平文変換空間に再度Ｚを移動させるために、受信機において、以下の“Ｆ−１（Ｙ）＝（３×Ｘ＋２−２）／３＝Ｘ”のようにＸを獲得するように、逆関数“Ｆ−１（Ｙ）＝（Ｙ−２）／３”が利用可能でなければならない。この例において、Ｚ、Ｘ、及びＹは、シンプルな加算及び減算の計算を用いて変換するのに使用され得る数である。Ｚ、Ｘ、及びＹが、２進値、数、文字、単語、及びその他種々の物を含むあらゆるデータフォーマットにおけるデータであり得るということが理解されることになる。関数Ｆは、更に複合的な関数であり、そして、例えば、２進値、数、文字、または単語に対する操作に適当であり得る。関数Ｆは、例えば暗号化関数である。
【００２８】
図２において示されたように、関数Ｆは、追加のパラメータ（同様にシードと言われる）Ｓによってシードを与えられ得る数学的操作として定義され得る。関数Ｆが行う移動は、概して、シードＳのみによって定義されると共に、入力空間ＩＮ及び出力空間ＯＵＴに関する情報はＦに埋め込まれない。関数Ｆは、入力データＸまたはシードＳの操作が出力変換空間で予測不可能な結果のデータＹをもたらすように選択される。変換空間ＩＮ及びＯＵＴに関する情報が抽出されることができないようにシードＳが設計されるので、シードＳは、安全な環境に記憶される必要がない。
【００２９】
図２を参照すると、関数Ｆは、例えば、“Ｆ（Ｘ、Ｓ）＝Ｘ−７＋Ｓ”として定義される。もし入力変換空間ＩＮが平文変換空間ならば、その場合に、“Ｘ＝（Ｚ）ＩＮ＝Ｚ”である。移動の後に、従って次の結果“Ｙ＝（Ｚ）ＯＵＴ＝Ｘ−７＋Ｓ＝Ｚ−７＋Ｓ”がもたらされる。もし例えばシードＳが５の値を含むデータとして提供されるならば、その場合に、“Ｆ（Ｘ、５）＝Ｘ−７＋５”及び“Ｙ＝（Ｚ）ＯＵＴ＝Ｘ−７＋５＝Ｚ−２”となる。出力変換空間から平文変換空間に再度Ｚを移動させるために、受信機において、以下の“Ｆ−１（Ｙ、Ｓ）＝（Ｘ−７＋５）＋７−Ｓ”のように受信機がＺを獲得することを可能にするように、逆関数“Ｆ−１（Ｙ、Ｓ）＝Ｙ＋７−Ｓ”が利用可能でなければならない。シードＳ＝５が受信機において知られているならば、その場合に、Ｚは、“Ｆ−１（Ｙ、５）＝（Ｘ−７＋５）＋７−５＝Ｘ＝Ｚ”として正しく獲得され得る。もし入力変換空間ＩＮが平文変換空間でないならば、その場合に、関数Ｆは、概して、入力変換空間ＩＮにおいて逆変換を最初に実行し、次に出力変換空間ＯＵＴにおいて変換を実行する。そのような関数Ｆは、例えば、“Ｆ（Ｘ、Ｓ１、Ｓ２）＝Ｆ２（Ｆ１−１（Ｘ、Ｓ１）、Ｓ２）”のように定義され、ここで“Ｆ１−１（Ｘ、Ｓ１）＝Ｘ−２−Ｓ１”及び“Ｆ２（Ｘ、Ｓ２）＝Ｘ−７＋Ｓ２”である。移動の後に、従って次の結果“Ｙ＝（Ｚ）ＯＵＴ＝（Ｘ−２−Ｓ１）−７＋Ｓ２＝Ｘ−９−＜Ｓ１、Ｓ２＞”が獲得され、ここで“Ｘ＝（Ｚ）ＩＮ”である。最初に“Ｆ１−１（Ｘ、Ｓ１）”を実行し、次に“Ｆ２（Ｘ、Ｓ２）”を実行するように、シードＳ１及びシードＳ２が、２つの個別のシードとして、もしくは“Ｆ２（Ｆ１−１（Ｘ、Ｓ１）、Ｓ２）”への入力として使用され得る合成物〈Ｓ１、Ｓ２〉を含む単一のシードとして、提供され得る。もし例えばＳ１＝５及びＳ２＝７であるならば、その場合に、合成物は、出力変換空間ＯＵＴにＺを首尾よく移動させるために、“＜Ｓ１、Ｓ２＞＝５−７＝−２”に等しくなければならない。これらの例において、Ｚ、Ｘ、Ｙ、及びＳは、シンプルな加算及び減算の計算を用いて変換するのに使用され得る数である。Ｚ、Ｘ、Ｙ、及びＳが、２進値、数、文字、単語、及びその他種々の物を含むあらゆるデータフォーマットにおけるデータであり得るということが理解されることになる。関数Ｆは、更に複合的な関数であり、そして、例えば、２進値、数、文字、または単語に対する操作に適当であり得る。関数Ｆは、例えば暗号化関数である。
【００３０】
図３において示されたように、データＺが複数の変換空間を横断して移動されることを可能にするために、関数Ｆは、順繰りに、毎回異なるシードＳｉ（またはＳｉの合成物）によって複数回繰り返され得る。図３の例において、データＺは、関数ＦとシードＳ１を使用して、入力変換空間ＩＮ（すなわち“Ｘ＝（Ｚ）ＩＮ”）から出力変換空間ＯＵＴ１（図示せず）に、最初に移動させられる。中間結果“（Ｚ）ＯＵＴ１”（図示せず）は、次に、データＺを変換空間ＯＵＴ１から変換空間ＯＵＴ２（図示せず）に移動させるために、シードＳ２を有する関数Ｆに入力される。最終的に、中間結果“（Ｚ）ＯＵＴ２”（図示せず）は、データＺを変換空間ＯＵＴ２から“Ｙ＝（Ｚ）ＯＵＴ３”をもたらす変換空間ＯＵＴ３に移動させるために、シードＳ３を有する関数Ｆに入力される。ＩＮからＯＵＴ３までの全体の変換は、正しい順序において正しい値を有している全ての３つのシードに完全に依存している。もし分離して使用されるなら、シードは、意味を持たない。
【００３１】
関数Ｆのリバースエンジニアリングを防止するために、イントラステージ変換空間（図３の例におけるＯＵＴ１及びＯＵＴ２）に関する情報が、関連した関数に部分的に埋め込まれ得ると共に、従って、図３に関して説明された同じ原理に基づいて、置き換え可能でない関数Ｆｉの新しい系列を生成する。これは、図４において示される。図４において、関数Ｆ１、Ｆ２、及びＦ３のそれぞれ、そしてその対応するシードＳ１、Ｓ２、及びＳ３は、その入力変換空間が順番における前の関数の出力変換空間に適合する場合に限り、意味のある出力を生み出す。図４の例において、関数Ｆ１と連係したシードＳ１は、データＺを、入力変換空間ＩＮから出力変換空間ＯＵＴ１に移動させると共に、従って、続いて関数Ｆ２と連係したシードＳ２が、データＺをＯＵＴ１に等しい入力変換空間から移動させる能力があることを必要とする。関数Ｆ１と連係したシードＳ１と同様に、関数Ｆ２と連係したシードＳ２及び関数Ｆ３と連係したシードＳ３は、データＺを、変換空間ＯＵＴ１から変換空間ＯＵＴ２に、そして変換空間ＯＵＴ２から変換空間ＯＵＴ３に、それぞれ移動させることが可能である。
【００３２】
シードＳｉは、好ましくは、データ“Ｙ＝（Ｚ）ＯＵＴ３”が特定の受信機だけに意味があるように選択され、ここで、Ｙは、比類なく個別化された１つのハードウェアによって処理されると共に、それによって“Ｙ＝（Ｚ）ＯＵＴ３”からＺを獲得することが可能である。
【００３３】
図５において示されたように、変換階層、すなわち関数Ｆ１・・・Ｆｎのｎ個のレベルのツリーまたは階層は、各関数に関する個々のシードＳｉと共に定義され得る。概して、変換階層は、少なくとも２つのレベルの関数（例えば、図５の関数Ｆ１及び関数Ｆ２）を有している。理論上、レベルの最大数に限界はないが、しかし、実際には、レベルの最大数は、変換階層または変換階層の要部（relevant part）を記憶するメモリの制約によって制限される。変換階層は、グローバルな（世界的な）変換された秘密事項“Ｘ＝（Ｚ）ＩＮ”を、多数の独立した変換空間に変換するために使用される。一般的に、第１の変換は、送信機において、秘密のデータＺを平文入力変換空間ＩＮから出力変換空間ＯＵＴに移動させるために実行される。図５の例において、レベルの数は３つであり、結果として変換階層において使用される３つの異なる関数Ｆ１、Ｆ２、及びＦ３になる。変換階層は、秘密のデータＺの正体を暴露することなく、グローバルな変換された秘密事項Ｘを、有意義な方法で、最終の、そして恐らくは唯一の変換空間ＯＵＴ１・・・ＯＵＴ４に、条件付きで移動させるために使用される。
【００３４】
図２を参照すると、関数Ｆは、シードＳの代わりに所定のシードＳ＊に関して、それが、データＸの特有のサブセットだけを、入力変換空間ＩＮから出力変換空間ＯＵＴに正しく変換するように選択され得る。サブセットの特性は、Ｆが行う数学的操作によって決定され、それによって、変換の結果は、データＸとシードＳ＊のデータとの間の相関関係に依存する。この場合、出力空間ＯＵＴの次元は、入力空間ＩＮより小さくなる結果となる。Ｚを変換空間ＩＮから変換空間ＯＵＴに条件付きで移動させるために使用されるシードＳ＊は、Ｚを変換空間ＩＮから変換空間ＯＵＴに無条件で移動させるために使用される単純なシードＳの拡張されたバージョンと見なされ得る。関数Ｆは、所定のデータＸ及びシードＳ＊から結果として生じるサブセットを推定することが難しいように、そして出力変換空間において、結果として生じるデータＹに影響を及ぼすことなく、Ｘの特定のデータを含むために、Ｘ及び／またはＳ＊を操作することによってサブセットを操作することが難しいように、選択される。正しいシードＳ＊は、入力変換空間ＩＮと相互に関連があり、Ｆによって行われた数学的操作は、正しい出力変換空間ＯＵＴを生み出す。この技法は、例えばホワイトボックス技法またはコード難読化技法を使用して実施され得る隠された（obscured）条件付きの変換を実行するのに使用される。その技法は、あらゆる秘密のデータＺに適用され得る。
【００３５】
最も低いレベル（すなわち図６におけるＹ１・・・Ｙ４に最も近く、これは関数Ｆ３のレベルである）の変換階層において新しいシードＳｉ＊を選択することによって、拡張された変換関数Ｆの条件文の特性は、個々の受信機、または受信機のグループが、変換された制御語Ｙを獲得するのを無効にする（revoke）ことを可能にする。拡張された変換関数Ｆを有する変換階層の例は、図６において示される。その価数が２に等しい伝統的な鍵階層方式と異なり、根本のノードの価数は、２より著しく大きくされ得る。その結果、受信機の無効化（revocation）は、より効率的に行われることができる。単純化のために、図６の変換階層構造において、価数は２に等しい。
【００３６】
図６の例において、“Ｙ２＝（Ｚ）ＯＵＴ２”（Ｙ１とＹ３との中間の“Ｘ”によって示される。）に対する特定の受信機のアクセスを無効にするために、結果として生じるＦ２Ｂの出力空間が、シードＳ３１＊によってシードを与えられた場合に限りＦ３の入力空間に適合するように、新しいシードＳ２Ｂ１が提供され得る。ここで、Ｓ３１＊は、Ｆ２出力空間と相互に関連があるように、具体的に選択される。ここでは、Ｓ３２＊によってシードを与えられた場合に、Ｆ２Ｂの出力空間は、実用にならなくなる。無効にされた受信機があらゆるシードの更新を遮断することを防止するために、シードＳ、Ｓ２Ａ１、及びＳ２Ａ２が加えてさらに更新され得る。
【００３７】
関数Ｆ１・・・Ｆｎは、その入力データＸとシードＳとの間の異なる相関関係に依存することによって、互いに異なり得る。
【００３８】
本発明は、グローバルに変換された秘密事項Ｘが、条件付きで導出されると共に、これらのデータを各受信機に個々に供給することを必要とせずに、好ましくは比類なく変換された形式Ｙ１・・・Ｙ４で、受信機に利用可能にされることを有利に可能にする。前記秘密事項の最終の変換空間ＯＵＴ１・・・ＯＵＴ４への移動は、複数のステップにおいて行われるが（それぞれはそれら自身のシードＳｉまたはＳｉ＊を有する）、それにも拘らず、個々のステップ、シード、及び中間のデータは、分離した状態では意味を持たない。変換されたデータＹ１・・・Ｙ４が特定の受信機の状況以外で意味を持たない状態である限り（例えば、それは、Ｚを獲得することができるように、比類なく個別化された安全なチップセットの入力変換空間に適合しなければならず、それによって、安全なチップセットはコピーすることが困難である。）、他の受信機がＹ１・・・Ｙ４からＺを獲得し得ないので、このデータＹ１・・・Ｙ４を他の受信機に供給することは無意味である。これは、受信機の中でのホワイトボックス暗号文またはコード難読化に関連付けられた資源要件を最小限に維持しながら、秘密のデータＺを共有して、クローンを作ることに対する保護を提供する。受信機において、条件付き変換階層の出力変換空間ＯＵＴ１・・・ＯＵＴ４を解釈すると共に、Ｚを獲得することができるための最小限のハードウェアサポートが必要とされる。
【００３９】
シードＳｉ及びＳｉ＊は、概して、動的なデータとして供給されると共に、時間通りに循環させられ得る。秘密のデータＺに対する条件付きのアクセスを処理するために、特定のシードＳｉまたはＳｉ＊だけが、更新されて適切な受信機に供給される必要がある。これは、帯域幅の利益を提供する。
【００４０】
図６において示されるような変換階層は、概して、送信機において定義されるか、もしくは送信機において知られている。送信機は、シードＳまたはＳ＊を生成すると共に、シードを関連する受信機に送る。これによって、ＸをＹに変換するためにシードが適用される関数のレベルに応じて、特定の受信機または受信機のグループを有効にするか、または無効にするように、シードが生成される。更に、送信機は、シードＳ１の支配下にある関数Ｆ１を使用して、秘密のデータＺを、平文入力変換空間ＩＮから出力変換空間ＯＵＴに移動させる。各受信機は、概して、変換階層の事前に定義された経路に沿ってＸをＹに変換し、続いてＹからＺを導き出すように構成される。ここで、一般的に、関数の１つの経路が受信機の第１のメモリに記憶される。例えば異なる秘密のデータＺに対するアクセスを送信機が制御することを可能にするために、受け取られたシードに応じて、異なる経路に沿ってＺを獲得することができるように、受信機に記憶された複数の経路を有することが可能である。いくらかの受信機は、実装された関数Ｆｉの同じ経路を有することができ、または各受信機は、実装された関数Ｆｉの唯一の経路を有することができる。図６を参照すると、Ｙ１・・・Ｙ４は、例えば、４つの異なる受信機を対象にしているデータである。第１の受信機は、経路Ｆ２Ａ（Ｓ２Ａ１）−Ｆ２Ｂ（Ｓ２Ｂ１）−Ｆ３（Ｓ３１＊）に沿ってＸをＹ１に変換するように構成され、第２の受信機は、経路Ｆ２Ａ（Ｓ２Ａ１）−Ｆ２Ｂ（Ｓ２Ｂ１）−Ｆ３（Ｓ３２＊）に沿ってＸをＹ２に変換するように構成され、第３の受信機は、経路Ｆ２Ａ（Ｓ２Ａ２）−Ｆ２Ｂ（Ｓ２Ｂ２）−Ｆ３（Ｓ３３＊）に沿ってＸをＹ３に変換するように構成され、そして、第４の受信機は、経路Ｆ２Ａ（Ｓ２Ａ２）−Ｆ２Ｂ（Ｓ２Ｂ２）−Ｆ３（Ｓ３４＊）に沿ってＸをＹ４に変換するように構成される。秘密のデータＺは、最終的に、データＺを、最終出力変換空間ＯＵＴ１、ＯＵＴ２、ＯＵＴ３、またはＯＵＴ４から、受信機内の第２のメモリに記憶された個別のシードの支配下にある平文変換空間に移動させることにより、受信機によって獲得される。関数列が格納される第１のメモリ、及び個別化されたシードを格納するための第２のメモリは、１つのメモリモジュールまたは個別のメモリモジュールの一部分であり得る。平文変換空間において、データＺは、もはや変換されず、従って受信機により使用できる。
【００４１】
変換階層における変換関数Ｆｉの内の１つ以上は、受信機の中での変換関数のリバースエンジニアリングを阻止するために、送信機から受信機の内の１つ以上に新しい関数Ｆをアップロードすることによって、修正され得るか、または置き換えられ得る。
【００４２】
受信機において、本発明は、概して、少なくとも、部分的に、ソフトウェアとして、もしくはプログラム可能なアレイにおけるフィールドプログラマブルゲートアレイ（ＦＰＧＡ）プログラムとして実装される。その実装は、プロセッサの保護されていないメモリ、部分的に保護されたメモリ、もしくは安全なメモリに存在することができる。プロセッサは、秘密のデータＺを、入力変換空間ＩＮから出力変換空間ＯＵＴに移動させるように、メモリに記憶された関数を実行する。最小限のハードウェアサポートが受信機において必要とされる。限られた帯域幅が送信機と受信機との間で必要とされると共に、受信機から送信機にリターンパス（帰還路）は必要とされない。秘密のデータＺは、抽出されることができないか、または盗み見ることができず、従って、他の受信機に違法に分配されることができない。
【００４３】
上で説明されたように、本発明は、あらゆる種類の秘密のデータＺを、あらゆる種類のデータ送信機からあらゆる種類のデータ受信機に提供するために使用され得る。本発明の応用例は、放送ネットワークにおいて、鍵または制御語を、ヘッドエンドシステムから条件付きのアクセス受信機に、条件付きで提供することである。放送網における有料テレビアプリケーションは、コンテンツデータストリームの暗号化に依存する。条件付きのアクセス受信機は、復号化の前にストリームを解読するための関連した制御語を必要とする。
【００４４】
図７は、条件付きのアクセス受信機に実装された変換階層の経路の例を示す。受信機は、制御語ＣＷを、資格制御メッセージ（ＥＣＭ：entitlement control message）における、グローバルに変換された制御語ＣＷＤＴＰとして受け取る。受信機は、ＣＷＤを、入力変換空間Ｐから受信機の最終出力変換空間ＣＳＳＫに、３つのステップで移動させる。最後の移動ステップは、受信機に特有のクラスタ共有秘密鍵ＣＳＳＫ（cluster shared secret key）の出力変換空間における制御語ＣＷである、変換された制御語“｛ＣＷ｝ＣＳＳＫ”を生成する。図７の条件付きのアクセス受信機は、一般的な計算環境、及び安全な計算環境を含む。
【００４５】
一般的な計算環境は、ヘッドエンドシステムからＥＣＭを受け取るためのＥＣＭ配信経路を含む。一般的な計算環境は、更に、ヘッドエンドシステムから資格管理メッセージ（ＥＭＭ：entitlement management message）を受け取るためのＥＭＭ配信経路を含む。ＥＭＭは、変換階層の経路に沿って変換空間を通してＣＷを移動させるのに必要とされるシードを含む。ＥＭＭによって受け取られたシードは、一般的な計算環境のＮＶＲＡＭメモリに記憶される。第１のシードは、合成物〈Ｐ、Ｇ１〉に等しい。第２のシードは、合成物〈Ｇ１、Ｕ１〉に等しい。第３のシードは、合成物〈ＣＳＳＫ、Ｕ１〉に等しい。
【００４６】
安全な計算環境は、関数列を含む。第１の関数ＲｐＡＧ１は、ＣＷＤＴＰを、合成物〈Ｐ、Ｇ１〉をシードの入力として使用して、入力変換空間Ｐから出力変換空間Ｇ１に変換する。続いて、第２の関数ＲＧ１ＡＵ１は、ＣＷＤＴＧ１、すなわち変換空間Ｇ１におけるＣＷを、合成物〈Ｇ１、Ｕ１〉を使用して、入力変換空間Ｇ１から出力変換空間Ｕ１に変換する。続いて、第３の関数、この例ではＴＤＥＳホワイトボックス暗号化関数は、ＣＷＤＴＵ１、すなわち変換空間Ｕ１におけるＣＷを、入力変換空間Ｕ１から出力変換空間ＣＳＳＫに変換する。その結果として生じる｛ＣＷ｝ＣＳＳＫは、安全なメモリに事前に記憶されるか、または受信機によって安全に導き出せるＣＳＳＫを使用して条件付きのアクセス受信機によって解読され得るＣＳＳＫ鍵によって暗号化された、ＣＷである。
【００４７】
図８は、上述のようにシステムによって行われ得る、秘密のデータＺを、送信機から１つ以上の受信機に安全に提供するための方法のステップを示す。任意のステップは、点線によって示される。任意のステップ５において、新しい関数Ｆが、送信機から受信機に送られる。任意のステップ６において、新しい関数Ｆは、受信機のメモリ内の関数の内の１つ以上に取って代わる。ステップ１において、１つ以上のシードＳ及び／またはＳ＊が、送信機から受信機に提供される。ステップ２において、受信機は、提供されたシードの支配下にある関数列を使用して、秘密のデータＺを、入力変換空間、例えば入力変換空間ＩＮから、最終出力変換空間、例えば出力変換空間ＯＵＴ１、ＯＵＴ２、ＯＵＴ３、またはＯＵＴ４に移動させる。任意のステップ３において、個別化されたシードが、受信機において、第２のメモリから読み取られる。任意のステップ４において、受信機は、秘密のデータを最終出力変換空間から個別化されたシードの支配下にある平文変換空間に移動させることによって、秘密のデータＺを獲得する。
【００４８】
図９は、上述のように送信機によって行われ得る、秘密のデータＺを、送信機から１つ以上の受信機に安全に提供するための方法のステップを示す。ステップ１０において、送信機が、関数の階層を定義すると共に、ここで、各関数Ｆは、シードＳまたはＳ＊の支配下にある数学的変換を使用して、秘密のデータＺを、入力変換空間、例えば入力変換空間ＩＮから、出力変換空間、例えば出力変換空間ＯＵＴに移動させるように構成される。ステップ１１において、１つ以上のシードＳ及び／またはＳ＊が、受信機に提供される。
【００４９】
図１０は、上述のように受信機によって行われ得る、秘密のデータＺを、送信機から１つ以上の受信機に安全に提供するための方法のステップを示す。ステップ２０において、１つ以上のシードＳ及び／またはＳ＊が、送信機から受け取られる。ステップ２１において、シードＳ及び／またはＳ＊の支配下にある関数列を使用して、秘密のデータＺが、入力変換空間、例えば入力変換空間ＩＮから、最終出力変換空間、例えば出力変換空間ＯＵＴ１、ＯＵＴ２、ＯＵＴ３、またはＯＵＴ４に移動させられる。
【００５０】
変換関数及び暗号化の概念は、概して、図１１を参照して明瞭にされる。
【００５１】
変換されていないデータ空間に複数のデータ要素を有する入力領域ＩＤが存在すると仮定する。ある鍵を使用する暗号化関数Ｅは、出力領域ＯＤにおける対応する暗号化されたデータ要素を供給するために、入力領域ＩＤのデータ要素を入力として受け入れるように構成される、と定義される。入力領域ＩＤのオリジナルのデータ要素は、暗号解読関数Ｄを出力領域ＯＤのデータ要素に適用することによって、獲得され得る。
【００５２】
安全でない環境において、実装において埋め込まれる（鍵のような）機密情報を発見するために、敵は、入力データ要素及び出力データ要素、そして暗号化関数Ｅの実装の動作を制御することができるとみなされる。
【００５３】
追加の安全性が、入力領域ＩＤ及び出力領域ＯＤに変換関数を適用することによって、すなわち変換関数が入力動作及び出力動作になることによって、そのような安全でない環境において獲得され得る。変換関数Ｔ１は、入力領域ＩＤが提供するデータ要素を、変換されたデータ空間の変換された入力領域ＩＤ’の変換されたデータ要素に割り当てる。同様に、変換関数Ｔ２は、出力領域ＯＤが提供するデータ要素を、変換された出力領域ＯＤ’に割り当てる。変換された暗号化関数及び暗号解読関数Ｅ’及びＤ’が、ここで、変換された鍵を使用して、ＩＤ’とＯＤ’との間で定義され得る。Ｔ１及びＴ２は、全単射である。
【００５４】
出力領域ＯＤの暗号化されたデータ要素を獲得するために入力領域ＩＤのデータ要素を暗号化関数Ｅに入力する代わりに、暗号化技術と共に変換関数Ｔ１、Ｔ２を使用することは、変換関数Ｔ１を適用することによって、領域ＩＤ’の変換されたデータ要素が変換された暗号化関数Ｅ’に入力されることを意味する。変換された暗号化関数Ｅ’は、鍵のような機密情報を保護するために、暗号化動作において、逆変換関数Ｔ１−１及び／またはＴ２−１を結合する。その場合に、領域ＯＤ’の変換された暗号化されたデータ要素が獲得される。保護された部分においてＴ１及び／またはＴ２を実行することによって、暗号化関数Ｅまたは暗号解読関数Ｄのための鍵は、変換されたデータ空間における入力データ及び出力データを分析する場合、Ｅ’及び／またはＤ’のホワイトボックスの実装を分析する場合、のいずれにおいても、取り出されることができない。
【００５５】
変換関数Ｔ１、Ｔ２の内の１つは、非自明な（nontrivial）関数であるべきである。もしＴ１が非自明な関数である場合には、入力領域ＩＤ及びＩＤ’は、同じ領域である。もしＴ２が非自明な関数である場合には、出力領域ＯＤ及びＯＤ’は、同じ領域である。
【図１】
2010206796.tif 000003
【図２】
2010206796.tif 000004
【図３】
2010206796.tif 000005
【図４】
2010206796.tif 000006
【図５】
2010206796.tif 000007
【図６】
2010206796.tif 000008
【図７】
2010206796.tif 000009
【図８】
2010206796.tif 000010
【図９】
2010206796.tif 000011
【図１０】
2010206796.tif 000012
【図１１】
2010206796.tif 000013
【外国語明細書】
2010206796.tif 000014
2010206796.tif 000015
2010206796.tif 000016
2010206796.tif 000017
2010206796.tif 000018
2010206796.tif 000019
2010206796.tif 000020
2010206796.tif 000021
2010206796.tif 000022
2010206796.tif 000023
2010206796.tif 000024
2010206796.tif 000025
2010206796.tif 000026
2010206796.tif 000027
2010206796.tif 000028
2010206796.tif 000029
2010206796.tif 000030
2010206796.tif 000031
2010206796.tif 000032
2010206796.tif 000033
2010206796.tif 000034
2010206796.tif 000035
2010206796.tif 000036
2010206796.tif 000037
2010206796.tif 000038
2010206796.tif 000039