(57)【要約】  【課題】  外部からアクセス可能なデータバスを介してアクセスされるデータやプログラムに対して他からの解読や改ざんを防止する暗号化を施すマイクロプロセッサを提供する。  【解決手段】  複数のデータを暗号化するマイクロプロセッサ１であって、複数の暗号化方式の情報を格納する格納部３と、格納部３から複数の暗号化方式のいずれかを選択する選択制御部４と、選択制御部４で選択された暗号化方式に従ってデータの暗号化を行う暗号化部５を備え、データ毎に異なる暗号化方式で暗号化するマイクロプロセッサ１により、マイクロプロセッサ１がアクセスするデータやプログラムの他からの解読や改ざんを困難とする。【選択図】  図１
2006254099.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータを暗号化するマイクロプロセッサであって、
複数の暗号化方式の情報を格納する格納部と、
前記格納部から前記複数の暗号化方式のいずれかを選択する選択制御部と、
前記選択制御部で選択された暗号化方式に従って前記データの暗号化を行う暗号化部を備え、前記データ毎に異なる暗号化方式で暗号化するマイクロプロセッサ。
【請求項２】
前記格納部は、前記複数のデータと前記複数の暗号化方式の組み合わせを有する暗号化方式テーブルを備える請求項１記載のマイクロプロセッサ。
【請求項３】
前記暗号化方式テーブルは、暗号化されている請求項２記載のマイクロプロセッサ。
【請求項４】
前記暗号化方式テーブルは、前記複数のデータの内、相関関係の高い２以上のデータのそれぞれに対して相関関係の低い異なる暗号化方式を割り当てる組み合わせを有する請求項２記載のマイクロプロセッサ。
【請求項５】
前記格納部は、前記暗号化方式に応じた暗号鍵を更に格納する請求項１から４のいずれか記載のマイクロプロセッサ。
【請求項６】
前記データは、前記マイクロプロセッサが外部メモリから読み出したデータを含む請求項１から５のいずれか記載のマイクロプロセッサ。
【請求項７】
前記データは、前記マイクロプロセッサで用いられるプログラムを含む請求項１から６のいずれか記載のマイクロプロセッサ。
【請求項８】
前記プログラムは、オペレーティングシステム用プログラムを含む請求項７記載のマイクロプロセッサ。
【請求項９】
前記複数の暗号化方式は、前記オペレーティングシステム用プログラム専用の暗号化方式を含む請求項８記載のマイクロプロセッサ。
【請求項１０】
前記データの外部メモリからの読み出しアドレスと該外部メモリへの書き込みアドレスを制御するメモリ制御部を更に備える請求項１から９のいずれか記載のマイクロプロセッサ。
【請求項１１】
前記メモリ制御部は、前記データの暗号化前と暗号化後のデータサイズの変化に対応したアドレス制御を行う請求項１０記載のマイクロプロセッサ。
【請求項１２】
前記メモリ制御部は、前記選択制御部で選択された暗号化方式に基づいて、アドレス制御を行う請求項１０記載のマイクロプロセッサ。
【請求項１３】
前記暗号化部で暗号化されたデータを復号する復号部を更に備える請求項１から１２のいずれか記載のマイクロプロセッサ。
【請求項１４】
前記格納部が、前記復号部で用いられる復号方式の情報を更に格納する請求項１３記載のマイクロプロセッサ。
【請求項１５】
前記復号部が、前記暗号化部で用いられた暗号化方式に対応する復号方式により前記暗号化されたデータを復号する請求項１３記載のマイクロプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサが処理するデータやプログラムが解読や改ざんされることを防止するマイクロプロセッサに関するものである。
【背景技術】
【０００２】
マイクロプロセッサが処理のためにアクセスするデータやプログラムは、マイクロプロセッサとデータバスを介して接続されるメモリ中に保存され、処理の必要に応じてマイクロプロセッサからアクセスされる。ここで、データバスはマイクロプロセッサだけでなく、他の装置などからもアクセスが可能であるため、メモリ中のデータやプログラム、あるいはマイクロプロセッサ内部のレジスタに取り込まれたデータやプログラムも他の装置などからアクセス可能である。このように他からアクセス可能であるために、データやプログラムの解読や改ざんが可能である。このため、これらのデータやプログラムの解読や改ざんを防止して機密保護を実現するために、マイクロプロセッサがアクセスするデータやプログラムを暗号化することが行われている。例えば、特許文献１（特開２００３−２８０９８９号公報）は、アクセスされるデータやプログラムを、異なる暗号化鍵を用いて暗号化するマイクロプロセッサの技術を開示する。あるいは、特許文献１で開示されるマイクロプロセッサは、異なる暗号鍵で暗号化されたこれらのデータやプログラムを、異なる暗号鍵に対応する復号鍵で復号する。
【０００３】
特許文献１で開示されるマイクロプロセッサは、複数のデータやプログラムを異なる暗号鍵で暗号化するため、より強固な機密保護が実現されていた。
【０００４】
しかしながら、近年の暗号化データの解読技術などの進歩により、暗号化するデータやプログラム毎に暗号鍵を相違させただけでは、解読防止などが不十分である。特に、暗号化方式が解読されることで、暗号鍵の異なる全ての暗号化データが解読されてしまう問題があった。更には、解読されたデータやプログラムが改ざんされることも生じる問題もあった。
【０００５】
特に、マイクロプロセッサがアクセスするデータやプログラムは、データバスを介して他からアクセスが可能であるため、暗号化の解読によりデータやプログラムの中身が容易に入手されてしまう問題があった。
【特許文献１】特開２００３−２８０９８９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
そこで本発明は、外部からアクセス可能なデータバスを介してアクセスされるデータやプログラムに対して、他からの解読や改ざんを防止する暗号化を施すマイクロプロセッサを提供することを目的とする。
【課題を解決するための手段】
【０００７】
第１の発明に係るマイクロプロセッサは、複数のデータを暗号化するマイクロプロセッサであって、複数の暗号化方式の情報を格納する格納部と、格納部から複数の暗号化方式のいずれかを選択する選択制御部と、選択制御部で選択された暗号化方式に従ってデータの暗号化を行う暗号化部を備え、データ毎に異なる暗号化方式で暗号化する。
【０００８】
この構成により、マイクロプロセッサがアクセスするデータやプログラムが、それぞれ別の暗号化方式により暗号化されるため、これらのデータやプログラムの他からの解読や改ざんが困難となる。結果として、マイクロプロセッサがアクセスするデータやプログラムの機密保護の度合いが高まる。
【０００９】
第２の発明に係るマイクロプロセッサは、格納部は、複数のデータと複数の暗号化方式の組み合わせを有する暗号化方式テーブルを備える。
【００１０】
この構成により、データやプログラム毎に異なる暗号化方式を容易に割り当てることができる。
【００１１】
第３の発明に係るマイクロプロセッサは、暗号化方式テーブルは、暗号化されている。
【００１２】
この構成により、データ毎によって割り当てられる暗号化方式に関する情報も、他からの解読が困難となる。
【００１３】
第４の発明に係るマイクロプロセッサは、暗号化方式テーブルは、複数のデータの内、相関関係の高い２以上のデータのそれぞれに対して相関関係の低い異なる暗号化方式を割り当てる組み合わせを有する。
【００１４】
この構成により、相関関係の高いデータやプログラムの全ての暗号化が解読されることが極めて困難となる。結果として、機密保護の度合いが更に高まる。
【００１５】
第５の発明に係るマイクロプロセッサは、格納部は、暗号化方式に応じた暗号鍵を更に格納する。
【００１６】
この構成により、データ毎に暗号化方式に加えて暗号鍵も異ならせて暗号化を行うことができる。
【００１７】
第６の発明に係るマイクロプロセッサは、データは、マイクロプロセッサが外部メモリから読み出したデータを含む。
【００１８】
この構成により、マイクロプロセッサとメモリ間のやり取り時における、他からのデータの解読を防止できる。
【００１９】
第７の発明に係るマイクロプロセッサは、データは、マイクロプロセッサで用いられるプログラムを含む。
【００２０】
この構成により、データのみならず、マイクロプロセッサが処理に用いるプログラムが異なる暗号化方式により暗号化される。
【００２１】
第８の発明に係るマイクロプロセッサでは、プログラムは、オペレーティングシステム用プログラムを含む。
【００２２】
この構成により、マイクロプロセッサが用いるオペレーティングシステム用プログラムも、異なる暗号化方式により暗号化され、オペレーティングシステム用プログラムが、外部メモリに記憶されている場合などにも効果的である。
【００２３】
第９の発明に係るマイクロプロセッサでは、複数の暗号化方式は、オペレーティングシステム用プログラム専用の暗号化方式を含む。
【００２４】
この構成により、オペレーティングシステム用プログラムに対しては、特に機密保護の度合いの高い暗号化を施すことができる。
【００２５】
第１０の発明に係るマイクロプロセッサでは、データの外部メモリからの読み出しアドレスと外部メモリへの書き込みアドレスを制御するメモリ制御部を更に備える。
【００２６】
この構成により、暗号化の前後で変化するアクセス先のアドレスやデータサイズに対応した、メモリにおけるデータ保持が適切に行われる。
【００２７】
第１１の発明に係るマイクロプロセッサでは、メモリ制御部は、データの暗号化前と暗号化後のデータサイズの変化に対応したアドレス制御を行う。
【００２８】
この構成により、暗号化の前後で変化するアクセス先のアドレスやデータサイズに対応した、メモリにおけるデータ保持が適切に行われる。
【００２９】
第１２の発明に係るマイクロプロセッサでは、メモリ制御部は、選択制御部で選択された暗号化方式に基づいて、アドレス制御を行う。
【００３０】
この構成により、暗号化方式情報に基づいてアドレス制御を行うため、暗号化方式によってデータサイズの変化が異なる場合であっても、無駄のないメモリ空間におけるデータ配置が可能となる。
【００３１】
第１３の発明に係るマイクロプロセッサは、暗号化部で暗号化されたデータを復号する復号部を更に備える。
【００３２】
この構成により、必要に応じてマイクロプロセッサは、暗号化されたデータやプログラムを復号した上で、演算処理などに用いることができる。
【発明の効果】
【００３３】
本発明によれば、マイクロプロセッサがアクセスするデータやプログラムが、それぞれ別個の暗号化方式で暗号化されるため、これらの暗号化されたデータやプログラムの解読が非常に困難となる。このため、マイクロプロセッサとメモリ間に構成されるバスなどを介した、データの解読や改ざんが困難となり、マイクロプロセッサが必要とするデータやプログラムの機密保護の度合いが高まる効果がある。
【００３４】
また、暗号化により変化するデータサイズに対応したメモリ制御を行うことで、機密保護の度合いを高めるために、データやプログラムに応じて暗号化方式を変える場合でも、確実なメモリ書き込みなどが可能となる。このようなメモリ制御により、データやプログラム毎の暗号化方式の割り当ての自由度が高まる効果がある。
【００３５】
また、暗号化部に対応する復号部が備えられることで、マイクロプロセッサは、暗号化されたデータやプログラムを容易に演算処理に用いることができる。また、復号においては、暗号化方式に対応した復号方式が用いられるため、機密保護を高めるために複数の暗号化方式が用いられる場合に最適である。
【発明を実施するための最良の形態】
【００３６】
以下図面を参照しながら、本発明の実施の形態を説明する。
【００３７】
（実施の形態１）
図１から図５を用いて、実施の形態１におけるマイクロプロセッサについて説明する。
【００３８】
図１は、本発明の実施の形態１におけるマイクロプロセッサのブロック図である。
【００３９】
最初に、マイクロプロセッサ１の構成について説明する。
【００４０】
マイクロプロセッサ１は、次の要素を備える。プロセッサコア２は、メモリ９などから読み出したプログラムやデータに対して実際の演算を実行し、種々の命令制御を実行する。また、選択制御部４に暗号化の対象となるデータやプログラムの種類を通知する。選択制御部４は、プロセッサコア２からの暗号化対象のデータやプログラムの種類の通知に従い、格納部３を参照して、暗号化対象のデータなどに対応する暗号化方式を選択する。このとき、格納部３に格納された情報に従い、暗号化対象のデータやプログラム毎に異なった暗号化方式が選択される。選択制御部４は、選択結果を暗号化方式情報１０として暗号化部５に出力する。
【００４１】
格納部３は、暗号化の対象となるデータ毎に割り当てられる暗号化方式の組み合わせなどを格納する。
【００４２】
暗号化部５は、格納部３からの暗号化方式情報１０に基づく暗号化方式を用いて、対象となるデータやプログラムを暗号化する。このとき、暗号化対象となるデータやプログラムは、メモリ９からバス８を介して読み出される。暗号化対象となるデータやプログラムによって異なった暗号化方式が選択されているので、データやプログラムに応じて異なった暗号化方式により暗号化が実現される。なお、仕様や必要に応じて、異なるデータやプログラムであっても、同一の暗号化方式により暗号化されても良い。また、暗号化方式が同一の場合に、暗号鍵が変えられても良い。
【００４３】
バスインターフェース７は、バス８とのデータのやり取りを制御する。メモリ制御部６は、メモリ９へのアクセスにおけるアドレスなどの制御を行う。なお、メモリ制御部６とバスインターフェースは同一のブロックで構成されても良い。
【００４４】
メモリ９には、マイクロプロセッサ１がアクセスするデータやプログラムが記憶されている。マイクロプロセッサ１は、バス８を介してメモリ９に記憶されているデータやプログラムを読み出して、種々の処理に用いる。このとき、メモリ９に記憶されているデータやプログラムが、暗号化部５で暗号化された上でメモリ９に書き出されるので、これらのデータやプログラムは暗号化された状態でメモリ９に記憶される。
【００４５】
以上の構成により、マイクロプロセッサ１がメモリ９との間でやり取りするデータやプログラムは、それぞれ異なった暗号化方式で暗号化されるため、他からの解読や改ざんが高い精度で防止される。
【００４６】
次に、格納部３の詳細について図２から図４を用いて説明する。
【００４７】
格納部３は、暗号化対象となるデータやプログラム毎に、対応する暗号化方式を決定するための情報を格納する。例えば、格納部３はデータやプログラムの種別に対応する暗号化方式の組み合わせを有する暗号化方式テーブル１１を格納する。暗号化方式テーブル１１は、レジスタやメモリなどを用いて形成される。
【００４８】
図２、図３、図４は、本発明の実施の形態１における暗号化方式テーブルを表す図である。暗号化方式テーブル１１は、暗号化対象のデータやプログラム（あるいはオペレーティングシステム用のプログラム）などと、これらに対応する暗号化方式をテーブル化したものである。
【００４９】
図２に示される暗号化方式テーブル１１は、４つの暗号化対象のデータとこれらに対応する暗号化方式を組み合わせたテーブルである。４つのデータは、第１データ２０、第２データ２１、第３データ２２、第４データ２３である。なお、図２では図示の便宜上第１データ２０から第３データ２３までの４つのデータが表されているが、これ以上であってもこれ以下であっても良い。
【００５０】
また、第１データ２０から第４データ２３は、それぞれ異なるデータである。例えば、第１データ２０は、フィルタリングに用いられる係数データであったり、第２データ２１は、誤り検出のための生成多項式にかかわるデータであったりする。
【００５１】
４つのデータには、各々に別個の暗号化方式が割り当てられている。第１データ２０には、第１暗号化方式３０が割り当てられている。第２データ２１には、第２暗号化方式３１が割り当てられている。第３データ２２には、第３暗号化方式３２が割り当てられている。第４データ２３には、第４暗号化方式３３が割り当てられている。第１暗号化方式３０から第４暗号化方式３３は、それぞれ異なる暗号化方式である。
【００５２】
例えば、第１暗号化方式と第２暗号化方式は、暗号化に用いられる符号長が相違する。あるいは第３暗号化方式はＤＥＳ方式の暗号化方式であり、第４暗号化方式は楕円符号化方式である。
【００５３】
次に、図３に示される暗号化方式テーブル１１では、第１データ２０、第２データ２１、第１プログラム２４、第２プログラム２５に異なる暗号化方式が割り当てられている。第１データ２０には、第１暗号化方式３０が割り当てられている。第２データ２１には、第２暗号化方式３１が割り当てられている。第１プログラム２４には、第３暗号化方式３２が割り当てられている。第２プログラム２５には、第４暗号化方式３３が割り当てられている。このように、データのみでなく、マイクロプロセッサ１がアクセスするプログラムも異なる暗号化方式が割り当てられて、暗号化が実行される。
【００５４】
更に、図４に示される暗号化方式テーブル１１では、データやプログラムに加えてオペレーティングシステム（「ＯＳ」）用プログラム２６に対して、オペレーティングシステム専用暗号化方式３４が割り当てられている。メモリ９には、オペレーティングシステムに含まれる常駐タスクなどのプログラムも記憶されており、これらも他からの解読や改ざんの対象となりうるので、暗号化されることが好適である。また、オペレーティングシステム用プログラム２６に対しては、特に機密保護の要求が高いのでオペレーティングシステム専用暗号化方式３４が用いられることが好ましい。他のデータやプログラムには用いられない専用の暗号化方式が用いられることで、解読や改ざんのより強固な防止が図られる。なお、オペレーティングシステム専用暗号化方式３４は、他の暗号化方式と関連性の低い異種の暗号化方式であることが好適である。
【００５５】
このように、データやプログラム毎に異なる暗号化方式が割り当てられることで、各々のデータやプログラムは異なる暗号化方式で暗号化される。データやプログラムが同一の暗号化方式で暗号化されている場合には、一つの暗号化方式が解読されると全てのデータやプログラムも解読される。すなわち、一つのデータに対する他からの解読や改ざんが、他の全てのデータやプログラムに波及する。これに対して、異なる暗号化方式で暗号化されている場合は、全ての暗号化されたデータやプログラムを解読するためには、全ての暗号化方式を解読する必要がある。このため、全ての暗号化されたデータやプログラムの解読や改ざんはきわめて困難となる。特に、暗号化方式が複数あることにより、解読者は、あらゆる組み合わせに基づいて暗号化の解読を行う必要があるため、暗号化方式が単一の場合に比べて、指数関数的に解読が困難となる。このため、データやプログラム毎に異なる暗号化方式を用いて暗号化することで、複数のデータやプログラムのいずれか、もしくは全部の機密保護の精度が向上する。また、従来の暗号鍵のみの相違では一つの暗号化方式に基づいた鍵の解読だけで、全ての暗号化されたデータなどが解読されていたため、機密保護の度合いが弱かった。これに対して、暗号化方式そのものが相違する本発明では、暗号鍵の解読よりはるかに困難な暗号化方式の解読を多数行う必要があるため、解読が非常に困難となり、機密保護の度合いが飛躍的に向上する。
【００５６】
また、データやプログラムは、バス８上に信号が流れているときに他から解読されやすい。このため、マイクロプロセッサ１がメモリ９に記憶されているこれらのデータをアクセスした場合に、データは解読の対象となりやすい。このため、頻繁にアクセスされるデータに対しては、符号長の長い暗号化方式などを用いることで暗号化データの解読防止を高めることができる。逆に、アクセス頻度の低いデータに対しては、短い符号長の暗号化方式などを用いるなど、解読の可能性の高低に従って暗号化方式が割り当てられることも好適である。あるいは、暗号化方式が、データの重要度に応じて割り当てられることも好適である。例えば、機密保護の要求の高いデータに対しては、符号長の長い暗号化方式などの強固な暗号化方式が割り当てられ、機密保護要求の低いデータに対しては、通常の暗号化方式が割り当てられる。このように重要度やアクセス頻度に応じて異なる暗号化方式が割り当てられることで、処理負荷と機密保護とのバランスが確保される。
【００５７】
また、相関性の高いデータやプログラムに対しては、相関性の低い暗号化方式をそれぞれ割り当てることも好適である。例えば、図３に示される第１データ２０が第１プログラム２４で用いられる場合は、第１データ２０と第１プログラム２４は相関性が高い。このため、第１データ２０と第１プログラム２４に、相関性の高い暗号化方式（例えば方式が類似している）が割り当てられた場合、一方が解読されることで他方も容易に解読、改ざんされてしまい、第１プログラムに基づく処理が不可能となることもありうる。このため、第１プログラム２４と第１データ２０には、相関性の低い暗号化方式が割り当てられ、一方の解読により他方の解読が容易となることを防止できる。結果として、改ざんによる誤動作などを防止できる。
【００５８】
これらのデータやプログラムに対する異なる暗号化方式の割り当ては、図２から図４に示される暗号化方式テーブル１１により実現されることが簡便であるが、レジスタ割り当てなどで実現されても良い。また、暗号化対象となるデータやプログラムの個数が、暗号化方式の個数よりも多い場合には、相対的にアクセス頻度や保護重要度の低いデータなどに対しては、同じ暗号化方式が割り当てられても良い。また、データやプログラムに対して固定的に暗号化方式が割り当てられるのではなく、順次入れ替えて割り当てられても良い。
【００５９】
なお、暗号化方式テーブル１１そのものも、暗号化されて記憶されていることが好ましい。暗号化されていることで、暗号化方式テーブル１１の他からの読み出しを防止できるからである。
【００６０】
以上のような、暗号化方式テーブル１１などを格納した格納部３の暗号化情報を基に、暗号化部５でデータやプログラムが暗号化される。図５には、暗号化前と暗号化後のメモリ９の状態が示されている。
【００６１】
図５（ａ）は、本発明の実施の形態１における暗号化前のメモリの状態を表す図であり、図５（ｂ）は、本発明の実施の形態１における暗号化後のメモリの状態を表す図である。暗号化前では、非暗号化第１データ４０、非暗号化第２データ４１、非暗号化第１プログラム４２、非暗号化第２プログラム４３が、メモリ９に記憶されている。これに対して、暗号化後では、第１暗号化方式３０で暗号化された暗号化第１データ５０と、第２暗号化方式３１で暗号化された暗号化第２データ５１と、第３暗号化方式３２で暗号化された暗号化第１プログラム５２と、オペレーティングシステム専用暗号化方式３４で暗号化された暗号化オペレーティングシステム用プログラム５３が記憶されている。
【００６２】
このように、暗号化が実行されることで、各データやプログラムは、異なる暗号化方式で暗号化されてメモリ９に記憶される。このため、バス８などを介した他からのアクセスがあっても、異なる暗号化方式で暗号化されているこれら複数のデータやプログラムの解読は困難である。結果として、他からのアクセスが可能なデータやプログラムの機密保護が確保される。特に、従来のような暗号鍵だけでなく暗号化方式が異なることで解読の困難性が飛躍的に向上し、機密保護の度合いが非常に高くなる。
【００６３】
（実施の形態２）
次に実施の形態２について図６から図８を用いて説明する。実施の形態２では、暗号化によってデータサイズが変化することに対応するマイクロプロセッサ１について説明する。
【００６４】
マイクロプロセッサ１は、メモリ９から読み出したデータやプログラムを暗号化し、暗号化されたデータなどを再びメモリに書き出して記憶させる。この暗号化によって、データやプログラムのデータサイズが変化する。このため、暗号化前と暗号化後では、メモリ９に記憶するデータなどの開始アドレスやデータサイズを変化させる必要がある。メモリ９に記憶される複数のデータの開始アドレスが、暗号化前と暗号化後で同一である場合に、暗号化によりデータサイズが増加すると、複数のデータのアドレスに重複部分が生じてしまう。結果として、メモリ９への暗号化後のデータなどの記憶が適切にできなくなる。特に、データやプログラム毎に異なる暗号化方式を用いて暗号化を行うマイクロプロセッサ１では、暗号化の種類毎にデータサイズ変化がまちまちとなる。
【００６５】
図６は、本発明の実施の形態におけるマイクロプロセッサのブロック図であり、図７は、本発明の実施の形態２におけるメモリ制御部周辺のブロック図である。
【００６６】
マイクロプロセッサ１は、選択制御部４を備え、選択制御部４は、使用する暗号化方式を選択する。結果として、選択制御部４は、選択した暗号化情報１０を暗号化部５とメモリ制御部６に出力する。
【００６７】
ここで、暗号化部５は、メモリ制御部６から、第２暗号化前データ情報１０１（暗号化対象の領域の先頭を基準とした暗号化前のアクセス先のオフセットアドレス、サイズ、値を含む）を受けて暗号化する。更に、暗号化の後、暗号化部５は、第２暗号化後データ情報１０２（暗号化対象の暗号化後のアクセス先オフセットアドレス、サイズ、値を含む）を出力する。
【００６８】
暗号化部５で扱われるアドレスが、暗号化対象の領域内のオフセットアドレスであるのは、適用する暗号化方式によってアクセスするアドレスとの相違は、暗号化対象の領域内部に限定されるためである。また、暗号化方式の違いによるアクセス先のアドレス、サイズの変換についての情報は、暗号化部５での暗号化方式のそれぞれに対応して備えられることも好適である。
【００６９】
メモリ制御部６は、プロセッサコア２とバスインターフェース７との間で変換する暗号化前後のデータのアドレス、サイズの制御を行う。まず、プロセッサコア２から受けた第１暗号化前データ情報１００（暗号化前のメモリアクセス先のアドレス、サイズ、値を含む）を、第２暗号化前データ情報１０１（暗号化対象の領域の先頭を基準とした暗号化前のアクセス先のオフセットアドレス、サイズ、値を含む）に変換して暗号化部５へ出力する。
【００７０】
次に、暗号化部５から第２暗号化後データ情報１０２（暗号化対象の暗号化後のアクセス先オフセットアドレス、サイズ、値を含む）を受けて、第１暗号化後データ情報１０３（暗号化後のメモリアクセス先のアドレス、サイズ、値を含む）に変換して出力する。メモリ制御部６は、この第１暗号化後データ情報１０３を用いて、データやプログラムのメモリ９への書き出し時のアドレスや領域の制御を行う。
【００７１】
例えば、暗号化方式情報１０と第１暗号化前データ情報１００より、暗号化によるデータサイズが概ね倍となる場合には、メモリ制御部６は、格納サイズを倍とする領域制御を行う。同様に、メモリ制御部６は、次のデータ書き込み開始アドレスも、読み出し時の倍の値とする制御を行う。この制御により、暗号化によるデータサイズの変化に対応したメモリ９への制御が実現される。また、暗号化情報１０などが用いられることで、暗号化方式の違いに応じたデータサイズ変化に適切に対応したメモリ制御が実現される。
【００７２】
図８には、メモリ制御の状態が示されている。
【００７３】
図８（ａ）は、本発明の実施の形態２における暗号化前のメモリの状態を表す図であり、図８（ｂ）は、本発明の実施の形態２における暗号化後のメモリの状態を表す図である。
【００７４】
暗号化前においては、メモリ９には、非暗号化第１データ４０と非暗号化第２データ４１が記憶されている。非暗号化第１データ４０は、第１開始アドレス６０から記憶され、非暗号化第２データ４１は、第２開始アドレス６１から記憶されている。これらの非暗号化第１データ４０と非暗号化第２データ４１が暗号化されることで、そのデータサイズが拡大する。このため、メモリ制御部６は、このデータサイズの拡大に合わせて開始アドレスを変化させる。
【００７５】
暗号化第２データ５１の変換後第２開始アドレス６３は、データサイズ拡大に合わせて変化される。例えば、変換後第２開始アドレスの値は、一定の割合で増加されたり、暗号化方式情報１０などに基づいて増加されたりする。
【００７６】
以上のような、メモリ制御部６による、メモリ９に対する暗号化データなどの開始アドレス制御により、暗号化によるデータサイズの変化に対応したメモリ記憶が可能となる。このように、データサイズの変化に対応したメモリ制御により、機密保持の度合いの向上と、暗号化処理における適切なメモリ制御が同時に確保される。
【００７７】
（実施の形態３）
次に実施の形態３について、図９と図１０を用いて説明する。実施の形態３におけるマイクロプロセッサは、暗号化されたデータやプログラムを復号する復号部を更に備えている。
【００７８】
図９は、本発明の実施の形態３におけるマイクロプロセッサのブロック図である。復号部１４は、暗号化部５と共にマイクロプロセッサ１に備えられ、暗号化されたデータやプログラムを復号する。プロセッサコア２が、読み出した暗号化データなどを用いた処理を行う場合に、必要に応じて復号部１４で暗号化データが復号される。
【００７９】
格納部３は、復号部１４で用いられる復号方式に関する情報を保持する。選択制御部４は、この復号方式情報から必要な復号方式を選択して、選択結果を復号部１４に出力する。このとき、選択制御部４は暗号化方式に対応する復号方式を選択する。格納部３は、データやプログラム毎に異なる暗号化方式に対応した復号方式を保持する。例えば、テーブルなどによりデータやプログラム毎の復号方式を保持する。
【００８０】
図１０は、本発明の実施の形態３における格納部を表す図であり、暗号化方式／復号方式テーブル１５が示されている。暗号化方式／復号方式テーブル１５は、データやプログラム毎に適用する暗号化方式と復号方式の対応関係を備えている。なお、暗号化方式／復号方式テーブル１５は、暗号化方式と復号方式の両方を備えているが、暗号化方式と復号方式のそれぞれを個別で構成されてもよい。
【００８１】
暗号化方式／復号方式テーブル１５は、図１０に示される対応関係を備えている。第１データ２０には、第１暗号化方式３０と第１復号方式７０が割り当てられる。第２データ２１には、第２暗号化方式３１と第２復号方式７１が割り当てられる。第１プログラム２４には、第３暗号化方式３２と第３復号方式７２が割り当てられる。オペレーティングシステム用プログラム２６には、オペレーティングシステム専用暗号化方式３４とオペレーティングシステム専用復号方式７３が割り当てられる。
【００８２】
選択制御部４は、格納部３に備えられているこの暗号化方式／復号方式テーブル１５に基づいて、復号方式を選択して、選択結果を復号部１４に出力する。すなわち、復号部１４は、復号の対象となるデータが第１データ２０の場合には、第１復号方式７０を用いて復号する。復号の対象となるデータが第２データ２１の場合には、復号部１４は第２復号方式７１を用いて復号する。復号の対象となるプログラムが第１プログラム２４である場合には、復号部１４は、第３復号方式７２を用いて復号する。復号の対象となるプログラムがオペレーティングシステム用プログラム２６である場合には、復号部１４は、オペレーティングシステム専用復号方式７３を用いて復号する。
【００８３】
以上のように、格納部３にあらかじめ備えられた復号方式の対応関係に従って、暗号化されたデータやプログラムが復号される。復号されたデータやプログラムは、プロセッサコア２での演算処理に用いられる。
【００８４】
なお、図１０に示された暗号化方式／復号方式テーブル１５は一例であり、別の組み合わせであってもよく、データやプログラムによって同じ復号方式が割り当てられても良い。
【００８５】
また、復号されたデータやプログラムは、プロセッサコア２において用いられるので、バス８からはアクセスされることがない。復号されたデータやプログラムは、再び暗号化部５で暗号化された後にメモリ９に書き出されるので、バス８を介した解読なども行われにくい。
【００８６】
このように、マイクロプロセッサ１内部に、暗号化方式に対応した復号方式を用いて復号する復号部５が設けられることで、プロセッサコア２での処理に必要な場合に復号されたデータやプログラムを用いることができる。また、暗号化方式と同様にデータやプログラム毎に復号方式が異なることで、外部からの解読なども非常に困難となり、機密保護の度合いが高まる。
【００８７】
なお、復号部１４は暗号化部５と共通する回路などが共用されてもよく、この場合には、回路規模などの削減が図られる。
【００８８】
（実施の形態４）
次に実施の形態４について、図１１と図１２を用いて説明する。
【００８９】
実施の形態４では、暗号化されたデータやプログラムがメモリ上に存在し、これをマイクロプロセッサ１が処理する場合について説明する。
【００９０】
図１１は、本発明の実施の形態４におけるマイクロプロセッサのブロック図であり、図１２は本発明の実施の形態４におけるマイクロプロセッサのデータ処理のフローチャートである。
【００９１】
メモリ９には、暗号化された暗号化第１データ５０、暗号化第２データ５１と暗号化オペレーティングシステム用プログラム５３が記憶されている。これらは、暗号化第１データ５０は第１暗号化方式３０で暗号化され、暗号化第２データ５１は第２暗号化方式３１で暗号化され、暗号化オペレーティングシステム用プログラム５３は、オペレーティングシステム専用暗号化方式３４で暗号化されている。このため、マイクロプロセッサ１は、これらを用いた処理を行う場合には、それぞれの暗号化方式に対応する復号方式で復号する必要がある。特に、処理対象のデータが変わったにも関らず、異なる復号方式で復号して処理を行うと、エラーや誤動作が生じる。このため、プロセッサコア１による一連のプログラム処理において、処理するデータやプログラムが変化する際、すなわち異なる暗号化方式で暗号化されているデータやプログラムに変化する際には、変化する暗号化方式に対応して、復号方式を切り替える必要がある。データやプログラムが異なる暗号化方式を用いて暗号化されているためである。
【００９２】
メモリ９に記憶されている暗号化第１データ５０、暗号化第２データ５１、及び暗号化オペレーティングシステム用プログラム５３は、マイクロプロセッサ１により使用される。
【００９３】
マイクロプロセッサ１は、これらのデータやプログラムを処理する際には、復号して暗号化を解除し、演算処理に用いる必要がある。このため、マイクロプロセッサ１は、選択制御部４において選択された復号方式に従って、復号部１４にて復号されたデータなどを用いる。このとき、暗号化第１データ５０は、第１復号方式７０を必要とする。暗号化第２データ５１は、第２復号方式７１を必要とする。暗号化オペレーティングシステム用プログラム５３は、オペレーティングシステム専用復号方式７３を必要とする。このため、選択制御部４は、いずれの暗号化されたデータやプログラムが処理対象であるかを、認識した上で復号方式を選択する。選択制御部４は、データやプログラムのソフトウェア処理の終了によるソフトウェアからの通知信号や、ハードウェアからの割り込み信号を用いて、これらの復号対象となるデータやプログラムの切り替えを認識する。
【００９４】
図１２を用いて、復号対象となるデータの復号処理の流れについて説明する。
【００９５】
まず、ステップ１にて、マイクロプロセッサ１は、メモリ９から暗号化第１データ５０を読み出す。選択制御部４は、暗号化第１データ５０の読み出し命令を出すときに、暗号化第１データ５０が、第１暗号化方式３０で暗号化され、第１暗号化方式３０には、第１復号方式７０が対応することを、格納部３の情報から認識する。この情報に従い、ステップ２にて、復号部１４は、第１復号方式７０を用いて暗号化第１データ５０を復号する。マイクロプロセッサ１は、復号された第１データ２０を用いた処理を実行する。
【００９６】
次に、ステップ３にて、第１データから第２データへの切り替え通知がマイクロプロセッサ１に出力される。演算終了に伴い、ソフトウェアからの通知が、マイクロプロセッサに出力される。この通知により、選択制御部４は、第１データ２０の処理に次いで、第２データの処理が必要であることを認識する。この認識に従って、ステップ４にて、選択制御部４は、格納部３の情報に基づいて第２復号方式７１を選択する。選択制御部４は、第２復号方式７１の選択結果を、復号方式情報として復号部１４に出力する。
【００９７】
次いで、ステップ５にて、マイクロプロセッサ１はメモリ９から暗号化第２データ５１を読み出し、ステップ６にて、復号部は選択された第２復号方式７１を用いて、暗号化第２データ５１を復号する。マイクロプロセッサ１は、復号された第２データ２１を用いた処理を行う。
【００９８】
次に、このようなデータを用いたソフトウェア処理が行われている間に、ハードウェアからの割り込み（例えば、タイマー割り込みやインストラクション割り込みなど）が生じる場合がある。ハードウェア割り込みの場合には、マイクロプロセッサ１は、オペレーティングシステム用プログラムを用いた処理を行う必要がある。このため、ステップ７以降の処理が必要となる。
【００９９】
ステップ７にて、ハードウェア割り込みが発生する（発生しない場合は、第２データ２１を用いた処理が続行する）。ハードウェア割り込みが発生すると、ステップ８にて、選択制御部４はオペレーティングシステム専用復号方式７３を、格納部３の情報に従って選択する。選択制御部４は、オペレーティングシステム専用復号方式７３の選択結果を、復号方式情報として、復号部１４に出力する。次いで、ステップ９にて、マイクロプロセッサ１は、メモリ９より暗号化オペレーティングシステム用プログラム５３を読み出す。復号部１４は、読み出された暗号化オペレーティングシステム用プログラム５３を、オペレーティングシステム専用復号方式７３を用いて復号する。マイクロプロセッサ１は、復号されたオペレーティングシステム用プログラム２６を用いて、ハードウェア割り込み対する処理を実行する。このように、処理終了通知や、ハードウェア割り込みを利用して、異なる暗号化方式で暗号化されているデータやプログラムの、エラーなどの無い処理が実現される。また、このとき、処理終了通知が用いられることで、復号方式の選択切り替えと、メモリ９へのアクセスのタイミングを合わせることができ、無駄のない復号が実現される。更に、通常のデータやプログラムの処理から、オペレーティングシステム用プログラムの処理への切り替えに、割り込みを用いることで、適切な復号方式の切り替えが可能である。
【０１００】
特に、オペレーティングシステム用プログラム２６に対応する復号方式を、選択制御部４が選択するためには、プロセッサコア２が特定のモード（特権モードなど）とする設定がされていれば復号中の機密保護も高まる。すなわち、オペレーティングシステム用プログラムの復号中には、バスや内部レジスタへのアクセスはプロセッサコア２のみに許可されるため、バス８を介した他からのアクセスが拒絶される。このため、復号されたプログラムが、マイクロプロセッサ１内部のレジスタなどに記憶されている場合でも、他からのアクセスを防止できる。これは、特に機密保護の必要性の高いオペレーティングシステム用プログラム２６において好適である。
【０１０１】
以上のように、処理終了信号や割り込み信号を用いて、異なる暗号化方式で暗号化されているデータやプログラムを、エラーやタイムラグを生じさせること無く、読み出して処理することができる。
【産業上の利用可能性】
【０１０２】
本発明は、例えばメモリから読み出して演算処理に用いるデータやプログラムの、外部からの解読や改ざんを防止する暗号化処理を備えるマイクロプロセッサの分野等において好適に利用できる。
【図面の簡単な説明】
【０１０３】
【図１】本発明の実施の形態１におけるマイクロプロセッサのブロック図
【図２】本発明の実施の形態１における暗号化方式テーブルを表す図
【図３】本発明の実施の形態１における暗号化方式テーブルを表す図
【図４】本発明の実施の形態１における暗号化方式テーブルを表す図
【図５】（ａ）本発明の実施の形態１における暗号化前のメモリの状態を表す図  （ｂ）本発明の実施の形態１における暗号化後のメモリの状態を表す図
【図６】本発明の実施の形態２におけるマイクロプロセッサのブロック図
【図７】本発明の実施の形態２におけるメモリ制御部周辺のブロック図
【図８】（ａ）本発明の実施の形態２における暗号化前のメモリの状態を表す図  （ｂ）本発明の実施の形態２における暗号化後のメモリの状態を表す図
【図９】本発明の実施の形態３におけるマイクロプロセッサのブロック図
【図１０】本発明の実施の形態３における格納部を表す図
【図１１】本発明の実施の形態４におけるマイクロプロセッサのブロック図
【図１２】本発明の実施の形態４におけるマイクロプロセッサのデータ処理のフローチャート
【符号の説明】
【０１０４】
１  マイクロプロセッサ
２  プロセッサコア
３  格納部
４  選択制御部
５  暗号化部
６  メモリ制御部
７  バスインターフェース
８  バス
９  メモリ
１０  暗号化方式情報
１１暗号化方式テーブル
１２  データサイズ情報
１３  復号方式情報
１４  復号部
１５  暗号化方式／復号方式テーブル
２０  第１データ
２１  第２データ
２２  第３データ
２３  第４データ
２４  第１プログラム
２５  第２プログラム
２６  オペレーティングシステム用プログラム
３０  第１暗号化方式
３１  第２暗号化方式
３２  第３暗号化方式
３３  第４暗号化方式
３４  オペレーティングシステム専用暗号化方式
４０  非暗号化第１データ
４１  非暗号化第２データ
４２  非暗号化第１プログラム
４３  非暗号化オペレーティングシステム用プログラム
７０  第１復号方式
７１  第２復号方式
７２  第３復号方式
７３  オペレーティングシステム用復号方式
【図１】
2006254099.tif 000003
【図２】
2006254099.tif 000004
【図３】
2006254099.tif 000005
【図４】
2006254099.tif 000006
【図５】
2006254099.tif 000007
【図６】
2006254099.tif 000008
【図７】
2006254099.tif 000009
【図８】
2006254099.tif 000010
【図９】
2006254099.tif 000011
【図１０】
2006254099.tif 000012
【図１１】
2006254099.tif 000013
【図１２】
2006254099.tif 000014