(57)【特許請求の範囲】
【請求項１】
ＣＰＵとメモリインターフェースとデバッグインターフェースと暗号エンジンと暗号鍵生成回路とを含んで単一半導体チップ上に形成されたマイクロコンピュータであって、
前記ＣＰＵと前記メモリインターフェースと前記デバッグインターフェースと前記暗号エンジンと前記暗号鍵生成回路とがシステムバスに接続されており、
前記暗号鍵生成回路は、前記半導体の物理的な特性に基づいて乱数ＩＤを生成して前記暗号エンジンに入力し、
前記暗号エンジンは、入力された前記乱数ＩＤを暗号鍵として、前記システムバスを介して入力されたデータを暗号化して前記システムバスを介して出力する暗号化処理機能と、前記システムバスを介して入力されたデータを復号して前記システムバスを介して出力する復号処理機能と、前記乱数ＩＤに代えて、前記デバッグインターフェースから前記システムバスを介して入力される値を暗号鍵として、暗号化処理を行う前記暗号化処理機能と復号処理を行う前記復号処理機能とを備え、
前記暗号鍵生成回路が出力する前記乱数ＩＤに対する前記ＣＰＵの制御に基づく読み出しと前記デバッグインターフェースからの外部出力が禁止されている、
マイクロコンピュータ。
【請求項２】
請求項１記載のマイクロコンピュータと、前記メモリインターフェースに接続され、前記マイクロコンピュータによってアクセスされるメモリとを含んで構成され、
前記メモリは、前記暗号エンジンによって前記暗号化処理を施されたデータを格納し、
前記マイクロコンピュータは、前記暗号化されたデータを前記メモリから読み出し、前記暗号エンジンによって復号する、
データ処理装置。
【請求項３】
前記メモリが前記マイクロコンピュータと同一の半導体チップに形成されている、
請求項２記載のデータ処理装置。
【請求項４】
前記デバッグインターフェースから入力されたプログラムを前記暗号エンジンに転送し、前記暗号エンジンは、前記プログラムに暗号化処理を施し、暗号化されたプログラムを前記メモリインターフェースを介して前記メモリに格納する、プログラムダウンロード機能を備え、
暗号化され前記メモリに格納されたプログラムを前記メモリインターフェースを介して読み出し、前記暗号エンジンによって復号処理を施して前記ＣＰＵに入力する機能を備える、
請求項２記載のデータ処理装置。
【請求項５】
前記ＣＰＵがライトコマンドを与えられたとき、書き込みデータを、前記暗号エンジンに転送し、前記暗号エンジンは、前記書き込みデータに暗号化処理を施し、暗号化された書き込みデータを前記メモリインターフェースを介して前記メモリに格納する、データライト動作を実行する機能を備え、
前記ＣＰＵがリードコマンドを与えられたとき、暗号化され前記メモリに格納されたデータを前記メモリインターフェースを介して読み出し、前記暗号エンジンによって復号処理を施して前記ＣＰＵに入力するデータリード動作を実行する機能を備える、
請求項２記載のデータ処理装置。
【請求項６】
前記システムバス上に、前記ＣＰＵおよびまたは前記デバッグインターフェースから読み出し可能に構成され、個別ＩＤを格納した記憶装置を有する、
請求項２記載のデータ処理装置。
【請求項７】
単一半導体チップ上に形成されたマイクロコンピュータであって、
ＣＰＵと前記マイクロコンピュータの外部との間で入出力動作を行う外部インターフェースと暗号エンジンと暗号鍵生成回路とを含み、
前記暗号鍵生成回路は、前記半導体の物理的な特性に基づいて乱数ＩＤを生成して前記暗号エンジンに入力し、
前記暗号エンジンは、入力された前記乱数ＩＤを暗号鍵として、前記外部インターフェースから入力されたデータを暗号化する暗号化処理機能と、前記暗号化されたデータを復号する復号処理機能と、前記乱数ＩＤに代えて、前記外部インターフェースから入力される値を暗号鍵として、暗号化処理を行う前記暗号化処理機能と復号処理を行う前記復号処理機能とを備え、
前記暗号鍵生成回路が出力する前記乱数ＩＤに対する前記ＣＰＵの制御に基づく読み出しと前記外部インターフェースからの外部出力が禁止されている、
マイクロコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロコンピュータおよびそれを含むデータ処理装置に関し、特にそのプログラム及びデータを秘匿するために有効な技術に関する。
【背景技術】
【０００２】
半導体集積回路の模倣、即ち回路などのレイアウト情報のデッドコピーは、半導体メーカーのみならずユーザにとっても重大な問題である。特にマイクロコンピュータでは、回路の情報の他、メモリに格納されたプログラムの秘匿が重要である。
【０００３】
従来、メモリに格納するプログラムやデータを暗号化して秘匿する技術が採用されているが、その場合には、暗号鍵の管理が問題となる。暗号鍵を半導体上に記憶すると、暗号鍵を含めてデッドコピーされた場合にプログラムによるマイコン動作の模倣を許してしまう。暗号鍵を製品上に記憶せず製造工程で管理することで、秘匿性は向上するが、製造工程からの情報漏洩があれば模倣を許してしまうという問題がある。
【０００４】
一方、半導体のデッドコピーを防止するために有効な技術として、半導体の物理的特性に基づいて固有の識別情報を生成する技術が提案されている（特許文献１乃至３）。半導体が製造された結果であるトランジスタの電流や寄生容量などの物理的特性に基づいて識別情報を生成するので、回路パターンをデッドコピーしても、製造バラツキによって生成される識別情報が異なることとなり、実質的に固有の識別情報を生成することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−１４７０８８号公報
【特許文献２】特開２０１０−２２６６０３号公報
【特許文献３】特開２００５−２４４３５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１乃至３には、この識別情報を使って認証を行ったり、通信における情報の暗号化の暗号鍵として利用する応用技術が開示されている。しかし、マイクロコンピュータのデッドコピーを防止し、そのプログラムおよびデータを秘匿するために、このような識別情報を利用する応用技術については開示されていない。
【０００７】
本発明の目的は、マイクロコンピュータにおいて、半導体素子としてのデッドコピーを防止し、またメモリの内容を読み取ることができないように秘匿する技術を提供することである。
【０００８】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００９】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１０】
すなわち、ＣＰＵとメモリインターフェースとデバッグインターフェースと暗号エンジンと暗号鍵生成回路とを含んで単一半導体チップ上に形成されたマイクロコンピュータであって、暗号鍵生成回路は、半導体の物理的な特性に基づいて乱数ＩＤを生成して暗号エンジンに入力し、暗号エンジンはその乱数ＩＤを暗号鍵として入力されたデータを暗号化し復号する機能を備え、乱数ＩＤの読み出しが禁止されている。
【発明の効果】
【００１１】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００１２】
すなわち、本願発明に係るマイクロコンピュータによれば、半導体素子としてのデッドコピーを防止し、またメモリの内容を読み取ることができないように秘匿することができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、本発明の一実施形態に係るマイクロコンピュータと、それを含むデータ処理装置の構成を示すブロック図である。
【図２】図２は、図１に示したデータ処理装置において、プログラムダウンロードを行う場合のデータの流れを説明する図である。
【図３】図３は、図１に示したデータ処理装置において、データリードを行う場合のデータの流れを説明する図である。
【図４】図４は、図１に示したデータ処理装置において、データライトを行う場合のデータの流れを説明する図である。
【図５】図５は、本発明の別の実施形態に係るマイクロコンピュータであって、個別ＩＤを格納した記憶素子をさらに含むものと、それを含むデータ処理装置の構成を示すブロック図である。
【発明を実施するための形態】
【００１４】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１５】
〔１〕＜暗号鍵読み出し禁止＞
本発明の代表的な実施の形態に係るマイクロコンピュータ（１）は、ＣＰＵ（２）とメモリインターフェース（３）とデバッグインターフェース（４）と暗号エンジン（５）と暗号鍵生成回路（６）とを含んで単一半導体チップ上に形成されたマイクロコンピュータであって、以下のように構成されている。
【００１６】
前記ＣＰＵと前記メモリインターフェースと前記デバッグインターフェースと前記暗号エンジンと前記暗号鍵生成回路とがシステムバス（７）に接続されている。
【００１７】
前記暗号鍵生成回路は、前記半導体集の物理的な特性に基づいて乱数ＩＤを生成して前記暗号エンジンに入力する。
【００１８】
前記暗号エンジンは、入力された前記乱数ＩＤを暗号鍵として、前記システムバスを介して入力されたデータを暗号化して前記システムバスを介して出力する暗号化処理機能と、前記システムバスを介して入力されたデータを復号して前記システムバスを介して出力する復号処理機能とを備える。
【００１９】
前記暗号鍵生成回路が出力する前記乱数ＩＤに対する前記ＣＰＵの制御に基づく読み出しと前記デバッグインターフェースからの読み出しが禁止されている。
【００２０】
これによれば、ＣＰＵで実行されるプログラムが、半導体の物理的な特性に基づいて生成された乱数ＩＤを暗号鍵として用いて暗号化してメモリに格納されているので、マイクロコンピュータがデッドコピーされたときであっても、模倣品で生成される乱数ＩＤ即ち暗号鍵は、真正品で暗号化に用いられた暗号鍵の値と異なるものとなる。したがって、模倣品ではプログラムを復号して実行することができないため、マイクロプロセッサのデッドコピーを防止することができる。
【００２１】
またこれによれば、本実施形態のマイクロコンピュータは、真正品で生成された乱数ＩＤの読み出しが、ＣＰＵとデバッグインターフェースからのアクセスが禁じられているので、不正コピーに関与した者のみならず設計者や製造者でさえも暗号鍵の値を知ることができない。したがって、メモリに格納されたプログラムおよびデータを復号することはできないため、メモリの内容を読み取ることができないように秘匿することができる。
【００２２】
〔２〕＜デバッグ時、暗号鍵に代わる値の設定＞
項１記載のマイクロコンピュータにおいて、前記暗号エンジンは、前記暗号鍵生成回路の出力する前記乱数ＩＤに代えて、前記デバッグインターフェースから前記システムバスを介して入力される値を暗号鍵として、暗号化処理を行う前記暗号化処理機能と復号処理を行う前記復号処理機能を備える。
【００２３】
これにより、チップデバッグのときに、暗号エンジンに任意の暗号鍵を与えることができるので、暗号エンジンがいかなる暗号鍵の値が入力されても正しく機能することを確認し、また暗号エンジンおよびシステム全体をデバッグすることができる。また、出荷前テストときには、任意の数の暗号鍵の値を入力することができ、暗号エンジンを構成する素子の故障（欠陥）検出率を十分高めることができる。
【００２４】
〔３〕＜システム：暗号化と復号を伴うメモリアクセス＞
本発明の代表的な実施の形態に係るデータ処理装置は、項１又は２記載のマイクロコンピュータと、前記メモリインターフェースに接続され、前記マイクロコンピュータによってアクセスされるメモリ（８、９）とを含んで構成され、前記メモリは、前記暗号エンジンによって前記暗号化処理を施されたデータを格納し、前記マイクロコンピュータは、前記暗号化されたデータを前記メモリから読み出し、前記暗号エンジンによって復号する。
【００２５】
これにより、マイクロコンピュータは、アクセス可能なメモリを拡張したデータ処理装置を提供することができる。
【００２６】
〔４〕＜オンチップメモリ＞
項３記載のデータ処理装置であって、前記メモリが前記マイクロコンピュータと同一の半導体チップに形成されている。
【００２７】
これにより、メモリとマイクロコンピュータの間の信号を外部で観測することができなくなり、メモリに格納されたプログラムやデータがより安全に秘匿される。
【００２８】
〔５〕＜プログラムのダウンロードと復号＞
項３または４記載のデータ処理装置は、前記デバッグインターフェースから入力されたプログラムを前記暗号エンジンに転送し、前記暗号エンジンは、前記プログラムに暗号化処理を施し、暗号化されたプログラムを前記メモリインターフェースを介して前記メモリに格納する、プログラムダウンロード機能を備える。また、データ処理装置は、その暗号化され前記メモリに格納されたプログラムを前記メモリインターフェースを介して読み出し、前記暗号エンジンによって復号処理を施して前記ＣＰＵに入力する機能を備える。
【００２９】
これにより、マイクロコンピュータが製造された後、即ち、暗号鍵生成回路が生成する乱数ＩＤ（暗号鍵の値）が確定した後で、マイクロコンピュータ内の暗号エンジンを用いて、プログラムを暗号化するので、暗号鍵の値は、不正にコピーをする者にはもちろん設計者や製造者にさえも知られることはなく、よってメモリに格納されたプログラムが安全に秘匿される。
【００３０】
〔６〕＜ＣＰＵのメモリアクセス時の暗号処理＞
項３または４記載のデータ処理装置は、前記ＣＰＵがライトコマンドを与えられたとき、書き込みデータを、前記暗号エンジンに転送し、前記暗号エンジンは、前記書き込みデータに暗号化処理を施し、暗号化された書き込みデータを前記メモリインターフェースを介して前記メモリに格納する、データライト動作を実行する機能を備える。また、そのデータ処理装置は、前記ＣＰＵがリードコマンドを与えられたとき、暗号化され前記メモリに格納されたデータを前記メモリインターフェースを介して読み出し、前記暗号エンジンによって復号処理を施して前記ＣＰＵに入力するデータリード動作を実行する機能を備える。
【００３１】
これにより、メモリ（８、９）に格納されるデータが暗号化され、安全に秘匿される。
【００３２】
〔７〕＜個別ＩＤの付加＞
項１もしくは項２記載のマイクロコンピュータ、または、項３、４、５もしくは６記載のデータ処理装置において、前記システムバス上に、前記ＣＰＵおよびまたは前記デバッグインターフェースから読み出し可能に構成された記憶手段に個別ＩＤ（１１）を格納した。
【００３３】
これにより、例えば、個別ＩＤ（１１）を暗号の共有鍵とし、前記乱数ＩＤを秘密鍵として使う通信に応用することができる。上述してきたとおり、前記乱数ＩＤは、マイクロコンピュータから読み出す手段がないので、秘密鍵を盗まれて通信が傍受される危険がなく、よって通信の内容が安全に秘匿される。
【００３４】
〔８〕＜上位概念＞
単一半導体チップ上に形成されたマイクロコンピュータであって、ＣＰＵ（２）と前記マイクロコンピュータ（１）の外部との間で入出力動作を行う外部インターフェース（３、４）と暗号エンジン（５）と暗号鍵生成回路（６）とを含む。
【００３５】
前記暗号鍵生成回路は、前記半導体の物理的な特性に基づいて乱数ＩＤを生成して前記暗号エンジンに入力し、前記暗号エンジンは、入力された前記乱数ＩＤを暗号鍵として、前記外部インターフェースから入力されたデータを暗号化する暗号化処理機能と、前記暗号化されたデータを復号する復号処理機能とを備えている。
【００３６】
前記暗号鍵生成回路が出力する前記乱数ＩＤに対する前記ＣＰＵの制御に基づく読み出しと前記外部インターフェースからの外部出力が禁止されている。
【００３７】
これにより、マイクロコンピュータにおいて、半導体素子としてのデッドコピーを防止し、またメモリの内容を読み取ることができないように秘匿することができる。
【００３８】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００３９】
図１は、本発明の一実施形態に係るマイクロコンピュータと、それを含むデータ処理装置の構成を示すブロック図である。
【００４０】
本発明の代表的な実施の形態に係るマイクロコンピュータ１は、ＣＰＵ２と、マイクロコンピュータの外部との間で入出力動作を行う外部インターフェースとして代表的に示されたメモリインターフェース３及びデバッグインターフェース４と、暗号エンジン５と暗号鍵生成回路６と、を含んで単一半導体チップ上に形成されたマイクロコンピュータである。ＣＰＵ２とメモリインターフェース３とデバッグインターフェース４と暗号エンジン５と暗号鍵生成回路６とがシステムバス７に接続されている。暗号鍵生成回路６は、半導体の物理的な特性に基づいて乱数ＩＤを生成して暗号エンジン５に入力する。暗号エンジンは、暗号化処理機能５１と復号処理機能５２とを備え、入力された前記乱数ＩＤを暗号鍵として、前記システムバスを介して入力されたデータを暗号化してシステムバスを介して出力し、システムバスを介して入力されたデータを復号してシステムバスを介して出力する。マイクロコンピュータ１において、暗号鍵生成回路が出力する乱数ＩＤに対するＣＰＵ２の制御に基づく読み出しと、デバッグインターフェース３に代表される外部インターフェースからの読み出しが禁止されている。
【００４１】
ＣＰＵ２は、中央処理装置（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）であって、プログラムをデコードして演算処理やメモリアクセスを実行する。マイクロコンピュータ内外のメモリやレジスタ、その他機能ブロックのデータ入出力ポートには、ＣＰＵのメモリ空間のアドレスが割り付けられており、ＣＰＵはそのアドレスを指定して、それらにアクセスする。
【００４２】
メモリインターフェース３は、システムバスとその外側のメモリを互いに接続するインターフェースである。システムバス７に直接接続されたメモリ以外に、メモリインターフェースを介してメモリを接続することができる。接続するメモリには上記メモリ空間内の別のアドレスが割り付けられており、ＣＰＵからはそのアドレスを指定してアクセスすることができる。メモリは、ＮＡＮＤフラッシュメモリ、ＮＯＲフラッシュメモリなどの汎用フラッシュデバイスを含む不揮発性メモリ、もしくは、ＳＤＲＡＭ、各種ＤＤＲ型ＳＤＲＡＭ、ＳＲＡＭなどの揮発性メモリ、またはそれらを複数接続したメモリ群で構成することができ、複数接続する場合には、一般には、メモリインターフェース３に接続した外部バス１０が用いられる。
【００４３】
デバッグインターフェース４は、プログラムデバッグの際に、例えばデバッガを外付けして、デバッグプログラムを供給し、マイクロコンピュータ内外のメモリやレジスタ、その他機能ブロックのデータ入出力ポートの値を読み出し、あるいは、必要に応じて書き込むこともできるように構成されている。デバッグを行うときには、ＣＰＵ２がデバッグインターフェースの指示に従って動作するいわゆるエミュレーション動作をする。デバッグインターフェース４から直接にレジスタ、その他機能ブロックのデータ入出力ポートへのアクセス手段を設けてもよい。
【００４４】
半導体の出荷前の良品選別試験は、半導体の入出力端子にテストパターンを与えて、半導体を構成するトランジスタなどの素子の良否を判定して、欠陥のある半導体を不良品として排除するものである。回路ブロックごとの欠陥（不良）検出率を選別試験として十分な高さまで高めるためには、試験対象の回路ブロックに任意の値を入力し、その出力を読み出すことが有効であり、前記デバッグインターフェースを使った動作が使われることも多い。
【００４５】
暗号エンジン５は、暗号化機能５１と復号機能５２を備えており、入力された暗号鍵を使ってデータを暗号化し、または復号する。暗号化または復号の対象となるデータは、システムバス７から暗号エンジン５内のシステムバスインターフェース５３を介して与えられ、処理の結果はシステムバスインターフェース５３を介してシステムバス７に出力される。
【００４６】
暗号鍵生成回路６は、乱数ＩＤ生成回路６１を含んで構成されており、乱数ＩＤ生成回路６１は、半導体集積回路であるマイクロコンピュータ１を製造した結果である物理的な特性に基づいて乱数ＩＤを生成する回路である。例えば、特許文献１または２記載の技術を採用することができる。生成された乱数ＩＤは、セレクタ６２とレジスタ６３を介して暗号鍵として暗号エンジン５に入力されている。レジスタ６３の出力は、暗号エンジン５にのみ接続されていて、システムバス７への出力回路を備えていない。一般には、前記したようにチップデバッグやシステムデバッグ、あるいは、出荷前の良品選別試験の際に、レジスタの値を読み出すことが求められるが、本願発明においては、この値は暗号の秘匿性を確保するために、絶対に知られてはならない値であるので、読み出し手段を備えていない。
【００４７】
これにより、マイクロコンピュータ１は、ＣＰＵ２で実行されるプログラムを暗号化してメモリに格納しておけば、デッドコピーされた場合にそのプログラムを実行することができず、また、オフラインでもそのプログラムを復号することができない。その理由は以下の通りである。半導体の物理的な特性に基づいて生成された乱数ＩＤを用いているので、回路が同一であっても物理的特性の製造バラツキによって、その乱数ＩＤは異なる。プログラムを暗号化するための暗号鍵にその乱数ＩＤを用いているので、真正なチップで生成された暗号鍵とデッドコピーされたチップで復号に用いる暗号鍵は異なるものとなる。したがって、暗号化したときのマイクロコンピュータでなければ、メモリに格納されたプログラムを正しく復号することができず、よってデッドコピーされたマイクロコンピュータではデッドコピーされたプログラムを実行することができない。
【００４８】
また、暗号鍵である乱数ＩＤを読み出すことができないので、不正コピーを目的とする者のみならず正当なユーザやマイクロコンピュータの設計者や製造者自身でさえも、暗号鍵の値を知ることができない。したがって、暗号化されたメモリの内容を読み取ったとしても、正しく復号することはできず、よって、メモリの内容を読み取ることができないように秘匿することができる。
【００４９】
上記実施形態には、デバッグ時、暗号鍵に代わる値の設定を可能とする回路を付加することができる。図１は既にその回路手段を含めたブロック図であるので、これを参照して説明する。
【００５０】
前記マイクロコンピュータにおいてさらに、暗号エンジン５は、暗号鍵生成回路６の出力する乱数ＩＤに代えて、デバッグインターフェース４からシステムバスを介して入力される値を暗号鍵として、暗号化処理を行う暗号化処理機能と復号処理を行う復号処理機能を備える。
【００５１】
暗号鍵生成回路６のセレクタ６２は、乱数ＩＤ生成回路６１とシステムバス７からシステムバスインターフェース６４を介して入力される信号とを切り替え、その出力をレジスタ６３へ書き込む。通常動作では、レジスタ６３には乱数ＩＤ生成回路６１で生成された乱数ＩＤが書き込まれ、暗号エンジンへ暗号鍵として接続しているが、システムバス側が選択されることにより、任意の値を暗号鍵として暗号エンジン５に入力することができる。
【００５２】
これにより、チップデバッグのときに、暗号エンジンに任意の暗号鍵を与えることができるので、暗号エンジンがいかなる暗号鍵の値が入力されても正しく機能することを確認し、また暗号エンジンおよびシステム全体をデバッグすることができる。また、出荷前テストのときには、任意の数の暗号鍵の値を入力することができ、よって暗号エンジンを構成する素子の故障（欠陥）検出率を十分高めることができる。
【００５３】
以上の実施形態では、乱数ＩＤの読み出しは、ＣＰＵからだけでなくデバッグインターフェースからのアクセスであっても禁止する構成とした。しかし、デバッグの際にデバッグインターフェースからの乱数ＩＤの読み出しを許す構成とし、量産品ではデバッグインターフェースを物理的に使用できないようにすることもできる。具体的その方法としては、例えば、外部ピンへのワイヤボンディングを行わない、デバッグインターフェースへの制御信号を、量産時に切断するなどの手段があげられる。
【００５４】
マイクロコンピュータ１に、メモリインターフェース３に接続した外部バス１０に不揮発性メモリ８と揮発性メモリ９とを接続したデータ処理装置の実施の形態について説明する。図１はそのブロック構成を示しているので、図１を参照する。不揮発性メモリは、例えば、ＮＡＮＤフラッシュメモリ、ＮＯＲフラッシュメモリなどの汎用フラッシュデバイスである。揮発性メモリは、例えばＳＤＲＡＭ、各種ＤＤＲ型ＳＤＲＡＭ、ＳＲＡＭなどである。不揮発性メモリ８と揮発性メモリ９は、暗号エンジン５によって暗号化処理を施されたデータを格納し、マイクロコンピュータ１は、暗号化されたデータをそれらメモリ８、９から読み出し、暗号エンジン５によって復号する。
【００５５】
これにより、不揮発性メモリ８と揮発性メモリ９に格納されたプログラムやデータが秘匿される。
【００５６】
不揮発性メモリ８と揮発性メモリ９は、いずれか１個であってもよい。その場合には外部バスはメモリインターフェースといずれか１個のメモリの間を直結する信号線であってよい。また、不揮発性メモリ８と揮発性メモリ９は、一方または両方の複数の組み合わせであってもよい。
【００５７】
さらに、上記のようなメモリまたはメモリ群をマイクロコンピュータ１と同一の半導体チップに形成してもよい。これにより、メモリとマイクロコンピュータの間の信号を観測することが困難になり、メモリに格納されたプログラムやデータがより安全に秘匿される。
【００５８】
「メモリインターフェース」の語は、同一半導体チップの内部と外部のインターフェースであることを指すものとは限らず、階層化されたバスの間をブリッジするものであって、どのような回路ブロックをＣＰＵと同一のチップ内に形成するかは、これとは独立の設計パラメータである。メモリインターフェースをさらに付加して、バスを多段に階層化することも、本発明の技術思想に反するものではなく自由に採用することができる。
【００５９】
プログラムのダウンロードについて説明する。本発明のマイクロコンピュータは、暗号化したプログラムを格納したＲＯＭを予め作成して接続するようなシステムには適さない。暗号鍵の値は、マイクロコンピュータを製造した時点でその個体固有に確定し、それを読み出さないで暗号化することによって、プログラムやデータの秘匿を担保しているからである。したがって、マイクロコンピュータを製造した後で、プログラムをダウンロードする必要がある。
【００６０】
図２は、本発明の一実施形態に係るマイクロコンピュータを搭載したデータ処理装置において、プログラムダウンロードを行う場合の、データの流れを説明する図である。開発後のプログラムをデバッグインターフェース４から入力し、プログラムを暗号エンジン５に転送する（Ｓ１）。暗号エンジンは、転送されたプログラムに対し、物理的な特性に基づいて生成された乱数ＩＤを暗号鍵として暗号化処理を施し、暗号化されたプログラムをメモリインターフェース３に転送する（Ｓ２）。メモリインターフェース３は暗号化されたプログラムを不揮発性メモリ８に格納する（Ｓ３）。Ｓ１は暗号化されていないプログラムデータであり、Ｓ２およびＳ３は暗号化された後のプログラムデータである。
【００６１】
これにより、マイクロコンピュータが製造された後、即ち、暗号鍵生成回路が生成する乱数ＩＤ（暗号鍵の値）が確定した後で、マイクロコンピュータ内の暗号エンジンを用いて、プログラムを暗号化するので、暗号鍵の値は、不正にコピーをする者にはもちろん設計者や製造者にさえも知られることはなく、よってメモリに格納されたプログラムが安全に秘匿される。
【００６２】
暗号化されたプログラムの不揮発性メモリからの読み出し方法を説明する。
【００６３】
図３は、本発明の一実施形態に係るマイクロコンピュータを搭載したデータ処理装置において、データリードを行う場合の、データの流れを説明する図である。
【００６４】
ＣＰＵ２がリードコマンドを暗号エンジン５とメモリインターフェース３に送信する（Ｓ４）。メモリインターフェース３は、不揮発メモリ８または揮発性メモリ９から、暗号化されて格納されているプログラムを読み出す（Ｓ５）。メモリインターフェース３は、読み出したプログラムを暗号エンジン５に転送する（Ｓ６）。暗号エンジン５は乱数ＩＤを暗号鍵としてプログラムを復号する。暗号エンジン５は、復号したプログラムをＣＰＵ２へ転送する（Ｓ７）。
【００６５】
本発明のデータ処理装置においては、プログラムだけでなくデータも暗号化してメモリに格納することができる。メモリに格納されるデータには、秘匿を必要とする情報が含まれている場合があるので、これを同様の暗号化で秘匿するための技術である。
【００６６】
暗号化されプログラムの不揮発性メモリへの書き込み方法を説明する。
【００６７】
図４は、本発明の一実施形態に係るマイクロコンピュータを搭載したデータ処理装置において、データライトを行う場合の、データの流れを説明する図である。
【００６８】
ＣＰＵ２がライトコマンドを暗号エンジン５とメモリインターフェース３に送信する（Ｓ８）。ＣＰＵ２はさらに暗号化すべきデータを暗号エンジン５に転送する（Ｓ９）。暗号エンジンは、転送されたデータに対し、物理的な特性に基づいて生成された乱数ＩＤを暗号鍵として暗号化処理を施し、暗号化されたデータをメモリインターフェース３に転送する（Ｓ１０）。メモリインターフェース３は暗号化されたデータを不揮発性メモリ８または揮発性メモリ９に書き込む（Ｓ１１）。Ｓ９は暗号化されていないデータであり、Ｓ１０およびＳ１１は暗号化された後のデータである。
【００６９】
これにより、メモリ８、９に格納されるデータが暗号化され、安全に秘匿される。
【００７０】
本実施形態における「データ」は、ユーザデータなどプログラムが実行することによって参照あるいは操作されるデータには限られず、プログラムコードであってもよい。
【００７１】
「ライトコマンド」、「リードコマンド」は、単一のライト命令、リード命令、あるいはストア命令、ロード命令などで、上記シーケンスをマイクロ命令で順次実行してもよいし、一連のシーケンスを実行するマクロ命令であってもよい。また、暗号化または復号を伴わないライトコマンドとリードコマンドを、さらに備えてもよい。
【００７２】
本発明のマイクロコンピュータとデータ処理装置を、暗号化通信に利用する実施の形態について図５を参照して説明する。図５は、以上で説明してきたマイクロコンピュータ、または、データ処理装置に、さらに、システムバス７上に、ＣＰＵおよびまたはデバッグインターフェースから読み出し可能に構成された記憶手段に個別ＩＤ１１を格納し、ネットワークインターフェース１２を備えたものである。
【００７３】
暗号鍵生成回路で生成される乱数ＩＤを、これまでに説明した通りプログラムやデータの暗号化のための暗号鍵として使うとともに、伝送するデータを暗号化するための秘密鍵としても使用し、個別ＩＤ１１を暗号の共有鍵として使用して行う通信に応用することができる。
【００７４】
詳細には、送信する内容は、暗号鍵生成回路６の出力を秘密鍵、個別ＩＤ１１を共有鍵として使用して暗号化し、ネットワークインターフェース１２を介して送信し、ネットワークインターフェース１２を介して受信した暗号文を、個別ＩＤ１１を共有鍵として復号して読み取るものである。
【００７５】
暗号鍵生成回路６の出力は上述してきたとおりの乱数ＩＤで、マイクロコンピュータから読み出す手段がないので、本実施形態においては秘密鍵を盗まれて通信が傍受される危険がなく、よって通信の内容が安全に秘匿される。
【００７６】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００７７】
例えば、外部インターフェースとして、メモリインターフェースとデバッグインターフェースを示したが、この他、パラレルインターフェース、シリアルインターフェースなどであってもよいし、マイクロコンピュータは、メモリインターフェースとデバッグインターフェース以外の外部インターフェースをさらに備えてもよい。
【００７８】
ＣＰＵの制御に基づく読み出しには、ＣＰＵ以外をバスマスタとして機能する場合を含む。例えば、ＣＰＵがパラメータを設定し、動作を起動するＤＭＡコントローラがこれに相当する。
【００７９】
マイクロコンピュータは、揮発性、不揮発性を問わないメモリ、その他の回路ブロックを備えていてもよい。このとき、メモリには暗号化されたデータを格納する動作も、暗号化しないデータを格納する動作も、適宜選択して採用することができる。
【符号の説明】
【００８０】
１  マイクロコンピュータ
２  ＣＰＵ
３  メモリインターフェース
４  デバッグインターフェース
５  暗号エンジン
５１  暗号化機能
５２  復号機能
６  暗号鍵生成回路
６１  乱数ＩＤ生成回路
６２  セレクタ
６３  レジスタ
７  システムバス
８  不揮発性メモリ
９  揮発性メモリ
１０  外部バス
１１  個別ＩＤを格納する記憶素子
１２  ネットワークインターフェース
Ｓ１〜Ｓ１１  暗号化または復号を行う信号の流れ
【図１】
0005798007.tif 000002
【図２】
0005798007.tif 000003
【図３】
0005798007.tif 000004
【図４】
0005798007.tif 000005
【図５】
0005798007.tif 000006