[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP2004152123A - 半導体集積回路装置、並びにプログラム引き渡し方法及びそのシステム - Google Patents

半導体集積回路装置、並びにプログラム引き渡し方法及びそのシステム Download PDF

Info

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
Application number
JP2002318172A
Other languages
English (en)
Other versions
JP4349788B2 (ja
Inventor
Kenichi Kawaguchi
謙一 川口
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2002318172A priority Critical patent/JP4349788B2/ja
Priority to US10/611,879 priority patent/US7228436B2/en
Priority to CN200610009226.3A priority patent/CN1822011A/zh
Priority to CN200310113835.XA priority patent/CN1248106C/zh
Publication of JP2004152123A publication Critical patent/JP2004152123A/ja
Priority to US11/598,039 priority patent/US20070118761A1/en
Priority to US11/797,548 priority patent/US20080155272A1/en
Application granted granted Critical
Publication of JP4349788B2 publication Critical patent/JP4349788B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection 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/1425Protection 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/1433Protection 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection 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

【0001】
【発明の属する技術分野】
本発明は、暗号化されたプログラムを復号して実行する機能を有する情報機器等に搭載される半導体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. バスとの間でデータの入出力を行う第1のメモリと、
    前記バスとの間でデータの入出力を行う第2のメモリと、
    秘密鍵を保持する秘密鍵保持部と、
    外部からの前記バスへのアクセスを制御するバスポートと、
    前記バスポートを経由して暗号化されたプログラムと復号プログラムとを前記第1のメモリに格納させ、前記復号プログラムと前記秘密鍵とを用いて前記暗号化されたプログラムの復号を行い、復号化されたプログラムを実行するCPUと、
    前記暗号化されたプログラムと前記復号プログラムとが前記第1のメモリに格納されると、前記バスポートに対して外部からのアクセスを禁止させ、前記第1及び第2のメモリへのアクセスを許可して前記暗号化されたプログラムと前記復号プログラムとの前記第1のメモリから前記第2のメモリへの転送を行い、
    前記転送が終了すると、前記第1のメモリへのアクセスを禁止し、
    前記復号及び前記復号化されたプログラムの実行が終了すると、前記第2のメモリへのアクセスを禁止する制御部とを備える
    ことを特徴とする半導体集積回路装置。
  2. 請求項1に記載の半導体集積回路装置において、
    前記CPUから前記秘密鍵保持部へのアクセスを制御する秘密鍵アクセスポートをさらに備え、
    前記秘密鍵アクセスポートは、
    前記転送が終了すると前記秘密鍵保持部へのアクセスを許可し、前記復号化されたプログラムの実行が終了すると前記秘密鍵保持部へのアクセスを禁止するものである
    ことを特徴とする半導体集積回路装置。
  3. 請求項1に記載の半導体集積回路装置において、
    前記CPUは、
    レジスタを含み、
    前記復号化されたプログラムの実行が終了すると、前記レジスタに格納されたデータを消去するものである
    ことを特徴とする半導体集積回路装置。
  4. 請求項1に記載の半導体集積回路装置において、
    前記制御部は、
    前記第1及び第2のメモリへのチップセレクト信号を制御することによって、前記第1及び第2のメモリへのアクセスを制御するものである
    ことを特徴とする半導体集積回路装置。
  5. 請求項1に記載の半導体集積回路装置において、
    前記制御部は、
    第1のフラグと第2のフラグとを格納するフラグ格納部を含み、
    前記第1のフラグがセットされているときには前記第1のメモリ及び前記第2のメモリへのアクセスを許可し、前記第1のフラグがリセットされ、前記第2のフラグがセットされているときには前記第1のメモリへのアクセスを禁止し、前記第1及び第2のフラグのいずれもがリセットされているときには、前記第2のメモリへのアクセスを禁止するものであり、
    前記バスポートは、
    前記第1または第2のフラグのうち少なくとも1つがセットされているときに、外部からのアクセスを禁止するものであり、
    前記CPUは、
    前記暗号化されたプログラム及び前記復号プログラムが前記第1のメモリに入力されると前記第1のフラグ及び前記第2のフラグをセットし、前記転送が終了すると前記第1のフラグをリセットし、前記復号化されたプログラムの実行が終了すると前記第2のフラグをリセットするものである
    ことを特徴とする半導体集積回路装置。
  6. バスとの間でデータの入出力を行う第1のメモリと、
    前記バスとの間でデータの入出力を行う第2のメモリと、
    前記バスと前記第1のメモリとの間に接続され、前記バスからの前記第1のメモリへのアクセスを制御する第1のメモリポートと、
    前記バスと前記第2のメモリとの間に接続され、前記バスからの前記第2のメモリへのアクセスを制御する第2のメモリポートと、
    秘密鍵を保持する秘密鍵保持部と、
    外部からの前記バスへのアクセスを制御するバスポートと、
    レジスタを有し、前記バスポートを経由して暗号化されたプログラムと復号プログラムとの前記第1のメモリへの書き込みを行い、前記復号プログラムと前記秘密鍵とを用いて前記暗号化されたプログラムの復号を行い、復号化されたプログラムの前記第2のメモリへの書き込みを行い、復号化されたプログラムを実行するCPUと、
    前記第1のメモリへの書き込みが終了すると、前記バスポートに対して外部からの前記バスへのアクセスを禁止させ、前記第1のメモリポートに対して前記第1のメモリへの書き込みを禁止させ、前記第2のメモリポートに対して前記第2のメモリへのアクセスを許可させ、
    前記復号化されたプログラムの実行が終了すると、前記CPUに対して前記レジスタに格納されたデータを消去させ、前記秘密鍵保持部へのアクセスを禁止させるとともに、前記第2のメモリポートに対して前記第2のメモリへのアクセスを禁止させる制御部とを備える
    ことを特徴とする半導体集積回路装置。
  7. バスとの間でデータの入出力を行う第1のメモリと、
    前記バスとの間でデータの入出力を行う第2のメモリと、
    前記バスと前記第1のメモリとの間に接続され、前記バスからの前記第1のメモリへのアクセスを制御するメモリポートと、
    秘密鍵を保持する秘密鍵保持部と、
    外部からの前記バスへのアクセスを制御するバスポートと、
    レジスタを有し、前記バスポートを経由して暗号化されたプログラムと復号プログラムとの前記第1のメモリへの書き込みを行い、前記復号プログラムと前記秘密鍵とを用いて前記暗号化されたプログラムの復号を行い、復号化されたプログラムの前記第2のメモリへの書き込みを行い、復号化されたプログラムを実行するCPUと、
    前記第2のメモリ上のデータを消去するメモリ初期化部を含み、前記第1のメモリへの書き込みが終了すると、前記バスポートに対して外部からの前記バスへのアクセスを禁止させ、前記メモリポートに対して前記第1のメモリへの書き込みを禁止させ、
    前記復号化されたプログラムの実行が終了すると、前記CPUに対して前記レジスタに格納されたデータを消去させ、前記秘密鍵保持部へのアクセスを禁止させ、前記メモリ初期化部に対して前記第2のメモリ上のデータを消去させるものである
    ことを特徴とする半導体集積回路装置。
  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のメモリへのアクセスを禁止する制御部とを備える
    ことを特徴とする半導体集積回路装置。
  9. 第1の装置と第2の装置との間でプログラムの引き渡しを行うプログラム引き渡し方法であって、
    前記第2の装置から前記第1の装置への公開鍵の転送を行うステップと、
    前記第2の装置にその外部から復号プログラムを転送するステップと、
    前記第1の装置において、前記公開鍵を用いて、前記プログラムの暗号化を行い、暗号化されたプログラムを前記第2の装置に転送するステップと、
    前記第2の装置において、前記公開鍵に対応する秘密鍵と前記復号プログラムとを用いて、前記暗号化されたプログラムを復号するステップとを備える
    ことを特徴とするプログラム引き渡し方法。
  10. 第1の装置と第2の装置との間でプログラムの引き渡しを行うプログラム引き渡し方法であって、
    前記第2の装置から前記第1の装置への公開鍵の転送を行うステップと、
    前記第1の装置において、前記公開鍵を用いて、復号鍵の暗号化を行い、暗号化された復号鍵を前記第2の装置に転送するステップと、
    前記第2の装置において、前記公開鍵に対応する秘密鍵を用いて、前記暗号化された復号鍵を復号するステップと、
    前記第1の装置において、前記復号鍵に対応する暗号鍵を用いて、前記プログラムの暗号化を行い、暗号化されたプログラムを前記第2の装置に転送するステップと、
    前記第2の装置において、復号化された復号鍵を用いて、前記暗号化されたプログラムを復号するステップとを備える
    ことを特徴とするプログラム引き渡し方法。
  11. 第1の装置と第2の装置とを備え、前記第1の装置と前記第2の装置との間でプログラムの引き渡しを行うプログラム引き渡しシステムであって、
    前記第1の装置は、
    前記プログラムを公開鍵を用いて暗号化し、その暗号化したプログラムを前記第2の装置への転送を行うものであり、
    前記第2の装置は、
    前記第1の装置によって暗号化されたプログラムを、前記公開鍵に対応する秘密鍵と、当該第2の装置の外部から転送された復号プログラムとを用いて復号するものである
    ことを特徴とするプログラム引き渡しシステム。
  12. 第1の装置と第2の装置とを備え、前記第1の装置と前記第2の装置との間でプログラムの引き渡しを行うプログラム引き渡しシステムであって、
    前記第1の装置は、
    公開鍵を用いて、復号鍵を暗号化し、暗号化した復号鍵を前記第2の装置への転送を行い、
    前記復号鍵に対応する暗号鍵を用いて、前記プログラムを暗号化し、暗号化したプログラムを前記第2の装置への転送を行うものであり、
    前記第2の装置は、
    前記公開鍵に対応する秘密鍵を用いて、前記第1の装置によって暗号化された復号鍵を復号し、復号化された復号鍵を用いて、前記第1の装置によって暗号化されたプログラムを復号するものである
    ことを特徴とするプログラム引き渡しシステム。
JP2002318172A 2002-10-31 2002-10-31 半導体集積回路装置 Expired - Fee Related JP4349788B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (9)

* Cited by examiner, † Cited by third party
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