JP2006203564A - マイクロプロセッサ、ノード端末、コンピュータシステム及びプログラム実行証明方法 - Google Patents

マイクロプロセッサ、ノード端末、コンピュータシステム及びプログラム実行証明方法 Download PDF

Info

Publication number
JP2006203564A
JP2006203564A JP2005013190A JP2005013190A JP2006203564A JP 2006203564 A JP2006203564 A JP 2006203564A JP 2005013190 A JP2005013190 A JP 2005013190A JP 2005013190 A JP2005013190 A JP 2005013190A JP 2006203564 A JP2006203564 A JP 2006203564A
Authority
JP
Japan
Prior art keywords
program
data
value
data string
execution
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.)
Pending
Application number
JP2005013190A
Other languages
English (en)
Inventor
Atsuya Okazaki
篤也 岡崎
Masaki Nakanishi
正樹 中西
Shigeru Yamashita
茂 山下
Katsumasa Watanabe
勝正 渡邉
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.)
Nara Institute of Science and Technology NUC
Original Assignee
Nara Institute of Science and Technology NUC
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 Nara Institute of Science and Technology NUC filed Critical Nara Institute of Science and Technology NUC
Priority to JP2005013190A priority Critical patent/JP2006203564A/ja
Priority to US11/182,049 priority patent/US7577852B2/en
Publication of JP2006203564A publication Critical patent/JP2006203564A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • H04L9/0897Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • 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/2105Dual mode as a secondary aspect
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/60Digital content management, e.g. content distribution

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Storage Device Security (AREA)

Abstract

【課題】 プログラム実行の際にメモリの内容が不正に改ざんされていないことを保証可能なマイクロプロセッサ、そのマイクロプロセッサを備えプログラムの実行証明が可能なノード端末、コンピュータシステム及びプログラム実行証明方法を提供する。
【解決手段】 サーバ20から送出されたプログラムを記憶する内部メモリ42と、当該内部メモリ42に記憶されたプログラムを実行するCPU41と、前記プログラムの実行が終了した時点で、CPU41により実行されたプログラムに所定のハッシュ関数を演算するハッシュ値算出部103と、ノード10に固有であり、秘密鍵記憶部105に記憶されている秘密鍵を用いて、ハッシュ関数が演算されたプログラム及び前記プログラムの実行結果にデジタル署名を行うデジタル署名実行部104と、を備える。
【選択図】 図2

Description

本発明は、メモリの内容が不正に改ざんされていないことを保証可能なマイクロプロセッサ、並びにそのマイクロプロセッサを備えプログラムの実行証明が可能なノード端末、コンピュータシステム及びプログラム実行証明方法に関するものである。
近年、ネットワークの発達により、複数のコンピュータを結んで1台のコンピュータのように利用するグリッドコンピューティングや、プログラム及びそのプログラムの実行状態を保持してコンピュータを移動することで処理を行うモバイルエージェント等が実現している。
グリッドコンピューティングは、計算量の大きな問題を解くための一つの方法である。あるコンピュータ(ジョブディスパッチサーバ、又は単にサーバという。)が問題を分割し、当該サーバは分割した問題を解くためのプログラムとデータを当該サーバにネットワーク接続された多数のコンピュータ(ノード)に渡す。ノードは受け取ったプログラムを実行し、実行結果をサーバに返す。このようなグリッドコンピューティングを用いたプロジェクトとして、seti@home, United Devices, Distribute.netなど、特にボランティアの参加者によるものが知られている。これらのプロジェクトにおいては、計算量に伴い報酬が与えられることが多いため、ノードが与えられたプログラムを正確に実行したことを保証あるいは証明することが重要である。
また、モバイルエージェントシステムにおいては、あるコンピュータ(エージェント)から送出されたプログラムは、ネットワーク接続されたコンピュータ(ホスト)を移動しながら実行される。正しい実行結果を得るためには、経由したホストで正しくプログラムが実行されたことを保証する必要がある。モバイルエージェントでのセキュリティは、悪意のあるエージェントからホストへの攻撃と、逆に、悪意のあるホストからエージェントへの攻撃の二つを防ぐ必要がある。
さらに、最近では、上記のグリッドコンピューティングやモバイルエージェントシステム以外にも、電子商取引、ソフトウェアやデジタルコンテンツなどのDRM(Digital Right Management)などが普及してきており、より一層信頼性の高いコンピュータセキュリティが求められている。現在、ほとんどのコンピュータセキュリティはソフトウェアのみで信頼性を確保しているが、プログラマが異なるアプリケーション毎にセキュリティのためのコードを入れたり、難読化処理を行ったりすることで信頼性を確保するには限界がある。また、ソフトウェアはオペレーティングシステム(OS)や他のプロセスなど、同じコンピュータ上で同時に実行されている悪意のあるソフトウェアからの攻撃に弱い。そこで、コンピュータセキュリティをソフトウェアだけでなく、ハードウェアとソフトウェア両面からサポートするトラステッドコンピューティング(Trusted Computing)という仕組みが考えられている。
このようなトラステッドコンピューティングにおいて、リモートコンピュータが正確にプログラムを実行したことを証明するために、プログラムが改ざんされていないことを保証する方法として、例えば非特許文献1には、「AEGIS」という名称のアーキテクチャが開示されている。このAEGISにおいては、悪意のある攻撃に対応するため、特殊なハッシュ関数を用いることで、メモリの内容が改ざんされていないことを保証する構成とされている。
G. E. Suh, D. Clarke, B. Gassend, M. van Dijk, and S. Devadas, "AEGIS: Architecture for tamper-evident and tamper-resistant processing", Proc. of the 17th Int. Conference on Supercomputing, June 2003.
しかしながら、非特許文献1に係る技術においては、特殊なハッシュ関数を用い、メモリの内容が改ざんされていないことを保証することの実現性を数学的に論じているだけであり、具体的な構成が示されていない。また、このような特殊なハッシュ関数をハードウェアに実装することは、クリティカルパスが伸び、時間的にも、空間的にもオーバヘッドが大きいと考えられる。
本発明は、上記課題に鑑みてなされたものであり、プログラム実行の際にメモリの内容が不正に改ざんされていないことを保証可能なマイクロプロセッサ、そのマイクロプロセッサを備えプログラムの実行証明が可能なノード端末、コンピュータシステム及びプログラム実行証明方法を提供することを目的とする。
請求項1記載の発明は、少なくとも1台のサーバ端末とネットワーク接続可能に構成され、前記サーバ端末から受け取ったプログラムを実行した後、少なくとも当該プログラムの実行結果を含む結果情報を前記サーバ端末に送出可能なノード端末に備えられ、外部から直接アクセスすることができない耐タンパ性を有するマイクロプロセッサであって、前記サーバ端末から送出されたプログラムを記憶する第1の記憶手段と、当該第1の記憶手段に記憶されたプログラムを実行する処理手段と、前記プログラムの実行が終了した時点で、前記処理手段により実行されたプログラムに所定の第1の一方向性関数を演算する第1の一方向性関数演算手段と、前記ノード端末に固有であり、公開鍵暗号方式で用いられる秘密鍵を記憶する秘密鍵記憶手段と、前記秘密鍵記憶手段に記憶されている秘密鍵を用いて、前記第1の一方向性関数が演算されたプログラムと、前記処理手段から得られるプログラムの実行結果とにデジタル署名を行う署名実行手段と、前記署名実行手段によりデジタル署名が行われたプログラムとプログラムの実行結果とを前記結果情報としてサーバ端末に送出する送出手段と、を備えることを特徴とする。
この構成によれば、サーバから送出されたプログラムは、ノード端末のマイクロプロセッサ内に備えられた第1の記憶手段に記憶され、処理手段により実行されていく。そして、当該プログラムの実行が終了すると、第1の一方向性関数演算手段により、当該プログラムに所定の一方向性関数が演算される。ここで、一方向性関数とは、入力値が1ビットでも違えば出力値が大きく異なり、出力値から入力値を求めることが事実上不可能であるような関数のことである。さらに、署名実行手段により、一方向性関数が演算されたプログラムと当該プログラムの実行結果とに公開鍵暗号方式によるデジタル署名が行われ、送出手段によりサーバ端末に送出される。
したがって、サーバ端末においても同様に、送出前のプログラムに同じ一方向性関数を演算すれば、ノード端末で実行されたプログラムが確かにサーバ端末から送出されたものなのか否かの検証を行い得る。また、このデジタル署名は、プログラムとプログラムの実行結果とをまとめた全体に対して行ってもよいし、プログラムとプログラムの実行結果とに個別に行う構成であってもよい。ここで、秘密鍵記憶手段が記憶している秘密鍵はマイクロプロセッサの耐タンパ性により保護されており、他人に知られることはない。また、この秘密鍵に対応する公開鍵は、公開することでプログラムを送出したサーバ端末が知得することが可能である。
請求項2記載の発明は、少なくとも1台のサーバ端末とネットワーク接続可能に構成され、前記サーバ端末から受け取ったプログラムを実行した後、少なくとも当該プログラムの実行結果を含む結果情報を前記サーバ端末に送出可能なノード端末に備えられ、外部から直接アクセスすることができない耐タンパ性を有するマイクロプロセッサであって、前記サーバ端末から送出されたプログラムを記憶する第1の記憶手段と、当該第1の記憶手段に記憶されたプログラムを実行する処理手段と、前記プログラムの実行が終了した時点で、前記処理手段により実行されたプログラムと当該プログラムの実行結果とに所定の第1の一方向性関数を演算する第1の一方向性関数演算手段と、前記ノード端末に固有であり、公開鍵暗号方式で用いられる秘密鍵を記憶する秘密鍵記憶手段と、前記秘密鍵記憶手段に記憶されている秘密鍵を用いて、前記第1の一方向性関数が演算されたプログラムとプログラムの実行結果とにデジタル署名を行う署名実行手段と、前記処理手段から得られるプログラムの実行結果並びに前記署名実行手段によりデジタル署名が行われたプログラムとプログラムの実行結果とを前記結果情報としてサーバ端末に送出する送出手段と、を備えることを特徴とする。
この構成によれば、サーバから送出されたプログラムは、ノード端末のマイクロプロセッサ内に備えられた第1の記憶手段に記憶され、処理手段により実行されていく。そして、当該プログラムの実行が終了すると、当該プログラム及び当該プログラムの実行結果に、第1の一方向性関数演算手段により所定の一方向性関数が演算される。ここで、一方向性関数とは、入力値が1ビットでも違えば出力値が大きく異なり、出力値から入力値を求めることが事実上不可能であるような関数のことである。さらに、署名実行手段により、一方向性関数が演算されたプログラムとプログラムの実行結果とに公開鍵暗号方式によるデジタル署名が行われ、送出手段によりサーバ端末に送出される。
したがって、サーバ端末においても同様に、送出前のプログラムとノード端末から受け取ったプログラムの実行結果とに同じ一方向性関数を演算すれば、ノード端末で実行されたプログラムと実行結果とが確かにサーバ端末から送出されたものなのか否かの検証を行い得る。また、このデジタル署名は、プログラムとプログラムの実行結果とをまとめた全体に対して行ってもよいし、プログラムとプログラムの実行結果とに個別に行う構成であってもよい。さらに、送出手段は、処理手段から得られた、デジタル署名が行われていないプログラムの実行結果もサーバ端末に送出する。ここで、秘密鍵記憶手段が記憶している秘密鍵はマイクロプロセッサの耐タンパ性により保護されており、他人に知られることはない。また、この秘密鍵に対応する公開鍵は、公開することでプログラムを送出したサーバ端末が知得することが可能である。
請求項3記載の発明は、請求項1又は2に記載のマイクロプロセッサであって、前記マイクロプロセッサは、前記ノード端末に備えられた第2の記憶手段と接続可能に構成され、少なくとも当該第2の記憶手段の予め指定されたアドレス範囲である保証領域との間でデータのやり取りが可能に構成されており、前記第2の記憶手段の保証領域との間でデータのやり取りが可能な第3の記憶手段と、所定の第2の一方向性関数を演算する際に用いる鍵を生成する鍵生成手段と、前記第3の記憶手段から送出されたデータを受け取り、前記鍵生成手段により生成された鍵を用いて、前記第2の一方向性関数を当該データに演算した結果である関数値を算出する関数値算出手段と、前記第3の記憶手段から送出されたデータと、前記関数値算出手段により算出された当該データの関数値とを1つにまとめ、共通鍵暗号方式を用いて暗号化したデータ列を生成するデータ列生成手段と、前記保証領域の指定されたアドレスに、前記データ列生成手段により生成されたデータ列を書き出す書き出し手段と、前記保証領域の指定されたアドレスからデータ列を読み込む読み込み手段と、前記読み込み手段により読み込まれたデータ列を共通鍵暗号方式を用いて復号化する復号化手段と、前記読み込み手段により読み込まれ前記復号化手段により復号化されたデータ列に含まれる関数値と、前記関数値算出手段により算出された、前記読み込み手段により読み込まれたデータ列に含まれるデータの関数値とを比較し、それらが一致している場合に当該読み込まれたデータ列は改ざんされていないと判定する検証手段と、をさらに備えることを特徴とする。
この構成によれば、耐タンパ性を有するマイクロプロセッサは、第2の記憶手段内の保証領域と接続可能に構成されている。ここで保証領域とは、当該領域に記憶されたデータが改ざんされていないことを保証すべき領域のことである。マイクロプロセッサは、さらに、第2の記憶手段の保証領域との間でデータのやり取りが可能な第3の記憶手段を備える。この第3の記憶手段は、第1の記憶手段を指すものであってもよいし、第1の記憶手段の空いているメモリ領域であってもよい。さらには、第1の記憶手段とは別個に設けられていてもよい。そして、保証領域に記憶されたデータが改ざんされていないことを証明するために、当該保証領域にはデータだけでなく、所定の第2の一方向性関数を当該データに演算する関数値算出手段により算出された当該データの関数値も記憶される。このデータ及び当該データの関数値はデータ列生成手段により1つにまとめられ暗号化された後、書き出し手段により保証領域に記憶される。
したがって、データ列の改ざんが行われると、当該データ列に含まれるデータだけではなく、関数値も書き換えられることになる。保証領域からの読み込みを行う際には、読み込み手段によりデータ列が読み込まれると、復号化手段により復号化された後、当該データ列に含まれる関数値が検証手段に送出される。検証手段は、さらに当該データ列に含まれるデータに第2の一方向性関数を演算した関数値を関数値算出手段から受け取り、これら2つの関数値の比較を行うことで、データが改ざんされているか否かの判定を行う。
請求項4記載の発明は、請求項3記載のマイクロプロセッサであって、乱数を生成する乱数生成手段をさらに備え、前記鍵生成手段は、前記第3の記憶手段から送出されたデータが書き出される前記保証領域のアドレスを前記第3の記憶手段から受け取り、当該アドレスと前記乱数生成手段により生成された乱数とに基づいて、鍵を生成することを特徴とする。
この構成によれば、鍵生成手段は、第3の記憶手段から送出されたデータが記憶される保証領域内のアドレスに応じた鍵を生成し、関数値算出手段に送出する。つまり、保証領域のアドレス毎に異なった鍵を用いて、関数値算出手段により関数値が算出される。したがって、同じデータ列であってもアドレスが異なれば鍵も異なることになるので、保証領域に書き出されたデータ列が不正に異なるアドレスに上書きされた場合には当該データ列に対する正当な鍵が得られない。したがって、読み込まれたデータ列に含まれる関数値と、読み込まれたデータ列に含まれるデータに対して新しい鍵を用いて算出された関数値とは一致せず、検証手段はデータ列が改ざんされていると判定する。
請求項5記載の発明は、請求項3乃至4のいずれかに記載のマイクロプロセッサであって、前記書き出し手段が前記保証領域に書き出しを行った回数を前記保証領域のアドレス毎に数える第1のカウント手段をさらに備え、前記データ列生成手段は、前記第3の記憶手段から送出されたデータと、前記関数値算出手段により算出された当該データの関数値とに加え、前記第1のカウント手段により数えられた回数を1つにまとめ、共通鍵暗号方式を用いて暗号化したデータ列を生成するものであり、前記書き出し手段が前記第2の記憶手段に書き出しを行った回数の総和を数える第2のカウント手段と、前記プログラムの実行が終了した際に、前記読み込み手段が前記保証領域から読み込み、前記復号化手段が復号化したデータ列に含まれる、前記書き出し手段が前記保証領域に書き出しを行った回数を前記保証領域内のすべてのアドレスについて加算し、当該回数の総和を算出する第1のカウンタ値加算手段と、前記第1のカウンタ値加算手段により算出された回数の総和と、前記第2のカウント手段により数えられた回数の総和とを比較し、それらが一致している場合に当該読み込まれたデータは改ざんされていないと判定する第1のカウンタ値検証手段と、をさらに備えることを特徴とする。
この構成によれば、書き出し手段が保証領域に書き出した回数が、アドレス毎に第1のカウント手段により数えられている。そして、当該回数は、書き出し手段によりデータが保証領域に書き出される際に、データ列生成手段により、データ及び当該データの関数値と共に1つにまとめられ暗号化された後に書き出される。したがって、保証領域に記憶されているデータ列を改ざんすると、この回数も本来の値とは異なる値となる。そして、プログラムの実行が終了すると、第1のカウンタ値加算手段は、保証領域に記憶されている回数を保証領域内のすべてのアドレスについて加算し、その総和を算出する。また、それとは別に、書き出し手段が保証領域に書き出した回数の、すべてのアドレスについての総和が、第2のカウント手段により数えられている。第1のカウンタ値検証手段は、第1のカウンタ値加算手段から受け取った回数の総和と、第2のカウント手段から受け取った回数の総和とを比較し、それらが一致している場合にデータは改ざんされていないと判定する。
請求項6記載の発明は、請求項3乃至4のいずれかに記載のマイクロプロセッサであって、前記書き出し手段がデータ列を書き出す際、当該書き出しの前に前記読み込み手段によるデータ列の読み込みが行われる構成とされており、前記読み込み手段が前記保証領域から読み込みを行った回数を前記保証領域のアドレス毎に数える第3のカウント手段をさらに備え、前記データ列生成手段は、前記第3の記憶手段から送出されたデータと、前記関数値算出手段により算出された当該データの関数値とに加え、前記第3のカウント手段により数えられた回数を1つにまとめ、共通鍵暗号方式を用いて暗号化したデータ列を生成するものであり、前記読み込み手段が前記保証領域から読み込みを行った回数の総和を数える第4のカウント手段と、前記プログラムの実行が終了した際に、前記読み込み手段が前記保証領域から読み込み、前記復号化手段が復号化したデータ列に含まれる、前記読み込み手段が前記保証領域から読み込みを行った回数を前記保証領域内のすべてのアドレスについて加算し、当該回数の総和を算出する第2のカウンタ値加算手段と、前記第2のカウンタ値加算手段により算出された回数の総和と、前記第2のカウント手段により数えられた回数の総和とを比較し、それらが一致している場合に当該読み込まれたデータは改ざんされていないと判定する第2のカウンタ値検証手段と、をさらに備えることを特徴とする。
この構成によれば、読み込み手段が保証領域から読み込んだ回数が、アドレス毎に第3のカウント手段により数えられている。そして、当該回数は、読み込み手段によりデータが保証領域から読み込まれる際に、データ列生成手段により、データ及び当該データの関数値と共に1つにまとめられ暗号化された後に書き出される。したがって、保証領域に記憶されているデータ列を改ざんすると、この回数も本来の値とは異なる値となる。そして、プログラムの実行が終了すると、第2のカウンタ値加算手段は、保証領域に記憶されている回数を保証領域内のすべてのアドレスについて加算し、その総和を算出する。また、それとは別に、読み込み手段が保証領域から読み込んだ回数の、すべてのアドレスについての総和が、第4のカウント手段により数えられている。第2のカウンタ値検証手段は、第2のカウンタ値加算手段から受け取った回数の総和と、第4のカウント手段から受け取った回数の総和とを比較し、それらが一致している場合にデータは改ざんされていないと判定する。
請求項7記載の発明は、前記ノード端末に備えられた第2の記憶手段と接続可能に構成され、少なくとも当該第2の記憶手段の予め指定されたアドレス範囲である保証領域との間でデータのやり取りが可能に構成された請求項1又は2に記載のマイクロプロセッサであって、前記保証領域との間でデータのやり取りが可能な第3の記憶手段と、前記保証領域へ書き出されるデータ列の履歴情報を記憶する書き出し履歴記憶手段と、前記保証領域から読み込まれるデータ列の履歴情報を記憶する読み込み履歴記憶手段と、前記保証領域の指定されたアドレスからデータ列を読み込む読み込み手段と、前記読み込み手段により読み込まれたデータ列を共通鍵暗号方式を用いて復号化する復号化手段と、前記読み込み手段が前記保証領域から読み込みを行った回数を前記保証領域のアドレス毎に数える第3のカウント手段と、前記読み込み手段が前記保証領域から読み込みを行った回数の総和を数える第4のカウント手段と、乱数を発生する乱数発生手段と、前記復号化手段から受け取ったデータ列に含まれるデータ及び回数、並びに当該データ列が記憶されていたアドレスとに、前記乱数発生手段から受け取った乱数を鍵として所定の暗号化処理を施した暗号化データを生成するスクランブル関数演算手段と、前記スクランブル関数演算手段から受け取った暗号化データと、前記読み込み履歴記憶手段から受け取った履歴情報との排他的論理和を計算し、当該計算結果を前記読み込み履歴記憶手段に記憶させる排他的論理和演算手段と、書き出し処理が指示された場合には前記第3の記憶手段から送出されたデータであり、読み込み処理が指示された場合には前記保証領域から読み込まれたデータであるいずれか一方のデータと、前記第3のカウント手段から受け取った回数とを1つにまとめ、共通鍵暗号方式を用いて暗号化したデータ列を生成するデータ列生成手段と、前記保証領域の指定されたアドレスに、前記データ列生成手段により生成されたデータ列を書き出す書き出し手段と、をさらに備え、前記書き出し手段がデータ列を書き出す際、当該書き出しの前に前記読み込み手段によるデータ列の読み込みが行われる構成とされており、前記排他的論理和演算手段は、さらに、書き出し処理が指示された場合には前記第3の記憶手段から送出されたデータであり、読み込み処理が指示された場合には前記保証領域から読み込まれたデータであるいずれか一方のデータと、前記第3のカウント手段から受け取った回数と、当該データが記憶されていたあるいは書き出されるアドレスとに、前記スクランブル関数演算手段において暗号化処理が施された暗号化データと、前記書き出し履歴記憶手段から受け取った履歴情報との排他的論理和を計算し、当該計算結果を前記書き出し履歴記憶手段に記憶させる処理も行う構成とされ、前記プログラムの実行が終了した際に、前記読み込み手段により前記保証領域内のアドレスからデータ列が読み込まれ、前記復号化手段により当該データ列の復号化が行われた後、前記スクランブル関数演算手段により、当該データ列に含まれるデータ及び回数と当該データ列が記憶されていたアドレスとに暗号化処理が施され、引き続き前記排他的論理和演算手段により前記読み込み履歴記憶手段の更新が行われると共に、前記第4のカウント手段に記憶されている回数の総和から前記回数が減算される処理が、前記保証領域内のすべてのアドレスについて行われるものであり、前記マイクロプロセッサは、前記前記第4のカウント手段に記憶されている回数の総和がゼロか否かを判定するカウンタ値判定手段と、前記読み込み履歴記憶手段と書き出し履歴記憶手段の記憶内容が一致するか否かを判定する履歴比較手段と、前記カウンタ値判定手段により前記回数の総和がゼロであると判定され、かつ前記履歴比較手段により前記読み込み履歴記憶手段と書き出し履歴記憶手段の記憶内容が一致すると判定された場合に、プログラム実行時に前記保証領域内に記憶されたデータ列は改ざんされていないと判定する判定手段と、をさらに備えることを特徴とする。
請求項8記載の発明は、少なくとも1台のサーバ端末とネットワーク接続可能に構成され、前記サーバ端末から送出されたプログラムを受け取り、当該プログラムを請求項1乃至7のいずれかに記載のマイクロプロセッサにより実行することを特徴とするノード端末である。
この構成によれば、プログラム実行の際にメモリの内容が不正に改ざんされていないことを保証可能なマイクロプロセッサを備えたノード端末を実現し得る。
請求項9記載の発明は、プログラムを送出し、当該プログラムの実行を指示するサーバ端末と、前記サーバ端末から受け取ったプログラムを実行した後、少なくとも当該プログラムの実行結果を含む結果情報を前記サーバ端末に送出する少なくとも1台の請求項8記載のノード端末と、をネットワーク接続したコンピュータシステムであって、前記サーバ端末は、前記ノード端末に固有の秘密鍵に対応する公開鍵を記憶する公開鍵記憶手段と、前記公開鍵記憶手段に記憶された公開鍵を用いて、前記ノード端末から受け取ったデジタル署名を検証し、前記結果情報から前記第1の一方向性関数演算手段の演算結果を抽出する署名検証手段と、前記サーバ端末から送出したプログラムに前記第1の一方向性関数を演算する第2の一方向性関数演算手段と、前記第2の一方向性関数演算手段の演算結果と、前記署名検証手段により抽出された演算結果とを比較し、それらが一致している場合に前記プログラムはノード端末において正常に実行されたと判定する比較手段と、を備えることを特徴とする。
この構成によれば、ノード端末においてプログラムが実行された後、当該プログラムに第1の一方向性関数を演算した結果及び当該プログラムの実行結果にデジタル署名が行われた結果がサーバ端末に送出される。サーバ端末は、ノード端末から結果情報を受け取ると、署名検証手段によりノード端末から受け取ったデジタル署名を検証する。その結果、確かに指定したノード端末のデジタル署名であると検証された場合には、署名検証手段は受け取った結果情報から第1の一方向性関数演算手段の演算結果、つまりノード端末において実行されたプログラムに第1の一方向性関数を演算した結果を抽出する。続いて、比較手段は、サーバ端末から送出したプログラムに第1の一方向性関数が演算された結果を第2の一方向性関数演算手段から受け取り、当該演算された結果と署名検証手段により抽出された結果とを比較する。そして、それらの結果が一致した場合は、比較手段はプログラムがノード端末において正常に実行されたと判定する。
請求項10記載の発明は、プログラムを送出し、当該プログラムの実行を指示するサーバ端末と、前記サーバ端末から受け取ったプログラムを実行した後、少なくとも当該プログラムの実行結果を含む結果情報を前記サーバ端末に送出する少なくとも1台のノード端末と、をネットワーク接続したコンピュータシステムにおけるプログラム実行証明方法であって、前記ノード端末は、前記サーバ端末から送出されたプログラムを記憶する第1の記憶工程と、当該第1の記憶工程により記憶されたプログラムを実行する処理工程と、前記プログラムの実行が終了した時点で、前記処理工程により実行されたプログラムに所定の第1の一方向性関数を演算する第1の一方向性関数演算工程と、前記ノード端末に固有であり、公開鍵暗号方式で用いられる秘密鍵を記憶する秘密鍵記憶工程と、前記ノード端末に固有のデジタル署名として、前記秘密鍵記憶工程により記憶されている秘密鍵を用いて、前記第1の一方向性関数が演算されたプログラム及び前記プログラムの実行結果の暗号化を行う暗号化工程と、を備え、前記サーバ端末は、前記ノード端末に固有の秘密鍵に対応する公開鍵を記憶する公開鍵記憶工程と、前記公開鍵記憶工程により記憶された公開鍵を用いて、前記ノード端末から受け取ったデジタル署名を検証し、前記結果情報から前記第1の一方向性関数演算工程による演算結果を抽出する署名検証工程と、前記サーバ端末から送出したプログラムに第1の一方向性関数を演算する第2の一方向性関数演算工程と、前記第2の一方向性関数演算工程による演算結果と、前記署名検証工程により抽出された演算結果とを比較し、それらが一致している場合に前記プログラムはノード端末において正常に実行されたと判定する比較工程と、を備えることを特徴とする。
請求項1記載の発明によれば、マイクロプロセッサにおいて実行されたプログラム自体ではなく、当該プログラムに一方向性関数を演算した結果をサーバ端末に送出可能である。一方向性関数では、僅かな入力値の差が大きな差として出力されるため、サーバ端末においても同様に、送出前のプログラムに同じ一方向性関数を演算すれば、ノード端末で実行されたプログラムが確かにサーバ端末から送出されたものなのか否かの検証を容易に行うことができる。さらに、公開鍵暗号方式を用い、ノード端末に固有の秘密鍵を用いたデジタル署名を行うので、サーバ端末に公開鍵を安全に配送することが可能となる上に、プログラムが確かに指定したノード端末で実行されたことを証明することができる。
請求項2記載の発明によれば、マイクロプロセッサにおいて実行されたプログラム自体ではなく、当該プログラムと当該プログラムの実行結果とに一方向性関数を演算した結果をサーバ端末に送出可能である。一方向性関数では、僅かな入力値の差が大きな差として出力されるため、サーバ端末においても同様に、送出前のプログラムとノード端末から受け取ったプログラムの実行結果とに同じ一方向性関数を演算すれば、ノード端末で実行されたプログラムと実行結果とが確かにサーバ端末から送出されたものなのか否かの検証を容易に行うことができる。さらに、公開鍵暗号方式を用い、ノード端末に固有の秘密鍵を用いたデジタル署名を行うので、サーバ端末に公開鍵を安全に配送することが可能となる上に、プログラムが確かに指定したノード端末で実行されたことを証明することができる。
請求項3記載の発明によれば、マイクロプロセッサの外部に備えられている第2の記憶手段は耐タンパ性により保護されていないが、データだけではなく、当該データに所定の一方向性関数を演算した結果である関数値を付加して第2の記憶手段に記憶するために、この関数値を用いた比較を行うことで、データに改ざんが行われたか否かの検証を有効かつ確実に行うことができる。
請求項4記載の発明によれば、第2の記憶手段のあるアドレスに記憶されているデータ列を、異なるアドレスにそのまま上書きするような改ざんが行われた場合には、上書きされたデータ列は本来のアドレスとは異なるアドレスに記憶されているため、正当ではない鍵が生成される。そのため、読み込まれた当該データ列に含まれる関数値と、新しい鍵を用いて算出された関数値とは一致しないので、データの改ざんが行われたことを有効かつ確実に検証することができる。
請求項5記載の発明によれば、第2の記憶手段のあるアドレスに記憶されているデータ列を、当該アドレスに以前記憶されていたデータ列で上書きするような改ざんが行われた場合であっても、正当なデータ列と上書きされたデータ列とでは書き出し手段が第2の記憶手段に書き出した回数が異なるため、それらデータ列に含まれる回数が異なり、データ列の改ざんが行われたことを有効かつ確実に検証することができる。
請求項6記載の発明によれば、第2の記憶手段のあるアドレスに記憶されているデータ列を、当該アドレスに以前記憶されていたデータ列で上書きし、さらにプログラムの実行が終了する前に、さらに当該アドレスに正当なデータを上書きするような改ざんが行われた場合であっても、正当なデータ列と上書きされたデータ列とでは読み込み手段が第2の記憶手段から読み込んだ回数が異なるため、それらデータ列に含まれる回数が異なり、データの改ざんが行われたことを有効かつ確実に検証することができる。
請求項7記載の発明によれば、ハッシュ関数のような一方向性関数を演算し、第2の記憶手段に書き出すのではなく、共通鍵暗号方式を用いているため、高速に処理が行える上に、メモリ容量が節約できる。
請求項8記載の発明によれば、プログラム実行の際にメモリの内容が不正に改ざんされていないことを保証可能なマイクロプロセッサを備えていることで、プログラムの実行証明が可能なノード端末を実現することができる。
請求項9記載の発明によれば、サーバ端末から受け取った正当なプログラムを、確かにサーバ端末が指定したノード端末が正常に実行したことを証明することが可能なコンピュータシステムを実現できる。
請求項10記載の発明によれば、サーバ端末とノード端末とをネットワーク接続したコンピュータシステムにおいて、サーバ端末から受け取った正当なプログラムを、確かにサーバ端末が指定したノード端末が正常に実行したことを証明することが可能となる。
以下、本発明に係るコンピュータシステムの一実施形態について図面を参照しながら説明する。尚、各図において同一の符号を付した構成又は処理は、同一の構成又は処理であることを示し、その詳しい説明を省略する。
図1は、本発明の一実施形態に係るコンピュータシステムの概略構成図である。本コンピュータシステムは、n台(nは整数)のコンピュータ(ノード)10及びコンピュータ(サーバ)20から構成される。ノード10及びサーバ20間は、10BASE−T又は100BASE−TX等の通信ケーブル30により相互に通信可能に接続されている。ノード10及びサーバ20は、CPU(中央演算装置)と、CPUの作業領域として用いられ種々のデータを一時的に記憶するRAM(Random Access Memory)と、BIOS(Basic Input Output System)等の制御プログラムを記憶するROM(Read Only Memory)と、ハードディスクドライブ(HDD)等から構成されている。
さらに、ノード10及びサーバ20は、オペレーティングシステム(OS)等を記憶する外部記憶装置と、フレキシブルディスク、CD−ROM、DVD−ROM等の記録媒体からデータを読み取る記録媒体駆動装置と、通信ボード等から構成されデータの送受信制御を行う通信I/F(インターフェイス)と、キーボード及びマウス等から構成される入力装置と、CRT(陰極線管)、液晶パネル又はプラズマディスプレイ等から構成される表示装置と、を備えている。
グリッドコンピューティングにおいては、サーバ20は問題を分割し、分割した問題を解くためのプログラム(program)とデータをサーバ20にネットワーク接続された多数のノード10に渡す機能を有する。また、モバイルエージェントシステムにおいては、サーバ20がプログラムを送出するエージェントに相当し、ノード10がプログラムをサーバ20から受け取り実行するホストに相当する。尚、上記コンピュータシステムは一例にすぎず、あるノード10及びサーバ20間を、他のケーブルを用いて接続してもよいし、上記以外に、USBや無線によって接続してもよい。
[プログラム実行の証明手順]
次に、本発明に係るプログラム実行の証明手順について、図面を参照しながら説明する。図2は、本発明の一実施形態に係るコンピュータシステムの機能ブロック図である。本実施形態においては、サーバ20から送出されたプログラムをノード10が実行し、実行したプログラム及び当該プログラムの実行結果を含む結果情報を再度サーバ20に送出するようなグリッドコンピューティングの例について説明する。また、本実施形態においては、暗号化と復号化とで異なる鍵を用いる「公開鍵暗号方式」について説明するが、鍵が他人に秘匿されることなく配送できるのであれば「共通鍵暗号方式」を用いてもよい。公開鍵暗号方式としては、例えば、RSAや楕円曲線暗号等が挙げられる。
また、本発明の実施形態に係るCPUは、耐タンパ性を有しているとする。耐タンパ性とは、外部から直接アクセスすることができず、秘密情報やその処理機構などを不当に観測、又は改ざんすることが極めて困難な性質である。例えば、回路が誤動作するまでクロック周波数を上げる攻撃に対応するためにクロック周波数の異常を検知したり、出荷時に検査用LSIパッドを除去したり、消費電力や処理時間の変動から内部情報が漏洩することを防ぐため、それらの変動を抑える工夫等が施されているものとする。耐タンパ性は、既にICカードやPKI(Public Key Infrastructure)などで利用されている。以下の実施形態で用いるCPUにおいても、耐タンパ性を利用することにより、デジタル署名で用いる秘密鍵を保護したり、プログラム実行の証明処理に対する観測や改ざんなどの攻撃を防いだりすることができるものとする。
まず、ノード10は、通信制御部(送出手段)101、プログラム記憶部102、ハッシュ値算出部(第1の一方向性関数演算手段)103、デジタル署名実行部(署名実行手段)104、秘密鍵記憶部(秘密鍵記憶手段)105、デジタル署名記憶部106、プログラム実行部40、及び制御部110を備えて構成される。通信制御部101は、例えば通信I/F(インターフェイス)から構成され、ノード10とサーバ20とのデータ等の送受信を担うノード10側の機能部である。例えば、通信制御部101は、サーバ20からプログラムを受け取ったり、当該プログラムの実行結果等にデジタル署名を行ったデータや、デジタル署名記憶部106に記憶されているデジタル署名をサーバ20に送出したりする。
プログラム記憶部102は、例えばROMやRAM等の記憶装置から構成され、サーバ20から送出されたプログラムを記憶する。ハッシュ値算出部103は、例えばCPUやRAM等から構成され、所定のハッシュ関数(H)を用いて、プログラム実行部40において実行されたプログラムのハッシュ値を算出する。ここで、ハッシュ関数Hとは、不定長の入力mから固定長の文字列(以下、ハッシュ値hという)を返す関数のことである。すなわち、ハッシュ値hは、h= H(m)と表される。このハッシュ関数は、一方向性関数であり、入力値が1ビットでも違えば出力値が大きく異なるため、例えハッシュ値hが与えられても、h= H(x)となるような入力xを見つけるのは計算上ではほぼ不可能であるという特徴を有する。このハッシュ関数としては、例えば、MD5、SHA−1あるいはHMAC等といったものが挙げられる。
プログラム実行部40は、例えばCPUやRAM等から構成され、サーバ20から送出されたプログラムを実行する。その際、プログラム実行部40全体が耐タンパ性を有するか、又はプログラム実行部40全体が耐タンパ性を有しない場合には、サーバ20から送出されたプログラムが正確に実行されたか否かを監視する機能部を有するものとする。
秘密鍵記憶部105は、例えばROM等の記憶装置から構成され、公開鍵暗号方式における秘密鍵(SKp)を記憶する。デジタル署名実行部104は、例えばCPUやRAM等から構成され、秘密鍵記憶部105に記憶されている秘密鍵を用いて公開鍵暗号方式により、プログラム実行部40において実行されたプログラム及びプログラム実行部40から受け取った実行結果にデジタル署名を行う(デジタル署名を行った結果を、以下、{H(program),Out})SKpと表す。)。デジタル署名記憶部106は、例えばROM等の記憶装置から構成され、秘密鍵SKpに対応する公開鍵(PKp)、及び当該公開鍵PKpにCPU製造者固有の秘密鍵(SKm)を用いてデジタル署名を行った結果{PKp}SKmを記憶する。制御部110は、ノード10内の前記各種機能部を制御して、所望の処理を行わせる。
次に、サーバ20は、通信制御部201、プログラム記憶部202、ハッシュ値算出部203、ハッシュ値比較部204、デジタル署名検証部205、公開鍵記憶部206、及び制御部210を備えて構成される。通信制御部201は、例えば通信I/F(インターフェイス)から構成され、ノード10とサーバ20とのデータ等の送受信を担うサーバ20側の機能部である。例えば、通信制御部201は、ノード10へプログラムを送出したり、当該プログラムの実行結果等にデジタル署名が行われたデータや、デジタル署名記憶部106に記憶されているデジタル署名をノード10から受け取ったりする。
プログラム記憶部202は、例えばROMやRAM等の記憶装置から構成され、ノード10に実行させるためのプログラムを記憶する。このプログラムは、元のままで分割されていないプログラムであってもよいし、ノード10に分割した問題を解かせるために所定の機能部により分割されたプログラムであってもよい。
ハッシュ値算出部203は、例えばCPUやRAM等から構成され、ノード10のハッシュ値算出部103において用いられるものと同じハッシュ関数を用いて、プログラム記憶部202に記憶されているプログラムのハッシュ値を算出する。
公開鍵記憶部206は、例えばROM等の記憶装置から構成され、CPU製造者固有の秘密鍵SKmに対応する公開鍵(PKm)を記憶する。この公開鍵PKmは、予め信頼できる通信経路等を用いてノード10から受け取ったものとする。デジタル署名検証部205は、例えばCPUやRAM等から構成され、特定のノード10から送出された実行結果等に、確かに当該ノード10のデジタル署名が行われているか否かを検証する。ハッシュ値比較部204は、ハッシュ値算出部203において算出されたプログラムのハッシュ値と、サーバ20から送出された後、プログラム実行部40において実行されたプログラムのハッシュ値とを比較する。
制御部210は、サーバ20内の前記各種機能部を制御して、所望の処理を行わせる。この図2においては、制御部110及び制御部210との間で制御信号等を送受信するためのラインは、図が煩雑になるため省略している。
図3は、本発明の一実施形態に係るコンピュータシステムの動作について説明するためのフローチャートである。まず、制御部210は、プログラム記憶部202に記憶されているプログラムを通信制御部201を介して、ノード10に送出する(ステップS101)。サーバ20から送出されたプログラムを通信制御部101を介して受け取ったノード10は、当該プログラムをプログラム記憶部102に記憶する。続いて、制御部110は、当該プログラムをプログラム記憶部102からプログラム実行部40へと送出させ、そこで当該プログラムを実行させる(ステップS102)。
続いて、制御部110は、プログラム実行部40におけるプログラムの実行処理が終了すると、サーバ20から送出されたプログラムがプログラム実行部40において正しく実行されたか否かを判定する(ステップS103)。その結果、サーバ20から送出されたプログラムがプログラム実行部40において正しく実行されなかったと判定された場合には(ステップS103でNO)、制御部110は攻撃者によるデータの改ざんが行われたと判定し(ステップS111)、処理を終了する。
それと異なり、サーバ20から送出されたプログラムがプログラム実行部40において正しく実行されたと判定された場合には(ステップS103でYES)、制御部110はプログラム実行部40において実行されたプログラムをハッシュ値算出部103へと送出させ、そこで当該プログラムのハッシュ値を算出させる(ステップS104)。続いて、制御部110は、デジタル署名実行部104を制御し、ハッシュ値算出部103において算出されたプログラムのハッシュ値と、プログラム実行部40において実行されたプログラムの実行結果とにデジタル署名を行わせる(ステップS105)。このとき、デジタル署名実行部104は、秘密鍵記憶部105に記憶されている秘密鍵SKpを用いてデジタル署名を行う。
続いて、制御部110は、デジタル署名実行部104においてデジタル署名されたプログラムのハッシュ値と実行結果に加え、デジタル署名記憶部106に記憶されている、秘密鍵SKpに対応する公開鍵PKp、及び当該公開鍵PKpにCPU製造者固有の秘密鍵SKmを用いてデジタル署名を行った結果{PKp}SKmを、通信制御部101を介してサーバ20に送出させる(ステップS106)。
通信制御部201を介して上記のデータを受け取ると、制御部210は当該データをデジタル署名検証部205に送出させ、そこでデジタル署名の検証を行わせる(ステップS107)。このとき、デジタル署名検証部205は公開鍵記憶部206に記憶されている公開鍵PKmを用いて検証を行う。具体的には、まず、デジタル署名検証部205は、公開鍵PKmにより{PKp}SKmを検証する。続いて、検証されたPKpにより{H(program),Out}}SKpを検証する。いずれかの検証の結果、当該プログラムの実行を指示したノード10のデジタル署名ではないと判定された場合には、制御部210は攻撃者によるデータの改ざんが行われたと判定し(ステップS111)、処理を終了する。
それと異なり、検証の結果、当該プログラムの実行を指示したノード10のデジタル署名であると判定された場合には、制御部210はプログラム記憶部202に記憶されているプログラムをハッシュ値算出部203に送出させ、そこで当該プログラムのハッシュ値を算出させる(ステップS108)。そして、ハッシュ値算出部203において算出されたハッシュ値と、ノード10から送出されデジタル署名検証部205において検証されたプログラムのハッシュ値H(program)とが比較される(ステップS109)。その結果、ハッシュ値比較部204において、2つのハッシュ値が一致しないと判定された場合には(ステップS109でNO)、制御部210は攻撃者によるデータの改ざんが行われたと判定し(ステップS111)、処理を終了する。
ハッシュ値比較部204において、2つのハッシュ値が一致すると判定された場合には(ステップS109でYES)、上記と異なり、制御部210は、ノード10に送出したプログラムが正しく実行され、かつ攻撃者によるデータの改ざんが行われていないと判定するため、ノード10から受け取った実行結果(Out)を採用して(ステップS110)、処理を正常終了する。
以上のプログラム実行証明の手順においては、ハッシュ値算出部103において算出されたプログラムのハッシュ値と、プログラム実行部40からの実行結果とをまとめてデジタル署名を行うとして説明したが、本発明の実施形態はそれに限られることなく、デジタル署名実行部104は、プログラム実行部40において実行されたプログラムと、プログラム実行部40からの実行結果とをまとめたハッシュ値がハッシュ値算出部103において算出された後、デジタル署名を行う構成であってもよい。
この場合、プログラム実行部40から得られるプログラムの実行結果をそのままの形式で通信制御部101を介してサーバ20に送出し、それとは別に、デジタル署名が行われたプログラムとプログラムの実行結果とをサーバ20に送出すればよい。そして、プログラム記憶部202に記憶されているプログラムとノード10から受け取ったプログラムの実行結果とをハッシュ値算出部203に送出し、そこでハッシュ値を算出させる。それとは別にノード10から受け取った、デジタル署名が行われたプログラムとプログラムの実行結果はデジタル署名検証部205において検証され、確かにノード10から送出された結果情報であることが検証されると、ハッシュ値比較部204に送出される。このデジタル署名検証部205から送出されたハッシュ値と、ハッシュ値算出部203から送出されたハッシュ値とがハッシュ値比較部204において比較され、それらが一致した場合には、ノード10においてプログラムが正しく実行されたことが証明される。
また、ハッシュ値算出部103は、プログラムと当該プログラムの実行結果とをまとめてハッシュ値を算出する構成であってもよいし、プログラムと当該プログラムの実行結果とで、個別にハッシュ値を算出する構成であってもよい。
さらに、以上のプログラム実行証明の手順においては、デジタル署名記憶部106を設け、そこに秘密鍵SKpに対応する公開鍵PKp、及び当該公開鍵PKpにCPU製造者固有の秘密鍵SKmを用いてデジタル署名を行った結果{PKp}SKmを記憶させることで、サーバ20において2段階の検証を行うとして説明した。しかしながら、本発明の実施形態はそれに限られず、公開鍵記憶部206を設けず、サーバ20の公開鍵記憶部206にPKmではなくPKpを記憶させ、デジタル署名実行部104でSKpを用いて署名されたデータをデジタル署名検証部205において直接検証する構成であってもよい。
以下、プログラム実行部40が耐タンパ性を持つ1チップで構成されている場合、及びプログラム実行部40を構成する耐タンパ性CPUとメモリとが別のチップで構成されている場合のそれぞれにおいて、具体的な構成を示しながらプログラムの実行証明について説明していく。
[実施形態1]
まず、プログラム実行部40を構成するCPUとメモリとが耐タンパ性を持つ1チップで構成されている場合の実施形態について説明する。この場合は、攻撃者がメモリバスラインを監視することが不可能なので、メモリに対して外部から攻撃することはできない。そのため、メモリの内容を信頼することができる。この場合について、プログラムの実行証明を行うためのCPU及びメモリを備えるマイクロプロセッサの処理について説明する。また、本実施形態においては、さしあたりシングルタスクOSを前提とする。
図4は、実施形態1に係るプログラム実行部40を詳細に示した機能ブロック図である。プログラム実行部40は、同一チップ上に載ったCPU(処理手段)41、内部メモリ(第1の記憶手段、第3の記憶手段)42及びデジタル署名部43を備えて構成されたマイクロプロセッサであり、耐タンパ性を有するものとする。内部メモリ42には、例えばOSにより、サーバ20から送出された実行証明命令列が展開され、さらに実行を要求されたプログラムが命令領域及びデータ領域に展開される。そして、当該プログラムの実行結果は出力領域に書き出される。また、デジタル署名部43は、例えば図2におけるハッシュ値算出部103、デジタル署名実行部104及び秘密鍵記憶部105を備えて構成される機能部である。
図5は、図4に示した実行証明命令列の一実施形態を示す模式図である。また、図6は、CPUが有するモードの一実施形態を示す模式図である。多くのCPUには、ユーザモード及び特権モードが用意されているが、本発明に係る実施形態においては、さらにプログラムの実行が正常に行われていることを監視する“セキュアモード”を用意する。
図5に示したように、CPU41は、プログラム実行の証明を要求し、セキュアモードに移行させる特殊命令[certify]を有する。この特殊命令[certify]は、オペランドで実行証明したいプログラムを展開するメモリのアドレス及び範囲を指定する。命令領域は実行証明命令列のあるアドレスからコードサイズ分であり、データ領域はデータアドレスからデータサイズ分である。そして、実行結果は、データ領域の終点アドレスから出力サイズ分の領域である出力領域に書き出される。
図4の実行証明命令列に含まれる[certify]命令が実行されると、CPUはセキュアモードに切り替わる(図3のステップS101)。そして、図4に示したプログラム実行部40は、図3に示したステップS102の処理、つまりプログラムカウンタやアドレスバスを監視しながら、内部メモリ42の命令領域に展開された処理を実行する。このとき、プログラム実行部40を構成するCPU41、内部メモリ42及びデジタル署名部43とはすべて同一チップ上に載っており、耐タンパ性を有しているため、プログラム実行の途中で外部の攻撃者による内部メモリ42の内容の改ざん等が行われることはない。そのため、ステップS103においては、正しいプログラムを実行していることが保証されている。
続いて、証明の要求された命令領域の実行が終了すると、命令領域とデータ領域のプログラムはデジタル署名部43内のハッシュ値算出部103に送出され、そこでハッシュ値が算出される(ステップS104)。次に、実行結果を含めてデジタル署名部43内のデジタル署名実行部104においてデジタル署名が生成され(ステップS105)、セキュアモードが終了する。
上記の実施形態においては、シングルタスクOSを想定して説明したが、マルチタスクOS上でプログラムを実行させる場合には、OSはプロセス切り替えの際にレジスタの値をプロセス情報として退避させることが行われる。そのため、例えば、ウィルス等によって書き換えられた悪意のあるOSや他のプロセスは、プログラム実行証明処理中のプロセスの観測や改ざんが可能である。
この悪意のあるOSからの攻撃に対応するためには、例えば、CPUがアドレスバスを監視することでメモリ空間を保護することが考えられる。それ以外にも、例えば、OSではなくCPUがプロセスを切り替え、その切り替えの際に、プロセス情報をCPUでしか復号できないように暗号化して当該情報を退避させることが考えられる。さらに、プロセス切り替えの前後で、レジスタの内容(コンテキスト)が改ざんされていないことを保証するために、暗号化するだけではなく、タイマ割り込み時にコンテキストをコピーしてCPU内部に保持し、戻ってきたときにコンテキストが改ざんされていないかを検証することなども可能である。
また、実行の証明を行いたいプログラムにおいてダイナミックリンクライブラリ(DLL)が利用されている場合、予めコンピュータ上に用意された共有オブジェクトファイルとリンクされる。そのため、当該共有オブジェクトファイルに悪意があった場合、不正な処理を行う可能性がある。これを防ぐためには、共有オブジェクトも含めてハッシュ値を算出し、サーバ20側でも同じ共有オブジェクトを保持して同様にハッシュ値を算出すればよい。ただし、様々な共有オブジェクトのバージョン管理等を行わなければならないので、コストが高くなる。コストを抑えるためには、ダイナミックリンクライブラリではなくスタティックリンクで配布することにより、プログラムサイズは大きくなるが、検証作業を容易に行うことができる。
以上説明したように本実施形態によれば、プログラム実行部40において実行されたプログラム自体ではなく、当該プログラムにハッシュ関数(一方向性関数)を演算した結果をサーバ20に送出可能である。ハッシュ関数では、僅かな入力値の差が大きな差として出力されるため、サーバ20においても同様に、送出前のプログラムに同じハッシュ関数を演算すれば、ノード10で実行されたプログラムが確かにサーバ20から送出されたものなのか否かの検証を容易に行うことができる。さらに、公開鍵暗号方式を用い、ノード10に固有の秘密鍵を用いたデジタル署名を行うので、サーバ20に公開鍵を安全に配送することが可能となる上に、プログラムが確かに指定したノード10で実行されたことを証明することができる。
[実施形態2]
前述の実施形態1においては、CPUとメモリとが同一チップ上に載っている場合について説明したが、実際のグリッドコンピューティングに参加するような現在のコンピュータは、CPUとメモリとが別のチップで構成されていることが多い。その場合、メモリバスを監視されてソフトウェア的な攻撃をされたり、それとは別にハードウェア的な攻撃をされたりすることが想定される。ハードウェア的な攻撃とは、例えば、メモリバスにメモリではなくメモリエミュレータを接続し、CPUとは独立にメモリの任意のアドレスを任意のタイミングで観測し、任意の値に改ざんすることなどである。そこで、本実施形態2及び以下の実施形態3〜6においては、CPUとメモリとが別のチップで構成されている、つまり、メモリ(外部メモリ)が攻撃される可能性がありそこに記憶されたデータが信頼できない場合に、プログラムの実行証明を行う例について説明する。
図7は、spoofing attackと呼ばれる攻撃を説明するための模式図である。ある時刻t0において、CPU(マイクロプロセッサ)50はキャッシュメモリ(第1の記憶手段)70に記憶された正当なデータAを外部メモリ(第2の記憶手段)60に書き出す。そして、ある時刻t1において、攻撃者は外部メモリ60に記憶されたデータAを、同じアドレス上で偽データXに書き換える。その後、CPU50が外部メモリ60上の当該アドレスからデータを読み込むと、読み込まれたデータは正当なデータAではなく改ざんされた後の偽データXとなる。そのため、以後CPU50は誤った処理を行うこととなり、実行されたプログラムの実行結果も誤ったものとなる。これが、spoofing attackと呼ばれる攻撃である。
図8は、spoofing attackを防ぐためのプログラム実行部40を詳細に示した機能ブロック図である。プログラム実行部40は、CPU50と当該CPU50とは別チップ上に構成された外部メモリ60とを備える。そして、CPU50は、キャッシュメモリ70とプログラムが正常に実行されているかを監視する機能部である認証部80、さらに図略のデジタル署名部43とを備える。そして、このCPU50は、耐タンパ性を有しているものとする。また、外部メモリ60の所定のアドレスは、データの改ざん等が行われないことを保証すべき領域(以下、保証領域という)である。
MAC値算出部(関数値算出手段)504は、キャッシュメモリ70及び外部メモリ60から読み込んだデータのハッシュ値(MAC値)を、MAC(Message Authentication Code)と呼ばれるハッシュ関数(第2の一方向性関数)を用いて算出する。このMACを用いる際には鍵が必要になるが、それは鍵記憶部(鍵生成手段の一形態)601に記憶されている。
データ列生成部(データ列生成手段及び書き出し手段)603は、キャッシュメモリ70から読み込んだデータと、MAC値算出部504により算出されたMAC値とを1つのデータ列にまとめ、共通鍵暗号方式を用いて暗号化した後、外部メモリ60の保証領域内の所定アドレスに書き出す。データ列読み込み部(読み込み手段及び復号化手段)602は、外部メモリ60の所定のアドレスからデータ列を読み込み、共通鍵暗号方式を用いて復号化した後、当該データ列に含まれるデータをMAC値算出部504に送出し、当該データ列に含まれるMAC値をMAC値検証部505に送出する。また、共通鍵暗号方式による暗号化及び復号化に必要な鍵は、図略の記憶手段に記憶されている。
MAC値検証部(検証手段)505は、MAC値算出部504においてデータ列読み込み部602が読み込んだデータから算出されたMAC値と、データ列読み込み部602が読み込んだデータ列に含まれるMAC値とを比較し、それらが一致したときに外部メモリ60においてデータ列は改ざんされていないと判定する。つまり、この判定においては、データと当該データのMAC値とは一対一に対応しており、MAC値が異なればその元となっているデータも異なるという事実を用いている。
また、データ列読み込み部602は、MAC値検証部505において、外部メモリ60から読み込まれたデータが改ざんされていないと判定されると、外部メモリ60から読み込んだデータ列に含まれるデータをキャッシュメモリ70に送出する。制御部501は、認証部80に含まれる上記各機能部を制御し、所定の処理を行わせる。また、制御部501と認証部80に含まれる上記各機能部とを結ぶ制御ライン等は、図が煩雑になるために省略する。
図9は、spoofing attackを防ぐためにプログラム実行部40が行う処理の流れを示すフローチャートである。この図及び以下の実施形態を説明する際に用いるフローチャートは、前述の図3におけるステップS102及びS103の処理を詳細に示すものである。
まず、ノード10のCPU50においてプログラムが実行されているとき、キャッシュメモリ70が溢れないかがチェックされている(ステップS201)。その結果、データが大きいためにキャッシュメモリ70が溢れる場合には、キャッシュメモリ70から認証部80へデータが送出される(ステップS202)。MAC値算出部504は、キャッシュメモリ70から送出されたデータを受け取り、鍵記憶部601に記憶されている鍵を用いて、当該データのMAC値を算出する(ステップS203)。そして、MAC値算出部504において算出されたMAC値はデータ列生成部603に送出される。
データ列生成部603は、キャッシュメモリ70から受け取ったデータと、MAC値算出部504から受け取ったMAC値とを1つのデータ列にまとめ暗号化した後、外部メモリ60の保証領域内の所定アドレスに書き出す(ステップS204)。これが、図7の時刻t0における書き出し処理に相当する。
その後、ある時刻t2において、データ列読み込み部602は時刻t0において書き出されたデータ列を外部メモリ60から読み込む(ステップS205)。データ列読み込み部602は、当該データ列に含まれるデータをMAC値算出部504へ送出し、当該データ列に含まれるMAC値をMAC値検証部505へ送出する。MAC値算出部504は、鍵記憶部601に記憶されている鍵を用いて、データ列読み込み部602から受け取ったデータのMAC値を算出する(ステップS206)。
MAC値検証部505は、データ列読み込み部602から受け取ったMAC値と、MAC値算出部504から受け取ったMAC値とを比較する(ステップS207)。その結果、MAC値が一致している(ステップS207でYES)と、MAC値検証部505は外部メモリ60においてデータ列の改ざんが行われていないと判定し、制御部501に通知する。制御部501は、MAC値検証部505からの通知に基づき、データ列読み込み部602からデータをキャッシュメモリ70に送出させる(ステップS208)。それとは異なり、MAC値が一致していない(ステップS207でNO)と、MAC値検証部505は外部メモリ60においてデータ列の改ざんが行われていると判定する(ステップS209)。この場合、例えば、プログラムの実行を終了し、ノード10からサーバ20に対してその旨を通知するなどすることができる。
以上説明したように本実施形態によれば、CPU50の外部に備えられている外部メモリ60は耐タンパ性により保護されていないが、データだけではなく、当該データに所定の一方向性関数(ハッシュ関数)を演算した結果であるMAC値を付加して外部メモリ60に記憶するために、このMAC値の比較を行うことで、データに改ざんが行われたか否かの検証を有効かつ確実に行うことができる。
[実施形態3]
図10は、splicing attackと呼ばれる攻撃を説明するための模式図である。ある時刻t0において、CPU50はキャッシュメモリ70に記憶された正当なデータAを外部メモリ60に書き出す。そして、ある時刻t1において、攻撃者は外部メモリ60に記憶されたデータAを、別のアドレスに上書きする。その後、時刻t2において、CPU50が外部メモリ60上の攻撃者が書き込んだデータを読み込んだ場合、読み込まれたデータに例えデータのMAC値が付加されているとしても、当該MAC値は正しいのでCPU50はデータの改ざんが行われたことを検知することができない。そのため、以後CPU50は誤った処理を行うこととなり、実行されたプログラムの実行結果も誤ったものとなる。これが、splicing attackと呼ばれる攻撃である。
図11は、splicing attackを防ぐためのプログラム実行部40を詳細に示した機能ブロック図である。この図においては、前述の実施形態2における図8のブロック図に加え、さらに乱数生成部(乱数生成手段)502及び鍵生成部(鍵生成手段の一形態)503を備えている。鍵生成部503は、外部メモリ60上の、データを書き出すアドレスをキャッシュメモリ70から受け取り、当該アドレスと、乱数生成部502とから受け取った乱数とに基づいて、MAC値算出部504がMAC値を算出する際に用いる鍵を生成する。
図12は、splicing attackを防ぐためにプログラム実行部40が行う処理の流れを示すフローチャートである。まず、ノード10のCPU50においてプログラムが実行されているとき、キャッシュメモリ70が溢れないかがチェックされている(ステップS201)。その結果、データが大きいためにキャッシュメモリ70が溢れる場合には、キャッシュメモリ70から認証部80へデータ、及び当該データが書き出されるとして割り当てられている外部メモリ60上のアドレスが認証部80内の鍵生成部503へ送出される(ステップS301)。鍵生成部503は、キャッシュメモリ70から受け取ったアドレスと、乱数生成部502とから受け取った乱数とに基づいて鍵を生成する(ステップS302)。以降は、前述の実施形態2において図9を用いて説明した処理と同様であるために説明を省略する。
以上説明したように本実施形態によれば、外部メモリ60のあるアドレスに記憶されているデータ列を、異なるアドレスにそのまま上書きするような改ざんが行われた場合には、上書きされたデータ列は本来のアドレスとは異なるアドレスに記憶されているため、正当ではない鍵が生成される。そのため、読み込まれた当該データ列に含まれるMAC値と、新しい鍵を用いて算出されたMAC値とは一致しないので、データの改ざんが行われたことを有効かつ確実に検証することができる。また、本実施形態によれば、図10に示したsplicing attackのみならず、図7に示したspoofing attackをも有効に防ぐことができる。
[実施形態4]
図13は、再生攻撃(replay attack)と呼ばれる攻撃の一形態を説明するための模式図である。時刻t0において、CPU50はキャッシュメモリ70に記憶された正当なデータAを外部メモリ60に書き出す。攻撃者は、外部メモリ60を観測し、書き出されたデータAを記憶する。そして、ある時刻t1において、CPU50はキャッシュメモリ70に記憶された正当なデータBを外部メモリ60上の同じアドレスに上書きする。その後、ある時刻t2において、攻撃者は外部メモリ60に記憶されたデータBを、同じアドレス上でデータAに書き換える。
その後の時刻t3において、CPU50が外部メモリ60上の当該アドレスからデータを読み込むと、読み込まれたデータは正当なデータBではなく改ざんされた(書き換えられた)後のデータAとなる。しかしながら、同じアドレスであるためMAC値を算出する際に用いる鍵は同じである。そのため、正当なMAC値が算出されてしまい、データが改ざんされたことに気づかない。そのため、以後CPU50は誤った処理を行うこととなり、実行されたプログラムの実行結果も誤ったものとなる。これが、replay attackと呼ばれる攻撃の一形態である。
この形態のreplay attackを防ぐために、本実施形態においては外部メモリ60の保証領域の各アドレスに書き出した回数を数えるためのカウンタと、CPU全体が外部メモリ60に書き出した回数を数えるカウンタとを備える。図14は、本実施形態に係るreplay attackの一形態を防ぐためのプログラム実行部40を詳細に示した機能ブロック図である。この図においては、前述の実施形態3における図11のブロック図に加え、さらにWriteカウンタ(以下、Wカウンタという)506、Global Writeカウンタ(以下、GWカウンタという)507、カウンタ値加算部508及びカウンタ値検証部509を備えている。
Wカウンタ(第1のカウント手段)506は、外部メモリ60のアドレス毎にCPU50がデータを書き出した回数をカウントアップするための機能部であり、制御部501の制御により、データ列読み込み部604から受け取ったカウンタ値(以下、WC値という)に1を加算(カウントアップ)しデータ列生成部605に送出する。GWカウンタ(第2のカウント手段)507は、レジスタ等を備え、CPU全体で外部メモリ60にデータを書き出した回数を数えるための機能部であり、制御部501の制御により、カウンタ値(以下、GWC値という)に1を加算して記憶する。
カウンタ値加算部(第1のカウンタ値加算手段)508は、プログラムの実行が終了した場合に、外部メモリ60の保証領域すべてのアドレスにデータが書き出された回数の総和を求め、カウンタ値検証部509に送出する。カウンタ値検証部(第1のカウンタ値検証手段)509は、カウンタ値加算部508から受け取ったカウンタ値の総和と、GWカウンタ507から受け取ったGWC値とを比較し、それらが一致した場合には、外部メモリ60においてデータ列の改ざんは行われていないと判定する。
また、本実施形態においては、MAC値算出部620は、前述の実施形態2及び3とは異なり、データだけからMAC値を算出するのではなく、データとWC値とを合わせたものからMAC値を算出する。さらに、データ列読み込み部604は、MAC値算出部620にデータだけではなく、WC値も共に送出する。このデータ列読み込み部604は、また、Wカウンタ506にWC値を送出する。そして、データ列生成部605は、データとMAC値だけではなく、さらにWC値も含めたデータ列を生成する。
図15及び図16は、本実施形態に係るreplay attackの一形態を防ぐためにプログラム実行部40が行う処理の流れを示すフローチャートである。まず、CPU50は、図3のステップS101においてセキュアモードに切り替わると、外部メモリ60の保証領域の(データフィールド及びカウンタフィールドに書き出されている)データ及びWC値をすべて初期化する。そのため、WC値はすべてのアドレスにおいて「0」であるとする。また、CPU50は、同時にGWカウンタ507のカウンタ値も初期化し、初期値「0」とする(ステップS400)。
この状態において、ノード10のCPU50においてプログラムが実行されているとき、キャッシュメモリ70が溢れないかがチェックされている(ステップS201)。その結果、データが大きいためにキャッシュメモリ70が溢れる場合には、まず、データ列読み込み部604は、当該データが書き出されるとして割り当てられている外部メモリ60上のアドレスから、すでに記憶されているデータ列を読み込む(ステップS401)。
そして、データ列読み込み部604は読み込んだデータ列からWC値を取り出し、Wカウンタ506に送出する。そのWC値を受け取ったWカウンタ506は、当該WC値に1を加算し(ステップS402)、データ列生成部605に送出する。このとき、GWカウンタ507も、自らが記憶しているGWC値に1を加算する。例えば、この時点で外部メモリ60の当該アドレスから読み込んだデータ列から取り出されたWC値が初期値「0」のままだとする。この場合、Wカウンタ506はWC値を「0」から「1」にカウントアップして、データ列生成部605に送出する。GWカウンタ507も同様に、自身のカウンタ値を「0」から「1」へカウントアップして記憶する。
続いて、データ、及び当該データが書き出されるとして割り当てられている外部メモリ60上のアドレスが認証部80へ送出される(ステップS301)。そして、鍵生成部503は、当該アドレス及び乱数生成部502において生成された乱数を用いて鍵を生成する(ステップS302)。MAC値算出部620は、鍵生成部503から受け取った鍵を用いて、キャッシュメモリ70から受け取ったデータ及びWカウンタ506から受け取ったWC値をまとめたMAC値を算出し(ステップS403)、当該MAC値をデータ列生成部605に送出する。MAC値を受け取ったデータ列生成部605は、データ、WC値及びMAC値を1つのデータ列にまとめ暗号化した後、外部メモリ60に書き出す(ステップS204)。引き続き、外部メモリ60に書き出すデータがある場合(ステップS404でYES)には、ステップS201に戻り、以上と同様の処理を繰り返す。
ここまでの書き出しの処理が、図13の時刻t0及びt1における処理に相当する。この2度目の書き出し処理のステップS402においては、Wカウンタ506はWC値を「1」から「2」にカウントアップして、データ列生成部605に送出する。GWカウンタ507も同様に、自身のカウンタ値を「1」から「2」へカウントアップして記憶する。つまり、図13の時刻t0の時点で外部メモリ60に書き出されたデータAのWC値は「1」であり、時刻t1の時点で外部メモリ60に書き出されたデータBのWC値は「2」である。
その後、ある時刻t3において、データ列読み込み部604は時刻t0及びt1において書き出されたデータ列と同じアドレスからデータ列を読み込む(ステップS205)。データ列読み込み部604は、復号化の後、当該データ列に含まれるデータ及びWC値をMAC値算出部620へ送出し、当該データ列に含まれるMAC値をMAC値検証部505へ送出する。MAC値算出部620は、鍵生成部503から受け取った鍵を用いて、データ列読み込み部604から受け取ったデータ及びWC値をまとめたMAC値を算出する(ステップS405)。
MAC値検証部505は、データ列読み込み部604から受け取ったMAC値と、MAC値算出部620から受け取ったMAC値とを比較する(ステップS207)。その結果、MAC値が一致していない(ステップS207でNO)と、MAC値検証部505は外部メモリ60においてデータ列の改ざんが行われたと判定する(ステップS411)。それとは異なり、MAC値が一致している(ステップS207でYES)と、MAC値検証部505は外部メモリ60においてデータ列の改ざんが行われていないと判定し、制御部501に通知する。制御部501は、MAC値検証部505からの通知に基づき、データ列読み込み部604からデータをキャッシュメモリ70に送出させる(ステップS406)。
その後、プログラムの実行が終了する(ステップS407でYES)と、カウンタ値加算部508は、外部メモリ60の保証領域のすべてのアドレスのデータ列を読み込み、そこに含まれるWC値の総和を算出する(ステップS408)。そして、カウンタ値加算部508により算出されたWC値の総和、及びGWカウンタ507に記憶されているGWC値が共に、カウンタ値検証部509に送出される。この送出されるWC値は、プログラムの実行に使用されたアドレスが図13に示したアドレスのみであるとすると、図13における時刻t1とt3の間の任意の時刻t2において攻撃者による書き換えが行われなかった場合にはデータBに含まれている値「2」であり、データAへの書き換えが行われた場合には「1」となる。また、GWカウンタ507に記憶されているGWC値は、いずれの場合も「2」である。
したがって、カウンタ値検証部509は、WC値の総和とGWC値とを比較し、それらが一致している場合(上記の例では両者共に「2」)には(ステップS409でYES)、データが改ざんされることなくプログラムが正常に実行されたと判定し処理を終了する(ステップS410)。それと異なり、WC値の総和とGWC値とが一致していない場合(上記の例ではWC値の総和が「1」でGWC値が「2」)には(ステップS409でNO)、外部メモリ60においてデータが改ざんされたと判定し処理を終了する(ステップS411)。
以上説明したように、本実施形態によれば、外部メモリ60のあるアドレスに記憶されているデータ列を、当該アドレスに以前記憶されていたデータ列で上書きするような改ざんが行われた場合であっても、正当なデータ列と上書きされたデータ列とでは書き出し手段が外部メモリ60に書き出した回数が異なるため、それらデータ列に含まれる回数が異なり、データ列の改ざんが行われたことを有効かつ確実に検証することができる。また、本実施形態によれば、図13に示した形態のreplay attackのみならず、図7に示したspoofing attack、図10に示したsplicing attackをも有効に防ぐことができる。
[実施形態5]
図17は、再生攻撃(replay attack)と呼ばれる攻撃の他の一形態を説明するための模式図である。ある時刻t0において、CPU50はキャッシュメモリ70に記憶された正当なデータAを外部メモリ60に書き出す。攻撃者は、外部メモリ60を観測し、書き出されたデータAを記憶する。そして、その後の時刻t1において、CPU50はキャッシュメモリ70に記憶された正当なデータBを外部メモリ60上の同じアドレスに上書きする。攻撃者は、さらに、外部メモリ60を観測し、書き出されたデータBを記憶する。そして、その後の時刻t2において、攻撃者は外部メモリ60に記憶されたデータBを、同じアドレス上でデータAに書き換える。その後の時刻t3において、CPU50が外部メモリ60上の当該アドレスからデータを読み込むと、読み込まれたデータは正当なデータBではなく改ざんされた後のデータAとなる。
しかしながら、その後の時刻t4において、攻撃者が外部メモリ60に記憶されたデータAを、同じアドレス上でデータBに書き換え、その後の時刻t5において、CPU50が外部メモリ60上の当該アドレスからデータを読み込むと、そのデータは本来読み込まれるべきデータであるデータBであるために、CPU50はプログラムの実行途中においてデータが改ざんされたことに気づかない。このように、replay attackと呼ばれる攻撃の他の一形態においては、CPU50は誤った処理を行い、実行されたプログラムの実行結果も誤ったものとなるが、その検出は困難である。
この形態のreplay attackを防ぐために、本実施形態においては、前述の実施形態4におけるWカウンタ506及びGWカウンタ507のように、CPU50が外部メモリ60に書き出した回数を数えるのではなく、CPU50が外部メモリ60から読み込んだ回数を数えるカウンタを備えている。本実施形態においては、キャッシュメモリ70から外部メモリ60への書き出し処理の場合も、まず、書き出し先である外部メモリ60のアドレスからの読み込みを行う。したがって、Wカウンタ506が数えている、CPU50が外部メモリ60から読み込んだ回数は、書き出し処理及び読み込み処理が行われた回数を表している。
図18は、本実施形態に係るreplay attackの一形態を防ぐためのプログラム実行部40を詳細に示した機能ブロック図である。この図においては、前述の実施形態4におけるWカウンタ506に換えてWrite/Readカウンタ(以下、WRカウンタという)608を備え、さらにGWカウンタ507に換えてGlobal Write/Readカウンタ(以下、GWRカウンタという)609を備えている。これらWRカウンタ(第3のカウント手段)608及びGWRカウンタ(第4のカウント手段)609で数えられるカウンタ値をそれぞれ、WRC値及びGWRC値とする。
また、カウンタ値加算部(第2のカウンタ値加算手段)610は、プログラム実行の終了時に、外部メモリ60の保証領域におけるWRC値の総和を算出するものとする。さらに、カウンタ値検証部(第2のカウンタ値検証手段)611は、カウンタ値加算部610から受け取ったWRC値の総和と、GWRカウンタ609から受け取ったGWRC値とを比較し、それらが一致した場合には、外部メモリ60においてデータ列の改ざんは行われていないと判定する。また、MAC値算出部621及びデータ列読み込み部606へ入力される、あるいはMAC値算出部621及びデータ列読み込み部606から送出されるのも同様に、WC値ではなくWRC値であるとする。
図19及び図20は、本実施形態に係るreplay attackの一形態を防ぐためにプログラム実行部40が行う処理の流れを示すフローチャートである。基本的な流れは前述の実施形態4と同様であるが、本実施形態においては書き出し及び読み込み処理の回数を数える、つまりWC値及びGWC値ではなくWRC値及びGWRC値を数える構成となっている。そのため、ステップS501において、WRカウンタ608がWRC値をカウントアップし、GWRカウンタ609がGWRC値をカウントアップして記憶する構成となっていること、さらにステップS551及びS552において、データ及びWRC値のMAC値を算出する構成となっていることが異なる。ただし、書き出しの時点では前述の実施形態4との差はないために、初期値を実施形態4と同じとすれば、図17の時刻t0で書き出されたデータAに含まれるWRC値は「1」であり、時刻t1で書き出されたデータBに含まれるWRC値は「2」である。また、GWRカウンタ609に記憶されているGWRC値は「2」である。
そして、図17の時刻t3における読み込み処理において、時刻t1とt3の間の任意の時刻t2において攻撃者による書き換えが行われなかった場合には、ステップS205においてデータ列読み込み部606により読み込まれたデータBに含まれるWRC値「2」がWRカウンタ608によりカウントアップされ「3」となる。また、それと同時に、GWRカウンタ609に記憶されているGWRC値も「2」から「3」へとカウントアップされる(ステップS502)。続いて、MAC値算出部621は、データ列読み込み部606から受け取ったデータ及びWRカウンタ608から受け取ったWRC値のMAC値を算出し、データ列生成部607に送出する。データ列生成部607は、データ列読み込み部606から受け取ったデータ、WRカウンタ608から受け取ったWRC値(「3」)及びMAC値算出部621から受け取ったMAC値をまとめて、時刻t3において読み込みが行われたアドレスに書き出す(ステップS503)。
それと異なり、図17の時刻t2において、攻撃者によりデータAへの書き換えが行われた場合には、ステップS205においてデータ列読み込み部606により読み込まれたデータAに含まれるWRC値「1」がWRカウンタ608によりカウントアップされ「2」となるが、GWRC値はその時点で記憶されている値「2」から「3」へとカウントアップされる(ステップS502)。つまり、攻撃者によるデータの改ざんが行われた場合には、この読み込みの時点でのWRカウンタ608とGWRカウンタ609とのカウンタ値に差が生じることとなる。
続いて、図17の時刻t2において攻撃者によるデータAへの書き換えが行われ、さらに、時刻t3とt5の間の任意の時刻t4において攻撃者によりデータBへの書き換えが行われた場合には、時刻t5の読み込み処理(ステップS504でYES)において、データBに含まれるWRC値「2」がWRカウンタ608によりカウントアップされ「3」となる。また、それと同時に、GWRC値はその時点でGWRカウンタ609に記憶されている値「3」から「4」へとカウントアップされる(ステップS502)。
それと異なり、時刻t2及びt4のいずれにおいても攻撃者によるデータの改ざんが行われていない場合には、時刻t3においてWRC値はデータBに含まれている値「2」から「3」へとカウントアップされ、さらに時刻t5においてWRC値はデータBに含まれている値「3」から「4」へとカウントアップされる。また、GWRカウンタ609に記憶されているGWRC値は、時刻t2及びt4においてデータの改ざんが行われたか否かに関わらず「4」である。
したがって、プログラム実行が終了すると、カウンタ値加算部610は、外部メモリ60の保証領域すべてのアドレスのWRC値の総和を求め、カウンタ値検証部611に送出する。カウンタ値検証部611は、カウンタ値加算部610から受け取ったWRC値の総和と、GWRカウンタ609から受け取ったGWRC値とを比較し、それらが一致した場合(上記の例では両者共に「4」)には(ステップS409でYES)、データが改ざんされることなくプログラムが正常に実行されたと判定し処理を終了する(ステップS410)。それと異なり、WRC値の総和とGWRC値とが一致していない場合(上記の例ではWRC値の総和が「3」でGWRC値が「4」)には(ステップS409でNO)、外部メモリ60においてデータが改ざんされたと判定し処理を終了する(ステップS411)。
以上説明したように、本実施形態によれば、外部メモリ60のあるアドレスに記憶されているデータ列を、当該アドレスに以前記憶されていたデータ列で上書きし、さらにプログラムの実行が終了する前に、さらに当該アドレスに正当なデータを上書きするような改ざんが行われた場合であっても、正当なデータ列と上書きされたデータ列とでは読み込み手段が外部メモリ60から読み込んだ回数が異なるため、それらデータ列に含まれる回数が異なり、データの改ざんが行われたことを有効かつ確実に検証することができる。また、本実施形態によれば、図17に示した形態のreplay attackのみならず、図7に示したspoofing attack、図10に示したsplicing attack、及び図13に示した形態のreplay attackをも有効に防ぐことができる。
[実施形態6]
以上説明したように実施形態5によれば、データとカウンタ値(WRC値)とのMAC値を算出し、その値も外部メモリ60内に記憶させる構成とすることで、図17に示した形態のreplay attackのみならず、図7に示したspoofing attack、図10に示したsplicing attack、及び図13に示した形態のreplay attackをも有効に防ぐことを可能とした。以下に、このMAC値を外部メモリ60内に記憶させることなく、上記の攻撃を有効に防ぐことが可能な他の実施形態について説明する。
図21は、本実施形態に係るプログラム実行部40を詳細に示した機能ブロック図である。データ列読み込み部632は、外部メモリ60の所定のアドレスからデータ列を読み込み、当該データ列に含まれるデータをキャッシュメモリ70及びデータ列生成部636に送出し、当該データ列に含まれるカウンタ値(CNT値)をCNTカウンタ633に送出する。また、データ列読み込み部632は、当該データ列に含まれるデータ及びCNT値をスクランブル関数演算部630に送出する。
CNTカウンタ(第3のカウント手段)633は、アドレス毎のカウンタであり、データ列読み込み部632からCNT値を受け取ると、その値に1を加算してデータ列生成部636及びスクランブル関数演算部630に送出する。つまり、CNT値は、書き出し処理あるいは読み込み処理が行われる度に、処理が行われたアドレス毎に1だけカウントアップされる。また、認証部80は、外部メモリ60内の保証領域のすべてのアドレスについて、書き出し及び読み込み処理が行われた回数を数えるGlobal CNTカウンタ(以下、GCNTカウンタという)(第4のカウント手段)638を備える。
データ列生成部636は、書き出し処理の際には、キャッシュメモリ70から読み込んだデータと、CNTカウンタ633から受け取ったCNT値とを1つのデータ列にまとめ、外部メモリ60の保証領域内の所定アドレスに書き出す。また、データ列生成部636は、読み込み処理の際には、データ列読み込み部632から受け取ったデータと、CNTカウンタ633から受け取ったCNT値とを1つのデータ列にまとめ、外部メモリ60の保証領域内の所定アドレスに書き出す。
スクランブル関数演算部(スクランブル関数演算手段)630は、読み込み処理の際には、データ列読み込み部632から受け取ったデータ及びCNT値に加え当該データ及びCNT値が記憶されていたアドレスに、書き出し処理の際には、キャッシュメモリから受け取ったデータ70及びCNTカウンタ633から受け取ったCNT値に加え当該データ及びCNT値が記憶されるアドレスに、スクランブル関数を演算し暗号化処理を施す。このとき、乱数生成部502から受け取った乱数を鍵として用いる。したがって、入力の引数(データ、CNT値及びアドレス)をどのように暗号化するかは鍵に依存するが、その値はCPU内で保持するため、外部の攻撃者は観測することができない。
ここで、スクランブル関数とは、入力の引数がわかっていても、鍵がわからなければ関数の出力値(SCR値とする)を知ることができない関数である。本実施形態においては、スクランブル関数の一例として、共通鍵暗号方式で用いられるAES(Advanced Encryption Standard)を用いる場合について説明する。
Readレジスタ(以下、Rレジスタという)(読み込み履歴記憶手段)634及びWriteレジスタ(以下、Wレジスタという)(書き出し履歴記憶手段)635は、キャッシュメモリ70と外部メモリ60の間の書き出し及び読み込みの履歴情報を保持する。これらレジスタには、1つ前のレジスタの値と、スクランブル関数演算部630から送出されたSCR値との排他的論理和の演算結果が保存される。
排他的論理和演算部(排他的論理和演算手段)631は、スクランブル関数演算部630から受け取ったスクランブル関数の演算結果であるSCR値と、Rレジスタ634あるいはWレジスタ635のレジスタ値との排他的論理和を演算し、Rレジスタ634あるいはWレジスタ635をその演算結果に更新する。ここで、排他的論理和とは、例えば、2入力の場合、どちらか一方の入力のみが真(「1」)のときに出力が真(「1」)となり、両方真(「1」)あるいは両方偽(「0」)の場合に出力が偽(「0」)となるような演算である。
レジスタ値比較部(履歴比較手段)637は、ノード10でのプログラム実行が終了し、実行証明を行う際に、Rレジスタ634及びWレジスタ635からレジスタ値を受け取り、それらが一致しているか否かを判定する。また、本実施形態においては、制御部部501が、カウンタ値判定手段及び判定手段としての機能を有する。
図22、図23及び図24は、それぞれ本実施形態に係るプログラム実行部40が行う読み込み、書き出し及び検証処理の流れを示すフローチャートである。本実施形態においては、サーバ20からプログラム実行証明が要求され、セキュアモードに切り替わった後に、まず、外部メモリ60内の保証領域の初期化を行う。これは、CPU50が、保証領域内のデータ及びカウンタ値(CNT値)を、例えばすべて「0」にすることである。また、同時に、Rレジスタ634、Wレジスタ635及びGCNTカウンタ638の値もすべて初期化される。
まず、図22に示した、外部メモリ60からキャッシュメモリ70へのデータの読み込み処理から説明する。データ列読み込み部632は、外部メモリ60の所定のアドレスからデータ列を読み込む(ステップS601)と、当該データ列に含まれるデータをキャッシュメモリ70に送出する(ステップS610)。これで、外部メモリ60からキャッシュメモリ70への読み込み処理は完了するが、本実施形態においては、その処理と並行して以下の処理も行うものとする。
スクランブル関数演算部630は、データ列読み込み部632から受け取ったデータ及びCNT値、さらに当該データ及びCNT値が記憶されていたアドレスをまとめてそれらにスクランブル関数を演算し、出力結果であるSCR値を排他的論理和演算部631に送出する。排他的論理和演算部631は、Rレジスタ634から現在のレジスタ値を受け取り、当該レジスタ値と、スクランブル関数演算部630から受け取ったSCR値との排他的論理和を演算する。そして、排他的論理和演算部631は、得られた演算結果をRレジスタ634に上書きすることで、Rレジスタ634のレジスタ値を更新する(ステップS602)。
続いて、CNTカウンタ633は、データ列読み込み部632から受け取ったCNT値に1を加算し(ステップS603)、データ列生成部636に送出する。データ列生成部636は、データ列読み込み部632から受け取ったデータと、CNTカウンタ633から受け取ったCNT値とを1つにまとめ、データ列読み込み部632により読み込まれた際のデータ列が記憶されていたアドレスに書き出す(ステップS604)。
次に、排他的論理和演算部631は、データ列読み込み部632から受け取ったデータ、CNTカウンタ633から受け取ったカウントアップされた後のCNT値、さらに当該データが記憶されていたアドレスをまとめてそれらにスクランブル関数を演算し、SCR値を排他的論理和演算部631に送出する。排他的論理和演算部631は、Wレジスタ635から現在のレジスタ値を受け取り、当該レジスタ値と、スクランブル関数演算部630から受け取ったSCR値との排他的論理和を演算する。そして、排他的論理和演算部631は、得られた演算結果をWレジスタ635に上書きすることで、Wレジスタ635のレジスタ値を更新する(ステップS605)。最後に、制御部501は、GCNTカウンタ638のカウンタ値であるGCNT値の値に1を加算し(ステップS606)、読み込み処理を終了する。
次に、図23に示した、キャッシュメモリ70から外部メモリ60へのデータの書き出し処理を説明する。まず、データ列読み込み部632は、外部メモリ60内の新しいデータが記憶されるアドレスからデータ列を読み込む(ステップS701)と、当該データ列に含まれるデータ及びCNT値をスクランブル関数演算部630に送出する。以下、図22のステップS602と同様にして、Rレジスタ634のレジスタ値が更新される(ステップS702)。
続いて、CNTカウンタ633は、データ列読み込み部632から受け取ったCNT値に1を加算し(ステップS703)、データ列生成部636に送出する。データ列生成部636は、キャッシュメモリ70から受け取った新しいデータと、CNTカウンタ633から受け取ったCNT値とを1つにまとめ、データ列読み込み部632により読み込まれた際のデータ列が記憶されていたアドレスに書き出す(ステップS704)。
次に、排他的論理和演算部631は、キャッシュメモリ70から受け取った新しいデータ、CNTカウンタ633から受け取ったカウントアップされた後のCNT値、さらに当該データが記憶されていたアドレスをまとめてそれらにスクランブル関数を演算し、SCR値を排他的論理和演算部631に送出する。排他的論理和演算部631は、Wレジスタ635から現在のレジスタ値を受け取り、当該レジスタ値と、スクランブル関数演算部630から受け取ったSCR値との排他的論理和を演算する。そして、排他的論理和演算部631は、得られた演算結果をWレジスタ635に上書きすることで、Wレジスタ635のレジスタ値を更新する(ステップS705)。最後に、制御部501は、GCNTカウンタ638のカウンタ値であるGCNT値の値に1を加算し(ステップS706)、書き出し処理を終了する。
最後に、セキュアモードが終了する際に行われるプログラムの実行証明の流れを、図24を用いて説明する。まず、データ列読み込み部632は、外部メモリ60の、あるアドレスからデータ及びCNT値を読み込む(ステップS801)と、当該データ列に含まれるデータ及びCNT値をスクランブル関数演算部630に送出する。以下、図20のステップS602及び図23のステップS702と同様にして、Rレジスタ634のレジスタ値が更新される(ステップS802)。続いて、制御部501は、GCNTカウンタ638に記憶されているGCNT値から前記CNT値を減算する(ステップS803)。以上のステップS801からS803までの処理は、すべてある特定のアドレスについて行われるが、それらの処理が保証領域のすべてのアドレスに関して行われると(ステップS804でYES)、以降の検証処理に移行する。
続いて、制御部501は、GCNTカウンタ638を参照し、そこに記憶されているGCNT値が「0」か否かを判定する(ステップS805)。前述したように、CNT値はアドレス毎に数えられており、読み込み又は書き出し処理が行われる度にその値は1ずつ増えていく。そして、GCNTカウンタ638が記憶しているGCNT値は、保証領域のすべてのアドレスについて、読み込み又は書き出し処理が行われた回数の総和である。そのため、外部の攻撃者が外部メモリ60にアクセスし、データ列の改ざんを行っていなければ、ステップS805においてGCNT値は「0」になるはずである。したがって、ステップS805において、GCNT値が「0」でない場合には(ステップS805でNO)、制御部501はデータの改ざんが行われたと判定し(ステップS808)、処理を終了する。
それと異なり、ステップS805において、GCNT値が「0」の場合には(ステップS805でYES)、レジスタ値比較部637においてRレジスタ634及びWレジスタ635のレジスタ値が一致しているか否かが判定される(ステップS806)。プログラム実行時の読み込み及び書き出し処理により、Wレジスタ635のレジスタ値は外部メモリ60に記憶されている最新のデータ列に対応するところまで更新されている。しかしながら、Rレジスタ634のレジスタ値はその1つ前の読み込みあるいは書き出し処理の時点までしか更新されていない。
そのため、ステップS802においてRレジスタ634のレジスタ値を、外部メモリ60に記憶されている最新のデータ列に対応するところまで更新した。これにより、外部の攻撃者が外部メモリ60にアクセスし、データ列の改ざんを行っていなければ、ステップS806においてRレジスタ634及びWレジスタ635のレジスタ値は一致するはずである。したがって、ステップS806において、レジスタ値が一致しない場合には(ステップS806でNO)、データの改ざんが行われたと判定し(ステップS808)、処理を終了する。それに対して、レジスタ値が一致した場合には(ステップS806でYES)、制御部501はデータの改ざんは行われていないと判定し、正常終了する(ステップS807)。
以上説明したように本実施形態においては、ステップS805においてGCNT値が「0」になるか否かでデータ列の改ざんが行われたか否かを判定するとして説明したが、それに限られることなく、プログラムの実行が終了した時点で、保証領域のすべてのアドレスのCNT値を加算し、その値とGCNT値とが一致するか否かでデータ列の改ざんが行われたか否かを判定する構成としてもよい。
以上説明したように本実施形態によれば、ハッシュ関数のような一方向性関数を演算し、外部メモリ60に書き出すのではなく、共通鍵暗号方式を用いているため、高速に処理が行える上に、メモリ容量が節約できる。
[他の好ましい実施形態]
(A)以上説明した実施形態4及び5においては、攻撃者はCPUが備えられたチップから外部に出るデータバス、アドレスバス、メモリ制御信号等を観測することで、アドレス毎の書き出し及び読み込みのアクセス回数がわかる。その場合、WRC値が桁溢れしてしまうと、攻撃者はWRC値が同じでデータとMAC値とは異なるデータを複数観測して記録することができる。したがって、WRC値がある値のとき、事前に記録しておいた、データとMAC値は異なるが、WRC値が同じであるデータと差し替えるというreplay attackが可能である。
このようなreplay attackを防ぐためには、メモリアクセス毎にカウンタ値(WC値及びGWC値、あるいはWRC値及びGWRC値)に1だけ加算するのではなく、メモリアクセス毎に乱数生成部502で生成した乱数をそれぞれ加算すればよい。各アドレスのカウンタ値(WC値及びGWC値、あるいはWRC値及びGWRC値)を同じビット幅にすることで、桁溢れしても同じタイミングで同じ値だけ桁溢れするので、整合性を保つことができる。
(B)以上説明した実施形態4及び5においては、外部メモリ60への書き出しや読み込みの回数を、WC値あるいはWRC値として数える構成とした。その場合、例えば、キャッシュアルゴリズムが悪かったり、実行時間が長かったりすると、WC値あるいはWRC値は増え続けていくが、例えば、WC値あるいはWRC値に32bitを割り当てるとすれば、その値が桁溢れすることは考えにくい。しかしながら、桁溢れした場合に、鍵生成部503において鍵を新たに生成し、その鍵を用いて保証領域内のデータ列に含まれているMAC値を更新し、外部メモリ60に再度記憶させることで、桁溢れした場合にも対応可能である。
本発明の一実施形態に係るコンピュータシステムの概略構成図である。 本発明の一実施形態に係るコンピュータシステムの機能ブロック図である。 本発明の一実施形態に係るコンピュータシステムの動作について説明するためのフローチャートである。 実施形態1に係るプログラム実行部40を詳細に示した機能ブロック図である。 図4に示した実行証明命令列の一実施形態を示す模式図である。 CPUが有するモードの一実施形態を示す模式図である。 spoofing attackと呼ばれる攻撃を説明するための模式図である。 実施形態2に係るプログラム実行部40を詳細に示した機能ブロック図である。 spoofing attackを防ぐためにプログラム実行部40が行う処理の流れを示すフローチャートである。 splicing attackと呼ばれる攻撃を説明するための模式図である。 実施形態3に係るプログラム実行部40を詳細に示した機能ブロック図である。 splicing attackを防ぐためにプログラム実行部40が行う処理の流れを示すフローチャートである。 再生攻撃(replay attack)と呼ばれる攻撃の一形態を説明するための模式図である。 実施形態4に係るプログラム実行部40を詳細に示した機能ブロック図である。 replay attackの一形態を防ぐためにプログラム実行部40が行う処理の流れを示すフローチャートである。 replay attackの一形態を防ぐためにプログラム実行部40が行う処理の流れを示すフローチャートである。 再生攻撃(replay attack)と呼ばれる攻撃の他の一形態を説明するための模式図である。 実施形態5に係るプログラム実行部40を詳細に示した機能ブロック図である。 replay attackの他の一形態を防ぐためにプログラム実行部40が行う処理の流れを示すフローチャートである。 replay attackの他の一形態を防ぐためにプログラム実行部40が行う処理の流れを示すフローチャートである。 実施形態6に係るプログラム実行部40を詳細に示した機能ブロック図である。 実施形態6に係る外部メモリ60からキャッシュメモリ70へのデータの読み込み処理の流れを示すフローチャートである。 実施形態6に係るキャッシュメモリ70から外部メモリ60へのデータの書き出し処理の流れを示すフローチャートである。 実施形態6に係るプログラム実行証明処理の流れを示すフローチャートである。
符号の説明
10 ノード
101 通信制御部
102 プログラム記憶部
103 ハッシュ値算出部
104 デジタル署名実行部
105 秘密鍵記憶部
106 デジタル署名記憶部
20 サーバ
201 通信制御部
202 プログラム記憶部
203 ハッシュ値算出部
204 ハッシュ値比較部
205 デジタル署名検証部
206 公開鍵記憶部
40 プログラム実行部

Claims (10)

  1. 少なくとも1台のサーバ端末とネットワーク接続可能に構成され、前記サーバ端末から受け取ったプログラムを実行した後、少なくとも当該プログラムの実行結果を含む結果情報を前記サーバ端末に送出可能なノード端末に備えられ、外部から直接アクセスすることができない耐タンパ性を有するマイクロプロセッサであって、
    前記サーバ端末から送出されたプログラムを記憶する第1の記憶手段と、
    当該第1の記憶手段に記憶されたプログラムを実行する処理手段と、
    前記プログラムの実行が終了した時点で、前記処理手段により実行されたプログラムに所定の第1の一方向性関数を演算する第1の一方向性関数演算手段と、
    前記ノード端末に固有であり、公開鍵暗号方式で用いられる秘密鍵を記憶する秘密鍵記憶手段と、
    前記秘密鍵記憶手段に記憶されている秘密鍵を用いて、前記第1の一方向性関数が演算されたプログラムと、前記処理手段から得られるプログラムの実行結果とにデジタル署名を行う署名実行手段と、
    前記署名実行手段によりデジタル署名が行われたプログラムとプログラムの実行結果とを前記結果情報としてサーバ端末に送出する送出手段と、
    を備えることを特徴とするマイクロプロセッサ。
  2. 少なくとも1台のサーバ端末とネットワーク接続可能に構成され、前記サーバ端末から受け取ったプログラムを実行した後、少なくとも当該プログラムの実行結果を含む結果情報を前記サーバ端末に送出可能なノード端末に備えられ、外部から直接アクセスすることができない耐タンパ性を有するマイクロプロセッサであって、
    前記サーバ端末から送出されたプログラムを記憶する第1の記憶手段と、
    当該第1の記憶手段に記憶されたプログラムを実行する処理手段と、
    前記プログラムの実行が終了した時点で、前記処理手段により実行されたプログラムと当該プログラムの実行結果とに所定の第1の一方向性関数を演算する第1の一方向性関数演算手段と、
    前記ノード端末に固有であり、公開鍵暗号方式で用いられる秘密鍵を記憶する秘密鍵記憶手段と、
    前記秘密鍵記憶手段に記憶されている秘密鍵を用いて、前記第1の一方向性関数が演算されたプログラムとプログラムの実行結果とにデジタル署名を行う署名実行手段と、
    前記処理手段から得られるプログラムの実行結果並びに前記署名実行手段によりデジタル署名が行われたプログラムとプログラムの実行結果とを前記結果情報としてサーバ端末に送出する送出手段と、
    を備えることを特徴とするマイクロプロセッサ。
  3. 請求項1又は2に記載のマイクロプロセッサであって、
    前記マイクロプロセッサは、前記ノード端末に備えられた第2の記憶手段と接続可能に構成され、少なくとも当該第2の記憶手段の予め指定されたアドレス範囲である保証領域との間でデータのやり取りが可能に構成されており、
    前記第2の記憶手段の保証領域との間でデータのやり取りが可能な第3の記憶手段と、
    所定の第2の一方向性関数を演算する際に用いる鍵を生成する鍵生成手段と、
    前記第3の記憶手段から送出されたデータを受け取り、前記鍵生成手段により生成された鍵を用いて、前記第2の一方向性関数を当該データに演算した結果である関数値を算出する関数値算出手段と、
    前記第3の記憶手段から送出されたデータと、前記関数値算出手段により算出された当該データの関数値とを1つにまとめ、共通鍵暗号方式を用いて暗号化したデータ列を生成するデータ列生成手段と、
    前記保証領域の指定されたアドレスに、前記データ列生成手段により生成されたデータ列を書き出す書き出し手段と、
    前記保証領域の指定されたアドレスからデータ列を読み込む読み込み手段と、
    前記読み込み手段により読み込まれたデータ列を共通鍵暗号方式を用いて復号化する復号化手段と、
    前記読み込み手段により読み込まれ前記復号化手段により復号化されたデータ列に含まれる関数値と、前記関数値算出手段により算出された、前記読み込み手段により読み込まれたデータ列に含まれるデータの関数値とを比較し、それらが一致している場合に当該読み込まれたデータ列は改ざんされていないと判定する検証手段と、
    をさらに備えることを特徴とするマイクロプロセッサ。
  4. 乱数を生成する乱数生成手段をさらに備え、
    前記鍵生成手段は、前記第3の記憶手段から送出されたデータが書き出される前記保証領域のアドレスを前記第3の記憶手段から受け取り、当該アドレスと前記乱数生成手段により生成された乱数とに基づいて、鍵を生成することを特徴とする請求項3記載のマイクロプロセッサ。
  5. 前記書き出し手段が前記保証領域に書き出しを行った回数を前記保証領域のアドレス毎に数える第1のカウント手段をさらに備え、
    前記データ列生成手段は、前記第3の記憶手段から送出されたデータと、前記関数値算出手段により算出された当該データの関数値とに加え、前記第1のカウント手段により数えられた回数を1つにまとめ、共通鍵暗号方式を用いて暗号化したデータ列を生成するものであり、
    前記書き出し手段が前記第2の記憶手段に書き出しを行った回数の総和を数える第2のカウント手段と、
    前記プログラムの実行が終了した際に、前記読み込み手段が前記保証領域から読み込み、前記復号化手段が復号化したデータ列に含まれる、前記書き出し手段が前記保証領域に書き出しを行った回数を前記保証領域内のすべてのアドレスについて加算し、当該回数の総和を算出する第1のカウンタ値加算手段と、
    前記第1のカウンタ値加算手段により算出された回数の総和と、前記第2のカウント手段により数えられた回数の総和とを比較し、それらが一致している場合に当該読み込まれたデータは改ざんされていないと判定する第1のカウンタ値検証手段と、
    をさらに備えることを特徴とする請求項3乃至4のいずれかに記載のマイクロプロセッサ。
  6. 前記書き出し手段がデータ列を書き出す際、当該書き出しの前に前記読み込み手段によるデータ列の読み込みが行われる構成とされており、
    前記読み込み手段が前記保証領域から読み込みを行った回数を前記保証領域のアドレス毎に数える第3のカウント手段をさらに備え、
    前記データ列生成手段は、前記第3の記憶手段から送出されたデータと、前記関数値算出手段により算出された当該データの関数値とに加え、前記第3のカウント手段により数えられた回数を1つにまとめ、共通鍵暗号方式を用いて暗号化したデータ列を生成するものであり、
    前記読み込み手段が前記第2の記憶手段から読み込みを行った回数の総和を数える第4のカウント手段と、
    前記プログラムの実行が終了した際に、前記読み込み手段が前記保証領域から読み込み、前記復号化手段が復号化したデータ列に含まれる、前記読み込み手段が前記保証領域から読み込みを行った回数を前記保証領域内のすべてのアドレスについて加算し、当該回数の総和を算出する第2のカウンタ値加算手段と、
    前記第2のカウンタ値加算手段により算出された回数の総和と、前記第2のカウント手段により数えられた回数の総和とを比較し、それらが一致している場合に当該読み込まれたデータは改ざんされていないと判定する第2のカウンタ値検証手段と、
    をさらに備えることを特徴とする請求項3乃至4のいずれかに記載のマイクロプロセッサ。
  7. 請求項1又は2に記載のマイクロプロセッサであって、
    前記マイクロプロセッサは、前記ノード端末に備えられた第2の記憶手段と接続可能に構成され、少なくとも当該第2の記憶手段の予め指定されたアドレス範囲である保証領域との間でデータのやり取りが可能に構成されており、
    前記保証領域との間でデータのやり取りが可能な第3の記憶手段と、
    前記保証領域へ書き出されるデータ列の履歴情報を記憶する書き出し履歴記憶手段と、
    前記保証領域から読み込まれるデータ列の履歴情報を記憶する読み込み履歴記憶手段と、
    前記保証領域の指定されたアドレスからデータ列を読み込む読み込み手段と、
    前記読み込み手段により読み込まれたデータ列を共通鍵暗号方式を用いて復号化する復号化手段と、
    前記読み込み手段が前記保証領域から読み込みを行った回数を前記保証領域のアドレス毎に数える第3のカウント手段と、
    前記読み込み手段が前記保証領域から読み込みを行った回数の総和を数える第4のカウント手段と、
    乱数を発生する乱数発生手段と、
    前記復号化手段から受け取ったデータ列に含まれるデータ及び回数、並びに当該データ列が記憶されていたアドレスとに、前記乱数発生手段から受け取った乱数を鍵として所定の暗号化処理を施した暗号化データを生成するスクランブル関数演算手段と、
    前記スクランブル関数演算手段から受け取った暗号化データと、前記読み込み履歴記憶手段から受け取った履歴情報との排他的論理和を計算し、当該計算結果を前記読み込み履歴記憶手段に記憶させる排他的論理和演算手段と、
    書き出し処理が指示された場合には前記第3の記憶手段から送出されたデータであり、読み込み処理が指示された場合には前記保証領域から読み込まれたデータであるいずれか一方のデータと、前記第3のカウント手段から受け取った回数とを1つにまとめ、共通鍵暗号方式を用いて暗号化したデータ列を生成するデータ列生成手段と、
    前記保証領域の指定されたアドレスに、前記データ列生成手段により生成されたデータ列を書き出す書き出し手段と、
    をさらに備え、
    前記書き出し手段がデータ列を書き出す際、当該書き出しの前に前記読み込み手段によるデータ列の読み込みが行われる構成とされており、
    前記排他的論理和演算手段は、さらに、書き出し処理が指示された場合には前記第3の記憶手段から送出されたデータであり、読み込み処理が指示された場合には前記保証領域から読み込まれたデータであるいずれか一方のデータと、前記第3のカウント手段から受け取った回数と、当該データが記憶されていたあるいは書き出されるアドレスとに、前記スクランブル関数演算手段において暗号化処理が施された暗号化データと、前記書き出し履歴記憶手段から受け取った履歴情報との排他的論理和を計算し、当該計算結果を前記書き出し履歴記憶手段に記憶させる処理も行う構成とされ、
    前記プログラムの実行が終了した際に、前記読み込み手段により前記保証領域内のアドレスからデータ列が読み込まれ、前記復号化手段により当該データ列の復号化が行われた後、前記スクランブル関数演算手段により、当該データ列に含まれるデータ及び回数と当該データ列が記憶されていたアドレスとに暗号化処理が施され、引き続き前記排他的論理和演算手段により前記読み込み履歴記憶手段の更新が行われると共に、前記第4のカウント手段に記憶されている回数の総和から前記回数が減算される処理が、前記保証領域内のすべてのアドレスについて行われるものであり、
    前記マイクロプロセッサは、
    前記前記第4のカウント手段に記憶されている回数の総和がゼロか否かを判定するカウンタ値判定手段と、
    前記読み込み履歴記憶手段と書き出し履歴記憶手段の記憶内容が一致するか否かを判定する履歴比較手段と、
    前記カウンタ値判定手段により前記回数の総和がゼロであると判定され、かつ前記履歴比較手段により前記読み込み履歴記憶手段と書き出し履歴記憶手段の記憶内容が一致すると判定された場合に、プログラム実行時に前記保証領域内に記憶されたデータ列は改ざんされていないと判定する判定手段と、
    をさらに備えることを特徴とするマイクロプロセッサ。
  8. 少なくとも1台のサーバ端末とネットワーク接続可能に構成され、前記サーバ端末から送出されたプログラムを受け取り、当該プログラムを請求項1乃至7のいずれかに記載のマイクロプロセッサにより実行することを特徴とするノード端末。
  9. プログラムを送出し、当該プログラムの実行を指示するサーバ端末と、
    前記サーバ端末から受け取ったプログラムを実行した後、少なくとも当該プログラムの実行結果を含む結果情報を前記サーバ端末に送出する少なくとも1台の請求項8記載のノード端末と、をネットワーク接続したコンピュータシステムであって、
    前記サーバ端末は、
    前記ノード端末に固有の秘密鍵に対応する公開鍵を記憶する公開鍵記憶手段と、
    前記公開鍵記憶手段に記憶された公開鍵を用いて、前記ノード端末から受け取ったデジタル署名を検証し、前記結果情報から前記第1の一方向性関数演算手段の演算結果を抽出する署名検証手段と、
    前記サーバ端末から送出したプログラムに前記第1の一方向性関数を演算する第2の一方向性関数演算手段と、
    前記第2の一方向性関数演算手段の演算結果と、前記署名検証手段により抽出された演算結果とを比較し、それらが一致している場合に前記プログラムはノード端末において正常に実行されたと判定する比較手段と、
    を備えることを特徴とするコンピュータシステム。
  10. プログラムを送出し、当該プログラムの実行を指示するサーバ端末と、
    前記サーバ端末から受け取ったプログラムを実行した後、少なくとも当該プログラムの実行結果を含む結果情報を前記サーバ端末に送出する少なくとも1台のノード端末と、をネットワーク接続したコンピュータシステムにおけるプログラム実行証明方法であって、
    前記ノード端末は、
    前記サーバ端末から送出されたプログラムを記憶する第1の記憶工程と、
    当該第1の記憶工程により記憶されたプログラムを実行する処理工程と、
    前記プログラムの実行が終了した時点で、前記処理工程により実行されたプログラムに所定の第1の一方向性関数を演算する第1の一方向性関数演算工程と、
    前記ノード端末に固有であり、公開鍵暗号方式で用いられる秘密鍵を記憶する秘密鍵記憶工程と、
    前記ノード端末に固有のデジタル署名として、前記秘密鍵記憶工程により記憶されている秘密鍵を用いて、前記第1の一方向性関数が演算されたプログラム及び前記プログラムの実行結果の暗号化を行う暗号化工程と、
    を備え、
    前記サーバ端末は、
    前記ノード端末に固有の秘密鍵に対応する公開鍵を記憶する公開鍵記憶工程と、
    前記公開鍵記憶工程により記憶された公開鍵を用いて、前記ノード端末から受け取ったデジタル署名を検証し、前記第1の一方向性関数演算工程による演算結果を抽出する署名検証工程と、
    前記サーバ端末から送出したプログラムに所定の第1の一方向性関数を演算する第2の一方向性関数演算工程と、
    前記第2の一方向性関数演算工程による演算結果と、前記署名検証工程により抽出された演算結果とを比較し、それらが一致している場合に前記プログラムはノード端末において正常に実行されたと判定する比較工程と、
    を備えることを特徴とするプログラム実行証明方法。
JP2005013190A 2005-01-20 2005-01-20 マイクロプロセッサ、ノード端末、コンピュータシステム及びプログラム実行証明方法 Pending JP2006203564A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005013190A JP2006203564A (ja) 2005-01-20 2005-01-20 マイクロプロセッサ、ノード端末、コンピュータシステム及びプログラム実行証明方法
US11/182,049 US7577852B2 (en) 2005-01-20 2005-07-13 Microprocessor, a node terminal, a computer system and a program execution proving method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005013190A JP2006203564A (ja) 2005-01-20 2005-01-20 マイクロプロセッサ、ノード端末、コンピュータシステム及びプログラム実行証明方法

Publications (1)

Publication Number Publication Date
JP2006203564A true JP2006203564A (ja) 2006-08-03

Family

ID=36685332

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005013190A Pending JP2006203564A (ja) 2005-01-20 2005-01-20 マイクロプロセッサ、ノード端末、コンピュータシステム及びプログラム実行証明方法

Country Status (2)

Country Link
US (1) US7577852B2 (ja)
JP (1) JP2006203564A (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008263577A (ja) * 2007-04-11 2008-10-30 Cyberlink Corp 暗号化されたプログラムを実行するシステムおよび方法
JP2010086309A (ja) * 2008-09-30 2010-04-15 Dainippon Printing Co Ltd 携帯型コンテンツ管理装置
WO2010134192A1 (ja) * 2009-05-22 2010-11-25 三菱電機株式会社 電子機器及び鍵生成プログラム及び記録媒体及び鍵生成方法
JP2011155542A (ja) * 2010-01-28 2011-08-11 Kddi Corp 撮影写真の証拠保全システム、撮影写真の証拠保全方法およびプログラム
JP2012068959A (ja) * 2010-09-24 2012-04-05 Toshiba Corp メモリ管理装置及びメモリ管理方法
JP2012226711A (ja) * 2011-04-22 2012-11-15 Sony Corp 情報処理装置および情報処理方法
WO2022162797A1 (ja) * 2021-01-27 2022-08-04 日本電信電話株式会社 情報処理装置、プログラム実行システム、情報処理方法、及びプログラム

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007214766A (ja) * 2006-02-08 2007-08-23 Konica Minolta Business Technologies Inc 画像データ処理装置、画像データ処理方法、プログラム及び記録媒体
EP1879323B1 (en) * 2006-07-11 2015-09-09 Sap Se A method and system for protecting path and data of a mobile agent within a network system
US20080082819A1 (en) * 2006-09-28 2008-04-03 Jack Brizek Authenticating data returned from non-volatile memory commands
US8433927B2 (en) * 2007-05-29 2013-04-30 International Business Machines Corporation Cryptographically-enabled privileged mode execution
US8332635B2 (en) * 2007-05-29 2012-12-11 International Business Machines Corporation Updateable secure kernel extensions
US8422674B2 (en) * 2007-05-29 2013-04-16 International Business Machines Corporation Application-specific secret generation
US8166304B2 (en) * 2007-10-02 2012-04-24 International Business Machines Corporation Support for multiple security policies on a unified authentication architecture
US8332636B2 (en) * 2007-10-02 2012-12-11 International Business Machines Corporation Secure policy differentiation by secure kernel design
US20090125562A1 (en) * 2007-11-08 2009-05-14 International Business Machines Corporation Methods and systems involving checking memory integrity
JP2009146548A (ja) * 2007-12-18 2009-07-02 Toshiba Corp 不揮発性半導体記憶装置
JP4998314B2 (ja) * 2008-02-19 2012-08-15 コニカミノルタホールディングス株式会社 通信制御方法および通信制御プログラム
CN101299849B (zh) * 2008-04-25 2010-05-12 中兴通讯股份有限公司 一种WiMAX终端及其启动方法
US8776247B2 (en) * 2008-08-22 2014-07-08 Telit Automotive Solutions Nv Verification of process integrity
US8589698B2 (en) * 2009-05-15 2013-11-19 International Business Machines Corporation Integrity service using regenerated trust integrity gather program
CN101848049A (zh) * 2010-03-18 2010-09-29 鸿富锦精密工业(深圳)有限公司 基于数字广播的信息服务系统
JP5684514B2 (ja) * 2010-08-19 2015-03-11 株式会社東芝 冗長化制御システム、及びその演算データの伝送方法
WO2012047200A1 (en) * 2010-10-05 2012-04-12 Hewlett-Packard Development Company, L. P. Scrambling an address and encrypting write data for storing in a storage device
US9092644B2 (en) * 2011-12-28 2015-07-28 Intel Corporation Method and system for protecting memory information in a platform
JP2014048414A (ja) * 2012-08-30 2014-03-17 Sony Corp 情報処理装置、情報処理システム、情報処理方法及びプログラム
US9298947B2 (en) 2013-02-07 2016-03-29 Qualcomm Incorporated Method for protecting the integrity of a fixed-length data structure
WO2015157842A1 (en) * 2014-04-16 2015-10-22 Elliptic Technologies Inc. Secured memory system and method therefor
US10019603B2 (en) * 2014-04-16 2018-07-10 Synopsys, Inc. Secured memory system and method therefor
IL234956A (en) * 2014-10-02 2017-10-31 Kaluzhny Uri Data bus protection with enhanced key entropy
US9626119B2 (en) * 2014-11-14 2017-04-18 Intel Corporation Using counters and a table to protect data in a storage device
US9672351B2 (en) * 2015-02-02 2017-06-06 Qualcomm Incorporated Authenticated control stacks
US9934412B2 (en) 2015-06-23 2018-04-03 Microsoft Technology Licensing, Llc Implementing replay protected storage
US10652319B2 (en) * 2015-12-16 2020-05-12 Dell Products L.P. Method and system for forming compute clusters using block chains
US11397692B2 (en) * 2018-06-29 2022-07-26 Intel Corporation Low overhead integrity protection with high availability for trust domains
US20200242265A1 (en) * 2019-01-30 2020-07-30 EMC IP Holding Company LLC Detecting abnormal data access patterns
US11743053B2 (en) * 2019-12-03 2023-08-29 Keisuke Kido Electronic signature system and tamper-resistant device

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000339153A (ja) * 1999-05-25 2000-12-08 Nippon Telegr & Teleph Corp <Ntt> プログラム検証方法及び装置及びプログラム検証プログラムを格納した記憶媒体
JP2001236314A (ja) * 2000-02-24 2001-08-31 Mitsubishi Electric Corp 不正通信ソフトウェア検出方法
JP2002108811A (ja) * 2000-07-24 2002-04-12 Sony Corp データ処理装置およびデータ処理方法、並びにプログラム提供媒体
JP2003140971A (ja) * 2001-11-05 2003-05-16 Mitsubishi Electric Corp データ改竄検出システム

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AR003524A1 (es) * 1995-09-08 1998-08-05 Cyber Sign Japan Inc Un servidor de verificacion para ser utilizado en la autenticacion de redes de computadoras.
US5892899A (en) * 1996-06-13 1999-04-06 Intel Corporation Tamper resistant methods and apparatus
US5841869A (en) * 1996-08-23 1998-11-24 Cheyenne Property Trust Method and apparatus for trusted processing
US6477648B1 (en) * 1997-03-23 2002-11-05 Novell, Inc. Trusted workstation in a networked client/server computing system
JPH10301773A (ja) * 1997-04-30 1998-11-13 Sony Corp 情報処理装置および情報処理方法、並びに記録媒体
US6308270B1 (en) * 1998-02-13 2001-10-23 Schlumberger Technologies, Inc. Validating and certifying execution of a software program with a smart card
AU6401999A (en) * 1998-09-28 2000-04-17 Argus Systems Group, Inc. Trusted compartmentalized computer operating system
US7055040B2 (en) * 1999-04-02 2006-05-30 Hewlett-Packard Development Company, L.P. Method and apparatus for uniquely and securely loading software to an individual computer
US6651171B1 (en) * 1999-04-06 2003-11-18 Microsoft Corporation Secure execution of program code
KR100359928B1 (ko) * 2000-07-03 2002-11-07 주식회사 모빌탑 휴대통신단말기용 콘텐츠 프로그램 전송방법 및 그 실행방법
JPWO2002057904A1 (ja) * 2001-01-19 2004-05-27 富士通株式会社 ダウンロード機能を有する制御装置
GB2372595A (en) * 2001-02-23 2002-08-28 Hewlett Packard Co Method of and apparatus for ascertaining the status of a data processing environment.
US7181747B2 (en) * 2001-10-01 2007-02-20 Canon Kabushiki Kaisha Method and device for executing a function with selection and sending of multiple results in a client-server environment
JP2003216448A (ja) * 2002-01-17 2003-07-31 Ntt Docomo Inc 移動通信端末及びデータ送信方法
US7487365B2 (en) * 2002-04-17 2009-02-03 Microsoft Corporation Saving and retrieving data based on symmetric key encryption
US7165135B1 (en) * 2002-04-18 2007-01-16 Advanced Micro Devices, Inc. Method and apparatus for controlling interrupts in a secure execution mode-capable processor
US7603551B2 (en) * 2003-04-18 2009-10-13 Advanced Micro Devices, Inc. Initialization of a computer system including a secure execution mode-capable processor
WO2003090052A2 (en) * 2002-04-18 2003-10-30 Advanced Micro Devices Inc. A computer system including a secure execution mode - capable cpu and a security services processor connected via a secure communication path
US7130977B1 (en) * 2002-04-18 2006-10-31 Advanced Micro Devices, Inc. Controlling access to a control register of a microprocessor
US20030226014A1 (en) * 2002-05-31 2003-12-04 Schmidt Rodney W. Trusted client utilizing security kernel under secure execution mode
JP3864249B2 (ja) * 2002-06-04 2006-12-27 インターナショナル・ビジネス・マシーンズ・コーポレーション 暗号通信システム、その端末装置及びサーバ
US7437752B2 (en) * 2002-09-23 2008-10-14 Credant Technologies, Inc. Client architecture for portable device with security policies
US7318155B2 (en) * 2002-12-06 2008-01-08 International Business Machines Corporation Method and system for configuring highly available online certificate status protocol responders
US7305554B2 (en) * 2002-12-16 2007-12-04 Alcatel Canada Inc. Dynamic acquisition of state during security system reconfiguration
US7603704B2 (en) * 2002-12-19 2009-10-13 Massachusetts Institute Of Technology Secure execution of a computer program using a code cache
US7594111B2 (en) * 2002-12-19 2009-09-22 Massachusetts Institute Of Technology Secure execution of a computer program
JP3880933B2 (ja) * 2003-01-21 2007-02-14 株式会社東芝 耐タンパマイクロプロセッサ及びキャッシュメモリ搭載プロセッサによるデータアクセス制御方法
JP4593078B2 (ja) * 2003-02-28 2010-12-08 株式会社日立製作所 異なる計算機環境におけるジョブ実行方法及びそのプログラム
JP2004304304A (ja) * 2003-03-28 2004-10-28 Fujitsu Ltd 電子署名生成方法,電子署名検証方法,電子署名生成依頼プログラム,及び電子署名検証依頼プログラム
US7334123B2 (en) * 2003-05-02 2008-02-19 Advanced Micro Devices, Inc. Computer system including a bus bridge for connection to a security services processor
US7877604B2 (en) * 2003-05-16 2011-01-25 Intrinsic Id B.V. Proof of execution using random function
US7210009B2 (en) * 2003-09-04 2007-04-24 Advanced Micro Devices, Inc. Computer system employing a trusted execution environment including a memory controller configured to clear memory
KR100560424B1 (ko) * 2003-11-05 2006-03-13 한국전자통신연구원 접근이 제한되는 고비도 검증키를 갖는 변형된 디지털서명을 이용한 안전한 프로그래머블 패킷 전송 방법
US20050125537A1 (en) * 2003-11-26 2005-06-09 Martins Fernando C.M. Method, apparatus and system for resource sharing in grid computing networks
US20050132226A1 (en) * 2003-12-11 2005-06-16 David Wheeler Trusted mobile platform architecture
US20050132186A1 (en) * 2003-12-11 2005-06-16 Khan Moinul H. Method and apparatus for a trust processor
KR100576722B1 (ko) * 2003-12-26 2006-05-03 한국전자통신연구원 웹서비스에 대한 메시지 보안 처리 시스템 및 방법
US7581107B2 (en) * 2004-05-28 2009-08-25 International Business Machines Corporation Anonymity revocation
US7386890B2 (en) * 2004-06-30 2008-06-10 Intel Corporation Method and apparatus to preserve a hash value of an executable module
US7356668B2 (en) * 2004-08-27 2008-04-08 Microsoft Corporation System and method for using address bits to form an index into secure memory
US7444523B2 (en) * 2004-08-27 2008-10-28 Microsoft Corporation System and method for using address bits to signal security attributes of data in the address space
US7143287B2 (en) * 2004-10-21 2006-11-28 International Business Machines Corporation Method and system for verifying binding of an initial trusted device to a secured processing system
JPWO2006129780A1 (ja) * 2005-05-30 2009-01-08 セイコーエプソン株式会社 シーケンシャル書込においてベリファイ処理を行う不揮発性メモリ
AU2006253347B2 (en) * 2005-05-30 2009-09-10 Seiko Epson Corporation Semiconductor storage apparatus
US7827596B2 (en) * 2005-08-25 2010-11-02 International Business Machines Corporation Authenticating computed results in a public distributed computing environment
US20080301448A1 (en) * 2007-06-01 2008-12-04 Microsoft Corporation Security Against Corruption for Networked Storage

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000339153A (ja) * 1999-05-25 2000-12-08 Nippon Telegr & Teleph Corp <Ntt> プログラム検証方法及び装置及びプログラム検証プログラムを格納した記憶媒体
JP2001236314A (ja) * 2000-02-24 2001-08-31 Mitsubishi Electric Corp 不正通信ソフトウェア検出方法
JP2002108811A (ja) * 2000-07-24 2002-04-12 Sony Corp データ処理装置およびデータ処理方法、並びにプログラム提供媒体
JP2003140971A (ja) * 2001-11-05 2003-05-16 Mitsubishi Electric Corp データ改竄検出システム

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008263577A (ja) * 2007-04-11 2008-10-30 Cyberlink Corp 暗号化されたプログラムを実行するシステムおよび方法
JP2010086309A (ja) * 2008-09-30 2010-04-15 Dainippon Printing Co Ltd 携帯型コンテンツ管理装置
WO2010134192A1 (ja) * 2009-05-22 2010-11-25 三菱電機株式会社 電子機器及び鍵生成プログラム及び記録媒体及び鍵生成方法
JPWO2010134192A1 (ja) * 2009-05-22 2012-11-08 三菱電機株式会社 電子機器及び鍵生成プログラム及び記録媒体及び鍵生成方法
US8533492B2 (en) 2009-05-22 2013-09-10 Mitsubishi Electric Corporation Electronic device, key generation program, recording medium, and key generation method
JP2011155542A (ja) * 2010-01-28 2011-08-11 Kddi Corp 撮影写真の証拠保全システム、撮影写真の証拠保全方法およびプログラム
JP2012068959A (ja) * 2010-09-24 2012-04-05 Toshiba Corp メモリ管理装置及びメモリ管理方法
US8732480B2 (en) 2010-09-24 2014-05-20 Kabushiki Kaisha Toshiba Memory management device and memory management method
JP2012226711A (ja) * 2011-04-22 2012-11-15 Sony Corp 情報処理装置および情報処理方法
WO2022162797A1 (ja) * 2021-01-27 2022-08-04 日本電信電話株式会社 情報処理装置、プログラム実行システム、情報処理方法、及びプログラム

Also Published As

Publication number Publication date
US7577852B2 (en) 2009-08-18
US20060161773A1 (en) 2006-07-20

Similar Documents

Publication Publication Date Title
JP2006203564A (ja) マイクロプロセッサ、ノード端末、コンピュータシステム及びプログラム実行証明方法
JP7416775B2 (ja) 周辺デバイス
KR102323763B1 (ko) 호스트 시스템과 데이터 처리 가속기 사이의 보안 통신을 제공하기 위한 방법 및 시스템
Suh et al. AEGIS: A single-chip secure processor
KR100692348B1 (ko) 휴면 보호
JP6067449B2 (ja) 情報処理装置、情報処理プログラム
US20200153808A1 (en) Method and System for an Efficient Shared-Derived Secret Provisioning Mechanism
JP4916584B2 (ja) 呼び出しのプログラムについての秘密の封印のための方法
JP4689945B2 (ja) リソースアクセス方法
CN103221961B (zh) 包括用于保护多用户敏感代码和数据的架构的方法和装置
TWI441022B (zh) 用於安全記憶體中之策略式加密應用程式規劃介面
US9922178B2 (en) Media client device authentication using hardware root of trust
US7636441B2 (en) Method for secure key exchange
CN112384922B (zh) 加密密钥分布
Kleber et al. Secure execution architecture based on puf-driven instruction level code encryption
Vaslin et al. A security approach for off-chip memory in embedded microprocessor systems
Mohammad et al. Required policies and properties of the security engine of an SoC
KR20150020017A (ko) 비동기적인 인증을 갖는 보안 컴퓨팅 시스템
Wang et al. Hardware-based protection for data security at run-time on embedded systems
JP6830635B1 (ja) データ管理方法
Quaresma TrustZone based Attestation in Secure Runtime Verification for Embedded Systems
Malipatlolla Sustainable Trusted Computing: A Novel Approach for a Flexible and Secure Update of Cryptographic Engines on a Trusted Platform Module
Emanuel Tamper free deployment and execution of software using TPM
Boubakri et al. Architectural Security and Trust Foundation for RISC-V
Durahim et al. Transparent code authentication at the processor level

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070329

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071213

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101015

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101026

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110308