以下、本発明の実施形態について詳細に説明するが、まず本発明のセキュアプロセッサの全体的な構成と、その処理の概要を第1の実施例として説明する。
図2は、第1の実施例としてのセキュアプロセッサの基本構成を示すブロック図である。同図においてプロセッサ10は、実行ユニットとキャッシュを含むコア11、外部インタフェースとのコマンド処理およびバスデータ(プログラムのコードまたはデータ)の暗号化やその復号などを行う暗号処理ブロック12、命令コードの認証を行うコード認証処理ブロック13、プロセッサの起動時に用いられる最も基本的なプログラムなどが暗号化されて格納されている暗号化ROMコード領域14、およびこのコード領域14に格納されているプログラムなどの復号などを行うためのCPU固有鍵15を備えている。なお、暗号処理ブロック12の動作については後述の第3の実施例などで、コード認証処理ブロック13の動作については第5の実施例などでより詳細に説明する。
そしてコア11と暗号処理ブロック12との間では、コマンド、およびデータのやり取りが行われるとともに暗号化のための鍵の制御が行われ、またコア11とコード認証処理ブロック13との間には認証インタフェースが備えられる。さらに暗号処理ブロック12、およびコード認証処理ブロック13は主記憶17に対するアクセスを実行し、またコード認証処理ブロック13は二次記憶18に対するアクセスを実行するものとする。
図3は、第1の実施例におけるセキュアプロセッサの全体処理フローチャートである。同図において電源が投入されると、図2のコア11はステップS1で暗号化ROMコード領域14に格納されているプログラムをCPU固有鍵15を用いて復号し、ブート(起動)処理を実行する。内蔵ROMであるため、プログラムの改ざんは本来物理的に困難であるが、もし何らかの方法で改ざんされた場合でも、プログラムは暗号化されており、意味のある改ざんは困難である。従って正確にブートできた場合は、プログラムの改ざんがなかったと判断でき、暗号化ROMコード領域14に格納されているプログラムは絶対的に信頼できるものといえることになり、この状態をプログラムの基本的な信頼点として定義することが可能となる。
なお、暗号化ROMコード領域14については、64ビット単位の暗号化を行うDES(データ・エンクリプション・スタンダード)方式よりも秘匿強度の大きいAES(アドバンスド・エンクリプション・スタンダード)方式を用いる場合などはプロセッサ内部ではなく外付けとすることもできる。その場合には命令コードのNOP、データパターンのALL0/ALL1など、頻発するパターンに対応して暗号鍵の推定を可能とさせないように、同一の平文に対して常に同一の暗号文が出力されるECB(エレクトリック・コードブック)以外のモードを使用することも可能である。
続いてステップS2で暗号処理ブロック12内に備えられ、後述する鍵テーブル(メモリ)に対する操作処理、CPU固有鍵15を用いた公開鍵や秘密鍵の生成などを行う鍵管理処理、およびコード認証処理ブロック13のセットアップなどが実行され、これらの処理の内容は同様な信頼点として定義される。
続いてステップS3で二次記憶18に格納されているプログラムに対する認証処理が行われる。この第1の実施例ではオペレーティングシステム(OS)を含む一般のプログラムは、ハードディスクやネットワーク経由など二次記憶18上に格納されており、これらのプログラムに対する認証処理が実行される。この認証処理については、さらに後述する。
前述の鍵テーブル操作処理などを実行するためのプログラム群はライブラリィ化され、鍵処理モニタと呼ばれる。暗号処理ブロック12、コード認証処理ブロック13、およびCPU固有鍵15等のセキュアハードウェア20に対するアクセスは、ステップS4でこの鍵処理モニタの動作している区間だけに制限される。この鍵処理モニタが動作し、セキュアハードウェア20にアクセス可能となる状態をアクセスレベル1と呼ぶことにする。アクセスレベル1は、プログラムカウンタが、固定領域にあるステップS4の鍵処理モニタのアドレスを指しているかどうかの監視を行うハードウェアにより実現する。
このアクセスレベル1に比較して前述のOSを含む一般のプログラムによる動作はアクセスレベル2、またはアクセスレベル3に分類される。第1の実施例ではOSはアクセスレベル2に分類され、ステップS5でOSなどの起動が行われると、ステップS6で認証済みプログラムの実行が行われる。アクセスレベル2における認証済みプログラムは、アクセスレベル1におけるステップS4、すなわち鍵処理モニタに対し、鍵処理を依頼する事が出来、自空間の暗号化、データの暗号化や復号など鍵処理モニタ経由で間接的に行うことができる。このようにCPU外部からのプログラムであっても、認証されたものについてはアクセスレベル2として位置づけられ、鍵処理を行うことが出来るが、公開鍵以外のすべての鍵またはセキュアハードウェア20には直接アクセスすることは出来ないため、レベル2のプログラムに何らかの障害が生じたとしても公開鍵を除く鍵情報が外部に流出することはない。
アクセスレベル3における未認証のプログラムの実行は、ステップS7においてステップS5のOSなどの起動の後に行われるが、このアクセスレベル3のプログラムは公開鍵以外のすべての鍵へのアクセス、および鍵処理モニタへの鍵処理の依頼などを行うことは一切できないものとする。なおステップS4からステップS7の処理は各アクセスレベルのプログラム間のプロセス間通信を利用して実行される。
以上説明したように第1の実施例においては、まずプロセッサの起動時に暗号化ROMコード領域14に格納されたプログラムを用いて行われるブート処理の成功の時点でプログラムの基本的な信頼点が確立され、その後その信頼点を用いてOSを含む各種のプログラムの認証を行いながら信頼できるプログラム範囲を拡大していくことによって、システムのセキュリティレベルをプロセッサ自らが段階的に向上させるという目的が達成される。また運用開始後は認証単位毎にコードやデータの暗号化を行うことも可能となり、プログラムの間の秘密性保持に関しても十分な信頼性を維持することができる。なおこの第1の実施例では、アクセスレベル1の処理をプロセッサのコアが実行するソフトウェアとして実現する方式を説明したが、このレベル1の処理の一部、または全てをマイクロコード、あるいはワイヤードロジックとして実現することも可能である。
図4は、図2のコード認証処理ブロック13と暗号処理ブロック12による処理の概要を示すフローチャートである。同図においてまずステップS10のコード認証処理ブロックによる処理に続いて、ステップS11で暗号処理ブロックによる処理が行われるものとする。
図4においてまずステップS12で、例えば主記憶17、または二次記憶18に格納されているプログラムに対するコード認証処理が実行される。この処理の詳細については後述する。そしてステップS13で認証が成功したか失敗したかが判定され、失敗した場合にはステップS14でコード実行に対する停止処理が実行される。
認証が成功した場合には、暗号処理ブロックによる処理が開始され、ステップS16で暗号化のための鍵が、例えばページ単位に指定されているか否かが判定され、指定されていない場合にはステップS17で乱数生成器などを用いてランダム鍵が生成され、指定されている場合にはステップS18でその指定鍵が取り出される。ここで、鍵が指定されていない場合とは、新規にそのページが生成される場合などが含まれ、鍵が指定されている場合とは、生成されたページが一度ページアウト後、再度ページインする場合や、外部からの暗号化ページの格納などが含まれる。鍵が確定後、ステップS19で暗号化ページエントリ、すなわち後述するトランスレーション・ルックアサイド・バッファ(TLB)内のページ・テーブル・エントリ(PTE)が生成され、暗号化ページが割り当てられてコードまたはデータの暗号化が行われる。
図5は、同一プロセスの命令領域とデータ領域とにそれぞれ異なる暗号鍵が割り当てられてコードの暗号化が行われる場合の、コード認証とその暗号化処理の全体フローチャートである。同図においてステップS10、すなわちコード認証処理ブロックによる処理は図4における場合と同様である。
図5においてコード認証が成功すると、ステップS21で命令領域に対する鍵としての命令鍵の指定があるか否かが判定され、指定がない場合にはステップS22でランダム鍵が生成され、指定がある場合にはステップS23でその指定鍵が取り出され、ステップS24でランダム鍵、または指定鍵が使用されて、暗号化命令ページ・テーブル・エントリ、すなわちPTEが生成され、暗号化ページが命令領域に割り当てられて命令領域の暗号化が行われる。
その後ステップS26でデータ領域に対する暗号鍵としてのデータ鍵の指定があるか否かが判定され、指定がない場合にはステップS27でランダム鍵が生成され、指定がある場合にはステップS28で指定された鍵が取り出され、ステップS29でデータに対するページ・テーブル・エントリが生成され、暗号化ページが割り当てられてデータ領域に対する暗号化が実行される。
続いて第1の実施例における暗号鍵の取得動作について図6から図9を用いて説明する。図6、および図7は、暗号鍵取得動作例(その1)におけるプロセッサ内部の構成例とその処理のフローチャートである。この例ではプロセッサ固有のRSA秘密鍵が予め安全な方式によってプロセッサ内部に保持されており、対応するRSA公開鍵は何らかの方法によってプロセッサの外部に出力され、外部から与えられる暗号鍵はこの公開鍵によって暗号化されているものとする。すなわち、例えばページ単位の暗号化、および復号用の暗号鍵は共通鍵であり、その秘密性保持のために公開鍵による再暗号化が必須のものとなっている。
図6は、プロセッサ内部への暗号鍵設定処理実行のためのプロセッサ10の構成を示し、プロセッサの内部には必要なブロックとして暗号鍵設定部21、復号部22、プロセッサ固有RSA秘密鍵23、およびトランスレーション・ルックアサイド・バッファ(TLB)24が備えられ、TLBの内部には前述のページ・テーブル・エントリ(PTE)に相当する論理アドレステーブル25、物理アドレステーブル26、および鍵テーブル27が備えられている。そして暗号鍵設定部21に対して、プロセッサ固有のRSA公開鍵で暗号化された暗号鍵を含む暗号鍵設定要求が外部から与えられる。
図7は、暗号鍵取得処理のフローチャートである。同図において処理が開始されると、まずステップS31で暗号鍵設定部21によって暗号鍵設定要求が受付けられ、ステップS32で復号部22によって受け取った暗号化暗号鍵がプロセッサ固有RSA秘密鍵23を用いて復号され、ステップS33で暗号鍵設定部21によって復号された暗号鍵がTLB24の内部の鍵テーブル27に格納されて処理を終了する。
図8は、暗号鍵取得動作例(その2)におけるプロセッサの構成例である。同図においては、その1の例における図6と比較すると、プロセッサ10の内部に復号部22に代わって署名検証部28が備えられ、またプロセッサ固有RSA秘密鍵23の代わりに認証局公開鍵としての認証局証明書29が格納されている点が異なっている。この認証局証明書29はその不正な置き換えが不可能なようにプロセッサ内部に記録されているものとし、暗号鍵設定部21に対しては、認証局の署名が付けられた暗号鍵を含む暗号鍵設定要求が与えられるものとする。
図9は、暗号鍵取得動作例(その2)における処理のフローチャートである。同図において処理が開始されると、まずステップS36で暗号鍵設定部21によって暗号鍵が署名とともに受付けられ、ステップS37で署名検証部28によって受け取った暗号鍵が署名と認証局公開鍵を用いて検証され、ステップS38で検証が成功したか否かが判定され、成功した場合にはステップS39で暗号鍵設定部21によって受け取った暗号鍵がTLB24の内部の鍵テーブル27に格納された後に、また検証が失敗した場合には直ちに処理を終了する。なおさらに暗号鍵の信頼性を向上させるためにその1の動作例、すなわち暗号鍵の秘密性保持と、動作例その2、すなわち暗号鍵の身元証明とを組み合わせて実施することも当然可能である。
図10は、第1の実施例において暗号化された命令領域の命令を実行中に不正命令を検出した場合の不正命令対応処理のフローチャートである。同図においてステップS41で不正命令が検出されると、ステップS42でその不正命令が暗号化ページ内の命令であるか否かが判定され、非暗号化ページ内の命令である場合にはステップS43で通常の不正命令対応処理が行われるが、暗号化ページ内の命令であると判定されるとステップS44で命令改ざんが行われたと判定され、その改ざんに対する命令改ざん対応処理としてプロセスのロックダウンや、保留中処理のキャンセルなどの処理が実行され、その命令コードの実行は停止される。
図11は、図5で説明したように同一プロセスの命令領域とデータ領域とに異なる暗号鍵が割り当てられている場合に、例えばデータ領域に格納されている命令コードの実行に先立ってその命令が不正命令として検出されることを防ぐための鍵付け替え処理のフローチャートである。このような命令コードのデータ領域への格納はプログラムドIO(PIO)、すなわちプログラムによる命令のコピーの実行時に起こるものである。
図11においてまずステップS46で命令コードがPIOによってデータ領域にコピーされたものとし、ステップS47で鍵付け替え処理が起動される。この処理ではステップS48で命令が格納されていたデータページに対応するデータPTEが読み出され、ステップS49でそのエントリに格納されていた暗号鍵が取り出された後にそのPTEが消去され、ステップS50でそのデータPTEの内容、すなわち暗号鍵を用いて、その暗号鍵が、例えば図6の鍵テーブル27に格納された命令PTEが生成され、ステップS51でその命令PTEがTLBに書き込まれた後にステップS52で命令がコピーされた領域への分岐が行われ、その後の処理、すなわちコピー領域に格納された命令の実行処理が行われる。
このように第1の実施例では、図2で説明したようにプロセッサ10の内部に実行ユニットとキャッシュを含むコア11が1つだけ備えられ、そのコア11がセキュアコアとしてセキュアプロセッサとしての動作の中心的役割を果たすものとしたが、マルチプロセッサシステム、あるいはマルチコアシステムと呼ばれるシステムでは、例えば複数のコアを、セキュア動作を実行するセキュアコアと、ノーマル動作を実行するノーマルコアとに分類し、処理を分担させることも可能である。そのようなプロセッサシステムを次に第2の実施例として説明する。
図12は、第2の実施例としてのプロセッサの基本構成ブロック図である。同図においては第1の実施例を示す図2と比較すると、コア11に代わってセキュアコア31とノーマルコア32とが備えられ、またこれらの2つのコア31、32と暗号処理ブロック12、およびコード認証処理ブロック13との間にバスインタフェース33が備えられ、またセキュアコア31と暗号処理ブロック12との間では鍵制御が行われ、セキュアコア31とコード認証処理ブロック13との間で認証制御が行われ、さらにCPU固有鍵15はセキュアコア31だけに接続されている点が異なっている。すなわち第2の実施例では、図3で説明したセキュアハードウェア20としての暗号処理ブロック12、コード認証処理ブロック13、およびCPU固有鍵15に対する制御がセキュアコア31だけによって行われるという点に基本的な特徴がある。
この第2の実施例では、セキュアハードウェア20に対するアクセスはセキュアコア31のみに限定される。第1の実施例ではセキュア動作としての図2のステップS4における鍵処理モニタの動作においてユーザのソフトウェアが介在する余地があり、そのため前述のようにプログラムカウンタのハードウェア監視によるアクセス制限などが行われるが、第2の実施例ではこのようなソフトウェアの介在がなく、ソフトウェアバグによる問題も発生しない。
また、第1の実施例では例えば同一のコアを使用して時分割方式でアクセスレベル間の共有を行うことも必要となるが、第2の実施例ではコアが別になるため、アクセスレベル切替時点におけるレジスタクリアなどのソフトウェアに対する要求処理量も少なくなる。
図13は、第2の実施例におけるプロセッサの基本処理フローチャートである。第1の実施例における図3と比較して異なる処理を中心にその処理を説明する。図12におけるセキュアコア31とノーマルコア32とが基本的に対等な関係にあるものとすると、電源が投入された時点でそれぞれのコアは、暗号化ROMコード領域14に格納されたプログラムを用いてブート処理を実行する。すなわち前述のようにステップS1でセキュアコアによるブート処理においてCPU固有鍵15を用いて暗号化されたプログラムが復号され、ブート処理が実行される。このブート処理が成功した場合には、前述のようにその状態がプログラムの基本的な信頼点として定義され、セキュアコアはその後、例えばもっぱら鍵処理モニタとしての動作を継続することになる。
これに対してノーマルコア32は、主としてOSなどのアクセスレベル2に相当する処理を担当することになる。図13のステップS3ではセキュアコア側で二次記憶上のプログラムの認証処理が実行されるのに対応してノーマルコア32側で電源がオンとなり、ステップS55で暗号化ROMコード領域14内のプログラムによるブート処理が実行される。この時点では、セキュアコア31によって暗号化ROMコード領域14内のプログラムは絶対的に信頼可能であることが判明しているものとすると、ノーマルコア側のブート処理は基本的に問題なく終了し、ステップS5におけるOSなどの起動処理が続いて実行されることになる。
図14は、第2の実施例においてセキュアコアとノーマルコアとが対等な関係でなく、セキュリティの厳密な適用を行うために、セキュアコアによってノーマルコアの制御が行われる場合のプロセッサの構成ブロック図である。セキュアコア31とノーマルコア32とが基本的に対等な関係にある図12と比較してプロセッサの構成要素は同一であるが、セキュアコア31からノーマルコア32に対してコア制御信号が与えられる点が異なっている。このコア制御信号の具体的な例としてはリセット信号や割込み信号などが挙げられる。
図15は、図14のプロセッサによる全体処理のフローチャートである。同図においてセキュアコア31側では、ステップS1のブート処理に続いてステップS57でステップS2の代わりに、鍵テーブル操作処理、鍵管理処理、および認証処理ブロックのセットアップに加えてシステム監査が行われる。このシステム監査では、システム構成の変更の有無や、二次記憶上のプログラムの変更の有無などの検証が行われ、システムのセキュリティ機能、およびシステム構成に問題がないことが確認される。
その後ステップS58でセキュアコア31側からノーマルコアの起動が行われ、これに対応してノーマルコア32側では、ステップS59で暗号化ROMコード領域14に格納されたプログラムを用いた起動処理が実行される。その後の処理は、例えば図3における場合と同様である。
図16は、図14のプロセッサにおけるセキュアコア31によるノーマルコア32の制御処理の1つとしてのノーマルコアの停止制御処理の説明図である。同図において、例えばノーマルコア側でステップS6の認証済みプログラムの実行において、セキュアコア31側にデータなどの認証のための鍵処理が依頼され、ステップS4における鍵処理モニタの動作において認証の失敗や、セキュリティ基準への違反が検出された場合には、セキュアコア31側からの指示によってノーマルコア32による処理、すなわちステップS6の認証済みプログラムの実行、およびステップS7の未認証プログラムの実行が停止される。
図17は、図14におけるセキュアコア31によるノーマルコア32の制御処理のフローチャートである。セキュアコア31側ではステップS61でブート処理が実行され、ステップS62でその処理が完了すると、ノーマルコア32側への起動制御が行われ、ステップS63でノーマルコアの起動が行われ、ステップS64で公開鍵以外の鍵や認証処理を必要としない通常処理がノーマルコア側で実行される。セキュアコア31側では、常にステップS65でノーマルコア32側から送られる監視情報を用いた認証・監視処理を行っており、ステップS66でエラー発生があったか否かを判定し、発生がない場合にはステップS65以降の処理を続行し、エラー発生があった場合にはノーマルコア32側に対する停止要求、または割込みを行ってノーマルコア32側の処理を停止させる。セキュアコアによるノーマルコアの制御については、前述のようにリセット信号をその例として用いるものとしたが、その他の方法としてはCPUに対するNMI(マスク不可割込み)を利用することもできる。
図18は、第2の実施例において鍵生成機構を有するプロセッサの構成ブロック図である。同図において図12の構成に加えて、鍵生成機構34を備えている点が異なっている。
図19は、第2の実施例におけるセキュアコアによる鍵の生成と、生成された鍵を用いた暗号化処理の説明図である。同図においてプロセッサ内のセキュアコア31はCPU固有鍵15、および鍵生成機構34を用いて公開鍵Ke、N、および秘密鍵Kd35を生成し、例えばノーマルコア32を経由して公開鍵Ke、Nを外部に通知するものとする。このときノーマルコア32側には秘密鍵Kdが渡されることはなく、ノーマルコア32は前述のように公開鍵以外の鍵処理を実行することはできない。
そして例えば外部において公開鍵と原文Pを用いて暗号化された暗号文Cがノーマルコア32に入力されると、ノーマルコア32は秘密鍵Kdを保持していないためセキュアコア31に復号処理を依頼する。セキュアコア31は秘密鍵Kdを用いて原文Pを復号する。
次に本発明の第3の実施例について説明する。図20は、第3の実施例におけるプロセッサの基本構成ブロック図である。同図においてプロセッサ40は実行ユニット41、ロードストアユニット42、暗号化回路43、および復号化回路44を備え、またロードストアユニット42は、キャッシュメモリ45とメモリ管理ユニット46を備えている。
この第3の実施例は前述の第1、および第2の実施例と同様に基本的にはセキュアな動作を実行するプロセッサであるが、プロセッサ40の内部で第1の実施例における暗号処理ブロックと同様にストアデータの暗号化を行う暗号化回路43と、フェッチされる命令を含むロードデータを復号する復号化回路44とに対して、実行ユニット41からストア用の暗号化鍵とロード用の復号化鍵の指定が行われるところに基本的な特徴がある。
図20の第3の実施例において、実行ユニット41からロードストアユニット42に対しては、コマンドとストアデータとしての平文が与えられ、ロードストアユニット42から実行ユニット41に対しては平文としてのロードデータが与えられる。このうちコマンドはロードストアユニット42を介して、例えば図2で説明した主記憶や二次記憶に与えられるが、平文としてのストアデータは暗号化回路43に与えられ、暗号化されたストアデータとして、例えば主記憶に出力され、また例えば主記憶から入力される暗号化されたロードデータは復号化回路44によって復号され、平文としてのロードデータとしてロードストアユニット42に与えられる。
図21は、第3の実施例において暗号化鍵、復号化鍵を格納する鍵テーブルメモリを備えるプロセッサの構成ブロック図である。同図において鍵テーブルメモリ47はストアデータ暗号化用の暗号化鍵を格納するものであり、また鍵テーブルメモリ48はロードデータを復号するための復号化鍵を格納するものである。実行ユニット41からは鍵テーブルメモリ47に対してストア用の鍵番号指示とストア用の暗号化鍵の更新の指示が与えられ、また鍵テーブルメモリ48に対してはロード用の鍵番号の指示とロード用復号化鍵の更新の指示が与えられる。鍵テーブルメモリの構成については後述する。
図22は、第3の実施例においてフェッチされる命令の復号を行うための命令フェッチ用復号化鍵を格納する鍵テーブルメモリを備えるプロセッサの構成ブロック図である。同図において実行ユニット41は、例えば主記憶に格納されている命令をフェッチする命令アクセス状態の処理を行っており、例えば主記憶からのロードデータとして命令フェッチデータが復号化回路44に与えられ、このとき実行ユニット41は鍵テーブルメモリ48に対して命令アクセス状態フラグを与え、復号化回路44は鍵テーブルメモリ48から出力される命令フェッチ用復号化鍵を用いて命令フェッチデータの復号を行い、平文としての命令フェッチデータはロードストアユニット42を介して実行ユニット41に与えられる。実行ユニット41からは鍵テーブルメモリ48に対して、必要に応じて命令フェッチ用復号化鍵の更新の指示が与えられる。
図23は、第3の実施例において鍵テーブルメモリに対して使用すべき鍵番号の指示を与える鍵選択レジスタを備えるプロセッサの構成ブロック図である。同図においてストア用暗号化鍵を格納する鍵テーブルメモリ47と実行ユニット41の間にストア用鍵番号指示を鍵テーブルメモリ47に与える鍵選択レジスタ51が、またロード用復号化鍵を格納する鍵テーブルメモリ48と実行ユニット41の間に鍵テーブルメモリ48にロード用鍵番号指示を与える鍵選択レジスタ52が備えられる。実行ユニット41から鍵選択レジスタ51に対してはストア用鍵選択レジスタの更新指示が与えられ、また鍵選択レジスタ52に対してはロード用鍵選択レジスタの更新指示が与えられる。
すなわち図21では実行ユニット41からは実行命令のそれぞれに対応して鍵番号の指示が出力されるのに対して、図23では命令のある区間毎にレジスタの更新指示が与えられ、次の更新指示が与えられるまでは同一の鍵を使用して暗号化/復号化が行われる。なお実行ユニットから鍵テーブルメモリに対して直接に鍵番号指示を与える経路と、鍵選択レジスタを経由した経路との両方を設け、例えば実行ユニット41が実行命令に対応してどちらの経路の指示を用いるべきかの信号を鍵テーブルメモリに与えるような構成も当然可能である。
図24は、第3の実施例において実行ユニットの命令アクセス状態に対応する鍵選択レジスタを備えるプロセッサの構成ブロック図である。同図においては図22におけると同様に、実行ユニット41は、例えば主記憶から命令フェッチを行うべき命令アクセス状態であり、実行ユニット41から鍵選択レジスタ52に対して命令アクセス状態フラグが与えられ、鍵選択レジスタ52は、それに対応して命令フェッチ用の鍵番号指示を、命令フェッチ用復号化鍵を格納する鍵テーブルメモリ48に与える。
図25は、第3の実施例における鍵テーブルメモリの構成例の説明図である。同図において鍵テーブルメモリには、暗号鍵とその属性とが対応して格納されており、実行ユニット41から直接に、あるいは鍵選択レジスタを介して鍵番号の指示が与えられ、その鍵番号がリードアドレスとして用いられ、暗号化鍵、または復号化鍵が暗号化回路43、または復号化回路44に対する暗号化方式の指定情報や、暗号化の可否を指示する属性データとともに与えられる。また実行ユニット41から与えられる鍵更新番号指示がライトアドレスとして用いられ、鍵更新データの書込みが行われる。
各エントリの属性データはエントリの有効/無効、暗号化のオン/オフ、暗号化方式および暗号化モードなどを示し、暗号鍵は指定された暗号化方式に依存するものとなる。なお暗号化のオン/オフを指示するデータは後述するように暗号化/復号化を行うことなく平文データをロード、ストアする場合の指示に対応する。
図26は、第3の実施例における暗号化回路、および復号化回路の構成例の説明図である。例えば図20の復号化回路44は、復号パイプ55とバスアービタ57とによって基本的に構成され、復号パイプ55は実行ユニット51からのコマンドバッファ59を介したコマンド情報の入力に対応して動作する。復号パイプ55は、例えば主記憶からバスを介して入力される暗号データを平文データに復号するためのN段のパイプであり、このN段のパイプは共通鍵暗号処理一段の概念的な例である処理56がN段接続されたものである。復号パイプ55から出力される平文データは、バスアービタ57を介して、例えば図20のキャッシュメモリ45に格納される。
暗号化回路43は暗号パイプ60とバスアービタ61とによって基本的に構成される。暗号パイプ60に対しては、キャッシュメモリ45から例えば32bitの平文データが与えられ、実行ユニット41から指定される暗号化の鍵を用いてN段のパイプによって暗号化された暗号データが出力され、その暗号データはバスアービタ61を介して、例えば主記憶に接続されたバスに与えられる。暗号パイプ60の動作は復号パイプ55と同様にコマンドバッファ59を介して実行ユニット41から与えられるコマンド情報によって制御される。また暗号パイプ60の各段における処理の基本構造は復号パイプ55におけると同様である。さらに暗号方式としてはAES128、DES、およびSC2000などの各種の暗号化方式を用いることができる。なおAES方式としてはAES192、AES256の仕様も規定されている。
なお例えばバスアービタ61は主記憶装置や二次記憶装置に接続されたバスに対する調停を行うものであり、本発明におけるセキュアプロセッサの動作とは基本的に無関係である。
図27は、第3の実施例において全てのデータを暗号化するのではなく、一部のデータを平文データのままで、例えば主記憶との間で入出力するためのデータ追い越し機能付き暗号化回路と復号化回路の構成を示すブロック図である。同図において暗号化回路と復号化回路の基本的な構成は図26におけると同様であるが、例えば暗号化回路側では、キャッシュメモリ45から与えられる平文データのうちで暗号化の必要がないデータについては暗号パイプ60を介することなく、直接にバイパスセレクタ63にそのデータが与えられ、暗号パイプ60から出力された暗号化データとともに複数のバイパスバッファ64の何れかに格納され、バスアービタ61を介して、例えば主記憶に接続されたバスに与えられる。
バイパスセレクタ63による平文データ、または暗号化データの選択もコマンドバッファ59を介した実行ユニット41からのコマンド情報によって制御される。暗号パイプ60による処理は時間を要するため、暗号化の必要のない平文データは、バイパスセレクタ63の制御によって暗号化データを追い越して主記憶側に与えられることが可能となる。なお図27で暗号化に必要な鍵は鍵レジスタ69を介して暗号パイプ60に与えられている。
例えば主記憶に接続されたバスからのデータのうち、暗号化されていない平文データは復号パイプ55を経由することなく直接にバイパスセレクタ66に与えられ、復号パイプ55によって復号された平文データとともにバイパスセレクタ66によって複数のバイパスバッファ67のいずれかに格納され、バスアービタ57を介してキャッシュメモリ45に出力される。
図28は、第3の実施例においてライトスルーキャッシュ方式に対応するためのリード・モディファイ・ライト方式の説明図である。キャッシュメモリ45がライトスルー方式を採用している場合には、ストア時にキャッシュミスが発生するとキャッシュメモリ45にそのデータが格納されず主記憶にそのままデータの格納が行われる。ストアすべきデータが、例えば1バイトしか無いような場合には、主記憶に1バイトデータの格納が行われる。しかしながら第3の実施例においては、基本的にストアデータは暗号化回路43によって暗号化された後に主記憶に格納されるものであり、一般に暗号化の処理においてはストアデータとしてある程度の量のデータを必要とし、1バイトだけのデータを暗号化して主記憶に格納したとしてもその正しい復号は困難である。
図28のロードストアユニット42は、例えば1バイトのデータを主記憶に格納する必要があるときに、暗号化の処理に必要な長さのデータを主記憶からロードし、ロードされたデータとストアすべき1バイトのデータを結合し、結合されたデータを暗号化して主記憶に格納するリード・モディファイ・ライト動作を行うものである。
すなわち、例えば1バイトのデータをキャッシュにストアすべきキャッシュストア命令(1)が(2)でキャッシュミスと判定されると、(3)でキャッシュメモリ45から主記憶に対してコマンドとしてのロードが発行され、(4)で復号化回路44を介して平文のロードデータがリード・モディファイ・ライト(RMW)バッファ71に格納され、(5)でストアすべきデータがRMWバッファ71に与えられ、(6)でストアすべきデータとロードデータとを結合したデータが暗号化回路43に与えられ、(7)でコマンドとしてのストアが主記憶に対して発行される。
次に本発明の第4の実施例について説明する。この第4の実施例では、第3の実施例において暗号化回路によって使用される暗号化鍵、および復号化回路によって使用される復号化鍵の例えば鍵番号が実行ユニット41によって指定されるのに対して、実行ユニット41による命令実行時にストア、またはロード対象となるデータのアクセスアドレスが実行ユニット41によって指定され、そのアドレスに応じて暗号化鍵、または復号化鍵が選択される点が異なっている。
図29は、第4の実施例におけるプロセッサの基本構成ブロック図である。同図においてプロセッサ40は実行ユニット41、暗号化回路43、復号化回路44に加えて、実行ユニット41から与えられるアドレスに対応してストア用暗号化鍵を暗号化回路43に与え、ロード用復号化鍵を復号化回路44に与える鍵テーブルメモリ73を備えている。
図30は、実行ユニットから指定されるストアデータ、またはロードデータの論理アドレスに対応して鍵が選択されるプロセッサの構成ブロック図である。同図においてプロセッサ40は、図29と異なってストア用暗号化鍵を格納する鍵テーブルメモリ74と、ロード用復号化鍵を格納する鍵テーブルメモリ75とを備えるとともに、キャッシュメモリ45、メモリ管理ユニット46を備えるロードストアユニット42を、例えば図20とおけると同様に備えている。実行ユニット41からロードストアユニット42に与えられるアドレス、すなわちストアデータ、またはロードデータのアドレスは論理アドレスであり、この論理アドレスが鍵テーブルメモリ74、または75に与えられてストア用暗号化鍵、またはロード用復号化鍵が選択され、それぞれ暗号化回路43、または復号化回路44に与えられる。また実行ユニット41から鍵テーブルメモリ74に対してはストア用暗号化鍵の更新の指示が、鍵テーブルメモリ75に対してはロード用復号化鍵の更新の指示が与えられる。
図31は、第4の実施例においてデータの物理アドレスに対応して鍵が選択されるプロセッサの構成ブロック図である。同図を図30と比較すると、鍵テーブルメモリ74と75のそれぞれに対してロードストアユニット42からストアデータの物理アドレス、またはロードデータの物理アドレスが与えられ、そのアドレスに対応してストア用暗号化鍵が暗号化回路43に与えられ、ロード用復号化鍵が復号化回路44にそれぞれ与えられることになる。
図32は、第4の実施例における鍵テーブルメモリの構成図である。同図を第3の実施例における図25と比較すると、実行ユニット側からデータのアクセスアドレスとして0bit目から31bit目までの32bitが与えられると、そのアドレスをリードアドレスとして格納されている暗号鍵が選択され、暗号化回路43、または復号化回路44に暗号属性とともに与えられる。メモリのリードアドレスとして4kバイト毎に異なる鍵が使用される場合には、アドレスの12bit目から31bit目が使用されて暗号鍵の選択が行われる。なおこの4kバイトは後述するように例えば主記憶における1ページの大きさに相当する。またこの4kバイトを暗号化のアドレス単位と呼ぶことにすると、鍵テーブルメモリのエントリデータには全エントリ数×アドレス単位分を除いたアドレスタグが含まれる。例えば全エントリ数が32(5ビット)であれば、アドレスの17ビット目から31ビット目までがタグとなる。
図33は、第3の実施例において複数のウエイの構成を持つ鍵テーブルメモリの説明図である。同図において鍵テーブルメモリは、鍵テーブル1から鍵テーブル4までの複数のテーブルによって構成されており、実行ユニット側から与えられるアクセスアドレスに対応して4つのテーブルのうちの何れかに格納されている鍵と暗号属性とが選択され、暗号化回路43、または復号化回路44に与えられる。
図34は、連想記憶方式を用いる鍵テーブルメモリの構成例の説明図である。同図においてはアクセスアドレス32bitが比較選択器77によって格納されている暗号鍵のそれぞれに対応する対象アドレス範囲の何れかに分類され、その範囲に対応する暗号鍵が選択されて、暗号属性とともに暗号化回路43、または復号化回路44に与えられる。なお図34では全エントリ数に無関係にアドレス単位分を除いたアドレスタグがエントリに含まれる。アドレス単位が4kバイトのときには、アドレスの12ビット目から31ビット目がタグとなる。
図35は、第4の実施例においてデータの論理アドレス、または物理アドレスの何れかに対応して鍵を選択するプロセッサの構成ブロック図である。同図において実行ユニット41からはデータの論理アドレスが、またロードストアユニット42からは物理アドレスがそれぞれ鍵テーブルメモリ74、75に与えられ、また実行ユニット41から鍵テーブルメモリ74に対してはストアデータの論理アドレスと物理アドレスの選択指示が与えられ、鍵テーブルメモリ75に対してはロードデータの論理アドレスと物理アドレスの選択指示が与えられる。そしてこれらの選択指示に対応して論理アドレス、または物理アドレスの何れかに対応する鍵が選択されて暗号化回路43、復号化回路44に与えられる。
図36は、鍵テーブルメモリに対して論理アドレスと物理アドレスの選択指示を与える鍵選択レジスタを備えるプロセッサの構成例である。同図を図35と比較すると実行ユニット41と鍵テーブルメモリ74、75との間にそれぞれ鍵選択レジスタ78、79が備えられ、それぞれストアデータに対する論理アドレスと物理アドレスの選択指示、ロードデータに対する論理アドレスと物理アドレスの選択指示を鍵テーブルメモリ74、75に出力する。実行ユニット41から鍵選択レジスタ78、79に対してはそれぞれ鍵選択レジスタの更新指示が与えられる。
図37は、図35と図36における鍵テーブルメモリの構成例を示す。同図において鍵テーブルメモリは、物理アドレス鍵テーブルと論理アドレス鍵テーブルとを備え、それぞれ物理アドレスと論理アドレスに対応して物理鍵、論理鍵を出力し、実行ユニット41側からの鍵選択指示、または鍵選択レジスタからの選択指示に対応して物理・論理鍵選択部81によって物理鍵、または論理鍵の何れかが暗号属性とともに暗号化回路43、または復号化回路44に出力される。
図38は、第4の実施例において鍵テーブルメモリの内容を鍵テーブルとしてロードストアユニット42の内部のメモリ管理ユニット(MMU)46に備えたプロセッサの構成例である。
図39、および図40は、このメモリ管理ユニット内の鍵情報の格納形式とキャッシュメモリアクセス方式の説明図である。一般的にMMU46の内部のトランスレーション・ルックアサイド・バッファ(TLB)には論理アドレスと物理アドレスとの対応が、例えば物理メモリ内の各ページに対応して各エントリに格納されているが、図39ではTLBの各エントリにそのページに対応する鍵情報を格納し、例えばデータアクセスアドレスが論理アドレスである場合には論理アドレスが一致するエントリが選択され、そのエントリに対応するデータの属性とアクセス属性とが属性チェック83によってチェックされ、キャッシュコマンド生成84によって生成されたコマンドがキャッシュメモリ45に送られる。
キャッシュメモリ45側では、受け取ったコマンドの内容に対応してタグを検索し、キャッシュヒットの場合には直ちにデータ応答を実行ユニット41側に返すことになるが、キャッシュミスの場合には暗号化回路43、復号化回路44を含む暗号化・復号化バスインタフェース85に対してタグに対応するコマンドが発行される。このときエントリから読み出された鍵情報や物理アドレスが使用され、例えば主記憶からの応答データが復号化された後にキャッシュメモリに格納され、実行ユニット41にデータ応答が返されることになる。
図40は、メモリ管理ユニット内にTLBに代わるアドレス・マップ・レジスタ(AMR)を設けた場合の鍵情報格納形式の説明図である。同図においてはTLBの格納内容に対応する情報がメモリでなくレジスタに格納されており、例えばページサイズを可変とすることができ、大きなデータ領域を1つのエントリでカバーすることも可能となる。
図41は、ロードストアユニットの内部のメモリ管理ユニット(MMU)が動作停止の状態、すなわちOFFの状態において実行ユニット41から暗号化鍵を暗号化回路43に与え、復号化鍵を復号化回路44に与えるプロセッサの構成例である。同図においてMMUのON/OFF信号は暗号化回路43と復号化回路44に与えられ、その信号がOFFのときには暗号化回路43、復号化回路44は実行ユニット41から与えられる鍵、ONのときにはメモリ管理ユニット46の内部のTLB87、またはAMR88から与えられる鍵を用いて暗号化、または復号化の処理を実行することになる。
図42は、図41の暗号化回路、復号化回路における鍵の切り替え方式の説明図である。同図において暗号化回路、および復号化回路の構成は第3の実施例における図26と基本的に同じであるが、鍵セレクタ90が追加され、実行ユニットから与えられるMMUON/OFF信号の値に応じてOFFの時には実行ユニットから与えられる鍵が、ONの時にはTLB、またはAMRから与えられる鍵の何れかが鍵セレクタ90によって選択され、暗号パイプ60、復号パイプ55に与えられる。
図43は、第3の実施例、および第4の実施例における実行ユニットの入出力信号の説明図である。まず第3の実施例における図20では、出力信号としてロード復号化鍵、ストア暗号化鍵、ストアデータ、およびコマンド、入力信号としてロードデータが必須の信号(○印)であり、アクセスアドレス、ロード・ストア状態信号などは構成的には存在する信号(△印)である。
図21に対しては、ロード復号化鍵の代わりにロード鍵番号指示、ストア暗号化鍵の代わりにストア鍵番号指示の出力信号が必須のものとなる。また図21では、鍵テーブルメモリに対する更新が、実行ユニットから見てレジスタアクセスと等価であるため、レジスタ関連の入出力信号も必須となる。
図22に対しては、命令アクセス状態に対応する入出力信号が必要であり、出力信号として実行状態信号、入力信号として命令フェッチデータが必須となる。
図23、図24では、図20、図21に加え鍵選択レジスタを使用するため、レジスタ関連の入出力信号も必須となる。
以下説明を簡略化し、特徴的な部分について説明すると図21+図22+図23では3つの図を組み合わせた場合の入出力信号に加えて、スーパバイザ、あるいはユーザのいずれに対応するプロセスの実行であるかを示すスーパバイザ・ユーザ状態信号とコンテキスト、すなわちプロセスのID(識別子)のデータが追加された場合が示されている。これらスーパバイザ/ユーザ状態信号とコンテキストIDデータは、第3の実施例において実行ユニットから出力される鍵番号指示の信号に加えて暗号化鍵、復号化鍵の選択のために用いられる。
図29以降は第4の実施例に対応するものであり、データへのアクセスアドレスが必須の出力信号となるとともに、図35、図36では論理アドレスと物理アドレスの何れかを選択するための鍵選択指示信号が出力される。
図38に対しては、メモリ管理ユニットの内部のTLBに鍵テーブルが併設されるために、レジスタ関係の信号が構成的には存在する信号となり、またスーパバイザ・ユーザ状態信号とコンテキストIDデータとが追加された場合が示されている。これら追加された信号も第3の実施例と同様にアクセスアドレスとともに暗号化鍵、復号化鍵の選択に用いられる。
図41に対しては、メモリ管理ユニット(MMU)のON/OFFを示す状態信号の値に対応して実行ユニットから出力される鍵が用いられる場合と、例えばTLBから出力される鍵が用いられる場合とがあり、スーパバイザ・ユーザ状態信号、コンテキストIDデータも追加されて、すべての入出力信号が必須のものとなっている。
以上のように第3、第4の実施例ではデータや命令コードの暗号化/復号化用の鍵が実行ユニットから指定されるために、実行される命令に対応したレベルで暗号化処理を行うことも可能となる。また、鍵選択レジスタ、あるいはアクセスアドレスによる暗号化/復号化鍵の指定により、プログラム単位またはアクセス単位での暗号化処理も可能であり、様々な状況に応じて使い分けることが可能である。
続いて本発明の第5の実施例について説明する。この第5の実施例としては、例えば第1の実施例としてのセキュアプロセッサのセキュア動作を実現するためのより詳細な構成を示し、その構成に対応させてプロセス(プログラム)の信頼点を拡大していくための認証鍵の設定や、プロセスの認証などの動作について詳細に説明する。
図44は、第5の実施例を説明するためのプロセッサ内の必要な機能構成図である。同図においてプロセッサ100は、物理メモリ101、例えば図2では主記憶17と、I/O装置102、例えば二次記憶18と接続されている。
プロセッサ100は、物理メモリ101、およびI/O装置102へのアクセスを制御するメモリアクセス制御部105、実行すべき命令を解釈する命令解釈部106、実行コードの格納されているページの認証などを行う認証部107、例えば認証後のページの暗号化/復号などを行う暗号化/復号、署名生成/検証部108、プロセスの生成時にそのプロセス、すなわちコンテキストに対応するセキュアコンテキスト識別子を生成するセキュアコンテキスト識別子生成部109、プロセスの消滅時に対応する識別子を消滅させるセキュアコンテキスト識別子消滅部110、暗号化などに用いられるプロセッサ固有鍵111、例えば物理メモリ101に格納されている物理ページに対応する認証情報を格納する認証情報一次格納部112、メモリアクセス時に直接メモリアクセスを行うためのセキュアDMA113を備えている。
プロセッサ100の内部には、さらに例えば図39で説明したトランスレーション・ルックアサイド・バッファ(TLB)114とコンテキスト情報格納部115が備えられている。TLB114には、例えば物理ページに対応させて論理アドレスと物理アドレスとの対応などを示すページ・テーブル・エントリ(PTE)122が格納され、コンテキスト情報格納部115にはプログラムカウンタ(の値を保持するカウンタ)117、セキュアコンテキスト識別子を格納するセキュアコンテキスト識別子レジスタ118、認証に必要な鍵を格納する認証鍵レジスタ119、およびレジスタ群120を備えている。
また物理メモリ101には、例えば実行コードが物理ページ124の単位で格納されており、I/O装置102には実行コードやデータがページ125の単位で認証情報126が付加された形式で格納されている。なお第7の実施例では、セキュアコンテキスト識別子レジスタ118にセキュアコンテキスト識別子が格納されたコンテキスト(プロセス)の実行コードの認証は認証鍵レジスタ119に格納される認証鍵を用いて行われる。
図45は、プロセッサ上で動作するプログラム、例えばユーザによって使用されるプログラムが起動されて、コンテキスト生成命令を発行した時点でのそのコンテキストに対応するセキュアコンテキスト識別子の生成方法の説明図である。コンテキスト生成命令は、プロセッサ内部の命令解釈部106に与えられ、その解釈結果に対応してセキュアコンテキスト識別子生成部109によってセキュアコンテキスト識別子が生成され、セキュアコンテキスト識別子レジスタ118にその値がセットされる。第5の実施例ではセキュアコンテキスト識別子レジスタ118への値のセットはこの方法によってのみ可能となるように構成される。これによってセキュアコンテキスト識別子を改ざんし、他のコンテキストになりすますことは不可能となる。なおコンテキストは基本的にオブジェクト指向プログラミングにおける概念であり、より一般的にはプロセス、すなわちプログラムの実行状態に対応するが、この第5の実施例ではプロセスの代わりにコンテキストという用語を用いる。
図46は、セキュアコンテキスト識別子の具体的な生成方法の説明図である。その生成には図に示すように乱数発生器127を用いることも、また単調増加カウンタ128を用いることもできる。乱数として同じ値が生成される確率は0でなく、カウンタの値も一巡すると同じ値になるため、厳密には識別子としてのユニーク性が保証できないが、十分長いビット長のセキュアコンテキスト識別子を用いることによって実質的に問題が起きないようにすることができる。
あるいは図に示すようにプロセッサが持つ既存のコンテキストIDと乱数発生器127の出力とを結合部129で結合するか、単調増加カウンタ128の出力と結合することによってセキュアコンテキスト識別子を生成しても良い。なお既存のコンテキストIDは、例えばOSによって設定される任意の値であり、一般にユニーク性が保証されているものではない。
図47は、セキュアコンテキスト識別子消滅方法の説明図である。同図においてプロセッサ上で動作するプログラムがコンテキスト消滅命令を発行した場合に、プロセッサはセキュアコンテキスト識別子レジスタ118の内容を無効とする。無効とする方法は0クリアでも良く、レジスタ中に有効/無効を表すフラグの格納領域を設け、そのフラグを無効にセットしても良い。
図48は、図44において例えばページ単位の実行コード125に付加される認証情報126の説明図である。プロセッサ内のコンテキスト情報115の内部の認証鍵レジスタ119には認証情報126を用いて実行コード125を認証処理するための鍵が格納される。認証情報として、例えばRSAによる電子署名を用いる場合には、認証鍵はRSA公開鍵となり、共通鍵系のSHA(セキュアハッシュアルゴリズム)−1 HMAC(ハッシュベースド・メッセージ・オーセンティケーション・コード)を用いる場合には認証鍵は20バイトの値となる。
認証鍵レジスタ119への鍵の格納は、OSによるコンテキストの生成時、すなわちコンテキスト情報が初期化される段階で行われ、同時に認証鍵の正当性のチェックがおこなわれる。認証鍵自体が悪意を持った者によって生成され、その鍵によって悪意を持った実行コードに対応する認証情報が生成されてしまうと、認証処理自体は何の問題もなく成功し、プロセッサによる認証機能が働かなくなることになる。従って認証鍵の正当性をいかに保証するかは重要な課題である。
図49は、認証鍵が公開鍵の場合の認証鍵レジスタへの鍵設定方式の説明図である。同図において認証鍵はRSA公開鍵であるものとし、認証局証明書、すなわち認証局公開鍵134は、例えばプロセッサ内に工場出荷時に埋め込まれ、それ以降その置き換えや変更は不可能となっているものとする。認証鍵レジスタ119に設定すべき認証鍵は認証局秘密鍵による署名が付与された形で、例えばコンテキスト生成の時点でプロセッサに対して認証鍵設定命令として与えられ、その命令は命令解釈部106によって解釈され、署名検証部108によって認証鍵の検証が行われた後に認証鍵レジスタ119に格納される。これにより認証局のお墨付きのある公開鍵のみが認証鍵レジスタに設定される。
図50は、図49における認証鍵設定処理のフローチャートである。同図においてまずステップS71で命令解釈部106によって認証鍵設定命令がフェッチされ、ステップS72で署名検証部108によってフェッチされた公開鍵が署名と認証局公開鍵を用いて検証され、ステップS73で検証が成功した否かが判定され、成功した場合には命令解釈部106によってフェッチした設定命令に含まれる公開鍵が認証鍵レジスタ119に格納された後に、検証が失敗した場合には直ちに処理を終了する。
図51は認証鍵が共通鍵の場合の鍵設定方式を示し、図52は鍵設定処理のフローチャートである。証明鍵として共通鍵を用いる場合には、実行コードに対して認証情報を付加する側から安全な方法で認証鍵を受け取る必要がある。ここではRSA公開鍵を用いて暗号化されたHMAC鍵を認証鍵設定命令とともに受け取るものとし、プロセッサ側でプロセッサ固有RSA秘密鍵137を用いて復号部108によって復号した後に認証鍵レジスタ119に格納するものとする。
図52のフローチャートにおいて、まずステップS76で命令解釈部106によって認証鍵設定命令がフェッチされ、ステップS77でその命令に含まれる暗号化されたHMAC鍵がプロセッサ固有RSA秘密鍵137を用いて復号部108によって復号され、ステップS78で復号されたHMAC鍵が命令解釈部106によって認証鍵レジスタ119に格納されて処理を終了する。
図53は既にセキュアコンテキスト識別子が生成されているコンテキストの実行コードを主記憶、すなわち物理メモリ101の物理ページに格納し、その物理ページの認証を行って処理の実行開始を可能とするためのページイン方式の説明図であり、図54はこのページインにおける処理のフローチャートである。
このページインの処理では、まずOSによって実行コードの物理ページへの格納やページ・テーブル・エントリ(PTE)内の各種データの設定が行われた後に、OSから認証部107に対してコンテキスト、すなわち物理ページの認証要求としてのセキュアページフラグフィールドのセット要求がなされ、その要求に対応して認証部107によって物理ページの認証が行われた後にセキュアページフラグフィールドのフラグがセットされ、以後PTE使用が可能となる。
図54の処理フローチャートにおいて処理が開始されると、ステップS80でOSによって空き物理ページに実行コードが格納され、ステップS81でOSによってその物理ページの先頭アドレスと対応する論理ページの先頭アドレスとが物理アドレス、論理アドレスとしてTLBの内部のPTEにセットされ、ステップS82でセキュアコンテキスト識別子の値がそのPTEにセットされる。例えば図45、46で説明したようにコンテキスト生成命令の発行時点で生成され、セキュアコンテキスト識別子レジスタ118に格納されたセキュアコンテキスト識別子がOSによって読み出し可能となっているものとして、OSは読み出したセキュアコンテキスト識別子をPTEに設定する。
その後ステップS83でOSによって、必要に応じてそのページに対するリード/ライト属性などがPTEにセットされ、ステップS84でOSから、例えばハードウェアとしての認証部107に対してセキュアページフラグフィールドのセットが要求される。なお、OS自体は既に認証済みであることは大前提であり、セキュアページフラグフィールドのセットは基本的にOSの仕事であるが、ここでは認証済みのOSからハードウェアに対してフラグのセット要求が行われる。
ステップS85で認証部107による認証処理が実行される。この処理の詳細については後述する。この処理ではセキュアコンテキスト識別子に対応するコンテキストの認証鍵と、認証情報一次格納部112に格納された認証情報とを用いて物理ページの認証が行われ、ステップS86で認証が成功したか否かが判定され、成功した場合にはセキュアページフラグフィールドのフラグがセットされ、以後そのPTEが使用可能となる。これに対して失敗した場合にはそのフィールドのフラグはリセットされ、そのPTEは使用不可とされ、ステップS89でOSによるリカバリまたはエラー処理が行われる。
なお例えば図54の処理はTLB内のPTEに対して直接に値の設定可能なプロセッサを対象としているが、例えば主記憶上のPTEに値が設定され、TLBはそのキャッシュとして働くようなプロセッサにおいては、ステップS80からステップS83までの処理が主記憶上のPTEに対して行われ、その内容をTLBにキャッシュするタイミングでステップS84以降の動作が行われることになる。
図55は図53の認証部107の構成例であり、図56は図54におけるステップS85の認証処理のフローチャートである。ここではページ全体からSHA−1ハッシュ値が計算され、電子署名の復号結果と比較されるものとする。なお図56に示すように認証部107の動作をハードウェアによってではなく、ソフトウェアによる処理として実現することも当然可能である。
図55において物理ページ125は64バイトずつに分割され、SHA−1ハッシュ演算器140に与えられ、ページ全体のハッシュ値が計算されて比較器142に与えられる。一方、認証情報一次格納部112に格納されたRSA電子署名は、認証鍵レジスタ119に格納されたRSA公開鍵とともにRSA復号器141に与えられ、その出力としての復号済みハッシュ値が比較器142によってSHA−1ハッシュ演算器140の出力と比較されて一致する場合には認証成功、不一致の場合には失敗と判定される。
図56の認証処理において、まずステップS90で物理ページが64バイト単位で読み込まれ、ステップS91でハッシュ演算が行われ、ステップS92でページ終端に達したか否かが判定され、達していない場合にはステップS90以降の処理が繰り返される。
終端に達した場合にはステップS93でRSA公開鍵を用いて電子署名が復号処理され、ステップS94で復号結果とハッシュ演算の結果が比較され、一致している場合にはステップS95でセキュアページフラグフィールドがセットされ、不一致の場合にはステップS96でセキュアページフラグフィールドがリセットされて処理を終了する。
以上のように第5の実施例では、実行コードの物理メモリ(主記憶)へのページインにあたって実行コードの認証が行われ、認証が成功したことを示すセキュアページフラグのセットが行われる。
次に本発明における物理ページ上の命令実行時のメモリアクセス制御について第6の実施例として説明する。図57は、物理ページ上の命令実行時のメモリアクセス制御方式の説明図である。同図においてセキュアコンテキスト識別子レジスタ118に意味のある値が入っており、またPTE122のセキュアページフラグフィールドがセットされており、さらにセキュアコンテキスト識別子レジスタ118内に格納されている識別子の値と、PTE122上のコンテキスト識別子の値が一致する場合に物理ページ124上の命令の実行が許可される。この制御はメモリアクセス制御部105によって行われる。なお物理ページに対するデータのリード/ライト属性やスーパバイザ属性などのチェックは本発明の内容と直接の関係はなく、別途行われているものとする。
図58は、メモリアクセス制御部105の動作例の説明図である。同図において太い一点鎖線の中味がメモリアクセス制御部105に相当し、またTLB114の内部のPTEの属性データとしてセキュアページフラグフィールドやセキュアコンテキスト識別子が含まれるものとする。
図39と同様に、例えば論理アドレスをアクセスアドレスとしたアクセスが行われると、そのアドレスによって選択されたPTEの属性データが読み出され、アクセス属性と属性チェック146によって比較され、チェック結果がOKであれば論理アドレスに対応して読み出された物理アドレスと属性チェック結果を用いてキャッシュコマンド生成147が行われ、例えば図20のキャッシュメモリ45の内部のタグ148が検索されて、キャッシュヒット時の場合にはそのままデータ応答が返され、キャッシュミス時の場合にはキューおよびバスインタフェース149を介して、例えば主記憶からロードされたデータがキャッシュメモリに格納されるとともにデータ応答が実行ユニットに返される。
図59は、命令フェッチ時のメモリアクセス制御部105の処理フローチャートである。図57の命令実行部144によって命令フェッチのための論理アドレスが出力されると、ステップS98で指定された論理アドレスに対応するPTEの属性データが選択され、ステップS99でカレントコンテキスト、すなわち現在実行すべきコンテキストがセキュアコンテキストであるか否か、すなわち有効なセキュアコンテキスト識別子を持っているかどうかがチェックされる。セキュアコンテキストである場合には、ステップS100でそのコンテキストに対応するPTEのセキュアページフラグフィールド(SPF)がセットされているか否かがチェックされ、セットされている場合にはステップS101でカレントコンテキストのセキュアコンテキスト識別子、すなわちセキュアコンテキスト識別子レジスタ118に格納されている識別子とPTEに格納されているセキュアコンテキスト識別子が一致しているか否かが判定される。
一致している場合にはステップS102で、例えばコンテキストに対応するページの属性としてのリード/ライト属性やスーパバイザ属性などのチェックが行われ、OKの場合にはステップS103で命令フェッチのための物理アドレスをキャッシュに出力するためのキャッシュコマンドが生成されて処理を終了する。
ステップS99でカレントコンテキストが有効なセキュアコンテキスト識別子を持っていない場合には、対応するPTEの中のセキュアページフラグフィールド(SPF)がセットされているかが否かがステップS104で判定され、セットされていない場合にはセキュアコンテキスト識別子が設定されておらず、また認証の行われていない従来と同様の実行コードを処理すべきことになり、ステップS102の処理に移行する。ステップS100、S101における判定結果がNoである場合、またステップS104の判定結果がYesである場合、ステップS102の判定結果がNoである場合にはいずれもステップS105でエラー処理が行われて処理を終了する。なおここでは論理アドレスを論理ページの先頭アドレスとページ内のオフセットの値とに分解する処理と、物理ページの先頭アドレスとそのオフセットの値を加算する処理が必要であるが、これらの処理については本発明と直接の関係はなくその説明を省略する。
図60は、セキュアコアとノーマルコアとが備えられたプロセッサにおけるメモリアクセス制御方式の説明図である。同図においてノーマルコア152は、第1の実施例における図12と同様に暗号処理ブロック12とコード認証処理ブロック13による処理とは無関係の従来と同様の処理だけを行うものであり、セキュアコア151は図44においては説明しない暗号処理ブロックによる動作の制御を含めて、コード認証処理ブロックの認証制御を含むセキュア動作を実行可能なものである。
図60においてメモリアクセス制御部105の制御によって、セキュアコア151からはセキュアページフラグフィールドのセットされたPTEに対応する物理ページの使用は許可されるが、ノーマルコアからはそのページが利用できないようにする制御が行われる。
なお図44において、セキュアコアから制御されるコード認証処理ブロックはメモリアクセス制御部105を含み、認証部107、暗号化/復号、署名生成/検証部108、セキュアコンテキスト識別子生成部109、セキュアコンテキスト識別子消滅部110、プロセッサ固有鍵111、認証情報一次格納部112、セキュアDMA113、セキュアコンテキスト識別子レジスタ118、認証鍵レジスタ119、およびPTE122の内部のセキュアページフラグフィールドとセキュアコンテキスト識別子に相当する。
なお図60においてセキュアコア151は、認証処理が終了し、セキュアページフラグフィールドがPTEにセットされた物理ページ内の実行コードのみを実行し、ノーマルコア152は認証されていない通常コードのみを実行することを基本とするが、ノーマルコアが通常コードに加えて認証されたコードを実行可能とするよう構成することも可能である。
図61は、セキュアモードとノーマルモードとを切り替えるコアを備えるプロセッサの構成ブロック図である。同図においてはコア154の内部にモードレジスタ155が備えられ、セキュアモードの場合だけセキュアページフラグフィールドが設定されたページを利用可能とするものである。なおセキュアモードとノーマルモードの切り替えは、例えば通常のユーザモードとカーネルモードとの切り替えのように割込みをトリガとする方法でもよく、他の方法を用いても良い。
図62はメモリアクセス制御方式としての、図44におけるセキュアDMA113による物理メモリ101へのページデータ転送方式の説明図であり、図63はセキュアDMA113によるデータ転送処理のフローチャートである。例えば図53や図54のページイン処理では、物理ページに実行コードとしてのページデータが格納された後にその実行コードの認証を行うものとしたが、認証処理においてはハッシュ値の計算などの処理を必要とするため、ここではページデータの転送単位毎にハッシュ値を計算し、その結果をハッシュ演算の中間結果として保持する動作を繰返し、転送終了時点ではハッシュ演算を終了して、その結果をその後の認証処理に利用するものである。
図62においてセキュアDMA113は、コア154からのデータの転送元アドレス、転送先アドレス、転送サイズを受け取る転送管理部157、I/O装置102からデータを読み出すデータ読み出し器158、ハッシュ演算を行うハッシュ演算器159、物理メモリ101にページデータを書き込むデータ書込み器160、物理ページの先頭アドレスとそのページに対するハッシュ値を保持する物理ページ先頭アドレス保持部161を備えている。
図63において処理が開始されると、コア154上で動作するプログラム、一般にはOSから転送元アドレスなどの指示を受けた転送管理部157によって、データ読み出し器158に対してI/O装置102から次の64バイトのデータの読み出しが指示され、ステップS111でデータ読み出し器158によって64バイトのデータが読み出され、ステップS112で転送管理部157によってハッシュ演算器159に対してハッシュ演算が指示され、ステップS113でハッシュ演算器159によってハッシュ演算が行われ、その中間結果が内部に保持され、ステップS114で転送管理部157からデータ書き込み器160に対して物理メモリ101への64バイトのデータの書込みが指示され、ステップS115でデータ書き込み器160によって64バイトのデータが物理メモリ101に書き込まれ、ステップS116で1ページのデータ転送が終了したか否かが判定され、終了していない場合にはステップS110からの処理が繰り返され、終了している場合には転送管理部157によって転送先アドレスとしての物理ページ先頭アドレスとハッシュ値のペアが保持部161に与えられて処理を終了する。
図64はメモリアクセスの制御を含むコード実行時の処理フローチャートである。同図は代表的にはOSによるページイン時の処理のフローチャートであり、本発明の特徴は太線で囲まれた処理にある。処理が開始されるとまずステップS120でセキュアDMA113に対して転送元/先アドレス、転送サイズなどが指示され、ステップS121で転送が成功したか否かが判定され、成功した場合にはステップS122で図54のステップS81からS83におけると同様にTLB内のPTEに各種情報が設定され、ステップS123でステップS84と同様にセキュアページフラグフィールドのセットが要求され、認証部による認証処理が実行された後にステップS124でフラグのセットが成功したか否かが判定され、成功した場合には処理を終了する。またステップS121で転送が失敗した場合、ステップS124でセットが失敗した場合には直ちに処理を終了する。
以上のように第6の実施例によれば、既に認証が成功した実行コードへのアクセスに対してもセキュアコンテキスト識別子やセキュアページフラグフィールドのチェックが行われた後にアクセスが許可される。
最後に本発明の第7の実施例について図65から図74を用いて説明する。この第7の実施例では、例えばコンテキストスイッチに対応したコンテキスト情報やPTEの、例えば主記憶への退避に当って、データを保護するための暗号化、または改ざん検出情報の付加が行われる。例えば第1の実施例では認証された実行コードが暗号化されて物理メモリに格納されるものとしたが、第7の実施例では、例えばコンテキスト情報が暗号化されて物理メモリに格納される。
図65は、そのコンテキスト情報暗号化方式の説明図である。同図においては図44で説明したコンテキスト情報格納部115に格納されているコンテキスト情報のすべてが暗号器165によってプロセッサ固有鍵111を用いて暗号化され、暗号化コンテキスト情報166として物理メモリ101に格納される。
図66は、図65に対応するコンテキスト情報の復号方式の説明図である。物理メモリ101に格納されている暗号化コンテキスト情報166は、コンテキストスイッチによって必要となった時点でプロセッサ固有鍵111を用いて復号器168によって復号され、コンテキスト情報格納部115に格納される。
図67は、コンテキスト情報への改ざん検出情報の付加方式の説明図である。同図においてコンテキスト情報格納部115に格納されているコンテキスト情報に対して、プロセッサ固有鍵111を用いて改ざん検出情報170が改ざん検出情報生成器169によって生成され、物理メモリ101にコンテキスト情報とともに格納される。
図68は、図67に対応する改ざん検出情報を用いたコンテキスト情報に対する改ざん検出方式の説明図である。同図においてコンテキスト情報に付加された改ざん検出情報170を用いて、改ざん検出器172によってプロセッサ固有鍵111を用いた改ざん検出が行われる。
図69は、コンテキスト情報格納部115に格納されたコンテキスト情報のうちでセキュアな動作に必要となるコンテキスト情報と、通常のコンテキスト情報とを区分し、セキュア動作用コンテキスト情報175だけを暗号化するコンテキスト情報暗号化方式の説明図である。この方式では、プロセッサの核となる部分の変更は極力行わないように通常のコンテキスト情報176、すなわち既存コンテキストIDなどのコンテキスト情報は従来と同様に暗号化せずに扱うこととし、認証鍵レジスタ119、セキュアコンテキスト識別子レジスタ118の格納内容をセキュア動作用コンテキスト情報175として暗号化するものである。
既存コンテキストIDとしては、例えばOSの動作としてセキュアコンテキスト識別子と同じ値を格納することも可能であるものとする。例えばOSが悪意をもったコードに書き換えられたような場合には2つの識別子の値が同じとなる保証がなくなるが、同じ値であるときのみプロセッサを動作可能とさせるように構成することで、同じ値でない場合には動作しないという安全サイドに倒れ、問題は発生しない。
図69においてセキュア動作用コンテキスト情報175だけがプロセッサ固有鍵111を用いて暗号器/復号器174によって暗号化され、暗号化コンテキスト情報177として物理メモリ101に格納され、通常のコンテキスト情報176は平文コンテキスト情報176としてそのまま物理メモリ101に格納される。
図70は、セキュア動作用コンテキスト情報175に対して改ざん検出情報を付加して物理メモリ101に格納するコンテキスト情報格納方式の説明図である。同図においては改ざん検出情報生成器/改ざん検出器179によって、プロセッサ固有鍵111を用いてセキュア動作用コンテキスト情報175に対する改ざん検出情報180が生成され、物理メモリ101にセキュア動作用コンテキスト情報175と通常のコンテキスト情報、すなわち平文コンテキスト情報176とともに格納される。なおここでは通常のコンテキスト情報としてのプログラムカウンタの値やレジスタ群の値に対しては暗号化などを行わないものとしたが、さらに信頼性を向上させるためにはこのような通常コンテキスト情報についても暗号化、あるいは改ざん検出情報の付加を行うことも当然可能である。
図71から図74は、ページ・テーブル・エントリ(PTE)122の格納内容の保護方式の説明図である。図71はPTEの暗号化方式を示し、PTE122の格納内容、すなわちセキュアページフラグフィールド、セキュアコンテキスト識別子、論理アドレス、および物理アドレスの値がプロセッサ固有鍵111を用いて暗号器165によって暗号化され、暗号化PTE183として物理メモリ内のページテーブル182に格納される。
図72は、図71に対応する暗号化PTEの復号方式の説明図である。同図において物理メモリ101に格納されている暗号化PTE183は、プロセッサ固有鍵111を用いて復号器168によって復号され、TLB114の内部にPTEとして格納される。
図73はPTEへの改ざん検出情報付加方式、図74はPTEに対する改ざん検出方式の説明図である。図73においては改ざん検出情報生成器169によってプロセッサ固有鍵111を用いてPTE122に対する改ざん検出情報185が生成され、PTE122とともにページテーブル182に格納される。
図74においては改ざん検出情報185とプロセッサ固有鍵111とを用いて、改ざん検出器172によってページテーブル182に格納されているPTE122に対する改ざん検出が行われる。
以上のように第7の実施例では、セキュアプロセッサによって使用されるコンテキスト情報とPTEに対しても暗号化や改ざん検出の処理が行われ、情報処理の安全性がさらに向上する。
以上において本発明のセキュアプロセッサ、およびセキュアプロセッサ用プログラムについてその詳細を説明したが、このセキュアプロセッサを一般的なコンピュータシステムの基本要素とすることが可能である。図75はそのようなコンピュータシステム、すなわちハードウェア環境の構成ブロック図である。
図75においてコンピュータシステムは中央処理装置(CPU)200、リードオンリメモリ(ROM)201、ランダムアクセスメモリ(RAM)202、通信インタフェース203、記憶装置204、入出力装置205、可搬型記憶媒体の読取り装置206、およびこれらの全てが接続されたバス207によって構成されている。
記憶装置204としてはハードディスク、磁気ディスクなど様々な形式の記憶装置を使用することができ、このような記憶装置204、またはROM201に図3〜図5、図7、図9〜図11、その他のフローチャートに示されたプログラムや、本発明の特許請求の範囲の請求項7、19、および20のプログラムなどが格納され、そのようなプログラムがCPU200によって実行されることにより、本実施形態におけるセキュアプロセッサの動作、暗号鍵の設定、コード認識処理、および暗号処理などが可能となる。
このようなプログラムは、プログラム提供者208からネットワーク209、および通信インタフェース203を介して、例えば記憶装置204に格納されることも、また市販され、流通している可搬型記憶媒体210に格納され、読取り装置206にセットされて、CPU200によって実行されることも可能である。可搬型記憶媒体210としてはCD−ROM、フレキシブルディスク、光ディスク、光磁気ディスク、DVDなど様々な形式の記憶媒体を使用することができ、このような記憶媒体に格納されたプログラムが読取り装置206によって読取られることにより、本実施形態におけるセキュアプロセッサの動作が可能となる。
(付記1)
命令コードを実行するコアを備えるプロセッサであって、
該コアに固有の鍵を記憶する鍵記憶手段と、
暗号化された命令コードを書き換え不可能な形式で記憶する命令コード記憶手段と、
該命令コード記憶手段に記憶された命令コードを含む命令コードの認証を前記固有鍵あるいは固有鍵による認証済鍵を用いて行う認証処理手段と、
該コアと外部との間で入出力されるデータを暗号化する暗号処理手段とを備えることを特徴とするセキュアプロセッサ。
(付記2)
前記暗号処理手段が、前記認証処理手段によって認証された命令コードを暗号化し、ページ単位で前記セキュアプロセッサに接続された記憶装置に格納することを特徴とする付記1記載のセキュアプロセッサ。
(付記3)
前記記憶装置に格納されたページ単位の暗号化命令コードの実行時に不正命令が検出された時、該ページ単位の暗号化命令コードの実行を停止する不正命令実行停止手段を備えることを特徴とする付記2記載のセキュアプロセッサ。
(付記4)
前記認証処理手段が認証対象とする命令コードに認証情報が付加されていることを特徴とする付記1記載のセキュアプロセッサ。
(付記5)
前記認証情報内に暗号化の鍵が指定されている時、前記暗号処理手段が該指定されている鍵を使用してさらに前記命令コードの暗号化を行うことを特徴とする付記4記載のセキュアプロセッサ。
(付記6)
前記認証情報内に暗号化の鍵が指定されていない時、前記暗号処理手段が任意のページ鍵を使用してさらに前記命令コードの暗号化を行うことを特徴とする付記4記載のセキュアプロセッサ。
(付記7)
前記暗号処理手段が、前記認証された命令コードに対応する同一プロセスのデータに対して、該命令コードに対する暗号鍵と異なる暗号鍵を用いて該データの暗号化を行うことを特徴とする付記1記載のセキュアプロセッサ。
(付記8)
前記セキュアプロセッサに接続された記憶装置内でデータの格納領域に格納された命令コードの実行時に前記異なる暗号鍵に代わって命令コードに対する暗号鍵を使用することを特徴とする付記7記載のセキュアプロセッサ。
(付記9)
前記セキュアプロセッサにおいて、
前記認証処理手段による認証が失敗した命令コードの実行を停止させるコード実行停止処理手段をさらに備えることを特徴とする付記1記載のセキュアプロセッサ。
(付記10)
前記コアとして、
前記認証処理手段によって認証された命令コードのみを実行するセキュアコアと、
前記認証処理手段によって認証されていない通常の命令コードも実行可能なノーマルコアとを備えることを特徴とする付記1記載のセキュアプロセッサ。
(付記11)
前記命令コード記憶手段に記憶された暗号化命令コードを用いて前記セキュアコアがブートされるとともに、
該セキュアコアが該ブート完了後に前記ノーマルコアのブートを行わせるノーマルコアブート手段を備えることを特徴とする付記10記載のセキュアプロセッサ。
(付記12)
前記セキュアコアが、前記ノーマルコアのブート後に該ノーマルコアの動作を監視し、異常状態を検出した時、該ノーマルコアの動作停止、または特定処理への分岐を行わせるノーマルコア監視手段を備えることを特徴とする付記11記載のセキュアプロセッサ。
(付記13)
前記セキュアコアが、前記ノーマルコアに対してコア制御信号を与え、ノーマルコアの動作を制御することを特徴とする付記10記載のセキュアプロセッサ。
(付記14)
前記コア固有鍵に対するアクセスが、前記セキュアコアに対して許可され、前記ノーマルコアに対して禁止されることを特徴とする付記10記載のセキュアプロセッサ。
(付記15)
前記セキュアコアの制御のもとで、前記コア固有鍵を用いて公開鍵と秘密鍵のペア、および共通鍵を生成する鍵生成手段をさらに備えることを特徴とする付記14記載のセキュアプロセッサ。
(付記16)
前記セキュアコアが、前記ノーマルコアを経由して前記鍵生成手段によって生成された公開鍵を外部に通知し、
外部から該公開鍵によって暗号化された原文をノーマルコアを経由して受け取り、前記秘密鍵を用いて原文を復号することを特徴とする付記15記載のセキュアプロセッサ。
(付記17)
前記原文が情報の暗号化に使用された鍵であることを特徴とする付記16記載のセキュアプロセッサ。
(付記18)
プロセッサにおいて命令コードを実行するコアによって使用されるプログラムであって、
暗号化された命令コードが書き換え不可能な形式で記憶されたメモリ内のプログラムを用いて自コアの起動処理を行う手順と、
該メモリ内に記憶された命令コードを含む命令コードの認証処理を行う認証処理ブロックと、前記コア固有の鍵を管理する鍵管理処理と、該認証処理ブロックによって認証された命令コードの暗号化/復号処理に用いられる鍵が格納された鍵テーブルに対する操作処理とをセットアップする手順と、
前記認証処理ブロックを用いて二次記憶上のプログラムの認証処理を行う手順と、
起動されたオペレーティングシステムを含む該認証処理済みのプログラムの実行時に前記命令コードの暗号化/復号のための鍵処理を含む処理を実行する鍵処理モニタとしての動作を行う手順とを計算機に実行させるためのセキュアコア用プログラム。
(付記19)
プロセッサにおいて命令コードを実行するコアによって使用されるプログラムであって、
暗号化された命令コードが書き換え不可能な形式で記憶されたメモリ内のプログラムを用いて、自コアの起動処理を行う手順と、
オペレーティングシステムを起動する手順と、
該プロセッサ内で前記メモリ内に記憶された命令コードを含む命令コードの認証処理を行う認証処理ブロックによって認証されたプログラム、または認証されていないプログラムを実行し、該認証されたプログラムの実行処理としては、該認証された実行コードに対応して、暗号化/復号用の鍵を用いた処理を含む鍵処理を実行する鍵処理モニタに対する鍵処理の依頼を含みうる処理を実行する手順とを計算機に実行させることを特徴とするノーマルコア用プログラム。
(付記20)
命令を実行する命令実行手段と、
該命令実行手段からのコマンドに対応して外部のメモリに対するデータのロード/ストアを制御するロード/ストア制御手段と、
該ロード/ストア制御手段と外部のメモリとの間でデータの暗号化/復号化を行う暗号処理手段とを備え、
前記命令実行手段が、実行中の命令に対応して該暗号処理手段に対してデータ暗号化/復号化に使用すべき鍵を指定することを特徴とするセキュアプロセッサ。
(付記21)
前記プロセッサにおいて複数個の鍵を記憶する鍵記憶手段をさらに備え、
前記命令実行手段が、該鍵記憶手段に対して前記鍵を指定する鍵番号を出力し、該鍵記憶手段が該鍵番号に対応して前記暗号処理手段に対して、データ暗号化/復号化に使用すべき鍵を与えることを特徴とする付記20記載のセキュアプロセッサ。
(付記22)
前記セキュアプロセッサにおいて、外部からロードされた命令フェッチデータの復号化に使用されるべき鍵を記憶する鍵記憶手段をさらに備え、
前記命令実行手段が命令フェッチ状態にある時、該鍵記憶手段が前記暗号処理手段に対して該復号化用の鍵を与えることを特徴とする付記20記載のセキュアプロセッサ。
(付記23)
前記セキュアプロセッサにおいて、
複数個の鍵を記憶する鍵記憶手段と、
前記命令実行手段によって出力され、前記鍵を指定するための鍵番号を記憶する鍵番号記憶手段とを備え、
該鍵記憶手段が、該鍵番号記憶手段から与えられる鍵番号に対応して前記データ暗号化/復号化に使用すべき鍵を前記暗号処理手段に対して与えることを特徴とする付記20記載のセキュアプロセッサ。
(付記24)
前記セキュアプロセッサにおいて、
外部からロードされる命令フェッチデータの復号化に使用されるべき鍵を含む複数の鍵を記憶する鍵記憶手段と、
外部からロードされた命令フェッチデータの復号化に使用されるべき鍵の鍵番号を記憶する鍵番号記憶手段とをさらに備え、
前記命令実行手段が命令フェッチ状態にある時、該鍵番号記憶手段から出力される鍵番号に対応して該鍵記憶手段が、命令フェッチデータの復号化に使用されるべき鍵を前記暗号処理手段に与えることを特徴とする付記20記載のセキュアプロセッサ。
(付記25)
前記命令実行手段が、前記鍵を指定するための信号として鍵の番号に加えて命令に対応するスーパバイザ/ユーザ切り替え信号を出力することを特徴とする付記20記載のセキュアプロセッサ。
(付記26)
前記命令実行手段が、前記鍵を指定するための信号として鍵の番号に加えて実行中の命令が含まれるプロセスの識別子を出力することを特徴とする付記20記載のセキュアプロセッサ。
(付記27)
前記ロード/ストア制御手段が、
ライトスルー方式のキャッシュメモリと、
外部のメモリにストアすべきデータと該外部メモリから前記暗号処理手段を介してロードされたデータとを結合して暗号処理手段に与えるリードモディファイライト手段とをさらに備えることを特徴とする付記20記載のセキュアプロセッサ。
(付記28)
前記セキュアプロセッサにおいて、
前記ロード/ストア制御手段と外部メモリとの間で、前記暗号処理手段をバイパスして、暗号化/復号化を行うことなく、平文データの転送を行うデータバイパス手段をさらに備えることを特徴とする付記20記載のセキュアプロセッサ。
(付記29)
命令を実行する命令実行手段と、
該命令実行手段からのコマンドに対応して外部のメモリに対するデータのロード/ストアを制御するロード/ストア制御手段と、
該ロード/ストア制御手段と外部のメモリとの間でデータの暗号化/復号化を行う暗号処理手段とを備え、
前記命令実行手段が、実行中の命令によるデータ/命令フェッチのアクセスアドレスに対応させて、該暗号処理手段に対してデータ暗号化/復号化に使用すべき鍵を指定する信号を与えることを特徴とするセキュアプロセッサ。
(付記30)
前記プロセッサにおいて複数個の鍵を記憶する鍵記憶手段をさらに備え、
前記命令実行手段が、前記アクセスアドレスとしての論理アドレスを該鍵記憶手段に対して出力し、該鍵記憶手段が該論理アドレスに対応して前記データ暗号化/復号化用の鍵を前記暗号処理手段に与えることを特徴とする付記29記載のセキュアプロセッサ。
(付記31)
前記セキュアプロセッサにおいて複数個の鍵を記憶する鍵記憶手段をさらに備え、
前記ロード/ストア制御手段が、前記命令実行手段から与えられるコマンドに対応して前記アクセスアドレスとしての物理アドレスを該鍵記憶手段に対して出力し、該鍵記憶手段が該物理アドレスに対応して前記データ暗号化/復号化用の鍵を前記暗号処理手段に与えることを特徴とする付記29記載のセキュアプロセッサ。
(付記32)
前記セキュアプロセッサにおいて、前記アクセスアドレスとしての論理アドレスと物理アドレスとのそれぞれに対応させてそれぞれ複数の鍵を記憶する鍵記憶手段をさらに備え、
該鍵記憶手段に対して前記ロード/ストア制御手段から与えられる前記アクセスアドレスとしての物理アドレスと、前記命令実行手段から与えられる論理アドレスとのいずれを選択すべきかを示す該命令実行手段からの指示に対応して、該鍵記憶手段が選択したアドレスに対応する前記データ暗号化/復号化用の鍵を前記暗号処理手段に与えることを特徴とする付記29記載のセキュアプロセッサ。
(付記33)
前記セキュアプロセッサにおいて、
前記アクセスアドレスとしての論理アドレスと物理アドレスとのそれぞれに対応させてそれぞれ複数の鍵を記憶する鍵記憶手段と、
前記命令実行手段によって出力され、前記暗号処理手段に対して論理アドレスと物理アドレスのいずれに対応する鍵を与えるべきかを示すアドレス選択指示のデータを記憶するアドレス選択指示記憶手段とをさらに備え、
該鍵記憶手段が、該アドレス選択指示記憶手段の記憶内容に従って論理アドレスと物理アドレスとのいずれかに対応する鍵を前記データ暗号化/復号化用の鍵として前記暗号処理手段に与えることを特徴とする付記29記載のセキュアプロセッサ。
(付記34)
前記ロード/ストア制御手段が、前記アクセスアドレスに対応して複数の鍵を記憶する鍵記憶手段をさらに備え、
該ロード/ストア制御手段が、前記命令実行手段から命令実行中に与えられたアクセスアドレスに対応して該鍵記憶手段に記憶された鍵を選択し、前記データ暗号化/復号化用の鍵として前記暗号処理手段に与えることを特徴とする付記29記載のセキュアプロセッサ。
(付記35)
前記命令実行手段が前記暗号処理手段に対して、前記鍵記憶手段のON/OFFを示す信号と、該鍵記憶手段がOFFの時に前記データ暗号化/復号化に使用されるべき鍵を与える信号とを出力し、
該暗号処理手段が前記ON/OFF信号に対応して、前記鍵記憶手段がONの時には鍵記憶手段から与えられる鍵を、OFFの時には該命令実行手段から与えられる鍵を前記データ暗号化/復号化用の鍵として使用することを特徴とする付記34記載のセキュアプロセッサ。
(付記36)
前記命令実行手段が前記鍵を指定するための信号として、前記アクセスアドレスに加えて、実行中の命令に対応するスーパバイザ/ユーザ切り替え信号を出力することを特徴とする付記29記載のセキュアプロセッサ。
(付記37)
前記命令実行手段が、前記鍵を指定するための信号として前記アクセスアドレスに加えて、実行中の命令が含まれるプロセスの識別子を出力することを特徴とする付記29記載のセキュアプロセッサ。
(付記38)
前記ロード/ストア制御手段が、
ライトスルー方式のキャッシュメモリと、
外部のメモリにストアすべきデータと該外部メモリから前記暗号処理手段を介してロードされたデータを結合して該暗号処理手段に与えるリードモディファイライト手段とをさらに備えることを特徴とする付記29記載のセキュアプロセッサ。
(付記39)
前記セキュアプロセッサにおいて、前記ロード/ストア制御手段と外部メモリとの間で前記暗号処理手段をバイパスして、暗号化/復号化を行うことなく、平文データの転送を行うデータバイパス手段をさらに備えることを特徴とする付記29記載のセキュアプロセッサ。
(付記40)
実行コードに対応するプロセスの実行に先立って、該実行コードを格納するページが正しく認証されたことを示すセキュアページフラグが設定されたページに対応するセキュアプロセス識別子と比較するためのセキュアプロセス識別子を、該プロセスの生成命令が発行された時点で生成するセキュアプロセス識別子生成手段と、
該生成されたセキュアプロセス識別子を該プロセスに関連する情報として保持するプロセス情報保持手段とを備えることを特徴とするセキュアプロセッサ。
(付記41)
前記生成され、前記プロセス情報保持手段に保持されているセキュアプロセス識別子を、前記プロセスの消滅時に消去するセキュアプロセス識別子消去手段をさらに備えることを特徴とする付記40記載のセキュアプロセッサ。
(付記42)
前記プロセスに対応する実行コードに認証情報が付与されるとともに、
前記プロセス情報保持手段が、前記生成されたプロセスの生存期間中に行われる実行コード認証のための認証鍵をさらに保持することを特徴とする付記40記載のセキュアプロセッサ。
(付記43)
前記実行コードに付与された認証情報がメモリにおけるページ単位の情報であることを特徴とする付記42記載のセキュアプロセッサ。
(付記44)
前記プロセスに対応する実行コードがメモリの空きページに格納され、該ページのアドレスに対応させて前記セキュアプロセス識別子が前記プロセッサ内のバッファに格納された後に前記ページ単位の認証鍵を用いた該実行コードの認証が成功した時、該バッファに前記セキュアページフラグをセットする認証手段をさらに備えることを特徴とする付記43記載のセキュアプロセッサ。
(付記45)
前記セキュアプロセッサにおいて、
前記実行コードの実際の実行に先立って前記バッファ内に格納されたセキュアプロセス識別子であって、対応する前記セキュアページフラグがセットされているセキュアプロセス識別子と、前記プロセス情報保持手段に保持され、実行すべき命令コードに対応するセキュアプロセス識別子とを比較し、両者が一致した時に前記実行コードが格納されたメモリ上のページへのアクセスを、命令を実行する命令実行部に許可するメモリアクセス制御手段をさらに備えることを特徴とする付記44記載のセキュアプロセッサ。
(付記46)
前記セキュアプロセッサにおいて、
前記実行コードのメモリへの格納に並行して前記実行コードの認証に必要となる演算を行い、該演算の結果を保持して前記認証手段に与える直接メモリアクセス手段をさらに備えることを特徴とする付記44記載のセキュアプロセッサ。
(付記47)
前記セキュアプロセッサにおいて、該プロセッサに固有の暗号化/復号化用の鍵と、
前記バッファ内に格納されたセキュアページフラグ、セキュアプロセス識別子、および実行コードが格納されたメモリページのアドレスの情報を外部に退避、または外部から復帰するに当り、該プロセッサ固有鍵を用いて該情報の暗号化/復号化を行う暗号処理手段とをさらに備えることを特徴とする付記44記載のセキュアプロセッサ。
(付記48)
前記セキュアプロセッサにおいて、
該プロセッサに固有の鍵と、
前記バッファ内に格納されたセキュアページフラグ、セキュアプロセス識別子、および実行コードが格納されたメモリページのアドレスの情報を外部に退避するに当り、該プロセッサ固有鍵を用いて該情報に対する改ざん検出情報を生成して付与し、外部から復帰するに当り該固有鍵を用いて該情報に対する改ざん検出を行う改ざん検出手段とをさらに備えることを特徴とする付記44記載のセキュアプロセッサ。
(付記49)
前記セキュアプロセッサにおいて、それぞれ命令実行ユニットとキャッシュとを備えるコアであって、
前記認証された実行コードのみを実行するセキュアコアと、
該認証されていない通常の実行コードを実行するノーマルコアとを備えることを特徴とする付記40記載のセキュアプロセッサ。
(付記50)
前記ノーマルコアが前記通常コードに加えて前記認証されたコードをも実行することを特徴とする付記49記載のセキュアプロセッサ。
(付記51)
前記セキュアプロセッサにおいて、
実行ユニットとキャッシュメモリとを備えるコアが、前記認証された実行コードのみを実行すべきセキュアモードと、認証されていない通常の実行コードのみを実行すべきノーマルモードとのいずれかの指示が設定されるモード指定手段をさらに備え、
該コアが該指示に対応してセキュアモード、またはノーマルモードのいずれかを実行することを特徴とする付記40記載のセキュアプロセッサ。
(付記52)
前記セキュアプロセッサにおいて、
該プロセッサに固有の暗号化/復号化用の鍵と、
前記プロセス情報保持手段に保持され、前記セキュアプロセス識別子を含む情報を外部に退避、または外部から復帰するに当り、該プロセッサ固有鍵を用いて該情報の暗号化/復号を行う暗号処理手段とをさらに備えることを特徴とする付記40記載のセキュアプロセッサ。
(付記53)
前記セキュアプロセッサにおいて、
該プロセッサに固有の鍵と、
前記プロセス情報保持手段に保持され、前記セキュアプロセス識別子を含む情報を外部に退避するに当り、該プロセッサ固有鍵を用いて該情報に対する改ざん検出情報を生成して付与し、外部から復帰するに当り該固有鍵を用いて該情報に対する改ざん検出を行う改ざん検出手段とをさらに備えることを特徴とする付記40記載のセキュアプロセッサ。
(付記54)
実行コードを含むページをメモリにページインする計算機によって使用されるプログラムであって、
該計算機内の直接メモリアクセス機構に前記ページのメモリへの転送を依頼する手順と、
該転送の成功後に、該計算機のトランスレーション・ルックアサイド・バッファ内のページ・テーブル・エントリに、該ページ内の実行コードに対応するプロセスの実行に先立って該実行コードを格納するページが正しく認証されたことを示すセキュアページフラグが設定されたページに対応するセキュアプロセス識別子と比較するための識別子であって、該プロセスの生成命令が発行された時点で生成されたセキュアプロセス識別子を含み、該ページについてのデータを設定する手順と、
前記ページの認証と、該認証の成功を示すセキュアページフラグの該ページ・テーブル・エントリへのセットとをハードウェアに要求する手順とを計算機に実行させることを特徴とするセキュアプロセッサ用プログラム。
(付記55)
実行コードを含むページをメモリにページインする計算機によって使用される記憶媒体であって、
該計算機内の直接メモリアクセス機構に前記ページのメモリへの転送を依頼するステップと、
該転送の成功後に、該計算機のトランスレーション・ルックアサイド・バッファ内のページ・テーブル・エントリに、該ページ内の実行コードに対応するプロセスの実行に先立って該実行コードを格納するページが正しく認証されたことを示すセキュアページフラグが設定されたページに対応するセキュアプロセス識別子と比較するための識別子であって、該プロセスの生成命令が発行された時点で生成されたセキュアプロセス識別子を含み、該ページについてのデータを設定するステップと、
前記ページの認証と、該認証の成功を示すセキュアページフラグの該ページ・テーブル・エントリへのセットとをハードウェアに要求するステップとを計算機に実行させるセキュアプロセッサ用プログラムを格納した計算機読出し可能可搬型記憶媒体。
(付記56)
実行コードを含むページの認証を行う計算機によって使用されるプログラムであって、
メモリに読み込まれた該ページに対するハッシュ演算を行う手順と、
該ページに付与されている認証情報を復号する手順と、
該ハッシュ演算結果と該復号結果とを比較する手順と、
該比較の結果として一致が検出された時、該計算機のトランスレーション・ルックアサイド・バッファ内のページ・テーブル・エントリに該ページの認証が成功したことを示すセキュアページフラグをセットする手順とを計算機に実行させることを特徴とするセキュアプロセッサ用プログラム。
(付記57)
実行コードを含むページの認証を行う計算機によって使用される記憶媒体であって、
メモリに読み込まれた該ページに対するハッシュ演算を行うステップと、
該ページに付与されている認証情報を復号するステップと、
該ハッシュ演算結果と該復号結果とを比較するステップと、
該比較の結果として一致が検出された時、該計算機のトランスレーション・ルックアサイド・バッファ内のページ・テーブル・エントリに該ページの認証が成功したことを示すセキュアページフラグをセットするステップとを計算機に実行させるセキュアプロセッサ用プログラムを格納した計算機読出し可能可搬型記憶媒体。