説明

セキュアプロセッサシステム、セキュアプロセッサ及びセキュアプロセッサシステムの制御方法

【課題】プロセッサ処理の安全性を高めたシステムを、製造者とユーザが相手の暗号情報を知ること無しに、最小限のモジュール追加で実現することを目的とする。
【解決手段】命令コードを実行するCPUコア21と、プロセッサ鍵を保持する暗号鍵保持部25と、コア21に入出力されるデータをプロセッサ鍵で暗号化または復号化する暗号処理部24と、を有するセキュアプロセッサ20と、メモリ30と、を備えるセキュアプロセッサシステムであって、暗号鍵保持部25は、固定暗号鍵を保持する固定レジスタ26と、入力される命令暗号鍵が格納され、格納された命令暗号鍵を読み取り不能に保持する書込レジスタ27と、を備え、暗号鍵保持部は、立ち上げ時には固定暗号鍵を、命令暗号鍵が書き込まれた後は命令暗号鍵を、プロセッサ鍵として出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プロセッサを有するシステムに係り、特に不正なコードの実行を防止可能なセキュアプロセッサシステム、そのようなシステムを構築するためのセキュアプロセッサ及びセキュアプロセッサシステムの制御方法に関する。
【背景技術】
【0002】
プロセッサを使用するシステムでは、動作をプログラムによって記述することができ、ハードウェアによってすべてを構成するシステムに比べ、どの設計及び動作の柔軟性が大きく、多種類の機能が容易に実現できる。このような優れた特性のために、プロセッサはパーソナルコンピュータなどの各種コンピュータや、PDA(Personal Digital Assistant)、携帯電話、情報家電などの各種情報機器に実装されるようになっている。
【0003】
図1の(A)は、従来のプロセッサを使用するシステムの概略構成を示す図である。図示のように、システムは、プロセッサ1と、外付け(外部)ROM6と、を有する。一般的に、プロセッサ1は、命令処理を行うCPUコア2と、起動用に使用する内蔵ROM4と、内部または外部のメモリとの通信を行うメモリインターフェース(IF)5と、これらのモジュールを相互接続する内部バス3と、を有し、1チップの半導体として構成されている。なお、内蔵ROM4については実装されない場合もあり、その際はメモリインタフェース経由で外部より起動する。また、その他の周辺ブロックも実装される場合が多いが、今回の発明との関連が薄いため省略する。外部ROM6には、制御プログラム7が記憶される。プロセッサ1は、制御プログラム7に従って動作を行う。
【0004】
この構成では、プロセッサに所望の動作をさせるために書き換え可能な外部の記憶媒体(例えばフラッシュROM)6にプログラムを記録しておく。しかしながら、このような構成では、例えばROM6が物理的に取り外されるなど、外部からの解析に対し非常に弱くなっている。このことは、内部の処理プログラムが著作権管理等に代表される機密性の高いものであった場合、処理の安全性が担保されないことになり、結果としてそのようなシステムの実現が困難になることも考えられる。
【0005】
また、ネットワークの進展につれ、これらの情報機器はネットワークに接続されて使用され、ネットワークを介してメールやデータの送受信や、プログラムのダウンロードをする機会が増加している。これに伴って、近年、ネットワークなどを介するコンピュータウィルスの感染や、不正アクセスにさらされる危険性が増大しており、コンピュータや携帯情報端末の普及が高まるにつれ、それらの機器で実行されるプログラムに関するセキュリティの重要性が高まっている。
【0006】
プロセッサを備えた情報機器のセキュリティを強固とするために回線データに対する暗号化、ユーザ認証などの各種のシステム的な措置が施されているが、近年ではシステムレベルでの安全性のみならず、コンピュータウィルスや不正アクセス等の蔓延に対応するために、ソフトウェアレベル、プロセッサレベルの安全性が問題となっている。
【0007】
例えば、携帯電話や情報家電など、各種のプロセッサ組込機器などがネットワークに接続されることにより、パーソナルコンピュータ等に対するのと同等の脅威をこれらの機器も外部から受ける可能性が高くなっている。不正侵入は、悪意を持った実行コードが端末内で動作することにその原因がある。そのため、悪意のあるコードや、所望しないコードをプロセッサで動作させないようにする必要がある。しかしながら、現状では、悪意のあるコードを動作させないようにするプロセッサ側の対策があまり十分ではなく、安全なソフトウェア実行環境が提供されていないという問題があった。
【0008】
このため、最近、セキュアプロセッサが研究されている。セキュアプロセッサは、プロセッサの外側で扱われるデータには暗号化を施し、内側にはアクセス保護を施すことで、データを直接読み取ることを不可能とする。例えば、データや命令コードを暗号化して主記憶装置や二次記憶装置に格納し、プロセッサが命令を実行する際には、暗号化された命令コードを復号し、それをプロセッサ内のキャッシュメモリに格納してから実行する。
【0009】
本出願人は、特許文献1でこのようなセキュアプロセッサを開示している。
【0010】
図1の(B)は、特許文献1に開示されたセキュアプロセッサの基本構成を示す図である。図示のように、セキュアプロセッサ10は、実行ユニットとキャッシュを含む(CPU)コア11と、外部インターフェースとのコマンド処理及びバスデータ(プログラムのコードまたはデータ)の暗号化やその復号などを行う暗号処理ブロック12と、命令コードの認証を行うコード認証処理ブロック13と、プロセッサの起動時に用いられる最も基本的なプログラムなどが暗号化されて格納されている暗号化ROMコード領域14と、このコード領域14に格納されているプログラムなどの復号を行うためのCPU固有鍵を保持するCPU固有鍵保持レジスタ15と、を有している。
【0011】
そして、コア11と暗号処理ブロック12との間では、コマンド、およびデータのやり取りが行われると共に暗号化のための鍵の制御が行われ、またコア11とコード認証処理ブロック13との間には認証インターフェースが備えられる。さらに暗号処理ブロック12、およびコード認証処理ブロック13は、主記憶17に対するアクセスを実行し、またコード認証ブロック13は二次記憶18に対するアクセスを実行する。
【0012】
特許文献1に開示されたセキュアプロセッサでは、CPU固有鍵保持レジスタ15には外部からアクセスできないようになっている。セキュアプロセッサのユーザ(システム製造者)は、CPU固有鍵を決定した後製造者にCPU固有鍵を通知し、製造者はセキュアプロセッサの製造段階でCPU固有鍵保持レジスタ15に通知されたCPU固有鍵を設定する。以後、CPU固有鍵は、外部に漏洩しないように製造者とユーザで厳重に保管される。セキュアプロセッサは、CPU固有鍵で正しく暗号化されたプログラム以外では実質的に動作しないので、CPU固有鍵を知らない第三者が悪意でプログラムを改竄しても、セキュアプロセッサに不正な動作を行わせることはできない。
【0013】
【特許文献1】特開2006−18528
【発明の開示】
【発明が解決しようとする課題】
【0014】
特許文献1に記載されたセキュアプロセッサは、機能として充分であるものの、ハードウェア、ソフトウェア共に、システムに対して従来のものから、かなりの程度変更が要求されるものであった。言い換えれば、従来のシステムと良好な互換性を維持するのが難しいという問題があった。安全性の高いプロセッサを提供していく上で、互換性に対するコストはある程度は許容せざるを得ないものの、既存システムからの移行期間においては、変更量、コストを最小限に出来るものが望まれる。
【0015】
さらに、上記のように、CPU固有鍵は製造者とユーザで厳重に管理する必要があるが、厳重な管理にはコストを要し、特に多数のユーザのCPU固有鍵を管理する製造者にはチップごとにCPU固有鍵を管理する必要があり、大きな負担となっていた。もし製造者が多数のCPU固有鍵を一括して管理している場合には、多数のユーザのCPU固有鍵が同時に漏洩することになり、その被害は膨大なものになる。そのため、CPU固有鍵を管理するコストが、製造コストにも影響し、セキュアプロセッサの価格を上昇させる要因にもなる。
【0016】
このような観点から、セキュアプロセッサの製造者とユーザが相手の暗号情報を知らなくても、セキュアプロセッサとしての安全レベルは維持できるようにすることが望まれている。これにより製造者がユーザの暗号の管理を行う必要がなくなるだけでなく、ユーザにとっても製造者からの暗号漏洩の危険性がなくなるという利点がある。
【0017】
本発明の第1の目的は、プロセッサ処理の安全性を最小限のモジュール追加で実現し、既存システムへの影響を最小限することである。
【0018】
本発明の第2の目的は、チップごとの固有情報など、製造コストに影響する要件を代替手段により提供し、より低コストで実現することである。具体的には、セキュアプロセッサの製造者とユーザが相手の暗号情報を知る必要をなくし、暗号情報の管理を不要にすることである。
【課題を解決するための手段】
【0019】
上記目的を実現するために、本発明によれば、ユーザがセキュアプロセッサの暗号鍵を製造者に知らせることなく設定できるようにする。しかし、セキュアプロセッサの暗号鍵を外部から設定可能にするだけでは、ユーザだけでなく悪意の第三者も暗号鍵を外部から設定できるので、プロセッサ処理の安全性を維持することはできない。
【0020】
プログラムの安全性証明とは、プログラムが正しい製造者により作成され、かつ改竄されていないことの証明が可能かどうか、ということを意味する。そこで、本発明では、正しいユーザにより作成された暗号鍵のみがセキュアプロセッサの暗号鍵として設定されるようにする。
【0021】
図2は、本発明の原理を説明する図である。図2に示すように、本発明のセキュアプロセッサシステムは、セキュアプロセッサ20と、暗号用メモリ30と、を備える。セキュアプロセッサ20は、命令コードを実行するコア21と、プロセッサ鍵を保持する暗号鍵保持部25と、コア21に入出力されるデータを、プロセッサ鍵で暗号化または復号化する暗号処理部24と、を有し、メモリ30はコア21に入出力されるデータを記憶する。この他にも、CPUコア21を起動するための内蔵ROM23及び各ブロックを接続する内部バス22などが設けられる。図示のように、暗号鍵保持部25は、書き換え不能な固定暗号鍵を保持する固定レジスタ26と、入力される命令暗号鍵が格納され、格納された命令暗号鍵を読み取り不能に保持する書込レジスタ27と、を備え、プロセッサの立ち上げ時には固定レジスタ26に保持された固定暗号鍵をプロセッサ鍵として出力し、書込レジスタ27に命令暗号鍵が書き込まれた後は、書込レジスタ27に保持された命令暗号鍵をプロセッサ鍵として出力する。メモリ30は、セキュアプロセッサの製造者からユーザに供給された、入力された命令暗号鍵を書込レジスタ27に書き込むための変換を行う鍵変換プログラムを固定暗号鍵で暗号化したプログラムデータ31と、ユーザが独自に決定した命令暗号鍵(暗号化設定情報)32と、命令暗号鍵32で暗号化された処理プログラム33と、を有する。暗号用メモリ30は、セキュアプロセッサ20内に設けられても、外部に設けられてもよい。
【0022】
本発明によれば、鍵変換プログラムは書き換え不能な固定暗号鍵を用いて暗号化されており、正しい鍵変換プログラムでなければ、プロセッサ鍵を固定暗号鍵からユーザが任意に設定する命令暗号鍵に変更することはできない。このように、ソフトウェアからアクセスできない固定暗号鍵から起動し、任意の命令暗号鍵に変換することにより、チップ固有の固定暗号鍵を用いずとも使用者別の命令暗号鍵に設定できる。この構成では、鍵変換プログラム、命令暗号鍵及び処理プログラムはユーザが設ける暗号用メモリに記憶されるので、セキュアプロセッサは、従来の構成(図1の(A))に、暗号処理部24と暗号鍵保持部25を追加するだけであり、最小限のモジュール追加で実現できる。
【0023】
本発明によれば、製造者は鍵変換プログラムの固定鍵暗号化されたデータのみをユーザに供給するだけであり、ユーザは固定鍵自体を知る必要はない。また、ユーザは、命令暗号鍵を任意に決定して暗号用メモリに記憶するだけで、製造者に命令暗号鍵を知らせる必要はない。固定暗号鍵が漏洩しないとすれば、固定暗号鍵により暗号化された鍵変換プログラム、および変更後の命令暗号鍵により暗号化されたプログラムの両者について、正しい実行を保証することが可能となる。さらに、暗号に関する情報は暗号化されてメモリ(ROM)に記憶されており、単体での解析は非常に難しい。
【0024】
従って、製造者は複数のユーザに共通の固定鍵を使用することが可能であり、ユーザごとの命令暗号鍵を知らないので管理の必要がなく、暗号鍵の管理が非常に容易になる。また、ユーザは、製造者が命令鍵を知らないので、製造者からの命令鍵の漏洩の恐れがなく、安全性をより向上できる。
【0025】
命令暗号鍵(暗号化設定情報)32はRSA(Rivest Shamir Adleman)暗号化されていることが望ましい。製造者は、RSA暗号化のための設定情報秘密鍵と公開鍵を決定し、公開鍵をユーザに供給する。ユーザが任意に決定した命令暗号鍵(暗号化設定情報)32は、RSA暗号化の公開鍵で暗号化されて暗号用メモリ30に記憶される。RSA暗号化された命令暗号鍵32は設定情報秘密鍵で復号され、復号された命令暗号鍵が書込レジスタ27に設定される。命令暗号鍵はRSA暗号化されているので解読は非常に困難である。この構成では、ユーザが設定情報秘密鍵を知ることはない。
【0026】
暗号処理部は、暗号化及び復号を、AES暗号化により行うことが望ましい。これは、鍵変換プログラム及び制御プログラムはデータ量が多く、高速の処理が要求されるためである。
【0027】
これに対して、命令暗号鍵は上記のようにRSA暗号化されていることが望ましい。これは、命令暗号鍵の暗号化と復号が別々に行なわれ、かつ高い秘匿性を要求され、暗号の対象が命令暗号鍵のみでデータ量が少ないためである。
【0028】
設定情報秘密鍵は、セキュアプロセッサ内に記憶しておくことも可能であるが、鍵変換プログラムに付加して、設定情報秘密鍵を含む鍵変換プログラムを固定暗号鍵で暗号化したデータを製造者からユーザに供給するようにしてもよい。設定情報復号鍵は暗号化されているので、やはりユーザは設定情報復号鍵を知ることはできない。ユーザは、設定情報復号鍵含む鍵変換プログラムをメモリに記憶する。セキュアプロセッサの起動時には、上記のように鍵変換プログラムが固定暗号鍵により復号されるので、そこから設定情報復号鍵を抽出して、RSA暗号化された命令暗号鍵の復号を行う。
【0029】
さらに、暗号用メモリ30にユーザが生成した電子署名を記憶するようにしてもよい。電子署名を検証するプログラムは、セキュアプロセッサ20内に設けても、暗号用メモリ30に設けてもよい。この構成においては、例えば命令暗号鍵で暗号化されたプログラムの作成者(ユーザ)が、あらかじめ署名公開(検証)鍵を作成して製造者に知らせておき、プログラムの作成者(ユーザ)が作成した電子署名を署名公開鍵で検証することによって、命令暗号鍵で暗号化されたプログラムの正当性を確認する機能を付加することができる。署名公開鍵は電子署名を検証するものであり、署名公開鍵が漏洩しても、その鍵を用いて正しい署名を生成することはできない。命令公開鍵が漏洩した場合、不正な鍵を用いて不正なプログラムを作成することができるが、署名検証により不正な実行を防止することができる。
【0030】
電子署名は、命令暗号鍵と同様の理由で、RSA方式により実施されていることが望ましい。
【0031】
署名公開鍵はユーザが独自に設定する暗号鍵であり、これをセキュアプロセッサに記憶するとユーザ別のセキュアプロセッサを製造する必要がり、望ましくない。そこで、署名公開鍵も、鍵変換プログラム中に固定鍵で暗号化して記憶することが望ましい。
【0032】
製造者からユーザに設定情報公開鍵を知らせ、ユーザから製造者に署名公開鍵を知らせ、製造者は、設定情報秘密鍵と署名公開鍵を含む鍵変換プログラムを固定暗号鍵で暗号化したデータを、ユーザに供給する。ユーザは、この暗号化されたデータに、設定情報公開鍵で暗号化された命令暗号鍵と、電子署名と、命令暗号鍵で暗号化した制御プログラムを組み合わせて、ROMデータを作成する。製造者からユーザに供給されるデータは暗号化されているので、ユーザが設定情報秘密鍵を知ることはできない。また、製造者が、ユーザが決定した署名秘密鍵を知ることもできない。
【0033】
電子署名を検証する構成で、デバッガの接続検出信号を暗号処理部に接続し、デバッガを検出した際に命令復号処理を停止する機能を備えてもよい。これにより、CPUコア21内では実行のために復号された命令が存在するという点を悪用し、その状態においてCPUコア21の情報を、デバッガを用いて取り出すという攻撃から、プログラムを守ることができる。
【0034】
さらに、命令暗号鍵の取り出し(復号)処理において、命令暗号鍵に加えて正規ユーザ認証コードの認証を含めてもよい。この構成においては、命令暗号鍵で暗号化されたプログラムの作成者だけが設定可能な命令暗号鍵に、正規ユーザ認証コードを加えた上で、RSA方式の公開鍵暗号化を行い、正規ユーザ認証コードをレジスタに記憶させることで、正規ユーザの判定機能を追加することができる。
【0035】
さらに、デバッガよりアクセス可能な、正規ユーザ認証コードと比較すべき値を格納可能なレジスタを備え、正規ユーザコードと比較し一致した際は、復号停止処理を解除する機能を備えてもよい。この構成においては、命令暗号鍵により暗号化されたプログラムの作成者のみに対し、デバッガ接続時であっても正しく使用できる環境を提供可能とすることができる。
【0036】
上記の構成において、プロセッサコア21に対し、暗号処理手段24を介さず接続され、かつ暗号用メモリ30の暗号化状態を判定するプログラムを記録した(内蔵)ROM23を備える構成としてもよい。この構成においては、内蔵ROM23に暗号化状態判定プログラムを備え、それにより暗号用ROM30が実装されているかを検証可能にすると共に、暗号化・非暗号化の両用途に共通のプロセッサ構成とすることができる。
【0037】
さらに、暗号用メモリ30は、フラッシュROM等の書き換え可能な不揮発性メモリであることが望ましく、暗号用メモリ30はセキュアプロセッサ20を内部または外部に設ける。この構成では、暗号化状態を外部メモリの特定領域に記載しておくことにより、暗号化プログラムか否かを判定出来るため、起動設定を外部データにより容易に変更可能とすることができる。
【0038】
さらに、固定暗号鍵を記憶する固定レジスタ26は、例えば固定暗号鍵を複数記憶可能で、複数鍵の中から任意の鍵を選択できる構成としてもよい。この構成では、複数の固定暗号鍵を任意番号により選択することができ、固定暗号鍵の漏洩時に、新規番号を選択することで、セキュアプロセッサの製造をそのまま続行できる。
【発明の効果】
【0039】
本発明によれば、セキュアプロセッサの暗号鍵を、書き換え不可能な固定暗号鍵から、その固定暗号鍵にて暗号化された鍵変換プログラムにより、ユーザが任意に決定した命令暗号鍵に変換するので、セキュアプロセッサの暗号鍵をユーザが独自に製造者に知らせることなく設定でき、暗号鍵の秘密保持が容易である。また、鍵変換プログラムや命令暗号鍵は外部のメモリに記憶すればよく、固定暗号鍵の任意鍵への変換と、暗号処理ハードウェアの単一ブロック化によってプロセッサに追加するモジュールを最小限にして、製造コストを押さえた上で、一般的なプロセッサに非常に付加しやすい構成で実現することが可能である。
【0040】
さらに、命令暗号鍵をRSA暗号化すれば、命令暗号鍵を外部から知ることが困難になり、命令暗号鍵の秘密保持が厳重になる。
【0041】
さらに、電子署名によるプログラムの認証を行い、不正を検出した際に命令暗号鍵を設定しないようにすることにより、セキュアプロセッサを含むシステムの安全性及び信頼性を一層向上することができる。
【発明を実施するための最良の形態】
【0042】
以下、図面を参照しながら本発明の実施の形態について説明する。
【0043】
図3は、本発明の第1実施例のセキュアプロセッサシステムの全体構成を示す図である。図示のように、システムは、セキュアプロセッサ20と、暗号用の外部ROM34と、で構成される。従来例と同様に、他にもRAMや入出力インターフェースなどが接続されるが、発明に直接関係しないので省略している。セキュアプロセッサ20は、CPUコア21と、内部バス22と、内蔵ROM23と、暗号処理部24と、暗号鍵保持部25と、メモリIF28と、を有する。暗号処理部24は、CPUコア21とメモリIFとの間の入出力を、暗号鍵保持部25から出力されるプロセッサ鍵で、暗号化処理及び復号処理を行う。暗号鍵保持部25は、書き換え不能でかつ外部からアクセス不能なROM26と、書き込み可能でかつ外部からアクセス不能な書込ROM27と、を有し、ROM26には固定(HW)暗号鍵が記憶されており、書込ROM27には起動後命令暗号鍵が書き込まれる。なお、実施例では、ROM26は、複数の固定暗号鍵を記憶する複数のレジスタで構成され、HW鍵番号により複数の固定暗号鍵の1つを選択する選択回路を有し、選択した固定暗号鍵を出力できるようになっているが、ROM26が1つの固定暗号鍵を記憶するようにしてもよい。起動時には、ROM26から選択した固定暗号鍵がプロセッサ鍵として暗号処理部24に出力され、書込ROM27に命令暗号鍵が書き込まれた後は、書込ROM27から命令暗号鍵がプロセッサ鍵として暗号処理部24に出力されるように構成されている。また、内蔵ROM23は、本実施例では必須の構成となっており、その内部については後述する。これらを1チップの半導体として構成する。
【0044】
外部ROM34は、例えば、書き換え可能なフラッシュROMなどで構成され、内部にROMヘッダ41と、鍵変換プログラム43と、RSA暗号化データ49と、制御プログラム54と、を記憶している。ROMヘッダ41はヘッダデータ42を有する。鍵変換プログラム43は、AES暗号化データ44を有する。AES暗号化データ44は、固定暗号鍵によりAES暗号化されている鍵変換プログラム45を有し、固定暗号鍵によりAES暗号化されている鍵変換プログラム45は、鍵変換プログラム本体46と、第2RSA公開鍵47と、第1RSA秘密鍵48と、を有する。RSA暗号化データ49は、第1RSA暗号化データ50と、第2RSA暗号化データ52と、を有し、第1RSA暗号化データ50は暗号化設定情報51を有し、第2RSA暗号化データ52は認証関連情報53を有する。第1RSA暗号化データ50と第2RSA暗号化データ52は、異なる暗号鍵で暗号化されている。制御プログラム54は、命令暗号鍵でAES暗号化されたAES暗号化データ55を有し、それにはAES暗号化制御プログラム56が含まれる。AES暗号化制御プログラム56は、制御プログラム本体57と、その他のユーザデータ58と、を有する。
【0045】
暗号処理部24では、暗号鍵保持部25から出力されるプロセッサ鍵で、出力方向のデータはAES暗号化を、入力方向のデータはAES復号処理をそれぞれ行う。このため、外部ROM34のデータは暗号化されている。本実施例では、セキュアプロセッサ20のチップの内部の固定暗号鍵はチップごとに個別ではなく共通のものを使用し製造コストの削減を図っている。そのため、プロセッサの使用者(ユーザ)ごとの鍵も同じとなってしまい、第三者からの解析は防ぐことができるものの、使用者間での秘密の保護はできないことになってしまう。そこで、本実施例では、チップの固定暗号鍵を、製造者が作成する鍵変換プログラムの暗号化だけに用いることとし、製造者以外への固定暗号鍵情報の流通を行わないこととした。
【0046】
図4は、暗号用(外部)ROM34に記憶するデータの作成手順を説明する図であり、図5はデータの流れを示す図である。図4では、上側が製造者の作業を、下側がユーザの作業を示す。まず、図4及び図5を使用して、外部ROM34に記憶するデータを説明する。
【0047】
セキュアプロセッサ20のチップ製造者は、複数の(HW)暗号鍵(D1)のうちから1つを選択して、チップごとに共通のAES暗号化用固定(HW)暗号鍵61を決定し、固定暗号鍵61は外部に漏洩しないように厳重に管理される。また、製造者は外部ROM34から読み取った命令鍵を書き込み可能ROM27に記憶する鍵変換プログラム本体46を用意する。さらに、製造者は、第1RSA秘密鍵63と第1RSA公開鍵64とで構成される設定情報暗号鍵62を決定し、第1RSA秘密鍵63は外部に漏洩しないように厳重に管理され、第1RSA公開鍵64はユーザに供給される。
【0048】
一方、ユーザは、AES暗号化用命令暗号鍵60を含む暗号化設定情報51と、制御プログラム53と、を生成する。さらに、ユーザは、第2RSA秘密鍵66と第2RSA公開(検証)鍵67とで構成される署名用鍵65を決定し、第2RSA秘密鍵66は外部に漏洩しないように厳重に管理され、第2RSA公開鍵67は製造者に供給される。
【0049】
製造者は、選択した固定暗号鍵に対応してCTRモードでのカウンタ値(D2)をプログラムサイズと同じだけ生成する。これをECBモードで暗号化し(D3)、暗号化カウンタデータ(D4)を生成する。そして、鍵変換プログラム本体46と、第1RSA秘密鍵63と、ユーザから供給された第1RSA公開鍵67と、を合わせてたデータを、暗号化ツール68において固定暗号鍵61でAES暗号化する。具体的には、これと鍵変換プログラム(D5)のデータとの排他的論理和(XOR)(D8)を算出することにより暗号化処理が完了し、暗号化された鍵変換プログラム43になる。鍵変換プログラム43はユーザごとに生成される。そして、使用した固定暗号鍵を指定するHW鍵番号に基づいて作成したROMヘッダ41と、暗号化ツール68でAES暗号化した鍵変換プログラム43と、を合わせて、プログラムデータとしてユーザに供給される。鍵変換プログラム43には、AES暗号化された形で第1RSA秘密鍵63と第2RSA公開鍵67とが含まれている。
【0050】
ユーザは、AES暗号化用命令暗号鍵60を含む暗号化設定情報51を、RSA暗号化部72において第1RSA公開鍵64でRSA暗号化してRSA暗号化された暗号化設定情報75を作成する。さらに、RSA暗号化された暗号化設定情報75をハッシュ処理したデータに対して、署名生成部73において第2RSA秘密鍵66でRSA暗号化して電子署名76を作成する。さらにAES暗号化部74において、これらの情報に含まれるカウンタデータ、命令暗号鍵を用いて、D14、D15、D16のように暗号化し、制御プログラムのデータD17とXOR(D18)することで、命令暗号鍵60でAES暗号化された制御プログラム77を作成する。以上の処理は暗号化データ作成ツール71を使用して行われる。以上のようにして作成したRSA暗号化された暗号化設定情報75、電子署名76及びAES暗号化された制御プログラム77は、製造者から供給されたROMヘッド41と鍵変換プログラム43を含むプログラムデータと合わされて、外部ROM34に書き込まれる。このようにして、外部ROMが完成する。
【0051】
図6は、製造者側とユーザ側での暗号用ROM34の作成手順を示すフローチャートである。製造者側では、あらかじめ複数の固定暗号鍵が記憶されたセキュアプロセッサを製造して、鍵変換プログラム本体46も作成されているとする。固定暗号鍵は、外部からの設定で選択できるようになっている。ステップS11で、設定情報暗号鍵ペア(第1RSA鍵ペア)62及びHW鍵選択番号を含むユーザ別パラメータを生成する。一方、ユーザ側では、ステップS21で、第2RSA鍵ペア65を含む署名検証用パラメータを作成する。
【0052】
ステップS12及びS22では、署名検証用の第2RSA公開鍵67がユーザ側から製造者側に供給され、製造者は第2RSA公開鍵67を入手する。すなわち、第2RSA公開鍵67の交換が行われる。
【0053】
ステップS13及びS23では、設定情報暗号化用の第1RSA公開鍵64が製造者側からユーザ側に供給され、ユーザが第1RSA公開鍵64を入手する。すなわち、第1RSA公開鍵64の交換が行われる。
【0054】
製造者側では、ステップS14で、鍵変換プログラム本体46、第1RSA秘密鍵63及び第2RSA公開鍵67を含むデータをAES暗号化した暗号化バイナリデータが生成される。この暗号化バイナリデータは、ユーザ側で解読することはできない。
【0055】
一方、ユーザ側では、ステップS24で、設定定情報を作成して製造者から入手した第1RSA公開鍵64でRSA暗号化し、制御プログラムを作成して命令暗号鍵でAES暗号化し、さらに電子署名を生成する。
【0056】
製造者は、ステップS15で、ステップS14において生成した暗号化バイナリデータをユーザに供給し、ユーザは暗号化バイナリデータを入手する。
【0057】
ユーザは、ステップS25で、入手した暗号化バイナリデータと、ステップS24で作成した暗号化した設定定情報、暗号化した制御プログラム及び電子署名と、を合わせて外部ROM34を作成する。
【0058】
ユーザは、製造者から供給されるセキュアプロセッサと、以上のようにして作成した外部ROM34と、を組合せ、他の要素を組み合わせてシステムを製造する。
【0059】
以上説明したように、ユーザから製造者に供給されるのは署名検証用の第2RSA公開鍵のみであり、製造者はユーザが独自に決定した命令暗号鍵を知ることはない。また、製造者からユーザに供給されるのは設定情報暗号化用の第1RSA公開鍵と、暗号化された暗号化バイナリデータのみであり、ユーザは製造者が独自に決定した固定鍵及び第1RSA秘密鍵を知ることはない。
【0060】
図6のようにして作成した暗号用の外部ROMを作成した後、ユーザ側の都合で制御プログラムを変更する必要が生じる場合がありえる。図7は、そのような外部ROMの更新作業を示すフローチャートである。製造者はこの作業に関わる必要はなく、更新作業はすべてユーザ側で行うことができる。
【0061】
ステップS31では、新しい制御プログラムを作成して命令暗号鍵でAES暗号化し、以前に作成した第1RSA公開鍵64でRSA暗号化し設定定情報及び電子署名と合わせ、ステップS32で以前に製造者から供給された暗号化バイナリデータを組み合わせて外部ROMを作成する。
【0062】
以上が、暗号用の外部メモリ34に記憶されている暗号データである。外部ROM34の記憶内容は3つの部分から構成され、各々暗号化されているため、第三者、およびプロセッサの使用者の相互間で解析が出来ない構造とすることができる。なお、ここでは、プロセッサ鍵(固定鍵及び命令暗号鍵)の暗号処理をAES方式、設定情報暗号化用及び署名認証用の公開鍵暗号方式をRSA方式に代表して記載しているが、同等の方式であればどのような方式を使用してもよい。使用者の作成した制御プログラムを暗号化する命令暗号鍵は、第1RSA公開鍵により暗号化されるが、RSA暗号方式では公開鍵は秘密(復号)鍵と異なるため、公開鍵をユーザに公開してもユーザが秘密鍵を知ることはなく、ユーザは定義した制御プログラム用の命令暗号鍵を自ら暗号化することができる。このことにより、ユーザは、重要機密情報である命令暗号鍵を製造者に明示的に通知することなくプログラムの暗号化を実施できる。
【0063】
次に、このような暗号データを処理するセキュアプロセッサ20の内部構成を説明する。まず、セキュアプロセッサ20の基本的な動作を説明する。セキュアプロセッサ20は、チップ内のROM26に記憶された固定暗号鍵61で暗号化された鍵変換プログラム43を、チップ内固定暗号鍵が供給される暗号処理部24により復号しながら実行し、さらに、鍵変換プログラム43内では、第1RSA公開鍵64にて暗号化された制御プログラム用の命令暗号鍵60を取り出し、書込可能ROM27に設定する。これにより、暗号処理部24は、命令暗号鍵60で暗号化及び復号化を行うように設定される。このようにして、セキュアプロセッサ20のユーザが作成した制御プログラム54が正しく復号されるべく鍵変換が行われたことになる。鍵変換後は、暗号処理部24にて、暗号化された制御プログラム54が復号されることにより、正しい実行が可能となる。
【0064】
図8は、暗号処理部24の内部構成を示す。暗号処理部24は、RSA公開鍵処理部81と、プロセッサ鍵処理部83の2つから構成される。RSA公開鍵処理部81は、前述のRSA処理の高速化を図るための公開鍵演算器82が実装されるものであり、本実施例の構成要件において必須ではないが、既存システムへの容易な追加を可能とする観点から備えられる。プロセッサ鍵処理部83は、CPUコア21側のインタフェースからのコマンドが自モジュール(プロセッサ鍵処理部83)向けであるかどうかを判定するバス判定部85、暗号機能がオフである場合のバイパス制御部84、自モジュール向けのコマンドが、暗号化対象かどうかを判定する暗号化判定部86、プロセッサ鍵でのAES鍵暗号化または復号処理を行う共通鍵演算部87、共通鍵演算部87への鍵を供給する暗号鍵保持部25、及び暗号化および復号処理と終了判定を行う終了判定・復号処理部88、のいくつかの小ブロックから構成される。
【0065】
次に、暗号処理部24におけるデータの流れを説明する。CPUコア21から外部ROM34の読み取り(リード)を行う場合及び復号処理を行う場合は、あらかじめプロセッサ鍵情報の設定を行う。そのため、暗号鍵保持部25に対し、前述の鍵変換プログラムを実行する場合は、設定は不要、ないしいくつかの鍵からどの鍵を選択するかを指定するHW鍵番号を設定しておく。同様に暗号化判定部86において、対象アドレスが暗号化されているかの情報を暗号化判定部86に設定する。これらの設定後、CPUコア21から、外部ROM34に対しリードコマンドが、内部バス22を介して暗号処理部24に送出される。バス判定部85は暗号化対象であるかどうかの判定指示、鍵設定指示、をそれぞれ暗号化判定部86及び暗号鍵保持部25に送出し、各ブロックは共通鍵演算器87に対し暗号化域判定結果と鍵情報を送出する。共通鍵演算器87はそれらの情報とバス判定部85からの起動信号を元に、アドレス情報を元にした情報に対し復号処理を実施する。復号処理終了後、演算結果が終了判定・復号処理部88に送出される。並行して、バイパス制御部84、外部アドレス・コマンドバスを介して外部ROM34に対しリードコマンドが発行される。このコマンドの結果、一定時間の後外部ROM34よりデータを受信するが、終了判定・復号処理部88において外部ROM34のデータ、プロセッサ鍵演算処理の両方の処理を待ち合わせた後、演算し、その結果を処理データバス、内部データバスを介してCPUコア21に返す。なお、終了判定・復号処理部88における演算については、CTRモードを使用している。
【0066】
図9は、暗号化判定部86及び暗号鍵保持部88の構成を示す図である。図示のように、外部ROM34の暗号データは、メモリ復号回路90でプロセッサ鍵により復号されてCPUコア21に供給される。固定暗号鍵保持部100は、図4のROM26に相当する。固定暗号鍵保持部100は、複数の固定暗号鍵を記憶しており、HW鍵番号レジスタ99に保持されたHW鍵番号により複数の固定暗号鍵の1つが選択されて出力されるように構成されている。HW鍵番号は、セキュアプロセッサ20の外部から入出力端子を介して設定するか、またはチップに後処理を施すことにより設定する。命令暗号鍵保持部101は、図4の書込ROM27に相当する。命令暗号鍵保持部101は、正当な鍵変換プログラム43で署名認証が行われた時に、暗号化設定情報に含まれる命令暗号鍵が復号されて書き込まれる。鍵復号鍵設定部102は、命令暗号鍵保持部101に命令暗号鍵が書き込まれる前には、固定暗号鍵保持部100から出力される固定暗号値を保持してプロセッサ鍵としてメモリ復号回路90に出力し、命令暗号鍵保持部101に命令暗号鍵が書き込まれた後には、命令暗号鍵をプロセッサ鍵としてメモリ復号回路90に出力する。言い換えれば、命令暗号鍵が設定された時点で固定暗号鍵は無効となる。もし、固定暗号鍵保持部100が1個の固定暗号鍵を保持する時には、HW鍵番号保持レジスタ99は必要ない。
【0067】
暗号化判定部86は、復号起動レジスタ91と、デバッガ検出回路92と、正規ユーザ認証データ保持部93と、認証比較値保持部94と、正規ユーザ認証データ保持部93と認証比較値保持部94の値を比較する比較器95と、スクランブル解除レジスタ96と、暗号化域指定レジスタ97と、復号動作制御部98と、を有する。この部分については後述する。
【0068】
図10は、本実施例のセキュアプロセッサシステムにおける動作を示すフローチャートである。図5に示したデータの流れと併せて動作を説明する。なお、図10のフローチャートにおいて、左側の実行プログラムの項が、その時点における実行プログラムの記録位置を示している。
【0069】
ステップS41でのパワーオンにより、内蔵ROM23に記録されている起動プログラムが処理される。ステップS42で、内蔵ROM23のプログラムは、まず外部ROM34のヘッダデータ42を読み込む。ヘッダデータ42は、図5のROMヘッダ41に記載されている通り、暗号化ROMであるかどうかの情報、暗号化ROMであった場合の各データの配置情報が平文で記録されている。ステップS43で、読み込まれたヘッダデータが、平文ROMであったならばステップS44に進んで暗号化に関する処理は行われず、通常の起動を行う。暗号化ROMであった場合はステップS44に進み、ROMヘッダを元にブートパラメータの設定を行う。具体的にはROMヘッダ41に示す暗号鍵番号のHW鍵番号保持レジスタ99(図8)への設定と、各アドレス情報の保持である。これは、図5におけるデータ41の設定に対応する。
【0070】
続いて、ステップS45で、メモリ復号機能を、図9の復号起動レジスタ91に設定することで起動する。これで、外部ROM34のデータが復号しながらリード可能な状態となる。その後、鍵変換プログラム43に分岐する。鍵変換プログラム43はチップ製造元により作成されるプログラムで、前述の暗号鍵番号で指定される固定暗号鍵で暗号化されている。分岐すると、鍵変換の処理を開始する。鍵変換処理は、まずステップS46で、RSA暗号化データ部を読み込み、復号する。RSA暗号化データ部は、ハードウェア設定関連情報をRSA方式により暗号化した暗号化設定情報51と、その情報に対し電子署名を施した認証関連情報53の2つから構成されている。署名検証のための検証鍵(第2RSA公開鍵)と、復号のためのRSA秘密鍵(第1RSA秘密鍵)は、前述のように、あらかじめ鍵変換プログラム43内に保持しておく。
【0071】
ステップS45で、読み込まれたRSA暗号化データ部の署名部分を、まず検証を行う。ステップS46で検証結果を判定し、この署名が改竄されていると判定できた場合、ステップS47に進んで、エラー処理、すなわち実行停止処理を行う。改竄されていない場合は、ステップS48で外部ROM34内のRSA暗号化データ部を読み取り、ステップS49でRSA暗号化データ部から暗号化設定情報51を復号する。暗号化設定情報51は、図5のD9に示すように正規ユーザ認証コード、暗号化領域指定、暗号化カウンタ、命令暗号鍵より構成されており、これらの情報を元に、ハードウェアによる逆変換処理D10が行われた後、各データがハードウェアに反映される。なお、ROMデータ作成時には、図5でのスクランブル処理D10、RSA暗号化処理D11を経て暗号化設定情報51が生成されている。復号された暗号化設定情報51は、図9のスクランブル解除レジスタ96に一括して設定する。この処理が、図10のステップS50のユーザデータ更新処理に相当する。ここでの処理で、命令暗号鍵が保持部101に設定され、プロセッサ鍵が変更されたのであるが、即座に復号鍵が変更されたのでは、暗号化状態で実行中のプログラムの正しい復号が出来ないことになる。本実施例では、図9の復号起動レジスタ91を再起動したタイミングで、復号処理の鍵が更新されることとしている。フローは安全のため、一度内蔵ROM34に戻り、ステップS51で復号機能の起動を行っている。ここまでの状態で、ユーザの制御プログラム用の命令暗号鍵が正しくハードウェア(書込ROM27)に設定され、復号可能な状態となっている。あとはステップS52で、ユーザプログラムに分岐して、通常のプログラムと全く同様に実行することが可能である。また、ユーザプログラム実行時には、製造者が作成した鍵変換プログラムを正しく読み込むことは出来ず、各秘密鍵の安全性も維持できる。
【0072】
図9に戻り、他の機能について説明する。図9のRSA復号結果をスクランブル解除レジスタ96に設定した際、命令暗号鍵以外に暗号化域指定及び認証比較値94も同時にレジスタ94、97に設定される。暗号化域指定は、一定単位のアドレスごとに暗号化するかどうかの指定を行うことが出来る機能である。認証比較値は、正規ユーザであるかの認証に用いる。RSA暗号化データは、図5のD5=D6、D5=D7の各組合せで定義され、前述のように製造者は暗号化設定情報の暗号化を行うための第1RSA鍵ペアを作成し、ユーザは署名に関する第2RSA鍵ペアを作成したうえで、それぞれの公開鍵相当データを交換する。この鍵交換により、正しいユーザが正しくデータを作成した場合のみ正常に実行することができる。認証比較値は、これらの情報により暗号化されているため、制御プログラムを暗号化する際に定義した情報を知らない限り知り得ない情報であると言える。暗号判定部86は、図9のように、ソフトウェアから書き込み可能な正規ユーザ認証レジスタ93と、鍵変換プログラムによってのみ書き込まれる認証比較値レジスタ94の認証比較値を常時比較し、正規ユーザか否かを判定している。この情報は、図11の表に基づいた処理に使用される。パターン1の場合、復号処理が起動されておらず、暗号化プログラムは動作していないため、特段の制御は必要ない。パターン2では、復号処理は起動されているものの、デバッガを検出していないため、正規ユーザの認証を問わず動作する。これは、通常の運用状態に相当する。パターン3は、パターン2の状態で、デバッガを検出した場合である。正規ユーザ認証のレジスタに、適切な値が設定されないままデバッガが接続されると、復号処理を即座に停止するため正しい実行はできない。正規ユーザはパターン4の如く、事前に正規ユーザコードをレジスタ93に設定した上でデバッガを接続する。ユーザ認証が正しく行われていれば、デバッガ検出時でも復号処理は継続する。これにより、暗号化命令を復号しながら動作するプロセッサにおける解析を困難とすることができる。
【0073】
本発明により、既存システムに対する追加が非常に容易な形で、動作の安全性を保証出来るセキュアプロセッサの提供が可能となる。
(付記1)
命令コードを実行するコアと、プロセッサ鍵を保持する暗号鍵保持部と、前記コアに入出力されるデータを、前記プロセッサ鍵で暗号化または復号化する暗号処理部と、を有するセキュアプロセッサと、
前記コアに入出力されるデータを記憶するメモリと、を備えるセキュアプロセッサシステムであって、
前記セキュアプロセッサの前記暗号鍵保持部は、
書き換え及び読み取り不能な固定暗号鍵を保持する固定レジスタと、
入力される命令暗号鍵が格納され、格納された前記命令暗号鍵を読み取り不能に保持する書込レジスタと、を備え、
前記暗号鍵保持部は、当該プロセッサの立ち上げ時には前記固定レジスタに保持された前記固定暗号鍵を前記プロセッサ鍵として出力し、前記書込レジスタに前記命令暗号鍵が書き込まれた後は、前記書込レジスタに保持された前記命令暗号鍵を前記プロセッサ鍵として出力することを特徴とするセキュアプロセッサシステム。
(付記2)
前記セキュアプロセッサは、前記コアに前記暗号処理部を介さず接続され、前記メモリに記憶されたデータの暗号化状態を判定するプログラムを記録したROM(読み出し専用メモリ)をさらに備え、暗号化状態の判定結果に応じて起動設定を変更することを特徴とする付記1に記載のセキュアプロセッサシステム。
(付記3)
前記メモリは、平文または暗号化されたプログラムと、該プログラムの識別情報を記憶していることを特徴とする付記1に記載のセキュアプロセッサシステム。
(付記4)
前記メモリは、前記命令暗号鍵を前記書込レジスタに格納する鍵変換プログラムを、前記固定暗号鍵で暗号化した形で記憶することを特徴とする付記3に記載のセキュアプロセッサシステム。
(付記5)
前記メモリは、前記命令暗号鍵を設定情報公開鍵で暗号化した形で記憶しており、
前記セキュアプロセッサは、前記設定情報公開鍵で暗号化した前記命令暗号鍵を復号するための設定情報秘密鍵を、書き換え及び外部アクセス不能に記憶していることを特徴とする付記4に記載のセキュアプロセッサシステム。
(付記6)
前記メモリは、前記命令暗号鍵を設定情報公開鍵で暗号化した形で記憶しており、
前記鍵変換プログラムは、前記設定情報公開鍵で暗号化した前記命令暗号鍵を復号するための設定情報秘密鍵を記憶していることを特徴とする付記4に記載のセキュアプロセッサシステム。
(付記7)
前記メモリは、当該セキュアプロセッサで実行する処理プログラムを、前記命令暗号鍵で暗号化した形で記憶していることを特徴とする付記6に記載のセキュアプロセッサシステム。
(付記8)
前記暗号処理部は、暗号化及び復号をAES暗号方式で行い、
前記命令暗号鍵の暗号化は、RSA方式で行われることを特徴とする付記6に記載のセキュアプロセッサシステム。
(付記9)
前記メモリは、署名用秘密鍵で暗号化した電子署名を記憶しており、
前記鍵変換プログラムは、前記電子署名を検証するための署名公開鍵を記憶していることを特徴とする付記6に記載のセキュアプロセッサシステム。
(付記10)
前記メモリは、署名用秘密鍵で暗号化した電子署名を記憶しており、
前記鍵変換プログラムは、前記電子署名を検証するための署名公開鍵を記憶しており、
前記セキュアプロセッサは、前記署名公開鍵での前記電子署名の検証が成功した時に前記命令暗号鍵を前記書込レジスタに書き込むプログラムを、前記固定暗号鍵により暗号化された形で記憶していることを特徴とする付記6に記載のセキュアプロセッサシステム。
(付記11)
前記電子署名は、RSA方式で作成されることを特徴とする付記9または10に記載のセキュアプロセッサシステム。
(付記12)
前記セキュアプロセッサは、デバッガの接続検出信号を暗号処理部に接続し、デバッガの検出時は前記プロセッサ鍵での復号処理を停止することを特徴とする付記9または10に記載のセキュアプロセッサシステム。
(付記13)
前記セキュアプロセッサは、デバッガよりアクセス可能な、ユーザ認証コードを記憶するレジスタと、
前記命令暗号鍵と前記ユーザ認証コードを比較部と、をさらに備え、
一致した場合はデバッガ接続時の復号停止処理を解除することを特徴とする付記12に記載のセキュアプロセッサシステム。
(付記14)
前記セキュアプロセッサの前記暗号鍵保持部は、前記固定レジスタを複数備え、前記複数の固定レジスタの1つを選択して前記プロセッサ鍵として出力することを特徴とする付記1から13のいずれか1項に記載のセキュアプロセッサシステム。
(付記15)
前記メモリは、当該セキュアプロセッサと同じチップの内部に設けられていることを特徴とする付記1から14のいずれか1項に記載のセキュアプロセッサシステム。
(付記16)
前記メモリは、当該セキュアプロセッサのチップの外部に設けられていることを特徴とする付記1から14のいずれか1項に記載のセキュアプロセッサシステム。
(付記17)
前記メモリは、少なくとも一部に書き換え可能な不揮発性メモリを有することを特徴とする付記1から16のいずれか1項に記載のセキュアプロセッサシステム。
(付記18)
命令コードを実行するコアと、プロセッサ鍵を保持する暗号鍵保持部と、前記コアに入出力されるデータを、前記プロセッサ鍵で暗号化または復号化する暗号処理部と、を有するセキュアプロセッサと、前記コアに入出力されるデータを記憶するメモリと、を備えるセキュアプロセッサシステムであって、前記セキュアプロセッサの前記暗号鍵保持部は、書き換え及び読み取り不能な固定暗号鍵を保持する固定レジスタと、入力される命令暗号鍵が格納され、格納された前記命令暗号鍵を読み取り不能に保持する書込レジスタと、を備え、前記暗号鍵保持部は、当該プロセッサの立ち上げ時には前記固定レジスタに保持された前記固定暗号鍵を前記プロセッサ鍵として出力し、前記書込レジスタに前記命令暗号鍵が書き込まれた後は、前記書込レジスタに保持された前記命令暗号鍵を前記プロセッサ鍵として出力し、前記メモリは、前記命令暗号鍵を前記書込レジスタに格納する鍵変換プログラムを、前記固定暗号鍵で暗号化した形で記憶し、前記命令暗号鍵を設定情報公開鍵で暗号化した形で記憶しており、前記鍵変換プログラムは、前記設定情報公開鍵で暗号化した前記命令暗号鍵を復号するための設定情報秘密鍵を記憶しており、前記メモリは、署名用秘密鍵で暗号化した電子署名を記憶しており、前記鍵変換プログラムは、前記電子署名を検証するための署名公開鍵を記憶しており、前記セキュアプロセッサは、前記署名公開鍵での前記電子署名の検証が成功した時に前記命令暗号鍵を前記書込レジスタに書き込むプログラムを、前記固定暗号鍵により暗号化された形で記憶しているセキュアプロセッサシステムの構築方法であって、
前記設定情報公開鍵は、前記セキュアプロセッサの製造者から前記セキュアプロセッサのユーザに通知され、
前記署名公開鍵は、前記セキュアプロセッサのユーザから製造者に通知されることを特徴とするセキュアプロセッサシステムの構築方法。
(付記19)
命令コードを実行するコアと、
プロセッサ鍵を保持する暗号鍵保持部と、
前記コアとメモリとの間で入出力されるデータを、前記プロセッサ鍵で暗号化または復号化する暗号処理部と、を備えるセキュアプロセッサであって、
前記暗号鍵保持部は、
書き換え不能な固定暗号鍵を保持する固定レジスタと、
入力される命令暗号鍵が格納され、格納された前記命令暗号鍵を読み取り不能に保持する書込レジスタと、を備え、
前記暗号鍵保持部は、当該プロセッサの立ち上げ時には前記固定レジスタに保持された前記固定暗号鍵を前記プロセッサ鍵として出力し、前記書込レジスタに前記命令暗号鍵が書き込まれた後は、前記書込レジスタに保持された前記命令暗号鍵を前記プロセッサ鍵として出力することを特徴とするセキュアプロセッサ。
(付記20)
前記コアに前記暗号処理部を介さず接続され、前記メモリに記憶されたデータの暗号化状態を判定するプログラムを記録したROM(読み出し専用メモリ)をさらに備え、暗号化状態の判定結果に応じて起動設定を変更することを特徴とする付記19に記載のセキュアプロセッサ。
(付記21)
デバッガの接続検出信号を暗号処理部に接続し、デバッガの検出時は前記プロセッサ鍵での復号処理を停止することを特徴とする付記19に記載のセキュアプロセッサ。
(付記22)
デバッガよりアクセス可能な、ユーザ認証コードを記憶するレジスタと、
前記命令暗号鍵と前記ユーザ認証コードを比較部と、をさらに備え、
一致した場合はデバッガ接続時の復号停止処理を解除することを特徴とする付記21に記載のセキュアプロセッサ。
(付記23)
前記暗号鍵保持部は、複数の前記固定レジスタを備え、前記複数の固定レジスタの1つを選択して前記プロセッサ鍵として出力することを特徴とする付記19から22のいずれか1項に記載のセキュアプロセッサ。
(付記24)
命令コードを実行するコアと、プロセッサ鍵を保持する暗号鍵保持部と、前記コアに入出力されるデータを、前記プロセッサ鍵で暗号化または復号化する暗号処理部と、設定情報秘密鍵を記憶する設定情報秘密鍵記憶部と、を有し、前記暗号鍵保持部は、書き換え及び外部読み取り不能な固定暗号鍵を保持する固定レジスタと、入力される命令暗号鍵が格納され、格納された前記命令暗号鍵を外部読み取り不能に保持する書込レジスタと、を有し、前記暗号鍵保持部は、当該プロセッサの立ち上げ時には前記固定レジスタに保持された前記固定暗号鍵を前記プロセッサ鍵として出力し、前記書込レジスタに前記命令暗号鍵が書き込まれた後は、前記書込レジスタに保持された前記命令暗号鍵を前記プロセッサ鍵として出力するセキュアプロセッサと、
前記コアに入出力されるデータを記憶するメモリと、を備えるセキュアプロセッサシステムの制御方法であって、
起動時に、前記メモリに記憶された、前記固定暗号鍵で暗号化された前記命令暗号鍵を前記書込レジスタに格納する鍵変換プログラムを、前記暗号処理部で復号し、
前記メモリに記憶され、設定情報公開鍵で暗号化した前記命令暗号鍵を、前記設定情報秘密鍵記憶部に記憶された前記設定情報秘密鍵で復号して前記書込レジスタに格納し、
前記暗号鍵保持部が前記命令暗号鍵で暗号化または復号化するように設定する、ことを特徴とするセキュアプロセッサシステムの制御方法。
(付記25)
前記暗号鍵保持部は、AES暗号方式で処理を行い、
前記命令暗号鍵の暗号化は、RSA方式で行われることを特徴とする付記24に記載のセキュアプロセッサシステムの制御方法。
(付記26)
前記設定情報秘密鍵は、前記鍵変換プログラムに前記固定暗号鍵で暗号化されて含まれており、復号した前記鍵変換プログラムから抽出されて前記設定情報秘密鍵保持部に保持されることを特徴とする付記24に記載のセキュアプロセッサシステムの制御方法。
(付記27)
前記メモリに記憶されたデータが改ざんされているかを判定し、判定結果に応じて起動設定を変更することを特徴とする付記24に記載のセキュアプロセッサシステムの制御方法。
(付記28)
前記鍵変換プログラムを復号した後、復号した前記鍵変換プログラムから、署名用秘密鍵で暗号化した電子署名を復号するための署名公開鍵を抽出し、
前記メモリに記憶された、前記電子署名を前記署名公開鍵で復号し、
復号した署名情報と、復号した前記命令暗号鍵を含む暗号化設定情報とを比較して、前記電子署名の検証を行い、
前記電子署名の検証が成功した時に前記命令暗号鍵を前記書込レジスタに書き込むことを特徴とする付記24に記載のセキュアプロセッサシステムの制御方法。
(付記29)
前記電子署名は、RSA方式で作成されることを特徴とする付記28に記載のセキュアプロセッサシステムの制御方法。
【産業上の利用可能性】
【0074】
本発明は、CPUコアとの間で入出力するデータを暗号化したセキュアプロセッサに適用可能である。
【図面の簡単な説明】
【0075】
【図1】従来のプロセッサ及びセキュアプロセッサの構成を示す図である。
【図2】本発明のセキュアプロセッサシステムの原理を説明する図である。
【図3】実施例のセキュアプロセッサシステムの構成を示す図である。
【図4】暗号用ROMの作成を説明する図である。
【図5】暗号用ROMの作成におけるデータの流れを示す図である。
【図6】暗号用ROMの作成手順を示すフローチャートである。
【図7】暗号用ROMの更新手順を示すフローチャートである。
【図8】暗号処理部の構成を示す図である。
【図9】暗号化判定部及び暗号鍵保持部の構成を示す図である。
【図10】実施例のセキュアプロセッサにおける動作を示すフローチャートである。
【図11】デバッガ検出と正規ユーザ認証の関係を示す図である。
【符号の説明】
【0076】
20 セキュアプロセッサ
21 CPUコア
22 内部バス
23 内蔵ROM
24 暗号処理部
25 暗号鍵保持部
26 ROM
27 書込ROM
28 メモリインターフェース
30 暗号用メモリ
31 固定鍵暗号化(鍵変換プログラム)
32 命令暗号鍵(暗号化設定情報)
33 命令鍵暗号化データ(処理プログラム)

【特許請求の範囲】
【請求項1】
命令コードを実行するコアと、プロセッサ鍵を保持する暗号鍵保持部と、前記コアに入出力されるデータを、前記プロセッサ鍵で暗号化または復号化する暗号処理部と、を有するセキュアプロセッサと、
前記コアに入出力されるデータを記憶するメモリと、を備えるセキュアプロセッサシステムであって、
前記セキュアプロセッサの前記暗号鍵保持部は、
書き換え及び読み取り不能な固定暗号鍵を保持する固定レジスタと、
入力される命令暗号鍵が格納され、格納された前記命令暗号鍵を読み取り不能に保持する書込レジスタと、を備え、
前記暗号鍵保持部は、当該プロセッサの立ち上げ時には前記固定レジスタに保持された前記固定暗号鍵を前記プロセッサ鍵として出力し、前記書込レジスタに前記命令暗号鍵が書き込まれた後は、前記書込レジスタに保持された前記命令暗号鍵を前記プロセッサ鍵として出力することを特徴とするセキュアプロセッサシステム。
【請求項2】
前記メモリは、前記命令暗号鍵を前記書込レジスタに格納する鍵変換プログラムを、前記固定暗号鍵で暗号化した形で記憶することを特徴とする請求項1に記載のセキュアプロセッサシステム。
【請求項3】
前記メモリは、前記命令暗号鍵を設定情報公開鍵で暗号化した形で記憶しており、
前記鍵変換プログラムは、前記設定情報公開鍵で暗号化した前記命令暗号鍵を復号するための設定情報秘密鍵を記憶していることを特徴とする請求項2に記載のセキュアプロセッサシステム。
【請求項4】
前記メモリは、当該セキュアプロセッサで実行する処理プログラムを、前記命令暗号鍵で暗号化した形で記憶していることを特徴とする請求項3に記載のセキュアプロセッサシステム。
【請求項5】
前記暗号処理部は、暗号化及び復号をAES暗号方式で行い、
前記命令暗号鍵の暗号化は、RSA方式で行われることを特徴とする請求項3に記載のセキュアプロセッサシステム。
【請求項6】
前記メモリは、署名用秘密鍵で暗号化した電子署名を記憶しており、
前記鍵変換プログラムは、前記電子署名を検証するための署名公開鍵を記憶していることを特徴とする請求項3に記載のセキュアプロセッサシステム。
【請求項7】
前記メモリは、署名用秘密鍵で暗号化した電子署名を記憶しており、
前記鍵変換プログラムは、前記電子署名を検証するための署名公開鍵を記憶しており、
前記セキュアプロセッサは、前記署名公開鍵での前記電子署名の検証が成功した時に前記命令暗号鍵を前記書込レジスタに書き込むプログラムを、前記固定暗号鍵により暗号化された形で記憶していることを特徴とする請求項3に記載のセキュアプロセッサシステム。
【請求項8】
命令コードを実行するコアと、プロセッサ鍵を保持する暗号鍵保持部と、前記コアに入出力されるデータを、前記プロセッサ鍵で暗号化または復号化する暗号処理部と、を有するセキュアプロセッサと、前記コアに入出力されるデータを記憶するメモリと、を備えるセキュアプロセッサシステムであって、前記セキュアプロセッサの前記暗号鍵保持部は、書き換え及び読み取り不能な固定暗号鍵を保持する固定レジスタと、入力される命令暗号鍵が格納され、格納された前記命令暗号鍵を読み取り不能に保持する書込レジスタと、を備え、前記暗号鍵保持部は、当該プロセッサの立ち上げ時には前記固定レジスタに保持された前記固定暗号鍵を前記プロセッサ鍵として出力し、前記書込レジスタに前記命令暗号鍵が書き込まれた後は、前記書込レジスタに保持された前記命令暗号鍵を前記プロセッサ鍵として出力し、前記メモリは、前記命令暗号鍵を前記書込レジスタに格納する鍵変換プログラムを、前記固定暗号鍵で暗号化した形で記憶し、前記命令暗号鍵を設定情報公開鍵で暗号化した形で記憶しており、前記鍵変換プログラムは、前記設定情報公開鍵で暗号化した前記命令暗号鍵を復号するための設定情報秘密鍵を記憶しており、前記メモリは、署名用秘密鍵で暗号化した電子署名を記憶しており、前記鍵変換プログラムは、前記電子署名を検証するための署名公開鍵を記憶しており、前記セキュアプロセッサは、前記署名公開鍵での前記電子署名の検証が成功した時に前記命令暗号鍵を前記書込レジスタに書き込むプログラムを、前記固定暗号鍵により暗号化された形で記憶しているセキュアプロセッサシステムの構築方法であって、
前記設定情報公開鍵は、前記セキュアプロセッサの製造者から前記セキュアプロセッサのユーザに通知され、
前記署名公開鍵は、前記セキュアプロセッサのユーザから製造者に通知されることを特徴とするセキュアプロセッサシステムの構築方法。
【請求項9】
命令コードを実行するコアと、
プロセッサ鍵を保持する暗号鍵保持部と、
前記コアとメモリとの間で入出力されるデータを、前記プロセッサ鍵で暗号化または復号化する暗号処理部と、を備えるセキュアプロセッサであって、
前記暗号鍵保持部は、
書き換え不能な固定暗号鍵を保持する固定レジスタと、
入力される命令暗号鍵が格納され、格納された前記命令暗号鍵を読み取り不能に保持する書込レジスタと、を備え、
前記暗号鍵保持部は、当該プロセッサの立ち上げ時には前記固定レジスタに保持された前記固定暗号鍵を前記プロセッサ鍵として出力し、前記書込レジスタに前記命令暗号鍵が書き込まれた後は、前記書込レジスタに保持された前記命令暗号鍵を前記プロセッサ鍵として出力することを特徴とするセキュアプロセッサ。
【請求項10】
命令コードを実行するコアと、プロセッサ鍵を保持する暗号鍵保持部と、前記コアに入出力されるデータを、前記プロセッサ鍵で暗号化または復号化する暗号処理部と、設定情報秘密鍵を記憶する設定情報秘密鍵記憶部と、を有し、前記暗号鍵保持部は、書き換え及び外部読み取り不能な固定暗号鍵を保持する固定レジスタと、入力される命令暗号鍵が格納され、格納された前記命令暗号鍵を外部読み取り不能に保持する書込レジスタと、を有し、前記暗号鍵保持部は、当該プロセッサの立ち上げ時には前記固定レジスタに保持された前記固定暗号鍵を前記プロセッサ鍵として出力し、前記書込レジスタに前記命令暗号鍵が書き込まれた後は、前記書込レジスタに保持された前記命令暗号鍵を前記プロセッサ鍵として出力するセキュアプロセッサと、
前記コアに入出力されるデータを記憶するメモリと、を備えるセキュアプロセッサシステムの制御方法であって、
起動時に、前記メモリに記憶された、前記固定暗号鍵で暗号化された前記命令暗号鍵を前記書込レジスタに格納する鍵変換プログラムを、前記暗号処理部で復号し、
前記メモリに記憶され、設定情報公開鍵で暗号化した前記命令暗号鍵を、前記設定情報秘密鍵記憶部に記憶された前記設定情報秘密鍵で復号して前記書込レジスタに格納し、
前記暗号鍵保持部が前記命令暗号鍵で暗号化または復号化するように設定する、ことを特徴とするセキュアプロセッサシステムの制御方法。

【図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


【公開番号】特開2008−210225(P2008−210225A)
【公開日】平成20年9月11日(2008.9.11)
【国際特許分類】
【出願番号】特願2007−47178(P2007−47178)
【出願日】平成19年2月27日(2007.2.27)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】