JP4073913B2 - 開放型汎用耐攻撃cpu及びその応用システム - Google Patents
開放型汎用耐攻撃cpu及びその応用システム Download PDFInfo
- Publication number
- JP4073913B2 JP4073913B2 JP2004519192A JP2004519192A JP4073913B2 JP 4073913 B2 JP4073913 B2 JP 4073913B2 JP 2004519192 A JP2004519192 A JP 2004519192A JP 2004519192 A JP2004519192 A JP 2004519192A JP 4073913 B2 JP4073913 B2 JP 4073913B2
- Authority
- JP
- Japan
- Prior art keywords
- code
- central processing
- processing unit
- program
- key
- 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
Links
- 238000000034 method Methods 0.000 claims description 276
- 230000008569 process Effects 0.000 claims description 196
- 238000012545 processing Methods 0.000 claims description 191
- 230000006870 function Effects 0.000 claims description 64
- 241000700605 Viruses Species 0.000 claims description 18
- 238000012546 transfer Methods 0.000 claims description 18
- 238000012790 confirmation Methods 0.000 claims description 15
- 238000003860 storage Methods 0.000 claims description 14
- 238000007789 sealing Methods 0.000 claims description 11
- 239000003795 chemical substances by application Substances 0.000 claims description 8
- 238000007781 pre-processing Methods 0.000 claims description 4
- 238000013519 translation Methods 0.000 claims description 3
- 238000007726 management method Methods 0.000 description 37
- 238000004364 calculation method Methods 0.000 description 16
- 238000009826 distribution Methods 0.000 description 13
- 230000018109 developmental process Effects 0.000 description 7
- 230000000694 effects Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 238000010276 construction Methods 0.000 description 5
- 238000012217 deletion Methods 0.000 description 5
- 230000037430 deletion Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 239000000284 extract Substances 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 238000007796 conventional method Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000002265 prevention Effects 0.000 description 4
- 238000013475 authorization Methods 0.000 description 3
- 230000006378 damage Effects 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 208000027418 Wounds and injury Diseases 0.000 description 2
- 230000004913 activation Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 239000013078 crystal Substances 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 208000014674 injury Diseases 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 102000036364 Cullin Ring E3 Ligases Human genes 0.000 description 1
- 108091007045 Cullin Ring E3 Ligases Proteins 0.000 description 1
- 241001465754 Metazoa Species 0.000 description 1
- 101000896740 Solanum tuberosum Cysteine protease inhibitor 9 Proteins 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000011248 coating agent Substances 0.000 description 1
- 238000000576 coating method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000009792 diffusion process Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000035515 penetration Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000001681 protective effect Effects 0.000 description 1
- 230000008929 regeneration Effects 0.000 description 1
- 238000011069 regeneration method Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Storage Device Security (AREA)
Description
1. ハードウェアTRMの問題
・コンシューマ向け用途ではコストを重視する関係上DRMを半導体パッケージ化する必要があるが、一つのチップに盛り込むことができるリソースには限りがあるため、多様な機能を提供することはできない。ライセンスキーやCRL(Certificate Revocation List)を記録する領域の大きさを拡張したい場合や、コンテンツ利用条件をXrML(eXtensible rights Markup Language)で表現したい場合などには、ハードウェアTRMでは対応できない。
・おおもとの秘密鍵は暗号化することができず、どのように分散などして保管してもソフトウェア解析だけで容易に秘密鍵を見つけ出すことができる。
前記外部出力禁止情報及び前記キャッシュロック情報に基づいて、第1のプログラム及び他のプログラムとの間における前記第1のライセンスの移動は管理されることとしてもよい。これにより、前記中央演算装置に、複製不能プライベートロッカーを実現させる事が可能となる。従って、例えば、複数のプログラム間においてライセンスを移動可能とする場合であっても、再送攻撃によるライセンスの不正コピーを防止することが可能となる。
例えば、ブロックは、ブロックのハッシュ値の確認が必要であるか否かを示すハッシュ確認要否情報を含み、前記ハッシュ確認要否情報に基づいて、前記ブロックのハッシュ値を算出し、前記ブロックに付加するハッシュ手段と、前記ハッシュ確認要否情報に基づいて、前記ブロックの前記ハッシュ値を確認するハッシュ確認手段と、を更に備えることとしてもよい。
例えば、第1のプログラムの実行ファイルのヘッダは、前記第1のプログラムを構成するブロックの構成を示す暗号化ブロックビットマップを含み、保護ブロック選択手段は、前記暗号化ブロックビットマップに基づいて、前記ブロックを前記暗号手段に出力するか、そのままキャッシュ又はメモリ領域に出力するか判定する。
プロセッサコアこのコードを実行することにより、前記ブロックを前記暗号手段に出力するか、そのままキャッシュ又はメモリ領域に出力するか判定する。
本発明は、CPUに汎用TRM機能を実装する事により、CPUを、汎用性を有する攻撃対抗容器とする。以下の説明において、本発明に係わる汎用TRM機能を実装するCPUを「Generic TRM」といい、GTと略称する。
<構成>
GTの構成について説明する前に、GTと、そのGTによって実行されるソフトウェアの利用関係について説明する。図1に、GTを実現するCPUパッケージとそのCPUパッケージによって実行されるGT基本パッケージソフトウェアの利用関係モデルを示す。
PKIライブラリ:
・標準のPKIX (Public Key Infrastructure (X.509))ライブラリ
メディアDRM (Virtual Media DRM, Trusted Server DRMを含む):
・ライセンス生成・管理・削除・移動・複製の制御
・保護コンテンツ管理
・UDAC-MB/LB/PI認証・ライセンス管理機能
・ライセンス変換機能:MB(Media Base)、PI(Protocol Independent)、GT間での変換など
デコーダDRM:
・メディアDRMからのライセンス取得
・許諾ライセンス復号とコンテンツ復号鍵の維持
・コンテンツの復号、汎用利用制御とアプリケーションへの安全な転送
・利用制御機能拡張機能
図1に示すように、各DRM30及び40は、ソフトウェアとして実現され、ハードウェアとして実現されるのではない。また、GT10はCPUとして実現される。GT10(CPU)は、DRM30及び40、PKIライブラリ20及び保護アプリケーション50を実行する。
図2に示すように、OSには、上述のPKIライブラリ20、デコーダDRM30及びメディアDRM40に加えて、OSカーネル60及びデバイスドライバ70を備える。デバイスドライバ70は、周辺ハードウェア60を動作させるために必要なソフトウェアである。
図3に、平文又は暗文のみからなるコードブロック或いはデータブロックを想定した場合の(ebim=0, 1のみをサポートする場合)、GT内部の回路ブロックの構成と回路ブロック間のデータ交換モデルを示す。
TRBは、プログラムコード(インストラクションの連結)を復号するための鍵Kc及びデータを暗号化/復号化する鍵Kd等を保持する。なお、Kd及びKcを合わせてソフトウェア暗号鍵という事もある。TRBは、カーネルモードであってもユーザが内部を参照・改ざんすることができない構造、すなわち耐攻撃構造をもつ。TRB内でKcやKdを保持する位置の識別はKey IDによって行われ、TLB内にもリンクした鍵の位置を識別するKey IDを持つ。このKey IDを用いて、TRBとTLBをリンクさせる。
外部出力禁止フラグuoは、その行の内容を暗号化キーテーブルに出力しても良いか否かを示すフラグであり、オン(1)である場合、暗号化キーテーブルに出力されない。但し、この場合でも、管理情報として必要なp、uo、cl及びkidは、出力可能としてもよい。外部出力禁止フラグuoのデフォルト値は、オフ(0)であり、その場合はその行の内容は暗号化キーテーブルに出力される。この場合、TRB内の内容と暗号化キーテーブル内の内容とを同期させる必要がある。なお、暗号化キーテーブルは、GT10内のTRBの内容を格納する格納手段である。暗号化キーテーブルについて詳しくは後述する。
(b)外部(三次)キャッシュまで保護データを平文で記録するモード
(a)は保護データを記録する領域を少なくし、暗号・復号処理をしないことで処理性能を上げる必要がある場合にも利用することができる。(b)は処理性能向上を期待できるが、保護強度のレベルは落ちることとなる。
暗号鍵keyは、そのラインにリンクするページに書き込まれたコード又はデータを暗号化・復号するための暗号・復号鍵の値である。暗号鍵は、例えば、対称鍵(共通鍵)暗号法の鍵である。このフィールドにKcやKdが記録される。
例外処理アドレス(eadr)は、ACgt.eadr(ACgt内のeadrフィールドの値)が含まれないAUTHORIZE命令によりTRB内に行が設定された時点では、デフォルト値として全ビットに'0'が設定される。保護プロセスへの復帰時等に、「耐攻撃コード復帰例外アドレス不正例外」が発生した際には、そのプロセスの実行を停止し、当該TRBの有効性フラグ(p)をoffにしなければならない。なお、将来、データページごとにアクセス例外を設ける必要がある場合には、TRB.eadr(TRB内のeadrフィールドの値)は、TRB.ackey(TRB内のackeyフィールドの値)で暗号化されたコードの実行時に実行する例外処理コードのアドレスとして定義することもできる。
領域識別子idは、TLB内の当該行が示すページ領域の識別子である。
物理ページ番号ppnは、物理ページ番号を示す。仮想ページ番号vpnは、仮想ページ番号を示す。
権限レベルplはページにアクセス可能な権限のレベルを示し、アクセス権arは、ページへのアクセス権の種類を示す。権限レベルpl及びアクセス権arは、図6及び図7に示すようにしてTLBの各フィールドの値に基づいて決定され、TLBに設定される。なお、図6は、FRアーキテクチャの場合を示し、図7は、インテルアーキテクチャの場合を示す。
(b)Xの場合、全プロセスからの読み出しと実行が可能:RX
(c)PRWの場合、全プロセスからの読み出しと書き込みが可能:RW
(d)PWXの場合、全プロセスからの読み書きと実行が可能:RWX
鍵識別情報kidは、TRB内の鍵情報にリンクするためにTRB内の行(insertion)を識別する情報である。
a)ebim=0の場合、ブロックは平文である。
デジタル署名signは、上述のvpnからebimまでのフィールドを連結したフィールド連結データのデジタル署名であり、GT10が生成する。
TRBは、GT10内に格納されるが、GT10に備えられた記憶容量が一杯になる場合が想定される。この場合、GT10内のTRBの内容の少なくとも一部を暗号化し、暗号化された内容をRAM17やハードディスク等の外部記憶装置に記録する。この外部に記録されたTRB内の行のリストを暗号化キーテーブルという。そして、GT10は、TRBの内容を暗号化した状態で外部記憶装置内の暗号化キーテーブルに記録しながら管理し、必要な情報を暗号化キーテーブルから取り出してGT10内で復号して利用する。TRBの内容を暗号化したり復号したりする際に用いられる鍵Ktrbは、例えば、対称鍵暗号法の秘密鍵である。この暗号鍵Ktrbは、GT10の入力電源が落ちたり、GT10がリセットされたりした場合であっても、継続して維持されることが望ましい場合がある。
(a)暗号化キーテーブルへのTRBの内容の書き出しと暗号化キーテーブルからTRBへの再取り込みは特定のレジスタへのRW命令などを介して行う。
図10に示すように、TRB及びTLBは、GT10内に保持される。TRBには、鍵識別情報kid、コードブロックを復号する際に用いられるKc及びデータブロックを暗号化・復号する際に用いられるKd等が記録される。TLBには、領域識別子id、鍵識別情報kid、仮想ページ番号vpn、物理ページ番号ppn、アクセス権限rights等が格納される。領域識別子idは、コードブロックやデータブロックが格納されているRAM17内のページに対応する。また、TRBとTLBの内容は、鍵識別情報kidによって対応付けられている。
(b)ひとつ手前で実行された命令がCALLやJUMPなどの分岐命令である場合。
特に前の命令と次の命令の仮想ページが異なる場合、GT10は、あらためて次に実行することを指定された命令コードが実行を許諾されているかどうかを確認しなければならない。この確認については後述する。
<インストラクションセット>
次に、GT10に与えられるインストラクションセットについて説明する。
命令形式:STR_GT_CERT (certNum, certAdr)
入力レジスタ:
certNum:GT10内でローカルに割り当てられた証明書番号。N枚の証明書があれば、0からN-1までの値が有効となる。
出力(例外処理):
errorCode:指定した番号の証明書がない場合などに設定される。
動作可能権限:全レベル
(2)アクセス許諾命令:Access authorization command
命令形式:AUTHORIZE (licenseAdr, resultAdr, startVPN, numOfVP, kid)
入力レジスタ:
licenseAdr:GTライセンス(後述)を格納したアドレス
resultAdr:結果を格納するアドレス
startVPN:耐攻撃領域の先頭仮想ページ番号
numOfVP:連続する耐攻撃領域のページ数
kid:OSがTLBとTRBの関係を管理するために割り当てる識別子
出力:
result:[GTライセンス || startVPN || numOfVP]|| 以上の署名]がresultAdrに記録される。
動作:指定レジスタのメモリ上にあるGTライセンスを認証し、GTライセンスから取り出した耐攻撃領域のコード又はデータ復号鍵key (Kc又はKd)、kid、ackeyを耐攻撃領域内のTLBにリンクするTRBに設定する。さらに、TLBに「耐攻撃フラグ」(tr)とアクセス権(PR, X, PRW, PWX)、ebim、kid及びsignを設定する。正しく設定が完了すれば、入力データを連結してそのデジタル署名を付加し、resultAdrで指定されたアドレスに記録する。このとき、入力データの連結をハッシュし、結果をKgtを用いて暗号化し、その結果をデジタル署名として採用する。認証が失敗した場合やTLBが存在しない場合など、設定が失敗した場合には例外を発生させる。
(3)耐攻撃権限設定命令: Set Tamper Resistant Rights command
命令形式:SET_TR_RIGHTS (rights, startVPN, numOfVP)
入力レジスタ:
rights:アクセス権(ACgt.ar(後述)を指定)
startVPN:耐攻撃領域の先頭仮想ページ番号
numOfVP:耐攻撃領域のページ数
出力(例外処理):
errorCode:入力に対応する行がTLB又はTRBにない場合、又はすでに設定されているアクセス権よりも指定されたアクセス権の範囲が広い場合などに発生。
(4)耐攻撃例外アドレス設定命令:Set Tamper Resistant Exception command
命令形式:SET_TR_EXCEPTION (startAdr)
入力(イミーディエイトまたは直接アドレッシングのみ):
startAdr:TRBに設定する耐攻撃空間内の仮想アドレス。レジスタ解除・復帰例外などのジャンプ先として指定する。なお、封印したいレジスタの使用前にstartAdrを秘匿して実行する必要があることから、レジスタは入力パラメタとして利用できない。
errorCode:staetAdrで指定されたアドレスに対応する行がTRB内に存在しない(耐攻撃モードではない)。又はそのアドレスへのアクセス権がない。
動作可能権限:全レベル
(5)レジスタ封印命令:Seal Register command
命令形式:SEAL_REG (registerList)
入力レジスタ: registerList:封印するレジスタ一覧(フラグリスト)。各レジスタに対応したフラグについて、オン(1)でレジスタを封印することを示し、オフ(0)で封印しないことを示す。
errorCode:指定したレジスタが存在しない。または、そのレジスタはすでに封印済である。
(6)レジスタ解放命令:Release Register command
命令形式:RELEASE_REG (registerList)
入力レジスタ:
registerList:封印を解放するレジスタ一覧
出力(例外処理):
errorCode:指定したレジスタが存在しない。または、そのレジスタは解放済である。
動作可能権限:全レベル
(7)非許諾領域スタックストア命令:Store Stack to Unauthorized Area command
命令形式:STMEA_TO_UA (registerList)
入力:
registerList:スタックに記録されるレジスタの一覧。フラグのリスト。各レジスタに対応したフラグがオン(1)の場合、そのレジスタをスタックに記録することを示し、オフ(0)で記録しないことを示す。
errorCode:registerListで指定されたレジスタが封印されていない。
動作:スタックポインタが、許諾されていない耐攻撃領域を示す場合でも、指定されたレジスタのRACT.ackey(RACT内のackeyフィールド)の値がその領域に対応するTRB.ackey(TRB内のackeyフィールド)に一致すれば、指定されたレジスタがスタックポインタの位置に記録される。
(8)非許諾領域スタックロード命令:Load Stack from Unauthorized Area command
命令形式:LDMEA_FROM_UA (registerList)
入力:
registerList:スタックから読み出すレジスタ一覧
出力(例外処理):
errorCode:指定レジスタが封印されている。
(9)ライセンス削除命令:Delete License commnad
命令形式:DELETE_LICENSE(kid)
入力:
kid:OSがTLBとTRBの関係を管理するために割り当てた識別子で、AUTHORIZE命令のパラメタとして用いた値。
errorCode:kidが誤っている場合、又は削除に失敗した場合等に設定される。
動作:指定されたkidのTRB及びそれにリンクするすべてのTLBが削除され、対応するページテーブルと暗号化キーテーブルの有効性フラグもオフに設定される。また、それらのTLBが示していた仮想領域のキャッシュロックも解除される。
上述の(1)から(9)までの基本命令に加えて、性能や機能の向上のための拡張命令として、(10)から(15)までの命令等が考えられる。以下、順に拡張命令について説明する。
命令形式:PRT_BLOCK_START (encryption_flag)
入力(直接パラメタ):
encryption_flag:オン(1)ならブロックが暗号化されていることを示す。
命令データの特定のビット位置が特定パターンにセットされていれば暗号化ブロック開始命令とする。本命令内の特定ビット列(7ビット程度)は暗号化ブロックの長さを指定するために用いられ、値を指定する単位は、キャッシュ可能なインストラクション長の最小値と同じとする。また指定可能な最大値はキャッシュ可能な長さの最大値と同じとする。本命令のその他のバイトには乱数を入れなければならない。本命令データの先頭の境界は命令キャッシュ単位の境界に一致しなければならない。
保護コードブロック開始命令は、GT10内で復号された後、同じ長さのNop命令となる。
(11)TRB暗号鍵リフレッシュ命令:Refresh TRB Key command
命令形式:REFRESH_TRB_KEY
入出力レジスタ:なし
動作:TRBを外部に記録する際にはかならず用いる対称暗号法の暗号鍵Ktrbとページテーブルの署名確認に用いる暗号鍵Ktlbを新たな乱数値に置き換える。
保護データの暗号・復号速度を重視する場合に利用する。
(13)プロセス間で漏洩しない熱乱数生成命令:
(14)内蔵暗号・復号コマンド
GT10を実現のためにCPU内部に実装した対称鍵暗号法や公開鍵暗号法の暗号化・復号命令をインストラクションセットとしてソフトウェア開発者に見せることにより、ハードウェアリソース利用効率が高まる。
GT内蔵水晶発信機が発生する内部割込みの間隔を設定する。外部の信頼できる時計と安全に同期するセキュアクロックを耐攻撃プロセスとして実現する場合に用いることができる。
<例外処理>
GT10を実現するCPUは、従来の例外処理に加え、次のような例外処理を実装する。例外処理には、大きく分けて、耐攻撃ページアクセス権関連例外と、耐攻撃領域復帰関連例外と、レジスタ封印関連例外と、ハッシュ関連例外等とがある。以下、順に各例外処理について説明する。
・耐攻撃耐攻撃ページアクセス権関連例外
(1)証明書指定誤り
この例外処理は指定した番号あるいは識別情報のGT証明書(Cgt)がない場合に発生する。
この例外処理はGTライセンスの認証に失敗した場合に発生する。
(3)耐攻撃空間ページフォールト
TLB内の耐攻撃性フラグtrがオフ(耐攻撃モードではない)または、そのページに対応する行がTRB内に無いのに耐攻撃領域へのアクセス命令を実行しようとした。
TLB.sign(TLB内のsignフィールド)の値が、ブロックに含まれる署名と一致しない。本例外が発生した場合、GT10は自動的に当該TLBのページテーブルからのロードを停止する。さらに、TLB内の対応する行の有効性フラグ(TLB.p)及び耐攻撃性フラグ(TLB.tr)をオフにする。
AUTHORIZE命令で許可されたアクセス権よりも指定されたアクセス権の範囲が広い。本例外が発生した場合、GT10は自動的にアクセス権設定命令を拒否する。
この例外は、TRB中に存在しないkidその他の検索キーを指定した場合、又はTRBのページアウトに失敗した場合に発生する。
この例外は、ライセンスの削除に失敗した場合に発生する。
・耐攻撃領域復帰関連例外
(8)耐攻撃コード復帰例外
:RETURN_TO_TAMPER_RESISTANT_CODE_EXCEPTION
call、jump又はreturnによって、一般の仮想領域又は耐攻撃領域からコード復号鍵Kcが異なる耐攻撃領域に実行中アドレスが移動した際には、必ず耐攻撃コード復帰例外が発生する。この例外の処理において、移動先耐攻撃領域の例外アドレスであるTRB.eadr(TRB内のeadrフィールド)の内容が確認され、そのフィールドに例外アドレスが存在する場合、プロセッサコアは、その例外アドレスにアクセスする。例外アドレスが存在しない場合には、当該TRB行が削除され、耐攻撃コード復帰例外アドレス不正例外が発生する。
この例外は、耐攻撃コード復帰例外アドレスで指定された空間が、耐攻撃空間に存在しない場合に発生する。保護プロセスへの復帰時等に本例外が発生した際には、そのアドレスに対応するTRB内の行の有効性フラグ(p)をオフにし、OSなどによって指定されたアドレスへ強制的にジャンプする。
・レジスタ封印関連例外
(10)レジスタ封印済例外
この例外は、指定されたレジスタが既に同じKcを持つコードにより封印済みである場合に発生する。
この例外は、指定レジスタが封印されていない場合に発生する。
(12)封印レジスタアクセスフォールト
:SEALED_REGISTER_ACCESS_FAULT_EXCEPTION
この例外は、指定されたレジスタが既にKcが異なる他のコードによって封印済みである場合に発生する。
・ハッシュ関連例外
(13)ハッシュ非実装例外
この例外は、GT10がハッシュ生成機能やチェック機能を実装していない場合に発生する。
この例外は、GT10が、保護コード又は保護データをキャッシュする際にハッシュ値の不一致が生じた場合に発生する。
<動作>
以下、GT10によって行われる処理について説明する。
<GTの認証>
まず、GT10の認証手順について説明する。なお、以下の説明において、PKIの内容の理解を前提としている。
(1)GTメーカーは製品化するGT10の個別公開鍵KPgtをGT専用の認証局CAgtに渡す。さらに、GTメーカーは、GT10内部には秘密鍵Kgtを埋め込む。
(4)各TRMソフトウェアの開発メーカーは、開発したソフトウェア実行コードを鍵Kcを用いて暗号化することにより、保護コードファイルを作成する。
ライセンス生成側はライセンス許諾先GT(耐攻撃容器)の個別公開鍵KPgtの証明書Cgtを取得し、これを用いてGTライセンスを生成する。証明書CgtはX.509準拠の形式としてもよい。個別公開鍵KPgtの証明書Cgtはクラス鍵KPcgtで、また、クラス鍵KPcgtの証明書Ccgtは認証局CAgtのルート公開鍵KPagtで署名チェックした後、利用される。ライセンス生成側が生成するGTライセンスの形式は以下のとおりである。
LicenseID || ACgt.ar ||
E (KPgt, Ks ) || E ( Ks, Key || LicenseID || ACgt || Is ) ||
CgtID || CgtIDackey || else
ここで、各フィールドの意味は次のとおりである。
E (K, D):データDを鍵Kで暗号化した結果
A || B:データ連結。データAとデータBが連結していることを示す。
Ks:セッション鍵(乱数)。対称鍵(共通鍵)暗号法の鍵。
Key:コード復号鍵/データ暗号化・復号鍵。Kc/Kd。
LicenseID:ライセンスシリアル番号。ライセンス生成側がライセンスごとにユニークな番号を生成する。上位にライセンス生成者のIDを入れ、中位にコンテンツのIDを入れることとしてもよい。
ACgt:GTアクセス条件。GT内で強制可能なコード/データの利用条件を示し、次のフィールドを持つ。
aef:被許諾コード鍵暗号化フラグ(ackey encryption flag)。on(1)なら被許諾コード鍵ackeyが個別公開鍵KPgtを用いて暗号化されていることを示し、off(0)ならackeyの値がそのままACgt.ackey(ACgtのackeyフィールド)に入っていることを示す。
(a) PR:ackeyで指定されたプロセスからの読み出しのみ可能
(b) X:ackeyで指定されたプロセスからの読み出しと実行が可能
(c) PRW:ackeyで指定されたプロセスからの読み出しと書き込みが可能
(d) PWX:ackeyで指定されたプロセスからの読み書きと実行が可能
uo:外部出力禁止フラグ。on(1)ならこのライセンスのキー情報を格納したTRB行は暗号化キーテーブルに出力(ページアウト)されない。このフラグのデフォルトはオフ(0)であり、外部に出力可能であることを示す。
CgtID:KPgtのX.509証明書の識別子値。issuerとserialNumberを連結した値。
CgtIDackey:オプション。ackeyを暗号化したKPgtのX.509証明書の識別子値。issuerとserialNumberを連結した値。ACgt.aefがoffの場合には省略。また、CgtIDと同値の場合にも省略可能。
Is:その他の情報
図17に、GTライセンスに設定可能なアクセス権と被許諾権限の表を示す。耐攻撃性フラグ耐攻撃モードの際、プロセス(コード実行状態)からみた保護データ又は保護コード領域のアクセス権は、図17の中から選択され、TLBに設定される。なお、図17における「指定コード」とは、当該TRB行内のKeyフィールド又はAckeyフィールドで指定された鍵で復号可能なコードをいう。
<保護コードファイルの構造>
以下、保護コードファイルの構造について説明する。暗号化がほどこされた保護コードファイル(実行形式)は、保護コードブロックおよび平文コードブロックの繰り返し構造の先頭にヘッダを付加した構造を持つ。また、保護コードファイルを超流通に利用可能なファイルとする場合、そのファイルのヘッダには、さらに次のような情報が入る必要がある。
・コンテンツ暗号方式:保護コードの暗号化方式を特定する値として必要である。この値は復号鍵の長さを含むこととしてもよい。
<保護コードのロード及び実行並びに保護データの退避と維持>
以下、図20を用いて、保護コードのロードと実行手順、及び保護データの退避と維持について説明する。
<ページアクセス制御>
以上のようにして、GT10は、TRMプログラムコードを実行する許諾を得て、その保護コードファイルを構成するコードブロックをRAM17にロードすると、保護コードブロックを復号して実行する。以下、保護コードを実行する際の保護コードを記録するページ(命令ページ又はコードページ)へのアクセス制御について図21を用いて説明する。図21において、矢印は、データの流れを示し、括弧内の数字は、処理の順番を示し、以下の説明における手順の番号に対応する。
(1)命令MMU14が、予測命令ポインタ(ip: instruction pointer)に記憶されている仮想アドレスを読み出す。
(3)耐攻撃フラグがonの場合、命令MMU14は、TRBからコード復号鍵(Kc)を取り出す。
(5)命令MMU14は、キャッシュすべき保護コードブロックのアドレスを命令キャッシュ12とRAM17に指定する。
(7)暗号エンジン16で復号された保護コードブロックは、命令キャッシュ12に記録される。
(10)プロセッサコア11は、命令MMU14からアクセス権arを取り出し、アクセス権を確認する。
なお、手順(10)において、実行する命令を記録する命令ページが切り替わった時には、プロセッサコア11は、手順(11)で保護コードブロックの読み出しを行う前に、以下を確認する。
(b)次に実行する保護コードブロックについてのTLB.arに記録されたアクセス条件と、次に実行するアクセスとが合致すること
(a)及び(b)の少なくともいずれかが不一致の場合には、プロセッサコア11は命令の実行を停止し、アクセス権例外を発生させる。
(b)アクセスされる保護データを記録するページのアクセス権(TLB.ar)と、次に実行するアクセスとが合致すること
(a)及び(b)の少なくともいずれかが不一致の場合には、プロセッサコア11は、保護データへのアクセスを中止し、アクセス権例外を発生させる。
まず、プロセッサコア11は、例外/割り込みイベントの発生を待つ(S21)。例外/割り込みイベントが発生すると、プロセッサコア11は、例外・割り込み処理を行い(S35)、S21に戻る。なお、例外・割り込み処理について詳しくは図23に示す。図23に示される各種例外処理については、上記<例外処理>において詳しく説明したため、説明を省略する。
命令ページ切り替えが発生した場合(S22:あり)、プロセッサコア11は、命令ページへのアクセス権の有無を判断する処理を行う(S23)。命令ページ切り替えが発生していない場合(S22:なし)、S28に進む。
<保護ソフトウェアの起動>
次に、図25を用いて、GT10上で保護されるソフトウェア、つまり保護コードファイルを起動する際における、OSカーネル60及びGT10の動作について説明する。図25において、細い矢印がデータのリンクを示し、太い矢印がデータの流れを示す。また、括弧内の数字は、処理の順番を示し、以下の説明における手順の番号に対応する。
(1)OSカーネル60は、TLBを設定することにより、保護コード及び保護データをロードする領域となる仮想メモリ領域及び物理メモリ領域を確保し、仮想メモリと物理メモリ領域とをリンクさせる。
(3)OSカーネル60からのCALLなどのコードモジュール呼び出し命令に基づいて、GT10は、ipレジスタを設定する(呼び出し先インストラクションにヒットしない場合、GT10は該当するコードブロックを復号し、復号されたコードをキャッシュにコピーする)。
(5)命令を実行する権利を確認できた場合、GT10は、ipで指定されたアドレスの命令(図ではSTR命令)を読み出し、デコードし、実行する。
<保護データへのアクセス>
次に、図26を用いて、GT保護コードを実行するプロセスから保護データにアクセスするメカニズムについて説明する。この例では、保護データ領域は保護コード実行前に確保され、保護コードファイルから初期値もロードされていることを前提としている。また、OS60からのAUTHORIZE命令をGT10が実行する事により、保護データ領域へのアクセス許諾とアクセス権設定は、既に行われているものとする。
(2)GT10は、アクセスするアドレスに対応するTLB内の行中のアクセス権情報TLB.ar(TLB内のarフィールド)を確認する。
<保護プロセスからの保護モジュールの呼び出し>
次に、保護プロセスから保護モジュールを呼び出す手順について説明する。保護プロセスから他の保護コードモジュール(DLL(Dynamic Link Library)など)を起動する場合には、次の2ケースがある。
(b)呼び出される保護コードモジュールのコード復号鍵Kcが親プロセスのコード復号鍵と異なるケース
(b)の場合に、保護親プロセスから他の保護コードモジュールを呼び出す際に行う手順は図27に示すようになる。図27においても、矢印や括弧内の数字の内容は、図25と同様である。なお、図27において、保護コードモジュールはDLLとなっているが、これは一例に過ぎない。
(2)親プロセスは、アクセス許諾(AUTHORIZE)命令によりTLBにリンクするTRBを生成してコード復号鍵Kcを設定し、TLBにアクセス条件を設定する。
(4)親プロセスは、レジスタ解放(RELEASE_REG)命令を実行する。
(6)親プロセスは、レジスタ封印(SEAL_REG)命令を実行する。
(7)呼び出しが返った場合、親プロセスは、退避したスタックをもとのレジスタに復帰させる。
図27の手順の(1)において親プロセスが、保護コードモジュールをロードするための仮想領域と、その仮想領域に対応する物理領域を確保することを要求すると、耐攻撃領域取得システムコールが呼び出される。この要求の際、親プロセスは、必要となる領域のサイズと、GTライセンスをOSカーネル60に通知する。このシステムコールにおいて、まず、OSカーネル60は、アプリケーションが利用しているレジスタの一覧を入力パラメタとする非許諾領域スタックストア(STMEA_TO_UA)命令をプロセッサコア11に出力する(S91)。このS91は、図27の手順(3)に対応する。
<耐攻撃コードの復帰時の例外処理>
call、jump又はreturn等の命令によって、一般の仮想領域又は耐攻撃領域からコード復号鍵Kcが異なる耐攻撃領域に実行中アドレスが移動した際には、耐攻撃コード復帰例外が発生する。この例外処理の中で、次の2つの処理を実施する必要がある。
(b)耐攻撃セグメントセレクタの値の確認と、必要に応じた再設定。
GT10は、保護コードのレジスタ封印の前に、解除・復帰例外の先頭アドレスをTRBに設定する。また、外部からの割り込みによってレジスタが解放されたまま実行を継続することによって、レジスタに記録した秘密情報が漏洩することがないよう、保護コードは解除・復帰例外処理を含む必要がある。この解除・復帰例外処理において、GT10は、封印したはずのレジスタが封印されているかを再度確認し、レジスタが封印されていなければ、封印しなおすか、保護コードの実行を中止するかしなければならない。
TST RSSL.r1ss, r1ssBit
BNE chk_seg
SEAL_REG r1
この3行は、保護コードが利用するレジスタr1の封印状態をRSSLレジスタ内のレジスタr1に対応するビットr1ssの値を調べる事により確認し、r1が封印されていない場合、r1を封印しなおす処理を示す。
BMI ret
ORR trdss, trdss, trBit
この3行が、ipが示す仮想アドレスごとの耐攻撃データ/スタックセグメントセレクタの再設定を行う処理を示す。耐攻撃コード復帰例外処理が終了すると、プロセスは保護コードに復帰する。なお、図29のシーケンスの最後において、不正なコードによって再度プロセスが中断され、不正なコードが保護コードが利用するレジスタr1の内容を一般仮想領域に書き込もうとしている(MOV r1, [unprotectedArea])。しかし、耐攻撃コード復帰例外処理において、レジスタr1は封印しなおされているため、封印レジスタアクセスフォールト(SEALED_REGISTER_ACCESS_FAULT_EXCEPTION)が発生している。
<保護コンテキストの切り替えの管理>
以下、耐攻撃ユーザプロセスからOSカーネルプロセスへのコンテキスト切り替えがおこり、全レジスタがスタックに退避されるケースを想定する。図30に、OSカーネルによる保護コンテキスト切り替え時のシーケンスの一例を示す。
<保護データ領域の安全な共有>
上記において、耐攻撃空間内のプロセス同士であっても、ライセンスオーナーが異なるコード及びデータの領域間では、相互にアクセスすることができないと説明した。しかし、以下の耐攻撃領域共有機能を用いることで、GT10で保護され、互いに異なるコード復号鍵Kcを持つソフトウェアパッケージ、ライブラリ、オブジェクト及びプロセス等の保護コードモジュール間で、保護データを安全に交換できるようにすることができる。
デコーダDRMプロセスによってデコードされたデータは、DRMプロセス用の仮想ページに書き込まれる。このデコードされたデータは、データ暗号鍵Kdを用いて暗号化された後、RAM17内の共有物理ページに記録される。RAM17の共有物理ページに記録されたデータはデータ復号鍵Kdを用いて復号されて、DRMプロセス用の仮想ページに書き込まれる。プレーヤ(再生アプリケーション)プロセスはそのデータを読み出して再生する。
まず、保護データを共有するために、共有されることになる保護データ領域を生成した生成元モジュールとその保護データ領域を生成元モジュールと共有する共有先モジュールを想定する。
KPacm:ソフトウェアモジュール向け認証局のルート公開鍵
Kacm:ソフトウェアモジュール向け認証局のルート秘密鍵
Kdp:共有先モジュールの秘密鍵
KPdp:共有先モジュールの公開鍵
C (KPdp, Kacm):共有先パッケージの公開鍵証明書
Kc1:生成元モジュールのコード復号鍵
Kc2:共有先モジュールのコード復号鍵
(1)生成元モジュールが共有先モジュールに一時的に生成した乱数を渡す。
(4)生成元モジュールは、署名をチェックし、その正当性を確認できた場合、受け付けた被許諾コード鍵Authorized Code Keyとアクセス権’PR’(耐攻撃モードで読み出し専用)と暗号・復号鍵Kdを埋め込んだGTライセンスと指定仮想領域をパラメタとして、アクセス許諾命令(AUTHORIZE)を実行する。
なお、この説明では、暗号・復号鍵Kd="AAAAAA"がGTライセンスに埋め込まれているとする。
図33に、耐攻撃領域共有システムコールを呼び出した際の処理の手順を示す。この手順(S110からS123)は、システムコール時の入力パラメタが領域サイズの代わりに領域の先頭のアドレスであることをのぞいて、図28に示す手順(S90からS103)と同様であるため、説明を省略する。
<DRMソフトウェア構築モデル>
以下、DRMソフトウェアモジュールの構築モデルに説明する。デコーダDRM30、メディアDRM40及びこれらのDRMが用いるPKIライブラリ20内の暗号・復号ライブラリ、更には、TRM化が必要なその他のアプリケーションは、GT10上で保護されるGT保護コードとして流通し、実行される。これらのモジュールは、ほぼ全文を暗文とすることによりGT10で保護される。
(2)ライセンスキーは暗号化された状態で、ダウンローダーを介してメディアDRM40に転送される。
(5)メディアDRM40はデコーダDRM30を認証し、デコーダDRM30と共有するセッションキーを用いてライセンスキーを暗号化してデコーダDRM30に転送する。なお、この鍵の共有及び手順(7)の保護データの共有については<保護データ領域の安全な共有>において説明した。
(8)再生アプリケーションがコンテンツを再生する。
まず、図35及び図36を用いて、メディアDRMによって行われる処理について説明する。
ライセンス管理用の耐攻撃データ領域を生成できた場合(S137:NORMAL)、S138に進み、ライセンス管理用の耐攻撃データ領域を生成できなかった場合(S137:ERROR)、S142に進む。
S164の処理が正常に行われた場合(S165:NORMAL)、デコーダDRM30は、再生許諾要求、再生要求及び終了要求の何れかを受けるまで待つ。S164の処理が正常に行われなかった場合(S165:ERROR)、デコーダDRM30は、出力装置(不図示)にエラーが生じた旨を表示し(S169)、S175に進む。
再生要求を受けた場合(S167:あり)、デコーダDRM30は、コンテンツのライセンスキーを取得済みであるか否か判定する(S171)。コンテンツキーを取得済みである場合(S171:取得済)、デコーダDRM30は暗号化ブロックを復号し、そのブロックを共有する処理を行う(S173)。S173についいて詳しくは図39を用いて後述する。続いて、デコーダDRM30は、再生アプリケーションに返却値を通知し(S174)、S166に戻る。S171の判定において、まだライセンスキーを取得していない場合(S171:なし)、出力装置(不図示)にエラー表示を行い(S172)、S175に進む。
次に、図38を用いて、図37のS164について詳しく説明する。復号されたコンテンツ用の共有保護データ領域を生成するために、まず、デコーダDRM30は、デコーダDRM30によってデコードされたコンテンツを記録するための耐攻撃領域を取得するために耐攻撃領域取得システムコールを呼び出す(S181)。この処理については既に説明した。耐攻撃領域が生成できた場合(S182:NORMAL)、S184に進む。そうでない場合(S182:ERROR)、エラー表示を出力装置(不図示)に出力させ(S183)、メインフローに復帰する。
まず、再生アプリケーションは、耐攻撃権限設定(SET_TR_RIGHTS)命令及びレジスタの封印(SEAL_REG)命令を実行する(S201及びS202)。続いて、再生アプリケーションは、自身に埋め込まれた秘密情報を取り出す(S203)。続いて、再生アプリケーションは、デコーダDRM30に認証を要求する(S204)。この認証要求に基づいて、上記S192が行われる。
<秘密情報の管理>
証明書を発行された公開鍵暗号法の公開鍵に対応する秘密鍵Kdrmなど、DRMコードパッケージ開発者が生成する秘密情報を維持・管理する方式を図41に示す。図41において、細い矢印はデータの流れを示し、太い白矢印は、鍵等の埋め込みを示す。また、括弧内の数字は処理の順番を示し、以下の説明における手順の番号に対応する。
(2)GTライセンス化された、Kprdとアクセス条件’PR’とは、耐攻撃モードでのみ読み出し可能な形態で保護コード内に埋め込まれる。
(4)KcはKPgtで暗号化され、DRMライセンスとしてDRMパッケージに入れられる。
(5)DRM実行時にVHTRMからこのGTライセンスはGT10に投入され、GT10内部でKprdが読み出される。
これにより、開発者が指定したGT上の指定プロセス以外のプロセスは、秘密鍵Kdrmを読むことができなくなる。特定のGTが破られた場合には、破られたGTの公開鍵暗号法の公開鍵証明書のみを失効すればよい。従って、同じDRM向けのものでも、他のGT向けの証明書(Cdrm2)は正当に利用することができる。
<UDACライセンス管理>
保護コンテンツとUDACライセンスに関する一般情報の管理方式は、UDAC-MBおよびUDAC-LAの方式を引き継ぐことしてもよい。図42にライセンス管理のためのメモリアクセスの方式を示す。
<変形例>
上記において、GTライセンスは移動しない事として説明したが、DRM間のライセンス移動機能の実現する事も可能である。同じGT上で実行される2つのDRMプロセス間でのライセンス移動・許諾は、<保護データの安全な共有>で認証された共有耐攻撃領域を介して実現することとしてもよいし、UDAC-MBやUDAC-PIなどのプロトコルを利用して実現する事としても良い。但し、ライセンスの移動機能を実装する場合、再送攻撃による不正コピーを防止するためには、TRM内に、以下のUPL (Unreplicatable Private Locker:複製不能プライベートロッカー)にライセンス管理用秘密情報を格納しなければならない。このUPLをGTのみで実現したい場合には、TRB.uo(TRB内のuoフィールドの値)およびTRB.cl(TRB内のclフィールドの値)を両方ともonにした耐攻撃領域にライセンス管理用秘密情報を格納することでこれが可能になる。
なお、図43において、図3に示す第1実施形態と同様の部分は省略されている。図43に示すように、第2実施形態に係わるGT100は、第1実施形態にかかわる構成に加えて、さらに、保護ブロックセレクタ101及び104、ハッシュチェッカ102、及びハッシュエンジン103を備える。
b)ebim=1の場合、暗文のみ(第1実施形態と同様)
c)ebim=2の場合、保護ブロック開始識別コード使用
d)ebim=3の場合、同上かつ暗号化ブロックのみ
e)ebim=4の場合、署名付平文ブロックのみ。
f)ebim=5の場合、ハッシュ付暗号化保護ブロックのみ。
復号後ハッシュ確認必須
g)ebim=6の場合、保護ブロック開始識別コード使用。
h)ebim=7の場合、同上かつ暗号化ブロックのみ。ハッシュ確認必須
すなわち、本フィールドの各ビットは、次のような意味を持つ。
ビット1:保護ブロック開始識別コードフラグ。このフラグがオンである場合、ブロックに保護ブロック開始識別コードが付加されていることを示す。個フラグがオフである場合、GT10は、保護ブロック開始識別コードを認識する必要はない。
次に、図44を用いて第2実施形態におけるブロックの構造について説明する。GT10によれば、保護コードブロックと保護データブロックの構造を同じ形式にしても良い。これにより、CPU内の回路リソースの利用率を向上させることが可能となる。図44に示すように、開発者や創作者によって生成されたブロックは、乱数、一般命令やデータを含み、必要な場合さらにハッシュを含む。ebimが1又は5である場合、このブロックが暗号化されることにより、保護ブロックが生成される。ebimが2、3、6又は7である場合、このブロックが暗号化された後に、保護ブロックヘッド識別コードが平文で先頭に付加されることにより。保護ブロックが生成される。保護ブロックヘッド識別コードは、ブロックが保護ブロックであるか否かを示す暗号化フラグ及び、ブロックの最後にハッシュが付加されているか否かを示すハッシュフラグを含む。保護ブロックヘッド識別コード及び暗号化された乱数部分は、保護ブロック開始命令を構成する。
まず、保護ブロックセレクタ104は、RAM17(外部メモリ)からブロックのロード要求が出されるのを待つ(S221 )。RAM17からブロックのロード要求が出されると(S221:要求)、保護ブロックセレクタ104は、予測されるブロックのアドレスと対応する行のebimフィールドの値をTLBから読み込む(S222)。
まず、ハッシュエンジン103は、ハッシュ要求のイベントが発生することを待つ(S241)。イベントが発生すると、ハッシュエンジン103は、ハッシュの要求が行われたブロックを読み込む(S242)。さらに、ハッシュエンジン103は、そのブロックのアドレスと対応するebimを読み込み、そのebimの第2ビットがオンであるか否か判定する(S243)。ebimの第2ビットがオンである場合(S243:on)、ハッシュエンジン103は、そのブロックのハッシュを生成し(S244)、そのブロックと生成したハッシュの内容を次の回路ブロックに転送し(S245)、S241に戻る。一方、ebimの第2ビットがオフである場合(S243:off)、ハッシュエンジン103は、ハッシュを生成しないでそのブロックを次の回路ブロックに転送し(S246)、処理はS241に戻る。
まず、ハッシュチェッカ102は、ハッシュ要求のイベントが発生する事を待つ(S251)。イベントが発生すると、ハッシュチェッカ102は、要求が行われたブロックを読み込む(S252)。続いて、ハッシュチェッカ102は、そのブロックのアドレスと対応するebimを読み込み、そのebimの第2ビットがオンであるか否か判定する(S253)。ebimの第2ビットがオンである場合(S253:on)、ハッシュチェッカ102は、ハッシュエンジン103によって生成されたハッシュと、そのブロックに付加されているハッシュとを比較する(S254)。比較の結果、2つのハッシュが一致しない場合(S254:不一致)、プロセッサコア11に、ハッシュ不一致例外が発生したことを通知し(S255)、S251に戻る。2つのハッシュが一致した場合(S254:一致)、ハッシュチェッカは、そのブロックを次の回路ブロックに転送し(S256)、S231に戻る。
方法3)キャッシュ内にNOPを記録しない。図49に、本方法によるNOPの処理を示す。図49に示すように、RAM17における、保護コードブロック又は保護データブロックは、暗号化されている。なお、場合によっては、保護コードブロック又は保護データブロックは、保護ブロックヘッド識別コードを含む。この保護コードブロック又は保護データブロックがGT10内で復号されると、一般命令(又は一般データ)、乱数及びハッシュを含むブロックが得られるが、キャッシュ内には、このうちの一般命令又は一般データが記録され、NOPが記録されるべき仮想アドレスのデータは記録されない。コードがNOPの仮想アドレスにアクセスした場合、NOPをコードに返す。なお、仮想メモリに記憶されるNOPをOS等から読むことができるようにしても良いし、読むことができないようにしても良い。
1.コード復号鍵Kcを1つだけ持つ保護プロセスが、複数のスレッドを複数のCPU上で平行に実行する場合
2.スヌープ機能による保護コードや保護データなど、キャッシュ内容の自動同期に対応する。
(3)OSがGT10の機能をサポートするまでは耐攻撃空間管理、保護コンテキスト切り替え管理やDRMなどをOSパッケージの外に持つ必要がある。
以下、上記各実施形態において説明したGTの応用例について、第6実施形態から第12実施形態として説明する。
PCのTCPA (Trusted Computing Platform Alliance)機能についは、従来方式では別途特別なハードウェア装置をPCに接続する必要があったが、GTをPCに搭載すれば、そのPC上のソフトウェアで開発することのみで、この機能を実現できる。
もちろん、ソフトウェアを追加すれば、携帯電話やPDAに、個人認証機能、クレジットカード機能、プリペイドカード機能、個人情報保護、機能などを与える事ができ、これらの機能はハードウェアTRMと同等の強力なセキュリティレベルで実現される。
ICカードについては従来の方式ではICカード内のセキュリティ機能をカスタマイズするごとにTRM化を施した個別のチップ生産を行う必要があった。しかも、個別のチップごとにハードウェアTRMの評価基準について審査を行う必要があった。
GTをAV機器に搭載する場合、カスタマイズしたチップごとにTRM化を施す必要はなく、CPU部分のみTRM化を施しておけばよい。これで特別に暗号・復号専用チップを組み込むことなく、ハードウェアTRMと同程度の強度を持つ強力なDRMを実現することができる。また、さらに、AV機器にGTに加えて、ソフトウェアを追加することにより個人認証、オンライン課金機能などをAV機器に与える事も可能である。これらの機能も、ハードウェアTRMと同程度の強度で実現することができる。
GTは、エージェントが移動先で、不正に耐えて使命を全うするための保護機能を実現することができる。つまり、GTは、耐攻撃エージェントとして、VHTRMに対して安全な移動機能を提供することができる。移動エージェントを耐攻撃化することにより、第11実施形態において説明するGRID計算へのGT適用時と同様のセキュリティ機能を実現することができる。
GRID計算やネットワークエージェントでは、従来、以下の問題があった。
1.完全性(Integrity):GRID計算の依頼先において、依頼した実行コードが正しいCPUで、正しいデータを用いて、正しく実行されているかどうかを確認することはできなかった。そのため、依頼先ユーザがどのような不正を働いたとしても、また依頼先の計算機に実行コードを書き換えるウィルスが入ったとしても、確実に確認する手段がなかった。
3.課金(Accounting):計算の依頼先において、課金処理の不正やCPU利用量データの改ざんが行われる怖れがあったため、課金処理や課金データの完全性を保証する必要があった。
しかし、GTを実装したCPU上で稼動する保護コードとして、計算依頼先で実行されるソフトウェアを開発することにより、以下が実現されるため、上記問題が解決される。
2.計算処理改ざん防止機能
3.安全な課金
4.実行コードの不正コピー、不正利用の防止
5.計算依頼先選択の最適化
6.信頼の必要なものはTRMのレベルと証明書の発効日などを指定できるようにする。
人間や動物の作業や動作を肩代わりする自律型ロボットの研究やその発表が盛んであるが、その安全性についての検討もさらに重要になってくる。これまでは単なる情報処理装置としての計算機がウィルスなどにのっとられる脅威であったが、物理的に移動し、その用途によっては人間の力をも凌駕するロボットが同様の事態になることを想定する必要がある。しかし、ロボットに以下の機構を備える事により、このような問題を解決することが可能となる。
2.ロボット用のCPUは署名が確認できたコードしか実行しない機構を持つ。
4.「殺人・傷害禁止ルール」をGT保護ソフトウェアとして実現し、認定機関が発行した証明書の秘密鍵を埋め込む。
6.ロボットの全入力処理と危害を与えうる動作処理のプログラムコードすべてから、このルールエンジンを利用するようにし、全体をGT保護化する。
8.統合ソフトウェア全体をGT保護化する。
次に、第13実施形態として、個人情報保護への応用について説明する。
これら問題を解決するために、本実施形態によれば、各サービスを提供するサーバのCPUにGTを実装し、その上でサーバに、個人情報を扱うサーバDRMソフトウェアやサーバアプリケーションをGT保護コードとしてパッケージ化する。上述のように、GTライセンスには、ソフトウェアを実行するプロセスに対してアクセス条件を設定する事ができる。従って、これまで、アクセス制御を外部から強制する事ができなかったサーバに対しても、アプリケーション操作におけるアクセス条件を強制する事ができるようになる。
従来のウィルス対抗手段では、ソフトウェアのデジタル署名チェック機能とウィルスチェックソフトウェアを併用している。しかしこの方式では、最新のウィルスが、署名チェック機能またはウィルスチェックソフトが起動するまでに動作する実行ファイルを書き換えることによる攻撃に対しては無力である。
このように、GTをウィルス対抗手段に採用することにより、従来の方式に比較して格段に強度の高いウィルス対抗ソフトを実現することができる。
4.見ず知らずのCPUの利用を恐れたり、無償でCPUを貸し出す不公平感により積極的に計算パワーを提供できなかったりしていたGRID計算を積極的に活用できるようになる。これにより、一般の共用CPUの利用効率が10倍程度以上には向上すると考えられる。従って、単純に計算すれば、各コンピュータの処理速度が、ローカルなCPUだけで計算していた時に比較し、平均して10倍程度以上の速さが期待できる。あるいは、必要な計算に世界のCPU利用を集中できるようになる。
さらに将来、GTはいつでもどこでもだれにでも利用できる安全な汎用計算処理基盤として、高信頼ユービキタスコンピューティング(Trusted ubiquitous computing)のインフラにもなることができる。
Claims (36)
- プログラムを実行する中央演算装置であって、
ブロックの暗号化及び暗号化ブロックの復号を行う暗号手段とキャッシュを備え、
前記中央演算装置には、第1の秘密鍵が秘密裏に隠され、
前記暗号手段は、前記第1の秘密鍵と対になった公開鍵を用いて暗号化された第1のプログラムの第1のライセンスを、前記第1の秘密鍵を用いて復号することにより、前記第1のライセンスから前記第1のプログラムを構成する暗号化ブロックを復号するためのコード復号鍵を取得し、前記第1のプログラムの実行によって前記キャッシュ内のデータをメモリ内に記録する際には、該データを該復号鍵を用いて暗号化した後、該メモリ領域に記録する、
ことを特徴とする中央演算装置。 - 前記暗号手段は、前記第1のプログラムを構成する暗号化ブロックがメモリ領域から前記キャッシュに出力される際に、キャッシュ単位で前記暗号化ブロックを復号する、
ことを特徴とする請求項1に記載の中央演算装置。 - ユーザが参照したり改ざんしたりすることができない耐攻撃バッファを更に備え、
前記コード復号鍵は、前記耐攻撃バッファに記録される、
ことを特徴とする請求項1又は2に記載の中央演算装置。 - 前記第1のライセンスは、前記第1のプログラムの実行プロセスがメモリ領域にアクセスする際のアクセス条件を含み、
前記中央演算装置は、前記第1のプログラムを構成する暗号化ブロックが記録される前記メモリ領域のアドレスと前記メモリ領域へのアクセス条件とを記録するTLB(Translation Look aside Buffer)と、
メモリ管理手段と、
プロセッサコアを更に備え、
前記TLBと前記耐攻撃バッファはリンクされ、
前記メモリ管理手段は、暗号化ブロックを記録するメモリ領域のアドレスに基づいて前記TLBから前記メモリ領域へのアクセス条件を取得し、さらに、前記耐攻撃バッファから、前記メモリ領域に対応する前記コード復号鍵を取得し、
前記プロセッサコアは、前記メモリ管理手段が取得した前記アクセス条件に基づいて、前記実行プロセスから前記メモリ領域へのアクセスを実行することが許可されているか否か判定し、前記メモリ領域へのアクセスを実行する事が許可されていると判定した場合、前記実行プロセスから前記メモリ領域へのアクセスを実行し、
前記暗号手段は、前記メモリ管理手段が取得した前記コード復号鍵を用いて前記メモリ領域内の前記暗号化ブロックを復号して得られたコードを前記キャッシュに書き込む、
ことを特徴とする請求項3に記載の中央演算装置。 - 前記第1のプログラムの実行プロセスからアクセスされるメモリ領域が、第1のメモリ領域から第2のメモリ領域に切り替わった場合、
前記メモリ管理手段は、さらに、前記耐攻撃バッファから取得された前記第1のメモリ領域に対応するコード復号鍵と、前記第2のメモリ領域に対応するコード復号鍵とが一致するか否か判定し、一致すると判定した場合、前記実行プロセスから前記第2のメモリ領域へのアクセスを実行し、一致しないと判定した場合、前記実行プロセスから前記第2のメモリ領域へのアクセスを実行しない、
ことを特徴とする請求項4に記載の中央演算装置。 - 前記第1のライセンスは、前記第1のプログラムに埋め込まれている、
ことを特徴とする請求項1乃至5のいずれかに記載の中央演算装置。 - 前記耐攻撃バッファには前記コード復号鍵ごとに、異なるデータ暗号鍵が記録されており、
前記暗号手段は、前記キャッシュ内のデータを前記メモリ領域に記録する際には、前記データを前記データ暗号鍵を用いて暗号化した後、前記TLBによって前記データ暗号鍵に対応付けられた前記メモリ領域に記録し、前記メモリ領域内の暗号化されたデータを読み出す際には、読み出された前記データを前記データ暗号鍵を用いて復号した後、前記キャッシュに書き込む、
ことを特徴とする請求項4乃至6のいずれかに記載の中央演算装置。 - 第1のコードを実行することにより得られたデータを第2のコードで利用する場合、前記プロセッサコアは、前記データを記録するメモリ領域へのアクセス権を前記第2のコードに与えるように前記TLBを設定し、且つ、前記データを暗号化するためのデータ暗号鍵を、前記第2のコードが前記データを前記メモリ領域から読み出す際に使用するように前記TLB及び前記耐攻撃バッファを設定する、
ことを特徴とする請求項7に記載の中央演算装置。 - レジスタと、
レジスタへのアクセス制御を行うためのレジスタアクセス制御テーブルと、を更に備え、
前記プロセッサコアは、前記レジスタアクセス制御テーブル内の封印フラグを用いて、前記レジスタの封印及び解放を制御する、
ことを特徴とする請求項4乃至8のいずれかに記載の中央演算装置。 - TLBの内容を外部記憶装置内のページテーブルに記録する際には、前記暗号手段は、記録する内容に署名を付与し、
前記ページテーブルの内容を前記TLBに取り込む前には、前記暗号手段は、前記署名が正しいことを確認する、
ことを特徴とする請求項4乃至9のいずれかに記載の中央演算装置。 - 前記耐攻撃バッファの内容を外部記憶装置内の暗号化キーテーブルに記録する際には、前記暗号手段は、記録する内容を暗号化する、
ことを特徴とする請求項3乃至10のいずれかに記載の中央演算装置。 - 前記中央演算装置は、他の中央演算装置と接続され、
前記中央演算装置は、前記他の中央演算装置と相互に認証を行う事にことによりセッション鍵を取得し、前記中央演算装置の前記暗号手段は、前記セッション鍵を用いて前記中央演算装置の前記キャッシュの内容を暗号化して、前記他の中央演算装置に同期転送する、
ことを特徴とする請求項1乃至11のいずれかに記載の中央演算装置。 - 前記暗号手段は、前記第1のプログラムを実行する前に、第2のプログラムに付加された前記第2のライセンスを前記公開鍵を用いて復号する事により第2の秘密鍵を暗号化する際に用いられた秘密鍵暗号鍵を取得し、さらに、前記取得された秘密鍵暗号鍵を用いて前記第2の秘密鍵を復号する、
ことを特徴とする請求項1乃至請求項12のいずれかに記載の中央演算装置。 - 前記第2のライセンスには、前記第1のプログラムの実行プロセスから読み出しのみ可であることを示すアクセス条件が付加されており、
前記第2の秘密鍵は、前記第1のプログラムの実行プロセスからの読み出しのみ可能である、
ことを特徴とする請求項13に記載の中央演算装置。 - 前記第2の秘密鍵は、データ暗号鍵によって暗号化されてメモリ領域に記録される、
ことを特徴とする請求項13又は14に記載の中央演算装置。 - 前記耐攻撃バッファは、さらに、
対応する前記耐攻撃バッファ内の情報を前記耐攻撃バッファ外に出力しても良いか否かを示す外部出力禁止情報と、
対応する情報をキャッシュ外に出力しても良いか否かを示すキャッシュロック情報とを記録し、
前記外部出力禁止情報及び前記キャッシュロック情報に基づいて、第1のプログラム及び他のプログラムとの間における前記第1のライセンスの移動は管理される、
ことを特徴とする請求項3乃至15のいずれかに記載の中央演算装置。 - 前第1のプログラムは、トラステッドコンピューティングモジュールである、
ことを特徴とする請求項1乃至16のいずれかに記載の中央演算装置。 - 前記第1のプログラムは、前記中央演算装置に電子財布を実現させるプログラムである、
ことを特徴とする請求項1乃至16のいずれかに記載の中央演算装置。 - 前記第1のプログラムは、個人情報を扱うプログラムである、
ことを特徴とする請求項1乃至16のいずれかに記載の中央演算装置。 - 前記第1のプログラムは、前記中央演算装置の実装コードのウィルスチェックプログラムである、
ことを特徴とする請求項1乃至16のいずれかに記載の中央演算装置。 - 前記第1のプログラムは複数の中央演算装置間を移動する移動エージェントである、
ことを特徴とする請求項1乃至16のいずれかに記載の中央演算装置。 - 前記第1のプログラムを構成するブロックは、前記ブロックのハッシュ値の確認が必要であるか否かを示すハッシュ確認要否情報を含み、
前記ハッシュ確認要否情報に基づいて、前記ブロックのハッシュ値を算出し、前記ブロックに付加するハッシュ手段と、
前記ハッシュ確認要否情報に基づいて、前記ブロックの前記ハッシュ値を確認するハッシュ確認手段と、
を更に備えることを特徴とする請求項1乃至21のいずれかに記載の中央演算装置。 - 前記第1のプログラムを構成するブロックは、前記ブロックが保護を必要とするか否かを示す暗号化要否情報を含み、
前記暗号化要否情報に基づいて、前記ブロックを前記暗号手段に出力するか、そのままキャッシュ又はメモリ領域に出力するか判定する保護ブロック選択手段を、
更に備えることを特徴とする請求項1乃至22のいずれかに記載の中央演算装置。 - 前記第1のプログラムの実行ファイルのヘッダは、前記第1のプログラムを構成するブロックの構成を示す暗号化ブロックビットマップを含み、
前記暗号化ブロックビットマップに基づいて、前記ブロックを前記暗号手段に出力するか、そのままキャッシュ又はメモリ領域に出力するか判定する保護ブロック選択手段を、
更に含むことを特徴とする請求項1乃至22のいずれかに記載の中央演算装置。 - 前記第1のプログラムのコードの先頭は、前記第1のプログラムを構成する複数のブロックが、平文ブロックと暗号化ブロックの組合せの繰り返しであることを指定し、且つ、前記組合せにおいて平文ブロックが連続する数及び暗号化ブロックが連続する数を指定するコードであり、
前記コードを実行することにより、前記プロセッサコアは、前記ブロックを前記暗号手段に出力するか、そのままキャッシュ又はメモリ領域に出力するか判定する、
更に含むことを特徴とする請求項1乃至22のいずれかに記載の中央演算装置。 - 前記キャッシュとメモリの間に、
前記暗号手段を介するキャッシュラインと、
前記暗号手段を介さないキャッシュラインと、
を更に備えることを特徴とする請求項2乃至25のいずれかに記載の中央演算装置。 - 請求項1乃至26のいずれかに記載の中央演算装置を有することを特徴とするコンピュータ。
- 請求項1乃至26のいずれかに記載の中央演算装置を有することを特徴とするICカード。
- 前記第1のプログラムは、前記ICカードのセキュリティ機能を実現するプログラムである、
ことを特徴とする請求項28に記載のICカード。 - 前記中央演算装置は、ロボットに搭載され、
前記第1のプログラムは、前記ロボットを制御する制御プログラムである、
ことを特徴とする請求項1乃至26のいずれかに記載の中央演算装置。 - 中央演算装置に保護プログラムを実行する許諾を与える制御を行わせるプログラムであって、
前記保護プログラムは、コード暗号鍵によって暗号化され、
前記保護プログラムに対応して、前記コード暗号鍵を含み、且つ、前記中央演算装置に秘密裏に備えられた秘密鍵と対になる公開鍵によって暗号化されたライセンスが存在し、
前記中央演算装置が前記保護プログラムを実行する前に、前記ライセンスを前記中央演算装置に投入し、
前記中央演算装置に備えられた暗号手段に、前記秘密鍵を用いて前記ライセンスを復号することにより、前記ライセンスから前記コード暗号鍵を取得させ、
前記暗号手段に、前記コード暗号鍵を用いて前記保護プログラムを復号させ、
前記保護プログラムの実行により前記中央演算装置に備えられたキャッシュ内のデータをメモリ内に記録する際には、該データを該復号鍵を用いて暗号化した後、該メモリ領域に記録する、
ことを含む処理を前記中央演算処理装置に実行させるプログラム。 - 中央演算装置に、保護プログラムを実行する許諾を与える制御を行わせるプログラムを記録する記録装置であって、
前記保護プログラムは、コード暗号鍵によって暗号化され、
前記保護プログラムに対応して、前記コード暗号鍵を含み、且つ、前記中央演算装置に秘密裏に備えられた秘密鍵と対になる公開鍵によって暗号化されたライセンスが存在し、
前記中央演算装置が前記保護プログラムを実行する前に、前記ライセンスを前記中央演算装置に投入し、
前記中央演算装置に備えら得た暗号手段に、前記秘密鍵を用いて前記ライセンスを復号することにより、前記ライセンスから前記コード暗号鍵を取得させ、
前記暗号手段に、前記コード暗号鍵を用いて前記保護プログラムを復号させ、
前記保護プログラムの実行により前記中央演算装置に備えられたキャッシュ内のデータをメモリ内に記録する際には、該データを該復号鍵を用いて暗号化した後、該メモリ領域に記録する、
ことを含む処理を前記中央演算装置に実行させるプログラムを記録する記録装置。 - 中央演算装置に、保護プログラムを実行する許諾を与えるプログラム実行許諾方法であって、
前記保護プログラムは、コード暗号鍵によって暗号化され、
前記保護プログラムに対応して、前記コード暗号鍵を含み、且つ、前記中央演算装置に備えられた秘密鍵と対になる公開鍵によって暗号化されたライセンスが存在し、
前記中央演算装置は、前記保護プログラムを実行する前に、前記ライセンスを取得し、
前記中央演算装置は、前記秘密鍵を用いて前記ライセンスを復号することにより、前記ライセンスから前記コード暗号鍵を取得し、
前記中央演算装置は、前記コード暗号鍵を用いて前記保護プログラムを復号し、
前記中央演算装置は、前記保護プログラムの実行により前記中央演算装置に備えられたキャッシュ内のデータをメモリ内に記録する際には、該データを該復号鍵を用いて暗号化した後、該メモリ領域に記録する、
ことを含むことを特徴とするプログラム実行許諾方法。 - コンピュータにおいて実行されるプログラムコードであって、
前記プログラムコードは、コード暗号鍵によって暗号化され、
前記プログラムコードに対応して、前記コード暗号鍵を含み、且つ、前記プログラムコードを実行するべきコンピュータに備えられた中央演算装置が秘密裏に備える秘密鍵と対になる公開鍵によって暗号化されたライセンスが存在し、
前記ライセンスは前記プログラムコードが実行される前に前記中央演算装置に投入され、
前記中央演算装置によって前記秘密鍵を用いて前記ライセンスが復号され、
前記プログラムコードは、前記ライセンスから取得された前記コード暗号鍵を用いて、前記中央演算装置によって復号され、
前記プログラムコードは、前記中央演算装置に備えられたキャッシュ内からメモリ内に記録される際には、前記コード暗号鍵を用いて暗号化された後、該メモリ領域に記録される、
ことを特徴とするプログラムコード。 - コンピュータにおいて実行されるプログラムコードを記録する、前記コンピュータによって読み取り可能な記録媒体であって、
前記プログラムコードは、コード暗号鍵によって暗号化され、
前記プログラムコードに対応して、前記コード暗号鍵を含み、且つ、前記プログラムコードを実行するべきコンピュータに備えられた中央演算装置が秘密裏に備える秘密鍵と対になる公開鍵によって暗号化されたライセンスが存在し、
前記ライセンスは前記プログラムコードが実行される前に前記中央演算装置に投入され、
前記中央演算装置によって前記秘密鍵を用いて前記ライセンスが復号され、
前記プログラムコードは、前記ライセンスから取得された前記コード暗号鍵を用いて、前記中央演算装置によって復号され、
前記プログラムコードは、前記中央演算装置に備えられたキャッシュ内からメモリ内に記録される際には、前記コード暗号鍵を用いて暗号化された後、該メモリ領域に記録される、
ことを特徴とするプログラムコードを記録する記録媒体。 - 秘密裏に隠された秘密鍵と、暗号化及び復号を行う暗号手段とキャッシュを備える中央演算装置を備えるコンピュータにおいて実行されるプログラムを生成するプログラム生成装置であって、
コードオブジェクトを入力する入力手段と、
入力された前記コードオブジェクトを複数のブロックに分割し、それぞれのブロックにNOP命令を追加するリンカ前処理手段と、
アドレス解決を行うリンカ手段と、
各ブロックをコード暗号鍵を用いて暗号化することにより保護コード実行形式を生成する保護コード実行形式生成手段と、
前記コード暗号鍵を含み、前記秘密鍵と対になる公開鍵によって暗号化されたライセンスを生成するライセンス生成手段とを備え、
前記ライセンスは、前記コンピュータが前記保護コード実行形式を実行する前に前記中央演算装置に投入され、前記暗号手段によって前記秘密鍵を用いて復号され、
前記保護コード実行形式は、前記ライセンスから取得された前記コード暗号鍵を用いて、前記暗号手段によって復号され、
前記保護コード実行形式は、前記キャッシュ内からメモリ内に記録される際には、前記コード暗号鍵を用いて暗号化された後、該メモリ領域に記録される、
ことを特徴とするプログラム生成装置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2002/006955 WO2004006075A1 (ja) | 2002-07-09 | 2002-07-09 | 開放型汎用耐攻撃cpu及びその応用システム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2004006075A1 JPWO2004006075A1 (ja) | 2005-11-04 |
JP4073913B2 true JP4073913B2 (ja) | 2008-04-09 |
Family
ID=30022632
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004519192A Expired - Fee Related JP4073913B2 (ja) | 2002-07-09 | 2002-07-09 | 開放型汎用耐攻撃cpu及びその応用システム |
Country Status (6)
Country | Link |
---|---|
US (1) | US20040093505A1 (ja) |
EP (1) | EP1542112A4 (ja) |
JP (1) | JP4073913B2 (ja) |
CN (1) | CN100354786C (ja) |
AU (1) | AU2002346316A1 (ja) |
WO (1) | WO2004006075A1 (ja) |
Families Citing this family (63)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1276363C (zh) * | 2002-11-13 | 2006-09-20 | 深圳市朗科科技有限公司 | 借助半导体存储装置实现数据安全存储和算法存储的方法 |
JP3880933B2 (ja) * | 2003-01-21 | 2007-02-14 | 株式会社東芝 | 耐タンパマイクロプロセッサ及びキャッシュメモリ搭載プロセッサによるデータアクセス制御方法 |
JP4338989B2 (ja) * | 2003-02-20 | 2009-10-07 | パナソニック株式会社 | メモリデバイス |
JP4624732B2 (ja) * | 2003-07-16 | 2011-02-02 | パナソニック株式会社 | アクセス方法 |
US8060756B2 (en) * | 2003-08-07 | 2011-11-15 | Rao G R Mohan | Data security and digital rights management system |
US7500264B1 (en) * | 2004-04-08 | 2009-03-03 | Cisco Technology, Inc. | Use of packet hashes to prevent TCP retransmit overwrite attacks |
US7475431B2 (en) * | 2004-06-10 | 2009-01-06 | International Business Machines Corporation | Using security levels to improve permission checking performance and manageability |
WO2006053280A2 (en) * | 2004-11-10 | 2006-05-18 | Selinfreund Richard H | Optical machine locking method and system |
JP3810425B2 (ja) * | 2004-12-16 | 2006-08-16 | 松下電器産業株式会社 | 改竄検出用データ生成方法、および改竄検出方法及び装置 |
US7757301B2 (en) * | 2004-12-21 | 2010-07-13 | Seagate Technology Llc | Security hardened disc drive |
US7818585B2 (en) * | 2004-12-22 | 2010-10-19 | Sap Aktiengesellschaft | Secure license management |
US7849512B2 (en) * | 2005-03-21 | 2010-12-07 | Fortressware, Inc. | Method and system to create secure virtual project room |
JP4667108B2 (ja) * | 2005-04-11 | 2011-04-06 | パナソニック株式会社 | データ処理装置 |
JP4698285B2 (ja) * | 2005-05-19 | 2011-06-08 | 富士通株式会社 | 情報処理装置、情報処理方法及びコンピュータプログラム |
JP2007158618A (ja) * | 2005-12-02 | 2007-06-21 | Ricoh Co Ltd | 画像処理装置、暗号モジュールのプロセス化方法 |
US8234505B2 (en) * | 2006-01-20 | 2012-07-31 | Seagate Technology Llc | Encryption key in a storage system |
US8214296B2 (en) * | 2006-02-14 | 2012-07-03 | Microsoft Corporation | Disaggregated secure execution environment |
JP4795812B2 (ja) | 2006-02-22 | 2011-10-19 | 富士通セミコンダクター株式会社 | セキュアプロセッサ |
US8020001B2 (en) * | 2006-02-23 | 2011-09-13 | Qualcomm Incorporated | Trusted code groups |
JP2007304847A (ja) * | 2006-05-11 | 2007-11-22 | Megachips Lsi Solutions Inc | メモリ装置 |
US8788829B2 (en) | 2006-08-17 | 2014-07-22 | Aol Inc. | System and method for interapplication communications |
US9860274B2 (en) | 2006-09-13 | 2018-01-02 | Sophos Limited | Policy management |
US20080244275A1 (en) * | 2007-03-30 | 2008-10-02 | Motorola, Inc. | Instruction Transform for the Prevention and Propagation of Unauthorized Code Injection |
US20100088528A1 (en) * | 2007-05-03 | 2010-04-08 | Radu Sion | Method and apparatus for tamper-proof wirte-once-read-many computer storage |
JP5052287B2 (ja) * | 2007-10-23 | 2012-10-17 | 株式会社Ihi | ロボット不正使用防止装置およびロボット不正使用防止方法 |
TWI371691B (en) * | 2007-12-16 | 2012-09-01 | Infortrend Technology Inc | Storage controller for handling data stream and method thereof |
US8438385B2 (en) * | 2008-03-13 | 2013-05-07 | Fujitsu Limited | Method and apparatus for identity verification |
KR101511380B1 (ko) * | 2008-05-22 | 2015-04-10 | 삼성전자주식회사 | Srm 장치간의 안전 정보 교환 시스템 및 방법 |
GB0810695D0 (en) * | 2008-06-12 | 2008-07-16 | Metaforic Ltd | Anti-tampering MMU defence |
US20090313171A1 (en) * | 2008-06-17 | 2009-12-17 | Microsoft Corporation | Electronic transaction verification |
CN101587523B (zh) * | 2009-07-02 | 2012-04-18 | 飞天诚信科技股份有限公司 | 保护软件的方法和装置 |
US8799411B2 (en) | 2010-05-28 | 2014-08-05 | Arvato Digital Services Canada, Inc. | Method and apparatus for providing enhanced streaming content delivery with multi-archive support using secure download manager and content-indifferent decoding |
US8856504B2 (en) * | 2010-06-07 | 2014-10-07 | Cisco Technology, Inc. | Secure virtual machine bootstrap in untrusted cloud infrastructures |
JP5316592B2 (ja) * | 2011-06-09 | 2013-10-16 | 富士通セミコンダクター株式会社 | セキュアプロセッサ用プログラム |
US20120331303A1 (en) * | 2011-06-23 | 2012-12-27 | Andersson Jonathan E | Method and system for preventing execution of malware |
US9009855B2 (en) * | 2011-09-11 | 2015-04-14 | Microsoft Technology Licensing, Llc | Generating developer license to execute developer application |
WO2013077788A1 (en) * | 2011-11-23 | 2013-05-30 | Gunnebo Gateway Ab | Method of booting a control unit in an electronic article surveillance system and control unit forming part of such a system |
JP2013179453A (ja) * | 2012-02-28 | 2013-09-09 | Nippon Telegr & Teleph Corp <Ntt> | 計算機システムおよび計算方法 |
AU2012372254A1 (en) * | 2012-03-09 | 2014-07-17 | Sony Corporation | Information processing device, information storage device, information processing stystem, information processing method, and program |
EP2653992A1 (en) * | 2012-04-17 | 2013-10-23 | Itron, Inc. | Microcontroller configured for external memory decryption |
US20130298155A1 (en) * | 2012-05-03 | 2013-11-07 | Rawllin International Inc. | Video personal identification code for video on demand services |
BR112014028947A2 (pt) * | 2012-05-25 | 2017-06-27 | Koninklijke Philips Nv | método de configuração de um processador, dispositivo para configuração de um processador, processador, e produto de programa de computador |
US9275223B2 (en) | 2012-10-19 | 2016-03-01 | Mcafee, Inc. | Real-time module protection |
GB2508052A (en) * | 2012-11-18 | 2014-05-21 | Nds Ltd | Glitch resistant device |
US8995658B2 (en) * | 2013-02-13 | 2015-03-31 | Honeywell International Inc. | Physics-based key generation |
US9430384B2 (en) * | 2013-03-31 | 2016-08-30 | Intel Corporation | Instructions and logic to provide advanced paging capabilities for secure enclave page caches |
CN103607279B (zh) * | 2013-11-14 | 2017-01-04 | 中国科学院数据与通信保护研究教育中心 | 基于多核处理器的密钥保护方法及系统 |
US20150269357A1 (en) * | 2014-03-20 | 2015-09-24 | Adobe Systems Incorporated | Method and apparatus for digital rights management that is file type and viewer application agnostic |
US10223289B2 (en) | 2015-07-07 | 2019-03-05 | Qualcomm Incorporated | Secure handling of memory caches and cached software module identities for a method to isolate software modules by means of controlled encryption key management |
EP3383051A4 (en) * | 2015-11-27 | 2018-10-03 | Sony Corporation | Information processing device, information processing method, receiving device, and receiving method |
US10565354B2 (en) * | 2017-04-07 | 2020-02-18 | Intel Corporation | Apparatus and method for protecting content in virtualized and graphics environments |
FR3069935A1 (fr) * | 2017-08-01 | 2019-02-08 | Maxim Integrated Products, Inc. | Dispositifs et procedes de protection de propriete intellectuelle de logiciel pour des plates-formes integrees |
US10885211B2 (en) | 2017-09-12 | 2021-01-05 | Sophos Limited | Securing interprocess communications |
US11151266B2 (en) * | 2017-12-06 | 2021-10-19 | International Business Machines Corporation | Secure data storage and access during transition operations |
US10592697B1 (en) * | 2017-12-12 | 2020-03-17 | John Almeida | Virus immune computer system and method |
CN108920188B (zh) * | 2018-07-03 | 2021-04-27 | 中国人民解放军国防科技大学 | 一种扩展寄存器堆的方法及装置 |
JP7368184B2 (ja) * | 2019-10-31 | 2023-10-24 | 株式会社野村総合研究所 | リスク管理支援装置 |
KR102435253B1 (ko) * | 2020-06-30 | 2022-08-24 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
US11755476B2 (en) | 2020-04-13 | 2023-09-12 | SK Hynix Inc. | Memory controller, storage device including the memory controller, and method of operating the memory controller and the storage device |
US12001523B2 (en) * | 2020-09-29 | 2024-06-04 | International Business Machines Corporation | Software access through heterogeneous encryption |
WO2022085420A1 (ja) * | 2020-10-19 | 2022-04-28 | ソニーグループ株式会社 | 情報処理装置および方法、並びに情報処理システム |
US11409846B2 (en) * | 2021-01-14 | 2022-08-09 | Safelishare, Inc. | User controlled trusted and isolated computing environments |
CN114785514B (zh) * | 2022-03-23 | 2023-11-14 | 国网上海能源互联网研究院有限公司 | 一种用于工业物联化终端应用许可授权的方法及系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0383132A (ja) * | 1989-08-28 | 1991-04-09 | Fujitsu Ltd | ソフトウェア保護制御方式 |
JP2000260121A (ja) * | 1999-03-05 | 2000-09-22 | Toshiba Corp | 情報再生装置および情報記録装置 |
US7225333B2 (en) * | 1999-03-27 | 2007-05-29 | Microsoft Corporation | Secure processor architecture for use with a digital rights management (DRM) system on a computing device |
JP4226760B2 (ja) * | 2000-05-08 | 2009-02-18 | 株式会社東芝 | マイクロプロセッサ、これを用いたマルチタスク実行方法、およびマルチレッド実行方法 |
US6983374B2 (en) * | 2000-02-14 | 2006-01-03 | Kabushiki Kaisha Toshiba | Tamper resistant microprocessor |
JP3801833B2 (ja) * | 2000-02-14 | 2006-07-26 | 株式会社東芝 | マイクロプロセッサ |
-
2002
- 2002-07-09 AU AU2002346316A patent/AU2002346316A1/en not_active Abandoned
- 2002-07-09 WO PCT/JP2002/006955 patent/WO2004006075A1/ja active Application Filing
- 2002-07-09 EP EP02743883A patent/EP1542112A4/en not_active Withdrawn
- 2002-07-09 JP JP2004519192A patent/JP4073913B2/ja not_active Expired - Fee Related
- 2002-07-09 CN CNB028295870A patent/CN100354786C/zh not_active Expired - Fee Related
-
2003
- 2003-07-09 US US10/614,921 patent/US20040093505A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
EP1542112A1 (en) | 2005-06-15 |
AU2002346316A1 (en) | 2004-01-23 |
CN1668990A (zh) | 2005-09-14 |
US20040093505A1 (en) | 2004-05-13 |
EP1542112A4 (en) | 2008-04-09 |
JPWO2004006075A1 (ja) | 2005-11-04 |
WO2004006075A1 (ja) | 2004-01-15 |
CN100354786C (zh) | 2007-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4073913B2 (ja) | 開放型汎用耐攻撃cpu及びその応用システム | |
US10303901B2 (en) | Secure processor and a program for a secure processor | |
CN103221961B (zh) | 包括用于保护多用户敏感代码和数据的架构的方法和装置 | |
JP4498735B2 (ja) | オペレーティングシステムおよびカスタマイズされた制御プログラムとインタフェースする安全なマシンプラットフォーム | |
JP4689946B2 (ja) | 安全なデータを使用して情報処理を実行するシステム | |
US20050060568A1 (en) | Controlling access to data | |
JP4689945B2 (ja) | リソースアクセス方法 | |
US8065521B2 (en) | Secure processor architecture for use with a digital rights management (DRM) system on a computing device | |
US7805375B2 (en) | Digital license migration from first platform to second platform | |
JP4822646B2 (ja) | 分離実行環境で使用するためのキー階層の生成 | |
EP1686504B1 (en) | Flexible licensing architecture in content rights management systems | |
US20050060561A1 (en) | Protection of data | |
US20020083318A1 (en) | Method and system for software integrity control using secure hardware assist | |
JP5636371B2 (ja) | 汎用コンピューティングデバイスにおけるコード実行制御および再帰的セキュリティプロトコルでのコード実行制御のための方法およびシステム | |
US8307215B2 (en) | System and method for an autonomous software protection device | |
JP2015511050A (ja) | プロセス作業セット隔離のための方法およびシステム | |
US20070074050A1 (en) | System and method for software and data copy protection | |
US7603566B2 (en) | Authenticated process switching on a microprocessor | |
KR100755708B1 (ko) | 임시 라이센스를 사용하여 컨텐츠를 임시로 사용하는 방법및 장치 | |
KR20200099041A (ko) | 블록체인 기반 콘텐츠 이용 권한 관리 장치 및 방법 | |
US20190044709A1 (en) | Incorporating software date information into a key exchange protocol to reduce software tampering | |
Focardi et al. | A formally verified configuration for hardware security modules in the cloud | |
Bove | Secure Services for Standard RISC-V Architectures | |
JP2009064126A (ja) | Icカードシステム、その端末装置、プログラム | |
US11748459B2 (en) | Reducing software release date tampering by incorporating software release date information into a key exchange protocol |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071002 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071203 |
|
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: 20080122 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080123 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110201 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 4073913 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
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: 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 |