JP4795812B2 - セキュアプロセッサ - Google Patents

セキュアプロセッサ Download PDF

Info

Publication number
JP4795812B2
JP4795812B2 JP2006046051A JP2006046051A JP4795812B2 JP 4795812 B2 JP4795812 B2 JP 4795812B2 JP 2006046051 A JP2006046051 A JP 2006046051A JP 2006046051 A JP2006046051 A JP 2006046051A JP 4795812 B2 JP4795812 B2 JP 4795812B2
Authority
JP
Japan
Prior art keywords
key
secure
encryption key
tlb
entry
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006046051A
Other languages
English (en)
Other versions
JP2007226481A (ja
Inventor
誠司 後藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Semiconductor Ltd
Original Assignee
Fujitsu Semiconductor Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Semiconductor Ltd filed Critical Fujitsu Semiconductor Ltd
Priority to JP2006046051A priority Critical patent/JP4795812B2/ja
Priority to US11/456,437 priority patent/US8468364B2/en
Priority to EP06253618.0A priority patent/EP1826701B1/en
Priority to CN200610103979.0A priority patent/CN101026455B/zh
Publication of JP2007226481A publication Critical patent/JP2007226481A/ja
Application granted granted Critical
Publication of JP4795812B2 publication Critical patent/JP4795812B2/ja
Priority to US13/790,535 priority patent/US8788840B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits

Description

本発明は、プロセッサに係り、さらに詳しくは不正なコードの実行を防止可能なセキュアプロセッサに関する。
近年、コンピュータや携帯情報端末の普及が高まるにつれ、それらの機器で実行されるプログラムに関するセキュリティの重要性が高まっている。
プロセッサを実装する機器では、各種機能をプロセッサによるプログラム実行により実現でき、ハードウェアだけで構成される機器よりも動作の柔軟性が高く、多種類の機能を実装することが容易である。これらの優れた特性のために、プロセッサはパーソナルコンピュータなどの各種コンピュータや、PDA(Personal Digital Assistant)、携帯電話、情報家電などの各種情報機器に実装されるようになっている。
また、ネットワークの進展につれ、これらの情報機器はネットワークに接続されて使用され、ネットワークを介してメールやデータの送受信や、プログラムのダウンロードをする機会が増加している。このため、ネットワークなどを介するコンピュータウィルスの感染や、不正アクセスにさらされる危険性が増大している。
プロセッサを備えた情報機器のセキュリティを強固とするためには、悪意のあるコードや、所望しないコードをプロセッサで動作させないようにする必要がある。しかしながら、現状では、悪意のあるコードを動作させないようにするプロセッサ側の対策があまり十分ではなく、安全なソフトウェア実行環境が提供されていない。
このため、最近、セキュアプロセッサが研究されている。セキュアプロセッサは、プロセッサの外側で扱われるデータには暗号化を施し、内側にはアクセス保護を施すことで、データを直接読み取ることを不可能とする。例えば、データや命令コードを暗号化して主記憶装置や二次記憶装置に格納し、プロセッサが命令を実行する際には、暗号化された命令コードを復号し、それをプロセッサ内のキャッシュメモリに格納してから実行する。
しかしながら、従来は、上記命令コードやデータの暗号化処理を行う回路は、プロセッサとは別のチップに搭載され、外付けで使用されるため処理速度が低いなど、暗号化性能の面で問題があった。
また、暗号化処理において、上記暗号化に用いられる鍵は、外付けされたチップ上の暗号化処理回路側で決定されており、プロセッサ側で実行される命令の種類や、カーネルモード、スーパーバイザモード、ユーザモードなどのプロセッサの動作モード(アクセスモード)の区別、あるいは、データや命令コードのフェッチのアクセスアドレスなどとは無関係であった。さらに、プロセッサ側の実行ユニットが、暗号化及び復号化で用いられる
鍵を指定できなかった。このため、プロセッサが実行中の命令に対する適切な鍵を選択することができないという問題もあった。
ソフトウェア実行環境の安全性に関する公知技術としては、例えば、暗号化された実行コードの認証を行って、その実行コードの有効性を確認し、セキュアプロセッサがその暗号化された実行コードに対応する命令をフェッチし、セキュアタスクとして実行するコード実行装置が開示されている(特許文献1)。
また、本出願人は、本発明と同様な目的を有するセキュアプロセッサを、以前に考案したが、このセキュアプロセッサの構成は本発明とは異なっている(特許文献2参照)。
特開2002−353960号公報 特願2004−194951号
しかしながら、上記コード実行装置では、実行コードに対応するプロセスとその認証に用いられる鍵との間に関連が無かった。このため、例えば、オペレーションシステムOS)に対して悪意のある操作が行われ、プログラムに別の認証用の鍵が割り付けられると、悪意のある命令コードが動作してしまうという問題を解決できなかった。
本発明の第1の目的は、暗号化された命令コードを書き換え不可能な形式で記憶するメモリの記憶内容を基本とし、二次記憶装置などに格納されているプログラムの命令コードを次々と認証し、確実に信頼できるアプリケーションプログラムの範囲を段階的に広げ、信頼できる命令コードだけを実行することが可能なセキュアプロセッサを実現することである。
本発明の第2の目的は、プログラムの命令コードやデータのプロセッサへの格納タイミングで、それらに対応する認証鍵を用いてそれらの認証を行い、認証に成功した命令コードやデータのみをプロセッサで処理させるようにすることによって、プロセッサの処理の安全性を向上させることである。
本発明の第3の目的は、前記第1及び第2の目的を、一般的なプロセッサに付加しやすい構成で実現することである。
本発明は、暗号化された命令コード(暗号化命令コード)を復号して実行するセキュアプロセッサを前提とする。
本発明のセキュアプロセッサは、前記暗号化命令コードを復号して得られる命令コードを実行するプロセッサコアと、該プロセッサコアで実行されるプログラムからアクセスできない位置に実装されたセキュアバスと、該セキュアバスに接続され、前記プロセッサコアで実行される前記暗号化命令コードの認証と、前記プロセッサコアが外部と入出力する前記暗号化命令コード及びデータの暗号化/復号化を行うセキュアハードウェアと、を備えることを特徴とする(本発明のセキュアプロセッサの第1形態)。
本発明のセキュアプロセッサの第1形態においては、前記セキュアハードウェアは、前記セキュアバスを介して接続された処理ブロック内で、前記暗号化命令コード及びデータの暗号化/復号化に使用される鍵を保持することにより、該鍵をプロセッサコアで実行されるプログラムからアクセス不可能な位置に配置することができ、前記鍵の安全性を保証することができる。
前記セキュアハードウェアは、例えば、ビルトイン鍵を記憶する記憶手段を備え、前記セキュアハードウェアは、前記ビルトイン鍵により暗号化されたセキュアブートプログラムによって初期化され、前記セキュアブートプログラムは、セキュアプロセッサで実行される命令コード認証の起点となるように構成してもよい(本発明のセキュアプロセッサの第2形態)。
本発明のセキュアプロセッサの第2形態においては、前記セキュアブートプログラムを前記プロセッサコアで実行される命令コード認証の起点として、以後、その命令コード認証を継続していくことにより、前記プロセッサコアで実行されるプログラムの信頼性を維持することができる。
該第2形態のセキュアプロセッサにおいて、前記セキュアハードウェアは、例えば、前記プロセッサコアが外部と入出力する前記暗号化命令コード及びデータの暗号化/復号化を行う、前記セキュアバスに接続されたセキュアパイプを備えるように構成してもよい(本発明のセキュアプロセッサの第3形態)。
本発明のセキュアプロセッサの第3形態においては、前記セキュアパイプにより、前記プロセッサコアが外部と入出力する前記暗号化命令コード及びデータの暗号化/復号化の処理を安全性が保証された鍵を使用して行うことができる。
前記第2形態のセキュアプロセッサにおいて、前記セキュアハードウェアは、例えば、公開インターフェースを介して、プロセッサコアで実行されるプログラムとの間でコマンドや情報を送受信し、公開鍵系暗号処理と公開鍵系認証処理を実行する、前記セキュアバスに接続されたセキュアアシストを備えるように構成してもよい(本発明のセキュアプロセッサの第4形態)。
本発明のセキュアプロセッサの第4形態においては、前記セキュアアシストが、前記プロセッサコアで実行されるプログラムから前記公開インターフェースを介して前記セキュアアシストとコマンドや情報の送受信を行うことにより、前記プログラムが前記公開インターフェースを介してのみセキュアハードウェアに処理の依頼や情報の取得を行うことができる。
前記第2形態のセキュアプロセッサにおいて、例えば、DMA転送機能を有し、該DMA転送機能によって転送された命令コードまたはデータのページ検証を行う、前記セキュアバスに接続されたセキュアDMAを備えるように構成してもよい(本発明のセキュアプロセッサの第5形態)。
本発明のセキュアプロセッサの第5形態においては、セキュアDMAによりページ検証を高速で処理できる。
前記第2形態のセキュアプロセッサにおいて、例えば、前記第3形態のセキュアプロセッサのセキュアパイプと、前記第4形態のセキュアプロセッサのセキュアアシストと、前記第5形態のセキュアプロセッサのセキュアDMAを備えるように構成し、前記セキュアアシストは、前記セキュアパイプと前記セキュアDMAの設定/制御を、前記セキュアバス経由で行うように構成してもよい(本発明のセキュアプロセッサの第6形態)。
本発明の第6形態のセキュアプロセッサにおいては、上述した前記第3形態のセキュアプロセッサのセキュアパイプ、前記第4形態のセキュアプロセッサのセキュアアシスト及び前記第5形態のセキュアプロセッサのセキュアDMAが備える機能を、セキュアパイプ前記プロセッサコアで実行されるプログラムに対する安全性を保証して行うことができる。
前記6形態のセキュアプロセッサにおいて、例えば、前記セキュアパイプは、公開鍵暗号化された鍵(公開鍵暗号化鍵)と、該公開鍵暗号化鍵のライセンス情報と、該公開鍵暗号化鍵が信頼可能であるか否かを示す第1のフラグが登録されるエントリを有する暗号鍵テーブルと、前記プロセッサコアのTLB/AMRと一対一に対応するエントリを有し、該エントリ内に、前記暗号鍵テーブルに登録されている暗号鍵の識別情報と、該暗号鍵識別情報が指す前記暗号鍵テーブルのエントリに登録されている第1のフラグのコピーである第2のフラグとライセンス情報が登録されるTLB/AMR拡張部と、前記TLB/AMR拡張部のエントリに登録されているライセンス情報と、前記TLB/AMR拡張部の該エントリに登録されている暗号鍵識別情報が指す暗号鍵テーブルのエントリに登録されているライセンス情報が一致するか調べるライセンスチェック部とを備えるように構成してもよい(本発明のセキュアプロセッサの7形態)。
本発明のセキュアプロセッサの第7形態においては、前記プロセッサコアのTLB/AMRのエントリに格納されているアドレス空間情報で規定されるデータ空間へのアクセスを、該データ空間への正当なアクセス権限を有するプログラムのみに制限することができる。
前記第7形態のセキュアプロセッサにおいて、例えば、前記プロセッサコアのTLB/AMRのエントリは、前記TLB/AMR拡張部の第2のフラグと同様な機能を有する第3のフラグを有するように構成してもよい(本発明のセキュアプロセッサの第8形態)。
本発明の第8形態のセキュアプロセッサにおいては、上述した本発明の第7形態のセキュアプロセッサのデータ空間のセキュリティに関する処理を、プロセッサコアのTLB/AMRのエントリ内の第3のフラグを利用して高速化することができる。
前記第6形態のセキュアプロセッサにおいて、例えば、前記セキュアハードウェアは、命令コードの前記公開鍵暗号化鍵を認証する鍵認証手段と、該鍵認証手段によって前記公開鍵暗号化鍵が認証されたとき、前記公開鍵暗号化鍵のライセンス情報を生成するライセンス情報生成手段と、前記鍵認証手段によって前記公開鍵暗号化鍵が認証されたとき、前記公開鍵暗号化鍵を復号する鍵復号手段を備え、前記ライセンス情報生成手段によって生成されたライセンス情報は、前記認証手段に認証を依頼した前記プロセッサコアで実行中のプログラムによって保存され、前記鍵復号手段によって復号された鍵は前記暗号鍵テーブルに登録されるように構成してもよい(本発明のセキュアプロセッサの第9形態)。
本発明の第9形態のセキュアプロセッサにおいては、前記プロセッサコアで実行されるプログラムについて、前記ライセンス情報を保持しているプログラムのみに、前記暗号鍵テーブルのエントリへの鍵登録・削除などの鍵操作を制限することができる。
前記第6形態のセキュアプロセッサにおいて、例えば、前記セキュアハードウェアは、命令コードの前記公開鍵暗号化鍵を認証する鍵認証手段と、前記命令コードをページ単位で検証するページ検証手段と、前記鍵認証手段によって前記公開鍵暗号化鍵が認証され、かつ、前記ページ検証手段により前記命令コードのページが検証されたとき、前記公開鍵暗号化鍵のライセンス情報を生成するライセンス情報生成手段と、前記鍵認証手段によって前記公開鍵暗号化鍵が認証され、かつ、前記ページ検証手段により命令コードのページが検証されたとき、前記公開鍵暗号化鍵を復号する鍵復号手段を備え、該ライセンス情報生成手段によって生成されたライセンス情報は、前記認証手段に認証を依頼した前記プロセッサコアで実行中のプログラムによって保存され、前記鍵復号手段によって復号された鍵は前記暗号鍵テーブルに登録されるように構成してもよい(本発明のセキュアプロセッサの第10形態)。
本発明の第10形態のセキュアプロセッサにおいては、上述した前記第9形態のセキュアプロセッサの機能に加え、命令コードが改竄されたプログラムによる前記暗号鍵テーブルのエントリに対する不正な鍵操作を阻止できる。
本発明によれば、暗号化された命令コードおよび書き換え不可能な形式で暗号化された暗号鍵の記憶内容を基本とし、二次記憶装置などに格納されているプログラムの命令コードを次々と認証し、確実に信頼できるアプリケーションプログラムの範囲を段階的に広げ、信頼できる命令コードだけを実行することが可能なセキュアプロセッサを実現することができる。また、本発明によれば、プログラムの命令コードやデータのプロセッサへの格納タイミングで、それらに対応する認証鍵を用いてそれらの認証を行い、認証に成功した命令コードやデータのみをプロセッサで処理させるようにすることが可能であり、プロセッサの処理の安全性を向上させることができる。
本発明は、上記効果を有するセキュアプロセッサを、一般的なプロセッサに付加しやすい構成で実現することが可能である。
以下、図面を参照しながら本発明の実施の形態について説明する。
[全体構成]
図1は、本発明の一実施例であるセキュアプロセッサのシステム全体の構成図である。
同図に示す本実施例のセキュアプロセッサは、プロセッサコア(中枢演算回路)10、2次キャッシュ20、ローカルバス30、SDRAMC(Synchronous Dynamic RAM Controller)40を備えている。SDRAMC40にはメモリ50が接続されている。このメモリ50は、セキュアプロセッサの外部または内部に実装される。
プロセッサコア10と2次キャッシュ20はCPUコアを構成している。本実施例のセキュアプロセッサは、上記既存のプロセッサの構成要素に加え、セキュアパイプ60、セキュアDMA70及びセキュアアシスト80という3つのブロックを備えている。本実施例では、これらの3つのブロック全体をセキュアブロックと呼称する。
上記3つのブロックは、セキュアバス(第1のセキュアバス)90によって互いに接続されている。セキュアバス90は、プロセッサコア10上で動作するソフトウェアからは認識できないようになっている。メモリ50は、プロセッサコア10と同一チップまたはチップ外部に実装される。尚、プロセッサコア10は1個に限定されることはなく、複数実装可能である。また、CPUコアも複数実装可能である。
セキュアパイプ60は、2次キャッシュ20とローカルバス30との間に設けられ、コマンドバッファ61、暗号処理パイプ62、TLB/AMR拡張部63、鍵テーブル64、ライセンスチェック部65及びセキュアバスIF(セキュアバス・インターフェース)66を備える。
暗号処理パイプ62は、2次キャッシュ20とローカルバス30との間に設けられ、平文にて処理を行うプロセッサコア10と暗号化されているデータを取り扱う外部との間で、暗号化及び復号化の処理を行う。暗号処理パイプ62は、例えば、DES、AESに代表される共通鍵暗号方式で暗号処理及び復号処理を行う。
コマンドバッファ61は、セキュアパイプ内暗号処理パイプにおける暗号処理に伴うデータ遅延を吸収する機能を有する。プロセッサコア10で実行されるソフトウェア(プログラム)がセキュアDMA70やセキュアアシスト80に設定するコマンドや各種情報は、コマンドバッファ61を介してセキュアDMA70とセキュアアシスト80に設定される。また、プロセッサコア10で実行されるソフトウェアは、セキュアアシスト80の公開IF内に実装される各レジスタの内容を、コマンドバッファ61を経由して読み出す。コマンドバッファ61は、プロセッサコア10から発行されるコマンドの通信路である。本実施例において、該コマンドは、セキュアアシスト80に対して実施するレジスタのリード/ライト・アクセスにより行なわれ、コマンドバッファ61自体にセキュリティ機能は無い。また、本実施例では、セキュアアシスト80に対する専用コマンドは設けず、セキュアアシスト80を対象アドレスとするデータのリード/ライトにより、上記セキュアアシスト80のレジスタのリード/ライト・アクセスを実現している。すなわち、公知の「メモリマップドI/O」方式と等価な方式により、セキュアアシスト80に対するコマンド発行を実現している。
本実施例では、前記セキュアブロックとセキュアバス90を統合した部分をセキュアハードウェアと呼ぶ。このセキュアハードウェアが、本実施例のセキュアプロセッサにおける本発明に特有な構成部分となっている。本実施例のセキュアプロセッサにおいては、プロセッサコア10の処理は、セキュアパイプ60通過後、暗号処理パイプ62により暗号化されるため、データの安全性が保たれる。
セキュアプロセッサにおいては、暗号化に用いる鍵に関しても、いかに安全性を保つかが重要となる。本実施例のセキュアプロセッサは、この安全性の保持を、鍵をそのままの状態ではなく暗号化して取り扱い、その暗号化された鍵をハードウェアで復号することで
実現する。
暗号鍵テーブル(鍵テーブル)64は、プログラムとデータ空間ごとの鍵管理を行うために使用されるテーブルである。TLB/AMR拡張部63は、プロセッサコア10内部のTLB/AMRと同数実装され、暗号鍵テーブル64に格納された鍵をメモリ50の物理ページに論理的に関連付ける機能を有する。プロセッサコア10のTLB/AMRは、例えば、MMU(メモリ管理ユニット)内に設けられる。
ライセンスチェック部65は、セキュアパイプ60を使用するアクセスが正当であるか検査し、不正アクセスを禁止する。セキュアバスIF66は、セキュアパイプ60の設定処理に関する指示を、セキュアアシスト80からセキュアバス90経由で受け取るバスインターフェースである。
セキュアDMA70は、DMAC(DMA Controller)71と公開IF(公開インターフェース)72を備えると共に、さらに、共通鍵暗号処理/ハッシュッ処理部73、セキュアIF(セキュア・インターフェース)74及びセキュアバスIF(セキュアバス・インターフェース)76を備えている。
共通鍵暗号処理/ハッシュッ処理部73は、DES/AES処理ブロック、ハッシュ処理ブロック、ユーザ暗号処理ブロック、平文バッファ及び暗号バッファを備え、AESやDESなどの共通鍵暗号処理とセキュアDMA70の転送領域に関するハッシュ演算を行う。
セキュアIF74は、DMAコマンド、DMAステイタスなどのDMAに関するコマンドやステイタスが設定されるレジスタや、DES暗号鍵、AES暗号鍵、平文ハッシュ値及び暗号ハッシュ値をそれぞれ格納するレジスタを備えている。
セキュアバスIF76は、鍵に関する情報をセキュアバスIF66から受け取るためのインターフェースである。
セキュアDMA70は、公開IF72を介して、通常のDMA機能の他に、暗号処理機能付きDMAを起動できるようになっている。これは、セキュアDMA70に暗号処理アムセラレータとしての機能を持たせるためであり。セキュアDMA70は、DMAC71と公開IF72により、暗号処理を行わない通常のDMA処理を実行できるようになっており、既存ソフトウェアとの互換性を保つことを配慮した構成となっている。
セキュアアシスト80は、公開IF(レジスタIF)81、セキュアコントローラ82、RSA演算器83、楕円暗号演算器84、ハッシュ演算器85、乱数発生器86、認証リスト87、セキュアバスIF88及びセキュアバス89を備えており、公開鍵系の演算処理と認証処理を行うと共に、セキュアパイプ60とセキュアDMA70の設定/制御をセキュアバス90経由で行う。セキュアコントローラ82は、組み合わせ動作や各種実設定などのセキュアパイプ60またはセキュアDMA70に対する指示をステートマシン処理により実現する。
セキュアアシスト80においては、プロセッサコア10で動作するソフトウェアからは公開IF81のみが使用可能であり、それ以外のブロックはアクセス不可能となっている。
RSA演算器83は、ハードウェアRSA鍵によるRSA処理を行う。楕円暗号演算器84は、ハードウェア楕円暗号鍵による楕円暗号処理を行う。ハッシュ演算器85は、署名認証用などのハッシュ演算を行う。乱数発生器86は、鍵生成用の乱数を生成する。認証リスト87は、後述するビルトイン鍵や公的証明鍵などを格納する。セキュアバスIF88は、セキュアパイプ60やセキュアDMA70に対する設定/機能制御をセキュアバス90に送出するためのインターフェースである。
2次キャッシュ20とセキュアパイプ60内のTLB/AMR拡張部63間はSビット信号線91で接続されている。このSビット信号線91は、セキュアパイプ60からプロセッサコア10に対してSビットを出力するために使用され、そのSビットは2次キャッシュ20とプロセッサコア10間を接続する信号線92を介してプロセッサコア10に出力される。図示していないが、2次キャッシュ20とセキュアDMA70間及び2次キャッシュ20とセキュアコントローラ82間もSビット信号線で接続される。このSビットの詳細については後述する。
本実施例のセキュアプロセッサは、既存のプロセッサに、セキュアパイプ60、セキュアDMA70及びセキュアアシスト80を付加すること構成により、命令及びデータの暗号化、その暗号化に使用される鍵の保護を実現している。
[鍵の安全性を維持する起動手順]
図2(a)〜(c)は、本実施例のセキュアプロセッサにおける鍵の安全性を維持する起動手順(ブートシーケンス)を説明する図である。
本実施例のセキュアプロセッサでは、仮想記憶方式における論理アドレス(仮想アドレス)から物理アドレスへのアドレス変換方法としてAMR(アドレスマップレジスタ)やTLB(Translation Lookaside Buffer)を用いる。AMRは任意のアドレスからいくつかのサイズまでのアドレス変換を指示するレジスタである。TLBは、固定サイズ(一般には、4〜16kB(キロバイト))でのアドレス変換を指示するレジスタファイルである。
本実施例では、プロセッサコア10のMMU(Memory Management Unit)内に設けられるAMR、TLBに対してTLB/AMR拡張部63を追加し、これをセキュアパイプ60内に設ける。そして、TLB/AMR拡張部63が管理する空間に対して暗号鍵を割り当て、その空間への入出力データをセキュアパイプ60により暗号化することを特徴としている。
図2(a)は本実施例のセキュアプロセッサのシステム起動時におけるプログラムの動作フロー(ブートシーケンス)を示し、図2(b)は該プログラムのメモリ上のマッピング状態を示し、図2(c)は上記動作フローに対応したプロセッサコア10のTLB/AMRとセキュアパイプ60のTLB/AMR拡張部63の設定状態を模式的に示す。
図2(a)に示すように、ブートシーケンスは、(1)ノーマルセットアッププログラムによる処理、(2)セキュアプログラムによる処理、(3)OS(Operating System)及びアプリケーションによる処理に大別され、(1)〜(3)の順に処理が行われる。
セキュアプロセッサの起動直後はTLBとAMRは有効化されていない。このため、暗号化機能も無効である。この状態では、ノーマルセットアッププログラムは、従来のプロセッサと同様の通常の初期化処理を行う(S1)。
続いて、ノーマルセットアッププログラムは、二次記憶装置等に格納されているセキュアブートプログラムと呼ばれる暗号化されたプログラムをメモリ50にコピーする(S2)。セキュアブートプログラムは、ハードウェアとしてセキュアプロセッサに埋め込まれたビルトイン鍵で暗号化されている。このビルトイン鍵は、セキュアプロセッサの製造元より提供される。本実施例では、ビルトイン鍵は図2(c)に示すように、プロセッサコア10のAMR−0に対応するTLB/AMR拡張部63に関連付けられており、ビルトイン鍵はAMR−0のアドレス変換情報を設定した時点で有効となるように構成されている。このように、本実施例ではビルトイン鍵をAMR−0に関連付けるようにしているが、TLBに関連付けるように構成してもよい。
ステップS2に続いて、AMR−0にアドレス変換情報を設定し、セキュアブートプログラムを使用可能にする(S3)。この時点で、ビルトイン鍵が有効となる。
セキュアブートプログラムの設定は、以上のステップS1〜S3の処理により終了する。すなわち、セキュアブートプログラムのコピーとビルトイン鍵の有効化によって終了する。
セキュアブートプログラムは、セキュアプロセッサの外部から供給する方式にしてもよく、あるいは、マイクロコードとしてハードウェアに埋め込む方式であってもよく、いずれの方式を採用しても問題はない。
セキュアブートプログラムは、これ以降、コード認証の起点となり、その認証が継続していくことにより、セキュアプロセッサで実効されるソフトウェアの信頼性並びにシステムの信頼性が維持される。
図2(b)に示す(B)セキュアブートプログラムの起動は、(A)セキュアブートプログラムの設定終了後に分岐することで実行される。セキュアブートプログラムは、セキュアプロセッサ起動後の最初の認証プログラム(S=1のプログラム)であり、本実施例のセキュアハードウェア(セキュアパイプ60、セキュアDMA70、セキュアアシスト80)を初期化することができる。このため、セキュアブートプログラムが、ユーザアプリケーションの根幹プログラム(ここでは、仮にカーネルと称する)を認証する。この認証の詳細は後述する。
図2(b)に示すように、セキュアブートプログラムはカーネルの認証処理を行い、カーネルに制御を移す。カーネルの空間は、図2(c)に示すようにAMR−1に設定される。カーネルが認証されると、カーネルにカーネル鍵が割り当てられる。このカーネル鍵は、AMR−1に対応するTLB/AMR拡張部63に関連付けられる。カーネル鍵は、カーネルが停止するまで保持される。
ここで、セキュアブートプログラムの起動後の処理を、図2(a)を参照しながら説明する。セキュアブートプログラムは、セキュアハードウェアを初期化し(S4)、カーネルの鍵情報を認証する(S5)。そして、AMR−1のアドレス変換情報を基に、認証されたカーネルをメモリ50にコピーし、カーネルに制御を移す(S6)。
セキュアブートプログラムは、以上のようにして、カーネルの認証処理を行い、カーネルに制御を移すと、自空間を開放し処理を終了する。
セキュアブートプログラムによって認証されたカーネルは、さらに、自分の子プログラム(セキュアアプリ)を認証し、その子プログラムに論理空間を割り当てる。そして、その子プログラムを起動する。
上記処理の詳細を、図2(a)を参照しながら説明する。
セキュアブートプログラムによって起動されたカーネルは初期化された後、自身のデータ空間を生成する(S7)。カーネルは、その子プログラム(セキュアアプリ)を認証し、認証されたセキュアアプリを起動する(S8)。このとき、カーネルはセキュアハードウェアにセキュアアプリの暗号鍵を指示する。そして、図2(b)に示すように、メモリ50上からセキュアブートプログラムの空間は開放される。また、図2(c)に示すように、ビルトイン鍵が無効化され、消去される。このビルトイン鍵の消去により、AMR−0に対応するTLB/AMR拡張部63は未設定となる。
カーネルにより認証された子プログラム(セキュアアプリ)には、セキュアハードウェアによって暗号鍵(アプリ鍵)が割り当てられ、このアプリ鍵がプロセッサコア10のTLBエントリ(セキュアアプリのアドレス変換情報が設定されたエントリ)に対応するTLB/AMR拡張部63に関連付けられる。
本実施例のセキュアプロセッサは、制約があるものの、認証情報が無い子プログラム(非セキュアアプリ)も実行可能である。非セキュアアプリ(NSアプリ)には暗号鍵は割り当てられないので、その非セキュアアプリのアドレス変換情報が設定されたTLBエントリに対するTLB/AMR拡張部63の領域は未設定となる(図2(c)参照)。
本実施例では、認証されている空間でプログラムが実行中であることを、Sビットが設定されていると表現する。Sビットとは、UNIX(登録商標)のスーパーバイザモードとは異なり、継承性はなく、あくまでも、現時点で実行中のコードが信頼可能であるか(認証されているか)どうかを示すものである。
[コード認証方式]
次に、図3A、3B、3C、3Dを参照しながら、本実施例におけるコード認証方式を説明する。
コード認証は、図2のブートシーケンスに示すように、セキュアブートプログラム、セキュアブートプログラムにより認証されたカーネル(ユーザアプリケーションの根幹プログラム)などで実行される。
本実施例では、コード認証方式として、認証モード1と認証モード2という2つのモードを備える。認証モード1は、主にプログラムを1つの認証単位として共通鍵暗号化を行う。
[認証モード1]
ここで、図3A(a)を参照しながら、認証モード1について説明する。
認証モード1は、下記(1)〜(4)の機能によりコード認証を行う。
(1)保護対象コードの暗号化
(2)コード暗号鍵に対し署名
(3)暗号鍵の署名検証
(4)セキュリティエラー条件(Sビット+不当命令)

認証モード1においては、暗号処理のために必要な暗号鍵Ks1は公開鍵Kpx1により暗号化された形式で提供される。そして、その公開鍵暗号化された暗号鍵Ks1(暗号化鍵Ks1)に対して鍵署名102が提供される。そして、鍵署名102と、別途提供される署名検証鍵103並びに署名検証鍵103に対する署名(署名検証鍵署名)104を用いて、暗号化鍵Ks1の署名検証処理を行なう。図3Aに示す例では、TLBのアドレス変換単位であるページ毎に暗号鍵Ks1が割り当てるようにしている。また、図3Aの例では、RSA公開鍵による検証を行なっているが、HMAC鍵等、別の方式による検証を行なうようにしても問題はない。
認証モード1は、このように、暗号鍵の検証をもってコード検証とみなす方式であり、不正コードを正常に復号出来ないことにより、意図した不正実行ができないようにすることでセキュリティを実現している。
上記コード認証処理の詳細を図3B、3Cを参照しながら説明する。
図3Bは、認証モード1でのコード認証において必要な情報を示したものであり、図3Cはそのコード認証処理の流れを示したものである。
図3Bでは、セキュアプロセッサ内のハードウェアまたはソフトウェアにより保持される鍵と命令コード作成(例えば、オブジェクト生成時に使われる鍵)に使われる鍵の組み合わせを示している。同図に示すように、コード認証には、共通暗号鍵Kc、第1の公開鍵ペア301(公開鍵Kp1と秘密鍵Ks1)、第2の公開鍵ペア302(署名検証鍵(公開鍵Kp2)、署名秘密鍵Ks2)及び第3の公開鍵ペア303(署名秘密鍵Ks3、署名検証鍵(公開鍵Kp3))が使用される。
公開鍵Kp1と秘密鍵Ks1は対となっており、セキュアプロセッサは秘密鍵Ks1をソフトウェアでは読み出すことができない場所(セキュアハードウェア)に保持している。
これに対し、公開鍵Kp1は、セキュアプロセッサで実行されるソフトウェアがレジスタ経由で読み出せるようになっており、プロセッサ情報として公開されているので、コード作成側も使用できるようになっている。
コード作成側は、署名検証に必要な第2の公開鍵ペア302(公開鍵Kp2、秘密鍵Ks2)を保持しており、コード専用署名検証鍵Kp2を暗号化コードと共にセキュアプロセッサに提示する。コード作成側の公的認証鍵である第3の公開鍵ペア303(署名秘密鍵Ks3、署名検証鍵Kp3)の内、署名秘密鍵Ks3は認証機関に保持されるため、セキュアプロセッサ側で使用されることはない。署名検証鍵Kp3は公的認証局経由で公開され、セキュアプロセッサ外部からの例えばネットワーク経由での伝送またはハードウェア固定値としてセキュアアシスト80内の認証リスト87に格納される。
次に、図3Cを参照しながら、コード作成側、認証機関及びセキュアプロセッサ間での上記鍵の受け渡しの方法と、それらの鍵を用いた命令コードの認証処理手順を説明する。
{コード作成処理}
図3Cの左上側に示す、コード作成者が行なうコード作成処理について説明する。このコード作成処理は、専用のハードウェアを使用する必要はなく、オブジェクト(プログラム)作成時にソフトウェアなど何らかの方法により実施可能である。
(1)最初に、暗号化かつ認証すべき命令コード311と共通暗号鍵Kcを用意し、命令コード311を共通暗号鍵Kcにより暗号化し、共通鍵暗号化された命令コード312を生成する(共通鍵暗号処理)。
(2)また、同時に、セキュアプロセッサから公開された公開鍵Kp1を用いて共通暗号鍵Kcを暗号化して、公開鍵暗号化された共通暗号鍵Kcを生成する(公開鍵暗号処理1)。
このように、命令コードの暗号化に必要な情報は、共通暗号鍵Kcと公開鍵Kp1の2つであり、これら2つの鍵を実装だけで命令暗号化は可能である。
さらに、上記暗号化が正しく行なわれたことを認証するための情報を生成する処理を行なう。
(3)上記公開鍵Kp1により暗号化された共通暗号鍵Kcに対してハッシュ演算を施し、鍵署名の元データを生成する(ハッシュ処理1)。
(4)該元データを、署名秘密鍵Ks2により暗号化し、その暗号化により得られた値を鍵署名S1とする(公開鍵暗号処理2)。
(5)上記公開鍵Kp2のペアである公開鍵Kp2を署名検証鍵とし、その署名検証鍵(公開鍵Kp2)とその他の情報から成るデータ314の正当性を認証するための署名検証鍵署名S2から構成される電子証明書313として用意する。該署名検証鍵署名S2は、認証機関から受け取る。
上のようにして用意された、共通鍵暗号化された命令コード312、共通鍵暗号化された共通暗号鍵Kc、鍵署名S1及び電子証明書313の4種の情報を、ROMなどの記憶媒体またはネットワークなどの伝送手段320を介してセキュアプロセッサに渡す。
{セキュアプロセッサ側の処理}
図3Cの右側の「プロセッサ内処理」を参照しながら、セキュアプロセッサが暗号化された命令コードを復号・実行する処理について説明する。
(1)セキュアプロセッサは、コード作成者から受け取る公開鍵暗号化された共通暗号鍵Kcを秘密鍵Ks1により復号する(公開鍵復号処理1)。
(2)上記公開鍵暗号化された共通暗号鍵Kcに対してコード作成者側と同様のハッシュ演算を施す(ハッシュ処理1)。
(3)コード作成者から受け取った鍵署名S1を電子証明書313内の署名検証鍵(公開鍵Kp2)で復号する(公開鍵復号処理2)。
(4)ハッシュ処理1で得られた結果と公開鍵復号処理2で得られた結果を比較し、両結果が一致するか、すなわち、暗号鍵(共通暗号鍵Kc)が改竄されていないか調べる。一致していれば、該暗号鍵が改竄されていないことが分かる(鍵認証)。
(5)電子証明書313内のデータ314(署名検証鍵(公開鍵Kp2)とその他の情報)に対してハッシュ演算を施す(ハッシュ処理2)。
(6)電子証明書313内の署名検証鍵署名S2を署名検証鍵(公開鍵Kp3)により復号する(公開鍵復号処理3)。
(7)上記ハッシュ処理2と上記公開鍵復号処理3で得られた結果を比較し、両結果が等しいか、すなわち、電子証明書313が正当な権利者により作成されたものであるか調べる(電子証明書の検証)。
(8)(4)での比較結果(比較結果出力1)と(7)での比較結果(比較結果出力2)を調べ、両比較結果出力が共に一致であったならば、共通鍵暗号化された命令コード312を、(1)で得られた共通暗号鍵Kcを用いて復号する(共通暗号鍵復号処理)。
このように、本実施例では、鍵認証と電子証明書の検証により、命令コードが正しく暗号化されており、かつ改竄されていないか検証し、正しく暗号化されておりかつ改竄されていない命令コードのみを復号する。この結果、セキュアプロセッサによる正当な命令コードの実行が保証される。
{認証機関処理}
図3Cの左下に示された「認証機関処理」を参照しながら、認証機関(認証局)がコード作成者で作成された暗号化された命令コードの電子証明書313用の署名検証鍵署名S2を作成する処理を説明する。
署名検証鍵(公開鍵Kp2)とその他の情報から成るデータ314に対してハッシュ演算を施し(ハッシュ処理2)、その演算結果を署名秘密鍵Ks3を用いて公開鍵暗号化して署名検証鍵署名S2を作成する(公開鍵暗号処理3)。
上記署名検証鍵署名S2を、記憶媒体またはネットワークを利用して、コード作成者に渡す。
コード作成者は、認証機関から受け取る署名検証鍵署名S2を用いて電子証明書313を作成する。
この認証機関処理は、公開鍵ペア(公開鍵Kp2、秘密鍵Ks2)を使用する前に、一度実施しておけばよい。ハッシュ演算は、例えばHMACなどで行い、公開鍵演算にはRSA等の方式で行う。本発明は、ハッシュ演算や公開鍵演算の方式を特に指定するものではない。
[認証モード2]
(1)認証モード2は、下記(1)〜(5)の機能を備える。
(2)保護対象コードの暗号化
(3)コード暗号鍵(暗号化鍵)とページハッシュに対する署名
(4)暗号化鍵とページ署名を署名検証
(5)セキュリティエラー条件(Sビット要求+不当命令)

認証モード2では、命令コードの検証をページ単位で行う。このページ単位での検証は、セキュアアシスト80がセキュアバス90経由でセキュアDMA70を起動し、セキュアDMA70がハッシュ演算を行い、その演算結果を検証することにより行なわれる。このように、認証モード2おいては、ページ検証を行い、その検証が失敗した場合には認証エラーとするので、コードの改竄検出が可能であり、認証モード1よりもさらに強力な保護機構を実現できる。
本実施例の認証モード2においては、プログラムのサイズが大きく、そのプログラムが複数のページに分割される場合、全てのページの鍵(暗号鍵)は同一にし、ページ署名検証はページ単位で行うようにしている。しかしながら、ページ毎に鍵を変更するように構成することも可能である。
認証モード2においては、図3A(b)に示すように、公開鍵暗号化された暗号鍵Ks2、鍵署名102、署名検証鍵103及びに署名検証鍵署名104に加え、ページ署名105を用いて署名検証鍵処理を行う。ページ署名105は、暗号鍵Ks2で暗号化されたページに対する署名である。図3A(b)では、ページ1〜3の各ページについてページ署名105が作成されている。
図3Dは、認証モード2における鍵の受け渡しと認証処理を説明する図である。
同図において、破線の矩形枠350で囲まれた部分が図3Cに示す認証モード1の処理に加えられた処理である。認証モード2では、認証モード1における鍵認証に加え、認証単位ごとのページ署名とその検証を行なう。より詳細に説明すると、認証モード2においては、共通暗号鍵Kcで暗号化されたページごとにハッシュ演算を行い(ハッシュ処理A)、その演算結果に対して署名秘密鍵Ks2による暗号化を施し(公開鍵暗号処理A)、ページ署名S1Aを生成する。複数ページ署名ならば、ページ数と同数の鍵署名を生成する。例えば、3ページ署名ならば、ページ署名S1Aに加え、ページ署名S1B、S1Cが追加生成される。認証モード2では、暗号鍵の認証とページ認証を同時に行なうため、不正改竄されたページについては実行前に処理を中止することでセキュリティを実現する。
セキュアプロセッサ側での鍵署名S1Aの検証は、図3Cに示す鍵署名S1の検証と同様のメカニズムで行なわれる。すなわち、共通鍵暗号化された命令コード362にハッシュ演算を施す(ハッシュ処理A)と共に、受け取った鍵署名S1Aを署名検証鍵(公開鍵Kp2)を用いて復号する(公開鍵復号処理A)。そして、ハッシュ処理Aで得られる結果と公開鍵復号処理Aで得られる結果を比較し、その比較結果を出力する(比較結果出力A)。認証モード2では、比較結果出力1の検証結果と署名検証鍵署名S2の認証結果に加え、上記比較結果出力Aの検証結果を調べ、それらの検証結果または認証結果の全てが正しいときにのみ、共通鍵暗号化された命令コード362を共通暗号鍵Kcで復号する(共通鍵暗号処理)。
図3Cの認証モード1及び図3Dの認証モード2の詳細な動作フローについては後述する。
[Sビットによる制御]
Sビットは、実行中のプログラムの暗号鍵が、上述した図3C、3Dに示すような何らかの方法で認証されているかどうかを示すもので、プログラム実行中の空間に関するTLB/AMRの情報にのみ依存しており、誰がプログラムを起動したかなどとは関係なく、スーパーバイザモードのようにステートとして持つものでもない。
Sビットは、認証または生成した鍵に付加される「認証済み」の属性を示すビットであり、プログラムをTLB登録する際、鍵を連携させることにより、TLBにもSビットがコピーされる。Sビットによるデータ保護(プログラムが正常に実行されるとき、プログラムが改竄されていないことの保証)は、実行中のプログラムのSビット属性とデータ空間のSビット属性の組み合わせで実現される。
初期のS=1の情報は、前述したセキュアブートプログラムの読み込みにより生成・登録される。S=1の情報が登録されたプログラムは、認証された鍵の登録により、S=1の空間を生成することが可能である。
Sビットによるアクセス制御の例を、図4A、4B、4Cに示す。
セキュアプロセッサの基本動作においては、認証済みプログラムの置かれている空間と認証済みプログラムにより作成されたデータ空間だけがS=1の空間となる。
図4Aを参照しながら、本実施例のセキュアプロセッサにおけるSビット属性によるプログラムのアクセス制限制御を説明する。
S=1の認証済みプログラム(暗号化されたプログラム)からS=1のデータ空間(認証済みの暗号化されたデータページ)をアクセスする場合には、セキュアパイプ60を介してのアクセスが可能である(セキュア処理)。S=1のプログラムからS=0のデータ空間へのアクセスは、セキュアパイプ60を介さずにアクセス可能であるが、S=0のデータ空間に関して安全性は保証されない(非セキュア処理)。
S=0のプログラム(認証なしのプログラム)からS=1のデータ空間へのアクセスは禁止される。S=0のプログラムからS=0のデータ空間へのアクセスは可能である(通常処理)。これらのSビットによるアクセス制御の関係を図4Bに示す。
図4Cに、本実施例のセキュアプロセッサにおけるSビットによるハードウェアアクセス制限を示す。
セキュアプロセッサで実行されるプログラムは、S=1とS=0のプログラムに分類されると共に、さらに、特権モードで実行されるプログラム(P=1)と非特権モードで実行されるプログラム(P=0)に分類される。
S=1でかつP=1のプログラムは、セキュアコントローラ82を介した間接アクセスを含むものの、セキュアプロセッサの全てのブロックをアクセス可能である。但し、鍵テーブル64に格納されている鍵そのものを取り出すアクセスはできない。
S=1でかつP=0のプログラムは、セキュアパイプ60、セキュアDMA70及びセキュアアシスト80内の灰色のブロック以外のブロックはアクセス可能である。すなわち、
公開鍵系演算器(RSA演算器83、楕円暗号演算器84、ハッシュ演算器85)及び乱数発生器86を利用でき、さらに、コマンドバッファ61と暗号処理パイプ62を利用できる。
S=0のプログラムは、セキュアハードウェアについては、セキュアDMA70のDMAC71と公開IF72のみを利用できるだけで、その他のブロックを利用することはできない。
図5は、本実施例のセキュアプロセッサによるS=1の親プログラムによる子プログラムの認証手順の概略を示す図である。同図において、ハードウェアによる処理は実線、ソフトウェアによる処理は破線で示している。
S=1の親プログラムは、図2のセキュアブートプログラムなど認証されたプログラムである。以後の説明では、セキュアブートプログラムなどの認証済のプログラムを、便宜上、親プログラムと総称する。親プログラムによって認証される子プログラムは、共通鍵暗号方式によって暗号化されたコードと、その暗号化に用いられた暗号鍵を公開鍵によって暗号化したもの、鍵署名、署名検証鍵、署名検証鍵署名と共に提供される(図3A(a)参照)。
図5に示すように、子プログラムのコードは子プログラム鍵で共通鍵暗号化されている。図5では、親プログラムが子プログラムを認証済するために使用する複数の認証情報の内、公開鍵暗号化された子プログラム鍵411のみを記載している(破線の矩形枠410を参照)。
上記公開鍵暗号化用の公開鍵と対となる秘密鍵(ハードウェア秘密鍵)は、セキュアプロセッサのセキュアアシスト80の認証リスト87に格納されており、セキュアプロセッサで実行されるソフトウェアからは読み出せないようになっている。
次に、親プログラムによる子プログラムの認証処理手順について説明する。
(1)親プログラムは、新たに実行しようとする子プログラムの認証情報をセキュアアシスト80に設定する。ここでは、子プログラムの公開鍵暗号化された子プログラム鍵411(共通鍵)及び図示しない認証情報が、公開IF81を介して公開鍵演算器(RSA演算器83または楕円暗号演算器84)に設定されることにより、セキュアハードウェアにより子プログラム鍵の認証が行なわれる。この認証処理自体にはソフトウェアは介在できないため、この認証処理の信頼性が保証される。
セキュアアシスト80に設定すべき情報としては、「鍵属性(暗号方式、鍵長、ブロック長の指定)」、認証情報である「鍵署名」、「署名検証鍵」、「署名検証鍵署名」及び「公開鍵暗号化暗号鍵」があり、その他として、認証された鍵情報が保存される鍵テーブル(暗号鍵テーブル)64のエントリ番号がある。これらは、セキュアアシスト80の公開IF81内のレジスタインターフェースに実装されるレジスタに設定される。
親プログラムが上記の各種情報をセキュアアシスト80の公開IF81に設定した後、公開IF81内のコマンドレジスタに「鍵認証コマンド」を設定することにより、セキュアハードウェアによるハードウェア鍵認証処理が開始される。該ハードウェア鍵認処理が実行されている間、親プログラムはその処理の終了待ち状態に入る。該ハードウェア認証処理により子プログラム鍵が認証されると、暗号鍵テーブル64が更新され、暗号鍵テーブル64の当該エントリに「鍵番号(Key ID)」、「ライセンス情報」、「子プログラム鍵」が設定される。本実施例においては、暗号鍵テーブル64の空エントリはソフトウェアによって管理される。
上記ハードウェア鍵認証処理が終了すると、セキュアアシスト80から親プログラムに鍵認証終了が割り込みにより通知される。
(2)親プログラムは、セキュアアシスト80の公開IF81から鍵認証のステイタス情報を読み出し、子プログラム鍵が認証されたかどうか判断する。そして、子プログラム鍵が認証されたと判断すると、暗号鍵テーブル64に格納された子プログラム鍵のライセンス情報をセキュアアシスト80の公開IF81を介して取得し、それを所定の記憶領域に保存する(ソフトウェア保存)。
本実施例においては、信頼性を保証するため、ソフトウェアは暗号鍵テーブル64に格納されている鍵自体にアクセスすることはできないが、鍵への代替アクセス許可のために、ライセンス情報を鍵の代替情報として使用できるようになっている。ソフトウェアは、ライセンス情報を用いることで、各種処理を行うことができる。
本実施例における暗号鍵テーブル64への鍵登録は、鍵の認証処理を伴うため、正確ではあるが処理時間がかかる。また、TLB/AMR拡張部63へのエントリの登録/削除は頻繁に行われるため処理の高速性が要求される。本実施例では、上記処理時間の問題を解決するため、鍵の所有者(プログラム)に対しTLB/AMR拡張部63への登録権を与えるものとしてライセンス情報という概念を導入している。ライセンス情報は、暗号鍵テーブル64に鍵(暗号鍵)を登録したプログラム(認証済プログラム)にのみ発行されるものである。該認証済プログラムのデータ空間は暗号化可能であるので、ライセンス情報をメモリ50上に置いたとしても、他プログラムは認証済プログラムのデータ空間を参照することはできない。
ライセンス情報は、鍵の生存区間、すなわち、プログラムの鍵が認証され暗号鍵テーブル64に登録されてから、暗号鍵テーブル64から削除されるまで有効である。上記生存区間は、通常は、プログラムの実行区間と同一になる。
ライセンス情報は、S=1のプログラムにしか発行されないため、S=1のプログラムが利用できる暗号化空間に保管されることにより、他者のアクセスによっても暴露されることはない。
このように、鍵認証が完了し、親プログラムがライセンス情報を獲得すると、子プログラムを実際のメモリ空間に割り付ける処理を行なうことができる。
(3)親プログラムは、上記認証された子プログラムを起動する前に、その子プログラムが実際に置かれているメモリ空間を管理すべきTLB/AMRエントリをソフトウェア処理により検索し、その子プログラムが使用すべき鍵(子プログラム鍵)が格納されている暗号鍵テーブル64のエントリに設定されている鍵番号と(2)で保存したライセンス情報を、セキュアアシスト80の公開IF81内のレジスタに設定する。そして、「TLB/AMR拡張部登録コマンド」を同じく公開IF81内のコマンドレジスタに設定する。
セキュアアシスト80に上記登録コマンドが設定されると、ライセンスチェック部65により、上記ライセンス情報が正しいかどうかが検査される。このライセンス情報の検査は、親プログラムが保管しているライセンス情報と暗号鍵テーブル64の該当エントリに格納されているライセンス情報が一致するか否かにより行なわれ、一致すればライセンス情報は正しいと判断される。ライセンス情報が正しい場合には、TLB/AMR拡張部63の該当エントリに前記鍵番号が設定される。これにより、子プログラム鍵が格納されている暗号鍵テーブル64とTLB/AMR拡張部63の前記該当エントリが連携される。
この連携により、TLB/AMR拡張部63の前記該当エントリに対応するセキュアプロセッサのTLB/AMRを使用する場合、前記鍵番号で指定される暗号鍵テーブル64内の子プログラム鍵が使用されることになる。
(4)親プログラムが子プログラムを起動するために、セキュアプロセッサ内のTLBの該当エントリをアクセスすると、上記鍵番号によるTLB/AMR拡張部63のエント
リと暗号鍵テーブル64のエントリとの連携により、暗号鍵テーブル64から前記子プログラムの子プログラム鍵が読み出され、それが暗号処理パイプ62に供給される。
(5)メモリ50から読み出された共通鍵暗号化された子プログラムは、上記子プログラム鍵を用いて暗号処理パイプ62により平文の子プログラムに復号され、その平文の子プログラムがプロセッサコア10に送られる。このようにして、プロセッサコア10は、通常通りに子プログラムを実行することが可能となる。
[暗号鍵テーブルの構成]
図6は、セキュアパイプ60内に設けられる暗号鍵テーブル64の構成例を示す図である。
暗号鍵テーブル64は、オブジェクト(プログラム)で使用される鍵(暗号鍵)を登録するテーブルである。S=1の親プログラムは、子プログラムで使用する公開鍵暗号化された暗号鍵を、その暗号鍵が認証された場合に鍵属性と共に暗号鍵テーブル64に登録する。暗号鍵は認証された場合にのみ暗号鍵テーブル64に登録され、登録されると、親プログラムはセキュアハードウェアからライセンス情報を受け取る。暗号鍵が暗号鍵テーブル64に登録されると、その暗号鍵が信頼可能であることを示すためにSビットが“1”に設定される。
本実施例においては、オブジェクト(プログラム)、ライブラリ、データ空間などにつき一つの鍵が用意される。暗号鍵テーブル64のエントリは、「鍵属性」(図6の例では16ビット)、「Sビット(セキュアビット)」(図6の例では1ビット)、「鍵(暗号鍵)」(図6の例では256ビット)及び「ライセンス情報(第1のライセンス情報)」(図6の例では32ビット)の4項目から構成される。これらの項目の内、鍵属性とSビットはソフトウェアによりアクセス可能であるが、暗号鍵とライセンス情報はソフトウェアによるアクセスは不可能である。
鍵属性は、同一エントリに格納されている暗号鍵の属性(暗号方式、鍵長、ブロック長など)である。Sビットは、同一エントリに格納されている暗号鍵が認証済みであることを示すビットであり、認証済みであれば“1”に設定される。暗号鍵は、プログラムの暗号化に使用される鍵である。この暗号鍵は、ソフトウェアからはアクセス不可能である。ライセンス情報は、暗号鍵空間の拡張、消去時に用いる所有者(親プログラム)の確認番号である。
ここで、暗号鍵空間の拡張、消去について説明する。
暗号鍵空間の拡張とは暗号鍵空間の生成を意味し、本実施例では、暗号鍵空間生成(暗号鍵を暗号鍵テーブル64に登録後、TLB/AMR拡張部63にエントリを登録)のための鍵認証または鍵生成を指す。また、暗号鍵空間の消去とは一時的あるいは永久の暗号鍵空間の削除を意味し、本実施例においては、暗号鍵空間削除(暗号鍵テーブル64から暗号鍵を削除後にTLB/AMR拡張部63の該当エントリの削除、または、該暗号鍵の削除後のアクセスにより暗号鍵テーブル64とTLB/AMR拡張部63のライセンス情報が不一致となることにより、暗号鍵テーブル64の当該エントリのSビットが“0”にクリアされることに伴うTLB/AMR拡張部63の該当エントリの無効化)のための鍵保存または鍵削除を指す。
暗号鍵テーブル64への新規エントリの登録は、スーパーバイザかつS=1のプログラムからのアクセスにのみ許可される。また、暗号鍵空間の拡張/消去は、スーパーバイザかつS=1のプログラムからのアクセスであって、かつライセンス情報が一致(該プログラムが保管しているライセンス情報と暗号鍵テーブル64に登録されているライセンス情報が一致)するときのみ許可される。
暗号鍵テーブル64の空きエントリは、プロセッサコア10で実行されるプログラムにより管理され、本実施例においては、暗号鍵テーブル64のエントリに登録されている暗号鍵に割り当てる番号(鍵番号)として、該エントリの番号(エントリ番号)を用いる。
[TLB/AMR拡張部の構成]
図7は、セキュアパイプ60内に設けられるTLB/AMR拡張部63の構成を示す図である。
TLB/AMR拡張部63は、プロセッサコア10のTLB/AMRにセキュア機能拡張属性を追加する機能を有し、プロセッサコア10のTLB/AMRと一対一に対応するように構成される。したがって、TLB/AMR拡張部63のエントリ数は、プロセッサコア10内のTLB/AMRのエントリ数と同じである。TLB/AMR拡張部63のエントリへの登録権利は、ライセンス情報を有する親プログラムが持つ。
TLB/AMR拡張部63のエントリは、「Sビット」(同図の例では1ビット)、「鍵番号(Key ID)」(同図の例では8ビット)、「ライセンス情報(第2のライセンス情報)」(同図の例では16ビット)の4つの項目から構成される。これらの項目の内、Sビットと鍵番号はソフトウェアによるアクセスは可能であるが、ライセンス情報はソフトウェアによるアクセスは不可能である。
鍵番号は、暗号鍵テーブル64のエントリ番号に等しい。Sビットは、暗号鍵テーブル64の該鍵番号のエントリに登録されたSビットをコピーしたものである。Sビットは、認証モード1においては、該当鍵(暗号鍵テーブル64の前記鍵番号のエントリに登録された暗号鍵)が認証済みであり、暗号化を要求することを示す。また、認証モード2おいては、該当鍵と該当ページが認証済みであり、暗号化を要求することを示す。
「暗号化を要求すること示す」とは、プロセッサコア10がロード/ストア・コマンドを発行した場合のアクセスアドレスが、TLB/AMR拡張部63の対応エントリのSビットが“1”となっているTLB/AMRのエントリを参照する場合、TLB/AMRのSビットも“1”となっている(TLB/AMRのSビットは、TLB/AMR拡張部63の対応エントリのSビットをコピーしたものであるため)。このため、プロセッサコア10かロード/ストア・コマンドが発行される際、Sビット=1の信号も同時にコマンドバッファ61に送出される。このように、Sビット=1の信号が同時にコマンドバッファ61に送られるコマンドに対しては、セキュアパイプ60が動作して暗号化処理が起動される。
本実施例においては、コマンドのアクセスアドレスがメモリ50のアドレスを指すとき、そのコマンドと同時にコマンドバッファ61に入力されるSビットが“1”ならばセキュアハードウェアによる暗号化処理が動作し、Sビットが“0”ならばその暗号化処理は動作しないように構成されている。また、コマンドのアクセスアドレスがセキュアハードウェアのとき、そのコマンドと同時にコマンドバッファ61に入力されるSビットが“1”ならばアクセスを許可し、“0”ならばアクセスできないようにする(または、意味のない応答を返す)ように構成している。
プロセッサコア10が保管しているライセンス情報は、暗号鍵テーブル64のライセンス情報の32ビットであるが、TLB/AMR拡張部に対するアクセスには、下位16ビットを用いる。これは、データを少なくし、例えばTLB/ARM拡張部へのアクセスを高速に行うためのものであるが、ライセンス情報をすべて使用することを制限するものではない。
[プロセッサコアのTLB/AMRの構成]
図8Aは、プロセッサコア10が備えるTLB/AMRの構成図である。
プロセッサコア10のTLB/AMR501のエントリは、「Valid」、「Permission」、「VA(仮想アドレス)」、「Sビット」及び「PA(物理アドレス)」の各項目から構成される。「Valid」は、エントリが有効であるか否かを示す情報である。「Permission」は、アドレス変換を許可するか否かを示す情報(リード不可など)である。VAは、エントリがアドレス変換対象とする仮想アドレス(論理アドレス)である。PAは、VAのアドレス変換後の物理アドレスである。Sビットは、図4Aで説明したSビットと同じ機能を有するビットであり、前記アドレス変換が許可された場合に、PAと共にバスインターフェース(不図示)に出力される。アドレス変換は、アクセス属性に違反が無い場合に許可される。
図19に、従来のプロセッサコアが備えるTLB/AMR1501の構成を示す。図8Aと図19とを比較すれば明らかなように、本実施例のプロセッサコア10のTLB/AMR501はエントリにSビットを備えている点が特徴である。
[プロセッサコアのTLB/AMRとセキュアパイプのTLB/AMR拡張部との関係]
図8Bは、プロセッサコア10のTLB/AMR501とセキュアパイプ60のTLB/AMR拡張部63との関係を示す図である。尚、同図左側のCPUコアは、プロセッサコア10と2次キャッシュ20から構成されるハードウェアを示す。
本実施例のプロセッサコア10が備えるTLB/AMR501のSビットは、セキュアパイプ60のTLB/AMR拡張部63の対応エントリにSビットが登録されるときにコピーされる。このコピーは、セキュアハードウェア(セキュアブロック)により行なわれ、ソフトウェアでは実行できない。また、プロセッサコア10のTLB/AMR上でSビットがクリア(“0”に設定)された場合、そのSビットに対応するTLB/AMR拡張部63のSビットもクリアされる。これにより、該SビットがクリアされたTLB/AMR拡張部63のエントリは無効となる。暗号鍵テーブル64に登録されている暗号鍵が書き換えられた場合、暗号鍵テーブル64の該暗号鍵が登録されていたライセンス情報とTLB/AMR拡張部63の該暗号鍵の鍵番号が設定されたエントリのライセンス情報が不一致(本実施例の場合には下位16ビットが不一致)となり、TLB/AMR拡張部63の上記Sビットがクリアされる。
上記ライセンス情報の不一致について説明する。暗号鍵を使用していたプログラムの実行が終了した場合、暗号鍵テーブル64から該暗号鍵が削除され、その暗号鍵のライセンス情報も暗号鍵テーブル64から削除される。このため、プロセッサコア10側でTLB/AMRを参照してメモリアクセスが行なわれると、ライセンスチェック時に、TLB/AMR拡張部63に格納されているライセンス情報と暗号鍵テーブル64の対応するライセンス情報(TLB/AMR拡張部63の該等鍵番号が指す暗号鍵テーブル64のエントリに格納されているライセンス情報)が不一致となる。
TLB/AMR拡張部63のエントリへの登録権利は、ライセンス情報を保管している親プログラムが持つ。上述したように、TLB/AMR拡張部63のエントリに登録された鍵番号(Key ID)は暗号鍵テーブル64のエントリ番号となっており、TLB/AMR拡張部63のエントリに登録された鍵番号を用いて、暗号鍵テーブル64から該鍵番号の暗号鍵(ENCKEY)を暗号処理パイプ62に渡すことができる。
[暗号鍵テーブルの管理]
本実施例のセキュアプロセッサにおいては、暗号鍵テーブル64の管理は、「鍵認証」、「鍵生成」、「鍵保存」及び「鍵削除」の4つの処理により行なわれる。
{鍵認証処理}
図9Aは、鍵認証処理におけるセキュアハードウェアの動作概要を示す模式図である。
図9Aに示すセキュアハードウェアで行なわれる鍵認証処理の概要は、以下の通りである。
鍵認証の制御手順について説明する。
(1)暗号鍵テーブル64から空きエントリを選択する。本実施例のセキュアプロセッサでは、プロセッサコア10で実行されるプログラムが暗号鍵テーブル64を管理する。この管理は、例えば、セキュアプロセッサの記憶領域に暗号鍵テーブル64の管理テーブルを実装し、前記プログラムがその管理テーブルを管理することで実現する。
(2)親プログラムは、子プログラムのコードまたはデータの「鍵認証情報」(鍵署名(S1)、署名検証鍵(Kp2)、署名検証鍵署名(S2))、「空きエントリ番号」(暗号鍵テーブル64の空きエントリのエントリ番号)、「鍵属性」及び「公開鍵Kpx1で公開鍵暗号化された暗号鍵Ks1」を、セキュアアシスト80の公開IF81に設けられたレジスタに設定する。すなわち、図9Aに示すように、鍵署名、署名検証鍵、署名検証鍵署名を、それぞれ、公開IF81内のレジスタ811、812、813に設定する。また、空きエントリ番号と鍵属性を、それぞれ、公開IF81内のレジスタ814、815に設定する。さらに、「公開鍵Kp1で暗号化された暗号鍵(秘密鍵)Kc」をレジスタ817に設定する。
(3)親プログラムは、「認証起動コマンド」を公開IF81内のコマンドレジスタ816に設定する。これにより、セキュアアシスト80を起動され、セキュアハードウェアによる鍵認証処理(ハードウェア鍵認証処理)が実行される。このハードウェア鍵認証処理は、セキュアアシスト80内のセキュアコントローラ82(認証ステートマシン)により行なわれる。認証ステートマシンがハードウェア鍵認証処理をおこなっている間、親プログラムはその鍵認証処理の終了待ち状態に入る。
(3)認証ステートマシンは、公開IF81のレジスタ811〜813から鍵署名、署名検証鍵、署名検証鍵署名を読み出し、それらと自ブロック内の認証リスト87に格納されているルート鍵を用いて鍵認証を行う。ルート鍵とは、認証の最上位に位置する鍵であり、例えば、図3Cにおいては公開鍵Kp3が該当する。認証は、ルート鍵が正しく受け渡されているという前提で行なわれるので、本実施例では、ルート鍵をハードウェア化して改変されないような工夫をしている。
(4)認証ステートマシンは鍵認証処理が終了すると、その処理結果を示す信号を公開鍵演算83(84)に出力する。認証ステートマシンは、上記鍵認証が正しく終了した場合には、公開IF81のレジスタ814、815からそれぞれ空きエントリ番号と鍵番号を読み出し、その空きエントリ番号が指す暗号鍵テーブル64のエントリのSビットを“1”にセットすると共に、該エントリに上記鍵属性を設定する。認証ステートマシンは、さらに鍵認証結果を示す認証ステイタスを公開IF81の認証ステイタスレジスタ818に設定する。
(5)公開鍵演算器83(84)は、認証ステートマシンから入力される鍵認証結果が認証ステートマシンの鍵認証が正しく終了した信号を示していれば、公開鍵暗号化された暗号鍵Kcをルート鍵821内に格納されている図示しない秘密鍵Ks1で復号し、その復号された暗号鍵Kcを暗号鍵テーブル64の前記エントリに設定する。また、乱数発生器86を起動する。
(6)乱数発生器86乱数発生器86は生成したライセンス情報(32ビット)を暗号鍵テーブル64の前記エントリに設定すると共に、そのライセンス情報を公開IF81のライセンスレジスタ819に設定する。
(7)セキュアアシスト80は、上記のようにして暗号鍵テーブル64が更新されると、親プログラムに「鍵認証処理終了」の割込みを通知する。
(8)親プログラムは、公開IF81の認証ステイタスレジスタ818から認証ステイタスを読み出す。そして、鍵認証が確認し、鍵認証が正しければ公開IF81のライセンスレジスタ819からライセンス情報を取得・保管する。
{認証モード1の鍵認証処理}
図9Bは、認証モード1における認証処理の手順を示すフローチャートである。
同図の右側のソフトウェア処理はプロセッサコア10で実行されるプログラムの処理手順を示し、同図の左側のハードウェア処理はセキュアアシスト80内のセキュアコントローラ82により行なわれる処理手順を示す。
プログラムは暗号鍵テーブル64の空きエントリを検索し(S11)、その空きエントリのエントリ番号(空きエントリ番号)、鍵認証情報(鍵署名、署名検証鍵、署名検証鍵署名)、鍵属性をセキュアアシスト80の公開IF81にレジスタに設定する(S12)。
プログラムは、次に、公開IF81のコマンドレジスタ816に認証起動コマンドを設定し(S13)、セキュアアシスト80からの割り込み待ちに入る(S14)。
ステップS13で認証起動コマンドがコマンドレジスタ816に設定されることにより、セキュアアシスト80内のセキュアコントローラ82が認証ステートマシンを起動する(S15)。認証ステートマシンは、署名検証鍵署名をルート鍵(署名検証鍵)で復号する処理(S16)、署名検証鍵をハッシュ演算する処理(S17)、鍵署名をその署名検証鍵で公開鍵復号する処理(S18)及び公開鍵暗号化された鍵(公開鍵暗号化鍵)をハッシュ演算する処理(S19)の4つの処理を並列起動する。
認証ステートマシンは、ステップS16とステップS17の処理結果を比較する(S20)と共に、ステップS18とステップS19の処理結果を比較する(S21)。そして、ステップS20の比較結果が成功か失敗かを判断すると共に(S22)、ステップS21の比較結果が成功か失敗かを判断する(S23)。ステップS22またはステップS23のいずれかが失敗だった場合には、公開IF81の認証ステイタスレジスタ818に「エラーステイタス」を設定する(S24)。一方、ステップS22とステップS23の比較結果が共に成功であった場合には、公開鍵暗号鍵をハードウェア秘密鍵で復号(公開鍵復号)する処理(S26)と乱数発生器86を起動する処理の2つの処理を並列起動する(S25)。
認証ステートマシンは、ステップS26の処理が終了すると、その処理で得られた鍵と、公開IF81のレジスタ815に設定されている鍵属性並びに“1”のSビットを、公開IF81のレジスタ814に設定されている空きエントリ番号が指定する暗号鍵テーブル64のエントリ(指定エントリ)に設定する(S28)。また、ステップS29で乱数発生器86により生成されたライセンス情報を、暗号鍵テーブル64の前記指定エントリと公開IF81のライセンスレジスタ819に設定する(S29)。
認証ステートマシンは、ステップS28とステップS29の処理が共に終了すると、公開IF81の認証ステイタスレジスタ818に「成功ステイタス」を設定する(S30)。
認証ステートマシンは、ステップS24またはS30の処理が終了すると、プロセッサコア10に対する割込みを生成する(S31)。
上記割込みの生成により、プロセッサコア10上で実行されている親プログラムに割込みが発生する(S32)。親プログラムは、その割込みを受けて、セキュアアシスト80の公開IF81の認証ステイタスレジスタ818からステイタス情報を取得し、認証モード1における鍵認証が成功か失敗のいずれであったかを判断する(S33)。そして、成功であったと判断すると、セキュアアシスト80の公開IF81のライセンスレジスタ819からライセンス情報を読み出し、それを所定の保存域に保存し(S34)、鍵認証を終了する(S35)。
{認証モード2の鍵認証処理}
図9Cは、認証モード2における認証処理の手順を示すフローチャートである。
認証モード2では、コード暗号鍵の認証に加え、さらにページ検証を行う。このページ検証は、セキュアDMA70のハッシュ演算機能を用いて行なわれる。
図9Cにおいて、図9Bのステップと同じ処理を行うステップには同じ符号を付与している。以下に述べる図9Cのフローチャートの説明においては、図9Bのフローチャートとは異なる処理手順、すなわち認証モード1が備えていない認証モード2特有の処理手順についてのみ説明する。
親プログラムがステップS11〜S13の処理を行ない、セキュアアシスト80の公開IF81のコマンドレジスタ816に認証起動コマンドが設定されると、セキュアアシスト80内のセキュアコントローラ82で認証モード2の認証ステートマシン(以下、単に認証ステートマシンと記載)が起動される(S45)。
認証ステートマシンは、図9BのステップS16〜S19の4つの処理に加え、ページ署名をその署名検証鍵で公開鍵復号する処理(S46)とセキュアDMA70の起動処理(S47)を並列起動する。
セキュアDMA70は、ステップS47のページ署名が行なわれたページの命令コードまたはデータに対しハッシュ演算を行い、その演算結果をセキュアコントローラ82(認証ステートマシン)に出力する(S48)。
認証ステートマシンは、ステップS46で得られた結果とステップS48で得られた結果を比較し、双方の結果が一致するか(ページ検証が成功であるか)、不一致であるか(ページ検証が失敗であるか)判断する(S50)。このページ検証結果と、ステップS22及びステップS23の認証結果の全てが成功であるか判断し、それら全てが成功である場合にのみ、ステップS26とステップS28の処理を並列起動する。続いて、図9Bで説明したステップS28〜S31の処理が行なわれ、プロセッサコア10に割込みが通知される。
このように、認証モード2では、認証モード1の認証に加え、さらにページ検証が行なわれ、ページが改竄されていないどうか調べる。
{鍵生成処理}
本実施例の鍵生成処理では、暗号化用の鍵が生成され、その鍵が暗号鍵テーブル64に登録される。この鍵生成により、その鍵を持つプログラムのデータ空間の確保・生成が行なわれる。
図10Aは、鍵生成処理におけるセキュアハードウェアの動作概要を示す模式図である。
図10Aに示すセキュアハードウェアで行なわれる鍵生成処理の概要は、以下の通りである。
(1)プロセッサコア10で実行されるプログラム(ソフトウェア)は、暗号鍵テーブル64の空きエントリが選択する。
(2)前記プログラムは、「空きエントリの番号(空きエントリ番号)」、「鍵属性」を、それぞれ、セキュアアシスト80の公開IF81内のレジスタ814、815に設定する。(3)前記プログラムは、「鍵生成コマンド」を公開IF81内のコマンドレジスタ815に設定する。これにより、セキュアコントローラ82の鍵生成ステートマシン(鍵生成STM)が起動され、鍵生成ステートマシンは鍵生成処理を実行する。
(4)鍵生成ステートマシンは、乱数発生器86を起動し、乱数発生器86に「鍵」と「ライセンス情報」を生成させる。
(5)乱数発生器86は、生成したライセンス情報を公開IF81のライセンスレジスタ819に設定すると共に、暗号鍵テーブル64の前記空きエントリ番号を有するエントリに登録する。また、乱数発生器86は、生成した鍵を鍵生成ステートマシンに出力する。(6)鍵生成ステートマシンは、乱数発生器86から鍵を入力すると、その鍵を暗号鍵テーブル64の前記エントリに登録すると共に、そのエントリのSビットを“1”に設定する。鍵生成ステートマシンは、さらに、公開IF81のレジスタ815から鍵属性を読み出し、それを暗号鍵テーブル64の前記エントリに登録する。
(7)鍵生成ステートマシンは、以上のようにして鍵生成処理を終了すると、鍵生成処理が成功したかどうかを示すステイタス情報を生成ステイタスレジスタ820に設定してから、鍵生成処理の終了を割込みにより前記プログラムに通知する。
図10Bは、本実施例のセキュアプロセッサにより行なわれる鍵生成処理のより詳細な手順を示すフローチャートである。同図右側の破線枠内がプロセッサコア10で実行されるプログラムのよるソフトウェア処理を示し、左側がセキュアアシスト80内のセキュアコントローラ82によるハードウェア処理を示す。
プロセッサコア10で実行されるプログラムは、暗号鍵テーブル64の空きエントリを検索し(S61)、その検索により得られた空きエントリのエントリ番号(空きエントリ番号)と鍵属性をセキュアコントローラ82の公開IF81のレジスタ814、815に設定する(S62)。続いて、プログラムは、鍵生成コマンドをコマンドバッファ61の公開IF81のコマンドレジスタ816に設定し(S63)、セキュアアシスト80からの割込み待ちに入る(S64)。
ステップS63で、コマンドレジスタ816に鍵生成コマンドが設定されることにより、セキュアコントローラ82で生成ステートマシンが起動される(S65)。
生成ステートマシンは、鍵生成とライセンス情報の2つの処理を並列起動し(S66)、乱数発生器86を起動する(S67)と共に、乱数発生器86を起動する(S68)。こここで、上記2つの並列処理は共に乱数発生器86で行なわれる。この場合、乱数発生器86を2つ設け、ステップS67での鍵生成とステップS68でのライセンス情報生成の処理を、2つの乱数発生器86が分担して行うような構成にしてもよい。
生成ステートマシンは、ステップS67の処理が終了すると、暗号鍵テーブル64の空きエントリ番号で指定されるエントリ(指定エントリ)に、ステップS67で得られた「鍵」と公開IF81のレジスタ815に設定されている「鍵属性」、さらに、“1”のSビットを登録する(S69)。また、ステップS68の処理が終了すると、暗号鍵テーブル64の指定エントリに、ステップS68で生成されたライセンス情報(32ビット)を登録する。さらに、乱数発生器86から出力される該ライセンス情報を公開IF81のライセンスレジスタ819に設定する(S70)。
生成ステートマシンは、ステップS69とステップS70の処理が共に終了すると、「成功ステイタス情報」を生成ステイタスレジスタ820に設定する(S71)。そして、プロセッサコア10で実行されている前記プログラムに対する割込みを生成・出力する(S72)。
プロセッサコア10で割込み待ち状態にあったプログラムは、前記割込み発生を入力すると(S73)、セキュアアシスト80の公開IF81の生成ステイタスレジスタ820に設定されているステイタス情報を読み出し、生成ステートマシンによる鍵生成が成功したか判断する(S74)。そして、鍵生成が成功であると判断すると、セキュアアシスト80の公開IF81のライセンスレジスタ819からライセンス情報(32ビット)を読み出し、それを所定領域に保存し(S75)、鍵生成処理を正常終了する(S76)。
一方、ステップS74で、生成ステートマシンによる鍵生成が失敗であると判断すると、鍵生成処理をエラー終了する(S77)。
このように、プロセッサコア10で実行されるプログラムとセキュアハードウェアの連携により行なわれる鍵生成処理において、鍵とそのライセンス情報を生成し、それらを“1”のSビットと共に暗号鍵テーブル64の空きエントリに登録することができる。また、前記プログラムは、上記暗号鍵テーブル64に登録された鍵のライセンス情報を保管することができる。
{鍵保存処理}
図11Aは、本実施例のセキュアプロセッサの鍵保存処理を行うハードウェア機構を示すブロック図である。
同図に示すハードウェア機構による鍵保存処理の手順の概要を説明する。この鍵保存処理は、暗号鍵テーブル64に登録されている鍵をプロセッサコア10で実行されているプログラムが保存する処理である。このとき、鍵と共に、その鍵の認証情報(鍵署名、署名検証鍵、署名検証鍵署名)も保存される。また、鍵は公開鍵暗号化されて保存される。
(1)セキュアプロセッサで実行されるプログラムは、保存するする暗号鍵の番号(保存鍵番号)と、その鍵のライセンス情報を、それぞれ、セキュアアシスト80の公開IF81内のレジスタ814、ライセンスレジスタ819に設定する。
(2)前記プログラムは、公開IF81内のコマンドレジスタ816に鍵保存コマンドを設定する。
(3)保存ステートマシン(セキュアコントローラ82)が起動し、公開IF81のライセンスレジスタ819に設定されているライセンス情報と暗号鍵テーブル64の前記保存鍵番号が指すエントリ(指定エントリ)に設定されているライセンス情報を比較し、ライセンスチェックを行う。
(4)保存ステートマシンはライセンスチェックにおいて両ライセンス情報が一致していれば、公開鍵演算器83(84)を起動する。公開鍵演算器83(84)は、暗号鍵テーブル64の指定エントリに登録されている鍵(暗号鍵)Kcを、保存ステートマシンから入力されるルート鍵821(公開鍵Kp1)で暗号化し、その公開鍵Kp1で暗号化された鍵(公開鍵暗号化鍵)Kcをレジスタ817に設定する。また、保存ステイタスレジスタ822に成功ステイタスを設定する。
(5)保存ステートマシンが、鍵保存処理の終了を、割込みにより前記プログラムに通知する。
図11Bは、本実施例のセキュアプロセッサによる鍵保存処理の手順を示すフローチャートである。同図右側のプロセッサコア10で実行されるプログラムによる破線枠内がソフトウェア処理、左側の破線枠内がセキュアアシスト80のセキュアコントローラ82(保存ステートマシン)によるハードウェア処理を示す。
前記プログラムは、保存する鍵の番号(保存鍵番号)とその鍵のライセンス情報を、それぞれ、セキュアコントローラ82の公開IF81内のレジスタ814とライセンスレジスタ819に設定する(S81)。そして、公開IF81内のコマンドレジスタ816に保存コマンドを設定し(S82)、保存ステートマシンからの割込み待ち状態に入る(S83)。
該保存コマンドの設定により、セキュアコントローラ82で保存ステートマシンが起動する(S84)。起動された保存ステートマシンは、公開IF81内のライセンスレジスタ819に設定されたライセンス情報と暗号鍵テーブル64の前記保存鍵番号が指すエントリ(指定エントリ)に登録されているライセンス情報を比較するライセンスチェックを行う(S85)。
保存ステートマシンは、該ライセンスチェックの結果を判断し(S96)、ライセンスチェックが成功(両方のライセンス情報が一致)であれば、暗号鍵テーブル64の前記指定エントリに登録された鍵を読み出し、その鍵を公開鍵演算器83(84)に入力させる。保存ステートマシンは、また、ルート鍵821内にある図示しない秘密鍵Ks1のペアである公開鍵Kp1を公開鍵演算器83(84)に出力する。公開鍵演算器83(84)は、入力される鍵(暗号鍵)Kcを公開鍵Kp1により暗号化し、公開鍵Kp1で暗号化された鍵Kc(公開鍵暗号化鍵)を公開IF81内のレジスタ817に設定する(S87)。
保存ステートマシンは、公開鍵演算器83(84)によって生成された公開鍵暗号化された認証情報(鍵署名、署名検証鍵、署名検証鍵署名)をレジスタ811〜813に設定する(S88)。保存ステートマシンは、暗号鍵テーブル64から前記指定エントリを削除し(S89)、公開IF81内の保存ステイタスレジスタ822に成功ステイタスを設定する(S90)。
一方、保存ステートマシンは、ステップS86でライセンスチェックの結果が失敗であると判断すると、保存ステイタスレジスタ822にエラーステイタスを設定する(S91)。
保存ステートマシンは、ステップS90またはステップS91が終了すると、プロセッサコア10で実行中の前記プログラムに割込みを通知する(S92)。
前記プログラムは、保存ステートマシンからの割込みが発生すると(S93)、公開IF81内の保存ステイタスレジスタ822からステイタス情報を読み出し、そのステイタス情報を基に、保存ステートマシンによる鍵保存処理が成功したかどうか判断し(S94)、成功であれば、公開IF81内のレジスタ817から公開鍵暗号化鍵(公開鍵Kp1で暗号化された鍵Kc9を読み出すと共に、レジスタ811〜813から認証情報(鍵署名、署名検証鍵、署名検証鍵署名)を読み出し、それらを所定の記憶域に保存し(S96)、鍵保存を終了する(S96)。一方、失敗であれば、エラー終了する(S97)。
このようにして、プロセッサコア10で実行するプログラムは、鍵保存コマンドを使用することにより、セキュアハードウェアと連携して、セキュアパイプ60の暗号鍵テーブル64に登録されている鍵を(但し、公開鍵暗号化された形式で)、その認証情報と共に取得・保存できる。
{鍵削除処理}
図12Aは、本実施例のセキュアプロセッサの鍵削除処理におけるセキュアハードウェアの動作概要を示す模式図である。
鍵削除処理の概要は、以下のような手順で行なわれる。
(1)セキュアプロセッサで実行されるプログラムが、削除する鍵の鍵番号(削除鍵番号)をセキュアアシスト80の公開IF81内のレジスタ814に設定すると共に、その鍵のライセンス情報をライセンスレジスタ819に設定する。
(2)前記プログラムは、コマンドレジスタ816に鍵削除コマンドを設定する。
(3)該鍵削除コマンドの設定により、セキュアアシスト80のセキュアコントローラ82(削除ステートマシン)が起動する。削除ステートマシンは、ライセンスチェック部65。ライセンスチェック部65は、公開IF81のライセンスレジスタ819に設定されているライセンス情報と暗号鍵テーブル64の前記削除鍵番号が指すエントリに登録されているライセンス情報を比較し、両者が一致するか調べる(ライセンスチェック)。
(4)ライセンスチェック部65は、ライセンスチェックにより両者のライセンス情報が一致すると、暗号鍵テーブル64の前記削除鍵番号が指すエントリ(指定鍵のエントリ)を削除する。
(5)ライセンスチェック部65は、鍵削除処理の終了を、割込みにより前記プログラムに通知する。
図12Bは、本実施例のセキュアプロセッサによる鍵削除処理の手順を示すフローチャートである。同図右側の破線枠内はプロセッサコア10で実行されるプログラムによるソフトウェア処理を示し、左側の破線枠内はセキュアアシスト80内のセキュアコントローラ82(削除ステートマシン)の制御により行なわれるハードウェア処理の手順を示すフローチャートである。
前記プログラムは、削除する鍵の番号(削除鍵番号)とその鍵のライセンス情報(16ビット)を、それぞれ、セキュアコントローラ82の公開IF81内のレジスタ814とライセンスレジスタ819に設定する(S101)。そして、公開IF81内のコマンドレジスタ816に削除コマンドを設定し(S102)、削除ステートマシンからの割込み待ち状態に入る(S103)。
該削除コマンドの設定により、セキュアコントローラ82で削除ステートマシンが起動する(S104)。起動された保存ステートマシンは、公開IF81内のライセンスレジスタ819に設定されたライセンス情報と暗号鍵テーブル64の前記削除鍵番号が指すエントリ(削除指定エントリ)に登録されているライセンス情報を比較するライセンスチェックを行う(S105)。
削除ステートマシンは、該ライセンスチェックの結果を判断し(S106)、ライセンスチェックが成功(両方のライセンス情報が一致)であれば、暗号鍵テーブル64の前記削除指定エントリを削除し(S107)、公開IF81内の削除ステイタスレジスタ824に成功ステイタスを設定する(S108)。
一方、削除ステートマシンは、ステップS106でライセンスチェックの結果が失敗であると判断すると、削除ステイタスレジスタ824にエラーステイタスを設定する(S109)。
削除ステートマシンは、ステップS108またはステップS109が終了すると、プロセッサコア10で実行中の前記プログラムに割込みを通知する(S110)。
前記プログラムは、保存ステートマシンからの割込みが発生すると(S111)、公開IF81内の削除ステイタスレジスタ824からステイタス情報を読み出し、そのステイタス情報を基に、削除ステートマシンによる鍵削除処理が成功したかどうか判断し(S112)、成功であれば、鍵削除を終了する(S113)。一方、失敗であれば、エラー終了する(S114)。
このように、プロセッサコア10で動作するプログラムは、セキュアコントローラ82の公開IF81に削除コマンドを設定することにより、セキュアハードウェアと連携して、暗号鍵テーブル64に登録されている鍵を削除することができる。
[TLB/AMR拡張部63の操作]
TLB/AMR拡張部63の基本操作は3つである。
TLB/AMRエントリ登録
この操作は、暗号鍵テーブル64に登録済みの鍵について、その鍵のライセンスを持つプログラム(認証済プログラム)が自空間のTLB/AMR拡張部63に対して、その鍵を連携させる操作である。この操作には、既に登録済みのTLB/AMR拡張部63のエントリ情報を更新する操作も含まれる。
TLB/AMRエントリ削除
この操作は、暗号鍵テーブル64に登録されている鍵に連携されているTLB/AMR拡張部63のエントリを個別に削除する操作である。この操作は、TLB/AMR拡張部63のエントリの上書き、または暗号鍵テーブル64から鍵を削除することによっても可能である。暗号鍵テーブル64の鍵を削除したときには、その鍵に連携するTLB/AMR拡張部63のエントリが、次回のTLB/AMR拡張部63へのアクセス時に消去される。
TLB/AMRエントリ無効化
この操作は、TLB/AMR拡張部63のエントリに登録されている鍵のライセンス情報と、そのエントリに連携されている暗号鍵テーブル64のエントリに登録されている該鍵のライセンス情報の不一致、またはプロセッサコア10のTLB/AMRのSビット、TLB/AMR拡張部63のSビット及び暗号鍵テーブル64のSビットが全て一致しないときに、TLB/AMR拡張部63の該当エントリ(TLB/AMRのセキュア拡張機能)が無効化される操作である。
{TLB/AMRエントリ登録}
TLB/AMRエントリ登録操作の処理を、図13A、13Bを参照しながら説明する。
図13Aは、プロセッサコア10のソフトウェア処理とセキュアアシスト80内のセキュアコントローラ82によるハードウェア処理との連携により行なわれるTLB/AMRエントリ登録操作の処理手順を示すフローチャートであり、図の左の破線枠内が前記ソフトウェア処理を、図の右の破線枠内が前記ハードウェア処理を示す。図13Bは、TLB/AMR登録操作の処理におけるセキュアハードウェアの動作を示す摸式図である。
プロセッサコア10で実行中のプログラム(認証済プログラム)は、TLB/AMRミスが発生すると(S120)、既存のTLB/AMRミス処理を実行する(S121)。この既存のTLB/AMRミスの処理内容は公知なので、ここではその説明を省略する。
プログラムは、そのプログラム管理情報から鍵番号とライセンス情報(32ビット保存されているうちの下位16ビット)を取得し(S122)、上記TLB/AMRミスが発生したTLB/AMRのエントリ番号(TLB/AMR登録エントリ番号)、鍵番号、上記ライセンス情報及び登録コマンド(TLB/AMR拡張部のエントリ登録コマンド)を、それぞれ、セキュアアシスト80の公開IF81内の該当レジスタに設定する(S123)。そして、セキュアコントローラ82の登録ステートマシンのステイタス更新待ち状態に入る(S124)。
ステップS123の処理により、図13Bに示すように、公開IF81のレジスタ825にTLB/AMR登録番号(前記TLB/AMR登録エントリ番号)が、レジスタ814に登録鍵番号が、ライセンスレジスタ819にライセンス情報が、コマンドレジスタ816に登録コマンドが設定される。
ステップS123でコマンドレジスタ816に登録コマンドが設定されると、セキュアコントローラ82のセキュアコントローラ82で登録ステートマシンが起動される(S125)。
登録ステートマシンは、公開IF81のレジスタ816に設定されたライセンス情報とTLB/AMR拡張部63の前記TLB/AMRエントリ番号が指すエントリに登録されているライセンス情報の下位16ビットを比較し(S126)、両者が一致するか判断する(S127)。
上記ライセンス情報の比較は、図13Bに示すように、セキュアパイプ60のライセンスチェック部65により行なわれる。
登録ステートマシンは、ステップS127でのライセンスチェックが成功(2つのライセンス情報が一致)であれば、TLB/AMR拡張部の前記TLB/AMRエントリ番号が指すエントリの鍵番号とライセンス情報を更新し、該エントリのSビットに、暗号鍵テーブル64の前記鍵番号が指すエントリ(登録鍵エントリ)のSビットをコピーする(S128)。
ステップS128での処理におけるセキュアハードウェアの動作を、図13Bを参照しながら説明する。ライセンスチェック部65は、上述した2つのライセンス情報を比較し(ライセンスチェック)、その比較結果(ライセンスチェック結果)をAND演算回路827に出力する。ライセンスチェック部65は、2つのライセンス情報が一致した場合には“1”(成功)の信号を、不一致の場合には“0”(失敗)の信号をANDゲート部830に出力する。ANDゲート部830には、暗号鍵テーブル64の前記登録鍵エントリのSビット(信号)も出力される。ANDゲート部830は、上記2つの信号の演算結果をTLB/AMR拡張部63のレジスタ825に設定されたTLB/AMRエントリ番号が指すエントリ(登録指定エントリ)とプロセッサコア10に出力する。これにより、前記ライセンスチェックが成功であった場合には、TLB/AMR拡張部63の前記登録指定エントリとプロセッサコア10には、暗号鍵テーブル64の前記暗号鍵テーブル64の前記鍵番号が示すエントリに登録されているSビットがそのまま出力される。そして、そのSビットがTLB/AMR拡張部63の前記登録指定エントリのSビット格納域にコピーされる(TLB/AMR拡張部63のSビット更新)。また、前記暗号鍵テーブル64に登録されていたSビットは、Sビット信号線91を介して、プロセッサコア10にも出力される。プロセッサコア10は、TLB/AMRの該当エントリ(Sビットが更新されたTLB/AMR拡張部63の前記登録指定エントリに対応するエントリ)のSビット格納域に、Sビット信号線91から入力されるSビットをコピーし、TLB/AMRの該当エントリのSビットを更新する。
登録ステートマシンは、ステップS128の処理が終了すると、公開IF81内の登録ステイタスレジスタ827に成功ステイタスを設定する(S129)。一方、ステップS127でのライセンス情報比較結果が失敗であると判断した場合には、前記登録ステイタスレジスタ827にエラーステイタスを設定する(S130)。
プロセッサコア10で実行中のプログラムは、セキュアアシスト80の公開IF81内に実装された登録ステイタスレジスタ827の更新が完了したと判断すると、登録ステイタスレジスタ827に設定されたステイタスを調べ、TLB/AMR登録が成功したと判断すると、TLB/AMR登録を終了する(S132)。また、TLB/AMR登録が失敗したと判断すると、エラー終了する(S133)。
このようにして、暗号鍵テーブル64に設定済みの鍵について、その鍵の暗号化空間に対応するTLB/AMR拡張部63のエントリに、その鍵の鍵番号、ライセンス情報、及びSビットが設定され、暗号鍵テーブル64とTLB/AMR拡張部63の対応するエントリ同士が前記鍵番号によって連携される。また、TLB/AMR拡張部63のエントリに設定されたSビットが、プロセッサコア10のTLB/AMRの対応エントリにコピーされる。この結果、プロセッサコア10のTLB/AMRのエントリ(前記暗号鍵テーブル64に設定済み鍵の暗号化空間のアドレス変換情報が設定されたエントリ)のSビットと、セキュアプロセッサのセキュアパイプ60内に実装されたTLB/AMR拡張部63の対応エントリのSビットが同一の値に設定される。
{TLB/AMRエントリ削除}
TLB/AMR削除操作の処理を、図14A、14Bを参照しながら説明する。
図14Aは、プロセッサコア10のソフトウェア処理とセキュアアシスト80内のセキュアコントローラ82によるハードウェア処理との連携により行なわれるTLB/AMRエントリ削除操作の処理手順を示すフローチャートであり、図の左の破線枠内が前記ソフトウェア処理を、図の右の破線枠内が前記ハードウェア処理を示す。図14Bは、TLB/AMR削除操作の処理におけるセキュアハードウェアの動作を示す摸式図である。
プロセッサコア10で実行中のプログラム(認証済プログラム)は、TLB/AMR削除処理を開始すると(S140)、既存のTLB/AMR削除処理を実行する(S141)。この既存のTLB/AMR削除処理の内容は公知なので、ここではその説明を省略する。
プログラムは、そのプログラム管理情報からライセンス情報(32ビット保存されているうちの下位16ビット)を取得し(S142)、TLB/AMRの削除するエントリの番号(TLB/AMR削除エントリ番号)、上記ライセンス情報及び削除コマンド(TLB/AMR拡張部のエントリ削除コマンド)を、それぞれ、セキュアアシスト80の公開IF81内の該当レジスタに設定する(S143)。そして、セキュアコントローラ82の削除ステートマシンのステイタス更新待ち状態に入る(S144)。
ステップS143の処理により、図14Bに示すように、公開IF81のレジスタ826にTLB/AMRエントリ番号(前記TLB/AMR削除エントリ番号)が、ライセンスレジスタ819にライセンス情報が、コマンドレジスタ816に削除コマンドが設定される。
ステップS123でコマンドレジスタ816に削除コマンドが設定されると、セキュアコントローラ82のセキュアコントローラ82で削除ステートマシンが起動される(S145)。
削除ステートマシンは、公開IF81のレジスタ816に設定されたライセンス情報とTLB/AMR拡張部63の前記TLB/AMR削除エントリ番号が指すエントリに登録されているライセンス情報の下位16ビットを比較し(S146)、両者が一致するか判断する(S147)。
上記ライセンス情報の比較は、図14Bに示すように、セキュアパイプ60のライセンスチェック部65により行なわれる。
削除ステートマシンは、ステップS127でのライセンスチェックが成功(2つのライセンス情報が一致)であれば、TLB/AMR拡張部の前記TLB/AMR削除エントリ番号が指すエントリを削除する(S148)。
ステップS148での処理におけるセキュアハードウェアの動作を、図14Bを参照しながら説明する。ライセンスチェック部65は、上述した2つのライセンス情報を比較し(ライセンスチェック)、両者が一致すればTLB/AMR拡張部63のレジスタ825に設定されたTLB/AMRエントリ番号が指すエントリを削除する。
削除ステートマシンは、ステップS148の処理が終了すると、公開IF81内の削除ステイタスレジスタ828に成功ステイタスを設定する(S149)。一方、ステップS147でのライセンス情報比較結果が失敗であると判断した場合には、前記登録ステイタスレジスタ827にエラーステイタスを設定する(S150)。
プロセッサコア10で実行中のプログラムは、セキュアアシスト80の公開IF81内に実装された削除ステイタスレジスタ828の更新が完了したと判断すると、その削除ステイタスレジスタ828に設定されたステイタスを調べ、TLB/AMR削除処理が成功したと判断すると、TLB/AMR削除を終了する(S152)。また、TLB/AMR登録が失敗したと判断すると、エラー終了する(S153)。
このように、プロセッサコア10で実行中の認証済プログラムは、暗号鍵テーブル64に登録された鍵と連携されているTLB/AMR拡張部63のエントリを、削除コマンドとライセンス情報を用いて個別に削除することができる。
{TLB/AMRエントリ無効化}
図15は、本実施例のセキュアプロセッサによるTLB/AMRのエントリ無効化操作を模式的に示す図である。
TLB/AMR拡張部63及びプロセッサコア10のTLB/AMRのエントリは、そのSビットを“0”にクリアすることによって無効化される。エントリを有効化するにはエントリの再登録が必要である。
セキュアプロセッサは、下記(1)、(2)の場合に、上記エントリの無効化操作を行う。
(1)プロセッサコア10のTLB/AMRのエントリ、そのエントリに対応するTLB/AMR拡張部63のエントリ、そのTLB/AMR拡張部63のエントリに連携されている暗号鍵テーブル64のエントリのSビットが一致しない場合。
これは、以下の条件の場合に発生する。
・暗号鍵テーブル64のエントリから鍵が削除された場合
・プロセッサコア10のTLB/AMRのエントリのSビットが“0”にクリアされた場合
・プロセッサコア10のTLB/AMRのエントリが消去された場合
(2)TLB/AMR拡張部63のエントリと該エントリと連携している暗号鍵テーブル64のエントリのライセンス情報が不一致の場合。
これは、以下の条件の場合に発生する。
・暗号鍵テーブル64のエントリから鍵が削除された場合
・暗号鍵テーブル64のエントリに指定された鍵とは異なる鍵が登録された場合
本実施例のセキュアプロセッサは、セキュアハードウェアに設けられたライセンスチェック部65、Sビット一致チェック部831及びORゲート部832が、以下に説明する処理を行うことにより、上記TLB/AMRのエントリの無効化操作を実現する。
プロセッサコア10で実行されるプログラムがバスアクセスを行うと、アクセスされたメモリ空間に対応するTLB/AMRのエントリの番号(TLB/AMRエントリ番号)と該エントリのSビットがセキュアハードウェアに出力される。
セキュアハードウェアのライセンスチェック部65は、プロセッサコア10から入力されるTLB/AMRエントリ番号に対応するTLB/AMR拡張部63のエントリに登録されたライセンス情報とTLB/AMR拡張部63の該エントリに登録された鍵番号が指す暗号鍵テーブル64のエントリに登録されたライセンス情報の下位16ビットを比較し、両者が不一致であれば、不一致検出信号(第1の不一致検出信号)をORゲート部832に出力する。
セキュアハードウェアのSビット一致チェック部831は、プロセッサコア10から入力される前記Sビットと、プロセッサコア10から入力されるTLB/AMRエントリ番号に対応するTLB/AMR拡張部63のエントリに登録されたSビットとTLB/AMR拡張部63の該エントリに登録された鍵番号が指す暗号鍵テーブル64のエントリに登録されたSビットを比較し、それらのSビットが不一致であれば、不一致検出信号(第2の不一致検出信号)をORゲート部832に出力する。
ORゲート部832は、ライセンスチェック部65とORゲート部832からそれぞれ入力される2つの不一致検出信号についてOR演算を施し、第1または第2のいずれかの不一致検出信号が入力されていれば、TLB/AMR拡張部63の該当エントリ(プロセッサコア10から入力されるTLB/AMRエントリ番号に対応するTLB/AMR拡張部63のエントリ)のSビットを“0”にクリアすると共に、プロセッサコア10に対して前記セキュアハードウェアに対して出力したSビットの“0”クリアを指示する。
[セキュアパイプのデータライト動作]
図16は、プロセッサコア10で実行されるプログラムがデータライトコマンドを発行した場合のセキュアパイプ60の動作を示す図である。同図左の破線の矩形枠は、上記データライトコマンドが発行された場合に、CPUコア15から出力されるデータや情報を示す。
プロセッサコア10で実行されるプログラムがデータライトコマンドを発行すると、CPUコア15から、書き込むべき出力データ151(平文データ)が暗号処理パイプ62に、その出力データの書き込みアドレス152とコマンド属性153(この場合は、コマンドがデータライトコマンドであることを示す属性)がコマンドバッファ61に出力される。また、出力データ152の書き込みアドレスが属するメモリ空間のアドレス変換情報が設定されたプロセッサコア10のTLB/AMRのエントリの番号(TLB/AMRエントリ番号)とそのSビットがセキュアパイプ60に出力される。
セキュアパイプ60では、図15で説明した場合と同様の動作により、ライセンスチェック部65とSビット一致チェック部831で、それぞれ、ライセンス情報とSビットの不一致チェックが行なわれる。ライセンスチェック部65とSビット一致チェック部831は、それぞれの不一致検出信号をORゲート部841に出力する。ORゲート部841は、2つの不一致検出信号のOR演算を行い、図15のORゲート部832と同様にTLB/AMR拡張部63の0アクティブであるエントリ無効化信号をTLB/AMR拡張部63に出力すると共に、鍵供給制御部842に1アクティブである鍵供給許可信号を出力する。この鍵供給許可信号は、上記2つの不一致検出信号がアクティブでないとき(ライセンスチェック部65でのライセンスチェックで2つのライセンス情報が一致し、かつ、Sビット一致チェック部831のSビット一致チェックで全てのSビットが“1”となって一致したとき)にアクティブとなる。
鍵供給制御部842は、ORゲート部841からアクティブの鍵供給許可信号を入力すると、暗号鍵テーブル64の該当エントリから鍵(暗号鍵)を読み出し、それを暗号処理パイプ62に出力する。また、このとき、暗号鍵テーブル64の前記該当エントリから上記鍵属性も読み出され、それが暗号処理パイプ62とコマンドバッファ61に供給される。
暗号処理パイプ62は、出力データ151を鍵供給制御部842から供給される鍵属性と暗号鍵を基にして暗号化し、その暗号化により得られた暗号データをローカルバス30に出力する。コマンドバッファ61は、CPUコア15から入力されるアドレス152とコマンド属性153を一時的に格納する。そして、それらを、暗号鍵テーブル64から入力される鍵属性を基に暗号処理パイプ62から暗号データが出力されるまでも遅延時間を考慮した適切なタイミングでローカルバス30に出力する。ローカルバス30に入力される暗号データ、アドレス152及びコマンド属性153はローカルバス30からSDRAMC40に出力される。
図17は、プロセッサコア10で実行されるプログラムがデータ/命令リードコマンドを発行した場合のセキュアパイプ60の動作を示す図である。同図左の破線の矩形枠は、上記データ/命令リードコマンドが発行された場合に、CPUコア15から出力されるデータや情報を示す。
データ/命令リードコマンドが発行された場合のセキュアパイプ60に動作は、基本的には、データライトコマンドが発行された場合と同様である。異なるのは、暗号処理パイプ62がSDRAMC40により読み出されたデータまたは命令コード(これらは、暗号化されている)を鍵供給制御部842から供給される鍵(暗号鍵)と暗号鍵テーブル64から入力される鍵属性を基に復号し、その復号により得られた平文のデータまたは命令コードを入力データ156としてCPUコア15に出力する点である。
また、CPUコア15から出力されるアドレス157がデータまたは命令のリードアドレス、コマンド属性158がデータ/命令リードコマンドの属性情報であり、これらは、CPUコア15からコマンドバッファ61に出力され、コマンドバッファ61からローカルバス30に出力される。
図18は、本実施例のセキュアプロセッサによるプログラム実行制御を示す図である。同図上の破線の矩形枠は命令(コード)空間を示し、同図下の矩形枠はデータ空間を示す。
図18は、OSが起動(ブート)後、3つのプログラムを起動する場合の例を示している。
ブート時は、前述したように、セキュアプロセッサ内蔵のビルトイン鍵で認証されるセキュアブートプログラムによりOSカーネル(命令コード)の鍵認証を行う。OSカーネルは起動すると、鍵生成処理を行い、データ空間を確保し、自身が使用するデータ空間を生成する(図18の(1))。OSカーネルは、次に、プログラム1の起動のため、プログラム1の認証情報を用いて鍵認証を行う(図18の(A))この鍵認証により認証されたプログラム1の命令コードの鍵は、プログラム1の終了まで暗号鍵テーブル64に保管され、プログラム1の終了時に、OSカーネルによりプログラム1の命令コードの鍵削除が行なわれる(図18の(E))。
プログラム1は、その動作区間でプログラム1自身のデータ空間を必要とするため、鍵生成によりそのデータ空間を生成し、そのデータ空間の使用後はプログラム終了に先立って鍵削除を行う(図18の(2)、(6))。
ところで、データ空間の生成、消去に伴う鍵登録、鍵削除は、子プログラムであるプログラム1のように、認証されている空間で動作するプログラムが処理してもよいし、OSカーネルに依頼して、OSカーネルに代行処理してもらってもよい。
プログラム3も、プログラム1と同様な処理を行う(図18の(C)、(4)、(8)、(G))。プログラム2は、何らかの理由でプログラムがいったん停止する場合の例である。プログラム2は、開始と終了の処理はプログラム1、3と同様であるが、OSカーネルの指示による一時停止処理(図18の(D)、(F))の区間において、命令コードの鍵は削除されずに暗号鍵テーブル64に保管されたままとなり、データ鍵については、鍵生成処理により生成された鍵を鍵保存処理により保存し(図18の(5))、実行再開時は、そのデータ鍵の情報を用いて鍵認証処理を行い(図18の(7))、データ鍵生成時に生成されたデータ空間(図18の(3))を再利用する。
上記実施例では、プロセッサコア10のTLB/AMRのエントリにSビットを設け、プロセッサコア10が命令コード時に、その命令コードが属する空間のSビットをセキュアハードウェアに出力することで、セキュアハードウェアにより上記命令コードが認証済みであるか判断するような構成にしているが、必ずしも、プロセッサコア10のTLB/AMRのエントリにSビットを設ける必要はなく、例えば、セキュアパイプ60が、プロセッサコア10での命令コード実行時に、プロセッサコア10からその命令コードの存在するアドレスを受け取り、セキュアパイプ60が上記命令コードが認証済みであるかどうか判断するような構成にすることも可能である。
(付記1)
暗号化された命令コード(暗号化命令コード)を復号して実行するセキュアプロセッサであって、
前記暗号化命令コードを復号して得られる命令コードを実行するプロセッサコアと、
該プロセッサコアで実行されるプログラムからアクセスできない位置に実装されたセキュアバスと、
該セキュアバスに接続され、前記プロセッサコアで実行される前記暗号化命令コードの認証と、前記プロセッサコアが外部と入出力する前記暗号化命令コード及びデータの暗号化/復号化を行うセキュアハードウェアと、
を備えることを特徴とするセキュアプロセッサ。
(付記2)
付記1記載のセキュアプロセッサであって、
前記セキュアハードウェアは、
ビルトイン鍵を記憶する記憶手段を備え、
前記セキュアハードウェアは、前記ビルトイン鍵により暗号化されたセキュアブートプログラムによって初期化され、前記セキュアブートプログラムは、セキュアプロセッサで実行される命令コード認証の起点となることを特徴とする。
(付記3)
付記2記載のセキュアプロセッサであって、
前記セキュアハードウェアは、
前記プロセッサコアが外部と入出力する前記暗号化命令コード及びデータの暗号化/復号化を行う、前記セキュアバスに接続されたセキュアパイプを備えることを特徴とする。
(付記4)
付記2記載のセキュアプロセッサであって、
前記セキュアハードウェアは、
公開インターフェースを介して、プロセッサコアで実行されるプログラムとの間でコマンドや情報を送受信し、公開鍵系暗号処理と公開鍵系認証処理を実行する、前記セキュアバスに接続されたセキュアアシストを備えることを特徴とする。
(付記5)
付記2記載のセキュアプロセッサであって、
DMA転送機能を有し、該DMA転送機能によって転送された命令コードまたはデータのページ検証を行う、前記セキュアバスに接続されたセキュアDMAを、
備えることを特徴とする。
(付記6)
付記2記載のセキュアプロセッサであって、
付記3記載のセキュアパイプと、
付記4記載のセキュアアシストと、
付記5記載のセキュアDMAを備え、
前記セキュアアシストは、前記セキュアパイプと前記セキュアDMAの設定/制御を、前記セキュアバス経由で行うことを特徴とする。
(付記7)
付記3記載のセキュアプロセッサであって、
前記セキュアパイプは、
プロセッサコアで実行される認証済のプログラムにのみ、認証済のデータ空間へのアクセスを許可することを特徴とする。
(付記8)
付記6記載のセキュアプロセッサであって、
前記セキュアパイプは、
公開鍵暗号化された鍵(公開鍵暗号化鍵)と、該公開鍵暗号化鍵のライセンス情報と、該公開鍵暗号化鍵が信頼可能であるか否かを示す第1のフラグが登録されるエントリを有する暗号鍵テーブルと、
前記プロセッサコアのTLB/AMRと一対一に対応するエントリを有し、該エントリ内に、前記暗号鍵テーブルに登録されている暗号鍵の識別情報と、該暗号鍵識別情報が指す前記暗号鍵テーブルのエントリに登録されている第1のフラグのコピーである第2のフラグとライセンス情報が登録されるTLB/AMR拡張部と、
前記TLB/AMR拡張部のエントリに登録されているライセンス情報と、前記TLB/AMR拡張部の該エントリに登録されている暗号鍵識別情報が指す暗号鍵テーブルのエントリに登録されているライセンス情報が一致するか調べるライセンスチェック部と、
を備えることを特徴とする。
(付記9)
付記8記載のセキュアプロセッサであって、
前記プロセッサコアのTLB/AMRのエントリは、前記TLB/AMR拡張部の第2のフラグと同様な機能を有する第3のフラグを有することを特徴とする。
(付記10)
付記8記載のセキュアプロセッサであって、
前記暗号鍵テーブルの空きエントリの管理は、前記プロセッサコアで実行されるプログラムによって管理されることを特徴とする。
(付記11)
付記6記載のセキュアプロセッサであって、
前記セキュアハードウェアは、
命令コードの前記公開鍵暗号化鍵を認証する鍵認証手段と、
該鍵認証手段によって前記公開鍵暗号化鍵が認証されたとき、前記公開鍵暗号化鍵のライセンス情報を生成するライセンス情報生成手段と、
前記鍵認証手段によって前記公開鍵暗号化鍵が認証されたとき、前記公開鍵暗号化鍵を復号する鍵復号手段を備え、
前記ライセンス情報生成手段によって生成されたライセンス情報は、前記認証手段に認証を依頼した前記プロセッサコアで実行中のプログラムによって保存され、前記鍵復号手段によって復号された鍵は前記暗号鍵テーブルに登録されることを特徴とする。
(付記12)
付記11記載のセキュアプロセッサであって、
前記鍵認証手段は、前記公開鍵暗号化鍵の属性、前記公開鍵暗号化鍵の鍵署名、該鍵署名の署名検証鍵及び該署名検証鍵の署名検証鍵署名を基に、前記公開鍵暗号化鍵の認証を行うことを特徴とする。
(付記13)
付記6記載のセキュアプロセッサであって、
前記セキュアハードウェアは、
命令コードの前記公開鍵暗号化鍵を認証する鍵認証手段と、
前記命令コードをページ単位で検証するページ検証手段と、
前記鍵認証手段によって前記公開鍵暗号化鍵が認証され、かつ、前記ページ検証手段により前記命令コードのページが検証されたとき、前記公開鍵暗号化鍵のライセンス情報を生成するライセンス情報生成手段と、
前記鍵認証手段によって前記公開鍵暗号化鍵が認証され、かつ、前記ページ検証手段により命令コードのページが検証されたとき、前記公開鍵暗号化鍵を復号する鍵復号手段を備え、
該ライセンス情報生成手段によって生成されたライセンス情報は、前記認証手段に認証を依頼した前記プロセッサコアで実行中のプログラムによって保存され、前記鍵復号手段によって復号された鍵は前記暗号鍵テーブルに登録されることを特徴とする。
(付記14)
付記13記載のセキュアプロセッサであって、
前記鍵認証手段は、前記公開鍵暗号化鍵の属性、前記公開鍵暗号化鍵の鍵署名、該鍵署名の署名検証鍵及び該署名検証鍵の署名検証鍵署名を基に、前記公開鍵暗号化鍵の認証を行い、
前記ページ検証手段は、前記命令コードのページ署名を基にページ検証を行うことを特徴とする。
(付記15)
付記14記載のセキュアプロセッサであって、
前記鍵認証手段は、前記公開鍵暗号化鍵の属性、前記公開鍵暗号化鍵の鍵署名、該鍵署名の署名検証鍵及び該署名検証鍵の署名検証鍵署名を基に、前記公開鍵暗号化鍵の認証し、
前記ページ検証手段は、前記命令コードのページ署名を基にページ検証をプロセッサコアは、前記第1の検証手段と前記第2の検証手段によって検証された命令コードのみを実行することを特徴とする。
本発明の一実施例でセキュアプロセッサのシステム全体の構成図である。 本実施例のセキュアプロセッサにおける鍵の安全性を維持する起動手順(ブートシーケンス)を説明する図であり、(a)は本実施例のセキュアプロセッサのシステム起動時におけるプログラムの動作フロー(ブートシーケンス)を示す図、(b)は該プログラムのメモリ上のマッピング状態を示す図、(c)は上記動作フローに対応したプロセッサコア10のTLB/AMRとセキュアパイプ60のTLB/AMR拡張部63の設定状態を模式的に示す。本発明の初期値生成方法を概念的に示す図である。 認証モード1をについて説明する図である。 認証モード1でのコード認証において必要な情報を示す図である。 認証モード1におけるコード認証処理の流れを示す図である。 認証モード2における鍵の受け渡しと認証処理を説明する図である。 本実施例のセキュアプロセッサにおけるSビット属性によるプログラムのアクセス制限制御を説明する図である。 Sビットによる制御の関係を示す図である。 本実施例のセキュアプロセッサによるSビットによるアクセス制限を示す図である。 本実施例のセキュアプロセッサによるS=1の親プログラムによる子プログラムの認証手順の概略を示す図である セキュアパイプ内に設けられる暗号鍵テーブルの構成を示す図である。 セキュアパイプ内に設けられるTLB/AMR拡張部の構成を示す図である。 プロセッサコアが備えるTLB/AMRの構成図である。 プロセッサコアのTLB/AMRとセキュアパイプ内のTLB/AMR拡張部との関係を示す図である。 鍵認証処理におけるセキュアハードウェアの動作概要を示す模式図である。 認証モード1における認証処理の手順を示すフローチャートである。 認証モード2おける認証処理の手順を示すフローチャートである。 鍵生成処理におけるセキュアハードウェアの動作概要を示す模式図である。 本実施例のセキュアプロセッサにより行なわれる鍵生成処理のより詳細な手順を示すフローチャートである。 本実施例のセキュアプロセッサの鍵保存処理を行うハードウェア機構を示すブロック図である。 本実施例のセキュアプロセッサによる鍵保存処理の手順を示すフローチャートである。 本実施例のセキュアプロセッサの鍵削除処理におけるセキュアハードウェアの動作概要を示す模式図である。 本実施例のセキュアプロセッサによる鍵削除処理の手順を示すフローチャートである。 プロセッサコアのソフトウェア処理とセキュアアシスト内のセキュアコントローラによるハードウェア処理との連携により行なわれるTLB/AMRエントリ登録操作の処理手順を示すフローチャートである。 TLB/AMR登録操作の処理におけるセキュアハードウェアの動作を示す摸式図である。 プロセッサコア10のソフトウェア処理とセキュアアシスト80内のセキュアコントローラ82によるハードウェア処理との連携により行なわれるTLB/AMRエントリ削除操作の処理手順を示すフローチャートである。 TLB/AMR削除操作の処理におけるセキュアハードウェアの動作を示す摸式図である。 本実施例のセキュアプロセッサによるTLB/AMRのエントリ無効化操作を模式的に示す図である。 プロセッサコアで実行されるプログラムがデータライトコマンドを発行した場合のセキュアパイプの動作を示す図 プロセッサコアで実行されるプログラムがデータ/命令リードコマンドを発行した場合のセキュアパイプの動作を示す図である。 本実施例のセキュアプロセッサによるプログラム実行制御を示す図である。 従来のプロセッサコアが備えるTLB/AMR1501の構成を示す。
符号の説明
10 プロセッサコア
20 2次キャッシュ
30 ローカルバス
60 セキュアパイプ
61 コマンドバッファ
62 暗号処理パイプ
63 TLB/AMR拡張部
64 暗号鍵テーブル
65 ライセンスチェック部
66 セキュアバスIF
70 セキュアDMA
73 共通鍵暗号処理/ハッシュッ処理部
74 セキュアIF
76 セキュアバスIF
80 セキュアアシスト
81 公開IF
82 セキュアコントローラ
83 RSA演算器
84 楕円暗号演算器
85 ハッシュ演算器
86 乱数発生器
87 認証リスト
88 セキュアバスIF
89 セキュアバス
90 セキュアバス
102 鍵署名
103 署名検証鍵
104 署名検証鍵署名
105 ページ署名
301 第1の公開鍵ペア
302 第2の公開鍵ペア
303 第3の公開鍵ペア
311、361 命令コード
312、362 共通鍵暗号化された命令コード
313 電子証明書
314 署名検証鍵(公開鍵Kp2)とその他の情報から成るデータ
320 伝送手段
501 プロセッサコアのTLB/AMR
811〜813 認証情報(鍵署名、署名検証鍵、署名検証鍵署名)の格納レジスタ
814 暗号鍵テーブルのエントリ番号(鍵番号)の格納レジスタ
816 コマンドレジスタ
817 公開鍵暗号化された暗号鍵の格納レジスタ
819 ライセンスレジスタ
820 生成ステイタスレジスタ
822 保存ステイタスレジスタ
824 削除ステイタスレジスタ
827 登録ステイタスレジスタ
828 削除ステイタスレジスタ
830 ANDゲート部
831 Sビット一致チェック部
832 ORゲート部(第1のORゲート部)
841 ORゲート部(第2のORゲート部)

Claims (8)

  1. 暗号化された命令コードである暗号化命令コードを復号して実行するセキュアプロセッサであって、
    前記暗号化命令コードを復号して得られる命令コードを実行するプロセッサコアと、
    該プロセッサコアで実行されるプログラムからアクセスできない位置に実装されたセキュアバスと、
    該セキュアバスに接続され、前記プロセッサコアで実行される前記暗号化命令コードの認証と、前記プロセッサコアが外部と入出力する前記暗号化命令コード及びデータの暗号化/復号化を行うセキュアハードウェアとを備え、
    前記セキュアハードウェアは、
    前記プロセッサコアが外部と入出力する前記暗号化命令コード及びデータの暗号化/復号化を行う、前記セキュアバスに接続されたセキュアパイプを備え、
    前記セキュアパイプは、
    公開鍵暗号化された鍵である公開鍵暗号化鍵と、該公開鍵暗号化鍵のライセンス情報と、該公開鍵暗号化鍵が信頼可能であるか否かを示す第1のフラグが登録されるエントリを有する暗号鍵テーブルと、
    前記プロセッサコアのTLB/AMRと一対一に対応するエントリを有し、該エントリ内に、前記暗号鍵テーブルに登録されている暗号鍵の識別情報と、該暗号鍵識別情報が指す前記暗号鍵テーブルのエントリに登録されている第1のフラグのコピーである第2のフラグとライセンス情報が登録されるTLB/AMR拡張部と、
    前記TLB/AMR拡張部のエントリに登録されているライセンス情報と、前記TLB/AMR拡張部の該エントリに登録されている暗号鍵識別情報が指す暗号鍵テーブルのエントリに登録されているライセンス情報が一致するか調べるライセンスチェック部と、
    を備えることを特徴とするセキュアプロセッサ。
  2. 請求項1記載のセキュアプロセッサであって、
    前記プロセッサコアのTLB/AMRのエントリは、前記TLB/AMR拡張部の第2のフラグと同様な機能を有する第3のフラグを有することを特徴とする。
  3. 請求項1記載のセキュアプロセッサであって、
    前記セキュアハードウェアは、
    ビルトイン鍵を記憶する記憶手段を備え、
    前記セキュアハードウェアは、前記ビルトイン鍵により暗号化されたセキュアブートプログラムによって初期化され、前記セキュアブートプログラムは、セキュアプロセッサで実行される命令コード認証の起点となることを特徴とする。
  4. 請求項記載のセキュアプロセッサであって、
    前記セキュアハードウェアは、
    公開インターフェースを介して、プロセッサコアで実行されるプログラムとの間でコマンドや情報を送受信し、公開鍵系暗号処理と公開鍵系認証処理を実行する、前記セキュアバスに接続されたセキュアアシストを備えることを特徴とする。
  5. 請求項記載のセキュアプロセッサであって、
    DMA転送機能を有し、該DMA転送機能によって転送された命令コードまたはデータのページ検証を行う、前記セキュアバスに接続されたセキュアDMAを、
    備えることを特徴とする。
  6. 請求項記載のセキュアプロセッサであって、
    求項4記載のセキュアアシストと、
    請求項5記載のセキュアDMAを備え、
    前記セキュアアシストは、前記セキュアパイプと前記セキュアDMAの設定/制御を、前記セキュアバス経由で行うことを特徴とする。
  7. 請求項6記載のセキュアプロセッサであって、
    前記セキュアハードウェアは、
    命令コードの前記公開鍵暗号化鍵を認証する鍵認証手段と、
    該鍵認証手段によって前記公開鍵暗号化鍵が認証されたとき、前記公開鍵暗号化鍵のライセンス情報を生成するライセンス情報生成手段と、
    前記鍵認証手段によって前記公開鍵暗号化鍵が認証されたとき、前記公開鍵暗号化鍵を復号する鍵復号手段を備え、
    前記ライセンス情報生成手段によって生成されたライセンス情報は、前記認証手段に認証を依頼した前記プロセッサコアで実行中のプログラムによって保存され、前記鍵復号手段によって復号された鍵は前記暗号鍵テーブルに登録されることを特徴とする。
  8. 請求項6記載のセキュアプロセッサであって、
    前記セキュアハードウェアは、
    命令コードの前記公開鍵暗号化鍵を認証する鍵認証手段と、
    前記命令コードをページ単位で検証するページ検証手段と、
    前記鍵認証手段によって前記公開鍵暗号化鍵が認証され、かつ、前記ページ検証手段により前記命令コードのページが検証されたとき、前記公開鍵暗号化鍵のライセンス情報を生成するライセンス情報生成手段と、
    前記鍵認証手段によって前記公開鍵暗号化鍵が認証され、かつ、前記ページ検証手段により命令コードのページが検証されたとき、前記公開鍵暗号化鍵を復号する鍵復号手段を備え、
    該ライセンス情報生成手段によって生成されたライセンス情報は、前記認証手段に認証を依頼した前記プロセッサコアで実行中のプログラムによって保存され、前記鍵復号手段によって復号された鍵は前記暗号鍵テーブルに登録されることを特徴とする。
JP2006046051A 2006-02-22 2006-02-22 セキュアプロセッサ Expired - Fee Related JP4795812B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2006046051A JP4795812B2 (ja) 2006-02-22 2006-02-22 セキュアプロセッサ
US11/456,437 US8468364B2 (en) 2006-02-22 2006-07-10 Secure processor
EP06253618.0A EP1826701B1 (en) 2006-02-22 2006-07-11 Secure processor
CN200610103979.0A CN101026455B (zh) 2006-02-22 2006-07-28 安全处理器
US13/790,535 US8788840B2 (en) 2006-02-22 2013-03-08 Secure processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006046051A JP4795812B2 (ja) 2006-02-22 2006-02-22 セキュアプロセッサ

Publications (2)

Publication Number Publication Date
JP2007226481A JP2007226481A (ja) 2007-09-06
JP4795812B2 true JP4795812B2 (ja) 2011-10-19

Family

ID=36968711

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006046051A Expired - Fee Related JP4795812B2 (ja) 2006-02-22 2006-02-22 セキュアプロセッサ

Country Status (4)

Country Link
US (2) US8468364B2 (ja)
EP (1) EP1826701B1 (ja)
JP (1) JP4795812B2 (ja)
CN (1) CN101026455B (ja)

Families Citing this family (88)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2849226B1 (fr) * 2002-12-20 2005-12-02 Oberthur Card Syst Sa Procede et dispositif de securisation de l'execution d'un programme informatique.
US8161544B2 (en) 2006-07-19 2012-04-17 Microsoft Corporation Trusted communications with child processes
US8422674B2 (en) * 2007-05-29 2013-04-16 International Business Machines Corporation Application-specific secret generation
US8433927B2 (en) * 2007-05-29 2013-04-30 International Business Machines Corporation Cryptographically-enabled privileged mode execution
US8332635B2 (en) * 2007-05-29 2012-12-11 International Business Machines Corporation Updateable secure kernel extensions
EP2187313A4 (en) 2007-09-04 2011-08-03 Nintendo Co Ltd WRITE-IN REGIONAL SECURITY SYSTEM
JP5177697B2 (ja) 2007-09-04 2013-04-03 任天堂株式会社 ダウンロードセキュリティシステム
US8332636B2 (en) * 2007-10-02 2012-12-11 International Business Machines Corporation Secure policy differentiation by secure kernel design
IL187038A0 (en) * 2007-10-30 2008-02-09 Sandisk Il Ltd Secure data processing for unaligned data
US9069990B2 (en) * 2007-11-28 2015-06-30 Nvidia Corporation Secure information storage system and method
EP2234323A1 (en) * 2007-12-27 2010-09-29 Keiko Ogawa Information distribution system and program for the same
WO2009090505A1 (en) * 2008-01-20 2009-07-23 Nds Limited Secure data utilization
US9158896B2 (en) * 2008-02-11 2015-10-13 Nvidia Corporation Method and system for generating a secure key
US9069706B2 (en) * 2008-02-11 2015-06-30 Nvidia Corporation Confidential information protection system and method
US20090204801A1 (en) * 2008-02-11 2009-08-13 Nvidia Corporation Mechanism for secure download of code to a locked system
US8719585B2 (en) * 2008-02-11 2014-05-06 Nvidia Corporation Secure update of boot image without knowledge of secure key
US20090204803A1 (en) * 2008-02-11 2009-08-13 Nvidia Corporation Handling of secure storage key in always on domain
US8826037B2 (en) * 2008-03-13 2014-09-02 Cyberlink Corp. Method for decrypting an encrypted instruction and system thereof
US8165286B2 (en) * 2008-04-02 2012-04-24 Apple Inc. Combination white box/black box cryptographic processes and apparatus
US9613215B2 (en) 2008-04-10 2017-04-04 Nvidia Corporation Method and system for implementing a secure chain of trust
DE102008021567B4 (de) * 2008-04-30 2018-03-22 Globalfoundries Inc. Computersystem mit sicherem Hochlaufmechanismus auf der Grundlage einer Verschlüsselung mit symmetrischem Schlüssel
US20090287895A1 (en) * 2008-05-15 2009-11-19 Advanced Micro Devices Secure Memory Access System
US8910276B2 (en) * 2008-05-24 2014-12-09 Via Technologies, Inc. Apparatus and method for precluding execution of certain instructions in a secure execution mode microprocessor
US8819839B2 (en) * 2008-05-24 2014-08-26 Via Technologies, Inc. Microprocessor having a secure execution mode with provisions for monitoring, indicating, and managing security levels
US8302182B2 (en) * 2008-09-01 2012-10-30 Mediatek Inc. Embedded system with authentication, and associated authentication method
US8555015B2 (en) * 2008-10-23 2013-10-08 Maxim Integrated Products, Inc. Multi-layer content protecting microcontroller
US9117060B2 (en) * 2009-05-07 2015-08-25 Cadence Design Systems, Inc. System and method for preventing proper execution of an application program in an unauthorized processor
CN102725737B (zh) * 2009-12-04 2016-04-20 密码研究公司 可验证防泄漏的加密和解密
KR101457355B1 (ko) * 2009-12-22 2014-11-04 인텔 코포레이션 보안 애플리케이션 실행을 제공하는 방법 및 장치
US8543838B1 (en) * 2009-12-23 2013-09-24 Marvell International Ltd. Cryptographic module with secure processor
US8645714B2 (en) 2010-05-25 2014-02-04 Via Technologies, Inc. Branch target address cache for predicting instruction decryption keys in a microprocessor that fetches and decrypts encrypted instructions
US9911008B2 (en) 2010-05-25 2018-03-06 Via Technologies, Inc. Microprocessor with on-the-fly switching of decryption keys
US9892283B2 (en) 2010-05-25 2018-02-13 Via Technologies, Inc. Decryption of encrypted instructions using keys selected on basis of instruction fetch address
US9798898B2 (en) 2010-05-25 2017-10-24 Via Technologies, Inc. Microprocessor with secure execution mode and store key instructions
US9967092B2 (en) 2010-05-25 2018-05-08 Via Technologies, Inc. Key expansion logic using decryption key primitives
US8904190B2 (en) 2010-10-20 2014-12-02 Advanced Micro Devices, Inc. Method and apparatus including architecture for protecting sensitive code and data
US8566579B2 (en) * 2011-03-15 2013-10-22 Sandia Corporation Obfuscated authentication systems, devices, and methods
US8595510B2 (en) * 2011-06-22 2013-11-26 Media Patents, S.L. Methods, apparatus and systems to improve security in computer systems
US8661527B2 (en) 2011-08-31 2014-02-25 Kabushiki Kaisha Toshiba Authenticator, authenticatee and authentication method
JP5275432B2 (ja) * 2011-11-11 2013-08-28 株式会社東芝 ストレージメディア、ホスト装置、メモリ装置、及びシステム
CN102521535A (zh) * 2011-12-05 2012-06-27 苏州希图视鼎微电子有限公司 通过特定指令集来进行相关运算的信息安全协处理器
WO2013082749A1 (zh) * 2011-12-06 2013-06-13 华为技术有限公司 一种硬件资源保护方法和系统以及虚拟机管理器
US8694796B2 (en) * 2011-12-23 2014-04-08 Sap Ag Secure data deletion in a database
CN102591824B (zh) * 2011-12-27 2014-11-05 深圳国微技术有限公司 Soc芯片系统中控制保密数据搬运的dma控制器
US9489924B2 (en) 2012-04-19 2016-11-08 Nvidia Corporation Boot display device detection and selection techniques in multi-GPU devices
DE102012010102A1 (de) * 2012-05-22 2013-11-28 Infineon Technologies Ag Verfahren und Vorrichtung zur Datenverarbeitung
US8909929B2 (en) * 2012-05-31 2014-12-09 Atmel Corporation Stored public key validity registers for cryptographic devices and systems
US20140237258A1 (en) * 2013-02-20 2014-08-21 Kabushiki Kaisha Toshiba Device and authentication method therefor
US9344747B2 (en) * 2013-02-21 2016-05-17 Broadcom Corporation Mobile payTV DRM architecture
US9043612B2 (en) * 2013-03-12 2015-05-26 International Business Machines Coropration Protecting visible data during computerized process usage
US9058494B2 (en) 2013-03-15 2015-06-16 Intel Corporation Method, apparatus, system, and computer readable medium to provide secure operation
US9239920B2 (en) * 2013-04-23 2016-01-19 Qualcomm Incorporated Generation of working security key based on security parameters
US20140325041A1 (en) * 2013-04-27 2014-10-30 Tencent Technology (Shenzhen) Co., Ltd. Method, apparatus, server and system for adapting a client to a hardware environment
WO2015060858A1 (en) * 2013-10-24 2015-04-30 Intel Corporation Methods and apparatus for protecting software from unauthorized copying
US9792448B2 (en) * 2014-02-28 2017-10-17 Advanced Micro Devices, Inc. Cryptographic protection of information in a processing system
US9367690B2 (en) * 2014-07-01 2016-06-14 Moxa Inc. Encryption and decryption methods applied on operating system
US9594928B1 (en) * 2014-10-14 2017-03-14 Altera Corporation Multi-channel, multi-lane encryption circuitry and methods
WO2016072999A1 (en) * 2014-11-07 2016-05-12 Hewlett Packard Enterprise Development Lp Data conversion using an address space identifier
CN107004099B (zh) * 2014-11-26 2020-06-05 惠普发展公司,有限责任合伙企业 存储器中攻击预防
US10108820B2 (en) * 2015-01-20 2018-10-23 Mediatek Inc. Snapshot data and hibernation data processing methods and devices
US11829454B2 (en) * 2018-03-09 2023-11-28 Patrick Robert Koren Method and apparatus for preventing and investigating software piracy
US10776294B2 (en) * 2015-11-16 2020-09-15 Atmel Corporation System architecture with secure data exchange
US10061594B2 (en) * 2016-02-06 2018-08-28 Verizon Patent And Licensing Inc. Protecting and verifying contents of files on mobile computing devices
US10474823B2 (en) * 2016-02-16 2019-11-12 Atmel Corporation Controlled secure code authentication
EP4064088A1 (en) 2016-08-30 2022-09-28 Socionext Inc. Processing apparatus, and semiconductor integrated circuit and boot method therefor
US9798597B1 (en) * 2016-09-26 2017-10-24 International Business Machines Corporation Verifying selective purging of entries from translation look-aside buffers
JP6589835B2 (ja) * 2016-11-24 2019-10-16 京セラドキュメントソリューションズ株式会社 情報処理システムおよび管理サーバー
US10528746B2 (en) * 2016-12-27 2020-01-07 Intel Corporation System, apparatus and method for trusted channel creation using execute-only code
US10972251B2 (en) 2017-01-20 2021-04-06 Enveil, Inc. Secure web browsing via homomorphic encryption
US10880275B2 (en) 2017-01-20 2020-12-29 Enveil, Inc. Secure analytics using homomorphic and injective format-preserving encryption
US10771237B2 (en) 2017-01-20 2020-09-08 Enveil, Inc. Secure analytics using an encrypted analytics matrix
US11507683B2 (en) 2017-01-20 2022-11-22 Enveil, Inc. Query processing with adaptive risk decisioning
US11196541B2 (en) 2017-01-20 2021-12-07 Enveil, Inc. Secure machine learning analytics using homomorphic encryption
US11777729B2 (en) 2017-01-20 2023-10-03 Enveil, Inc. Secure analytics using term generation and homomorphic encryption
JP7007570B2 (ja) 2017-12-27 2022-01-24 株式会社ソシオネクスト 処理装置、半導体集積回路及び状態監視方法
US11184164B2 (en) 2018-02-02 2021-11-23 Microsoft Technology Licensing, Llc Secure crypto system attributes
CN110489351B (zh) 2018-05-14 2021-03-09 英韧科技(上海)有限公司 芯片指纹管理装置及安全芯片
JP6658819B2 (ja) * 2018-08-01 2020-03-04 ソニー株式会社 受信装置、受信方法、送信装置、及び、送信方法
US10902133B2 (en) * 2018-10-25 2021-01-26 Enveil, Inc. Computational operations in enclave computing environments
WO2020087248A1 (zh) * 2018-10-30 2020-05-07 北京比特大陆科技有限公司 多核芯片数据总线布线结构和数据发送的方法
US10817262B2 (en) 2018-11-08 2020-10-27 Enveil, Inc. Reduced and pipelined hardware architecture for Montgomery Modular Multiplication
WO2020234616A1 (en) * 2019-05-21 2020-11-26 Micron Technology, Inc. Bus encryption for non-volatile memories
CN110598403B (zh) * 2019-09-12 2020-11-27 北京环球国广媒体科技有限公司 一种进程数据保护方法
CN111625813B (zh) * 2020-05-27 2023-02-28 重庆夏软科技有限公司 一种通过修改进程保护程序的方法
US11601258B2 (en) 2020-10-08 2023-03-07 Enveil, Inc. Selector derived encryption systems and methods
US11595189B2 (en) 2020-10-27 2023-02-28 Microsoft Technology Licensing, Llc Secure key exchange using key-associated attributes
US11520895B2 (en) * 2020-12-07 2022-12-06 Samsung Electronics Co., Ltd. System and method for dynamic verification of trusted applications
US11704444B2 (en) * 2021-03-08 2023-07-18 Micron Technology, Inc. Managing encryption keys per logical block on a persistent memory device

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4987595A (en) * 1989-09-11 1991-01-22 Motorola, Inc. Secure cryptographic processor arrangement
US5937063A (en) * 1996-09-30 1999-08-10 Intel Corporation Secure boot
US6735696B1 (en) 1998-08-14 2004-05-11 Intel Corporation Digital content protection using a secure booting method and apparatus
CN1192330C (zh) * 2000-01-18 2005-03-09 因芬尼昂技术股份公司 微处理器加密装置
JP4153653B2 (ja) 2000-10-31 2008-09-24 株式会社東芝 マイクロプロセッサおよびデータ保護方法
JP2002353960A (ja) * 2001-05-30 2002-12-06 Fujitsu Ltd コード実行装置およびコード配布方法
JP2003101529A (ja) * 2001-09-20 2003-04-04 Toshiba Corp コンテンツ管理装置およびコンテンツ削除方法
US8611919B2 (en) * 2002-05-23 2013-12-17 Wounder Gmbh., Llc System, method, and computer program product for providing location based services and mobile e-commerce
EP1542112A4 (en) * 2002-07-09 2008-04-09 Fujitsu Ltd UCT RESISTANT TO OPEN-TYPE UNIVERSAL ATTACKS, AND ASSOCIATED APPLICATION SYSTEM
JP3880933B2 (ja) * 2003-01-21 2007-02-14 株式会社東芝 耐タンパマイクロプロセッサ及びキャッシュメモリ搭載プロセッサによるデータアクセス制御方法
US7322042B2 (en) * 2003-02-07 2008-01-22 Broadon Communications Corp. Secure and backward-compatible processor and secure software execution thereon
JP4021810B2 (ja) 2003-06-25 2007-12-12 株式会社東芝 プロセッサ、プロセッサシステム及びキャッシュ一貫性制御方法
JP4263976B2 (ja) 2003-09-24 2009-05-13 株式会社東芝 オンチップマルチコア型耐タンパプロセッサ
GB0411654D0 (en) * 2004-05-25 2004-06-30 Hewlett Packard Development Co A generic trusted platform architecture
JP4447977B2 (ja) * 2004-06-30 2010-04-07 富士通マイクロエレクトロニクス株式会社 セキュアプロセッサ、およびセキュアプロセッサ用プログラム。
JP4489030B2 (ja) * 2005-02-07 2010-06-23 株式会社ソニー・コンピュータエンタテインメント プロセッサ内にセキュアな起動シーケンスを提供する方法および装置
JP4522372B2 (ja) * 2005-02-07 2010-08-11 株式会社ソニー・コンピュータエンタテインメント プロセッサと外部のデバイスとの間にセキュアセッションを実現する方法および装置

Also Published As

Publication number Publication date
US8788840B2 (en) 2014-07-22
US20130198526A1 (en) 2013-08-01
EP1826701A2 (en) 2007-08-29
EP1826701A3 (en) 2009-07-08
US8468364B2 (en) 2013-06-18
CN101026455B (zh) 2010-09-29
JP2007226481A (ja) 2007-09-06
US20070198851A1 (en) 2007-08-23
CN101026455A (zh) 2007-08-29
EP1826701B1 (en) 2018-07-04

Similar Documents

Publication Publication Date Title
JP4795812B2 (ja) セキュアプロセッサ
US11550962B2 (en) Secure processor and a program for a secure processor
JP4689945B2 (ja) リソースアクセス方法
JP4689946B2 (ja) 安全なデータを使用して情報処理を実行するシステム
JP5316592B2 (ja) セキュアプロセッサ用プログラム
JP5365664B2 (ja) セキュアプロセッサ
JP4783452B2 (ja) セキュアプロセッサ
JP4783451B2 (ja) セキュアプロセッサ
Malipatlolla SUSTAINABLE TRUSTED COMPUTING
Malipatlolla Sustainable Trusted Computing: A Novel Approach for a Flexible and Secure Update of Cryptographic Engines on a Trusted Platform Module

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20080730

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081017

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110427

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110510

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110707

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110726

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110728

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140805

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees