JP2004152123A - 半導体集積回路装置、並びにプログラム引き渡し方法及びそのシステム - Google Patents
半導体集積回路装置、並びにプログラム引き渡し方法及びそのシステム Download PDFInfo
- Publication number
- JP2004152123A JP2004152123A JP2002318172A JP2002318172A JP2004152123A JP 2004152123 A JP2004152123 A JP 2004152123A JP 2002318172 A JP2002318172 A JP 2002318172A JP 2002318172 A JP2002318172 A JP 2002318172A JP 2004152123 A JP2004152123 A JP 2004152123A
- Authority
- JP
- Japan
- Prior art keywords
- program
- memory
- decryption
- bus
- access
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 239000004065 semiconductor Substances 0.000 title claims abstract description 87
- 238000000034 method Methods 0.000 title description 40
- 230000015654 memory Effects 0.000 claims abstract description 199
- 238000009434 installation Methods 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 19
- 238000011144 upstream manufacturing Methods 0.000 description 9
- 230000002093 peripheral effect Effects 0.000 description 6
- RRLHMJHRFMHVNM-BQVXCWBNSA-N [(2s,3r,6r)-6-[5-[5-hydroxy-3-(4-hydroxyphenyl)-4-oxochromen-7-yl]oxypentoxy]-2-methyl-3,6-dihydro-2h-pyran-3-yl] acetate Chemical compound C1=C[C@@H](OC(C)=O)[C@H](C)O[C@H]1OCCCCCOC1=CC(O)=C2C(=O)C(C=3C=CC(O)=CC=3)=COC2=C1 RRLHMJHRFMHVNM-BQVXCWBNSA-N 0.000 description 5
- 238000000926 separation method Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/1425—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
- G06F12/1433—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a module or a part of a module
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Storage Device Security (AREA)
Abstract
【解決手段】本発明の半導体集積回路装置101は、暗号化されたプログラムと復号プログラムD123aとがRAM105に入力されると、バスポート110aに対して外部からのアクセスを禁止させ、RAM104及び105へのアクセスを許可して暗号化されたプログラムと復号プログラムとのRAM105への転送を行う。そして、その転送が終了するとRAM104へのアクセスを禁止し、CPU103aに対して秘密鍵保持部107に保持された秘密鍵と復号プログラムD123aとを用いた暗号化されたプログラムの復号とその復号化されたプログラムの実行を命じる。その実行終了後にRAM105へのアクセスを禁止する。
【選択図】 図1
Description
【発明の属する技術分野】
本発明は、暗号化されたプログラムを復号して実行する機能を有する情報機器等に搭載される半導体LSIに関する。また、プログラムを暗号化してプログラム所有者側の機器からプログラム使用者側の機器へ引き渡しす処理システム及びその方法に関する。
【0002】
【従来の技術】
近年、プログラムの書き換えが可能な、またはユーザプログラムの実行が可能な情報機器の普及に伴い、ソフトウエアの違法なコピーを防止する仕組みが考えられている。プログラムを暗号化して配信する方式においては、暗号化されたプログラムを復号するプログラム(以下、「復号プログラム」という)をコピーされないような工夫がなされている。例えば、復号プログラムを外部から読み出すことができないLSI内部のメモリに配置し、さらに、復号化されたプログラムを外部から読み出すことができないようにしている(例えば、特許文献1参照)。
【0003】
図18は、暗号化されたプログラムを実行する従来の半導体集積回路装置を示すブロック図である。
【0004】
図18に示す半導体集積回路装置1は、CPU3と、内部バス7を介してデータの入出力を行う内蔵ROM4及び内蔵RAM5と、外部バス2を通じて外部とのデータの入出力を制御するバスポート6と、CPU3にIOバス8を介して接続されたIOポート9と、内蔵RAM5を制御するメモリポート10と、メモリポート10を制御する制御レジスタ11とを有している。
【0005】
暗号化されたプログラムを復号する復号プログラムは内蔵ROM4に格納されている。暗号化されたプログラムは内蔵RAM5に読み込まれ、復号プログラムによって復号される。復号化されたプログラムは内蔵RAM5に書き出される。内蔵RAM5に書き出された復号化されたプログラムは制御レジスタ11からの制御によって、メモリポート10から外部へ読み出されることを防ぐ。
【0006】
【特許文献1】特開平8−30558号公報
【0007】
【発明が解決しようとする課題】
しかしながら、上記のように、復号プログラムをLSI内部に保持するため、不揮発性メモリをLSIに内蔵しなければならない。したがって、LSIに要するコストが高くなる。
【0008】
また、悪意のあるプログラムを暗号化してLSI内部に読み込ませ、プログラムを実行するときに、そのプログラムが復号プログラムを外部に転送することによって、復号プログラムがハッキングされる可能性がある。その結果、ハッキングされた復号プログラムを用いることによって、暗号化されたプログラムのハッキングが可能になる。さらに、復号プログラムを変更することはできないので、一度ハッキングされるとそのLSIは使えなくなる。
【0009】
さらに、暗号化されたプログラムを転送する側で暗号プログラムや暗号強度の選択ができないといった問題が生じている。
【0010】
そこで、本発明の目的は、コストを低減し、暗号化されたプログラムがハッキングされる可能性を低減した半導体集積回路装置を提供することである。
【0011】
【課題を解決するための手段】
上記課題を解決するために、第1に、本発明の請求項1に係る半導体集積回路装置は、バスとの間でデータの入出力を行う第1のメモリと、前記バスとの間でデータの入出力を行う第2のメモリと、秘密鍵を保持する秘密鍵保持部と、外部からの前記バスへのアクセスを制御するバスポートと、前記バスポートを経由して暗号化されたプログラムと復号プログラムとを前記第1のメモリに格納させ、前記復号プログラムと前記秘密鍵とを用いて前記暗号化されたプログラムの復号を行い、復号化されたプログラムを実行するCPUと、前記暗号化されたプログラムと前記復号プログラムとが前記第1のメモリに格納されると、前記バスポートに対して外部からのアクセスを禁止させ、前記第1及び第2のメモリへのアクセスを許可して前記暗号化されたプログラムと前記復号プログラムとの前記第1のメモリから前記第2のメモリへの転送を行い、前記転送が終了すると、前記第1のメモリへのアクセスを禁止し、前記復号及び前記復号化されたプログラムの実行が終了すると、前記第2のメモリへのアクセスを禁止する制御部とを備えるものである。
【0012】
請求項1の発明によると、復号プログラムを保持するための不揮発性のメモリを半導体集積回路装置の内部に備える必要がなり、コストを低減することができる。また、復号中のプログラム及びデータを外部から観測されることなく、暗号化されたプログラムを復号し実行することができ、暗号化されたプログラムがハッキングされる可能性を低減できる。
【0013】
また、請求項2の発明は、請求項1に記載の半導体集積回路装置において、前記CPUから前記秘密鍵保持部へのアクセスを制御する秘密鍵アクセスポートをさらに備え、前記秘密鍵アクセスポートは、前記転送が終了すると前記秘密鍵保持部へのアクセスを許可し、前記復号化されたプログラムの実行が終了すると前記秘密鍵保持部へのアクセスを禁止するものである。
【0014】
また、請求項3の発明は、請求項1に記載の半導体集積回路装置において、前記CPUは、レジスタを含み、前記復号化されたプログラムの実行が終了すると、前記レジスタに格納されたデータを消去するものである。
【0015】
また、請求項4の発明は、請求項1に記載の半導体集積回路装置において、前記制御部は、前記第1及び第2のメモリへのチップセレクト信号を制御することによって、前記第1及び第2のメモリへのアクセスを制御するものである。
【0016】
また、請求項5の発明は、請求項1に記載の半導体集積回路装置において、前記制御部は、第1のフラグと第2のフラグとを格納するフラグ格納部を含み、前記第1のフラグがセットされているときには前記第1のメモリ及び前記第2のメモリへのアクセスを許可し、前記第1のフラグがリセットされ、前記第2のフラグがセットされているときには前記第1のメモリへのアクセスを禁止し、前記第1及び第2のフラグのいずれもがリセットされているときには、前記第2のメモリへのアクセスを禁止するものでり、前記バスポートは、前記第1または第2のフラグのうち少なくとも1つがセットされているときに、外部からのアクセスを禁止するものであり、前記CPUは、前記暗号化されたプログラム及び前記復号プログラムが前記第1のメモリに入力されると前記第1のフラグ及び前記第2のフラグをセットし、前記転送が終了すると前記第1のフラグをリセットし、前記復号化されたプログラムの実行が終了すると前記第2のフラグをリセットするものである。
【0017】
上記課題を解決するために、第2に、本発明の請求項6に係る発明は、バスとの間でデータの入出力を行う第1のメモリと、前記バスとの間でデータの入出力を行う第2のメモリと、前記バスと前記第1のメモリとの間に接続され、前記バスからの前記第1のメモリへのアクセスを制御する第1のメモリポートと、前記バスと前記第2のメモリとの間に接続され、前記バスからの前記第2のメモリへのアクセスを制御する第2のメモリポートと、秘密鍵を保持する秘密鍵保持部と、外部からの前記バスへのアクセスを制御するバスポートと、レジスタを有し、前記バスポートを経由して暗号化されたプログラムと復号プログラムとの前記第1のメモリへの書き込みを行い、前記復号プログラムと前記秘密鍵とを用いて前記暗号化されたプログラムの復号を行い、復号化されたプログラムの前記第2のメモリへの書き込みを行い、復号化されたプログラムを実行するCPUと、前記第1のメモリへの書き込みが終了すると、前記バスポートに対して外部からの前記バスへのアクセスを禁止させ、前記第1のメモリポートに対して前記第1のメモリへの書き込みを禁止させ、前記第2のメモリポートに対して前記第2のメモリへのアクセスを許可させ、前記復号化されたプログラムの実行が終了すると、前記CPUに対して前記レジスタに格納されたデータを消去させ、前記秘密鍵保持部へのアクセスを禁止させるとともに、前記第2のメモリポートに対して前記第2のメモリへのアクセスを禁止させる制御部とを備えるものである。
【0018】
請求項6の発明によると、復号プログラムを保持するための不揮発性のメモリを半導体集積回路装置の内部に備える必要がなり、コストを低減することができる。また、復号中のプログラム及びデータを外部から観測されることなく、暗号化されたプログラムを復号し実行することができ、暗号化されたプログラムがハッキングされる可能性を低減できる。
【0019】
上記課題を解決するために、第3に、本発明の請求項7に記載の発明は、バスとの間でデータの入出力を行う第1のメモリと、前記バスとの間でデータの入出力を行う第2のメモリと、前記バスと前記第1のメモリとの間に接続され、前記バスからの前記第1のメモリへのアクセスを制御するメモリポートと、秘密鍵を保持する秘密鍵保持部と、外部からの前記バスへのアクセスを制御するバスポートと、レジスタを有し、前記バスポートを経由して暗号化されたプログラムと復号プログラムとの前記第1のメモリへの書き込みを行い、前記復号プログラムと前記秘密鍵とを用いて前記暗号化されたプログラムの復号を行い、復号化されたプログラムの前記第2のメモリへの書き込みを行い、復号化されたプログラムを実行するCPUと、前記第2のメモリ上のデータを消去するメモリ初期化部を含み、前記第1のメモリへの書き込みが終了すると、前記バスポートに対して外部からの前記バスへのアクセスを禁止させ、前記メモリポートに対して前記第1のメモリへの書き込みを禁止させ、前記復号化されたプログラムの実行が終了すると、前記CPUに対して前記レジスタに格納されたデータを消去させ、前記秘密鍵保持部へのアクセスを禁止させ、前記メモリ初期化部に対して前記第2のメモリ上のデータを消去させるものである。
【0020】
請求項7の発明によると、復号プログラムを保持するための不揮発性のメモリを半導体集積回路装置の内部に備える必要がなり、コストを低減することができる。また、復号中のプログラム及びデータを外部から観測されることなく、暗号化されたプログラムを復号し実行することができ、暗号化されたプログラムがハッキングされる可能性を低減できる。
【0021】
上記課題を解決するために、第4に、本発明の請求項8に記載の発明は、バスとの間でデータの入出力を行う第1のメモリと、前記バスとの間でデータの入出力を行う第2のメモリと、秘密鍵を保持する秘密鍵保持部と、復号鍵を保持する復号鍵保持部と、外部からの前記バスへのアクセスを制御するバスポートと、レジスタを含み、前記バスポートを経由して暗号化された復号鍵と復号鍵復号プログラムとを前記第1のメモリへ格納する第1の格納を行い、前記復号鍵復号プログラムと前記秘密鍵とを用いて前記暗号化された復号鍵を復号する第1の復号を行い、復号化された復号鍵の前記復号鍵保持部への書き込みを行い、暗号化されたプログラムと復号プログラムとを前記第1のメモリへ格納する第2の格納を行い、前記復号プログラムと前記復号化された復号鍵とを用いて前記暗号化されたプログラムを復号する第2の復号を行い、復号化されたプログラムを実行するCPUと、前記第1のメモリへの前記第1の格納が終了すると、前記バスポートに対して外部からの前記バスへのアクセスを禁止させ、前記第1のメモリ及び前記第2のメモリへのアクセスを許可して前記暗号化された復号鍵と前記復号鍵復号プログラムとの前記第1のメモリから前記第2のメモリへの転送を行い、この転送が終了すると、前記秘密鍵保持部へのアクセスを許可し、前記第1のメモリへのアクセスを禁止し、前記第1の復号が終了すると、前記CPUに対して前記レジスタに格納されたデータを消去させ、前記秘密鍵保持部へのアクセスを禁止させるとともに、前記第2のメモリへのアクセスを禁止し、前記第1のメモリへのアクセスを許可し、前記バスポートに対して外部からの前記バスへのアクセスを許可し、前記第1のメモリへの前記第2の格納が終了すると、前記バスポートに対して外部からの前記バスへのアクセスを禁止させ、前記第2のメモリへのアクセスを許可して前記暗号化されたプログラムと前記復号プログラムとの前記第1のメモリから前記第2のメモリへの転送を行い、この転送が終了すると、前記復号鍵保持部へのアクセスを許可し、前記第1のメモリへのアクセスを禁止し、前記第2の復号と前記復号化されたプログラムの実行が終了すると、前記CPUに対して前記レジスタに格納されたデータを消去させ、前記秘密鍵保持部へのアクセスを禁止させ、前記第2のメモリへのアクセスを禁止する制御部とを備えるものである。
【0022】
請求項8の発明によると、復号プログラムを保持するための不揮発性のメモリを半導体集積回路装置の内部に備える必要がなり、コストを低減することができる。また、復号中のプログラム及びデータを外部から観測されることなく、暗号化されたプログラムを復号し実行することができ、暗号化されたプログラムがハッキングされる可能性を低減できる。さらに、暗号化されたプログラムを転送する側で暗号プログラムや暗号強度の選択することができる。
【0023】
上記課題を解決するために、第5に、本発明の請求項9に係るプログラム引き渡し方法は、第1の装置と第2の装置との間でプログラムの引き渡しを行うプログラム引き渡し方法であって、前記第2の装置から前記第1の装置への公開鍵の転送を行うステップと、前記第2の装置にその外部から復号プログラムを転送するステップと、前記第1の装置において、前記公開鍵を用いて、前記プログラムの暗号化を行い、暗号化されたプログラムを前記第2の装置に転送するステップと、前記第2の装置において、前記公開鍵に対応する秘密鍵と前記復号プログラムとを用いて、前記暗号化されたプログラムを復号するステップとを備えるものである。
【0024】
請求項9の発明によると、半導体集積回路装置の内部に復号プログラムを保持するための不揮発性のメモリが不要でコストを低減することができる。また、復号中のプログラム及びデータを外部から観測されることなく、暗号化されたプログラムを復号し実行することができ、暗号化されたプログラムがハッキングされる可能性を低減できる。
【0025】
上記課題を解決するために、第6に、本発明の請求項10に係るプログラム引き渡し方法は、第1の装置と第2の装置との間でプログラムの引き渡しを行うプログラム引き渡し方法であって、前記第2の装置から前記第1の装置への公開鍵の転送を行うステップと、前記第1の装置において、前記公開鍵を用いて、復号鍵の暗号化を行い、暗号化された復号鍵を前記第2の装置に転送するステップと、前記第2の装置において、前記公開鍵に対応する秘密鍵を用いて、前記暗号化された復号鍵を復号するステップと、前記第1の装置において、前記復号鍵に対応する暗号鍵を用いて、前記プログラムの暗号化を行い、暗号化されたプログラムを前記第2の装置に転送するステップと、前記第2の装置において、復号化された復号鍵を用いて、前記暗号化されたプログラムを復号するステップとを備えるものである。
【0026】
請求項10の発明によると、半導体集積回路装置の内部に復号プログラムを保持するための不揮発性のメモリが不要でコストを低減することができる。また、復号中のプログラム及びデータを外部から観測されることなく、暗号化されたプログラムを復号し実行することができ、暗号化されたプログラムがハッキングされる可能性を低減できる。さらに、暗号化されたプログラムを転送する側で暗号プログラムや暗号強度の選択することができる。
【0027】
上記課題を解決するために、第7に、本発明の請求項11に係るプログラム引き渡しシステムは、第1の装置と第2の装置とを備え、前記第1の装置と前記第2の装置との間でプログラムの引き渡しを行うプログラム引き渡しシステムであって、前記第1の装置は、前記プログラムを公開鍵を用いて暗号化し、その暗号化したプログラムを前記第2の装置への転送を行うものであり、前記第2の装置は、前記第1の装置によって暗号化されたプログラムを、前記公開鍵に対応する秘密鍵と、当該第2の装置の外部から転送された復号プログラムとを用いて復号するものである。
【0028】
請求項11の発明によると、半導体集積回路装置の内部に復号プログラムを保持するための不揮発性のメモリが不要でコストを低減することができる。また、復号中のプログラム及びデータを外部から観測されることなく、暗号化されたプログラムを復号し実行することができ、暗号化されたプログラムがハッキングされる可能性を低減できる。
【0029】
上記課題を解決するために、第8に、本発明の請求項12に係るプログラム引き渡しシステムは、第1の装置と第2の装置とを備え、前記第1の装置と前記第2の装置との間でプログラムの引き渡しを行うプログラム引き渡しシステムであって、前記第1の装置は、公開鍵を用いて、復号鍵を暗号化し、暗号化した復号鍵を前記第2の装置への転送を行い、前記復号鍵に対応する暗号鍵を用いて、前記プログラムを暗号化し、暗号化したプログラムを前記第2の装置への転送を行うものであり、前記第2の装置は、前記公開鍵に対応する秘密鍵を用いて、前記第1の装置によって暗号化された復号鍵を復号し、復号化された復号鍵を用いて、前記第1の装置によって暗号化されたプログラムを復号するものである。
【0030】
請求項12の発明によると、半導体集積回路装置の内部に復号プログラムを保持するための不揮発性のメモリが不要でコストを低減することができる。また、復号中のプログラム及びデータを外部から観測されることなく、暗号化されたプログラムを復号し実行することができ、暗号化されたプログラムがハッキングされる可能性を低減できる。さらに、暗号化されたプログラムを転送する側で暗号プログラムや暗号強度の選択することができる。
【0031】
【発明の実施の形態】
以下、本発明の各実施形態について図面を参照しながら説明する。
【0032】
(第1の実施形態)
図1は、本発明の第1の実施形態における半導体集積回路装置101の構成を説明するためのブロック図である。
【0033】
図1に示すように、暗号化されたプログラムが、プログラムの開発者側の機器たるPC128a(第1の装置に対応する)からPC126を介して、プログラムの使用者側へ転送される。使用者側の情報機器140内の半導体集積回路装置101(第2の装置に対応する)において、秘密鍵と復号プログラムを用いて暗号化されたプログラムを復号し実行する。
【0034】
PC128aは、プログラム開発者側の機器であり、プログラムD128aとプログラムを暗号化するための暗号プログラム128bとを保持している。
【0035】
情報機器140は、プログラム使用者側の機器であり、半導体集積回路装置101と、復号プログラムD123aを保持するフラッシュメモリ123aと、USBアップストリームポート124と、周辺機器150とを有している。なお、外部バス102によって、半導体集積回路装置101とフラッシュメモリ123aとUSBアップストリームポート124とが接続されている。
【0036】
半導体集積回路装置101は、CPU103aと、内蔵RAM104(第1のメモリに対応する)及び105(第2のメモリに対応する)と、公開鍵格納レジスタ106と、秘密鍵格納レジスタ107と、秘密鍵アクセスポート108aと、バスポート110aと、セキュリティコントローラ111aと、IOポート122とを有している。なお、内部バス109は、図示するように接続されている。
【0037】
CPU103aは、汎用レジスタコントローラ119aと汎用レジスタ120aとを有している。
【0038】
セキュリティコントローラ111aは、プログラム復号実行フラグ112F(第2のフラグに対応する)及びRAMコピーフラグ113F(第1のフラグに対応する)とを格納するフラグ格納部113aと、チップセレクトディスパッチャ114aと、DMA118aとを有している。
【0039】
以下に、各要素の内容及び動作について具体的に説明する。
【0040】
外部バス102は、公開鍵格納レジスタ106に格納された公開鍵のパソコン128aへの転送や、その公開鍵と暗号プログラムD128bとを用いて暗号化されたプログラムの半導体集積回路装置101への転送に用いられるものである。
【0041】
CPU103aは、内蔵RAM104や105、またはフラッシュメモリ123a上に格納されたプログラムによって動作する。通常のプログラムを動作させるほか、暗号化されたプログラムの復号や復号化されたプログラムを実行する。また、外部から入力される暗号化されたプログラムや復号プログラムD123aを内蔵RAM104に転送する。
【0042】
内蔵RAM104は、通常時、すなわち、復号プログラムD123a、復号化されたプログラムのいずれもが実行されていないときに使用されるメモリである。公開鍵と暗号プログラムD128bとを用いて暗号化されたプログラムを復号して実行する場合について説明する。まず、バスポート110aが外部バス102と内部バス109とを接続した状態で、CPU110aによって、暗号化されたプログラムとフラッシュメモリ123a内の復号プログラムD123aとが内蔵RAM104に転送される。次に、バスポート110aが外部バス102と内部バス109とを分離してから、DMA118aによって、暗号化されたプログラムと復号プログラムD123aとが内蔵RAM104から内蔵RAM105に転送される。その後は、復号されたプログラムの実行が終了するまでの間、セキュリティコントローラ111aによって、内部バス109から内蔵RAM104へのアクセスが禁止される。
【0043】
内蔵RAM105は、復号プログラムD123aの実行時、及び復号化されたプログラムの実行時に使用される。暗号化されたプログラムを復号して実行する場合について説明する。バスポート110aが外部バス102と内部バス109とを分離した後に、DMA118aによって、暗号化されたプログラムと復号プログラムD123aとが内蔵RAM104から内蔵RAM105に転送される。また、バスポート110aが外部バス102と内部バス109とを接続している状態では、セキュリティコントローラ111aによって、内部バス109から内蔵RAM105へのアクセスが禁止される。したがって、内蔵RAM105に一時的に記憶される復号化されたプログラムや、復号処理の実行途中のデータが外部から観測されることはない。
【0044】
公開鍵格納レジスタ106は、公開鍵を格納した読み出し専用のレジスタである。公開鍵は、半導体集積回路装置101の外部にあるパソコン128aに転送され、暗号プログラムD128bによってプログラムD128aを暗号化する際に用いられる鍵である。
【0045】
秘密鍵格納レジスタ107は、秘密鍵を格納した読み出し専用のレジスタである。秘密鍵は、復号プログラムD123aによって暗号化されたプログラムを復号する際に用いられる鍵である。
【0046】
秘密鍵アクセスポート108aは、RAMコピーフラグ113Fがリセットされている間にのみ、CPU103aが秘密鍵格納レジスタ107から秘密鍵を読み出すことを可能にする。すなわち、復号プログラムD123aが開始され、内蔵RAM104から内蔵RAM105への暗号化されたプログラムと復号プログラムD123aの転送が完了し、RAMコピーフラグ113Fがリセットされて、その後プログラムを復号している間と復号化されたプログラムを実行している間にのみ、CPU103aが秘密鍵格納レジスタ107から秘密鍵を読み出すことを可能にし、それ以外のときは秘密鍵の読み出しを禁止する。
【0047】
内部バス109は、半導体集積回路装置101内部におけるプログラムやデータの転送に使用される。
【0048】
バスポート110aは、プログラム復号実行フラグ112F、RAMコピーフラグ113Fのうちの少なくとも1つがセットされているときに、内部バス109と外部バス102とを分離する。このため、暗号化されたプログラムと復号プログラムD123aの転送中、復号プログラムD123aや復号化されたプログラムの実行中において、内部バス109及び内蔵RAM105が外部から観測されることがない。その他の場合は内部バス109と外部バス102とを接続する。
【0049】
セキュリティコントローラ111aは、プログラム復号実行フラグ112F及びRAMコピーフラグ113Fを保持するフラグ格納部113a、チップセレクトディスパッチャ114a、DMAコントローラ118(以下、「DMA」という)を内蔵する。そして、暗号プログラムD128bと公開鍵格納レジスタ106に格納された公開鍵によって暗号化されたプログラムを復号し、復号化されたプログラムを実行する際に、バスポート110a、秘密鍵アクセスポート108a、チップセレクト信号116S及び117S、汎用レジスタコントローラ119aの制御を行うものである。
【0050】
暗号プログラムD128bによって暗号化されたプログラムを復号して実行する場合について説明する。まず、バスポート110aが外部バス102と内部バス109とを接続した状態で、CPU103aによって、暗号化されたプログラム及び復号プログラムD123aが内蔵RAM104に転送されると、次に、バスポート110aが外部バス102と内部バス109とを分離する。次に、チップセレクトディスパッチャ114aはチップセレクト信号116S及び117Sをアサートさせて、DMA118aによって暗号化されたプログラム及び復号プログラムD123aを内蔵RAM104から内蔵RAM105に転送させる。転送が終了すると、チップセレクトディスパッチャ114aはチップセレクト信号116Sをネゲートし、その後は、CPU103aの制御に移る。そして、CPU103aにおいてプログラムが復号され、復号化されたプログラムの実行が終了するとチップセレクトディスパッチャ114aに終了通知がなされる。通知を受けるとチップセレクトディスパッチャ114aはチップセレクト信号117Sをネゲートし、汎用レジスタコントローラ119aに汎用レジスタ120aを初期化させ、CPU103aからのチップセレクト信号115Sをチップセレクト信号116Sとして出力する。その後、バスポート110aは内部バス109と外部バス102とを接続する。
【0051】
プログラム復号実行フラグ112Fは、復号プログラムD123aの開始時にCPU103aからセットされ、復号化されたプログラムの実行終了時にCPU103aからリセットされる。復号プログラムD123aが開始され、内蔵RAM104から内蔵RAM105への暗号化されたプログラムと復号プログラムD123aの転送が完了し、RAMコピーフラグ113Fがリセットされる。その後、暗号化されたプログラムを復号している間と復号化されたプログラムが実行されている間は、内蔵RAM104へのアクセスが禁止され、内蔵RAM105及び秘密鍵格納レジスタ107へのアクセスを可能にする。プログラム復号実行フラグ112Fがリセットされると、内蔵RAM105及び秘密鍵格納レジスタ107へのアクセスが禁止される。
【0052】
RAMコピーフラグ113Fは、復号プログラムD123aの開始時にCPU103aからセットされ、内蔵RAM104から内蔵RAM105へのデータ転送の終了時にリセットされる。内蔵RAM104及び105はメモリマップ上は同一なので、通常は双方へのチップセレクトが同時にアサートされることはない。ただし、暗号化されたプログラムなどを内蔵RAM105に転送するために、内蔵RAM104から内蔵RAM105への転送時にRAMコピーフラグ113Fをセットすることで、内蔵RAM104、105それぞれへの、チップセレクトディスパッチャ114aからのチップセレクト信号116S、117Sをそれぞれアサートする。
【0053】
チップセレクトディスパッチャ(以下、「CSディスパッチャ」とする)114aは、RAMコピーフラグ113Fがセットされているとき、チップセレクト信号116S及び117Sをともにアサートする。これにより、DMA118aによる内蔵RAM104から内蔵RAM105への暗号化されたプログラムと復号プログラムD123aの転送を可能にする。プログラム復号実行フラグ112Fがセットされ、かつRAMコピーフラグ113Fがリセットされているとき、チップセレクト信号116Sをネゲートにするとともにチップセレクト信号115Sをチップセレクト信号117Sとして転送する。これにより、暗号化されたプログラムの復号時、復号化されたプログラムの実行時に内蔵RAM105へのアクセスを可能にする。いずれにもあてはまらないとき、チップセレクト信号115Sをチップセレクト信号116Sとして転送するとともにチップセレクト信号117Sをネゲートする。これにより、通常時、すなわち、復号プログラムD123a、復号化されたプログラムのいずれもが実行されていないとき、内蔵RAM105へのアクセスを禁止する。
【0054】
チップセレクト信号115Sは、CPU103aから出力され、内蔵RAM104または内蔵RAM105にアクセスするときにアサートされる。
【0055】
チップセレクト信号116S及び117Sは、CSディスパッチャ114aから出力され、チップセレクト信号116Sは内蔵RAM104にアクセスするときにアサートされ、チップセレクト信号117Sは内蔵RAM105にアクセスするときにアサートされる。
【0056】
DMAコントローラ118aは、RAMコピーフラグ113Fがセットされたとき、内蔵RAM104から内蔵RAM105への暗号化されたプログラムと復号プログラムD123aの転送を行う。なお、転送が終了するとRAMコピーフラグ113はリセットされる。
【0057】
汎用レジスタコントローラ119aは、プログラム復号実行フラグ112Fがリセットされるときに、汎用レジスタ120aをリセットする。したがって、暗号化されたプログラムの復号中、復号化されたプログラムの実行中に汎用レジスタ120aに生成されたデータが外部から観測されることはない。
【0058】
IOポート122は、IOバス121を介してCPU103aに接続されている。また、周辺機器150におけるサウンドモジュール151やビデオモジュール152などの外付けの回路と接続されている。
【0059】
フラッシュメモリ123aは、復号プログラムD123aを保持する。
【0060】
復号プログラムD123aは、半導体集積回路装置101内部の内蔵RAM104を経由して内蔵RAM105に転送され、暗号化されたプログラムを復号する際に、秘密鍵格納レジスタ107に格納された秘密鍵とともに用いられるものである。
【0061】
USBアップストリームポート124は、USBケーブル125を介してパソコン126に接続し、暗号化されたプログラムを半導体集積回路装置101に転送するのに用いられるものである。
【0062】
USBケーブル125は、パソコン126からUSBアップストリームポート124への暗号化されたプログラムの転送に用いられるものである。
【0063】
パソコン126は、パソコン128aから暗号化されたプログラムを受け取り、半導体集積回路装置101を搭載した情報機器140に暗号化されたプログラムを転送するものである。
【0064】
ネットワーク回線127は、パソコン128からパソコン126に暗号化されたプログラムを転送するために使用されるものである。
【0065】
パソコン128は、ネットワーク回線127を介してパソコン126から公開鍵格納レジスタ106に格納された公開鍵を受け取り、プログラムD128aを暗号プログラムD128bと公開鍵とを用いて暗号化し、ネットワーク回線127を介してパソコン126に転送するものである。
【0066】
プログラム128aは、暗号プログラムD128bと公開鍵格納レジスタ106に格納された公開鍵を用いて暗号化され、ネットワーク回線127、パソコン126、USBケーブル125、USBアップストリームポート124、外部バス102を介して半導体集積回路装置101に転送される。そして、半導体集積回路装置101内で、復号プログラムD123aと秘密鍵格納レジスタ107に格納された秘密鍵とを用いて復号されるものである。
【0067】
D128bは暗号プログラムであり、公開鍵格納レジスタ106に格納された公開鍵を用いてプログラムD128aを暗号化するものである。
【0068】
情報機器140は、半導体集積回路装置101、周辺機器150、フラッシュメモリ123a、及びUSBアップストリームポート124を有している。
【0069】
周辺機器150は、サウンドモジュール151、ビデオモジュール152を有しており、半導体集積回路装置101内のIOポート122に接続されている。
【0070】
サウンドモジュール151は、半導体集積回路装置101のIOポート122に接続され、データ転送の送受信、制御信号の受信を通じて、サウンドの再生、記録等を行う。
【0071】
ビデオモジュール152は、半導体集積回路装置101のIOポート122に接続され、データ転送の送受信、制御信号の受信を通じて、動画像の再生を行う。
【0072】
次に、図2を用いて、暗号化されたプログラムを復号してプログラムD128aを生成し、プログラムD128aを実行する手順について概説する。
【0073】
図2は、第1の実施形態における暗号化されたプログラムの復号の手順を示すフローチャートである。
【0074】
まず、ステップST201において、CPU103aは復号プログラムD123aと暗号化されたプログラムとを内蔵RAM104への転送を行う。
【0075】
次に、その転送が終了すると、ステップST202に進んで、CPU103aはプログラム復号実行フラグ112FとRAMコピーフラグ113Fとをセットする。このとき、バスポート110aは内部バス109と外部バス102との分離を行う。
【0076】
次に、その分離後、ステップST203に進んで、DMAコントローラ118aは内蔵RAM104上の復号プログラムD123aと暗号化されたプログラムとの内蔵RAM105への転送を行う。
【0077】
次に、その転送が終了すると、ステップST204に進んで、CPU103aはRAMコピーフラグ113Fをリセットする。ここから、後述するステップST206が終了するまで、CSディスパッチャ114aはチップセレクト信号116Sをアサートしない。
【0078】
次に、ステップST205に進んで、CPU103aは復号プログラムD123aを実行し、秘密鍵格納レジスタ107に格納された秘密鍵を用いて暗号化されたプログラムを復号してプログラムD128aを生成する。そして、生成されたプログラムD128aを内蔵RAM105に書き込む。
【0079】
次に、ステップST206に進んで、CPU103aはプログラムD128aを実行する。
【0080】
最後に、ステップST207に進んで、CPU103aはプログラム復号実行フラグ112Fをリセットする。プログラム復号実行フラグ112Fがリセットされるとき、汎用レジスタコントローラ119aは汎用レジスタ120aをリセットする。プログラム復号実行フラグ112aがリセットされると、バスポート110aは内部バス109と外部バス102とを接続する。また、CSディスパッチャ114aはチップセレクト信号115Sをチップセレクト信号116Sとして出力し、チップセレクト信号117Sをネゲートする。
【0081】
チップセレクト信号116Sは、復号プログラムD123aが実行されプログラムD128aの生成がなされているときはアサートされないので、復号中のデータやプログラムD128aが内蔵RAM104に記憶されることはない。さらに、チップセレクト信号117Sは、バスポート110aが外部バス102と内部バス109とを接続しているときはネゲートされるので、復号中のデータやプログラムD128aが外部から観測されることはない。
【0082】
以上のように第1の実施形態によると、復号プログラムを保持するための不揮発性のメモリを半導体集積回路装置の内部に備える必要がなり、コストを低減することができる。また、復号中のプログラム及びデータを外部から観測されることなく、暗号化されたプログラムを復号し実行することができ、暗号化されたプログラムがハッキングされる可能性を低減できる。
【0083】
(第2の実施形態)
図3は第2の実施形態に係る半導体集積回路装置301の構成を説明するためのブロック図である。
【0084】
図3に示した半導体集積回路301は、図1に示した半導体集積回路装置101と比べ、メモリポート302(第1のメモリポートに対応する)及び303(第2のメモリポートに対応する)をさらに備えている点で相違する。また、セキュリティコントローラ111bは、プログラム復号実行フラグ112Fを格納するフラグ格納部113bのみを有している点で、図1に示したセキュリティコントローラ111aと相違する。なお、その他の要素は、図1に示した要素と同様の動作を行うので、その説明は繰り返さない。
【0085】
メモリポート302は、プログラム復号実行フラグ112Fがセットされているとき、セキュリティコントローラからの制御により内蔵RAM104への書き込みを停止する。すなわち、プログラムの復号中、復号化されたプログラムの実行中は内蔵RAM104へデータを書き込むことはできない。
【0086】
メモリポート303は、プログラム復号実行フラグ112Fがリセットされているとき、セキュリティコントローラ111bにより内蔵RAM105へのアクセスを停止する。すなわち、バスポート110bが内部バス109と外部バス102とを接続している間は内蔵RAM105へのアクセスはできない。したがって、内蔵RAM105に書き込まれる復号化されたプログラムや復号処理の実行中のデータが外部から観測されることはない。
【0087】
次に、図4を用いて、暗号化されたプログラムを復号してプログラムD128aを生成し、プログラムD128aを実行する手順について説明する。
【0088】
図4は、第2の実施形態における暗号化されたプログラムの復号の手順を示すフローチャートである。
【0089】
まず、ステップST201において、CPU103bは復号プログラムD123aと暗号化されたプログラムとの内蔵RAM104への転送を行う。
【0090】
次に、その転送が終了すると、ステップST402に進んで、CPU103bはプログラム復号実行フラグ112Fをセットする。このとき、バスポート110bは内部バス109と外部バス102との分離を行う。また、メモリポート302は内蔵RAM104への書き込みを停止し、メモリポート303は内蔵105へのアクセスを許可する。
【0091】
次に、ステップST205に進んで、CPU103bは復号プログラムD123aを実行し、秘密鍵格納レジスタ107に格納された秘密鍵を用いて暗号化されたプログラムを復号してプログラムD128aを生成し、内蔵RAM105に書き込む。
【0092】
次に、ステップST206に進んで、CPU103bはプログラムD128aを実行する。
【0093】
最後に、プログラムD128aの実行が終了すると、ステップST207に進んで、プログラム復号実行フラグ112Fをリセットする。プログラム復号実行フラグ112Fがリセットされるとき、汎用レジスタコントローラ119bはセキュリティコントローラ111bからの制御により汎用レジスタ120bをリセットする。プログラム復号実行フラグ112Fがリセットされると、バスポート110bは内部バス109と外部バス102とを接続する。また、メモリポート302は、内蔵RAM104への書き込みを許可し、メモリポート303は内蔵RAM105へのアクセスを停止する。
【0094】
半導体集積回路装置301では、メモリポート302は、復号プログラムD123aを実行し、プログラムD128aを生成しているときは内蔵RAM104への書き込みを停止しているので、復号中のデータやプログラムD128aが内蔵RAM104に記憶されることはない。さらに、メモリポート303は、バスポート110が外部バス102と内部バス109とを接続しているときは内蔵RAM105へのアクセスを停止しているので、復号中のデータやプログラムD128aが外部に出力されることはない。
【0095】
以上のように第2の実施形態によると、復号プログラムを保持するための不揮発性のメモリを半導体集積回路装置の内部に備える必要がなり、コストを低減することができる。また、復号中のプログラム及びデータを外部から観測されることなく、暗号化されたプログラムを復号し実行することができ、暗号化されたプログラムがハッキングされる可能性を低減できる。
【0096】
(第3の実施形態)
図5は、第3の実施形態に係る半導体集積回路装置501の構成を説明するためのブロック図である。
【0097】
図5に示す半導体集積回路装置501は、図1に示した半導体集積回路装置101と比べ、メモリポート402をさらに備えた点で相違する。また、セキュリティコントローラ111cは、プログラム復号実行フラグ112Fを格納するフラグ格納部113cと、RAM初期化部502(メモリ初期化部に対応する)とを有する点で、図1に示したセキュリティコントローラ111aと相違する。なお、その他の要素は、図1に示した要素と同様の動作を行うので、その説明は繰り返さない。
【0098】
RAM初期化部502は、プログラム復号実行フラグ112Fがリセットされる直前に、内蔵RAM105上のすべての領域に”1”を書き込んでデータを消去する。これにより、内蔵RAM105に書き込まれた復号されたプログラムや復号中のデータが外部から観測できないようにする。
【0099】
次に、図6を用いて、暗号化されたプログラムを復号してプログラムD128aを生成し、プログラムD128aを実行する手順について説明する。
【0100】
図6は、第3の実施形態における暗号化されたプログラムの復号の手順を示すフローチャートである。
【0101】
まず、ステップST201において、CPU103cは復号プログラムD123aと暗号化されたプログラムとの内蔵RAM104への転送を行う。
【0102】
次に、その転送が終了すると、ステップST402に進んで、CPU103cはプログラム復号実行フラグ112Fをセットする。このとき、バスポート110cは内部バス109と外部バス102との分離を行う。また、このとき、メモリポート402は、セキュリティコントローラ111cからの制御によって内蔵RAM104への書き込みを停止する。
【0103】
次に、ステップST205に進んで、CPU103cは復号プログラムD123aを実行し、秘密鍵格納レジスタ107に格納された秘密鍵を用いて暗号化されたプログラムを復号してプログラムD128aを生成し、内蔵RAM105に書き込む。
【0104】
次に、生成されたプログラムD128aが内蔵RAM105に書き込まれると、ステップST206に進んで、CPU103cはプログラムD128aを実行する。
【0105】
次に、ステップST607に進んで、RAM初期化部502は内蔵RAM105上のすべての領域に”1”を書き込んでデータを消去する。
【0106】
最後に、内蔵RAM105上のデータが消去されると、ステップST207に進んで、プログラム復号実行フラグ112Fをリセットする。プログラム復号実行フラグ112Fがリセットされるとき、汎用レジスタコントローラ119cは、セキュリティコントローラ111cからの制御により汎用レジスタ120cをリセットする。プログラム復号実行フラグ112Fがリセットされるとバスポート110cは内部バス109と外部バス102とを接続する。またこのとき、メモリポート402は、セキュリティコントローラ111cからの制御によって内蔵RAM104への書き込みを許可する。
【0107】
半導体集積回路装置501では、メモリポート402は、復号プログラムD123aを実行し、プログラムD128aを生成しているときは内蔵RAM104への書き込みを停止しているので、復号中のデータやプログラムD128aが内蔵RAM104に記憶されることはない。さらに、RAM初期化部502によって、バスポート110が外部バス102と内部バス109を分離状態から接続状態に変える直前に内蔵RAM105上のデータをすべて消去しているので、復号中のデータやプログラムD128aが外部に出力されることはない。
【0108】
以上のように第3の実施形態によると、復号プログラムを保持するための不揮発性のメモリを半導体集積回路装置の内部に備える必要がなり、コストを低減することができる。また、復号中のプログラム及びデータを外部から観測されることなく、暗号化されたプログラムを復号し実行することができ、暗号化されたプログラムがハッキングされる可能性を低減できる。
【0109】
(第4の実施形態)
図7は第4の実施形態に係る半導体集積回路装置701の構成を説明するためのブロック図である。
【0110】
図7に示す半導体集積回路装置701は、図1に示した半導体集積回路装置101に比べて、復号鍵アクセスポート703及び復号鍵格納レジスタ702をさらに備えている点で相違する。また、PC128dは、プログラムD728a及び暗号プログラムD728bに加え、復号鍵暗号プログラムD728c、暗号鍵D728d、及び復号鍵D728eを保持する点で、図1に示したPC128aと相違する。フラグ格納部113dは、プログラム復号実行フラグ112F及びRAMコピーフラグ113Fに加え、復号鍵復号フラグ704Fを保持する点で、図1に示したフラグ格納部113aと相違する。フラッシュメモリ123dは、復号プログラム723aに加えて復号鍵復号プログラムD723bを保持する点で相違する。なお、その他の要素は、図1に示した要素と同様の動作を行うが、図1の場合と相違する部分を中心に説明する。
【0111】
CPU103dは、内蔵RAM104や105、またはフラッシュメモリ123d上に格納されたプログラムによって動作する。通常のプログラムを動作させるほか、暗号化された復号鍵、暗号化されたプログラムの復号や復号化されたプログラムを実行する。また、外部から入力される暗号化された復号鍵、暗号化されたプログラムや復号鍵復号プログラムD723b、復号プログラムD723aを内蔵RAM104に転送する。
【0112】
内蔵RAM104は、通常時、すなわち、復号プログラムD723a、復号鍵復号プログラムD723b、復号化されたプログラムのいずれもが実行されていないときに使用されるメモリである。暗号化された復号鍵を復号して復号鍵格納レジスタ702に保存する場合について説明する。まず、バスポート110dが外部バス102と内部バス109とを接続した状態で、CPU103dによって、暗号化された復号鍵とフラッシュメモリ123d内の復号鍵復号プログラムD723bとが、外部バス102及び内部バス109を経由して内蔵RAM104に転送される。次に、バスポート110dが外部バス102と内部バス109とを分離してから、DMA118dによって、暗号化された復号鍵と復号鍵復号プログラムD723bとが内蔵RAM104から内蔵RAM105に転送される。その後は、復号鍵復号プログラムD723bが終了するまでの間、セキュリティコントローラ111dによって、内部バス109から内蔵RAM104へのアクセスが禁止される。
【0113】
続いて、暗号化されたプログラムを復号して実行する場合について説明する。まず、バスポート110dが外部バス102と内部バス109とを接続した状態で、CPU103dによって、暗号化されたプログラムと復号プログラムD723aとが内蔵RAM104に転送される。次に、バスポート110dが外部バス102と内部バス109とを分離してから、DMA118dによって、暗号化されたプログラムと復号プログラムD723aとが内蔵RAM104から内蔵RAM105に転送される。その後は、復号化されたプログラムの実行が終了するまでの間、セキュリティコントローラ111dによって、内部バス109から内蔵RAM104へのアクセスが禁止される。
【0114】
内蔵RAM105は、復号鍵復号プログラムD723b、復号プログラムD723a、及び復号化されたプログラムD728bの実行時に使用される。暗号化された復号鍵を復号して復号鍵格納レジスタ702に保存する場合について説明する。バスポート110dが外部バス102と内部バス109とを分離した後に、DMA118dによって、暗号化された復号鍵と復号鍵復号プログラムD723bが内蔵RAM104から内蔵RAM105に転送される。そして、暗号化された復号鍵の復号中、CPU103dは内蔵RAM105を使用してその復号を行う。また、暗号化されたプログラムを復号して実行する場合について説明する。バスポート110dが外部バス102と内部バス109とを分離した後に、暗号化されたプログラムと復号プログラムD723aが内蔵RAM104から内蔵RAM105に転送される。暗号化されたプログラムの復号中及び復号化されたプログラムの実行中、CPU103dは内蔵RAM105を使用して暗号化されたプログラムの復号及び復号化されたプログラムの実行を行う。バスポート110dが外部バス102と内部バス109とを接続しているとき、内部バス109から内蔵RAM105へのアクセスが禁止される。したがって、内蔵RAM105に一時的に記憶される復号化された復号鍵D728eや復号化されたプログラムD728a、これらの復号処理の実行途中のデータが外部から観測されることはない。
【0115】
公開鍵格納レジスタ106は、公開鍵を格納した読み出し専用のレジスタである。公開鍵は、半導体集積回路装置701の外部にあるパソコン128dに転送され、復号鍵暗号プログラムD728cとともに復号鍵D728eを暗号化するために用いられる鍵である。暗号化された復号鍵は、復号鍵復号プログラムD723bと秘密鍵格納レジスタ107に格納された秘密鍵とを用いて復号される。
【0116】
秘密鍵格納レジスタ107は、秘密鍵を格納した読み出し専用のレジスタである。秘密鍵は、公開鍵を用いて暗号化された復号鍵を復号するときに用いられる鍵である。
【0117】
復号鍵格納レジスタ702は、復号鍵D728eを格納する書き込み及び読み出しが可能なレジスタである。復号鍵D728eは復号鍵復号プログラムD723bとともに、暗号化されたプログラムの復号に用いられる鍵である。
【0118】
秘密鍵アクセスポート108dは、復号鍵復号フラグ704FがセットされRAMコピーフラグ113Fがリセットされている間にのみ、CPU103dが秘密鍵格納レジスタ107から秘密鍵を読み出すことを可能にする。すなわち、復号鍵復号プログラムD723bが開始され、内蔵RAM104から内蔵RAM105への暗号化された復号鍵及び復号鍵復号プログラムD723bの転送が完了し、RAMコピーフラグ113Fがリセットされて、その後暗号化された復号鍵を復号している間にのみ、CPU103dが秘密鍵格納レジスタ107から秘密鍵を読み出すことを可能にし、それ以外のときは秘密鍵の読み出しを禁止する。
【0119】
復号鍵アクセスポート703は、復号鍵復号フラグ704Fがセットされ、かつRAMコピーフラグ113がリセットされている間は、復号鍵D728eの書き込みを可能にする。また、プログラム復号実行フラグ112Fがセットされ、かつRAMコピーフラグ113Fがリセットされている間は、復号鍵D728eを読み出すことを可能にする。それ以外のときは書き込み、読み出しをともに禁止する。すなわち、復号鍵復号プログラムD723bが開始され、内蔵RAM104から内蔵RAM105への暗号化された復号鍵と復号鍵復号プログラムD723bの転送が完了し、RAMコピーフラグ113Fがリセットされて、その後暗号化された復号鍵を復号している間は復号鍵D728eの書き込みを可能にする。また、復号プログラムD723aが開始され、内蔵RAM104から内蔵RAM105への暗号化されたプログラムと復号プログラムD723aの転送が完了し、RAMコピーフラグ113Fがリセットされて、その後暗号化されたプログラムを復号している間は復号鍵D728eの読み出しを可能にする。
【0120】
バスポート110dは、復号鍵復号フラグ704F、プログラム復号実行フラグ112F、RAMコピーフラグ113Fの少なくとも1つがセットされているときに、内部バス109と外部バス102とを分離する。このため、復号鍵復号プログラムD723b、復号プログラムD723a、復号化されたプログラムD728aの実行中は、内部バス109及び内蔵RAM105が外部から観測されることがない。その他の場合は内部バス109と外部バス102とを接続する。
【0121】
セキュリティコントローラ111dは、復号鍵復号フラグ704F、プログラム復号実行フラグ112F、及びRAMコピーフラグ113Fを保持するフラグ格納部と、CSディスパッチャ114dと、DMA118dとを内蔵する。
【0122】
復号鍵復号フラグ704Fは、復号鍵復号プログラムD723bの開始時にCPU103からセットされ、復号鍵の復号終了時にCPU103からリセットされる。復号鍵復号プログラムD723bが開始され、内蔵RAM104から内蔵RAM105への暗号化された復号鍵と復号鍵復号プログラムD723bの転送が完了し、RAMコピーフラグ113Fがリセットされる。その後、暗号化された復号鍵を復号している間は、内蔵RAM104へのアクセスを禁止し、内蔵RAM105、秘密鍵格納レジスタ107、及び復号鍵格納レジスタ702へのアクセスを可能にする。復号鍵復号フラグ704Fがリセットされると、内蔵RAM105、秘密鍵格納レジスタ107、及び復号鍵格納レジスタ702へのアクセスが禁止される。
【0123】
プログラム復号実行フラグ112Fは、復号プログラムD723aの開始時にCPU103dからセットされ、復号化されたプログラムの実行終了時にCPU103dからリセットされる。復号プログラムD723aが開始され、内蔵RAM104から内蔵RAM105への暗号化されたプログラムと復号プログラムD723aの転送が完了し、RAMコピーフラグ113Fがリセットされる。その後、暗号化されたプログラムを復号している間と復号化されたプログラムを実行している間は、内蔵RAM104へのアクセスを禁止し、内蔵RAM105及び復号鍵格納レジスタ702へのアクセスを可能にする。プログラム復号実行フラグ112Fがリセットされると、内蔵RAM105、秘密鍵格納レジスタ107及び復号鍵格納レジスタ702へのアクセスが禁止される。
【0124】
RAMコピーフラグ113Fは、復号鍵復号プログラムD723bまたは復号プログラムD723aの開始時にCPU103dからセットされ、内蔵RAM104から内蔵RAM105へのデータの転送終了時にCPU103dからリセットされる。
【0125】
CSディスパッチャ114dは、RAMコピーフラグ113Fがセットされているとき、チップセレクト信号116S及び117Sをともにアサートする。これにより、DMA118dによる内蔵RAM104から内蔵RAM105への暗号化された復号鍵、復号鍵復号プログラムD723b、暗号化されたプログラム、及び復号プログラムD723aの転送を可能にする。また、復号鍵復号フラグ704Fまたはプログラム復号実行フラグ112Fがセットされ、かつRAMコピーフラグ113Fがリセットされているとき、チップセレクト信号116Sをネゲートするとともにチップセレクト信号115Sをチップセレクト信号117Sとして転送する。これにより、暗号化された復号鍵の復号時、暗号化されたプログラムの復号時、及び復号化されたプログラムの実行時に内蔵RAM105へのアクセスを可能にする。いずれにもあてはまらないとき、チップセレクト信号115Sをチップセレクト信号116Sとして転送するとともにチップセレクト信号117Sをネゲートする。これにより、通常時、すなわち、復号鍵復号プログラムD723b、復号プログラムD723a、復号化されたプログラムD728aのいずれもが実行されていないとき、内蔵RAM105へのアクセスを禁止する。
【0126】
DMA118dは、RAMコピーフラグ113Fがセットされたとき、内蔵RAM104から内蔵RAM105への暗号化された復号鍵、復号鍵復号プログラムD723b、暗号化されたプログラム、復号プログラムD723aの転送を行い、転送が終了するとRAMコピーフラグ113Fをリセットする。
【0127】
汎用レジスタコントローラ119dは、復号鍵復号フラグ704Fまたはプログラム復号実行フラグ112Fがリセットされるとき汎用レジスタ120dをリセットする。したがって、暗号化された復号鍵の復号中、暗号化されたプログラムの復号中、及び復号化されたプログラムの実行中に汎用レジスタ120dに生成されたデータが外部から観測されることはない。
【0128】
復号鍵復号プログラムD723bは、フラッシュメモリ123dに保持されている。復号鍵暗号プログラムD728cと公開鍵とによって暗号化された復号鍵を復号する際に、半導体集積回路装置701内部の内蔵RAM104を経由して内蔵RAM105に転送され、秘密鍵格納レジスタ107に格納された秘密鍵とともに暗号化された復号鍵を復号するものである。
【0129】
復号プログラムD723aは、フラッシュメモリ123dに保持されている。暗号プログラムD728bと暗号鍵D728dとによって暗号化されたプログラムを復号する際に、半導体集積回路装置701内部の内蔵RAM104を経由して内蔵RAM105に転送され、復号鍵格納レジスタ702に格納された復号鍵とともに暗号化されたプログラムを復号するものである。
【0130】
プログラムD728aは、暗号プログラムD728bと暗号鍵D728dとを用いて暗号化され、ネットワーク回線127、パソコン126、USBケーブル125、USBアップストリームポート124、外部バス102を介して半導体集積回路装置701に転送される。そして、半導体集積回路装置701内において、復号プログラムD723aと復号鍵格納レジスタ107に格納された復号鍵D728eを用いて復号されるものである。
【0131】
暗号プログラムD728bは、暗号鍵D728dを用いてプログラムD728aを暗号化するものである。
【0132】
復号鍵暗号プログラムD728cは、公開鍵格納レジスタ106に格納された公開鍵とともに復号鍵D728eを暗号化するものである。
【0133】
暗号鍵D728dは、暗号プログラムD728bとともにプログラムD728aを暗号化するものである。
【0134】
復号鍵D728eは、復号プログラムD723aとともに、暗号鍵D728を用いて暗号化されたプログラムを復号するものである。
【0135】
情報機器740は、半導体集積回路装置701、周辺機器150、フラッシュメモリ123d、USBアップストリームポート124とを有している。
【0136】
次に、図8を用いて、暗号化された復号鍵を復号して復号鍵D728eを復号鍵格納レジスタ702に格納する手順について説明する。
【0137】
図8は、第4の実施形態における暗号化された復号鍵の復号の手順を示すフローチャートである。
【0138】
まず、ステップST801において、CPU103dは復号鍵復号プログラムD723bと暗号化された復号鍵とを内蔵RAM104への転送を行う。
【0139】
次に、その転送が終了すると、ステップST802に進んで、CPU103dは復号鍵復号フラグ704FとRAMコピーフラグ113Fとをセットする。このとき、バスポート110dは内部バス109と外部バス102との分離を行う。
【0140】
次に、その分離後、ステップST803に進んで、DMA118dは内蔵RAM104上の復号鍵復号プログラムD723bと暗号化された復号鍵との内蔵RAM105への転送を行う。
【0141】
次に、その転送が終了すると、ステップST804に進んで、CPU103dはRAMコピーフラグ113Fをリセットする。ここから、後述するステップST805が終了するまで、CSディスパッチャ114dはチップセレクト信号116Sをアサートしない。
【0142】
次に、ステップST805に進んで、CPU103dは秘密鍵格納レジスタ107に格納された秘密鍵を用いて復号鍵復号プログラムD723bを実行し、暗号化された復号鍵を復号して復号鍵D728eを生成し、復号鍵格納レジスタ702へ書き込む。
【0143】
最後に、ステップST806に進んで、復号鍵復号フラグ704Fをリセットする。復号鍵復号フラグ704Fがリセットされるとき、汎用レジスタコントローラ119dは汎用レジスタ120dをリセットする。復号鍵復号フラグ704Fがリセットされると、バスポート110dは内部バス109と外部バス102とを接続する。また、CSディスパッチャ114dはチップセレクト信号115Sをチップセレクト信号116Sとして転送し、チップセレクト信号117Sをネゲートする。
【0144】
図9は、復号鍵復号フラグ704F、プログラム復号実行フラグ112F、及びRAMコピーフラグ113Fの状態に対応するバスポート110d、秘密鍵アクセスポート108d、復号鍵アクセスポート703、チップセレクト信号116S及び117Sの状態を示す。
【0145】
図9において、バスポート110d、秘密鍵アクセスポート108d、復号鍵アクセスポート703がデータの転送を可能にする場合にはオープンと表記し、そのデータの転送が可能でない場合にはクローズと表記している。また、チップセレクト信号116S及び117Sとしてチップセレクト信号115S上の信号を転送する場合、CS115と表記している。
【0146】
図9に示すように、バスポート110dが外部バス102と内部バス109とを接続しているときは、秘密鍵格納レジスタ107及び復号鍵格納レジスタ702へのアクセスはできない。また、チップセレクト信号116Sは、復号鍵復号プログラムD723bが実行され、復号鍵D728eを生成しているときはアサートされない。このため、復号中のデータや秘密鍵、復号鍵D728eが内蔵RAM104に記憶されることはない。さらに、チップセレクト信号117Sは、バスポート110dが外部バス102と内部バス109とを接続しているときはネゲートされているので、復号中のデータや秘密鍵、復号鍵D728eが外部に出力されることはない。
【0147】
次に、図10を用いて、暗号化されたプログラムを復号してプログラムD728aを生成し、プログラムD728aを実行する手順について説明する。
【0148】
図10は、第4の実施形態における暗号化されたプログラムの復号の手順を示すフローチャートである。
【0149】
まず、ステップST1001において、CPU103dは復号プログラムD723aと暗号化されたプログラムとを内蔵RAM104に転送する。
【0150】
次に、その転送が終了すると、ステップST1002に進んで、CPU103dはプログラム復号実行フラグ112F、RAMコピーフラグ113Fをセットする。このとき、バスポート110dは内部バス109と外部バス102との分離を行う。
【0151】
次に、その分離後、ステップST1003に進んで、DMA118dは内蔵RAM104上の復号プログラムD723aと暗号化されたプログラムとの内蔵RAM105への転送を行う。
【0152】
次に、その転送が終了すると、ステップST1004に進んで、CPU103dはRAMコピーフラグ113Fをリセットする。ここから、後述するステップST1006が終了するまで、CSディスパッチャ114dはチップセレクト信号116Sをアサートしない。
【0153】
次に、ステップST1005に進んで、CPU103dは復号鍵D728eを用いて復号プログラムD723aを実行し、暗号化されたプログラムを復号してプログラムD728aを生成する。そして、生成されたプログラムD728aを内蔵RAM105に書き込む。
【0154】
次に、ステップST1006に進んで、CPU103dはプログラムD728aを実行する。
【0155】
最後に、ステップST1007に進んで、CPU103dはプログラム復号実行フラグ112Fをリセットする。プログラム復号実行フラグ112Fがリセットされるとき、汎用レジスタコントローラ119dは汎用レジスタ120dをリセットする。プログラム復号実行フラグ112Fがリセットされると、バスポート110dは内部バス109と外部バス102とを接続する。また、CSディスパッチャ114dはチップセレクト信号115Sをチップセレクト信号116Sとして転送し、チップセレクト信号117Sをネゲートする。
【0156】
上記図9で示したように、チップセレクト信号116Sは、復号プログラムD723aを実行し、プログラムD728aを生成しているときはアサートされない。このため、復号中のデータや復号鍵D728e、プログラムD728aが内蔵RAM104に記憶されることはない。さらに、チップセレクト信号117Sは、バスポート110dが外部バス102と内部バス109とを接続しているときはネゲートされるので、復号中のデータや復号鍵D728e、プログラムD728aが外部に出力されることはない。
【0157】
このように、復号プログラムを保持するための不揮発性のメモリを半導体集積回路装置の内部に備える必要がなり、コストを低減することができる。また、復号中のプログラム及びデータを外部から観測されることなく、暗号化されたプログラムを復号し実行することができ、暗号化されたプログラムがハッキングされる可能性を低減できる。
【0158】
さらに、暗号化されたプログラムを転送する側で暗号プログラムや暗号強度の選択することができる。
【0159】
<プログラムの引き渡し方法及びシステム>
図11〜図17は、プログラム引き渡しシステム及びその方法を説明するための図であって、本実施形態である第4の実施形態を例にして以下に説明する。
【0160】
図11〜図17は、プログラムの使用者側が用いる情報機器内の半導体集積回路装置701(第2の装置に対応する)と、プログラムの開発者側が用いるPC128d(第1の装置に対応する)との間で、プログラムを暗号化し、暗号化されたプログラムを復号するまでのデータのやりとりを示している。
【0161】
まず、図11に示すように、使用者側の半導体集積回路装置701は、公開鍵格納レジスタ106に格納された公開鍵D106を開発者側のPC128dに転送する。
【0162】
次に、図12に示すように、開発者側のPC128dは公開鍵D106と復号鍵暗号プログラムD728cとを用いて復号鍵D728eを暗号化し、暗号化された復号鍵1201を生成する。
【0163】
次に、図13に示すように、開発者側のPC128dは暗号化された復号鍵1201を使用者側の半導体集積回路装置701に転送する。
【0164】
次に、図14に示すように、使用者側の半導体集積回路装置701は、秘密鍵格納レジスタ107に格納された秘密鍵D107と復号鍵復号プログラムD723bとを用いて、暗号化された復号鍵1201を復号し、復号鍵D728eを復号鍵格納レジスタ702に格納する。
【0165】
次に、図15に示すように、開発者側のPC128dは暗号鍵D728dと暗号プログラムD728bとを用いてプログラムD728aを暗号化し、暗号化されたプログラム1501を生成する。
【0166】
次に、図16に示すように、開発者側のPC128dは暗号化されたプログラム1501を使用者側の半導体集積回路装置701に転送する。
【0167】
最後に、図17に示すように、使用者側の半導体集積回路装置701は、暗号化されたプログラム1501を復号鍵D728eと復号プログラムD723aとを用いて復号し、そして、復号化されたプログラムD728aを実行する。
【0168】
このようにすることで、暗号化されたプログラムは、プログラム開発者側の所有する暗号鍵により暗号化されて使用者側に渡され、プログラム開発者側の所有する復号鍵により復号化することができるので、プログラム開発者側の所望する暗号強度によりプログラムを暗号化して渡すことが可能になる。
【0169】
なお、以上で説明した第1〜第4の実施形態における半導体集積回路では、内蔵RAM104、内蔵RAM105の制御をチップセレクト信号を用いて行う場合について説明したが、ライトイネーブル信号・リードイネーブル信号を用いた場合であっても、同様に、各実施形態において本発明は実施可能であることは言うまでもない。
【0170】
【発明の効果】
以上のように、本発明に係る半導体集積回路装置によると、復号プログラムを保持するための不揮発性のメモリを半導体集積回路装置の内部に備える必要がなくなり、コストを低減することができる。また、復号中のプログラム及びデータを外部から観測されることなく、暗号化されたプログラムを復号し実行することができ、暗号化されたプログラムがハッキングされる可能性を低減できる。
【図面の簡単な説明】
【図1】第1の実施形態における半導体集積回路装置の構成を説明するためのブロック図である。
【図2】暗号化されたプログラムの復号の手順を示すフローチャートである。
【図3】第2の実施形態における半導体集積回路装置の構成を説明するためのブロック図である。
【図4】暗号化されたプログラムの復号の手順を示すフローチャートである。
【図5】第3の実施形態における半導体集積回路装置の構成を説明するためのブロック図である。
【図6】暗号化されたプログラムの復号の手順を示すフローチャートである。
【図7】第4の実施形態における半導体集積回路装置の構成を説明するためのブロック図である。
【図8】暗号化された復号鍵の復号の手順を示すフローチャートである。
【図9】フラグの状態、バスポート、及びチップセレクト信号の状態の相関を示す図である。
【図10】暗号化されたプログラムの復号の手順を示すフロチャートである。
【図11】使用者側からプログラム開発者側への公開鍵の転送を示す図である。
【図12】復号鍵の暗号化を示す図である。
【図13】プログラム開発者側から使用者側への暗号化された復号鍵の転送を示す図である。
【図14】暗号化された復号鍵の復号を示す図である。
【図15】プログラムの暗号化を示す図である。
【図16】プログラム開発者側から使用者側への暗号化されたプログラムの転送を示す図である。
【図17】暗号化されたプログラムの復号を示す図である。
【図18】従来の半導体集積回路装置の構成を示すブロック図である。
【符号の説明】
101 半導体集積回路(第2の装置)
301、401 半導体集積回路
701 半導体集積回路装置(第2の装置)
102 外部バス
103a〜103d CPU
104 内蔵RAM(第1のメモリ)
105 内蔵RAM(第2のメモリ)
106 公開鍵格納レジスタ
107 秘密鍵格納レジスタ
108a、108d 秘密鍵アクセスポート
109 内部バス
110a〜110d バスポート
111a〜111d セキュリティコントローラ
113a、113d フラグ格納部
114a、104d チップセレクトディスパッチャ
115S〜117S チップセレクト信号
118a、118d DMAコントローラ
119a〜119d 汎用レジスタコントローラ
120a〜120d 汎用レジスタ
121 IOバス
122 IOポート
123a、123d フラッシュメモリ
124 USBアップストリームポート
125 USBケーブル
126 パソコン
127 ネットワーク回線
128a、128d パソコン(第1の装置)
140、740 情報機器
150 周辺機器
151 サウンドモジュール
152 ビデオモジュール
302 メモリポート(第1のメモリポート)
303 メモリポート(第2のメモリポート)
502 RAM初期化部(メモリ初期化部)
702 復号鍵格納レジスタ
703 復号鍵アクセスポート
D123a 復号プログラム
D123b 復号鍵復号プログラム
D128a、D728a プログラム
D128b、D728b 暗号プログラム
D128c、D728c 復号鍵暗号プログラム
D728d 暗号鍵
D728e 復号鍵
112F プログラム復号実行フラグ(第2のフラグ)
113F RAMコピーフラグ(第1のフラグ)
704F 復号鍵復号フラグ
Claims (12)
- バスとの間でデータの入出力を行う第1のメモリと、
前記バスとの間でデータの入出力を行う第2のメモリと、
秘密鍵を保持する秘密鍵保持部と、
外部からの前記バスへのアクセスを制御するバスポートと、
前記バスポートを経由して暗号化されたプログラムと復号プログラムとを前記第1のメモリに格納させ、前記復号プログラムと前記秘密鍵とを用いて前記暗号化されたプログラムの復号を行い、復号化されたプログラムを実行するCPUと、
前記暗号化されたプログラムと前記復号プログラムとが前記第1のメモリに格納されると、前記バスポートに対して外部からのアクセスを禁止させ、前記第1及び第2のメモリへのアクセスを許可して前記暗号化されたプログラムと前記復号プログラムとの前記第1のメモリから前記第2のメモリへの転送を行い、
前記転送が終了すると、前記第1のメモリへのアクセスを禁止し、
前記復号及び前記復号化されたプログラムの実行が終了すると、前記第2のメモリへのアクセスを禁止する制御部とを備える
ことを特徴とする半導体集積回路装置。 - 請求項1に記載の半導体集積回路装置において、
前記CPUから前記秘密鍵保持部へのアクセスを制御する秘密鍵アクセスポートをさらに備え、
前記秘密鍵アクセスポートは、
前記転送が終了すると前記秘密鍵保持部へのアクセスを許可し、前記復号化されたプログラムの実行が終了すると前記秘密鍵保持部へのアクセスを禁止するものである
ことを特徴とする半導体集積回路装置。 - 請求項1に記載の半導体集積回路装置において、
前記CPUは、
レジスタを含み、
前記復号化されたプログラムの実行が終了すると、前記レジスタに格納されたデータを消去するものである
ことを特徴とする半導体集積回路装置。 - 請求項1に記載の半導体集積回路装置において、
前記制御部は、
前記第1及び第2のメモリへのチップセレクト信号を制御することによって、前記第1及び第2のメモリへのアクセスを制御するものである
ことを特徴とする半導体集積回路装置。 - 請求項1に記載の半導体集積回路装置において、
前記制御部は、
第1のフラグと第2のフラグとを格納するフラグ格納部を含み、
前記第1のフラグがセットされているときには前記第1のメモリ及び前記第2のメモリへのアクセスを許可し、前記第1のフラグがリセットされ、前記第2のフラグがセットされているときには前記第1のメモリへのアクセスを禁止し、前記第1及び第2のフラグのいずれもがリセットされているときには、前記第2のメモリへのアクセスを禁止するものであり、
前記バスポートは、
前記第1または第2のフラグのうち少なくとも1つがセットされているときに、外部からのアクセスを禁止するものであり、
前記CPUは、
前記暗号化されたプログラム及び前記復号プログラムが前記第1のメモリに入力されると前記第1のフラグ及び前記第2のフラグをセットし、前記転送が終了すると前記第1のフラグをリセットし、前記復号化されたプログラムの実行が終了すると前記第2のフラグをリセットするものである
ことを特徴とする半導体集積回路装置。 - バスとの間でデータの入出力を行う第1のメモリと、
前記バスとの間でデータの入出力を行う第2のメモリと、
前記バスと前記第1のメモリとの間に接続され、前記バスからの前記第1のメモリへのアクセスを制御する第1のメモリポートと、
前記バスと前記第2のメモリとの間に接続され、前記バスからの前記第2のメモリへのアクセスを制御する第2のメモリポートと、
秘密鍵を保持する秘密鍵保持部と、
外部からの前記バスへのアクセスを制御するバスポートと、
レジスタを有し、前記バスポートを経由して暗号化されたプログラムと復号プログラムとの前記第1のメモリへの書き込みを行い、前記復号プログラムと前記秘密鍵とを用いて前記暗号化されたプログラムの復号を行い、復号化されたプログラムの前記第2のメモリへの書き込みを行い、復号化されたプログラムを実行するCPUと、
前記第1のメモリへの書き込みが終了すると、前記バスポートに対して外部からの前記バスへのアクセスを禁止させ、前記第1のメモリポートに対して前記第1のメモリへの書き込みを禁止させ、前記第2のメモリポートに対して前記第2のメモリへのアクセスを許可させ、
前記復号化されたプログラムの実行が終了すると、前記CPUに対して前記レジスタに格納されたデータを消去させ、前記秘密鍵保持部へのアクセスを禁止させるとともに、前記第2のメモリポートに対して前記第2のメモリへのアクセスを禁止させる制御部とを備える
ことを特徴とする半導体集積回路装置。 - バスとの間でデータの入出力を行う第1のメモリと、
前記バスとの間でデータの入出力を行う第2のメモリと、
前記バスと前記第1のメモリとの間に接続され、前記バスからの前記第1のメモリへのアクセスを制御するメモリポートと、
秘密鍵を保持する秘密鍵保持部と、
外部からの前記バスへのアクセスを制御するバスポートと、
レジスタを有し、前記バスポートを経由して暗号化されたプログラムと復号プログラムとの前記第1のメモリへの書き込みを行い、前記復号プログラムと前記秘密鍵とを用いて前記暗号化されたプログラムの復号を行い、復号化されたプログラムの前記第2のメモリへの書き込みを行い、復号化されたプログラムを実行するCPUと、
前記第2のメモリ上のデータを消去するメモリ初期化部を含み、前記第1のメモリへの書き込みが終了すると、前記バスポートに対して外部からの前記バスへのアクセスを禁止させ、前記メモリポートに対して前記第1のメモリへの書き込みを禁止させ、
前記復号化されたプログラムの実行が終了すると、前記CPUに対して前記レジスタに格納されたデータを消去させ、前記秘密鍵保持部へのアクセスを禁止させ、前記メモリ初期化部に対して前記第2のメモリ上のデータを消去させるものである
ことを特徴とする半導体集積回路装置。 - バスとの間でデータの入出力を行う第1のメモリと、
前記バスとの間でデータの入出力を行う第2のメモリと、
秘密鍵を保持する秘密鍵保持部と、
復号鍵を保持する復号鍵保持部と、
外部からの前記バスへのアクセスを制御するバスポートと、
レジスタを含み、前記バスポートを経由して暗号化された復号鍵と復号鍵復号プログラムとを前記第1のメモリへ格納する第1の格納を行い、前記復号鍵復号プログラムと前記秘密鍵とを用いて前記暗号化された復号鍵を復号する第1の復号を行い、復号化された復号鍵の前記復号鍵保持部への書き込みを行い、暗号化されたプログラムと復号プログラムとを前記第1のメモリへ格納する第2の格納を行い、前記復号プログラムと前記復号化された復号鍵とを用いて前記暗号化されたプログラムを復号する第2の復号を行い、復号化されたプログラムを実行するCPUと、
前記第1のメモリへの前記第1の格納が終了すると、前記バスポートに対して外部からの前記バスへのアクセスを禁止させ、前記第1のメモリ及び前記第2のメモリへのアクセスを許可して前記暗号化された復号鍵と前記復号鍵復号プログラムとの前記第1のメモリから前記第2のメモリへの転送を行い、
この転送が終了すると、前記秘密鍵保持部へのアクセスを許可し、前記第1のメモリへのアクセスを禁止し、
前記第1の復号が終了すると、前記CPUに対して前記レジスタに格納されたデータを消去させ、前記秘密鍵保持部へのアクセスを禁止させるとともに、前記第2のメモリへのアクセスを禁止し、前記第1のメモリへのアクセスを許可し、前記バスポートに対して外部からの前記バスへのアクセスを許可し、
前記第1のメモリへの前記第2の格納が終了すると、前記バスポートに対して外部からの前記バスへのアクセスを禁止させ、前記第2のメモリへのアクセスを許可して前記暗号化されたプログラムと前記復号プログラムとの前記第1のメモリから前記第2のメモリへの転送を行い、
この転送が終了すると、前記復号鍵保持部へのアクセスを許可し、前記第1のメモリへのアクセスを禁止し、
前記第2の復号と前記復号化されたプログラムの実行が終了すると、前記CPUに対して前記レジスタに格納されたデータを消去させ、前記秘密鍵保持部へのアクセスを禁止させ、前記第2のメモリへのアクセスを禁止する制御部とを備える
ことを特徴とする半導体集積回路装置。 - 第1の装置と第2の装置との間でプログラムの引き渡しを行うプログラム引き渡し方法であって、
前記第2の装置から前記第1の装置への公開鍵の転送を行うステップと、
前記第2の装置にその外部から復号プログラムを転送するステップと、
前記第1の装置において、前記公開鍵を用いて、前記プログラムの暗号化を行い、暗号化されたプログラムを前記第2の装置に転送するステップと、
前記第2の装置において、前記公開鍵に対応する秘密鍵と前記復号プログラムとを用いて、前記暗号化されたプログラムを復号するステップとを備える
ことを特徴とするプログラム引き渡し方法。 - 第1の装置と第2の装置との間でプログラムの引き渡しを行うプログラム引き渡し方法であって、
前記第2の装置から前記第1の装置への公開鍵の転送を行うステップと、
前記第1の装置において、前記公開鍵を用いて、復号鍵の暗号化を行い、暗号化された復号鍵を前記第2の装置に転送するステップと、
前記第2の装置において、前記公開鍵に対応する秘密鍵を用いて、前記暗号化された復号鍵を復号するステップと、
前記第1の装置において、前記復号鍵に対応する暗号鍵を用いて、前記プログラムの暗号化を行い、暗号化されたプログラムを前記第2の装置に転送するステップと、
前記第2の装置において、復号化された復号鍵を用いて、前記暗号化されたプログラムを復号するステップとを備える
ことを特徴とするプログラム引き渡し方法。 - 第1の装置と第2の装置とを備え、前記第1の装置と前記第2の装置との間でプログラムの引き渡しを行うプログラム引き渡しシステムであって、
前記第1の装置は、
前記プログラムを公開鍵を用いて暗号化し、その暗号化したプログラムを前記第2の装置への転送を行うものであり、
前記第2の装置は、
前記第1の装置によって暗号化されたプログラムを、前記公開鍵に対応する秘密鍵と、当該第2の装置の外部から転送された復号プログラムとを用いて復号するものである
ことを特徴とするプログラム引き渡しシステム。 - 第1の装置と第2の装置とを備え、前記第1の装置と前記第2の装置との間でプログラムの引き渡しを行うプログラム引き渡しシステムであって、
前記第1の装置は、
公開鍵を用いて、復号鍵を暗号化し、暗号化した復号鍵を前記第2の装置への転送を行い、
前記復号鍵に対応する暗号鍵を用いて、前記プログラムを暗号化し、暗号化したプログラムを前記第2の装置への転送を行うものであり、
前記第2の装置は、
前記公開鍵に対応する秘密鍵を用いて、前記第1の装置によって暗号化された復号鍵を復号し、復号化された復号鍵を用いて、前記第1の装置によって暗号化されたプログラムを復号するものである
ことを特徴とするプログラム引き渡しシステム。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002318172A JP4349788B2 (ja) | 2002-10-31 | 2002-10-31 | 半導体集積回路装置 |
US10/611,879 US7228436B2 (en) | 2002-10-31 | 2003-07-03 | Semiconductor integrated circuit device, program delivery method, and program delivery system |
CN200610009226.3A CN1822011A (zh) | 2002-10-31 | 2003-10-31 | 程序交付方法及其系统 |
CN200310113835.XA CN1248106C (zh) | 2002-10-31 | 2003-10-31 | 半导体集成电路装置 |
US11/598,039 US20070118761A1 (en) | 2002-10-31 | 2006-11-13 | Semiconductor integrated circuit device, program delivery method, and program delivery system |
US11/797,548 US20080155272A1 (en) | 2002-10-31 | 2007-05-04 | Semiconductor integrated circuit device, program delivery method, and program delivery system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002318172A JP4349788B2 (ja) | 2002-10-31 | 2002-10-31 | 半導体集積回路装置 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009133479A Division JP4865839B2 (ja) | 2009-06-02 | 2009-06-02 | 半導体集積回路装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004152123A true JP2004152123A (ja) | 2004-05-27 |
JP4349788B2 JP4349788B2 (ja) | 2009-10-21 |
Family
ID=32171258
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002318172A Expired - Fee Related JP4349788B2 (ja) | 2002-10-31 | 2002-10-31 | 半導体集積回路装置 |
Country Status (3)
Country | Link |
---|---|
US (3) | US7228436B2 (ja) |
JP (1) | JP4349788B2 (ja) |
CN (2) | CN1248106C (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006139517A (ja) * | 2004-11-11 | 2006-06-01 | Matsushita Electric Ind Co Ltd | 機密情報処理装置 |
JP2006350782A (ja) * | 2005-06-17 | 2006-12-28 | Fujitsu Ltd | プロセッサ及びシステム |
JP2009223611A (ja) * | 2008-03-17 | 2009-10-01 | Konami Digital Entertainment Co Ltd | 情報処理装置、情報処理方法、ならびに、プログラム |
JP2013097539A (ja) * | 2011-10-31 | 2013-05-20 | Mitsutoyo Corp | 制御装置および制御プログラム不正読み出し防止方法 |
JP2017521795A (ja) * | 2014-07-16 | 2017-08-03 | ビーエイイー・システムズ・インフォメーション・アンド・エレクトロニック・システムズ・インテグレイション・インコーポレーテッド | 重要なまたは機密扱いの技術情報および他のデータを記憶するためのフラッシュメモリを用いたデバイス |
US10387662B2 (en) | 2014-07-16 | 2019-08-20 | Jeffrey B. Canter | Flash memory device for storing sensitive information and other data |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4349788B2 (ja) * | 2002-10-31 | 2009-10-21 | パナソニック株式会社 | 半導体集積回路装置 |
US20050071656A1 (en) * | 2003-09-25 | 2005-03-31 | Klein Dean A. | Secure processor-based system and method |
TWI274282B (en) * | 2004-05-13 | 2007-02-21 | Mediatek Inc | Method and system of accessing instructions |
JP2005332221A (ja) * | 2004-05-20 | 2005-12-02 | Renesas Technology Corp | 記憶装置 |
CN100367197C (zh) * | 2004-05-24 | 2008-02-06 | 联发科技股份有限公司 | 指令撷取方法及其系统 |
US7536355B2 (en) * | 2004-06-10 | 2009-05-19 | Lsi Corporation | Content security system for screening applications |
JP4562464B2 (ja) * | 2004-09-07 | 2010-10-13 | 富士通株式会社 | 情報処理装置 |
JP4667108B2 (ja) * | 2005-04-11 | 2011-04-06 | パナソニック株式会社 | データ処理装置 |
WO2006130585A2 (en) * | 2005-06-01 | 2006-12-07 | Dennis Drews | Data security |
US20060294395A1 (en) * | 2005-06-28 | 2006-12-28 | Ogram Mark E | Executable software security system |
US8863230B1 (en) * | 2006-06-09 | 2014-10-14 | Xilinx, Inc. | Methods of authenticating a programmable integrated circuit in combination with a non-volatile memory device |
US7987358B1 (en) * | 2006-06-09 | 2011-07-26 | Xilinx, Inc. | Methods of authenticating a user design in a programmable integrated circuit |
JP2008060653A (ja) * | 2006-08-29 | 2008-03-13 | Matsushita Electric Ind Co Ltd | 制御装置 |
US8479021B2 (en) * | 2011-09-29 | 2013-07-02 | Pacid Technologies, Llc | Secure island computing system and method |
KR20140073384A (ko) * | 2012-12-06 | 2014-06-16 | 삼성전자주식회사 | 보안 부팅을 수행하는 칩 시스템과 이를 이용하는 화상형성장치 및 그 보안 부팅 방법 |
US9881161B2 (en) | 2012-12-06 | 2018-01-30 | S-Printing Solution Co., Ltd. | System on chip to perform a secure boot, an image forming apparatus using the same, and method thereof |
FR3050847B1 (fr) * | 2016-05-02 | 2019-04-05 | Morpho | Procede d'optimisation d'ecritures en memoire dans un dispositif |
US10896267B2 (en) * | 2017-01-31 | 2021-01-19 | Hewlett Packard Enterprise Development Lp | Input/output data encryption |
US10642970B2 (en) | 2017-12-12 | 2020-05-05 | John Almeida | Virus immune computer system and method |
US10614254B2 (en) | 2017-12-12 | 2020-04-07 | John Almeida | Virus immune computer system and method |
US10346608B2 (en) | 2017-12-12 | 2019-07-09 | John Almeida | Virus immune computer system and method |
JP7163656B2 (ja) * | 2018-07-30 | 2022-11-01 | 株式会社リコー | 配信システム、受信クライアント端末、配信方法 |
US10614232B2 (en) * | 2018-09-10 | 2020-04-07 | John Almeida | Storing and using multipurpose secret data |
US10892895B2 (en) * | 2018-09-10 | 2021-01-12 | Atense, Inc. | Storing and using multipurpose secret data |
EP4141722A1 (de) * | 2021-08-27 | 2023-03-01 | Siemens Aktiengesellschaft | Sicheres betreiben einer industriellen steuerungsvorrichtung zusammen mit einem ai-modul |
DE102023102691A1 (de) | 2023-02-03 | 2024-08-08 | btv technologies gmbh | Verfahren zum Beschreiben von Daten auf einen IC sowie System zur Ausführung des Verfahrens |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0314083A (ja) * | 1989-06-12 | 1991-01-22 | Toshiba Corp | 携帯可能電子装置 |
AU1265195A (en) * | 1993-12-06 | 1995-06-27 | Telequip Corporation | Secure computer memory card |
US5533123A (en) * | 1994-06-28 | 1996-07-02 | National Semiconductor Corporation | Programmable distributed personal security |
JPH0830558A (ja) | 1994-07-20 | 1996-02-02 | Fujitsu Ltd | 計算機システムにおける負荷分散方法及びそれを利用した計算機システム |
DE69532153T2 (de) * | 1994-09-30 | 2004-09-02 | Mitsubishi Corp. | Datenurheberrechtsverwaltungssystem |
EP0715241B1 (en) * | 1994-10-27 | 2004-01-14 | Mitsubishi Corporation | Apparatus for data copyright management system |
JPH08305558A (ja) * | 1995-04-27 | 1996-11-22 | Casio Comput Co Ltd | 暗号化プログラム演算装置 |
HRP970160A2 (en) * | 1996-04-03 | 1998-02-28 | Digco B V | Method for providing a secure communication between two devices and application of this method |
US5754762A (en) * | 1997-01-13 | 1998-05-19 | Kuo; Chih-Cheng | Secure multiple application IC card using interrupt instruction issued by operating system or application program to control operation flag that determines the operational mode of bi-modal CPU |
US6212635B1 (en) * | 1997-07-18 | 2001-04-03 | David C. Reardon | Network security system allowing access and modification to a security subsystem after initial installation when a master token is in place |
US6351536B1 (en) * | 1997-10-01 | 2002-02-26 | Minoru Sasaki | Encryption network system and method |
DE19757653C2 (de) * | 1997-12-15 | 2003-07-17 | Francotyp Postalia Ag | Verfahren und postalisches Gerät mit einer Chipkarten-Schreib/Leseeinheit zum Nachladen von Änderungsdaten per Chipkarte |
JO2117B1 (en) * | 1998-07-15 | 2000-05-21 | كانال + تيكنولوجيز سوسيته انونيم | A method and device for the secure communication of information between a group of audio-visual devices that operate with numbers |
WO2000057290A1 (fr) * | 1999-03-19 | 2000-09-28 | Hitachi, Ltd. | Processeur d'informations |
US6711677B1 (en) * | 1999-07-12 | 2004-03-23 | Hewlett-Packard Development Company, L.P. | Secure printing method |
US20010034839A1 (en) * | 1999-12-24 | 2001-10-25 | Guenter Karjoth | Method and apparatus for secure transmission of data and applications |
TW536672B (en) * | 2000-01-12 | 2003-06-11 | Hitachi Ltd | IC card and microcomputer |
US6952770B1 (en) * | 2000-03-14 | 2005-10-04 | Intel Corporation | Method and apparatus for hardware platform identification with privacy protection |
US7373507B2 (en) * | 2000-08-10 | 2008-05-13 | Plethora Technology, Inc. | System and method for establishing secure communication |
JP2002305250A (ja) * | 2001-02-02 | 2002-10-18 | Matsushita Electric Ind Co Ltd | 半導体集積回路および半導体集積回路に関するビジネス方法 |
GB0111521D0 (en) * | 2001-05-11 | 2001-07-04 | Amphion Semiconductor Ltd | A component for generating data encryption/decryption apparatus |
US20030149874A1 (en) * | 2002-02-06 | 2003-08-07 | Xerox Corporation | Systems and methods for authenticating communications in a network medium |
US20030159053A1 (en) * | 2002-02-19 | 2003-08-21 | Charles Fauble | Secure reconfigurable input device with transaction card reader |
US20030217258A1 (en) * | 2002-05-16 | 2003-11-20 | International Business Machines Corporation | Apparatus and method of using ephemeral asymmetric keys to exchange security data between hardware security modules |
US7296157B2 (en) * | 2002-07-10 | 2007-11-13 | Electronics For Imaging, Inc. | Methods and apparatus for secure document printing |
JP4349788B2 (ja) * | 2002-10-31 | 2009-10-21 | パナソニック株式会社 | 半導体集積回路装置 |
US20040259633A1 (en) * | 2003-04-16 | 2004-12-23 | Gentles Thomas A. | Remote authentication of gaming software in a gaming system environment |
-
2002
- 2002-10-31 JP JP2002318172A patent/JP4349788B2/ja not_active Expired - Fee Related
-
2003
- 2003-07-03 US US10/611,879 patent/US7228436B2/en not_active Expired - Fee Related
- 2003-10-31 CN CN200310113835.XA patent/CN1248106C/zh not_active Expired - Fee Related
- 2003-10-31 CN CN200610009226.3A patent/CN1822011A/zh active Pending
-
2006
- 2006-11-13 US US11/598,039 patent/US20070118761A1/en not_active Abandoned
-
2007
- 2007-05-04 US US11/797,548 patent/US20080155272A1/en not_active Abandoned
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006139517A (ja) * | 2004-11-11 | 2006-06-01 | Matsushita Electric Ind Co Ltd | 機密情報処理装置 |
JP4496061B2 (ja) * | 2004-11-11 | 2010-07-07 | パナソニック株式会社 | 機密情報処理装置 |
JP2006350782A (ja) * | 2005-06-17 | 2006-12-28 | Fujitsu Ltd | プロセッサ及びシステム |
JP4738068B2 (ja) * | 2005-06-17 | 2011-08-03 | 富士通セミコンダクター株式会社 | プロセッサ及びシステム |
JP2009223611A (ja) * | 2008-03-17 | 2009-10-01 | Konami Digital Entertainment Co Ltd | 情報処理装置、情報処理方法、ならびに、プログラム |
JP2013097539A (ja) * | 2011-10-31 | 2013-05-20 | Mitsutoyo Corp | 制御装置および制御プログラム不正読み出し防止方法 |
JP2017521795A (ja) * | 2014-07-16 | 2017-08-03 | ビーエイイー・システムズ・インフォメーション・アンド・エレクトロニック・システムズ・インテグレイション・インコーポレーテッド | 重要なまたは機密扱いの技術情報および他のデータを記憶するためのフラッシュメモリを用いたデバイス |
US10025728B2 (en) | 2014-07-16 | 2018-07-17 | Bae Systems Information And Electronic Systems Integration Inc. | Flash memory device for storing sensitive information and other data |
US10387662B2 (en) | 2014-07-16 | 2019-08-20 | Jeffrey B. Canter | Flash memory device for storing sensitive information and other data |
Also Published As
Publication number | Publication date |
---|---|
CN1822011A (zh) | 2006-08-23 |
JP4349788B2 (ja) | 2009-10-21 |
US7228436B2 (en) | 2007-06-05 |
CN1248106C (zh) | 2006-03-29 |
US20070118761A1 (en) | 2007-05-24 |
US20040088554A1 (en) | 2004-05-06 |
US20080155272A1 (en) | 2008-06-26 |
CN1499360A (zh) | 2004-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4349788B2 (ja) | 半導体集積回路装置 | |
US8108941B2 (en) | Processor, memory, computer system, system LSI, and method of authentication | |
KR100906175B1 (ko) | 프로세서에서 데이터 보안성을 갖는 메모리 장치 | |
US8452988B2 (en) | Secure data storage for protecting digital content | |
JP3804670B2 (ja) | 半導体装置、電子機器及び半導体装置のアクセス制御方法 | |
US20100217964A1 (en) | Method and apparatus for controlling enablement of jtag interface | |
JPH08305558A (ja) | 暗号化プログラム演算装置 | |
JPH113284A (ja) | 情報記憶媒体およびそのセキュリティ方法 | |
US7076667B1 (en) | Storage device having secure test process | |
JP2005535958A (ja) | デジタル著作権管理のための集積回路 | |
US20100293392A1 (en) | Semiconductor device having secure memory controller | |
JP4717398B2 (ja) | データ処理装置の制御方法 | |
US20080005590A1 (en) | Memory system | |
JP2007304847A (ja) | メモリ装置 | |
JP2007310601A (ja) | マイクロコンピュータおよびそのソフトウェア保護方法 | |
JP2010511956A (ja) | スマートカードに基づく複製防止機能を有するデータ保存装置、そのデータ保存方法及び伝送方法 | |
JPH08185361A (ja) | 半導体集積回路装置 | |
JP2008009717A (ja) | 情報処理端末およびコンテンツ書き込みシステム | |
JP2001077805A (ja) | セキュリティ装置、メモリ装置、データ処理装置および方法 | |
JP4865839B2 (ja) | 半導体集積回路装置 | |
US8397081B2 (en) | Device and method for securing software | |
JP4596247B2 (ja) | データ処理回路、データ処理装置、データ処理方法、データ処理制御方法、データ処理プログラム及びデータ処理制御プログラム | |
US20080019506A1 (en) | Encryption/Decryption Apparatus, System and Method | |
JP2007072957A (ja) | リードライト装置およびデバッグシステム | |
JP2006209690A (ja) | データ処理回路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20051026 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090421 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090602 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20090623 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090721 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120731 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120731 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130731 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |