説明

マイクロプロセッサ

【課題】 外部からアクセス可能なデータバスを介してアクセスされるデータやプログラムに対して他からの解読や改ざんを防止する暗号化を施すマイクロプロセッサを提供する。
【解決手段】 複数のデータを暗号化するマイクロプロセッサ1であって、複数の暗号化方式の情報を格納する格納部3と、格納部3から複数の暗号化方式のいずれかを選択する選択制御部4と、選択制御部4で選択された暗号化方式に従ってデータの暗号化を行う暗号化部5を備え、データ毎に異なる暗号化方式で暗号化するマイクロプロセッサ1により、マイクロプロセッサ1がアクセスするデータやプログラムの他からの解読や改ざんを困難とする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マイクロプロセッサが処理するデータやプログラムが解読や改ざんされることを防止するマイクロプロセッサに関するものである。
【背景技術】
【0002】
マイクロプロセッサが処理のためにアクセスするデータやプログラムは、マイクロプロセッサとデータバスを介して接続されるメモリ中に保存され、処理の必要に応じてマイクロプロセッサからアクセスされる。ここで、データバスはマイクロプロセッサだけでなく、他の装置などからもアクセスが可能であるため、メモリ中のデータやプログラム、あるいはマイクロプロセッサ内部のレジスタに取り込まれたデータやプログラムも他の装置などからアクセス可能である。このように他からアクセス可能であるために、データやプログラムの解読や改ざんが可能である。このため、これらのデータやプログラムの解読や改ざんを防止して機密保護を実現するために、マイクロプロセッサがアクセスするデータやプログラムを暗号化することが行われている。例えば、特許文献1(特開2003−280989号公報)は、アクセスされるデータやプログラムを、異なる暗号化鍵を用いて暗号化するマイクロプロセッサの技術を開示する。あるいは、特許文献1で開示されるマイクロプロセッサは、異なる暗号鍵で暗号化されたこれらのデータやプログラムを、異なる暗号鍵に対応する復号鍵で復号する。
【0003】
特許文献1で開示されるマイクロプロセッサは、複数のデータやプログラムを異なる暗号鍵で暗号化するため、より強固な機密保護が実現されていた。
【0004】
しかしながら、近年の暗号化データの解読技術などの進歩により、暗号化するデータやプログラム毎に暗号鍵を相違させただけでは、解読防止などが不十分である。特に、暗号化方式が解読されることで、暗号鍵の異なる全ての暗号化データが解読されてしまう問題があった。更には、解読されたデータやプログラムが改ざんされることも生じる問題もあった。
【0005】
特に、マイクロプロセッサがアクセスするデータやプログラムは、データバスを介して他からアクセスが可能であるため、暗号化の解読によりデータやプログラムの中身が容易に入手されてしまう問題があった。
【特許文献1】特開2003−280989号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
そこで本発明は、外部からアクセス可能なデータバスを介してアクセスされるデータやプログラムに対して、他からの解読や改ざんを防止する暗号化を施すマイクロプロセッサを提供することを目的とする。
【課題を解決するための手段】
【0007】
第1の発明に係るマイクロプロセッサは、複数のデータを暗号化するマイクロプロセッサであって、複数の暗号化方式の情報を格納する格納部と、格納部から複数の暗号化方式のいずれかを選択する選択制御部と、選択制御部で選択された暗号化方式に従ってデータの暗号化を行う暗号化部を備え、データ毎に異なる暗号化方式で暗号化する。
【0008】
この構成により、マイクロプロセッサがアクセスするデータやプログラムが、それぞれ別の暗号化方式により暗号化されるため、これらのデータやプログラムの他からの解読や改ざんが困難となる。結果として、マイクロプロセッサがアクセスするデータやプログラムの機密保護の度合いが高まる。
【0009】
第2の発明に係るマイクロプロセッサは、格納部は、複数のデータと複数の暗号化方式の組み合わせを有する暗号化方式テーブルを備える。
【0010】
この構成により、データやプログラム毎に異なる暗号化方式を容易に割り当てることができる。
【0011】
第3の発明に係るマイクロプロセッサは、暗号化方式テーブルは、暗号化されている。
【0012】
この構成により、データ毎によって割り当てられる暗号化方式に関する情報も、他からの解読が困難となる。
【0013】
第4の発明に係るマイクロプロセッサは、暗号化方式テーブルは、複数のデータの内、相関関係の高い2以上のデータのそれぞれに対して相関関係の低い異なる暗号化方式を割り当てる組み合わせを有する。
【0014】
この構成により、相関関係の高いデータやプログラムの全ての暗号化が解読されることが極めて困難となる。結果として、機密保護の度合いが更に高まる。
【0015】
第5の発明に係るマイクロプロセッサは、格納部は、暗号化方式に応じた暗号鍵を更に格納する。
【0016】
この構成により、データ毎に暗号化方式に加えて暗号鍵も異ならせて暗号化を行うことができる。
【0017】
第6の発明に係るマイクロプロセッサは、データは、マイクロプロセッサが外部メモリから読み出したデータを含む。
【0018】
この構成により、マイクロプロセッサとメモリ間のやり取り時における、他からのデータの解読を防止できる。
【0019】
第7の発明に係るマイクロプロセッサは、データは、マイクロプロセッサで用いられるプログラムを含む。
【0020】
この構成により、データのみならず、マイクロプロセッサが処理に用いるプログラムが異なる暗号化方式により暗号化される。
【0021】
第8の発明に係るマイクロプロセッサでは、プログラムは、オペレーティングシステム用プログラムを含む。
【0022】
この構成により、マイクロプロセッサが用いるオペレーティングシステム用プログラムも、異なる暗号化方式により暗号化され、オペレーティングシステム用プログラムが、外部メモリに記憶されている場合などにも効果的である。
【0023】
第9の発明に係るマイクロプロセッサでは、複数の暗号化方式は、オペレーティングシステム用プログラム専用の暗号化方式を含む。
【0024】
この構成により、オペレーティングシステム用プログラムに対しては、特に機密保護の度合いの高い暗号化を施すことができる。
【0025】
第10の発明に係るマイクロプロセッサでは、データの外部メモリからの読み出しアドレスと外部メモリへの書き込みアドレスを制御するメモリ制御部を更に備える。
【0026】
この構成により、暗号化の前後で変化するアクセス先のアドレスやデータサイズに対応した、メモリにおけるデータ保持が適切に行われる。
【0027】
第11の発明に係るマイクロプロセッサでは、メモリ制御部は、データの暗号化前と暗号化後のデータサイズの変化に対応したアドレス制御を行う。
【0028】
この構成により、暗号化の前後で変化するアクセス先のアドレスやデータサイズに対応した、メモリにおけるデータ保持が適切に行われる。
【0029】
第12の発明に係るマイクロプロセッサでは、メモリ制御部は、選択制御部で選択された暗号化方式に基づいて、アドレス制御を行う。
【0030】
この構成により、暗号化方式情報に基づいてアドレス制御を行うため、暗号化方式によってデータサイズの変化が異なる場合であっても、無駄のないメモリ空間におけるデータ配置が可能となる。
【0031】
第13の発明に係るマイクロプロセッサは、暗号化部で暗号化されたデータを復号する復号部を更に備える。
【0032】
この構成により、必要に応じてマイクロプロセッサは、暗号化されたデータやプログラムを復号した上で、演算処理などに用いることができる。
【発明の効果】
【0033】
本発明によれば、マイクロプロセッサがアクセスするデータやプログラムが、それぞれ別個の暗号化方式で暗号化されるため、これらの暗号化されたデータやプログラムの解読が非常に困難となる。このため、マイクロプロセッサとメモリ間に構成されるバスなどを介した、データの解読や改ざんが困難となり、マイクロプロセッサが必要とするデータやプログラムの機密保護の度合いが高まる効果がある。
【0034】
また、暗号化により変化するデータサイズに対応したメモリ制御を行うことで、機密保護の度合いを高めるために、データやプログラムに応じて暗号化方式を変える場合でも、確実なメモリ書き込みなどが可能となる。このようなメモリ制御により、データやプログラム毎の暗号化方式の割り当ての自由度が高まる効果がある。
【0035】
また、暗号化部に対応する復号部が備えられることで、マイクロプロセッサは、暗号化されたデータやプログラムを容易に演算処理に用いることができる。また、復号においては、暗号化方式に対応した復号方式が用いられるため、機密保護を高めるために複数の暗号化方式が用いられる場合に最適である。
【発明を実施するための最良の形態】
【0036】
以下図面を参照しながら、本発明の実施の形態を説明する。
【0037】
(実施の形態1)
図1から図5を用いて、実施の形態1におけるマイクロプロセッサについて説明する。
【0038】
図1は、本発明の実施の形態1におけるマイクロプロセッサのブロック図である。
【0039】
最初に、マイクロプロセッサ1の構成について説明する。
【0040】
マイクロプロセッサ1は、次の要素を備える。プロセッサコア2は、メモリ9などから読み出したプログラムやデータに対して実際の演算を実行し、種々の命令制御を実行する。また、選択制御部4に暗号化の対象となるデータやプログラムの種類を通知する。選択制御部4は、プロセッサコア2からの暗号化対象のデータやプログラムの種類の通知に従い、格納部3を参照して、暗号化対象のデータなどに対応する暗号化方式を選択する。このとき、格納部3に格納された情報に従い、暗号化対象のデータやプログラム毎に異なった暗号化方式が選択される。選択制御部4は、選択結果を暗号化方式情報10として暗号化部5に出力する。
【0041】
格納部3は、暗号化の対象となるデータ毎に割り当てられる暗号化方式の組み合わせなどを格納する。
【0042】
暗号化部5は、格納部3からの暗号化方式情報10に基づく暗号化方式を用いて、対象となるデータやプログラムを暗号化する。このとき、暗号化対象となるデータやプログラムは、メモリ9からバス8を介して読み出される。暗号化対象となるデータやプログラムによって異なった暗号化方式が選択されているので、データやプログラムに応じて異なった暗号化方式により暗号化が実現される。なお、仕様や必要に応じて、異なるデータやプログラムであっても、同一の暗号化方式により暗号化されても良い。また、暗号化方式が同一の場合に、暗号鍵が変えられても良い。
【0043】
バスインターフェース7は、バス8とのデータのやり取りを制御する。メモリ制御部6は、メモリ9へのアクセスにおけるアドレスなどの制御を行う。なお、メモリ制御部6とバスインターフェースは同一のブロックで構成されても良い。
【0044】
メモリ9には、マイクロプロセッサ1がアクセスするデータやプログラムが記憶されている。マイクロプロセッサ1は、バス8を介してメモリ9に記憶されているデータやプログラムを読み出して、種々の処理に用いる。このとき、メモリ9に記憶されているデータやプログラムが、暗号化部5で暗号化された上でメモリ9に書き出されるので、これらのデータやプログラムは暗号化された状態でメモリ9に記憶される。
【0045】
以上の構成により、マイクロプロセッサ1がメモリ9との間でやり取りするデータやプログラムは、それぞれ異なった暗号化方式で暗号化されるため、他からの解読や改ざんが高い精度で防止される。
【0046】
次に、格納部3の詳細について図2から図4を用いて説明する。
【0047】
格納部3は、暗号化対象となるデータやプログラム毎に、対応する暗号化方式を決定するための情報を格納する。例えば、格納部3はデータやプログラムの種別に対応する暗号化方式の組み合わせを有する暗号化方式テーブル11を格納する。暗号化方式テーブル11は、レジスタやメモリなどを用いて形成される。
【0048】
図2、図3、図4は、本発明の実施の形態1における暗号化方式テーブルを表す図である。暗号化方式テーブル11は、暗号化対象のデータやプログラム(あるいはオペレーティングシステム用のプログラム)などと、これらに対応する暗号化方式をテーブル化したものである。
【0049】
図2に示される暗号化方式テーブル11は、4つの暗号化対象のデータとこれらに対応する暗号化方式を組み合わせたテーブルである。4つのデータは、第1データ20、第2データ21、第3データ22、第4データ23である。なお、図2では図示の便宜上第1データ20から第3データ23までの4つのデータが表されているが、これ以上であってもこれ以下であっても良い。
【0050】
また、第1データ20から第4データ23は、それぞれ異なるデータである。例えば、第1データ20は、フィルタリングに用いられる係数データであったり、第2データ21は、誤り検出のための生成多項式にかかわるデータであったりする。
【0051】
4つのデータには、各々に別個の暗号化方式が割り当てられている。第1データ20には、第1暗号化方式30が割り当てられている。第2データ21には、第2暗号化方式31が割り当てられている。第3データ22には、第3暗号化方式32が割り当てられている。第4データ23には、第4暗号化方式33が割り当てられている。第1暗号化方式30から第4暗号化方式33は、それぞれ異なる暗号化方式である。
【0052】
例えば、第1暗号化方式と第2暗号化方式は、暗号化に用いられる符号長が相違する。あるいは第3暗号化方式はDES方式の暗号化方式であり、第4暗号化方式は楕円符号化方式である。
【0053】
次に、図3に示される暗号化方式テーブル11では、第1データ20、第2データ21、第1プログラム24、第2プログラム25に異なる暗号化方式が割り当てられている。第1データ20には、第1暗号化方式30が割り当てられている。第2データ21には、第2暗号化方式31が割り当てられている。第1プログラム24には、第3暗号化方式32が割り当てられている。第2プログラム25には、第4暗号化方式33が割り当てられている。このように、データのみでなく、マイクロプロセッサ1がアクセスするプログラムも異なる暗号化方式が割り当てられて、暗号化が実行される。
【0054】
更に、図4に示される暗号化方式テーブル11では、データやプログラムに加えてオペレーティングシステム(「OS」)用プログラム26に対して、オペレーティングシステム専用暗号化方式34が割り当てられている。メモリ9には、オペレーティングシステムに含まれる常駐タスクなどのプログラムも記憶されており、これらも他からの解読や改ざんの対象となりうるので、暗号化されることが好適である。また、オペレーティングシステム用プログラム26に対しては、特に機密保護の要求が高いのでオペレーティングシステム専用暗号化方式34が用いられることが好ましい。他のデータやプログラムには用いられない専用の暗号化方式が用いられることで、解読や改ざんのより強固な防止が図られる。なお、オペレーティングシステム専用暗号化方式34は、他の暗号化方式と関連性の低い異種の暗号化方式であることが好適である。
【0055】
このように、データやプログラム毎に異なる暗号化方式が割り当てられることで、各々のデータやプログラムは異なる暗号化方式で暗号化される。データやプログラムが同一の暗号化方式で暗号化されている場合には、一つの暗号化方式が解読されると全てのデータやプログラムも解読される。すなわち、一つのデータに対する他からの解読や改ざんが、他の全てのデータやプログラムに波及する。これに対して、異なる暗号化方式で暗号化されている場合は、全ての暗号化されたデータやプログラムを解読するためには、全ての暗号化方式を解読する必要がある。このため、全ての暗号化されたデータやプログラムの解読や改ざんはきわめて困難となる。特に、暗号化方式が複数あることにより、解読者は、あらゆる組み合わせに基づいて暗号化の解読を行う必要があるため、暗号化方式が単一の場合に比べて、指数関数的に解読が困難となる。このため、データやプログラム毎に異なる暗号化方式を用いて暗号化することで、複数のデータやプログラムのいずれか、もしくは全部の機密保護の精度が向上する。また、従来の暗号鍵のみの相違では一つの暗号化方式に基づいた鍵の解読だけで、全ての暗号化されたデータなどが解読されていたため、機密保護の度合いが弱かった。これに対して、暗号化方式そのものが相違する本発明では、暗号鍵の解読よりはるかに困難な暗号化方式の解読を多数行う必要があるため、解読が非常に困難となり、機密保護の度合いが飛躍的に向上する。
【0056】
また、データやプログラムは、バス8上に信号が流れているときに他から解読されやすい。このため、マイクロプロセッサ1がメモリ9に記憶されているこれらのデータをアクセスした場合に、データは解読の対象となりやすい。このため、頻繁にアクセスされるデータに対しては、符号長の長い暗号化方式などを用いることで暗号化データの解読防止を高めることができる。逆に、アクセス頻度の低いデータに対しては、短い符号長の暗号化方式などを用いるなど、解読の可能性の高低に従って暗号化方式が割り当てられることも好適である。あるいは、暗号化方式が、データの重要度に応じて割り当てられることも好適である。例えば、機密保護の要求の高いデータに対しては、符号長の長い暗号化方式などの強固な暗号化方式が割り当てられ、機密保護要求の低いデータに対しては、通常の暗号化方式が割り当てられる。このように重要度やアクセス頻度に応じて異なる暗号化方式が割り当てられることで、処理負荷と機密保護とのバランスが確保される。
【0057】
また、相関性の高いデータやプログラムに対しては、相関性の低い暗号化方式をそれぞれ割り当てることも好適である。例えば、図3に示される第1データ20が第1プログラム24で用いられる場合は、第1データ20と第1プログラム24は相関性が高い。このため、第1データ20と第1プログラム24に、相関性の高い暗号化方式(例えば方式が類似している)が割り当てられた場合、一方が解読されることで他方も容易に解読、改ざんされてしまい、第1プログラムに基づく処理が不可能となることもありうる。このため、第1プログラム24と第1データ20には、相関性の低い暗号化方式が割り当てられ、一方の解読により他方の解読が容易となることを防止できる。結果として、改ざんによる誤動作などを防止できる。
【0058】
これらのデータやプログラムに対する異なる暗号化方式の割り当ては、図2から図4に示される暗号化方式テーブル11により実現されることが簡便であるが、レジスタ割り当てなどで実現されても良い。また、暗号化対象となるデータやプログラムの個数が、暗号化方式の個数よりも多い場合には、相対的にアクセス頻度や保護重要度の低いデータなどに対しては、同じ暗号化方式が割り当てられても良い。また、データやプログラムに対して固定的に暗号化方式が割り当てられるのではなく、順次入れ替えて割り当てられても良い。
【0059】
なお、暗号化方式テーブル11そのものも、暗号化されて記憶されていることが好ましい。暗号化されていることで、暗号化方式テーブル11の他からの読み出しを防止できるからである。
【0060】
以上のような、暗号化方式テーブル11などを格納した格納部3の暗号化情報を基に、暗号化部5でデータやプログラムが暗号化される。図5には、暗号化前と暗号化後のメモリ9の状態が示されている。
【0061】
図5(a)は、本発明の実施の形態1における暗号化前のメモリの状態を表す図であり、図5(b)は、本発明の実施の形態1における暗号化後のメモリの状態を表す図である。暗号化前では、非暗号化第1データ40、非暗号化第2データ41、非暗号化第1プログラム42、非暗号化第2プログラム43が、メモリ9に記憶されている。これに対して、暗号化後では、第1暗号化方式30で暗号化された暗号化第1データ50と、第2暗号化方式31で暗号化された暗号化第2データ51と、第3暗号化方式32で暗号化された暗号化第1プログラム52と、オペレーティングシステム専用暗号化方式34で暗号化された暗号化オペレーティングシステム用プログラム53が記憶されている。
【0062】
このように、暗号化が実行されることで、各データやプログラムは、異なる暗号化方式で暗号化されてメモリ9に記憶される。このため、バス8などを介した他からのアクセスがあっても、異なる暗号化方式で暗号化されているこれら複数のデータやプログラムの解読は困難である。結果として、他からのアクセスが可能なデータやプログラムの機密保護が確保される。特に、従来のような暗号鍵だけでなく暗号化方式が異なることで解読の困難性が飛躍的に向上し、機密保護の度合いが非常に高くなる。
【0063】
(実施の形態2)
次に実施の形態2について図6から図8を用いて説明する。実施の形態2では、暗号化によってデータサイズが変化することに対応するマイクロプロセッサ1について説明する。
【0064】
マイクロプロセッサ1は、メモリ9から読み出したデータやプログラムを暗号化し、暗号化されたデータなどを再びメモリに書き出して記憶させる。この暗号化によって、データやプログラムのデータサイズが変化する。このため、暗号化前と暗号化後では、メモリ9に記憶するデータなどの開始アドレスやデータサイズを変化させる必要がある。メモリ9に記憶される複数のデータの開始アドレスが、暗号化前と暗号化後で同一である場合に、暗号化によりデータサイズが増加すると、複数のデータのアドレスに重複部分が生じてしまう。結果として、メモリ9への暗号化後のデータなどの記憶が適切にできなくなる。特に、データやプログラム毎に異なる暗号化方式を用いて暗号化を行うマイクロプロセッサ1では、暗号化の種類毎にデータサイズ変化がまちまちとなる。
【0065】
図6は、本発明の実施の形態におけるマイクロプロセッサのブロック図であり、図7は、本発明の実施の形態2におけるメモリ制御部周辺のブロック図である。
【0066】
マイクロプロセッサ1は、選択制御部4を備え、選択制御部4は、使用する暗号化方式を選択する。結果として、選択制御部4は、選択した暗号化情報10を暗号化部5とメモリ制御部6に出力する。
【0067】
ここで、暗号化部5は、メモリ制御部6から、第2暗号化前データ情報101(暗号化対象の領域の先頭を基準とした暗号化前のアクセス先のオフセットアドレス、サイズ、値を含む)を受けて暗号化する。更に、暗号化の後、暗号化部5は、第2暗号化後データ情報102(暗号化対象の暗号化後のアクセス先オフセットアドレス、サイズ、値を含む)を出力する。
【0068】
暗号化部5で扱われるアドレスが、暗号化対象の領域内のオフセットアドレスであるのは、適用する暗号化方式によってアクセスするアドレスとの相違は、暗号化対象の領域内部に限定されるためである。また、暗号化方式の違いによるアクセス先のアドレス、サイズの変換についての情報は、暗号化部5での暗号化方式のそれぞれに対応して備えられることも好適である。
【0069】
メモリ制御部6は、プロセッサコア2とバスインターフェース7との間で変換する暗号化前後のデータのアドレス、サイズの制御を行う。まず、プロセッサコア2から受けた第1暗号化前データ情報100(暗号化前のメモリアクセス先のアドレス、サイズ、値を含む)を、第2暗号化前データ情報101(暗号化対象の領域の先頭を基準とした暗号化前のアクセス先のオフセットアドレス、サイズ、値を含む)に変換して暗号化部5へ出力する。
【0070】
次に、暗号化部5から第2暗号化後データ情報102(暗号化対象の暗号化後のアクセス先オフセットアドレス、サイズ、値を含む)を受けて、第1暗号化後データ情報103(暗号化後のメモリアクセス先のアドレス、サイズ、値を含む)に変換して出力する。メモリ制御部6は、この第1暗号化後データ情報103を用いて、データやプログラムのメモリ9への書き出し時のアドレスや領域の制御を行う。
【0071】
例えば、暗号化方式情報10と第1暗号化前データ情報100より、暗号化によるデータサイズが概ね倍となる場合には、メモリ制御部6は、格納サイズを倍とする領域制御を行う。同様に、メモリ制御部6は、次のデータ書き込み開始アドレスも、読み出し時の倍の値とする制御を行う。この制御により、暗号化によるデータサイズの変化に対応したメモリ9への制御が実現される。また、暗号化情報10などが用いられることで、暗号化方式の違いに応じたデータサイズ変化に適切に対応したメモリ制御が実現される。
【0072】
図8には、メモリ制御の状態が示されている。
【0073】
図8(a)は、本発明の実施の形態2における暗号化前のメモリの状態を表す図であり、図8(b)は、本発明の実施の形態2における暗号化後のメモリの状態を表す図である。
【0074】
暗号化前においては、メモリ9には、非暗号化第1データ40と非暗号化第2データ41が記憶されている。非暗号化第1データ40は、第1開始アドレス60から記憶され、非暗号化第2データ41は、第2開始アドレス61から記憶されている。これらの非暗号化第1データ40と非暗号化第2データ41が暗号化されることで、そのデータサイズが拡大する。このため、メモリ制御部6は、このデータサイズの拡大に合わせて開始アドレスを変化させる。
【0075】
暗号化第2データ51の変換後第2開始アドレス63は、データサイズ拡大に合わせて変化される。例えば、変換後第2開始アドレスの値は、一定の割合で増加されたり、暗号化方式情報10などに基づいて増加されたりする。
【0076】
以上のような、メモリ制御部6による、メモリ9に対する暗号化データなどの開始アドレス制御により、暗号化によるデータサイズの変化に対応したメモリ記憶が可能となる。このように、データサイズの変化に対応したメモリ制御により、機密保持の度合いの向上と、暗号化処理における適切なメモリ制御が同時に確保される。
【0077】
(実施の形態3)
次に実施の形態3について、図9と図10を用いて説明する。実施の形態3におけるマイクロプロセッサは、暗号化されたデータやプログラムを復号する復号部を更に備えている。
【0078】
図9は、本発明の実施の形態3におけるマイクロプロセッサのブロック図である。復号部14は、暗号化部5と共にマイクロプロセッサ1に備えられ、暗号化されたデータやプログラムを復号する。プロセッサコア2が、読み出した暗号化データなどを用いた処理を行う場合に、必要に応じて復号部14で暗号化データが復号される。
【0079】
格納部3は、復号部14で用いられる復号方式に関する情報を保持する。選択制御部4は、この復号方式情報から必要な復号方式を選択して、選択結果を復号部14に出力する。このとき、選択制御部4は暗号化方式に対応する復号方式を選択する。格納部3は、データやプログラム毎に異なる暗号化方式に対応した復号方式を保持する。例えば、テーブルなどによりデータやプログラム毎の復号方式を保持する。
【0080】
図10は、本発明の実施の形態3における格納部を表す図であり、暗号化方式/復号方式テーブル15が示されている。暗号化方式/復号方式テーブル15は、データやプログラム毎に適用する暗号化方式と復号方式の対応関係を備えている。なお、暗号化方式/復号方式テーブル15は、暗号化方式と復号方式の両方を備えているが、暗号化方式と復号方式のそれぞれを個別で構成されてもよい。
【0081】
暗号化方式/復号方式テーブル15は、図10に示される対応関係を備えている。第1データ20には、第1暗号化方式30と第1復号方式70が割り当てられる。第2データ21には、第2暗号化方式31と第2復号方式71が割り当てられる。第1プログラム24には、第3暗号化方式32と第3復号方式72が割り当てられる。オペレーティングシステム用プログラム26には、オペレーティングシステム専用暗号化方式34とオペレーティングシステム専用復号方式73が割り当てられる。
【0082】
選択制御部4は、格納部3に備えられているこの暗号化方式/復号方式テーブル15に基づいて、復号方式を選択して、選択結果を復号部14に出力する。すなわち、復号部14は、復号の対象となるデータが第1データ20の場合には、第1復号方式70を用いて復号する。復号の対象となるデータが第2データ21の場合には、復号部14は第2復号方式71を用いて復号する。復号の対象となるプログラムが第1プログラム24である場合には、復号部14は、第3復号方式72を用いて復号する。復号の対象となるプログラムがオペレーティングシステム用プログラム26である場合には、復号部14は、オペレーティングシステム専用復号方式73を用いて復号する。
【0083】
以上のように、格納部3にあらかじめ備えられた復号方式の対応関係に従って、暗号化されたデータやプログラムが復号される。復号されたデータやプログラムは、プロセッサコア2での演算処理に用いられる。
【0084】
なお、図10に示された暗号化方式/復号方式テーブル15は一例であり、別の組み合わせであってもよく、データやプログラムによって同じ復号方式が割り当てられても良い。
【0085】
また、復号されたデータやプログラムは、プロセッサコア2において用いられるので、バス8からはアクセスされることがない。復号されたデータやプログラムは、再び暗号化部5で暗号化された後にメモリ9に書き出されるので、バス8を介した解読なども行われにくい。
【0086】
このように、マイクロプロセッサ1内部に、暗号化方式に対応した復号方式を用いて復号する復号部5が設けられることで、プロセッサコア2での処理に必要な場合に復号されたデータやプログラムを用いることができる。また、暗号化方式と同様にデータやプログラム毎に復号方式が異なることで、外部からの解読なども非常に困難となり、機密保護の度合いが高まる。
【0087】
なお、復号部14は暗号化部5と共通する回路などが共用されてもよく、この場合には、回路規模などの削減が図られる。
【0088】
(実施の形態4)
次に実施の形態4について、図11と図12を用いて説明する。
【0089】
実施の形態4では、暗号化されたデータやプログラムがメモリ上に存在し、これをマイクロプロセッサ1が処理する場合について説明する。
【0090】
図11は、本発明の実施の形態4におけるマイクロプロセッサのブロック図であり、図12は本発明の実施の形態4におけるマイクロプロセッサのデータ処理のフローチャートである。
【0091】
メモリ9には、暗号化された暗号化第1データ50、暗号化第2データ51と暗号化オペレーティングシステム用プログラム53が記憶されている。これらは、暗号化第1データ50は第1暗号化方式30で暗号化され、暗号化第2データ51は第2暗号化方式31で暗号化され、暗号化オペレーティングシステム用プログラム53は、オペレーティングシステム専用暗号化方式34で暗号化されている。このため、マイクロプロセッサ1は、これらを用いた処理を行う場合には、それぞれの暗号化方式に対応する復号方式で復号する必要がある。特に、処理対象のデータが変わったにも関らず、異なる復号方式で復号して処理を行うと、エラーや誤動作が生じる。このため、プロセッサコア1による一連のプログラム処理において、処理するデータやプログラムが変化する際、すなわち異なる暗号化方式で暗号化されているデータやプログラムに変化する際には、変化する暗号化方式に対応して、復号方式を切り替える必要がある。データやプログラムが異なる暗号化方式を用いて暗号化されているためである。
【0092】
メモリ9に記憶されている暗号化第1データ50、暗号化第2データ51、及び暗号化オペレーティングシステム用プログラム53は、マイクロプロセッサ1により使用される。
【0093】
マイクロプロセッサ1は、これらのデータやプログラムを処理する際には、復号して暗号化を解除し、演算処理に用いる必要がある。このため、マイクロプロセッサ1は、選択制御部4において選択された復号方式に従って、復号部14にて復号されたデータなどを用いる。このとき、暗号化第1データ50は、第1復号方式70を必要とする。暗号化第2データ51は、第2復号方式71を必要とする。暗号化オペレーティングシステム用プログラム53は、オペレーティングシステム専用復号方式73を必要とする。このため、選択制御部4は、いずれの暗号化されたデータやプログラムが処理対象であるかを、認識した上で復号方式を選択する。選択制御部4は、データやプログラムのソフトウェア処理の終了によるソフトウェアからの通知信号や、ハードウェアからの割り込み信号を用いて、これらの復号対象となるデータやプログラムの切り替えを認識する。
【0094】
図12を用いて、復号対象となるデータの復号処理の流れについて説明する。
【0095】
まず、ステップ1にて、マイクロプロセッサ1は、メモリ9から暗号化第1データ50を読み出す。選択制御部4は、暗号化第1データ50の読み出し命令を出すときに、暗号化第1データ50が、第1暗号化方式30で暗号化され、第1暗号化方式30には、第1復号方式70が対応することを、格納部3の情報から認識する。この情報に従い、ステップ2にて、復号部14は、第1復号方式70を用いて暗号化第1データ50を復号する。マイクロプロセッサ1は、復号された第1データ20を用いた処理を実行する。
【0096】
次に、ステップ3にて、第1データから第2データへの切り替え通知がマイクロプロセッサ1に出力される。演算終了に伴い、ソフトウェアからの通知が、マイクロプロセッサに出力される。この通知により、選択制御部4は、第1データ20の処理に次いで、第2データの処理が必要であることを認識する。この認識に従って、ステップ4にて、選択制御部4は、格納部3の情報に基づいて第2復号方式71を選択する。選択制御部4は、第2復号方式71の選択結果を、復号方式情報として復号部14に出力する。
【0097】
次いで、ステップ5にて、マイクロプロセッサ1はメモリ9から暗号化第2データ51を読み出し、ステップ6にて、復号部は選択された第2復号方式71を用いて、暗号化第2データ51を復号する。マイクロプロセッサ1は、復号された第2データ21を用いた処理を行う。
【0098】
次に、このようなデータを用いたソフトウェア処理が行われている間に、ハードウェアからの割り込み(例えば、タイマー割り込みやインストラクション割り込みなど)が生じる場合がある。ハードウェア割り込みの場合には、マイクロプロセッサ1は、オペレーティングシステム用プログラムを用いた処理を行う必要がある。このため、ステップ7以降の処理が必要となる。
【0099】
ステップ7にて、ハードウェア割り込みが発生する(発生しない場合は、第2データ21を用いた処理が続行する)。ハードウェア割り込みが発生すると、ステップ8にて、選択制御部4はオペレーティングシステム専用復号方式73を、格納部3の情報に従って選択する。選択制御部4は、オペレーティングシステム専用復号方式73の選択結果を、復号方式情報として、復号部14に出力する。次いで、ステップ9にて、マイクロプロセッサ1は、メモリ9より暗号化オペレーティングシステム用プログラム53を読み出す。復号部14は、読み出された暗号化オペレーティングシステム用プログラム53を、オペレーティングシステム専用復号方式73を用いて復号する。マイクロプロセッサ1は、復号されたオペレーティングシステム用プログラム26を用いて、ハードウェア割り込み対する処理を実行する。このように、処理終了通知や、ハードウェア割り込みを利用して、異なる暗号化方式で暗号化されているデータやプログラムの、エラーなどの無い処理が実現される。また、このとき、処理終了通知が用いられることで、復号方式の選択切り替えと、メモリ9へのアクセスのタイミングを合わせることができ、無駄のない復号が実現される。更に、通常のデータやプログラムの処理から、オペレーティングシステム用プログラムの処理への切り替えに、割り込みを用いることで、適切な復号方式の切り替えが可能である。
【0100】
特に、オペレーティングシステム用プログラム26に対応する復号方式を、選択制御部4が選択するためには、プロセッサコア2が特定のモード(特権モードなど)とする設定がされていれば復号中の機密保護も高まる。すなわち、オペレーティングシステム用プログラムの復号中には、バスや内部レジスタへのアクセスはプロセッサコア2のみに許可されるため、バス8を介した他からのアクセスが拒絶される。このため、復号されたプログラムが、マイクロプロセッサ1内部のレジスタなどに記憶されている場合でも、他からのアクセスを防止できる。これは、特に機密保護の必要性の高いオペレーティングシステム用プログラム26において好適である。
【0101】
以上のように、処理終了信号や割り込み信号を用いて、異なる暗号化方式で暗号化されているデータやプログラムを、エラーやタイムラグを生じさせること無く、読み出して処理することができる。
【産業上の利用可能性】
【0102】
本発明は、例えばメモリから読み出して演算処理に用いるデータやプログラムの、外部からの解読や改ざんを防止する暗号化処理を備えるマイクロプロセッサの分野等において好適に利用できる。
【図面の簡単な説明】
【0103】
【図1】本発明の実施の形態1におけるマイクロプロセッサのブロック図
【図2】本発明の実施の形態1における暗号化方式テーブルを表す図
【図3】本発明の実施の形態1における暗号化方式テーブルを表す図
【図4】本発明の実施の形態1における暗号化方式テーブルを表す図
【図5】(a)本発明の実施の形態1における暗号化前のメモリの状態を表す図 (b)本発明の実施の形態1における暗号化後のメモリの状態を表す図
【図6】本発明の実施の形態2におけるマイクロプロセッサのブロック図
【図7】本発明の実施の形態2におけるメモリ制御部周辺のブロック図
【図8】(a)本発明の実施の形態2における暗号化前のメモリの状態を表す図 (b)本発明の実施の形態2における暗号化後のメモリの状態を表す図
【図9】本発明の実施の形態3におけるマイクロプロセッサのブロック図
【図10】本発明の実施の形態3における格納部を表す図
【図11】本発明の実施の形態4におけるマイクロプロセッサのブロック図
【図12】本発明の実施の形態4におけるマイクロプロセッサのデータ処理のフローチャート
【符号の説明】
【0104】
1 マイクロプロセッサ
2 プロセッサコア
3 格納部
4 選択制御部
5 暗号化部
6 メモリ制御部
7 バスインターフェース
8 バス
9 メモリ
10 暗号化方式情報
11暗号化方式テーブル
12 データサイズ情報
13 復号方式情報
14 復号部
15 暗号化方式/復号方式テーブル
20 第1データ
21 第2データ
22 第3データ
23 第4データ
24 第1プログラム
25 第2プログラム
26 オペレーティングシステム用プログラム
30 第1暗号化方式
31 第2暗号化方式
32 第3暗号化方式
33 第4暗号化方式
34 オペレーティングシステム専用暗号化方式
40 非暗号化第1データ
41 非暗号化第2データ
42 非暗号化第1プログラム
43 非暗号化オペレーティングシステム用プログラム
70 第1復号方式
71 第2復号方式
72 第3復号方式
73 オペレーティングシステム用復号方式

【特許請求の範囲】
【請求項1】
複数のデータを暗号化するマイクロプロセッサであって、
複数の暗号化方式の情報を格納する格納部と、
前記格納部から前記複数の暗号化方式のいずれかを選択する選択制御部と、
前記選択制御部で選択された暗号化方式に従って前記データの暗号化を行う暗号化部を備え、前記データ毎に異なる暗号化方式で暗号化するマイクロプロセッサ。
【請求項2】
前記格納部は、前記複数のデータと前記複数の暗号化方式の組み合わせを有する暗号化方式テーブルを備える請求項1記載のマイクロプロセッサ。
【請求項3】
前記暗号化方式テーブルは、暗号化されている請求項2記載のマイクロプロセッサ。
【請求項4】
前記暗号化方式テーブルは、前記複数のデータの内、相関関係の高い2以上のデータのそれぞれに対して相関関係の低い異なる暗号化方式を割り当てる組み合わせを有する請求項2記載のマイクロプロセッサ。
【請求項5】
前記格納部は、前記暗号化方式に応じた暗号鍵を更に格納する請求項1から4のいずれか記載のマイクロプロセッサ。
【請求項6】
前記データは、前記マイクロプロセッサが外部メモリから読み出したデータを含む請求項1から5のいずれか記載のマイクロプロセッサ。
【請求項7】
前記データは、前記マイクロプロセッサで用いられるプログラムを含む請求項1から6のいずれか記載のマイクロプロセッサ。
【請求項8】
前記プログラムは、オペレーティングシステム用プログラムを含む請求項7記載のマイクロプロセッサ。
【請求項9】
前記複数の暗号化方式は、前記オペレーティングシステム用プログラム専用の暗号化方式を含む請求項8記載のマイクロプロセッサ。
【請求項10】
前記データの外部メモリからの読み出しアドレスと該外部メモリへの書き込みアドレスを制御するメモリ制御部を更に備える請求項1から9のいずれか記載のマイクロプロセッサ。
【請求項11】
前記メモリ制御部は、前記データの暗号化前と暗号化後のデータサイズの変化に対応したアドレス制御を行う請求項10記載のマイクロプロセッサ。
【請求項12】
前記メモリ制御部は、前記選択制御部で選択された暗号化方式に基づいて、アドレス制御を行う請求項10記載のマイクロプロセッサ。
【請求項13】
前記暗号化部で暗号化されたデータを復号する復号部を更に備える請求項1から12のいずれか記載のマイクロプロセッサ。
【請求項14】
前記格納部が、前記復号部で用いられる復号方式の情報を更に格納する請求項13記載のマイクロプロセッサ。
【請求項15】
前記復号部が、前記暗号化部で用いられた暗号化方式に対応する復号方式により前記暗号化されたデータを復号する請求項13記載のマイクロプロセッサ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate