(57)【要約】【課題】復号化半導体装置に使用される共通鍵の機密性を確保する。【解決手段】マイクロプロセッサ３１の機密性確保を説明する概念図で、公開鍵を保持する公開鍵レジスタ２を設けることにより、非公開鍵で暗号化された状態の共通鍵を入力ポートから取り込み、半導体装置内の公開鍵を使い共通鍵の復号化を行うようにすることで、共通鍵の機密性を確保した。【選択図】図１
2008226142.tif 000002
【特許請求の範囲】
【請求項１】
非公開鍵で暗号化された共通鍵が入力ポートから入力され、内蔵する公開鍵を用いて前記暗号化された共通鍵を復号化する第１の復号化手段と、
復号化された共通鍵を用いて命令の復号化を行う第２の復号化手段と、
を具備することを特徴とする復号化半導体装置。
【請求項２】
前記暗号化された共通鍵は、レジスタに入力され、前記公開鍵は公開鍵レジスタに格納されることを特徴とする請求項１に記載の復号化半導体装置。
【請求項３】
非公開鍵で暗号化された共通鍵が入力ポートから入力され、内蔵する公開鍵を用いて前記暗号化された共通鍵を復号化する第１の復号化手段と、復号化された共通鍵を用いて命令の復号化を行う第２の復号化手段とを有する復号化処理部と、
前記復号化処理部から復号化された命令が入力され、復号化された命令をデコード処理し、前記復号された命令が完全に復号化されている場合、デコードされた命令列を出力し、前記復号された命令が不完全な場合、未定義命令エラーと判断して転送停止命令を前記復号化処理部に出力するデコード部と、
前記デコード部から前記デコードされた命令列が入力され、前記デコードされた命令列の演算処理を行う演算処理部と、
を具備することを特徴とする復号化半導体装置。
【請求項４】
非公開鍵で暗号化された共通鍵が入力ポートから入力されるレジスタと、公開鍵が格納される公開鍵レジスタと、前記公開鍵レジスタに格納される前記公開鍵を一時的に保持するキーレジスタと、命令が入力され、フェッチした命令を前記レジスタに転送する命令バッファと、前記レジスタから前記フェッチした命令及び前記暗号化された共通鍵と、前記キーレジスタから前記公開鍵とが入力され、前記公開鍵を用いて前記フェッチした命令及び前記暗号化された共通鍵の復号化を行い、復号化された共通鍵を前記キーレジスタに転送し、次の命令の転送要求を前記命令バッファに出力する復号化処理回路とを有する復号化処理部と、
前記復号化処理部から復号化された命令が入力され、復号化された命令をデコード処理し、前記復号された命令が完全に復号化されている場合、デコードされた命令列を出力し、前記復号された命令が不完全な場合、未定義命令エラーと判断して転送停止命令を前記命令バッファに出力するデコード部と、
前記デコード部から前記デコードされた命令列が入力され、前記デコードされた命令列の演算処理を行う演算処理部と、
を具備することを特徴とする復号化半導体装置。
【請求項５】
前記公開鍵及び前記非公開鍵は、ＲＳＡ暗号方式を用いることを特徴とする請求項１乃至４のいずれか１項に記載の復号化半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、復号化機能を有する半導体装置に関する。
【背景技術】
【０００２】
システムプログラムを変更して望んだ改良を加えることができるオープンシステムでは、アプリケーションプログラムが扱う情報の著作権保護や、プログラム自体の著作権保護を補償するのに、システムのＯＳがアプリケーションに対して敵対的動作をとることを前提としたハードウエアとしての半導体装置が必要となる。このような半導体装置として、マルチタスク環境でプログラムとそれが扱う情報の覗き見や、改変から守るためにそれらの情報を暗号化する機能を有するマイクロプロセッサが多用されている（例えば、特許文献１参照。）。
【０００３】
特許文献１などに記載されている復号化処理を行う半導体装置では、共通鍵（ユーザ鍵とも呼称される）を復号化開始命令のオペランドとして命令の中に持っていた。この命令は暗号化されたプログラム領域の開始を示しているので、この命令が特定されるとユーザ以外の者でも共通鍵を得ることができてしまうという問題点がある。
【特許文献１】特開２００５−１８４３４号公報（頁８、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明は、共通鍵の機密性を確保できる復号化半導体装置を提供することにある。
【課題を解決するための手段】
【０００５】
本発明の一態様の復号化半導体装置は、非公開鍵で暗号化された共通鍵が入力ポートから入力され、内蔵する公開鍵を用いて前記暗号化された共通鍵を復号化する第１の復号化手段と、復号化された共通鍵を用いて命令の復号化を行う第２の復号化手段とを具備することを特徴とする。
【０００６】
また、本発明の他態様の復号化半導体装置は、非公開鍵で暗号化された共通鍵が入力ポートから入力されるレジスタと、公開鍵が格納される公開鍵レジスタと、前記公開鍵レジスタに格納される前記公開鍵を一時的に保持するキーレジスタと、命令が入力され、フェッチした命令を前記レジスタに転送する命令バッファと、前記レジスタから前記フェッチした命令及び前記暗号化された共通鍵と、前記キーレジスタから前記公開鍵とが入力され、前記公開鍵を用いて前記フェッチした命令及び前記暗号化された共通鍵の復号化を行い、復号化された共通鍵を前記キーレジスタに転送し、次の命令の転送要求を前記命令バッファに出力する復号化処理回路とを有する復号化処理部と、前記復号化処理部から復号化された命令が入力され、復号化された命令をデコード処理し、前記復号された命令が完全に復号化されている場合、デコードされた命令列を出力し、前記復号された命令が不完全な場合、未定義命令エラーと判断して転送停止命令を前記命令バッファに出力するデコード部と、前記デコード部から前記デコードされた命令列が入力され、前記デコードされた命令列の演算処理を行う演算処理部とを具備することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、共通鍵の機密性を確保できる復号化半導体装置を提供することができる。
【発明を実施するための最良の形態】
【０００８】
以下本発明の実施例について図面を参照しながら説明する。
【実施例１】
【０００９】
まず、本発明の実施例１に係る復号化半導体装置について、図面を参照して説明する。図１は復号化半導体装置としてのマイクロプロセッサの機密性確保を説明する概念図、図２は従来の復号化半導体装置としてのマイクロプロセッサに与えられる復号化開始命令及び復号化終了命令のフォーマットを示す図、図２（ａ）は復号化開始命令のフォーマットを示す図、図２（ｂ）は復号化終了命令のフォーマットを示す図、図３は復号化半導体装置としてのマイクロプロセッサの構成を示すブロック図である。本実施例では、入力ポートからマイクロプロセッサに入力される命令の復号化用の共通鍵（ユーザ鍵）を非公開鍵（秘密鍵  Private  Keyとも呼称される）で暗号化している。
【００１０】
図１に示すように、マイクロプロセッサ３１の機密性確保を説明する概念図では、入力ポート３０に共通鍵１が設けられ、復号化半導体装置としてのマイクロプロセッサ３１に公開鍵レジスタ２、共通鍵３、及び暗号化されたプログラムの命令列４が設けられる。
【００１１】
ユーザにより非公開鍵を用いて暗号化された共通鍵（ユーザ鍵）１が入力ポート３０からマイクロプロセッサ３１に出力される。マイクロプロセッサ３１に入力される暗号化された共通鍵（ユーザ鍵）は、公開鍵レジスタ２に格納される公開鍵（Public  Keyとも呼称される）で復号化される（第１の復号化手段）。復号化された共通鍵３で命令の復号化が行われ（第２の復号化手段）、復号化されたプログラムの命令列が得られる。共通鍵（ユーザ鍵）を入力ポート３０から直接入力せずに、暗号化して入力しているので共通鍵（ユーザ鍵）の守秘性（機密性）を向上させることができる。
【００１２】
これに対して、図２（ａ）に示すように、従来の、例えば３２ビット長の復号化開始命令には、例えば、１６ビットの復号化開始ＯＰコードと１６ビットの共通鍵（ユーザ鍵）が設けられる。図２（ｂ）に示すように、従来の、例えば１６ビット長の復号化終了命令には、１６ビット復号化終了ＯＰコードのみ設けられる。復号化終了命令は、暗号化された命令の命令列の最後におかれるので、暗号化された復号化終了命令は、マイクロプロセッサに与えられるとき３２ビットの暗号化された復号化終了ＯＰコードから構成される。このため、ユーザ以外のものにより、復号化開始命令が特定されてしまうと共通鍵（ユーザ鍵）が判明する可能性が大変高くなる。
【００１３】
図３に示すように、復号化半導体装置としてのマイクロプロセッサ３１には、復号化処理部１０、デコード部１１、及び演算処理部１２が設けられる。復号化処理部１０には、公開鍵レジスタ２、レジスタ５、命令バッファ（ＦＩＦＯ  First  In  First  Out）６、キーレジスタ７、及び復号化処理回路８が設けられる。
【００１４】
命令バッファ（ＦＩＦＯ）６は、先入れ先出し方式の命令バッファであり、先読みする命令のアドレスを指定し、先読みした命令を取り込む。そして取り込んだ命令は暗号化されているためレジスタ５に転送する。また復号化終了すると、復号化処理回路からの次の命令要求を受け付けると、アドレスを命令語長カウントアップしたアドレスを出力し、次の命令を取り込む。
【００１５】
レジスタ５は、入力ポート３０及び命令バッファ（ＦＩＦＯ）６と復号化処理回路８の間に設けられ、入力ポート３０で非公開鍵を用いて暗号化された共通鍵を一時保持し、次に命令バッファ６から転送された命令を逐次的に保持する。
【００１６】
公開鍵レジスタ２は、公開鍵を保持し、公開鍵をキーレジスタ７に出力する。ここで、公開鍵及び非公開鍵は、例えばＲＳＡ（Rivest−Shamir−Adleman）暗号化方式のものを使用している。
【００１７】
キーレジスタ７は、公開鍵レジスタ２と復号化処理回路８の間に設けられ、復号化処理回路８からの要求に応じて復号化に必要な公開鍵情報を一時的に保持し、保持した公開鍵を復号化処理回路８に出力する。
【００１８】
復号化処理回路８は、キーレジスタ７の内容である公開鍵とレジスタ５の内容である暗号化された共通鍵を入力とし、共通鍵の復号化を行う。そして、復号化された共通鍵をキーレジスタ７に転送する。この時、復号化処理回路８は、次の命令の転送(先読み)要求を命令バッファ６に出力する。また、この要求の後、レジスタ5の内容である暗号化された命令とキーレジスタ７の内容である共通鍵を用いて、命令の復号化を行い、復号化した命令をデコード部に出力する。
【００１９】
デコード部１１は、復号化処理回路８と演算処理部１２及び命令バッファ６の間に設けられ、復号化処理部８からの出力である復号化された命令をデコードする。命令が完全に復号化されている場合、復号された命令を演算処理部１２に出力する。命令の復号化が不完全な場合、未定義命令エラーと判断して転送停止指示を命令バッファ６に出力する。
【００２０】
演算処理部１２は、デコード部１１からの出力であるデコードされた命令列の演算処理を逐次的に行う。
【００２１】
次に、共通鍵の取得、命令の復号化、及び実行について図４を参照して説明する。図４は、共通鍵の取得、命令の復号化、及び実行を示すフローチャートである。
【００２２】
図４に示すように、まず、最初の命令がフェッチされる前に、入力ポート３０からユーザにより非公開鍵を用いて暗号化された共通鍵がマイクロプロセッサ３１に取り込まれる（ステップＳ１）。
【００２３】
次に、公開鍵レジスタ２に保持される公開鍵がキーレジスタ７に転送される（ステップＳ２）。続いて、マイクロプロセッサ３１に取り込まれた暗号化された共通鍵がレジスタ５に転送される（ステップＳ３）。
【００２４】
そして、暗号化された共通鍵と公開鍵とが復号化処理回路８に入力され、非公開鍵を用いて暗号化された共通鍵が復号化処理回路８で復号化される（ステップＳ４）。
【００２５】
次に、復号化された共通鍵は復号化処理回路８からキーレジスタ７に転送される。このとき先読みされた命令をレジスタ５に転送する要求が復号化処理回路８から命令バッファ６に出力される(ステップＳ５)。
【００２６】
これ以降、先読みした命令が順次命令バッファ６からレジスタ５に転送される（ステップＳ６）。そして、レジスタ５から転送された命令は、復号化された共通鍵を用いて復号化処理回路８で復号化処理される（ステップＳ７）。
【００２７】
次に、復号化された命令は、復号化処理回路８からデコード部に出力される。このとき、同時に次の命令をレジスタ５に転送する要求が復号化処理回路８から命令バッファ６に出力される(ステップＳ８)。
【００２８】
続いて、命令が完全に復号化されていると判断された場合、デコードされた命令列がデコード部１１から演算処理部１２に出力される。命令の復号化が不完全と判断された場合、ステップＳ１の共通鍵の取り込みに戻る（ステップＳ９）。
【００２９】
そして、演算処理部１２でデコードされた命令列の演算処理が実行される（ステップＳ１０）。次に、実行終了後、次の命令がある場合にはステップ５の命令を要求（１）に戻る（ステップＳ１１）。
【００３０】
上述したように、本実施例の復号化半導体装置では、公開鍵を保持する公開鍵レジスタ２を設けることにより、入力ポート３０から入力され非公開鍵で暗号化された共通鍵１を復号化する。
【００３１】
このため、従来のように共通鍵（ユーザ鍵）を復号化開始命令のオペランドとして命令の中にもつのではなく、マイクロプロセッサ３１外の入力ポート３０から非公開鍵で暗号化された状態で入力されるので、共通鍵（ユーザ鍵）の守秘性（機密性）を向上させることができる。また、公開鍵をマイクロプロセッサ３１内部に設けているので、非公開鍵をユーザ毎に所有することが可能となる。
【００３２】
本発明は、上記実施例に限定されるものではなく、発明の趣旨を逸脱しない範囲で、種々、変更してもよい。
【００３３】
例えば、本実施例では、公開鍵暗号方式のＲＳＡ（Rivest−Shamir−Adleman）暗号方式の公開鍵と非公開鍵を用いているが、ＤＳＡ（Digital  Signature  Algorithm）暗号、ＥＣＣ（Elliptic  Curve  Cyptography、楕円曲線とも呼称される）暗号、或いはＥｌＧａｍａｌ暗号などの暗号方式公開鍵と非公開鍵を用いてもよい。また、復号化半導体装置をマイクロプロセッサにしているが、復号化処理部を有するマイクロコンピュータ或いは移動端末装置にしてもよい。
【図面の簡単な説明】
【００３４】
【図１】本発明の実施例１に係る復号化半導体装置としてのマイクロプロセッサの機密性確保を説明する概念図。
【図２】本発明の実施例１に係る従来の復号化半導体装置としてのマイクロプロセッサに与えられる復号化開始命令及び復号化終了命令のフォーマットを示す図。
【図３】本発明の実施例１に係る復号化半導体装置としてのマイクロプロセッサの構成を示すブロック図。
【図４】本発明の実施例１に係る共通鍵の取得、命令の復号化、及び実行を示すフローチャート。
【符号の説明】
【００３５】
１、３  共通鍵
２  公開鍵レジスタ
４  暗号化されたプログラムの命令列
５  レジスタ
６  命令バッファ
７  キーレジスタ
８  復号化処理回路
１０  復号化処理部
１１  デコード部
１２  演算処理部
３０  入力ポート
３１  マイクロプロセッサ
【図１】
2008226142.tif 000003
【図２】
2008226142.tif 000004
【図３】
2008226142.tif 000005
【図４】
2008226142.tif 000006