(57)【要約】【課題】通常のプロセッサ構成を使用して高度のセキュリティを有するプロセッサを実現する。【解決手段】コマンド信号およびアドレス信号を出力すると共に、データ信号を入出力する外部バスモジュール14を含むプロセッサユニット10と、共通鍵およびアドレス信号を使用する暗号方式CTRで、外部バスモジュールに入出力するデータを暗号化および復号する暗号処理回路21と、を備え、プロセッサユニット10および暗号処理回路21は、同一チップに収容されている。【選択図】図４
2010170495.tif 000002
【特許請求の範囲】
【請求項１】
コマンド信号およびアドレス信号を出力すると共に、データ信号を入出力する外部バスモジュールを含むプロセッサユニットと、
共通鍵および前記アドレス信号を使用する暗号方式で、前記外部バスモジュールに入出力するデータを暗号化および復号する暗号処理回路と、を備え、
前記プロセッサユニットおよび前記暗号処理回路は、同一チップに収容されていることを特徴とするプロセッサ。
【請求項２】
前記暗号処理回路は、
前記共通鍵および前記アドレス信号に基づいて共通鍵暗号処理を行う共通鍵暗号処理回路と、
前記共通鍵暗号処理回路の暗号処理結果に基づいて、出力データを暗号化し、入力データを復号する暗号／復号回路と、を備えることを特徴とする請求項１に記載のプロセッサ。
【請求項３】
前記暗号処理回路は、
前記コマンド信号がリードコマンドであるかライトコマンドであるかを検出するコマンド判定回路と、
前記コマンド信号がリードコマンドである時には、前記アドレス信号をただちに出力し、前記コマンド信号がライトコマンドである時には、前記共通鍵暗号処理回路の暗号処理が完了した後、前記アドレス信号を、前記共通鍵暗号処理回路の暗号処理結果で暗号化したライトデータと共に出力することを特徴とする請求項２に記載のプロセッサ。
【請求項４】
前記暗号処理回路は、
前記コマンド信号がリードコマンドである時に出力した前記アドレス信号に応答して入力されるリードデータの到着を検出するリードデータ到着検出回路を備え、
リードデータの到着し且つ前記共通鍵暗号処理回路の暗号処理が終了した後、前記リードデータを暗号処理結果で暗号化した後出力することを特徴とする請求項３に記載のプロセッサ。
【請求項５】
前記暗号処理回路は、
前記共通鍵暗号処理回路の暗号処理結果を保持する結果保持レジスタと、
前記結果保持レジスタに保持された暗号処理結果を発生させたコマンド信号のアドレスを保持するアドレスレジスタと、
コマンド信号のアドレスが、前記アドレスレジスタに保持されたアドレスであるかを判定する比較回路と、を備え、
コマンド信号のアドレスが、前記アドレスレジスタに保持されたアドレスである時には、前記共通鍵暗号処理を行わずに前記結果保持レジスタに保持された暗号処理結果を使用することを特徴とする請求項２に記載のプロセッサ。
【請求項６】
前記結果保持レジスタおよび前記アドレスレジスタの組を複数組備え、
コマンド信号のアドレスが保持された前記アドレスレジスタに対応する前記結果保持レジスタに保持された暗号処理結果を使用することを特徴とする請求項５に記載のプロセッサ。
【請求項７】
前記結果保持レジスタおよび前記アドレスレジスタは、当該プロセッサから保持する値を設定可能であることを特徴とする請求項５に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、外部メモリとの間で入出力するデータを暗号化するプロセッサとに関する。
【背景技術】
【０００２】
近年、コンピュータや携帯情報端末の普及が高まるにつれ、それらの機器で実行されるプログラムに関するセキュリティの重要性が高まっている。
【０００３】
高性能を要求される機器は、プロセッサを用いて実現されるのが一般的である。高性能のプロセッサは、回路規模が大きく、動作には大容量のメモリが必要になる。そのため、高性能のプロセッサを使用して機器を形成する場合は、大容量の外部メモリが別チップにて実装される。
【０００４】
高いセキュリティが要求される機器は、プロセッサの外側で扱われるデータには暗号化を施し、内側にはアクセス保護を施すことで、データを直接読み取ることを不可能とするセキュアプロセッサを用いて実現される。セキュアプロセッサにおける、内部処理は暗号化されていない通常データを使用して行われる。
【０００５】
セキュアプロセッサに大容量の外部メモリを接続して使用する場合、セキュアプロセッサは出力するデータを、例えば上記のＣＴＲモードで暗号化し、入力するデータをＣＴＲモードで復号化する。暗号化および復号化処理のために、メモリアクセス時間が大幅に増加する。このように、メモリインタフェースを暗号化することは、メモリアクセス時間の大幅増を伴うため、実際には断念されているのが現状であり、メモリアクセス時間の短縮が求められている。
【０００６】
メモリアクセス時間増加の問題を解決するために、プロセッサのワーキングメモリとして動作する外部メモリとの間で入出力されるデータは暗号化せず、通信回線を介して通信されるデータやＨＤＤなどのほかのデータのみを暗号化することも行われている。外部メモリは直接のアクセスが難しい配置とする。暗号化されたデータは、ソフトウェアによる処理によって復号して外部メモリに記憶する。プロセッサは、ワーキングメモリとして動作する外部メモリ上で高速な処理実行する。しかし、この方法は、アクセスが難しい位置であっても外部メモリ上に復号済みデータが存在することになり、セキュリティの面からは不十分である。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００６−５２６１７３号公報
【特許文献２】特開２００６−１８５２８公報
【特許文献３】特開２００８−２１０２２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
セキュアプロセッサは、高いセキュリティを実現する上で有効であるが、入手可能な種類に限りがあり、機器を実現するのに適当なプロセッサの性能およびセキュリティ性を有するセキュアプロセッサを入手するのが難しいという問題があった。
【０００９】
近年、各種回路要素がソフトウェア・ライブラリィの形で提供され、それらを組み合わせて１チップに搭載して所望の半導体装置を実現することが行われている。プロセッサもこのような形で提供され、１チップの半導体装置に組み込むことが可能である。また、１個のパッケージに、ベアチップの形で提供されたプロセッサと、ほかの回路要素のベアチップとを搭載して、１チップの半導体装置を実現することも行われている。
【００１０】
上記のような形態でセキュアプロセッサでない通常のプロセッサを組み込んで１チップのプロセッサやシステム・オン・チップ（ＳｏＣ）などの半導体装置を実現する場合に、高いセキュリティのプロセッサシステムを実現することが要望されている。
【００１１】
また、セキュアプロセッサを使用する場合に限らず、上記のような場合も、メモリアクセスの安全性と高速性を実現することが有効である。
【課題を解決するための手段】
【００１２】
実施形態のプロセッサは、コマンド信号およびアドレス信号を出力すると共に、データ信号を入出力する外部バスモジュールを含むプロセッサユニットに、共通鍵およびアドレス信号を使用する暗号方式で外部バスモジュールに入出力するデータを暗号化および復号する暗号処理回路を付加し、プロセッサユニットおよび暗号処理回路を同一チップに収容することにより、高度のセキュリティを有するプロセッサを実現する。
【発明の効果】
【００１３】
実施形態によれば、選択の自由度が高い通常のプロセッサ構成を使用する場合でも、高度のセキュリティを有するプロセッサが実現できる。
【図面の簡単な説明】
【００１４】
【図１】図１は、ＣＴＲモードの共通鍵暗号処理方式を説明する図である。
【図２】図２は、プロセッサに外部メモリを接続した通常のシステムと、セキュアプロセッサに外部メモリを接続したシステムの概略構成を示す図である。
【図３】図３は、通常のシステムにおける外部バスモジュールと、メモリコントローラと、外部メモリの間の接続を説明する図である。
【図４】図４は、第１実施形態のプロセッサの構成を示す図である。
【図５】図５は、第１実施形態のプロセッサの暗号／復号処理回路の構成を示す図である。
【図６】図６は、第１実施形態におけるメモリライト処理の動作例を示すタイムチャートである。
【図７】図７は、第１実施形態におけるメモリリード処理の動作例を示すタイムチャートである。
【図８】図８は、第１実施形態のプロセッサの暗号／復号処理回路における回路構成をより詳細に示した図である。
【図９】図９は、第２実施形態のプロセッサの暗号／復号処理回路の構成を示す図である。
【図１０】図１０は、第２実施形態におけるメモリリード処理の動作例を示すタイムチャートである。
【図１１】図１１は、第３実施形態のプロセッサの暗号／復号処理回路の構成を示す図である。
【図１２】図１２は、第３実施形態におけるメモリライト処理の動作例を示すタイムチャートである。
【図１３】図１３は、第３実施形態におけるメモリリード処理の動作例を示すタイムチャートである。
【図１４】図１４は、第４実施形態のプロセッサの暗号／復号処理回路の構成を示す図である。
【発明を実施するための形態】
【００１５】
実施形態を説明する前に、メモリアクセスに使用できる共通鍵暗号処理について説明する。
【００１６】
共通鍵暗号処理には、ＥＣＢモード、ＣＢＣモード、ＣＦＢモード、ＯＦＢモード、ＣＴＲモードの５つの代表的動作モードが知られている。これらのうち、プロセッサによる一般的なメモリアクセス、すなわちランダムアクセスとの親和性が高い方式は、ＥＣＢモード、およびＣＴＲ（カウンタ）モードの２つである。ＥＣＢモードは、暗号化を一つの鍵で行い、平文と暗号文の関係は常に同じ（１対１対応）となるという特徴を有する。ＥＣＢモードは、暗号化／復号化処理が簡単である。しかし、ＥＣＢモードは、その特徴から、プロセッサで出現頻度が高い情報（００やＦＦなど）のパターン解析により、暗号強度（耐解析性）が相対的に弱くなるため、ランダムアクセスメモリに対する暗号化処理は多くの場合ＣＴＲモードが使用される。
【００１７】
図１は、ＣＴＲ（カウンタ）モード暗号処理の基本的な処理の流れを示す図である。
【００１８】
外部メモリに出力データを書き込む処理は、次のように行われる。ＣＴＲ１は、メモリアクセスアドレスおよび任意のアドレスからなるＣＴＲアドレスを発生する。Ｅｎｃ２は、共通鍵を記憶しており、ＣＴＲアドレスおよび共通鍵に基づいて、暗号化演算結果を発生する。ＸＯＲ３は、暗号化されていない（平文）の入力データとＥｎｃ２の発生した暗号化演算結果の排他的論理和（ＸＯＲ）を演算して暗号化データを生成する。この暗号化データが外部メモリに記憶される。
【００１９】
外部メモリから入力データを読み込む処理は、次のように行われる。ＣＴＲ４およびＥｎｃ５の処理は、ＣＴＲ１およびＥｎｃ２の処理と同じであり、ＣＴＲ１とＣＴＲ４およびＥｎｃ２とＥｎｃ５は一般的には共通化されている。外部メモリから読み出された暗号化された入力データは、ＸＯＲ６により、Ｅｎｃ５の発生した暗号化演算結果と排他的論理和（ＸＯＲ）演算されて、暗号化されていない（平文）の入力データに変換されてプロセッサに取り込まれる。
【００２０】
図２は、プロセッサに外部メモリを接続したプロセッサの従来例を示す図であり、（Ａ）が暗号機能の無い外部メモリインタフェースの例であり、（Ｂ）は内部に暗号／復号処理部を有するセキュアプロセッサの例である。
【００２１】
図２の（Ａ）に示すように、暗号機能の無いプロセッサは、同一チップ内に実装されている、プロセッサコア１１、内部メモリ１２、内部バス１３、外部バスモジュール１４、メモリコントローラ１６などを有する。メモリコントローラ１６には、外部メモリ１７が接続される。
【００２２】
図３は、図２の（Ａ）に示した要素のうち、外部バスモジュール１４と、メモリコントローラ１６と、外部メモリ１７との間の接続をより詳細に示す図である。外部バスモジュール１４とメモリコントローラ１６は、アドレス信号Ａ１、バス制御信号ＣＢ１、出力データＤｏｕｔ１、入力データＤｉｎ１に対応したバスで接続されている。メモリコントローラ１６は、これらの信号を、外部バスモジュール１４からの要求に応じて外部メモリ１７宛の制御信号に変換し、アドレス信号Ａ２、メモリ制御信号ＣＭ２、出力データＤｏｕｔ２、入力データＤｉｎ２を用いてメモリアクセスを行う。ここでは、チップの外部ピンＰの左側のアドレス信号Ａ２、メモリ制御信号ＣＭ２、出力データＤｏｕｔ２、入力データＤｉｎ２は、それぞれ外部ピンＰの右側のアドレスＡ３、メモリ制御信号ＣＭ３、データＤ３に対応する。参照番号１８は出力データＤｏｕｔ２の出力バッファを、１９は入力データＤｉｎ２の入力バッファを示す。出力バッファ１８および入力バッファ１９は、メモリ制御信号ＣＭ２のリード／ライト信号により制御される。
【００２３】
図２の（Ａ）および図３に示した外部メモリインタフェースは、広く知られているのでこれ以上の説明は省略する。
【００２４】
図２の（Ｂ）に示すように、セキュアプロセッサは、図２の（Ａ）の構成に加えて、内部バス１３に接続される暗号／復号処理部１５を有する。暗号／復号処理部１５は、外部に出力するデータを暗号化した後外部バスモジュール１４を介して出力し、外部バスモジュール１４から入力されるデータを復号化した後内部バス１３に出力する。図２の（Ｂ）における外部バスモジュール１４と、メモリコントローラ１６と、外部メモリ１７との間の接続は、図２の（Ａ）および図３と同じである。しかし、図２の（Ｂ）において、外部バスモジュール１４より外側の部分に存在するデータは、暗号化されたデータである。
【００２５】
図４は、第１実施形態のプロセッサ２０の構成を示す図であり、外部メモリ１７を接続した状態を示す。図４に示すように、第１実施形態のプロセッサ２０は、同一チップ内に実装されている、プロセッサコア１１と、内部メモリ１２と、内部バス１３と、外部バスモジュール１４と、メモリコントローラ１６と、暗号／復号処理回路２１と、を有する。言い換えれば、図２の（Ａ）の構成において、外部バスモジュール１４とメモリコントローラ１６の間に暗号／復号処理回路２１を設けた構成を有する。
【００２６】
図５は、第１実施形態のプロセッサの暗号／復号処理回路の構成を示す図である。
【００２７】
図５に示すように、第１実施形態の暗号／復号処理回路は、バス制御回路ＢＣＴと、アドレス保持レジスタＲＤＡと、アドレス上位レジスタＲＵＡと、鍵レジスタＲＫと、共通鍵暗号処理制御部ＣＥＣと、ＡＥＳ演算器ＡＣＡＬと、演算結果保持レジスタＲＥＳと、出力データ保持レジスタＲＯＤと、出力データ用ＸＯＲ演算器ＯＸＯＲと、入力データ保持レジスタＲＩＤと、入力データ用ＸＯＲ演算器ＩＸＯＲと、を有する。
【００２８】
バス制御回路ＢＣＴは、バス制御信号ＣＢ１ＡおよびＣＢ１Ｂに基づいて、アドレスラッチ信号（１）、出力データラッチ信号（２）および入力データラッチ信号（３）を生成する。さらに、バス制御回路ＢＣＴは、暗号処理結果が確定したのち、メモリコントローラ１６に対し、保持したバス制御信号ＣＢ１ＢおよびアドレスＡ１Ｂを送出する。アドレス保持レジスタＲＤＡは、アドレスラッチ信号に応じてアドレスＡ１Ａを保持し、アドレス値の暗号処理を実行し結果が確定するまで制御信号とアドレスを保持する。
【００２９】
アドレス上位レジスタＲＵＡおよび鍵レジスタＲＫの値は、レジスタ専用バスを介して、事前にソフトウェアにより設定される。アドレス上位レジスタＲＵＡに設定される値は、任意の数値である。鍵レジスタＲＫに設定される値は、ＣＴＲモードの暗号鍵である。共通鍵暗号処理制御部ＣＥＣは、共通鍵ＣＴＲモードで暗号処理を行う。ＣＴＲのカウンタ要素は、上位にアドレス上位レジスタＲＵＡに設定された任意の数値、下位にはアドレスレジスタＲＤＡに保持されたメモリアクセスのアドレス値を組み合わせて用いる。ＣＴＲモードの暗号鍵は、鍵レジスタＲＫの値を用いる。共通鍵制御部ＣＥＣは、アドレス（ＲＵＡ，ＲＤＡ）値を入力とし、暗号鍵ＲＫを鍵とした共通鍵暗号化処理を、ＡＥＳ(Advanced Encryption Standard)演算器ＡＣＡＬを利用して行い、その演算結果を演算結果保持レジスタＲＥＳに格納する。
【００３０】
出力データ保持レジスタＲＯＤは、書込（ライト）時に、出力データラッチ信号に応じて出力データＤｏｕｔ１Ａを保持する。出力データ用ＸＯＲ演算器ＯＸＯＲは、出力データ保持レジスタＲＯＤに保持された出力データＤｏｕｔ１Ａの値を暗号処理結果とＸＯＲ演算した値を暗号化ライトデータＤｏｕｔ１Ｂとして出力する。入力データ保持レジスタＲＩＤは、読込（リード）時に、入力データラッチ信号に応じて入力データＤｉｎ１Ｂを保持する。入力データ用ＸＯＲ演算器ＩＸＯＲは、入力データ保持レジスタＲＩＤに保持された出力データＤｉｎ１Ｂの値を暗号処理結果とＸＯＲ演算した値を復号リードデータＤｉｎ１Ａとして出力する。
【００３１】
図６は、図５の暗号／復号処理回路にて、メモリライト処理の暗号化を実施した場合の動作例を示すタイムチャートであり、縦線は動作サイクルを示す。バス制御回路ＢＣＴは、コマンドＣＢ１Ａを保持すると同時に判定によりライトと判断する。アドレス保持レジスタＲＤＡは、アドレスラッチ信号に応じてアドレスＡ１Ａを保持し、保持したアドレスＡ１Ａを共通鍵暗号処理制御部ＣＥＣに入力する。共通鍵暗号処理制御部ＣＥＣは、アドレスＡ１Ａを用いて暗号（ＡＥＳ）処理を開始する。ＡＥＳ処理が完了して暗号処理結果（ＡＥＳ結果）が得られるまでには時間を要する。アドレス保持レジスタＲＤＡは、ＡＥＳ結果が得られるまでアドレスＡ１Ａを保持する。出力データ保持レジスタＲＯＤは、出力データラッチ信号に応じてＡＥＳ処理が開始される時に、処理前のライトデータＤｏｕｔ１Ａを保持する。ＣＥＣでの処理完了と同時に、演算結果保持レジスタＲＥＳはＡＥＳ結果を保持する。これと同時に、バス制御回路ＢＣＴは保持したコマンドとアドレスをそれぞれＣＢ１Ｂ、Ａ１Ｂとして出力し、ＯＸＯＲはＡＥＳ結果とＤｏｕｔ１ＡのＸＯＲを演算してＤｏｕｔ１Ｂとして出力する。
【００３２】
図７は、図５の暗号／復号処理回路にて、メモリリード処理の復号化を実施した場合の動作例を示すタイムチャートであり、縦線は動作サイクルを示す。バス制御回路ＢＣＴは、コマンドＣＢ１Ａを保持すると同時に判定によりリードと判断する。アドレス保持レジスタＲＤＡは、アドレスラッチ信号に応じてアドレスＡ１Ａを保持し、保持したアドレスＡ１Ａを共通鍵暗号処理制御部ＣＥＣに入力する。アドレス保持レジスタＲＤＡは、ＡＥＳ結果が得られるまでアドレスＡ１Ａを保持する。共通鍵暗号処理制御部ＣＥＣは、アドレスＡ１Ａを用いて暗号（ＡＥＳ）処理を開始する。ＡＥＳ処理完了と同時に、バス制御回路ＢＣＴは、保持したコマンドとアドレスをそれぞれＣＢ１Ｂ、Ａ１Ｂとして出力する。これに応じてリードコマンドの応答が返ると同時に、入力データ保持レジスタＲＩＤは、演算結果保持レジスタＲＥＳに保持したＡＥＳ結果とＤｏｕｔ１ＢのＸＯＲを演算してＤｏｕｔ１Ａとして出力する。
【００３３】
図８は、図５のバス制御回路ＢＣＴおよび共通鍵暗号処理制御部ＣＥＣにおいて、図６および図７の処理を行うための構成をより詳細に示した図である。バス制御信号ＣＢ１Ａ、ＣＢ１Ｂを、それぞれ方向ごとの単体のバスに対応したバス制御信号ＣＢ１ＡＣ、ＣＢ１ＢＣ、リプライバス制御信号ＣＢ１ＡＲ、ＣＢ１ＢＲに分割して示している。バス制御回路ＢＣＴは、コマンド判定部Ｅ１およびそれに接続されるＤ型ＦＦ(Flip Flop)およびＯＲゲートと、コマンド保持レジスタＥ２と、コマンド発行判定部Ｅ３とおよびそれに接続されるＡＮＤゲートと、リプライ判定部Ｅ５とそれに接続されるＤ型ＦＦと、を有する。共通鍵暗号処理制御部ＣＥＣおよびＡＥＳ演算器ＡＣＡＬは、ＯＲゲートに接続されるＤ型ＦＦと、ＡＥＳ演算器ＡＣＡＬと、ＡＥＳ演算完了フラグＥ４と、を有する。
【００３４】
まずバス制御信号ＣＢ１ＡＣが入力されると、コマンド判定部Ｅ１およびその付随回路は、リードコマンド、ライトコマンドの判定および、両者をＯＲ演算したアドレスラッチ信号（１）の生成を行う。また、また、これらの回路は、ライトコマンドの判定に基づいて出力データラッチ信号（２）を生成する。ＯＲゲートに接続されるＤ型ＦＦは、共通鍵（ＡＥＳ）演算開始信号（４）も生成する。また、コマンド保持レジスタＥ２にコマンドを保持し、バス制御信号ＣＢ１ＢＣとして後で出力するために使用する。
【００３５】
ＡＥＳ演算器ＡＣＡＬは、ＡＥＳ演算開始信号（４）により、カウンタ（ＲＵＡ，ＲＤＡ）値、暗号鍵ＲＫを取り込み、演算を開始する。演算終了時に、演算データと共に演算完了信号を出力する。この演算完了信号を用いて、演算データを演算結果保持レジスタＲＥＳに保持すると同時に、ＡＥＳ演算完了フラグＥ４をセットする。Ｅ４の出力は、ＡＥＳ演算完了フラグ（Ａ）である。コマンド発行判定部Ｅ３は、ＡＥＳ演算完了フラグ（Ａ）に応じて起動し、前述のＥ２、ＲＤＡで保持したデータをＣＢ１ＢＣ、Ａ１Ｂに出力する。
【００３６】
コマンド、アドレスの出力後は、ライトの場合はＲＥＳの出力を出力データ保持レジスタＲＯＤの値とＸＯＲ演算したデータを出力して終了する。リードの場合は、リプライ判定部Ｅ５が、リプライバス制御信号ＣＢ１ＢＲへの応答を判定し、入力データラッチ信号（３）を出力する。保持レジスタＲＩＤは、入力データラッチ信号（３）により入力データを保持し、ＲＥＳの出力とＸＯＲしたデータをＤｉｎ１Ａとして出力して終了する。
【００３７】
第１実施形態では、ライト処理およびリード処理とも、共通鍵の処理分だけ遅延する。次に説明する第２実施形態では、リード処理の場合のみ、高速化を図る。
【００３８】
図９は、第２実施形態のプロセッサの暗号／復号処理回路の構成を示す図であり、図８に対応する図である。また、図１０は、第２実施形態におけるリード処理を示すタイムチャートである。
【００３９】
第２実施形態のプロセッサは、リードデータ到着フラグＲＤＦと、リプライ保持レジスタＲＰＥＰの出力を制御するＡＮＤゲートＡ１と、を有すること、およびコマンド発行判定部Ｅ３の構成が異なる以外は、第１実施形態のプロセッサに類似した構成を有する。
【００４０】
第２実施形態では、第１実施形態とは異なり、共通鍵処理を開始すると同時にリードコマンドを先行して発行する。具体的には、コマンド発行判定Ｅ３は、コマンド判定部Ｅ１からのリードコマンド判定信号を受け、リードコマンドであれば、暗号処理（ＡＥＳ処理）完了を待たずにバス制御信号ＣＢ１Ｂをメモリコントローラ１６に対し発行する。リードアクセスとＡＥＳ処理は、メモリの設定や性能に応じて、どちらが早く終わるかは分からない。そこで、リードデータ到着フラグＲＤＦがリードアクセスの完了を検出し、リードデータ到着フラグ（Ｂ）を出力する。コマンド発行判定部Ｅ３は、リードデータ到着フラグ（Ｂ）と、共通鍵処理の終了信号（Ａ）の両方が終わったことを確認し、ＡＮＤゲートＡ１を制御する。ＡＮＤゲートＡ１は、リプライ保持レジスタＲＲＥＰの出力をリプライバス制御信号ＣＢ１ＡＲとして出力する。それと同時に、入力データ保持レジスタＲＩＤの出力と、共通鍵演算結果保持レジスタＲＥＳの出力をＸＯＲ演算し、Ｄｉｎ１Ａとして出力する。
【００４１】
第１実施形態では、暗号処理が終了した後メモリリードアクセスを開始した。リード処理の場合、暗号処理の演算結果は、外部メモリから読み出したリードデータに対して使用されるので、メモリリードアクセスは暗号処理の演算結果と関係しない。そこで、第２実施形態では、暗号処理とメモリリードアクセスを並行して行うことにより、処理時間が短縮される。第２実施形態では、メモリリードアクセスまたは暗号処理のどちらか遅い方に収束するものの、従来例より高速に処理を実行できる。
【００４２】
図１１は、第３実施形態のプロセッサの暗号／復号処理回路の構成を示す図であり、図８および図９に対応する図である。図１２は、第３実施形態におけるライト処理を示すタイムチャートであり、図１３は、第３実施形態におけるリード処理を示すタイムチャートである。
【００４３】
第３実施形態のプロセッサは、アドレス保持レジスタＲＥＳＡと、アドレス比較器ＣＭＰＡと、ＡＮＤゲートＡ２と、ＯＲゲートＯＲ１と、を有すること以外は、第２実施形態のプロセッサに類似した構成を有する。
【００４４】
アドレス保持レジスタＲＥＳＡは、演算結果保持レジスタＲＥＳに保持された演算結果を生成した演算を起動する要因となったアドレスを保持する。アドレス比較器ＣＭＰＡは、コマンドのアドレスとアドレス保持レジスタＲＥＳＡに保持されたアドレスとを比較して、演算結果保持レジスタＲＥＳに保持された演算結果がそのまま使用できるコマンドのアドレスであるか判定する。ＡＮＤゲートＡ２は、演算結果が使用可能である場合には、ＣＭＰＡの出力によりＡＥＳ演算開始信号（４）をマスクする。ＯＲゲートＯＲ１は、演算結果が使用可能である場合には、ＣＭＰＡの出力により演算完了フラグＥ４のセット信号を生成する。演算完了フラグＥ４は、セット信号により演算が完了していること、すなわち演算が不要であることを示す。
【００４５】
第３実施形態では、コマンドのアドレスがＲＥＳＡのものと一致した場合、暗号処理演算が起動されず、かつ演算完了の状態を示すため、図１２に示すようにライトコマンドの場合、暗号処理の無い場合に比べて１サイクル増加するだけである。また、図１３に示すようにリードの場合は２サイクル増加するだけである。このように、第３実施形態では、リード処理およびライト処理の両方でサイクル数を大幅に低減できる。また、共通鍵の暗号化ブロック単位（通常１６〜３２バイト）に対し、プロセッサのプログラムアクセス単位（通常１〜４バイト）が小さいことから、従来の例に比べ共通鍵の演算起動回数を１／４から１／３２程度に抑えることが可能となる。
【００４６】
図１４は、第４実施形態のプロセッサの暗号／復号処理回路の構成を示す図である。
【００４７】
第４実施形態のプロセッサは、アドレス保持レジスタＲＥＳＡおよび演算結果保持レジスタＲＥＳを組として複数実装したこと、およびセレクタＳＥＬＡを有すること以外は、第３実施形態のプロセッサに類似した構成を有する。セレクタＳＥＬＡは、アドレス比較器ＣＭＰＡの出力により、複数組の中からＲＥＳの出力を選択する。
【００４８】
第４実施形態では、ＲＥＳＡおよびＲＥＳが複数組設けられているので、その分コマンドのアドレスがＲＥＳＡに保持されている確率が高まる。これにより、演算量を抑え高速処理が可能となる。
【００４９】
なお、第４実施形態の変形例として、複数組のアドレス保持レジスタＲＥＳＡおよび演算結果保持レジスタＲＥＳを、プロセッサのほかの部分（プロセッサユニット）よりアクセスできるレジスタとし、予め演算結果を書き込むことが出来るようにする。これにより、予め暗号処理対象アドレスが限定されている場合に、暗号処理を起動する回数を減らすことが可能となる。
【００５０】
以上、実施形態を説明したが、開示の技術は、記載した実施形態に限定されるものでなく、各種の変形例が可能であることは、当業者には容易に理解されることである。
【符号の説明】
【００５１】
１０    プロセッサユニット
１４    外部バスモジュール
１６    メモリコントローラ
１７    外部メモリ
２０    プロセッサ
２１    暗号／複号処理回路
ＢＣＴ    バス制御回路
ＰＤＡ    アドレス保持レジスタ
ＲＵＡ    アドレス上位レジスタ
ＲＫ    鍵レジスタ
ＣＥＣ    共通鍵暗号処理制御部
ＲＥＳ    演算結果保持レジスタ
ＡＣＡＬ    ＡＥＳ演算器
ＲＯＤ    出力データ保持レジスタ
ＲＩＤ    入力データ保持レジスタ
ＯＸＯＲ    出力ＸＯＲ回路
ＩＸＯＲ    入力ＸＯＲ回路
【図１】
2010170495.tif 000003
【図２】
2010170495.tif 000004
【図３】
2010170495.tif 000005
【図４】
2010170495.tif 000006
【図５】
2010170495.tif 000007
【図６】
2010170495.tif 000008
【図７】
2010170495.tif 000009
【図８】
2010170495.tif 000010
【図９】
2010170495.tif 000011
【図１０】
2010170495.tif 000012
【図１１】
2010170495.tif 000013
【図１２】
2010170495.tif 000014
【図１３】
2010170495.tif 000015
【図１４】
2010170495.tif 000016