(57)【要約】      （修正有）【課題】プログラマブルロジックデバイスのコンフィグレーションプログラムのセキュリティを高める。【解決手段】プログラマブルロジックデバイス１００は、第１の秘密鍵を保存するレジスタ１１０を有するハードウェア復号プロセッサ１０４を備える。不揮発性メモリ１０２は、第１の秘密鍵により暗号化されたコンフィグレーションプログラムを保存する。ハードウェア復号プロセッサ１０４は、電力が投入されると、暗号化されたコンフィグレーションプログラムを復号し、論理素子のプログラマブルアレイ１０８を構成する。プログラマブルアレイ１０８は、第１の秘密鍵を用いてコンフィグレーションプログラムを復号し、第２の秘密鍵を生成し、コンフィグレーションプログラムを適応化する。構成されたプログラマブルアレイ１０８は、第１の秘密鍵を用いて、適応化されたコンフィグレーションプログラムを再暗号化し、元のプログラムを置換する。【選択図】図４
2006295916.tif 000002
【特許請求の範囲】
【請求項１】
コンフィグレーションプログラムがロードされ、該コンフィグレーションプログラムによる論理素子のコンフィグレーションに基づく処理を実行する揮発性論理素子のプログラマブルアレイと、
第１の秘密コンフィグレーション鍵を保存するレジスタを有するハードウェア復号プロセッサと、
上記第１の秘密コンフィグレーション鍵によって暗号化され、該第１の秘密コンフィグレーション鍵を含むコンフィグレーションプログラムを保存する不揮発性メモリとを備え、
上記ハードウェア復号プロセッサは、プログラマブルロジックデバイスに電力が投入されると、
上記暗号化されたコンフィグレーションプログラムを読み出し、
上記レジスタに保存された第１の秘密コンフィグレーション鍵を用いて上記暗号化されたコンフィグレーションプログラムを復号し、
上記コンフィグレーションプログラムにより論理素子のプログラマブルアレイを構成し、
上記プログラマブルアレイは、上記コンフィグレーションプログラムにより構成されると、
上記不揮発性メモリから暗号化されたコンフィグレーションプログラムを読み出し、
上記コンフィグレーションプログラムによって提供された第１の秘密コンフィグレーション鍵を用いて上記コンフィグレーションプログラムを復号し、
第２の秘密鍵を生成し、
上記第２の秘密鍵を上記コンフィグレーションプログラムに挿入することによって該コンフィグレーションプログラムを適応化し、
上記第１の秘密コンフィグレーション鍵を用いて、上記適応化されたコンフィグレーションプログラムを再暗号化し、
上記メモリ内のコンフィグレーションプログラムを上記適応化され暗号化されたコンフィグレーションプログラムに置換することを特徴とするプログラマブルロジックデバイス。
【請求項２】
上記第２の秘密鍵は、プライベートな鍵であり、上記構成されたプログラマブルアレイは、第３の公開鍵を生成し、上記第２の秘密鍵及び第３の公開鍵は、非対称暗号／復号を実行するための公開鍵／秘密鍵対を構成することを特徴とする請求項１記載のプログラマブルロジックデバイス。
【請求項３】
上記第２の秘密鍵は、対称暗号化処理に用いるためのプライベートな鍵であることを特徴とする請求項１記載のプログラマブルロジックデバイス。
【請求項４】
上記第１の秘密コンフィグレーション鍵は、前初期化処理段において生成され、該前初期化処理段において、該第１の秘密コンフィグレーション鍵は、ハードウェア復号プロセッサのレジスタにロードされ、上記第１の秘密コンフィグレーション鍵により暗号化されたコンフィグレーションプログラムは、不揮発性メモリにロードされることを特徴とする請求項１記載のプログラマブルロジックデバイス。
【請求項５】
上記コンフィグレーションプログラムは、第４の更新鍵を有し、上記プログラマブルアレイは、上記コンフィグレーションプログラムにより構成されると、
上記第４の更新鍵により暗号化された更新コンフィグレーションプログラムを受け取り、
上記第４の更新鍵により上記更新コンフィグレーションプログラムを復号し、
上記更新コンフィグレーションプログラムを適応化し、上記第２の秘密鍵を該適応化されたコンフィグレーションプログラムに保存することを特徴とする請求項１記載のプログラマブルロジックデバイス。
【請求項６】
上記プログラマブルアレイは、上記コンフィグレーションプログラムにより構成されると、
上記第１の秘密コンフィグレーション鍵により上記適応化されたコンフィグレーションプログラムを暗号化し、
上記暗号化され、適応化されたコンフィグレーションプログラムを上記不揮発性メモリに保存することを特徴とする請求項５記載のプログラマブルロジックデバイス。
【請求項７】
上記更新コンフィグレーションプログラムは、第５の更新鍵を含み、上記プログラマブルアレイは、上記適応化された更新コンフィグレーションプログラムにより構成されると、
上記第５の更新鍵を用いて、該第５の更新鍵により暗号化された後続する更新プログラムを復号することを特徴とする請求項５記載のプログラマブルロジックデバイス。
【請求項８】
第２の不揮発性メモリを備え、上記プログラマブルアレイは、上記コンフィグレーションプログラムにより構成されると、
非対称暗号方式における公開鍵／秘密鍵対を構成する第６の秘密鍵及び第７の公開鍵を生成し、
対称暗号方式を用いて、第２の秘密鍵により上記第６の秘密鍵及び第７の公開鍵を暗号化し、
上記第６の暗号化された秘密鍵及び第７の公開鍵対を上記第２の不揮発性メモリ保存することを特徴とする請求項３記載のプログラマブルロジックデバイス。
【請求項９】
暗号化コンテンツデータを受け取り、復号する受信機において、当該受信機は、コンテンツ復号エンジン及びコンテンツ鍵復号エンジンを備え、
該コンテンツ鍵復号エンジンは、請求項１記載のプログラマブルロジックデバイスを備え、
上記プログラマブルロジックデバイスは、揮発性論理素子のプログラマブルアレイと、不揮発性メモリに接続されたハードウェア復号プロセッサと、第１の秘密コンフィグレーション鍵を保存するレジスタとを備え、
上記ハードウェア復号プロセッサは、該プログラマブルロジックデバイスに電力が投入されると、
上記レジスタに保存されている第１の秘密コンフィグレーション鍵を用いて上記不揮発性メモリに保存されている暗号化されたコンフィグレーションプログラムを復号し、
上記コンフィグレーションプログラムにより、上記論理素子のプログラマブルアレイを構成し、
上記論理素子のプログラマブルアレイは、上記コンフィグレーションプログラムにより構成されると、
公開鍵／秘密鍵対を形成する第２の秘密鍵及び第３の公開鍵を提供し、
上記暗号化コンテンツが提供する上記第３の公開鍵により暗号化された暗号化コンテンツ鍵を受け取り、
上記コンフィグレーションプログラムにより提供される第２の秘密鍵を用いてコンテンツ鍵を復号し、上記コンテンツ復号エンジンは、コンテンツ鍵を用いて暗号化コンテンツを復号することを特徴とする受信機。
【請求項１０】
コンテンツデータを暗号化して送信する送信機において、
コンテンツ鍵によりコンテンツデータを暗号化するコンテンツ暗号化エンジンと、
プログラマブルロジックデバイスにより提供される公開鍵によりコンテンツ鍵を暗号化するコンテンツ鍵暗号化エンジンとを備え、
上記プログラマブルロジックデバイスは、
コンフィグレーションプログラムをロードすると、該コンフィグレーションプログラムによる論理素子のコンフィグレーションに基づく処理を実行する揮発性論理素子のプログラマブルアレイと、
第１の秘密コンフィグレーション鍵を保存するレジスタを有するハードウェア復号プロセッサと、
上記第１の秘密コンフィグレーション鍵により暗号化された、該第１の秘密コンフィグレーション鍵を含むコンフィグレーションプログラムを保存する不揮発性メモリとを備え、
上記ハードウェア復号プロセッサは、上記プログラマブルロジックデバイスに電力が投入されると、
上記暗号化されたコンフィグレーションプログラムを読み出し、
上記レジスタに保存された第１の秘密コンフィグレーション鍵を用いて、上記暗号化されたコンフィグレーションプログラムを復号し、
上記コンフィグレーションプログラムにより上記論理素子のプログラマブルアレイを構成し、
上記プログラマブルアレイは、上記コンフィグレーションプログラムにより構成されて、
上記不揮発性メモリから暗号化されたコンフィグレーションプログラムを読み出し、
上記コンフィグレーションプログラムが提供する第１の秘密コンフィグレーション鍵を用いて該コンフィグレーションプログラムを復号し、
第２の秘密鍵を生成し、
上記コンフィグレーションプログラムに上記第２の秘密鍵を挿入することによって該コンフィグレーションプログラムを適応化し、
上記第１の秘密コンフィグレーション鍵を用いて、上記適応化されたコンフィグレーションプログラムを再暗号化し、
上記不揮発性メモリにおいて、上記適応化及び暗号化されたコンフィグレーションプログラムによりコンフィグレーションプログラムを置換することを特徴とする送信機。
【請求項１１】
揮発性論理素子のプログラマブルアレイと、第１の秘密コンフィグレーション鍵を保存するレジスタを有するハードウェア復号プロセッサと、該第１の秘密コンフィグレーション鍵によって暗号化され、該第１の秘密コンフィグレーション鍵を含むコンフィグレーションプログラムを保存する不揮発性メモリとを備えるプログラマブルロジックデバイスをプログラミングするプログラミング方法において、
上記コンフィグレーションプログラムに上記第１の秘密コンフィグレーション鍵を提供するステップと、
上記不揮発性メモリから上記暗号化されたコンフィグレーションプログラムを読み出すステップと、
上記レジスタに保存された第１の秘密コンフィグレーション鍵を用いて上記暗号化されたコンフィグレーションプログラムを復号するステップと、
上記コンフィグレーションプログラムにより上記論理素子のプログラマブルアレイを構成するステップとを有し、
上記論理素子のプログラマブルアレイは、上記コンフィグレーションプログラムにより構成されると、
上記不揮発性メモリから暗号化されたコンフィグレーションプログラムを読み出すステップと、
上記コンフィグレーションプログラムによって提供された第１の秘密コンフィグレーション鍵を用いて上記コンフィグレーションプログラムを復号するステップと、
第２の秘密鍵を生成するステップと、
上記第２の秘密鍵を上記コンフィグレーションプログラムに挿入することによって該コンフィグレーションプログラムを適応化するステップと、
上記第１の秘密コンフィグレーション鍵を用いて、上記適応化されたコンフィグレーションプログラムを再暗号化するステップと、
上記メモリ内のコンフィグレーションプログラムを上記適応化され暗号化されたコンフィグレーションプログラムに置換するステップとを有するプログラミング方法。
【請求項１２】
プログラマブルロジックデバイスの論理素子のアレイをプログラミングするコンフィグレーションプログラムにおいて、
上記プログラマブルロジックデバイスは、
当該コンフィグレーションプログラムをロードされると、該コンフィグレーションプログラムによる論理素子のコンフィグレーションに基づく処理を実行する揮発性論理素子のプログラマブルアレイと、
第１の秘密コンフィグレーション鍵を保存するレジスタを有するハードウェア復号プロセッサと、該第１の秘密コンフィグレーション鍵により暗号化された、該第１の秘密コンフィグレーション鍵を含むコンフィグレーションプログラムを保存する不揮発性メモリとを備えることを特徴とするコンフィグレーションプログラム。
【請求項１３】
上記プログラマブルロジックデバイスは、当該コンフィグレーションプログラムが保存される不揮発性メモリを含み、
当該コンフィグレーションプログラムは、論理素子のプログラマブルアレイにロードされると、
上記不揮発性メモリから暗号化されたコンフィグレーションプログラムを読み出し、
上記コンフィグレーションプログラムによって提供された第１の秘密コンフィグレーション鍵を用いて上記コンフィグレーションプログラムを復号し、
第２の秘密鍵を生成し、
上記第２の秘密鍵を上記コンフィグレーションプログラムに挿入することによって該コンフィグレーションプログラムを適応化し、
上記第１の秘密コンフィグレーション鍵を用いて、上記適応化されたコンフィグレーションプログラムを再暗号化し、
上記不揮発性メモリ内のコンフィグレーションプログラムを上記適応化され暗号化されたコンフィグレーションプログラムに置換することを特徴とする請求項１２記載のコンフィグレーションプログラム。
【請求項１４】
請求項１２記載のコンフィグレーションプログラムを搬送するデータ担体。
【請求項１５】
プログラマブルロジックデバイスと共に用いるよう構成された製造ジグにおいて、
上記プログラマブルロジックデバイスは、
コンフィグレーションプログラムがロードされ、該コンフィグレーションプログラムによる論理素子のコンフィグレーションに基づく処理を実行する揮発性論理素子のプログラマブルアレイと、
第１の秘密コンフィグレーション鍵を保存するレジスタを有するハードウェア復号プロセッサと、該第１の秘密コンフィグレーション鍵によって暗号化され、該第１の秘密コンフィグレーション鍵を含むコンフィグレーションプログラムを保存する不揮発性メモリとを備え、
上記ハードウェア復号プロセッサは、上記プログラマブルロジックデバイスに電力が投入されると、
上記暗号化されたコンフィグレーションプログラムを読み出し、
上記レジスタに保存された第１の秘密コンフィグレーション鍵を用いて上記暗号化されたコンフィグレーションプログラムを復号し、
上記コンフィグレーションプログラムにより論理素子のプログラマブルアレイを構成し、
上記プログラマブルアレイは、上記コンフィグレーションプログラムにより構成されると、
上記不揮発性メモリから暗号化されたコンフィグレーションプログラムを読み出し、
上記コンフィグレーションプログラムによって提供された第１の秘密コンフィグレーション鍵を用いて上記コンフィグレーションプログラムを復号し、
第２の秘密鍵を生成し、
上記第２の秘密鍵を上記コンフィグレーションプログラムに挿入することによって該コンフィグレーションプログラムを適応化し、
上記第１の秘密コンフィグレーション鍵を用いて、上記適応化されたコンフィグレーションプログラムを再暗号化し、
上記不揮発性メモリ内のコンフィグレーションプログラムを上記適応化され暗号化されたコンフィグレーションプログラムに置換し、
当該製造ジグは、使用時に、
第１の秘密コンフィグレーション鍵を生成し、
上記第１の秘密コンフィグレーション鍵によりコンフィグレーションプログラムを暗号化し、
上記プログラマブルロジックデバイスの不揮発性メモリに上記暗号化されたコンフィグレーションプログラムをロードし、
上記プログラマブルロジックデバイスのレジスタに上記第１の秘密コンフィグレーション鍵をロードすることを特徴とする製造ジグ。
【請求項１６】
揮発性論理素子のプログラマブルアレイと、第１の秘密コンフィグレーション鍵を保存するレジスタを有するハードウェア復号プロセッサと、該第１の秘密コンフィグレーション鍵によって暗号化され、該第１の秘密コンフィグレーション鍵を含むコンフィグレーションプログラムを保存する不揮発性メモリとを備えるプログラマブルロジックデバイスをプログラミングするプログラミング装置において、
上記コンフィグレーションプログラムに上記第１の秘密コンフィグレーション鍵を提供する提供手段と、
上記不揮発性メモリから上記暗号化されたコンフィグレーションプログラムを読み出す読出手段と、
上記レジスタに保存された第１の秘密コンフィグレーション鍵を用いて上記暗号化されたコンフィグレーションプログラムを復号する復号手段と、
上記コンフィグレーションプログラムにより論理素子のプログラマブルアレイを構成する構成手段とを備え、
上記プログラマブルアレイは、上記コンフィグレーションプログラムにより構成されると、
上記不揮発性メモリから暗号化されたコンフィグレーションプログラムを読み出す読出手段と、
上記コンフィグレーションプログラムによって提供された第１の秘密コンフィグレーション鍵を用いて上記コンフィグレーションプログラムを復号する復号手段と、
第２の秘密鍵を生成する生成手段と、
上記第２の秘密鍵を上記コンフィグレーションプログラムに挿入することによって該コンフィグレーションプログラムを適応化する適応化手段と、
上記第１の秘密コンフィグレーション鍵を用いて、上記適応化されたコンフィグレーションプログラムを再暗号化する再暗号化手段と、
上記メモリ内のコンフィグレーションプログラムを上記適応化され暗号化されたコンフィグレーションプログラムに置換する置換手段とを備えることを特徴とするプログラミング装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンフィグレーションプログラムにより構成されると、コンフィグレーションプログラムによる論理素子のコンフィグレーションに基づく処理を実行する揮発性論理素子のプログラマブルアレイを備えるプログラマブルロジックデバイスに関する。
【背景技術】
【０００２】
秘密鍵（secret key）を用いてコンテンツを暗号化した後、公開鍵／秘密鍵（public key/private key）対の公開鍵を用いて秘密鍵（secret key）を暗号化してコンテンツを配信する手法が知られている。コンテンツは、秘密鍵（secret key）を用いて暗号化され、この手法は、暗号化及び復号が相互的な処理の一部として、同様の処理に基づいて実行されるため、対称暗号化と呼ばれる。プライベートな秘密鍵（private secret key）を用いる対称暗号化及び復号は、暗号化又は復号処理を実現するために必要な演算が比較的簡単である。一方、例えば、リベスト−シャミア−エーデルマン（Rivest-Shamir-Adleman：ＲＳＡ）アルゴリズムを用いた公開鍵／秘密鍵対を用いる非対称暗号方式は、演算がより複雑であるが、安全性が高い。かなりのデータ量を有するコンテンツデータの場合、暗号化に必要な演算量が多くなるため、コンテンツデータについては、非対称暗号方式に基づく公開鍵／秘密鍵対を用いる非対称暗号方式は用いられていない。このため、コンテンツ配信のための周知の装置では、コンテンツデータは、プライベートな秘密鍵で暗号化される。コンテンツを暗号化するために用いられるプライベートな秘密鍵は、コンテンツ鍵と呼ばれる。コンテンツ鍵は、公開鍵／秘密鍵対の公開鍵によって暗号化され、暗号化コンテンツと共に配信される。したがって、公開鍵に対応する秘密鍵（private key）をコンテンツの受信機に提供することによって、受信機は、コンテンツ鍵を復号することができ、このコンテンツ鍵を用いてコンテンツを復号することによって、コンテンツを再生することができる。例えば、このような構成を用いて、テレビジョン番組をセットトップボックスに放送する手法が知られており、この場合、コンテンツ鍵を復号するための公開鍵／秘密鍵対の秘密鍵（private key）をスマートカードに提供する。
【０００３】
フィールドプログラマブルゲートアレイ（field programmable gate array：ＦＰＧＡ）は、フィールドプログラマブルゲートアレイを暗号化及び／又は復号プロセッサに構成するコンフィグレーションプログラムを提供することによって暗号化又は復号プロセッサを形成するために用いることができるプログラマブルロジックデバイスの具体例である。安全性のために、ＦＰＧＡには、暗号化された形式でコンフィグレーションプログラムを提供しなければならない。これは、攻撃者がコンフィグレーションプログラムを再生できたとしたら、暗号化／復号するために暗号化／復号アルゴリズム及び／又は秘密鍵（private keys）を特定することができてしまうためである。更に、暗号鍵も安全に提供する必要がある。このため、ザイリンクス社（Ｘｉｌｉｎｘ：www.xilinx.com）（ＲＴＭ）を始めとするＦＰＧＡの幾つかの製造業者は、ＦＰＧＡの一部として、不揮発性メモリに保存されるコンフィグレーションプログラムを復号するオンチップハードウェア復号プロセッサを有するＦＰＧＡを提供する。ＦＰＧＡに電力が投入されると、コンフィグレーションプログラムは、まず、第１の秘密コンフィグレーション鍵を用いて、ハードウェア復号プロセッサにより復号され、復号ハードウェアのレジスタに保存される。復号ハードウェアは、更に、復号アルゴリズム及び秘密コンフィグレーション鍵を解読する試みを妨げるためのハードウェア保護機能を有する。このようにしてコンフィグレーションプログラムを暗号化でき、これにより、ＦＰＧＡの機能を提供するコンフィグレーションプログラムに関連する知的所有権を保護できる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明の目的は、コンフィグレーションプログラムが不揮発性メモリからロードされるプログラマブルロジックデバイスのセキュリティを高めることである。更に、本発明の目的は、プログラマブルロジックデバイスのコンフィグレーションプログラムのセキュリティを高めることである。
【課題を解決するための手段】
【０００５】
本発明に係るプログラマブルロジックデバイスは、コンフィグレーションプログラムがロードされ、コンフィグレーションプログラムによる論理素子のコンフィグレーションに基づく処理を実行する揮発性論理素子のプログラマブルアレイを備える。更に、プログラマブルロジックデバイスは、第１の秘密コンフィグレーション鍵を保存するレジスタを有するハードウェア復号プロセッサを備える。不揮発性メモリは、第１の秘密コンフィグレーション鍵により暗号化されたコンフィグレーションプログラムを保存する。コンフィグレーションプログラムは、第１の秘密コンフィグレーション鍵を含む。ハードウェア復号プロセッサは、プログラマブルロジックデバイスに電力が投入されると、暗号化されたコンフィグレーションプログラムを読み出し、レジスタに保存された第１の秘密コンフィグレーション鍵を用いて暗号化されたコンフィグレーションプログラムを復号し、コンフィグレーションプログラムにより論理素子のプログラマブルアレイを構成する。プログラマブルアレイは、コンフィグレーションプログラムにより構成されると、不揮発性メモリから暗号化されたコンフィグレーションプログラムを読み出し、コンフィグレーションプログラムによって提供された第１の秘密コンフィグレーション鍵を用いてコンフィグレーションプログラムを復号し、第２の秘密鍵を生成し、第２の秘密鍵をコンフィグレーションプログラムに挿入することによってコンフィグレーションプログラムを適応化する。構成されたプログラマブルアレイは、第１の秘密コンフィグレーション鍵を用いて、適応化されたコンフィグレーションプログラムを再暗号化し、メモリ内のコンフィグレーションプログラムを適応化され暗号化されたコンフィグレーションプログラムに置換する。
【０００６】
本発明の実施形態では、コンフィグレーションプログラムをプログラマブルロジックデバイスにロードし、ロジカルデバイスを、暗号化コンテンツを暗号化／復号する暗号化及び／又は復号プロセッサとして構成する。
【０００７】
本発明の実施形態では、プログラマブルロジックデバイスの不揮発性メモリに暗号化されたコンフィグレーションプログラムを供給する。コンフィグレーションプログラムは、コンフィグレーションプログラムの一部としてコンフィグレーションプログラムを暗号化する第１の秘密コンフィグレーション鍵を含む。ハードウェア復号プロセッサは、電力が投入されると、ハードウェア復号エンジンのレジスタに保存されている第１の秘密コンフィグレーション鍵を用いて、暗号化されたコンフィグレーションプログラムを復号し、コンフィグレーションプログラムを用いてプログラマブルアレイを構成する。コンフィグレーションプログラムは、プログラマブルアレイを構成して復号エンジンを提供し、復号エンジンは、プログラマブルロジックデバイスの製造業者が提供するハードウェアの復号エンジンと同じ機能を実行し、この復号エンジンは、ハードウェアの復号エンジンが実行する復号処理と同じ復号処理を実行できる。そして、構成されたプログラマブルアレイは、暗号化されたコンフィグレーションプログラムファイルを不揮発性メモリから再び読み出し、コンフィグレーションプログラムのハードウェア復号プロセッサによって復号されたバージョンにより提供される第１の秘密コンフィグレーション鍵を用いて暗号化されたコンフィグレーションプログラムを復号する。構成されたプログラマブルアレイは、自ら秘密鍵（secret key）を生成する。そして、構成されたプログラマブルアレイは、コンフィグレーションプログラムに秘密鍵を挿入し、適応化されたコンフィグレーションプログラムを形成する。そして、構成されたプログラマブルアレイは、暗号化エンジンを形成し、この暗号化エンジンは、第１の秘密コンフィグレーション鍵を用いて適応化されたコンフィグレーションプログラムを暗号化し、不揮発性メモリにおいて、暗号化されたコンフィグレーションプログラムを上書きする。これにより、プログラマブルロジックデバイスは、事実上、そのデバイスだけに既知である秘密鍵を生成する。このように、秘密鍵は、コンフィグレーション鍵を用いて暗号化される前にコンフィグレーションプログラムに加えられる。この結果、秘密鍵は、プログラマブルロジックデバイスの外部にとっては未知となり、また、第１の秘密コンフィグレーション鍵により保護されるので、不揮発性メモリに安全に保存される。
【０００８】
一具体例においては、秘密鍵（secret key）は、例えば、ＲＳＡアルゴリズム等の非対称暗号方式を用いてデータを暗号化するための公開鍵／秘密鍵（public key/private key）対の秘密鍵（private key）である。他の具体例では、秘密鍵（secret key）は、対称暗号化処理に用いるプライベートな秘密鍵（private key）である。秘密鍵が対称暗号方式におけるプライベートな秘密鍵である場合、この鍵の長さは、通常、非対称暗号方式における秘密鍵（private key）の長さより短い。例えば、非対称暗号方式における秘密鍵（private key）は、２０４８ビットであり、対称暗号方式におけるプライベートな秘密鍵（private key）は、１２８ビットである。このように、対称暗号方式におけるプライベートな秘密鍵は（private key）、必要とする記憶容量が小さく、不揮発性メモリに容易に保存できるため、幾つかのアプリケーションでは、対称暗号方式におけるプライベートな秘密鍵（private key）を用いることが有利である場合がある。他の具体例では、秘密鍵（private key）を用いて非対称暗号方式における公開鍵／秘密鍵対を暗号化し、この暗号化された鍵対を第２の不揮発性メモリに保存してもよい。これにより、非対称暗号方式における秘密鍵（private key）は、コンフィグレーションプログラムと同じ不揮発性メモリには保存されず、第１の不揮発性メモリの記憶容量が限られていることに関する問題を回避できる。
【０００９】
以上のように、本発明の実施形態は、安全性を向上させ、攻撃者が秘密鍵を発見し、配信側の意図に反してコンテンツを再生する可能性を低減できる、プログラマブルロジックデバイスを用いて構成できる暗号化／復号プロセッサを提供する。
【００１０】
本発明の様々な更なる側面及び特徴は、特許請求の範囲で定義されており、この側面には、受信機、送信機、コンフィグレーションプログラム及びプログラマブルロジックデバイスのプログラミング方法が含まれる。
【発明を実施するための最良の形態】
【００１１】
図１は、テレビジョン番組を暗号化し、ヘッドエンドからユーザのセットトップボックスに配信し、ユーザが視聴できるように復号する具体的な配信構成例を示している。なお、これは、本発明に基づいて構成される暗号化／復号プロセッサの１つの具体的な適用例に過ぎないことは明らかである。したがって、他の構成として、例えば、オーディオ信号、テキストデータ又は他のあらゆる種類の情報を含む異なる形式のコンテンツを用いることができる。
【００１２】
図１に示す構成では、ヘッドエンド２は、ユーザが視聴するためのテレビジョン受信機１４に接続されたＮ個のセットトップボックス６、８、１０、１２のそれぞれに、暗号化されたビデオコンテンツ４を送信する。
【００１３】
既知の構成では、ビデオコンテンツは、まず、各チャンネルＵ１、Ｕ２、Ｕ３、Ｕ４、ＵＮを介して各ユーザが受信する暗号化されたビデオコンテンツの各バージョンに共通であるコンテンツ鍵と呼ばれる秘密鍵を用いて暗号化される。上述のように、秘密鍵暗号化は、公開鍵暗号化に比べて演算が簡単であるので、対称暗号化処理に使用される。これにより、ビデオコンテンツ４を表現する比較的大量のデータを暗号化するために必要な処理の量は、公開鍵暗号化を実行するために必要な処理の量に比べて、実質的に低減される。なお、各セットトップボックス６、８、１０、１２は、ビデオコンテンツを復号するためにコンテンツ鍵を受け取らなければならない。通常、コンテンツ鍵Ｋｃｏｎｔｅｎｔは、配信システムのセキュリティを維持するために、定期的に変更される。
【００１４】
各セットトップボックス６、８、１０、１２にコンテンツ鍵Ｋｃｏｎｔｅｎｔを配信するために、コンテンツ鍵Ｋｃｏｎｔｅｎｔは、各ユーザＵ１、Ｕ２、Ｕ３、Ｕ４、Ｕｎに関連付けられた公開鍵／秘密鍵対の公開鍵によって暗号化される。各ユーザには、そのユーザに固有に関連付けられたスマートカードを介して、対応する秘密鍵が提供される。使用時における動作では、コンテンツ鍵Ｋｃｏｎｔｅｎｔは、公開鍵のそれぞれによって暗号化され、暗号化されたビデオコンテンツと共にセットトップボックスに送信される。これにより、各セットトップボックスは、公開鍵に対応するそのユーザの秘密鍵を用いて、コンテンツ鍵Ｋｃｏｎｔｅｎｔを復号することができる。これにより、ユーザのセットトップボックスは、コンテンツ鍵Ｋｃｏｎｔｅｎｔを復号した後、そのコンテンツ鍵Ｋｃｏｎｔｅｎｔを用いてビデオコンテンツを復号することにより、ビデオコンテンツを再生することができる。
【００１５】
図２に、例えば、図１の具体例に示す暗号化コンテンツを配信するシステムを実現する暗号化プロセッサ及び復号プロセッサを示す。図２に示す具体例では、暗号化プロセッサ２０は、暗号化エンジン２４により、チャンネル２２を介してビデオコンテンツを受け取る。また、暗号化エンジン２４は、第２のチャンネル２６を介して、秘密コンテンツ鍵Ｋｃｏｎｔｅｎｔを受け取る。秘密コンテンツ鍵Ｋｃｏｎｔｅｎｔは、別に生成してもよく、又は暗号化プロセッサ２０内で生成してもよい。暗号化エンジン２４は、対称秘密鍵暗号化処理に基づき、秘密コンテンツ鍵Ｋｃｏｎｔｅｎｔを用いてビデオコンテンツを暗号化し、暗号化されたビデオコンテンツをマルチプレクサ２８に送る。また、秘密コンテンツ鍵Ｋｃｏｎｔｅｎｔは、コンテンツ鍵暗号化エンジン３０にも供給される。コンテンツ鍵暗号化エンジン３０は、公開鍵暗号化を実行し、入力チャンネル３２を介して公開鍵ＫＰＵを受け取り、コンテンツ鍵Ｋｃｏｎｔｅｎｔを暗号化し、公開鍵暗号化に基づき、公開鍵ＫＰＵを用いて暗号化された暗号化コンテンツ鍵Ｅ｛ＫＰＵ（Ｋｃｏｎｔｅｎｔ）｝を出力チャンネル３４を介して出力する。そして、マルチプレクサ２８は、暗号化されたビデオコンテンツと暗号化コンテンツ鍵とを多重化し、暗号化されたビデオコンテンツ及び暗号化コンテンツ鍵を含むビットストリームを暗号化プロセッサの出力チャンネル３６から出力する。
【００１６】
図３に、例えば、図１に示すシステムのセットトップボックスの一部を構成する復号プロセッサ３８の構成を示す。図３に示す具体例では、暗号化されたビデオコンテンツ及び暗号化コンテンツ鍵を含むビットストリームは、入力チャンネル４０を介して、デマルチプレクサ４２に供給される。デマルチプレクサ４２は、暗号化されたビデオコンテンツ及び暗号化コンテンツ鍵を２つのチャンネル４４、４６に分離する。公開鍵ＫＰＵによって暗号化されたコンテンツ鍵Ｋｃｏｎｔｅｎｔは、第１のチャンネル４４を介して、第１の復号エンジン４８に供給される。第１の復号エンジン４８は、公開鍵ＫＰＵ対応する秘密鍵ＫＰＲを用いてコンテンツ鍵Ｋｃｏｎｔｅｎｔを復号し、出力チャンネル５０からコンテンツ鍵Ｋｃｏｎｔｅｎｔを出力する。コンテンツ鍵Ｋｃｏｎｔｅｎｔは、出力チャンネル５０を介して、ビデオコンテンツを復号するための第２の復号エンジン５２に供給される。暗号化されたビデオコンテンツは、接続チャンネル４６を介して、第２の復号エンジン５２に供給され、第２の復号エンジン５２は、コンテンツ鍵Ｋｃｏｎｔｅｎｔを用いて、暗号化されたビデオを復号し、出力チャンネル５４から復号されたビデオストリームを出力する。
【００１７】
本発明に基づくプログラマブルロジックデバイスは、暗号化プロセッサ２０内及び復号プロセッサ３８内のそれぞれに、第１の復号エンジン４８及び暗号化エンジン２４の一方又は両方を形成するように構成される。暗号化プロセッサ２０及び復号プロセッサ３８は、潜在的に攻撃の被害を受け易い部分である。悪意あるユーザは、復号プロセッサ３８を攻撃し、秘密鍵ＫＰＲを解読することを試み、これにより、コンテンツ鍵Ｋｃｏｎｔｅｎｔを復号し、この結果、正当な権限及び／又は料金の支払いなしでビデオコンテンツを復号しようとする。後述するように、本発明は、プログラマブルロジックデバイスに、公開鍵／秘密鍵対を生成し、自らを秘密鍵ＫＰＲによって適応化させる暗号化されたコンフィグレーションプログラムを提供する。そして、プログラマブルロジックデバイスは、コンフィグレーションプログラムを暗号化し、その後の使用のために不揮発性メモリにこれを保存する。このように、プログラマブルロジックデバイス自体がプライベートな秘密鍵ＫＰＲを生成するので、プログラマブルロジックデバイスの製造業者も、実際にはユーザ自身も、プライベートな秘密鍵ＫＰＲを知ることはできず、このため、暗号化コンテンツを配信する構成における安全性が実質的に向上する。このようなプログラマブルロジックデバイスの具体的構成例を図４に示す。
【００１８】
図４に示すように、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）１００は、不揮発性メモリ１０２及びハードウェア復号プロセッサ１０４を備える。ハードウェア復号プロセッサ１０４は、ハードウェア復号エンジン１０６と、論理素子からなるプログラマブルアレイ１０８とを備える。また、ハードウェア復号エンジン１０６は、第１の秘密コンフィグレーション鍵Ｋｃｏｎｆｉｇが予め保存されているレジスタ１１０を備える。図４に示すように、不揮発性メモリ１０２は、第１の秘密コンフィグレーション鍵Ｋｃｏｎｆｉｇにより暗号化されたコンフィグレーションプログラムを保存する。図４に示すように、一旦、コンフィグレーションプログラムが復号されると、このコンフィグレーションプログラムは、プログラマブルアレイ１０８にロードされ、プログラマブルアレイ１０８がある機能を実行するようにプログラマブルアレイ１０８をプログラミングする。図４の拡大破線によって示す部分にこの機能を示す。本発明に基づくコンフィグレーションプログラムがプログラマブルアレイ１０８を構成することにより、プログラマブルアレイ１０８によって実行される機能については、以下の段落で説明する。
【００１９】
標準的な動作に基づいてＦＰＧＡ１００に電力が投入されると、ハードウェア復号エンジン１０６は、不揮発性メモリ１０２から暗号化されたコンフィグレーションプログラムを読み出し、レジスタ１１０から入手した第１の秘密コンフィグレーション鍵Ｋｃｏｎｆｉｇを用いて暗号化されたコンフィグレーションプログラムを復号する。そして、周知の動作により、プログラマブルアレイ１０８は、復号されたコンフィグレーションプログラムによってプログラミングされる。コンフィグレーションプログラムに基づきプログラマブルアレイ１０８によって構成される第１の機能的要素は、ハードウェア復号エンジン１０６の機能を再度実行する機能を実現する復号エンジン１２０である。コンフィグレーションプログラムによって構成される第２の機能的要素は、公開鍵／秘密鍵発生器１２２である。第３の機能的要素は制御プロセッサからなるコントローラ１２４であり、第４の機能的要素は暗号化エンジン１２６である。
【００２０】
復号エンジン１２０は、不揮発性メモリ１０２から暗号化されたコンフィグレーションプログラムを再び読み出し、ハードウェア復号エンジン１０６によって復号されたコンフィグレーションプログラム自体の一部として提供される秘密コンフィグレーション鍵Ｋｃｏｎｆｉｇを用いてコンフィグレーションプログラムを復号する。すなわち、復号エンジン１２０は、コンフィグレーションプログラムを再び復号し、コントローラ１２４の一部を構成するローカルメモリ１２１内に一時的に保存する。そして、公開鍵／秘密鍵発生器１２２は、他の全ての機能的要素にとって未知である公開鍵／秘密鍵対ＫＰＵ＿ＦＰＧＡ／ＫＰＲ＿ＦＰＧＡを生成する。公開鍵ＫＰＵ＿ＦＰＧＡは、例えば、ビデオコンテンツを配信するために、独立したチャンネル１２８を介して暗号化プロセッサに供給できる。一方、秘密鍵ＫＰＲ＿ＦＰＧＡは、コントローラ１２４が受け取る。そして、コントローラ１２４は、秘密鍵ＫＰＲ＿ＦＰＧＡをコンフィグレーションプログラムに挿入し、これにより、コンフィグレーションプログラムは、公開鍵／秘密鍵発生器１２２が発生した秘密鍵を含むように適応化される。適応化されたコンフィグレーションプログラムは、暗号化エンジン１２６に渡され、暗号化エンジン１２６は、第１の秘密コンフィグレーション鍵Ｋｃｏｎｆｉｇを用いて、コンフィグレーションプログラムを再び暗号化する。そして、コントローラ１２４は、不揮発性メモリ１０２内のコンフィグレーションプログラムの旧バージョンを、チャンネル１３０を介して不揮発性メモリ１０２に供給される、暗号化され、適応化されたコンフィグレーションプログラムによって上書きし、保存する。
【００２１】
初期化フェーズにおけるＦＰＧＡ１００の動作を図５のフローチャートに示し、以下に説明する。
【００２２】
Ｓ１：ＦＰＧＡ１００に電力が投入され、ハードウェア復号プロセッサ１０４は、不揮発性メモリ１０２から暗号化されたコンフィグレーションプログラムファイルを読み出す。ハードウェア復号プロセッサ１０４は、ハードウェア復号エンジン１０６のレジスタ１１０に保存された第１の秘密コンフィグレーション鍵を用いてコンフィグレーションプログラムを復号する。
【００２３】
Ｓ２：ＦＰＧＡ１００は、復号されたコンフィグレーションプログラムを用いてプログラマブルアレイ１０８を構成する。ここまでのＦＰＧＡ１００の動作は、暗号化されたコンフィグレーションビットファイルによって自らを構成する従来の動作に等しく、これに対応する。
【００２４】
Ｓ４：構成されたプログラマブルアレイ１０８は、所定の機能を実行する。第１の機能として、構成されたプログラマブルアレイ１０８が、不揮発性メモリ１０２から、暗号化されたコンフィグレーションプログラムを再び読み出す。
【００２５】
Ｓ６：構成されたプログラマブルアレイ１０８によって形成された復号エンジン１２０は、コンフィグレーションプログラム内に提供される第１の秘密コンフィグレーション鍵を用いて、不揮発性メモリ１０２から再び読み出された暗号化されたコンフィグレーションプログラムを復号する。換言すれば、第１の秘密コンフィグレーション鍵は、コンフィグレーションプログラムが最初に復号された際、ハードウェア復号エンジン１０６によって提供される。
【００２６】
Ｓ８：構成されたプログラマブルアレイ１０８は、ＫＰＵ＿ＦＰＧＡ／ＫＰＲ＿ＦＰＧＡと呼ばれる公開鍵／秘密鍵対を生成する。
【００２７】
Ｓ１０：構成されたプログラマブルアレイ１０８は、公開鍵ＫＰＵ＿ＦＰＧＡを用いて暗号化されたコンテンツデータを復号するための秘密鍵ＫＰＲ＿ＦＰＧＡを含むようにコンフィグレーションプログラムを適応化する。このようにして、ＦＰＧＡ１００自体は、ＦＰＧＡ１００の外部にとって未知の秘密にされた鍵を生成し、不揮発性メモリ１０２に保存する。
【００２８】
Ｓ１２：構成されたプログラマブルアレイ１０８は、秘密にされた秘密鍵ＫＰＲ＿ＦＰＧＡを含む適応化されたコンフィグレーションプログラムを暗号化し、暗号化されたコンフィグレーションプログラムを不揮発性メモリ１０２に上書きする。
【００２９】
この処理により、秘密鍵ＫＰＲ＿ＦＰＧＡは、秘密にされた鍵になるが、これを用いて、対応する公開鍵ＫＰＵ＿ＦＰＧＡにより暗号化されたコンテンツを復号することができる。この結果、初期化処理に続いて、ＦＰＧＡ１００は、通常の動作に基づいてコンテンツを復号する準備が整う。図６は、図４に示す、復号エンジン及び／又は暗号化エンジンを構成するプログラマブルアレイ１０８を有するＦＰＧＡ１００を示している。なお、図６において、図４に示す部分と共通の部分には、同じ符号を付してあり、これらの部分の動作は同じであるため、ここでは重複する説明は行わない。通常の電力投入動作に基づき、ハードウェア復号エンジン１０６は、暗号化され、適応化されたコンフィグレーションプログラムを受け取り、これを復号し、これを用いてプログラマブルアレイ１０８をプログラミングする。従来の動作に基づき、プログラマブルアレイ１０８は、復号エンジン１９０を形成し、復号エンジン１９０は、この時点でコンフィグレーションプログラムに含まれている秘密鍵ＫＰＲ＿ＦＰＧＡに対応する公開鍵ＫＰＵ＿ＦＰＧＡにより暗号化されたコンテンツを復号する。このように、図１に示す具体例における、公開鍵ＫＰＵ＿ＦＰＧＡにより暗号化されたコンテンツ鍵Ｋｃｏｎｔｅｎｔは、秘密鍵ＫＰＲ＿ＦＰＧＡを用いて復号でき、コンテンツ鍵Ｋｃｏｎｔｅｎｔを出力チャンネル２０２から出力することができる。
【００３０】
例えば、ＦＰＧＡ１００が暗号化プロセッサを形成する場合、プログラマブルアレイ１０８は、暗号化エンジン２１０を用いてコンテンツ鍵を暗号化することができる。入力チャンネル２００を介して受け取ったコンテンツ鍵Ｋｃｏｎｔｅｎｔは、公開鍵ＫＰＵ＿ＦＰＧＡを用いて、構成されたプログラマブルアレイ１０８によって暗号化される。暗号化エンジン２１０は、暗号化コンテンツ鍵Ｋｃｏｎｔｅｎｔを生成し、暗号化エンジン２１０の出力チャンネル２０２から出力する。ＦＰＧＡ１００の動作を図７のフローチャートに示し、以下に説明する。
【００３１】
Ｓ２０：ＦＰＧＡ１００に電力が投入され、ハードウェア復号エンジン１０６は、不揮発性メモリ１０２から暗号化されたコンフィグレーションプログラムを読み出す。ハードウェア復号エンジン１０６は、ハードウェア復号エンジン１０６のレジスタ１１０に保存されている第１の秘密コンフィグレーション鍵Ｋｃｏｎｆｉｇを用いてコンフィグレーションプログラムを復号する。
【００３２】
Ｓ２２：構成されたプログラマブルアレイ１０８は、復号されたコンフィグレーションプログラム内で提供された秘密鍵ＫＰＲ＿ＦＰＧＡを含む復号プロセッサを形成する。そして、秘密鍵ＫＰＲ＿ＦＰＧＡを用いて、公開鍵／秘密鍵対の公開鍵ＫＰＵ＿ＦＰＧＡにより暗号化されたコンテンツを復号することができる。
【００３３】
Ｓ２４：これに対応して、他の具体例では、構成されたプログラマブルアレイ１０８は、公開鍵／秘密鍵対の公開鍵ＫＰＵ＿ＦＰＧＡを用いてコンテンツデータを暗号化する暗号化プロセッサを形成できる。公開鍵は、通常、システムの送信コンポーネントに発行されるので、この具体例では、他のＦＰＧＡプロセッサにより、公開鍵ＫＰＵを提供できる。
【００３４】
図８は、前初期化処理段（pre-initialisation stage）の間、第１の秘密コンフィグレーション鍵Ｋｃｏｎｆｉｇを提供する本発明の更なる実施形態を示している。前初期化処理段は、コンテンツを復号するために、ＦＰＧＡ１００を受信機内に組み込む際に実行できる。図８では、また、図４及び図６に示したＦＰＧＡ１００も示しているが、共通の部分には、同じ符号を付してあり、これらの部分の動作は同じであるため、ここでは重複する説明は行わない。図８に示すように、ＦＰＧＡ１００には、不揮発性メモリ１０２及びハードウェア復号エンジン１０６内のレジスタ１１０にアクセスするための「製造ジグ（manufacturing jig）」と呼ばれる製造コンポーネントが取り付けられる。製造ジグ３００は、秘密コンフィグレーション鍵Ｋｃｏｎｆｉｇを生成する。一旦、秘密コンフィグレーション鍵Ｋｃｏｎｆｉｇが生成されると、コンフィグレーションプログラム自体をこの秘密コンフィグレーション鍵Ｋｃｏｎｆｉｇによって暗号化する前に、秘密コンフィグレーション鍵Ｋｃｏｎｆｉｇをコンフィグレーションプログラムに挿入できる。そして、暗号化されたコンフィグレーションプログラムは、使用の準備のために不揮発性メモリ１０２にロードできる。そして、製造業者は、必要に応じて、秘密コンフィグレーション鍵Ｋｃｏｎｆｉｇを破棄（destroy）又は記録できる。一旦、秘密コンフィグレーション鍵ＫｃｏｎｆｉｇがＦＰＧＡ１００にロードされると、他の如何なるパーティにも、秘密コンフィグレーション鍵Ｋｃｏｎｆｉｇを知らせる必要はなく、したがってセキュリティを高めるために、秘密コンフィグレーション鍵Ｋｃｏｎｆｉｇに関する情報を破棄してもよい。
【００３５】
更なる具体例では、コンテンツを復号するためにＦＰＧＡ１００が受信機に組み込まれると、コンフィグレーションプログラムを更新する機能を提供する更なる鍵をコンフィグレーションプログラムに提供する。この目的で、製造ジグ３００に秘密更新鍵Ｋｕｐｄａｔｅを提供し、この秘密更新鍵Ｋｕｐｄａｔｅも、上述のように秘密コンフィグレーション鍵Ｋｃｏｎｆｉｇによって暗号化され、不揮発性メモリ１０２にロードされる前に、コンフィグレーションプログラムにロードされる。使用時における動作では、図８に示すように、プログラマブルアレイ１０８は、コンフィグレーションプログラムで構成されると、更新プログラム用の復号エンジン３１０、制御プロセッサ３１２及び暗号化エンジン３１４である更なる機能的要素を含む。
【００３６】
使用時における動作では、プログラマブルアレイ１０８は、入力チャンネル２００を介して、更新鍵Ｋｕｐｄａｔｅにより暗号化された新たなプログラム要素を受け取る。そして、復号エンジン３１０は、コンフィグレーションプログラムが提供する秘密更新鍵Ｋｕｐｄａｔｅを用いて新たなプログラム要素を復号することができる。そして、新たなプログラム要素は、新たな機能的要素によりコンフィグレーションプログラムを適応化する制御プロセッサ３１２に渡される。新たな機能的要素は、例えば、既存のコンフィグレーションプログラムに新たな機能を追加するためのものであってもよく、コンフィグレーションプログラムのバグを除去するためのものであってもよい。そして、適応化されたコンフィグレーションプログラムは、暗号化エンジン３１４に渡され、暗号化エンジン３１４は、秘密コンフィグレーション鍵Ｋｃｏｎｆｉｇを用いて、新たに適応化されたコンフィグレーションプログラムを暗号化した後、不揮発性メモリ１０２のコンフィグレーションプログラムの旧バージョンにこの暗号化されたコンフィグレーションプログラムを上書きする。
【００３７】
図８に示す実施形態では、コンフィグレーションプログラムは、新たなプログラム要素に基づいて適応化されると同時に、図５のフローチャートに示すように、それ自体を初期化する際にＦＰＧＡ１００により生成された秘密鍵ＫＰＲ＿ＦＰＧＡを保存する。これにより、コンフィグレーションプログラムが更新されると共に、対応する公開鍵ＫＰＵ＿ＦＰＧＡにより暗号化された、コンテンツを復号するための秘密鍵ＫＰＲ＿ＦＰＧＡが保存される。図８に示す実施形態の動作を図９のフローチャートに示し以下に説明する。
【００３８】
Ｓ４０：コンフィグレーションプログラムにより構成されたプログラマブルアレイ１０８が追加的な機能及び／又はバグ修正機能を提供する更新プログラムを受け取る。更新プログラムは、秘密更新鍵Ｋｕｐｄａｔｅによって暗号化されている。
【００３９】
Ｓ４２：構成されたプログラマブルアレイ１０８は、製造ジグ３００を用いてコンフィグレーションプログラムに提供された秘密更新鍵Ｋｕｐｄａｔｅを用いて、更新プログラムを復号する復号エンジン３１０を形成する。
【００４０】
Ｓ４４：更新プログラムを用いて、コンフィグレーションプログラムが適応化されると共に、公開鍵／秘密鍵対ＫＰＵ＿ＦＰＧＡ／ＫＰＲ＿ＦＰＧＡは保存される。
【００４１】
Ｓ４６：適応化されたコンフィグレーションプログラムは、第１の秘密コンフィグレーション鍵Ｋｃｏｎｆｉｇを用いて暗号化され、コンフィグレーションプログラムの旧バージョンを上書きすることにより不揮発性メモリ１０２に保存される。
【００４２】
コンフィグレーションプログラムの更新における安全性を高めるために、幾つかの具体例では、更新プログラムに新たな更新鍵Ｋｎｅｗ＿ｕｐｄａｔｅを含ませてもよい。これにより、新たな更新鍵Ｋｎｅｗ＿ｕｐｄａｔｅにより暗号化された更新プログラムが後に受け取られると、この更新プログラムを復号することができ、この更新プログラムを再生して、コンフィグレーションプログラムの更新を実行することができる。このように、後続する更新プログラムは、更なる更新プログラムを復号するための更なる更新鍵を提供できる。このため、更新プログラムをＦＰＧＡ１００に送る際は、常に、後続する更新プログラムを復号するための新たな更新鍵を提供する。これには、２つの利点がある。第１に、新たなコンフィグレーションプログラムは、ＦＰＧＡ１００と共有される秘密更新鍵によって有効に署名されるので、ＦＰＧＡ１００は、更新プログラムの認証を保証される。第２の利点は、更新プログラムが復号され、コンテンツが解読され及びコンフィグレーションプログラムが操作される危険性が低減され、これにより安全性が高められる点である。
【００４３】
本発明の更なる実施形態を図１０に示す。図１０において、図４に示す部分と共通の部分には、同じ符号を付してあり、これらの部分の動作は同じであるため、ここでは重複する説明は行わない。図１０に示す具体例が図４に示す具体例と本質的に異なる点は、ＦＰＧＡ１００．１が公開鍵／秘密鍵対を暗号化された形式で保存するための第２の不揮発性メモリ４００を備える点である。また、公開鍵／秘密鍵対ＫＰＵ＿ＦＰＧＡ／ＫＰＲ＿ＦＰＧＡを生成するとともに、鍵発生器１２２．１は、対称暗号方式における秘密にされた秘密鍵Ｋｓを生成する。コントローラ１２４．１は、秘密鍵Ｋｓをコンフィグレーションプログラムに挿入することによってコンフィグレーションプログラムを適応化する。上述の具体例と同様、暗号化エンジン１２６．１は、適応化されたコンフィグレーションプログラムを暗号化し、第１の不揮発性メモリ１０２にこれを保存する。そして、暗号化エンジン１２６．２は、公開鍵／秘密鍵対ＫＰＵ＿ＦＰＧＡ／ＫＰＲ＿ＦＰＧＡを暗号化し、暗号化された鍵対は、接続チャンネル４０２を介して第２の不揮発性メモリ４００に保存される。
【００４４】
公開鍵／秘密鍵対ＫＰＵ＿ＦＰＧＡ／ＫＰＲ＿ＦＰＧＡの秘密鍵は、例えば、２０４８ビット等、比較的長い場合があり、一方、対称暗号方式におけるプライベートな秘密鍵は、例えば、１２８ビット程度である。したがって、第１の不揮発性メモリ１０２に公開鍵／秘密鍵対の秘密鍵を保存することは、秘密鍵を保存するための記憶容量が限られているために、困難な場合がある。そこで、第２の不揮発性メモリ４００に公開鍵／秘密鍵対を保存することにより、この記憶容量の不足を解消できる。公開鍵／秘密鍵対の秘密鍵の安全性を高めるために、秘密鍵Ｋｓを生成し、これを用いて、第２の不揮発性メモリ４００に保存するために公開鍵／秘密鍵対ＫＰＵ＿ＦＰＧＡ／ＫＰＲ＿ＦＰＧＡを暗号化する。コンフィグレーションプログラムに挿入された秘密鍵Ｋｓは、コンフィグレーションプログラムによってプログラマブルアレイ１０８を構成する際、鍵対ＫＰＵ＿ＦＰＧＡ／ＫＰＲ＿ＦＰＧＡを復号するために再生することができる。
【００４５】
本発明の様々な側面及び特徴は、特許請求の範囲に定義されている。本発明の範囲から逸脱することなく、上述した実施形態を様々に変更することができる。特に、例示的な実施形態として、ビデオコンテンツを配信するブロードキャストシナリオを説明したが、これは、暗号化できるデータの一具体例にすぎず、本発明は、例えば、オーディオデータ、テキストデータ、金融又は財務データ、コンピュータプログラムを始めとする如何なる種類のコンテンツの通信にも適用でき、及び例えば、ブロードキャスト通信、マルチキャスト通信又はユニキャスト通信等、様々なアプリケーションに適用できることは明らかである。フィールドプログラマブルゲートアレイの具体例を説明したが、これはプログラマブルロジックデバイスの一具体例に過ぎないことは明らかである。
【図面の簡単な説明】
【００４６】
【図１】セットトップボックスを介してテレビジョン受信機にコンテンツデータを配信する構成のブロック図である。
【図２】配信のためにコンテンツデータを暗号化するよう構成された暗号化プロセッサのブロック図である。
【図３】図２に示す暗号化プロセッサにより暗号化されたコンテンツを復号する復号プロセッサのブロック図である。
【図４】データを暗号化及び／又は復号する処理を実行するプログラマブルロジックデバイスのブロック図及びその処理のフローチャートである。
【図５】図４に示すプログラマブルロジックアレイの初期化フェーズを示すフローチャートである。
【図６】図４のプログラマブルロジックロジックデバイスの暗号化コンテンツデータを復号するための部分のブロック図及びその処理のフローチャートである。
【図７】図６に示すプログラマブルロジックデバイスの動作を説明するフローチャートである。
【図８】プログラマブルロジックデバイスを暗号化されたコンフィグレーションプログラムにより予めプログラミングする部分のブロック図及びその処理のフローチャートである。
【図９】更新されたコンフィグレーションプログラムに基づきプログラマブルロジックデバイスを適応化する処理を説明するフローチャートである。
【図１０】更なる具体例に基づき、データを暗号化及び／又は復号する処理を実行するプログラマブルロジックデバイスのブロック図及びその処理のフローチャートである。
【図１】
2006295916.tif 000003
【図２】
2006295916.tif 000004
【図３】
2006295916.tif 000005
【図４】
2006295916.tif 000006
【図５】
2006295916.tif 000007
【図６】
2006295916.tif 000008
【図７】
2006295916.tif 000009
【図８】
2006295916.tif 000010
【図９】
2006295916.tif 000011
【図１０】
2006295916.tif 000012
【外国語明細書】
2006295916000001.pdf
2006295916000002.pdf
2006295916000003.pdf
2006295916000004.pdf