JP2002202720A - 耐タンパプロセッサにおける暗号化データ領域のプロセス間共有方法 - Google Patents

耐タンパプロセッサにおける暗号化データ領域のプロセス間共有方法

Info

Publication number
JP2002202720A
JP2002202720A JP2000402672A JP2000402672A JP2002202720A JP 2002202720 A JP2002202720 A JP 2002202720A JP 2000402672 A JP2000402672 A JP 2000402672A JP 2000402672 A JP2000402672 A JP 2000402672A JP 2002202720 A JP2002202720 A JP 2002202720A
Authority
JP
Japan
Prior art keywords
key
processes
area
shared
encrypted
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.)
Granted
Application number
JP2000402672A
Other languages
English (en)
Other versions
JP4074057B2 (ja
Inventor
Keiichi Teramoto
圭一 寺本
Mikio Hashimoto
幹生 橋本
Kenji Shirakawa
健治 白川
Satoru Ozaki
哲 尾崎
Kensaku Fujimoto
謙作 藤本
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2000402672A priority Critical patent/JP4074057B2/ja
Priority to EP01310918A priority patent/EP1220079A3/en
Priority to US10/028,794 priority patent/US20030126458A1/en
Publication of JP2002202720A publication Critical patent/JP2002202720A/ja
Priority to US11/538,225 priority patent/US7657760B2/en
Application granted granted Critical
Publication of JP4074057B2 publication Critical patent/JP4074057B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • 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/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • 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/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2115Third party

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

(57)【要約】 【課題】 マルチタスクのプログラム実行環境を支援す
る耐タンパのマイクロプロセッサ上で、秘匿プログラム
や秘匿データを、複数のプロセス間で安全に共有させ
る。 【解決手段】 プログラムおよびデータの暗号化/復号
化機能を有するプロセッサの実行モードを暗号化命令実
行モードに移行させ、2つのプロセスの各プロセス空間
に、それぞれ独自の秘匿データ領域を生成させる。さら
に、各プロセスに、鍵交換に用いるそれぞれ異なる鍵ペ
アを生成させ、2つのプロセス間で鍵交換を行なわせ
る。鍵交換に基づいて、各プロセスに共通鍵を計算させ
る。共通鍵と、鍵交換の過程で使用したデータを、各プ
ロセスの秘匿データ領域に格納する。一方のプロセス
に、2つのプロセス間で共有されるべき共有暗号化領域
を生成させ、他方のプロセスにこの共有暗号化領域を自
己のプロセス空間にマップさせる。最後に、各プロセス
の共有暗号化領域と、共通鍵とを関連付けて、プロセッ
サ内部の暗号化属性レジスタに保存する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はマルチタスクのプロ
グラム実行環境を支援する機能を持つマイクロプロセッ
サに関し、特に、プログラムやデータの暗号化および復
号化機能を有し、秘匿プログラムや秘匿データを複数プ
ロセス間で安全に共有できるマイクロプロセッサに関す
る。
【0002】
【従来の技術】近年マイクロプロセッサの性能向上は著
しく、従来の用途である計算やグラフィックにとどまら
ず動画像、音声の再生や編集加工が可能となっている。
これによりマイクロプロセッサを応用したエンドユーザ
向けシステム(以下PCと呼ぶ)でユーザはさまざまな動
画像や音声を楽しめるようになった。PCを動画像、音声
の再生装置として使うことは、PCが持っている計算能
力と組み合わせてゲームなどの応用ができることは当然
として、固定的なハードウェアを必要としないため、す
でにPCを持っているユーザにとっては安価にそれら動
画像、音声の再生が楽しめるという利点もある。
【0003】PCで画像や音声を扱う場合に問題となる
のがその画像/音声の著作権の保護である。特に、PC
上で画像データや音楽データを取り扱うソフトウェア自
体の改変や不正コピーを防止すべく、耐タンパソフトウ
ェア技術と呼ばれる手法が用いられている(David Aucs
mith et.al; “Tamper Resistant Software: An Implem
entation”, Proceeding of the 1996 Intel Software
Developer's Conference)。耐タンパソフトウエア技術
とは、ソフトウェアを暗号化するなどの手法により、ソ
フトウェアに含まれるノウハウなどを解析から守り、ソ
フトウェアが解読、改竄されることを防止する技術であ
る。
【0004】しかし、耐タンパソフトウェア技術は、基
本的には、プログラムのうち保護を要する部分を実行開
始時には暗号化しておき、その部分を実行する前に復号
化し、実行終了後に再び暗号化することにより、逆アセ
ンブラ、デバッガなどの解析ツールによる解析を困難に
する技術である。プログラムがプロセッサによって実行
可能である以上、プログラムの開始時から順を追って解
析していけば必ず解析することが可能である。この事実
は、PCを通じた、著作物や高度情報サービスの提供、
あるいはPCへの企業、個人のノウハウを含んだプログ
ラムの適用の妨げになっている。
【0005】さらに、ハードウェア面の問題として、オ
ープンプラットフォームであるPCにおいて、システム
のソフトウェア的土台となるはずのOS(オペレーティ
ングシステム)自体が改変されて、攻撃の手段として用
いられる可能性がある。技術を持ち、悪意のあるユーザ
は自分のPCのOSに改造を加え、OSの持つ特権を利
用して、OSとしての正常な動作の代わりに、アプリケ
ーションプログラムに埋め込まれている著作権保護機構
を無効化したり、その機構を解析するための操作を行え
るからである。
【0006】現代のOSは、CPUに備えられた実行制
御機能やメモリへの特権操作機能を利用して、複数のタ
スクを見かけ上は並列に処理するマルチタスク環境を作
り出している。すなわち、OSはプログラムの実行に必
要な資源、すなわちCPU時間とその実行に必要なメモ
リの割り当てを行ない、コンピュータ制御下にあるデバ
イス、ネットワーク、アプリケーションQoSへのアク
セスを制御する。これを行なうために、OSは以下の2
つの特権を有する。
【0007】第1の特権は、CPU時間の割り当てをす
るために、OSはアプリケーションプログラムを任意の
時点で停止、再開することができる。
【0008】第2の特権は、OSは異なるアクセス速度
と容量を持つ、通常は階層化されたメモリシステムをア
プリケーションから隠ぺいして、フラットなメモリ空間
をアプリケーションに提供するが、任意の時点でアプリ
ケーションに割り当てたメモリ空間の内容を、異なる階
層のメモリに移動することができる。
【0009】この2つの特権を持つことにより、任意の
時点でOSはアプリケーションの実行状態を停止してス
ナップショットをとり、それを複製または書き換えて再
開することが可能である。この機能はアプリケーション
のもつ秘密を解析する道具にも使うことができる。
【0010】コンピュータ上のアプリケーションに対す
る解析を防ぐために、プログラムやデータの暗号化を行
う技術はすでにいくつか知られている(Hampson, USP4,
47,902; Hartman, USP 5,224,166; Davis, USP5,806,
706; Takahasi, USP5,825,878; Leonard et.al, USP
6,003,117, 特開平11-282756)。暗号化された実行コー
ドは、秘密鍵を知っているマイクロプロセッサのみが復
号化することができる。デコード(復号)状態は、マイ
クロプロセッサ内部に限定され、実行プロセス以外は、
いかなる他プロセスあるいはOSであっても、デコード
することができない。
【0011】しかし、これらの従来の暗号化技術では、
上述したOSの特権動作からプログラムの動作とデータ
の秘密を守ることは考慮されていなかった。したがっ
て、従来の暗号化技術を適用したシステムでは、コンテ
キスト切替と呼ばれるOSの特権動作を利用することに
より、実行コードの暗号化を解かなくともプログラムの
解析が可能になるという欠点があった。
【0012】コンテキスト切替とは、割り込みによって
プログラムの実行が中断された時や、プログラムがシス
テムコール呼び出しのために自発的にソフトウェア割り
込み命令を呼び出した時に、OSによって行なわれる切
り替え処理である。すなわち、OSは別のプログラム実
行のために、その時点でのレジスタ値の集合からなるプ
ログラムの実行状態(「コンテキスト情報」と呼ぶ)をメ
モリに保存する一方で、あらかじめメモリに保存されて
いた別のプログラムのコンテキスト情報をレジスタに復
帰させる。コンテキスト切替は複数のプログラムを並行
動作させる上で不可欠の機能である。OSはコンテキス
ト切替時にレジスタの値を読むことができるので、その
プログラムの実行状態がどのように変化したかに基づい
て、プログラムの行なっている動作のほとんどの部分を
推定できる。
【0013】OSはまた、プログラムの実行の中断や解
析ばかりでなく、メモリに移されたレジスタの情報を任
意に書き換えることもできる。OSはアプリケーション
の任意の状態を保存することができるため、ある時点で
保存した状態から、繰り返し何度もレジスタ値を書き換
えてプログラムを動作させてプログラムの動作を解析す
ることが可能なのである。
【0014】このような問題に鑑み、出願人は、特願第
2000−035898号および特願第2000−13
5010号において、コンテキスト切替時に、マイクロ
プロセッサ内部のレジスタにあるコンテキスト情報の全
部または一部を自動的に暗号化して、プロセッサ外部の
メモリに退避させる技術を提案した。これにより、コン
テキスト切替時のOSによる攻撃を防止することができ
る。
【0015】一方、複数のアプリケーションやプログラ
ム供給者が、それぞれOSとは独立して秘密を持つ技術
も提案されている。米国特許第 5,123,045号(Ostorovs
ky et.al)は、アプリケーションごとに固有の秘密鍵を
持つサブプロセッサを前提とし、これらのサブプロセッ
サがメインメモリ上に置かれたプログラムをアクセスす
る時でも、そのアクセスパターンからプログラムの動作
が推定され得ないシステムを開示している。このシステ
ムは、メモリに対して操作を行う命令体系を、それとは
異なる命令体系に変換し、ランダムなメモリアクセスを
行なわせる機構である。
【0016】しかしながら、この技術はアプリケーショ
ン毎に異なるサブプロセッサを必要とし、コスト高にな
るばかりでなく、このような命令体系を処理するコンパ
イラやプロセッサハードウェアの実装、高速化技術は、
現在のプロセッサのそれとはかなり異なる。すなわち、
このシステムの実現は現時点では困難であると予想され
るのである。また、このようなプロセッサでは、実際に
動作するコードの動作やデータを観察、追跡してもデー
タの内容や動作の対応関係の把握が著しく困難となる。
このため、プログラムコードやデータが単純に暗号化さ
れている先に列挙した従来技術と比較して、プログラム
のデバッグが非常に困難となり、この点においても実用
化に問題がある。
【0017】
【発明が解決しようとする課題】暗号化されたプログラ
ムやその処理対象であるデータを保護する技術は、現在
も研究が進められているが、基本的に、実行プロセスの
解析やトレースを無効化して、他プロセスからプログラ
ムやデータを盗み見ることを防止することに技術が注が
れている。
【0018】その一方で、正しく許可されたプロセス
(プログラム)間であれば、プログラムやデータを暗号化
された状態であっても、互いに共有したいという要求が
ある。すなわち、既存の暗号化されていないライブラリ
や、OSが提供するプロセス間共有メモリを用いるのと
同様の感覚で、暗号化されたプログラムや秘匿データを
プロセス間で共有したいという要求である。暗号化され
たプログラムやデータを異なるプロセス間で共有するた
めには、正しいプロセス間で鍵情報をいかにして安全に
共有するかが問題となる。
【0019】暗号化されたプログラムやデータの復号状
態をプロセッサ内部に限定することのできるプロセッサ
において、あるプロセスが作成する暗号化されたメモリ
領域を他プロセスと共有したい場合、OSの提供するメ
モリ共有機構を利用するだけでは、意味のあるデータ共
有はできない。暗号化が施されたメモリ領域の共有を要
求する他プロセスは、この領域のための必要な鍵を知ら
ないからである。
【0020】暗号化されたメモリ領域の読み書きは、こ
のメモリ領域に対応する鍵を使用することによって行な
われる。鍵は、プロセッサ内部で秘密裏に保持されてい
る。そこで、他プロセスにおいても同一の鍵をプロセッ
サ内部に共有することができれば、意味のある読み書き
が可能となる。ただし、この鍵共有が、2プロセス間で
安全に行なわれなければ意味がない。
【0021】鍵を共有するには、互いに予め鍵を知って
いるプロセス間であれば、鍵をプログラム内部に暗号化
した状態で埋め込んでおくことにより安全に共有するこ
とが出来る。しかしながら、鍵を予め埋め込めむことの
できない、あるいは、事前に通知したくないプロセス
(プログラム)間で鍵を共有したい場合は、プロセス間で
安全な鍵交換シーケンスを確立する必要がある。
【0022】これまでに、ネットワークを経由して安全
な鍵交換シーケンスの確立を目指した技術は、公開鍵暗
号方式の登場により数多く登場してきている。ネットワ
ーク上で交換される鍵情報は、それ自体盗み見ることは
できるが、各計算機内部で保持される秘密鍵を知らなけ
れば攻撃は難しい。ネットワーク経由の鍵交換の場合、
計算機内部での鍵交換/鍵算出に使用される一時データ
が平文で扱われていても、これらがネットワークに流出
しない、あるいはネットワークから盗み出せないことを
前提に実現されていた。
【0023】本発明においては、ネットワークの鍵交換
シーケンスとは別に、計算機内部でプロセス間の鍵交換
を行なう必要があり、その鍵交換や鍵算出時に使用され
る一次データも計算機内部に置かれ得る場合を前提とす
る。
【0024】すなわち、本発明の第1の目的は、実行プ
ロセスの秘密を解析や意図的な改変から守ることのでき
るプロセッサ(耐タンパプロセッサ)において、2つの
プロセス間で、暗号化されたデータ領域を安全に共有す
る方法を提供することにある。
【0025】本発明の第2の目的は、3以上のプロセス
間で、安全な通信路を利用して、暗号化されたデータ領
域を共有する方法を実現することにある。
【0026】
【課題を解決するための手段】上記目的を達成するため
に、本発明では、暗号化プログラムの実行コードやそこ
で処理される暗号化データを正当な実行プロセスだけが
利用できる実行環境の耐タンパのマイクロプロセッサを
前提とする。
【0027】第1の目的、すなわち耐タンパのマイクロ
プロセッサ上で暗号化されたデータ領域を2つのプロセ
ス間で共有させる方法を実現するためには、あらかじめ
2つのプロセスに共通鍵を与えておく方法と、共有され
るべき暗号化データ領域を作成する際に共通鍵を生成
し、共有相手のプロセスに生成した共通鍵を通知する方
法とがある。
【0028】前者の方法は、プロセス間共有を行なう各
プロセスにあらかじめ共通鍵を与えておくので、任意の
数のプロセス間での暗号化データ領域の共有に拡張する
ことができる。この方法は、プログラムおよびデータの
暗号化/複号化機能を有するプロセッサ上で暗号化され
たデータ領域の共有を行なう2以上のプロセスの各々
に、あらかじめ共通鍵を与えておくステップと、プロセ
ッサの実行モードを暗号化命令実行モードに移行させる
ステップを含む。そして、2以上のプロセス中の第1の
プロセスに、与えられた共通鍵に対してのみ有効な共有
暗号化領域を自己のプロセス空間に生成させ、その他の
プロセスに、第1のプロセスが生成した共有暗号化領域
を自己のプロセス空間にマップさせる。さらに、各プロ
セスの共有暗号化領域を、それぞれに与えられた共通鍵
と関連付けてプロセッサ内部の暗号属性レジスタに設定
する。
【0029】後者の方法は、2つのプロセス間で共有す
る暗号化データ領域用の鍵情報を、各プロセスが事前に
共有できない場合に、暗号化データ領域の作成元である
プロセスがその都度共通鍵を生成し、他方のプロセスに
この共通鍵を通知するものである。この方法は、まず、
プログラムおよびデータの暗号化/復号化機能を有する
プロセッサ上で、プロセッサの実行モードを暗号化命令
実行モードに移行させる。次に、2つのプロセスの各プ
ロセス空間に、それぞれ独自の秘匿データ領域を生成さ
せる。各秘匿データ領域のアドレスを、それぞれの対応
する秘匿データ領域用の鍵と関連付けて、プロセッサ内
部の暗号化属性レジスタに設定する。さらに、各プロセ
スに、鍵交換に用いるそれぞれ異なる鍵ペアを生成さ
せ、2つのプロセス間で鍵交換を行なわせる。鍵交換に
基づいて、各プロセスに共通鍵を生成させる。そして、
2つのプロセス間で共有され、前記共通鍵に対してのみ
有効な共有暗号化領域を生成する。最後に、共通鍵と、
鍵交換の過程で使用されたデータとを、各プロセスの秘
匿データ領域に保存する。
【0030】共有暗号化領域を生成するには、2つのプ
ロセスのうち、一方のプロセス(オーナープロセス)が自
己のプロセス空間に共有暗号化領域を生成し、共有を要
求する他方のプロセス(クライアントプロセス)は、こ
の共有暗号化領域を自己のプロセス空間にマップする。
この場合、各プロセスは、共有暗号化領域と、各々の共
通鍵とを関連付けて、プロセッサ内部の暗号化属性レジ
スタに設定する。
【0031】この方法では、共通鍵は秘密の状態で生成
され、それに使用されたデータも共通鍵自体も秘匿デー
タ領域に保存されるので、共通鍵を知っている2つのプ
ロセス以外のプロセス、あるいはOSからですら、アク
セスすることができない。
【0032】暗号化データ領域の共有の信頼性をさらに
高めたい場合には、2つのプロセス間での鍵交換を、メ
ッセージ署名の検証に基づいて行なう。具体的には、各
プロセスは、乱数を発生させ、この乱数と、公共機関が
作成した証明書とを、互いに相手のプロセスに送って認
証を要求する。認証が確認されたなら、各プロセスは鍵
交換用のフェーズ値を計算し、このフェーズ値に署名を
付けて、相手プロセスに送る。各プロセスは、送られて
きたフェーズ値と、自己が発生した認証済みの乱数とを
用いて、共通鍵を生成する。
【0033】この方法によれば、たとえ2つのプロセス
間に悪意のプログラムが介在する場合でも、そこからの
攻撃を防止することができる。
【0034】第2の目的、すなわちプログラムやデータ
の暗号化/複号化機能を有するプロセッサ上で、3以上
のプロセス間で暗号化データ領域の共有する方法を実現
するために、まず、プロセッサの実行モードを暗号化命
令実行モードに移行させる。次に、3以上のプロセスの
中の第1のプロセスに、これらのプロセス間全体で共有
される共有暗号化データ領域を生成させる。さらに、前
記第1のプロセスに、生成した共有暗号化データ領域に
対する共通鍵を指定させる。次に、この第1のプロセス
と、他の任意のひとつのプロセスとの間でのみ共有され
る暗号化された鍵通知領域を、他のすべてのプロセスに
関してそれぞれ生成させる。共通鍵は、2プロセス間で
共有される暗号化された鍵通知領域を介して、他のプロ
セスに通知される。そして、他のすべてのプロセスに、
第1プロセスが生成した共有暗号化データ領域を自己の
プロセス空間にマップさせる。最後に、各プロセスにマ
ップされた共有暗号化データ領域と、通知された共通鍵
とを関連付けて、プロセッサ内部の対応する暗号化属性
レジスタに格納する。
【0035】第1のプロセスと、他の任意のプロセスと
の間で共有される暗号化された鍵通知領域の生成は、第
1の目的と関連して上述した2プロセス間の共有方法を
利用して生成することができる。
【0036】このように、2プロセス間で共有される鍵
通知領域は、これらのプロセス間の安全な通信路として
機能し、全体で最終的に共有される共有暗号化データ領
域用の共通鍵を、安全な通信路を介して各プロセスに通
知することができるので、3以上のプロセス間において
も、ひとつの暗号化データ領域を安全に共有することが
できる。
【0037】
【発明の実施の形態】本発明の実施の形態として、2プ
ロセス間での暗号化データ領域の共有と、3以上のプロ
セス間での暗号化データ領域の共有について述べる前
に、まず、本発明が前提とするマイクロプロセッサのア
ーキテクチャを説明する。本発明が適用されるマイクロ
プロセッサは、平文と暗号化の両方の実行プログラムお
よびデータを扱うことのできるアーキテクチャを有し、
かつ暗号化プログラムの実行コードや、処理対象である
暗号化データを正しい実行プロセスのみが利用できる耐
タンパプロセッサであることを前提とする。安全性の面
から言えば、平文プログラムの実行を許可しない専用マ
イクロプロセッサを挙げることができるが、そうすると
可搬性が低く、暗号化を施す前のプログラムの作成・デ
バッグや、非暗号化プログラムを導入する可能性が排除
されてしまうので好ましくない。
【0038】図1は、本発明が適用されるマイクロプロ
セッサの基本構成図である。マイクロプロセッサ1は、
プロセッサコア3と、命令TLB2と、例外処理部8
と、データTLB9と、2次キャッシュ10とを含む。
プロセッサコア3は、命令実行部4と、1次キャッシュ
5と、コード・データ暗号化/複号化部6と、バスイン
タフェースユニット7を含む。コード・データ暗号化/
複号化部6は、暗号化属性レジスタ20を有する。
【0039】通常のプロセッサと大きく異なる点は、プ
ロセッサコア3の内部にコード・データ暗号化/複号化
部6を搭載していることである。暗号化された実行コー
ドやデータは、バス上では暗号化された状態で流れる。
プロセッサコア3に入力された実行コードやデータは、
コード・データ暗号化/複号化部6によって、1次キャ
ッシュ5へフェッチされる前に復号化される。プロセッ
サコア3から再度バス上へ流れで出るときには、暗号化
されて出力される。
【0040】命令実行部4は、図示はしないがレジスタ
集合を有し、レジスタ内部では、平文データを処理す
る。マルチタスクをサポートするOSの場合、偽造OSなど
によって強制的にコンテキスト切替えを生じさせてレジ
スタ情報を盗み見ようとする攻撃が考えられる。しか
し、出願人による特願第2000-035898号や特願第2000-13
5010号に開示された方式を採用することによって、コン
テキストの保存復帰時に自動的に暗号/復号化が働き、
防御することができる。
【0041】コード・データ暗号化/複号化部6の内部
には、公開鍵暗号方式に基づいたプロセッサ固有の秘密
鍵が保持されていおり、いかなる特権のプログラムであ
ってもこれを読み出すことはできない。この秘密鍵は、
対応する公開鍵で暗号化されたプログラムやデータを復
号する際に、自動的にプロセッサ内部で使用される。
【0042】図1のマイクロプロセッサアーキテクチャ
を採用することによって、悪意のあるユーザやプログラ
マによろう解析や改変からプログラムを保護することが
できる。暗号化されたプログラムのコードやデータは、
特定の鍵を知っている正しいプロセッサでなければ復号
し、利用できないからである。
【0043】保護したいコードやデータは外部記憶装置
やメモリ上に存在するときには暗号化されており、プロ
セッサ内部の一次キャッシュ内およびレジスタに読み込
まれている間のみ復号化される。再びキャッシュからメ
モリ上へ書き戻される必要がある場合には暗号化処理が
プロセッサ内部で自動的に施されるのは、上述したとお
りである。このようにして、暗号化された命令コードや
データが復号(平文)化される状態をプロセッサ内部に
閉じ込め、レジスタ上の平文データがコンテキスト切り
替え時に露呈するのを防ぐ。
【0044】図2は、暗号化属性レジスタ20の構成例
を示す。暗号化属性レジスタ20は、復号化(暗号化)
されるべき各プログラムやデータに対応する鍵を、プロ
セッサ内部で個別に保持する複数の秘匿レジスタであ
る。いかなる特権を持ったプログラムからもこれを読み
出すことはできず、正しいプログラムの実行期間中にの
み、マイクロプロセッサ1が利用できる。
【0045】暗号化属性レジスタ20は、暗号化された
領域の開始アドレス、終端アドレス(もしくは領域サイ
ズ)、適用暗号アルゴリズム、鍵格納データ30へのオ
フセット、鍵サイズなどの情報が登録される。鍵格納デ
ータ30には、鍵の値や署名が置かれる。
【0046】マイクロプロセッサ1が暗号化された実行
コードを実行する際には、暗号化命令実行モードと呼ば
れる実行モードへ移行する。暗号化命令実行モードで
は、マイクロプロセッサ1が、対応する暗号化属性レジ
スタ20に設定された復号鍵を利用して、暗号化実行コ
ードを自動的に復号化し、命令実行を処理する。この
際、スタックに積まれるデータや他のデータ領域への書
き込みも自動的に暗号化され、読み込み時に自動的に復
号化される。復号化され平文化された状態が存在するの
は、命令実行部4のレジスタや1次キャッシュライン上
のみであり、データがバスを介して外部メモリへ出力さ
れる際には、再び暗号化状態になる。
【0047】暗号化データへのアクセスは、通常、暗号
化命令実行モードにて行われるが、平文命令実行モード
(通常の命令実行モード)から、暗号化されたデータへ
のアクセスを行い、外部メモリ上では暗号化されたまま
でデータの読み書きを自動的に行うことも可能である。
しかしながら、一般に、暗号化されるべきデータにアク
セスする際には、プロセッサの命令実行シーケンスがト
レースされることを防ぎ、解析されにくくする目的で、
暗号化命令実行モードへ移行して実行することが望まれ
る。
【0048】プロセス切替えを行う際には、実行プロセ
スのコンテキスト(レジスタ情報など)が外部メモリへ
保存されるが、そのうち、他プロセスから秘匿されるべ
き暗号化属性レジスタ情報などは、マイクロプロセッサ
1が暗号化処理を行った上でメモリ上に保存される。
【0049】あるいは、暗号化属性レジスタ20は実行
対象プロセスのIDを伴い、プロセス切り替え後も暗号
化属性レジスタ20の情報をマイクロプロセッサ1の内
部に保持し続ける構成としてもよい。この場合、このプ
ロセスの実行時以外(すなわち他プロセス実行時)に
は、プロセッサが利用できないことを保証した形式でコ
ンテキスト切替え処理を行う。
【0050】上述した特徴を持つマイクロプロセッサ
を、本発明では耐タンパプロセッサと呼称する。
【0051】次に、本発明が前提とする耐タンパプロセ
ッサ上でのプログラム実行動作について説明する。
【0052】まず、マイクロプロセッサ(耐タンパプロ
セッサ)1を内部に有する計算機上で、保護されたプロ
グラムを実行する手順を述べる。プログラム実行に先立
って、該計算機内に保護対象プログラムがインストール
済みであるとする。また、計算機上で、プロセッサ1が
暗号化された実行コードを復号するために必要な鍵は、
プログラムの作成元あるいは発行元などによって、プロ
セッサ固有の秘密鍵に対応する公開鍵を用いて暗号化さ
れ、インターネット経由あるいは配付メディアに添付す
るなどの手段により、事前に計算機にダウンロード、イ
ンストールされているものとする。あるいは、プログラ
ム作成元や発行元により、ユーザ所有のプロセッサに対
応する公開鍵を用いて、プログラム実行に必要な復号鍵
を保護対象プログラム内部にあらかじめ暗号化して埋め
込む場合もある。
【0053】マイクロプロセッサ1は、暗号化された実
行コードを復号する際には、この鍵を利用する。このた
め、保護されたプログラムを実行する初期段階で、か
つ、暗号化実行コード部に突入する以前に(平文実行コ
ード内で)、この実行コードの復号化鍵を、プロセッサ
内部の暗号化属性レジスタ20に平文状態で設定してお
く必要がある。復号化鍵は、プロセッサ固有の公開鍵で
暗号化されているが、下記の命令を発行することによっ
て、プロセッサ内部でプロセッサの秘密鍵によって解読
され、暗号化属性レジスタ20に平文状態で安全に設定
することができる。
【0054】setck プロセッサの公開鍵で暗号化
された復号鍵データ上記の例では、実行中のプロセスに
対して1つの復号鍵のみを設定可能なシステムを対象に
した命令例を示している。すなわち、このシステムの場
合は、プログラム内部に平文実行コード、暗号化実行コ
ードが複数混在する場合であっても、同一の復号鍵を共
有することになる。
【0055】プログラムによっては、複数の作成元によ
って別々に作成された複数種類の実行コード(オブジェ
クト)を組み合わせて構築されている場合がある。近年
ではこうした形態のプログラミングを行うのが一般的に
なっており、この場合、種々の実行コードが別々の暗号
化鍵によって暗号化されている状態に対応したシステム
を用意しなければならない。すなわち、各実行コードの
領域毎に、別々の暗号化処理を施したプログラムを作成
し、それを復号化して実行するために必要な復号鍵も、
個別に用意しておく必要がある。
【0056】この場合、暗号化属性レジスタ20への実
行コード復号鍵の設定命令は、以下のようになる。
【0057】 setk セグメントID 公開鍵で暗号化された鍵 … (1) 暗号化されている領域の情報をセグメントIDという領域
のIDを用いて指定している。
【0058】セグメントIDとは、マイクロプロセッサ1
が領域を識別するためのIDであり、領域の先頭アドレ
ス、あるいは先頭アドレスと領域サイズ(もしくは終端
アドレス)の組み合わせを格納したセグメント情報への
識別子に相当する。
【0059】一般に、プログラムは、ライブラリを含む
様々な実行コード(オブジェクト)がリンクされることに
よって構成される。実行コード(オブジェクト)には、命
令部、データ部、リンク情報部(デバッグ時にはデバッ
グ情報も含みうる)が含まれ、これらに対しても、同一
の鍵による暗号化もしくは別々の鍵による暗号化を施す
ことができる。
【0060】プログラムの実行時には、スタック領域や
動的に割り当てられるデータ領域が、OSやプログラムロ
ーダ、ダイナミックリンカらの支援によって設定され、
これによりプログラムが実行可能状態となる。
【0061】プログラムの実行を開始するには、まず、
プログラムローダー(およびOS)によりプログラムをメ
モリ上へロード(マップ)し、実行コードやスタック、デ
ータなどの各領域を初期設定する。ダイナミックライブ
ラリを使用する際には、ダイナミックリンカやダイナミ
ックライブラリが実行時に適切に呼び出されるよう前処
理をしておく。
【0062】実行コードやスタック、データなどの各領
域に対して暗号/復号化を指定する場合には、上述した
ように、領域ごとに対応する鍵を指定し、マイクロプロ
セッサ1内の暗号化属性レジスタ20にそれぞれ平文状
態で設定しておく。
【0063】領域の暗号関連情報(各領域のサイズ、マ
ップ先、属性など)は、プログラム作成元や発行元によ
ってプログラム内部にあらかじめ埋め込まれてもよい
し、あるいは、プログラムとは別に計算機にダウンロー
ドされてもよい。プログラム内部に暗号関連情報が埋め
込まれる場合は、どの位置に格納されるかは、実行バイ
ナリ形式に依存する。
【0064】各領域に対応する鍵は、命令(1)を用い
て暗号化属性レジスタ20に設定されるが、この設定
は、プログラムローダー(およびOS)によって、プロ
グラムのロード、アドレス空間へのマップ時に行われ
る。
【0065】動的に暗号化対象となるデータ領域を新規
に作成する場合には、その時点で命令(1)を使用して
暗号化属性レジスタ20への設定を行う。この動作に関
しては、後述する暗号化データ領域のプロセス間共有に
て詳述する。
【0066】図3は、複数種類の実行コードを組み合わ
せたプログラムを実行する際の、暗号化属性レジスタ2
0への鍵設定の例を示す。図3において、プロセッサ固
有の公開鍵Kpによってそれぞれ暗号化された実行コード
(オブジェクト)の鍵11〜14(Ekp[Kx])がエント
リされ、これらの鍵Kxで暗号化されているプログラム
の各実行コード領域がプロセス空間31に配置されてい
る。暗号化属性レジスタ20は、対応する領域の開始ア
ドレス、終端アドレス、鍵を平文状態で格納する。暗号
化属性レジスタ20の構成は、説明の便宜上、簡略化し
てある。
【0067】図3の例では、プログラムは、鍵Kaで暗号
化されている実行テキスト領域Taとデータ領域Da、鍵Kb
で暗号化されている実行テキスト領域Tb、鍵kcで暗号化
されている実行データ領域Dc、暗号化命令実行モード下
で、鍵Kdで暗号化されてデータを格納する(暗号化)スタ
ック領域Sから構成されている。ここでは、プロセッサ
の公開鍵で暗号化された鍵エントリ11〜14は、プロ
グラムの外部から供給される。命令(1)を使用すること
によって、マイクロプロセッサ1の内部で、各鍵エント
リ11〜14から、鍵Ka、Kb、Kc、Kdをそれぞ
れ復号し、プロセス空間に配置された各暗号化領域に対
応して、暗号化属性レジスタ20の各エントリ22〜2
6に領域情報、鍵情報などを登録する。
【0068】次に、平文の命令実行モードから暗号化命
令実行モードへの移行処理について説明する。この移行
処理の方法には、明示的移行処理命令記述方法と、自動
移行処理方法の2通りがある。
【0069】(1)明示的移行処理命令記述方法 まず、プログラムの先頭から命令を順次実行していく
と、保護すべき対象となる実行コードの直前で、プロセ
ッサの実行モードを暗号化命令実行モードへ移行させる
命令が明示的にコード内に記述されている場合がある。
マイクロプロセッサ1がこの移行命令を実行することに
よって、以降の実行コードに対しては、暗号化された実
行コードと見倣して、実行コードを復号しながらデコー
ド、実行する。
【0070】暗号化命令実行モードへの移行命令の例
は、以下のようになる。
【0071】 モード移行命令:cryptomode (飛び先アドレス) 同様に、暗号化命令実行モードから通常の平分命令実行
モードへ戻す命令は、以下のようになる。
【0072】 モード解除命令:retmode (戻り先アドレス) 飛び先アドレス、および、戻り先アドレスは省略可能
で、それぞれ、省略時には、直後の命令の直前でモード
移行処理が行なわれる。
【0073】暗号化モードへの移行命令が発行されてか
ら、モード解除命令が発行されるまでの期間、マイクロ
プロセッサ1は、プログラムカウンタで指し示される実
行コードを暗号化されたものとみなして復号、デコー
ド、実行を続ける。
【0074】この方式では、一度暗号化命令実行モード
に突入すると、途中で、他の暗号鍵で暗号化された実行
コード内の関数へジャンプ/コールする場合には、呼び
出し先でも同様な暗号化命令実行コードへの移行命令を
記述しておく必要がある。さらに、呼び出し先から戻る
場合にも、モード解除命令を記述する必要があるが、こ
のままでは、呼び出し元の実行モードへの移行が自動的
に行えない。そこで、ある暗号化命令実行モードに入っ
てから別の暗号化命令実行モード(あるいは平文命令実
行モードでもよい)に移行する際(コール時)には、ス
タックに、戻りアドレスのほかに呼び出し元の暗号化属
性レジスタ20のIDを追加しておく。あるいは、バッ
クリンク情報としてプロセッサ内部で保持し、フラグを
設定しておき、リターン時にこの情報を利用して元の命
令実行モードへ回復させる。
【0075】この方式では、プログラム開発ツール(コ
ンパイラ、リンカ、暗号化ツールを含む)などを用い
て、実行プログラム内の暗号化領域として指定した領域
の直前/直後に、上記の命令実行モード移行命令を自動
的に挿入し、モードの移行が破綻しないよう正しく管理
することが必要となる。明示的なモード移行命令を任意
の位置に挿入することによって、暗号化される領域の粒
度を比較的細かく指定することができるが、暗号化命令
実行モードへの移行位置をプログラム内に明記している
ため、ハッカーなどから攻撃対象となるコード位置を教
えているのに等しい。本当に暗号化すべき部分のみモー
ド移行を行い、それ以外は極力平文実行モードで高速な
プログラム実行を期待する場合には有効かもしれない
が、解析に対する強度は下がってしまうという欠点があ
る。なお、この場合、予め暗号化領域に対する暗号化属
性レジスタを設定しておく必要はない。
【0076】(2)領域アクセス時に暗号化属性に応じ
た自動移行処理方法 一方、上述の明示的モード移行命令を使用せず、あらか
じめ暗号化領域をメモリ上にマップする際に、暗号化属
性レジスタを設定しておき、暗号化対象コード領域での
実行や暗号化対象データ、スタック領域への読み書き時
に自動的に実行モードへの移行を判別、必要な場合には
実行モードの切り替えを行う方式もある。
【0077】この場合には、命令(1)を用いて、予め
実行コードの暗号化された領域情報をプロセッサ内部の
暗号化属性レジスタ20に記憶させておくことになる。
【0078】明示的なモード移行命令やモード解除命令
はなく、これらの指定領域に突入したり、指定領域の外
の実行コード部へ実行が移行した際には、自動的にモー
ド切替えが行われる。実行中の暗号化された実行コード
から移行しようとする先の実行コードが別の鍵で暗号化
された領域である場合には、移行先の暗号化実行コード
に対応したモード移行が自動的に実行される。暗号化対
象のデータ、スタック領域に対しても同様な判別、実行
が行われる。
【0079】以上の構成を有する耐タンパプロセッサ
(マイクロプロセッサ1)を前提として、本発明のプロ
セス共有方式を説明する。
【0080】<第1実施形態>第1実施形態において
は、2つのプロセス間でのみ使用可能なデータ領域、す
なわち暗号化データ領域の共有方式について説明する。
【0081】ここで生成される共有データ領域に対して
読み書きされるデータは、マイクロプロセッサ内部のハ
ードウェアで暗号化/復号化され、鍵を知らない他プロ
セスからは秘匿される。
【0082】異なるプロセス間で、ある暗号化されたデ
ータ領域を共有するためには、通常のOSがサポートす
るメモリ共有手段のほかに、そのデータ領域に対して使
用される暗号/復号化鍵を2つのプロセス間で共有させ
る手段が必要がある。
【0083】これを実現するのに2つの方法がある。
【0084】第1の方法は、最も単純な方法として、共
有すべき暗号化データ領域用の鍵を、プロセス間共有す
るプログラム間で事前に知っている、あるいは、共有で
きる状態にしておくことである。
【0085】第2の方法として、鍵を事前に共有できな
い場合、暗号化データの共有を要求する正しいプロセス
に対して、鍵情報を安全に通知する方法である。
【0086】第1の方法、つまり、事前の鍵の共有につ
いては、同一プログラムに関してであれば、複数のプロ
セス間で暗号化データを共有するために、暗号化データ
領域用の暗号/復号鍵を、あらかじめ同一のものに設定
することが可能である。鍵の設定方法には、(i)実行
コード内の暗号化されたデータ領域内に鍵を直接格納し
ておく、あるいは、(ii)必ず同一の鍵を生成できる
ような初期値、アルゴリズムを利用して鍵を一意に決定
しておくことによって、鍵を暗号化データ共有領域に対
応する暗号化属性レジスタに設定する方法がある。
【0087】暗号化属性レジスタへの鍵の設定は、前述
した命令(1)でできる。命令(1)では、暗号化属性
レジスタに指定する鍵は、プロセッサ固有の公開鍵で暗
号化されていたが、プロセス間の共通鍵を設定する場
合、すでに命令実行コードおよび鍵自体が暗号化されて
いるため、以下の命令によって、直接鍵を設定すること
も可能である。
【0088】setik セグメントID 鍵 … (2) 後は、通常の共有メモリと同様に、OSが提供するメモリ
共有手段を利用して、暗号化データ領域の割り当て、他
プロセスからのアタッチを行なえばよい。メモリ共有を
要求する他プロセスは、対象となる暗号化データ領域に
対応する鍵をすでに知っているため、領域へのアクセス
権さえ獲得できれば、暗号化データ領域の作成元プロセ
ス(オーナープロセス)と同様のメモリアクセスが、こ
の暗号化データ領域に対して可能となる。
【0089】第2の方法、すなわち、プログラム作成時
に暗号化データ領域用の鍵情報を事前に共有できない場
合には、暗号化データ領域を作成したプロセス(「オー
ナープロセス」と称する)が、暗号化/複号化に使用す
る鍵情報を決定し、データ共有を要求する正当な他プロ
セス(「クライアントプロセス」と称する)に対して、
鍵情報を安全に通知する必要がある。
【0090】この場合、まず、暗号化データ領域用の鍵
(の初期値)を、領域を生成するオーナープロセスが決
定する必要がある。
【0091】鍵の初期値決定には、第1の方法と同様
に、実行コード内の暗号化されたデータ領域内に直接格
納しておいた鍵の初期値を利用するか、あるいは、必ず
同一の鍵を生成できるような初期値、およびアルゴリズ
ムを用いて、鍵を一意に決定しておくことによって、毎
回同一の鍵の初期値を使用することが可能であるが、こ
れ以外にも、乱数発生ルーチン(ソフトウエア)や乱数
発生器(ハードウエア)を呼び出すことによって初期値
を設定し、動的に鍵の初期値を生成してもよい。この場
合、プログラム実行ごとに毎回異なる鍵を生成/使用す
ることにより、解析からの強度を高めることになる。こ
の、鍵の初期値決定シーケンスは、暗号化命令実行モー
ドにて行われることが望ましい。
【0092】オーナープロセスが鍵の初期値を決定した
ならば、暗号化データ領域の共有を要求している他プロ
セスと鍵交換を行うことによって、2プロセス間でのみ
利用可能な暗号化データ領域用の鍵を算出する。
【0093】図4および5は、共通鍵をその都度生成す
ることによって暗号化データ領域を共有する場合の、処
理手順を示す図である。図4および5に示す例では、De
ffie-Hellman(D−H)鍵交換シーケンスを応用する。
D-H法では、Kab = (α^Xa)^Xb = Ka^Xb = Kb^Xaが、f(K
a, Kb)からは計算できないという特徴を利用して、2者
間でのみ利用可能な鍵を生成することが可能である。こ
こで、Kabは共通鍵を表わし、Ka、Kbの値と、鍵交
換のための鍵Xa、Xbをベキ指数とするベキ乗計算で
算出される。
【0094】図4および5において、オーナープロセス
AとクライアントプロセスBが実行中である。オーナープ
ロセスAは、プロセス間で共有する共有暗号化データ領
域Sabを生成するプロセスであり、クライアントプロ
セスBは、暗号化データ領域Sabの共有を要求するプ
ロセスである。
【0095】まず、オーナープロセスAは、暗号化実行
命令モードに移行すべく、実行プロセス空間(あるいは
アドレス空間)に暗号化実行コード/データ領域42を
生成し、この領域42に対して、たとえば外部メモリに
暗号化されて格納されている鍵Ekp[Kx]を指定する
(ステップS81)。鍵Kxは、マイクロプロセッサ1
に固有の秘密鍵Kpで復号化され、復号化された鍵Kx
と、暗号化実行コード/データ領域42の開始アドレス
および終端アドレスとを関連付けて、暗号化属性レジス
タ52に設定する。
【0096】オーナープロセスAはさらに、秘匿される
べき暗号化データのための秘匿データ領域Haを、自己
のプロセス空間に独自に割り当て、この秘匿データ領域
Haに対して、秘匿データ領域用の鍵Khaを指定する
(ステップS82)。秘匿データ領域用の鍵Khaは、暗
号化されたプログラム内にあらかじめ埋め込まれている
場合は、これを用いるが、乱数発生器で初期値を生成
し、鍵Khaを動的に作成してもよい。鍵Khaが動的に作
成された場合は、オーナープロセスAの暗号化実行コー
ド/データ領域42に保存される。秘匿データ領域Ha
の開始アドレス、終端アドレスは、この領域用の鍵Kha
と関連付けて、暗号化属性レジスタ53に設定される。
【0097】次に、オーナープロセスAは、D−Hによ
り、鍵交換に必要な鍵KaおよびXaを算出する(ステ
ップS83)。具体的には、まず、プロセスAの鍵Ka
を計算するために必要な情報(αとq)を生成する。これ
らの値の生成手段は、乱数発生による等、任意の方法を
あらかじめ決めておく。さらに、鍵交換に必要なもうひ
とつの鍵Xaを決定し、これを秘匿メモリ領域Ha44に
保存する。これらを用いて、オーナープロセスAの鍵Ka
(=α^Xa mod q) を算出し、鍵Kaを暗号化されない通
常のデータ領域Da43に格納する。この計算途中で使
用されるデータはすべて、暗号化されたスタック領域
(不図示)、または秘匿データ領域Ha上に置かれる。
【0098】プロセスAの鍵Kaは公開鍵のような扱い
で、プロセス空間を超えて、バスやメモリ場を平文の形
で交換される。一方、鍵交換のための鍵Xaは、秘密鍵
のような扱いで、暗号化された秘匿領域Haに置かれて
いる。
【0099】上記のステップは、クライアントプロセス
Bにおいても行なわれる。すなわち、プロセスBは、対
応するプロセス空間に暗号化実行コード/データ領域6
2を指定し(ステップS91)、さらに独自に秘匿デー
タ領域Hb64を生成して、秘匿データ領域Hb64用
の鍵Khbを指定する(ステップS92)。これらの領
域のアドレスおよび対応する鍵は、暗号化属性レジスタ
71の対応するエントリ72、73に設定される。さら
に、D−H法により、プロセスAとの鍵交換に必要な鍵
KbとXbを算出する(ステップS93)。鍵Kbは平
文状態で通常のデータ領域Db63に置かれ、鍵Xb
は、秘匿データ領域Hb64に置かれる。
【0100】次に、オーナープロセスAは、鍵Kaをプ
ロセスBに送信する(ステップS84)。鍵Kaは公開
鍵のような扱いなので、ライブラリやOSが提供するA
PIなどの、任意のプロセス間通信機能を利用して送信
することができる。一方、クライアントプロセスBも、
同様のプロセス間通信機能を利用して、鍵Kbをプロセ
スAに送信する(ステップS94)。
【0101】オーナープロセスAは、プロセスBから受
信した鍵Kbと、自己の持つ鍵Xaとを用いて、共通鍵
Kab(=Kb^Xa)をベキ乗計算し、この共通鍵を秘匿
メモリ領域Haに保存する(ステップS85)。
【0102】同様に、クライアントプロセスBは、プロ
セスAから受信した鍵Kaと自己が有する鍵Xbとを用い
て、共通鍵Kab(=Ka^Xb)を算出し、これを秘匿メモ
リ領域Hbに保存する(ステップS95)。
【0103】次に、オーナープロセスAは、プロセスA
とBとからのみアクセスが許可される共有暗号化データ
領域Sabを作成する(ステップS86)。共有領域Sab
は、ライブラリやOSが提供するメモリ割り当て手段を
利用して作成される。共有領域Sabの開始アドレス、終
端アドレスは、共通鍵Kabと関連付けて、暗号属性レジ
スタ54に設定される。クライアントプロセスBは、オ
ーナープロセスAが作成した共有暗号化データ領域Sab
を、OSが提供するメモリ共有手段を利用して、自身の
プロセス空間にマップする(ステップS96)。このメ
モリ共有情報のやりとりは、暗号化されている必要はな
い。プロセスBの空間にマップされた共有暗号化データ
領域Sab’に関しても、開始アドレス、終端アドレス
を、プロセスBが有する共通鍵Kabと関連付けて、暗号
化属性レジスタ74に設定する。
【0104】このような状態にした上で、プロセスA、
Bともに、共有暗号化データ領域Sab(またはSab’)
への読み書きを自由に行なうことができる(ステップS
100)。共有暗号化データ領域へのアクセスは、マイ
クロプロセッサ(耐タンパプロセッサ)1の暗号化属性
レジスタを介して行なわれるため、共通鍵を知っている
プロセスAおよびBのみがアクセス可能である。これ以
外の共通鍵を知らない他プロセスからはアクセスでき
ず、2プロセス間だけで暗号化データ領域の共有が安全
に行われる。
【0105】また、各プロセスが、共有暗号化データ領
域に対してデータの書き込み/読み込みを行なう際に
は、プロセッサコア内部の暗号化属性レジスタの情報を
参照して、1次キャッシュと外部メモリとの間で、自動
的にデータの暗号化/複号化を行なう。これにより、暗
号化プログラムにおける処理データの秘密も保護され
る。
【0106】<第2実施形態>第1実施形態では、2つ
のプロセス間で鍵交換を行い、共通鍵をそれぞれの暗号
化属性レジスタに登録することによって、共有暗号化デ
ータ領域が実現された。第2実施形態では、鍵交換に認
証を行なうことにより、さらに安全な暗号化データ領域
の共有方法を提供する。
【0107】第1実施形態の方式では、悪意のある改造
OSなどのプログラムが鍵交換を行なう2つのプロセス
間に介在した場合、man in the middle attackと呼ばれ
る攻撃がなされる可能性がある。すなわち、介在プログ
ラムが、鍵の生成に必要な情報を偽り、鍵を任意に操っ
て暗号化データを自由に盗み見る、あるいは改ざんする
おそれがある。
【0108】悪意のある改造プログラムがシステムに挿
入される余地のないシステムであれば、第1実施形態の
鍵交換方式を適用しても問題はないが、PC上の汎用O
Sのようにプログラムを自由に追加できるようなシステ
ムの場合は、攻撃を受ける可能性がある。
【0109】このような攻撃から鍵交換シーケンスを防
御するためには、プログラムが使用する公開鍵などの情
報を公共機関などを通じて認証/発効した証明書を用意
し、これを用いた正当な公開鍵でなければ正しく交換で
きないことを保証する方式を利用すればよい。
【0110】以下に、公開鍵暗号技術である電子署名ア
ルゴリズムと、D−H鍵変換アルゴリズムを使用して防
御する方法を、図6を参照して説明する。鍵交換シーケ
ンス中に用いられる暗号化アルゴリズムには、任意のも
のを使用できる。
【0111】この方法を実行中、実行プロセスは暗号化
命令実行モードに移行し、鍵交換シーケンスの間に作成
/使用されるデータは、各プロセス内で用意される秘匿
メモリ領域Ha、Hbに置かれるものとする。
【0112】図6において、暗号化領域の共有を求める
クライアントプロセスBは、乱数発生器によって生成さ
れたチャレンジ乱数Bnと、公共機関により作成された
証明書BcertをオーナープロセスAに送り、認証を要求
する。
【0113】ここで、証明書Bcertは、公共機関が秘密
鍵Ksgを使って作成した証明書である。公共機関によっ
て発行されるクライアントプロセスBの公開鍵Kabが埋
め込まれており、公共機関の公開鍵Kpgを使うことによ
って公開鍵Kabを抽出できる。
【0114】オーナープロセスAへの証明書の送信は暗
号化される必要はなく、OSやライブラリによって提供
されるシステムコールやAPIなどを利用してもよい。
これ以後、プロセス間で証明書などのデータを送受信す
るための手段は、特に説明しない限り、通常のOSやライ
ブラリのサービスルーチンを利用することができる。
【0115】オーナープロセスAは、受け取った証明書
Bcertの完全性の検証を公共機関の公開鍵Kpgを使って
行う。検証の結果、公共機関による署名が正当であると
判明した場合、オーナープロセスAは、鍵交換第1フェ
ーズ値Avを計算する。このとき、クライアントプロセス
Bの公開鍵Kpbも求める。同時に、オーナープロセスA
は、チャレンジ乱数Anと証明書Acertをクライアント
プロセスBに送り、認証を要求する。クライアントプロ
セスBは、受け取った証明書Acertの完全性を検証し、
公共機関による署名が正当であると判明した場合、鍵交
換第1フェーズ値Bvを計算する。このとき、オーナー
プロセスAの公開鍵Kpaも求める。
【0116】オーナープロセスAは、鍵交換第1フェー
ズ値Avと、プロセスBのチャレンジ乱数Bnに対する
メッセージ署名を作成し、クライアントプロセスBへ送
る。
【0117】クライアントプロセスBも同様に、鍵交換
第1フェーズ値Bvと、プロセスAのチャレンジ乱数An
に対するメッセージ署名を作成し、オーナープロセスA
へ送る。
【0118】オーナープロセスAは、クライアントプロ
セスBの公開鍵Kpbを用いて、クライアントプロセスB
から受け取ったメッセージ署名を調べ、このメッセージ
署名が変更されていないことを検証する。
【0119】オーナープロセスAは、乱数と、検証され
たフェーズ値Bvを用いて、プロセスA、B間の認証さ
れた共通鍵Kab(あるいはKauth)を算出する。
【0120】クライアントプロセスBも同様に、オーナ
ープロセスAの公開鍵Kpaを用いて、オーナープロセス
Aから受け取ったメッセージ署名を調べ、このメッセー
ジ署名が変更されていないことを検証する。
【0121】クライアントプロセスBは、乱数と、検証
されたフェーズ値Avを用いて、プロセスA、B間の認
証された共通鍵Kab(あるいはKauth)を算出する。
【0122】このような認証方法を使用することによっ
て、2つのプロセス間で、非暗号化通信路上で鍵情報を
交換する場合に、悪意のあるプログラム(偽造OSも含む)
が2プロセス間に介在して、認証鍵を改ざんしたり鍵自
体を破る事態を防止することができる。
【0123】続いて、オーナープロセスAは、図5(第
1実施形態)のステップS86と同様に、共通鍵Kab
(またはKauth)を知っているプロセスA、Bからのみ
アクセスされる共有暗号化データ領域Sabを作成する。
共有暗号化データ領域Sabは、ライブラリやOSが提供
するメモリ割り当て手段を利用して作成される。領域S
abの開始アドレス、領域サイズ(または終端アドレ
ス)、属性値などは、OSの記憶リソース管理下に置か
れる。共通鍵Kab(またはKauth)は、領域アドレスと
関連付けて、暗号化属性レジスタに設定される。
【0124】次に、クライアントプロセスB、図5(第
1実施形態)のステップS96と同様に、オーナープロ
セスAが作成した共有暗号化データ領域Sabを、OSの
提供するメモリ共有手段を利用して、自身のプロセス空
間にマップする。このメモリ共有情報のやりとりは、暗
号化されている必要は無い。プロセスBに関しても、プ
ロセスBの領域Sab’用の暗号化属性レジスタに、共通
鍵Kab(またはKauth)を含む情報を設定しておく。
【0125】これ以降、プロセスA、Bともに、共有暗
号化データ領域Sabへのアクセスは、マイクロプロセッ
サ(耐タンパプロセッサ)1の暗号化属性レジスタを介
してアクセスされるため、共通鍵Kab(またはKauth)
を知っているプロセス間でのみ安全に行うことができ
る。
【0126】<第3実施形態>第1および第2実施形態
では、2プロセス間で共有暗号化データ領域を作成する
手順について述べた。第3実施形態では、3以上のプロ
セスが、これらの間で共有暗号化データ領域Hshareを
構築する手順について説明する。
【0127】図7は、プロセスA、B、Cの各アドレス
空間と、これらのプロセスが共有する共有暗号化データ
領域の構成例を示す。図7の例では、プロセスAが共有
暗号化データ領域Hshareの生成者となるオーナープロ
セスである。図8は、共有暗号化データ領域の作成のた
めの各プロセスの暗号化属性レジスタの構成例を示す。
【0128】まず、オーナープロセスAは、暗号化命令
実行モードに移行し、自身のアドレス空間に共有される
べき暗号化データ領域Hshare106を生成する。領域
Hshare用の鍵Kshareは、あらかじめプログラムコード
内に埋め込まれていてもよいし、あるいは、乱数発生器
などを用いて初期値を生成し、これを利用して生成した
鍵としてもよい。鍵Kshareを動的に生成した場合に
は、この鍵を、秘匿された暗号化領域に保存する。共有
暗号化データ領域Hshare106のアドレスと、この領
域のための鍵Kshareは、マイクロプロセッサ1の内部
の暗号化属性レジスタ216に設定される。
【0129】次に、オーナープロセスAは、第1実施形
態で説明した方式に従い、プロセスBとの間でのみ共有
される共有暗号化データ領域Sab104を自己のアドレ
ス空間に作成する。さらに、プロセスAとプロセスCとの
間で共有される共有暗号化データ領域Sac105を作成
する。すなわち、オーナープロセスAを中心として、暗
号化データ領域を共有したい各プロセスとの間で1対1
で共有される共有暗号化データ領域Saxを作成する。図
7の例におけるオーナープロセスAの共有領域Sab、Sac
のアドレスと、これらの領域にアクセスするための共通
鍵Kab,Kacは、それぞれ関連付けられて暗号化属性レ
ジスタ214、215に設定される。
【0130】オーナープロセスAと、各クライアントプ
ロセスとの間の1対1対応の共有暗号化データ領域Sax
は、プロセス間で最終的な共有領域となるHshareの鍵
Kshareを安全に通知する通信路として機能する。この
意味で、2プロセス間の共有暗号化領域Saxは、鍵通知
領域と称されてもよい。具体的には、プロセスAは、プ
ロセスBとの共有領域Sab上に 共有暗号化データ領域H
share用の鍵Kshareを書き込む。プロセスBは、自己の
空間に仮想的に共有暗号化データ領域Sab’を作成し、
領域Sab−Sab’間を通信路として鍵Kshareを読み込
む。これにより、プロセスAとBとの間で領域Hshare
の鍵Kshareを共有することができる。
【0131】プロセスBはさらに、OSによって提供さ
れる通常の共有メモリと同様のメモリ共有手段を利用し
て、オーナープロセスAの共有暗号化領域Hshareを、
自己のプロセス空間にマッピングする。これにより、共
有暗号化データ領域Hshare’を仮想的に自己のアドレ
ス空間に作成する。プロセスBの領域Sab’および最終
的な共有領域Hshare’のアドレスと、これらの領域用
の鍵KabおよびKshareは、それぞれ関連付けられて、
プロセスBの暗号化属性レジスタ224、225にそれ
ぞれ設定される。
【0132】同様に、プロセスCがプロセスAが作成し
た共有領域Hshareを共有する場合には、オーナープロ
セスAによって領域Sac上に書き込まれたHshare用の鍵
Kshareを、通信路Sac−Sac’を介してプロセスCが読
み込み、プロセスAの領域Hshareを自己のプロセス空
間へのマッピングすることで、領域Hshareを共有する
ことができる。鍵通知領域Sac’および共有暗号化デー
タ領域Hshare’’のアドレスと、鍵KacおよびKshare
は、それぞれ関連付けられ、プロセスCの暗号化属性レ
ジスタ234、235に設定される。
【0133】これ以外のプロセスが共有暗号化データ領
域Hshareを共有する場合も、プロセスBやCと同様のシ
ーケンスを繰り返すことで、オーナープロセスAとの間
に安全な通信路が確立され、メモリ共有が可能となる。
【0134】なお、図7に示される各プロセスの暗号化
実行コード/データ領域101、121、131や、秘
匿データ領域Ha102、Hb123、Hc133の生成につ
いては、第1実施形態と同様であるので、説明を省略す
る。
【0135】第3実施形態では、3つのプロセス間でひ
とつの暗号化されたデータ領域を共有する例を説明した
が、4以上のプロセス間でも同様の方法で暗号化データ
領域を共有することができる。この場合、共有プロセス
の数をn個とすると、オーナープロセスとの間に、n−
1の通信路、すなわち共有領域Saxを形成し、この通信路
を介して共通鍵Kshareの通知を行なうことによって、
これらのプロセス間でのみ暗号化データ領域Hshareを
共有することが可能になる。
【0136】
【発明の効果】以上説明したように、暗号化データ領域
を2つのプロセス間で共有するために、各プロセスは暗
号化命令実行モードに移行してから鍵交換を行なう。共
通鍵と、その計算に使用された一時データは、各プロセ
スのみが読める秘匿データ領域またはプロセッサ内部の
レジスタ上に置かれるので、OSの特権からも保護され
た安全な鍵共有が可能になる。
【0137】また、安全な鍵交換の結果生成された共通
鍵に基づき、一方のプロセスが共有されるべき暗号化デ
ータ領域を作成し、他方のプロセスはそれを自己のアド
レス空間にマップする。マイクロプロセッサ内部の暗号
化属性レジスタに、各プロセスの共有暗号化データ領域
と共通鍵とを関連付けて設定することにより、暗号化デ
ータ領域の共有が安全に行なわれる。
【0138】さらに、3以上のプロセス間でひとつの暗
号化データ領域を共有する場合は、オーナープロセスと
他の任意のプロセスとの間で共有される共有暗号化領域
を、鍵通知のための安全な通信路として利用することに
より、3以上の正当なプロセス間での最終的な共有暗号
化データ領域の共有が安全に行なわれる。
【図面の簡単な説明】
【図1】本発明によるプロセス間でのデータ共有方法の
前提となるマイクロプロセッサの構成図である。
【図2】図1のマイクロプロセッサ内部の暗号化属性レ
ジスタと鍵格納データの構成例を示す図である。
【図3】プロセス内で生成される暗号化領域と、領域の
生成に用いる鍵と、これらを対応付けて格納する暗号化
属性レジスタの関係を示す図である。
【図4】本発明の第1実施形態における2つのプロセス
間での暗号化データ領域の共有の模式図と、対応する暗
号化属性レジスタとを示す図である。
【図5】図4に示す2つのプロセス間での暗号化データ
領域の共有を行なうための処理手順を示すフローチャー
トである。
【図6】本発明の第2実施形態における、2つのプロセ
ス間でのデータ共有をさらに安全に行なうための認証手
続きを示すシーケンス図である。
【図7】本発明の第3実施形態における、3つのプロセ
ス間での暗号化データ領域の共有を示す模式図である。
【図8】図7に示す3プロセス間での暗号化データ領域
共有を実現するための、各プロセスの暗号化属性レジス
タの構成例を示す図である。
【符号の説明】
1 マイクロプロセッサ 2 命令TLB 3 プロセッサコア 4 命令実行部 5 1次キャッシュ 6 コード・データ暗号化/複号化部 7 バスインターフェースユニット 20、51、71、211、221、 231 暗号化
属性レジスタ 44、64、103、123、133 秘匿データ領域
Hx 45、64、104、105、124、 134 共有
暗号化データ領域Sax 106、125、135 共有暗号化データ領域Hshar
e
───────────────────────────────────────────────────── フロントページの続き (72)発明者 白川 健治 神奈川県川崎市幸区小向東芝町1番地 株 式会社東芝研究開発センター内 (72)発明者 尾崎 哲 神奈川県川崎市幸区小向東芝町1番地 株 式会社東芝研究開発センター内 (72)発明者 藤本 謙作 神奈川県川崎市幸区小向東芝町1番地 株 式会社東芝研究開発センター内 Fターム(参考) 5B017 AA03 BA07 5B076 FA00 5B098 GA04 JJ08 5J104 AA16 EA02 EA04 EA24 NA02 NA42

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】 プログラムおよびデータの暗号化および
    復号化機能を有するプロセッサ上で、暗号化されたデー
    タ領域を2以上のプロセス間で共有する方法であって、 前記2以上のプロセスの各々に、あらかじめ共通鍵を与
    えておくステップと、 プロセッサの実行モードを暗号化命令実行モードに移行
    させるステップと、 前記2以上のプロセスのうち、第1のプロセスに、前記
    共通鍵に対してのみ有効な共有暗号化領域を自己のプロ
    セス空間に生成させるステップと、 前記2以上のプロセスのうち、その他のプロセスに、前
    記第1のプロセスが生成した共有暗号化領域を自己のプ
    ロセス空間にマップさせるステップと、 前記各プロセスの共有暗号化領域を、前記共通鍵と関連
    付けてプロセッサ内部の暗号属性レジスタに設定するス
    テップとを含む暗号化データ領域のプロセス間共有方
    法。
  2. 【請求項2】 プログラムおよびデータの暗号化および
    復号化機能を有するプロセッサ上で、暗号化されたデー
    タ領域を2つのプロセス間で共有する方法であって、 プロセッサの実行モードを暗号化命令実行モードに移行
    させるステップと、 各プロセスに、自己のプロセス空間にそれぞれ独自の秘
    匿データ領域を生成させるステップと、 各プロセスに、鍵交換に用いるそれぞれ異なる鍵ペアを
    生成させ、前記2つのプロセス間で鍵交換を行なわせる
    ステップと、 前記鍵交換に基づいて、各プロセスに共通鍵を生成させ
    るステップと、 前記2つのプロセス間で共有され、前記共通鍵に対して
    のみ有効な共有暗号化領域を生成するステップと、 前記共通鍵と、鍵交換の過程で使用されたデータとを、
    前記各プロセスの秘匿データ領域に保存するステップと
    を含む暗号化データ領域のプロセス間共有方法。
  3. 【請求項3】 前記共有暗号化領域を生成するステップ
    は、前記2つのプロセスのうち、一方のプロセスが自己
    のプロセス空間に共有暗号化領域を生成し、他方のプロ
    セスは、この共有暗号化領域を自己のプロセス空間にマ
    ップするステップを含み、 前記プロセス間共有方法は、各プロセスの共有暗号化領
    域とそれぞれの共通鍵とを関連付けて、プロセッサ内部
    の暗号化属性レジスタに設定するステップをさらに含む
    ことを特徴とする、請求項2に記載の暗号化データ領域
    のプロセス間共有方法。
  4. 【請求項4】 前記鍵交換のステップは、メッセージ署
    名を検証するステップを含み、前記共通鍵を生成するス
    テップは、前記検証に基づき、認証された共通鍵を生成
    するステップを含むことを特徴とする請求項2に記載の
    暗号化データ領域のプロセス間共有方法。
  5. 【請求項5】 前記各プロセスが、前記共有暗号化デー
    タ領域に対して書込または読込を行なう際に、前記プロ
    セッサ内部の暗号化属性レジスタに設定された情報を参
    照して、外部メモリとの間でデータの暗号化および復号
    化を行なうステップをさらに含むことを特徴とする、請
    求項1〜4のいずれかに記載の暗号化データ領域のプロ
    セス間共有方法。
  6. 【請求項6】 プログラムおよびデータの暗号化および
    復号化機能を有するプロセッサ上で、暗号化されたデー
    タ領域を3以上のプロセス間で共有する方法であって、 プロセッサの実行モードを暗号化命令実行モードに移行
    するステップと、 前記3以上のプロセスに含まれる第1のプロセスに、こ
    れらのプロセス間全体で共有される共有暗号化データ領
    域を生成させるステップと、 前記第1のプロセスに、前記共有暗号化データ領域に対
    する共通鍵を指定させるステップと、 前記第1のプロセスと、他のひとつのプロセスとの間で
    共有される暗号化された鍵通知領域を、他のすべてのプ
    ロセスに関してそれぞれ生成させるステップと、 前記鍵通知領域を介して、他のそれぞれのプロセスに、
    前記共通鍵を通知するステップと、 前記他のすべてのプロセスに、前記第1プロセスが生成
    した共有暗号化データ領域を自己のプロセス空間にマッ
    プさせるステップと、 前記各プロセスにマップされた共有暗号化データ領域
    と、通知された共通鍵とを関連付けて、前記プロセッサ
    内部の暗号化属性レジスタに格納するステップとを含む
    暗号化データ領域のプロセス間共有方法。
  7. 【請求項7】 前記第1のプロセスと他のひとつのプロ
    セスとの間で鍵通知領域を生成するステップは、 前記第1のプロセスと、他のひとつのプロセスの各々
    に、独自の秘匿データ領域を生成させるステップと、 前記第1のプロセスと、他のひとつのプロセスの各々
    に、鍵交換に用いるそれぞれ異なる鍵ペアを生成させ
    て、鍵交換を行なわせるステップと、 前記鍵交換に基づいて、前記第1のプロセスと他のひと
    つのプロセスとの間で用いられる第2の共通鍵を生成さ
    せるステップと、 前記第1のプロセスと他のひとつのプロセスとの間で共
    有され、前記第2の共通鍵に対してのみ有効な鍵通知領
    域を生成するステップと、 前記第2の共通鍵と、前記鍵交換の過程でされたデータ
    とを、前記各プロセスの秘匿データ領域に保存するステ
    ップとを含むことを特徴とする請求項6に記載の暗号化
    データ領域のプロセス間共有方法。
JP2000402672A 2000-12-28 2000-12-28 耐タンパプロセッサにおける暗号化データ領域のプロセス間共有方法 Expired - Fee Related JP4074057B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2000402672A JP4074057B2 (ja) 2000-12-28 2000-12-28 耐タンパプロセッサにおける暗号化データ領域のプロセス間共有方法
EP01310918A EP1220079A3 (en) 2000-12-28 2001-12-28 Method for sharing encrypted data region among processes in tamper resistant processor
US10/028,794 US20030126458A1 (en) 2000-12-28 2001-12-28 Method for sharing encrypted data region among processes in tamper resistant processor
US11/538,225 US7657760B2 (en) 2000-12-28 2006-10-03 Method for sharing encrypted data region among processes in tamper resistant processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000402672A JP4074057B2 (ja) 2000-12-28 2000-12-28 耐タンパプロセッサにおける暗号化データ領域のプロセス間共有方法

Publications (2)

Publication Number Publication Date
JP2002202720A true JP2002202720A (ja) 2002-07-19
JP4074057B2 JP4074057B2 (ja) 2008-04-09

Family

ID=18866918

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000402672A Expired - Fee Related JP4074057B2 (ja) 2000-12-28 2000-12-28 耐タンパプロセッサにおける暗号化データ領域のプロセス間共有方法

Country Status (3)

Country Link
US (2) US20030126458A1 (ja)
EP (1) EP1220079A3 (ja)
JP (1) JP4074057B2 (ja)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004036840A1 (ja) * 2002-10-17 2004-04-29 Matsushita Electric Industrial Co., Ltd. パケット送受信装置
JP2004280284A (ja) * 2003-03-13 2004-10-07 Sony Corp 制御プロセッサ、電子機器及び電子機器のプログラム起動方法、並びに電子機器のシステムモジュール更新方法
JP2004349754A (ja) * 2003-05-20 2004-12-09 Hitachi Ltd 暗号鍵変換機能付きicカードシステム
JP2005100378A (ja) * 2003-08-26 2005-04-14 Matsushita Electric Ind Co Ltd プログラム実行装置、認証局装置
WO2006126686A1 (ja) * 2005-05-26 2006-11-30 Matsushita Electric Industrial Co., Ltd. データ処理装置
JP2007013678A (ja) * 2005-06-30 2007-01-18 Fujitsu Ltd Icチップ、ボード、情報処理装置及びコンピュータプログラム
JP2008532419A (ja) * 2005-02-28 2008-08-14 マクロビジョン・コーポレーション 安全なソフトウェア通信方法及びシステム
JP2009278491A (ja) * 2008-05-16 2009-11-26 Casio Comput Co Ltd マイクロプロセッサ及びマイクロプロセッサ応用装置
JP2010161660A (ja) * 2009-01-08 2010-07-22 Sony Corp 情報処理装置、情報処理方法、プログラム、および情報処理システム
US7793083B2 (en) 2004-11-26 2010-09-07 Panasonic Corporation Processor and system for selectively disabling secure data on a switch
US7865733B2 (en) 2004-06-30 2011-01-04 Fujitsu Semiconductor Limited Secure processor and a program for a secure processor
US8181040B2 (en) 2003-08-26 2012-05-15 Panasonic Corporation Program execution device
JP2013228789A (ja) * 2012-04-24 2013-11-07 Nidec Sankyo Corp 履歴情報管理装置及び履歴情報の管理方法
JP2014049131A (ja) * 2012-08-29 2014-03-17 Freescale Semiconductor Inc ウォッチポイントを取り扱うためのデータ・プロセッサ・デバイスおよびその方法

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4115759B2 (ja) * 2002-07-01 2008-07-09 株式会社東芝 耐タンパプロセッサにおける共有ライブラリの使用方法およびそのプログラム
FR2849233B1 (fr) * 2002-12-24 2005-05-20 Trusted Logic Procede de securisation des systemes informatiques par confinement logiciel
JP3880933B2 (ja) * 2003-01-21 2007-02-14 株式会社東芝 耐タンパマイクロプロセッサ及びキャッシュメモリ搭載プロセッサによるデータアクセス制御方法
JP4263976B2 (ja) * 2003-09-24 2009-05-13 株式会社東芝 オンチップマルチコア型耐タンパプロセッサ
DE10345468B4 (de) * 2003-09-30 2006-09-14 Infineon Technologies Ag Verfahren zur sicheren Ausführung von Programmen
JP4282472B2 (ja) * 2003-12-26 2009-06-24 株式会社東芝 マイクロプロセッサ
JP4559794B2 (ja) * 2004-06-24 2010-10-13 株式会社東芝 マイクロプロセッサ
JP4612461B2 (ja) * 2004-06-24 2011-01-12 株式会社東芝 マイクロプロセッサ
JP4204522B2 (ja) * 2004-07-07 2009-01-07 株式会社東芝 マイクロプロセッサ
JP2006085676A (ja) * 2004-08-20 2006-03-30 Matsushita Electric Ind Co Ltd 暗号化命令処理装置
US7877608B2 (en) * 2004-08-27 2011-01-25 At&T Intellectual Property I, L.P. Secure inter-process communications
JP3814620B2 (ja) * 2004-10-15 2006-08-30 株式会社東芝 情報処理装置および情報処理方法
US8332653B2 (en) * 2004-10-22 2012-12-11 Broadcom Corporation Secure processing environment
US8266438B2 (en) 2004-10-25 2012-09-11 Security First Corp. Secure data parser method and system
US20060288209A1 (en) * 2005-06-20 2006-12-21 Vogler Dean H Method and apparatus for secure inter-processor communications
US7784087B2 (en) * 2005-08-04 2010-08-24 Toshiba Corporation System and method for securely sharing electronic documents
US7631207B1 (en) * 2006-04-21 2009-12-08 Sun Microsystems, Inc. Reducing power consumption for processing of common values in microprocessor registers and execution units
US8788829B2 (en) 2006-08-17 2014-07-22 Aol Inc. System and method for interapplication communications
US7822206B2 (en) * 2006-10-26 2010-10-26 International Business Machines Corporation Systems and methods for management and auto-generation of encryption keys
JP4976991B2 (ja) * 2007-11-22 2012-07-18 株式会社東芝 情報処理装置、プログラム検証方法及びプログラム
JP5322620B2 (ja) 2008-12-18 2013-10-23 株式会社東芝 情報処理装置、プログラム開発システム、プログラム検証方法及びプログラム
TWI377468B (en) * 2009-02-05 2012-11-21 Nuvoton Technology Corp Integrated circuit and memory protection apparatus and methods thereof
KR101070473B1 (ko) * 2009-10-13 2011-10-06 아주대학교산학협력단 동적 그룹키 생성 방법
WO2011068738A2 (en) 2009-11-25 2011-06-09 Orsini Rick L Systems and methods for securing data in motion
WO2011101972A1 (ja) 2010-02-18 2011-08-25 株式会社東芝 プログラム
EP2553904A2 (en) 2010-03-31 2013-02-06 Rick L. Orsini Systems and methods for securing data in motion
US20110258430A1 (en) * 2010-04-15 2011-10-20 Nokia Corporation Method and apparatus for applying execution context criteria for execution context sharing
CA2800809A1 (en) 2010-05-28 2011-12-01 Lawrence A. Laurich Accelerator system for use with secure data storage
US8495386B2 (en) * 2011-04-05 2013-07-23 Mcafee, Inc. Encryption of memory device with wear leveling
US20140149729A1 (en) 2011-07-18 2014-05-29 Ted A. Hadley Reset vectors for boot instructions
US9262639B2 (en) * 2013-01-09 2016-02-16 Cisco Technology Inc. Plaintext injection attack protection
US9055038B1 (en) * 2013-02-04 2015-06-09 Stealth Software Technologies, Inc. Apparatus, system, and method to garble programs
WO2014127147A1 (en) 2013-02-13 2014-08-21 Security First Corp. Systems and methods for a cryptographic file system layer
US10031863B2 (en) * 2014-01-30 2018-07-24 Hewlett Packard Enterprise Development Lp Access controlled memory region
CN105791234A (zh) * 2014-12-23 2016-07-20 宇龙计算机通信科技(深圳)有限公司 用于终端的数据共享方法、数据共享装置和终端
US9940455B2 (en) 2015-02-25 2018-04-10 International Business Machines Corporation Programming code execution management
US11070380B2 (en) * 2015-10-02 2021-07-20 Samsung Electronics Co., Ltd. Authentication apparatus based on public key cryptosystem, mobile device having the same and authentication method
KR102458351B1 (ko) * 2015-10-02 2022-10-26 삼성전자주식회사 공개키 암호 시스템 기반의 인증 장치, 그것을 갖는 모바일 장치 및 그것의 인증 방법
US10721067B2 (en) * 2016-08-10 2020-07-21 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Secure processor for multi-tenant cloud workloads
IL258380A (en) 2018-03-26 2018-05-31 Kazuar Advanced Tech Ltd A method and system for secure communication between protected containers
CN112256460B (zh) * 2020-11-24 2024-07-09 北京元心科技有限公司 进程间通信方法、装置、电子设备及计算机可读存储介质
US11743241B2 (en) 2020-12-30 2023-08-29 International Business Machines Corporation Secure data movement
US11991293B2 (en) 2021-08-17 2024-05-21 International Business Machines Corporation Authorized secure data movement

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4847902A (en) * 1984-02-10 1989-07-11 Prime Computer, Inc. Digital computer system for executing encrypted programs
US5123045A (en) * 1989-08-18 1992-06-16 Massachusetts Institute Of Technology Comprehensive software protection system
US5224166A (en) * 1992-08-11 1993-06-29 International Business Machines Corporation System for seamless processing of encrypted and non-encrypted data and instructions
US6408388B1 (en) * 1993-05-05 2002-06-18 Addison M. Fischer Personal date/time notary device
US5666411A (en) * 1994-01-13 1997-09-09 Mccarty; Johnnie C. System for computer software protection
US5805706A (en) * 1996-04-17 1998-09-08 Intel Corporation Apparatus and method for re-encrypting data without unsecured exposure of its non-encrypted format
US5940510A (en) * 1996-01-31 1999-08-17 Dallas Semiconductor Corporation Transfer of valuable information between a secure module and another module
US6009543A (en) * 1996-03-01 1999-12-28 Massachusetts Institute Of Technology Secure software system and related techniques
US5781633A (en) * 1996-07-01 1998-07-14 Sun Microsystems, Inc. Capability security for transparent distributed object systems
US5852666A (en) * 1996-07-01 1998-12-22 Sun Microsystems, Inc. Capability security for distributed object systems
US5825878A (en) * 1996-09-20 1998-10-20 Vlsi Technology, Inc. Secure memory management unit for microprocessor
US5937063A (en) * 1996-09-30 1999-08-10 Intel Corporation Secure boot
JPH10327147A (ja) * 1997-05-21 1998-12-08 Hitachi Ltd 電子認証公証方法およびシステム
US6704871B1 (en) * 1997-09-16 2004-03-09 Safenet, Inc. Cryptographic co-processor
US6249866B1 (en) * 1997-09-16 2001-06-19 Microsoft Corporation Encrypting file system and method
US6307936B1 (en) * 1997-09-16 2001-10-23 Safenet, Inc. Cryptographic key management scheme
US6003117A (en) * 1997-10-08 1999-12-14 Vlsi Technology, Inc. Secure memory management unit which utilizes a system processor to perform page swapping
US6088800A (en) * 1998-02-27 2000-07-11 Mosaid Technologies, Incorporated Encryption processor with shared memory interconnect
JPH11282667A (ja) 1998-03-31 1999-10-15 Nakamichi Corp 多重鍵方式の暗号処理機能を有するマイクロプロセッサ
US6684330B1 (en) * 1998-10-16 2004-01-27 Tecsec, Inc. Cryptographic information and flow control
US6370250B1 (en) * 1998-10-29 2002-04-09 International Business Machines Corporation Method of authentication and storage of private keys in a public key cryptography system (PKCS)
US6907608B1 (en) * 1999-01-22 2005-06-14 Sun Microsystems, Inc. Techniques for permitting access across a context barrier in a small footprint device using global data structures
US6651171B1 (en) * 1999-04-06 2003-11-18 Microsoft Corporation Secure execution of program code
WO2000067257A2 (en) * 1999-04-28 2000-11-09 Matsushita Electric Industrial Co., Ltd. Optical disk, optical disk recording and reproducing apparatus, method for recording, reproducing and deleting data on optical disk, and information processing system
JP2002014872A (ja) * 2000-06-29 2002-01-18 Fujitsu Ltd 暗号制御装置

Cited By (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7228422B2 (en) 2002-10-17 2007-06-05 Matsushita Electric Industrial Co., Ltd. Packet transmission/reception device
WO2004036840A1 (ja) * 2002-10-17 2004-04-29 Matsushita Electric Industrial Co., Ltd. パケット送受信装置
JP2004280284A (ja) * 2003-03-13 2004-10-07 Sony Corp 制御プロセッサ、電子機器及び電子機器のプログラム起動方法、並びに電子機器のシステムモジュール更新方法
JP4501349B2 (ja) * 2003-03-13 2010-07-14 ソニー株式会社 システムモジュール実行装置
JP2004349754A (ja) * 2003-05-20 2004-12-09 Hitachi Ltd 暗号鍵変換機能付きicカードシステム
JP4729839B2 (ja) * 2003-05-20 2011-07-20 株式会社日立製作所 Icカード
US10318768B2 (en) 2003-08-26 2019-06-11 Panasonic Intellectual Property Corporation Of America Program execution device
US12019789B2 (en) 2003-08-26 2024-06-25 Panasonic Holdings Corporation Program execution device
US10607036B2 (en) 2003-08-26 2020-03-31 Panasonic Intellectual Property Corporation Of America Program execution device
US11651113B2 (en) 2003-08-26 2023-05-16 Panasonic Holdings Corporation Program execution device
US8522053B2 (en) 2003-08-26 2013-08-27 Panasonic Corporation Program execution device
US10108821B2 (en) 2003-08-26 2018-10-23 Panasonic Intellectual Property Corporation Of America Program execution device
US9811691B2 (en) 2003-08-26 2017-11-07 Panasonic Intellectual Property Corporation Of America Program execution device
US10970424B2 (en) 2003-08-26 2021-04-06 Panasonic Intellectual Property Corporation Of America Program execution device
US9524404B2 (en) 2003-08-26 2016-12-20 Panasonic Intellectual Property Corporation Of America Program execution device
JP4691337B2 (ja) * 2003-08-26 2011-06-01 パナソニック株式会社 プログラム実行装置、認証局装置
JP2005100378A (ja) * 2003-08-26 2005-04-14 Matsushita Electric Ind Co Ltd プログラム実行装置、認証局装置
US9218485B2 (en) 2003-08-26 2015-12-22 Panasonic Intellectual Property Corporation Of America Program execution device
US8874938B2 (en) 2003-08-26 2014-10-28 Panasonic Intellectual Property Corporation Of America Program execution device
US8181040B2 (en) 2003-08-26 2012-05-15 Panasonic Corporation Program execution device
US9672384B2 (en) 2004-06-30 2017-06-06 Socionext Inc. Secure processor and a program for a secure processor
US7865733B2 (en) 2004-06-30 2011-01-04 Fujitsu Semiconductor Limited Secure processor and a program for a secure processor
US11550962B2 (en) 2004-06-30 2023-01-10 Socionext Inc. Secure processor and a program for a secure processor
US10685145B2 (en) 2004-06-30 2020-06-16 Socionext Inc. Secure processor and a program for a secure processor
US8886959B2 (en) 2004-06-30 2014-11-11 Fujitsu Semiconductor Limited Secure processor and a program for a secure processor
US9141829B2 (en) 2004-06-30 2015-09-22 Socionext Inc. Secure processor and a program for a secure processor
US10303901B2 (en) 2004-06-30 2019-05-28 Socionext Inc. Secure processor and a program for a secure processor
US10095890B2 (en) 2004-06-30 2018-10-09 Socionext Inc. Secure processor and a program for a secure processor
US9536110B2 (en) 2004-06-30 2017-01-03 Socionext Inc. Secure processor and a program for a secure processor
US9652635B2 (en) 2004-06-30 2017-05-16 Socionext Inc. Secure processor and a program for a secure processor
JP4750719B2 (ja) * 2004-11-26 2011-08-17 パナソニック株式会社 プロセッサ、セキュア処理システム
US7793083B2 (en) 2004-11-26 2010-09-07 Panasonic Corporation Processor and system for selectively disabling secure data on a switch
JP2008532419A (ja) * 2005-02-28 2008-08-14 マクロビジョン・コーポレーション 安全なソフトウェア通信方法及びシステム
US7874009B2 (en) 2005-05-26 2011-01-18 Panasonic Corporation Data processing device
JP4886682B2 (ja) * 2005-05-26 2012-02-29 パナソニック株式会社 データ処理装置
WO2006126686A1 (ja) * 2005-05-26 2006-11-30 Matsushita Electric Industrial Co., Ltd. データ処理装置
JP2007013678A (ja) * 2005-06-30 2007-01-18 Fujitsu Ltd Icチップ、ボード、情報処理装置及びコンピュータプログラム
JP2009278491A (ja) * 2008-05-16 2009-11-26 Casio Comput Co Ltd マイクロプロセッサ及びマイクロプロセッサ応用装置
JP4631974B2 (ja) * 2009-01-08 2011-02-16 ソニー株式会社 情報処理装置、情報処理方法、プログラム、および情報処理システム
JP2010161660A (ja) * 2009-01-08 2010-07-22 Sony Corp 情報処理装置、情報処理方法、プログラム、および情報処理システム
JP2013228789A (ja) * 2012-04-24 2013-11-07 Nidec Sankyo Corp 履歴情報管理装置及び履歴情報の管理方法
JP2014049131A (ja) * 2012-08-29 2014-03-17 Freescale Semiconductor Inc ウォッチポイントを取り扱うためのデータ・プロセッサ・デバイスおよびその方法

Also Published As

Publication number Publication date
EP1220079A3 (en) 2004-05-12
JP4074057B2 (ja) 2008-04-09
EP1220079A2 (en) 2002-07-03
US20080046763A1 (en) 2008-02-21
US20030126458A1 (en) 2003-07-03
US7657760B2 (en) 2010-02-02

Similar Documents

Publication Publication Date Title
JP4074057B2 (ja) 耐タンパプロセッサにおける暗号化データ領域のプロセス間共有方法
JP4226760B2 (ja) マイクロプロセッサ、これを用いたマルチタスク実行方法、およびマルチレッド実行方法
KR100375158B1 (ko) 변조방지 마이크로프로세서
US7721114B2 (en) Method for using shared library in tamper resistant microprocessor
JP4689945B2 (ja) リソースアクセス方法
KR101457355B1 (ko) 보안 애플리케이션 실행을 제공하는 방법 및 장치
JP3866597B2 (ja) 内部メモリ型耐タンパプロセッサおよび秘密保護方法
JP4498735B2 (ja) オペレーティングシステムおよびカスタマイズされた制御プログラムとインタフェースする安全なマシンプラットフォーム
US7805375B2 (en) Digital license migration from first platform to second platform
JP4689946B2 (ja) 安全なデータを使用して情報処理を実行するシステム
JP5636371B2 (ja) 汎用コンピューティングデバイスにおけるコード実行制御および再帰的セキュリティプロトコルでのコード実行制御のための方法およびシステム
JP3801833B2 (ja) マイクロプロセッサ
JP2015511050A (ja) プロセス作業セット隔離のための方法およびシステム
WO2004006075A1 (ja) 開放型汎用耐攻撃cpu及びその応用システム
JP4551231B2 (ja) プログラム実行保護システム、プログラム実行保護方法
US7603566B2 (en) Authenticated process switching on a microprocessor
JP2004272816A (ja) マルチタスク実行システム及びマルチタスク実行方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050307

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: 20080115

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080124

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

Free format text: PAYMENT UNTIL: 20110201

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120201

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120201

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130201

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20140201

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees