JP2005535945A - コンピュータプログラムの完全性の保護方法 - Google Patents

コンピュータプログラムの完全性の保護方法 Download PDF

Info

Publication number
JP2005535945A
JP2005535945A JP2003579062A JP2003579062A JP2005535945A JP 2005535945 A JP2005535945 A JP 2005535945A JP 2003579062 A JP2003579062 A JP 2003579062A JP 2003579062 A JP2003579062 A JP 2003579062A JP 2005535945 A JP2005535945 A JP 2005535945A
Authority
JP
Japan
Prior art keywords
program
communication
public key
module
storage area
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
JP2003579062A
Other languages
English (en)
Inventor
フランク ジソウスキ
マティアス アルムグラット
Original Assignee
ソテレスゲーエムベーハー
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 ソテレスゲーエムベーハー filed Critical ソテレスゲーエムベーハー
Publication of JP2005535945A publication Critical patent/JP2005535945A/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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Circuits Of Receivers In General (AREA)
  • Computer And Data Communications (AREA)

Abstract

コンピュータ装置上で動作するコンピュータ・プログラムの完全性を保護する方法は、プログラムのアドレス空間に対する権限の無い変更が発生したか否かを検知するプロシージャと、権限のある変更が検知された場合にはプログラムの実行を終了し、そのような変更が検知されなかった場合にはプログラムの実行を継続するプロシージャとを含む。演算装置の少なくとも2つの通信主体間の通信方法は、各通信シーケンスのそれぞれの通信主体において、ランタイムで、デジタル署名のための秘密鍵と公開鍵を生成するステップと、公開鍵を他の通信主体が利用可能にするステップと、秘密鍵と公開鍵に基づくデジタル署名を用いて、通信主体間の通信を行うステップとを含む。両方法は、ローカルコンピュータシステムでの悪意あるプログラムによる完全性と真正性の考えうる侵害に対する改善された保護策を提供する。

Description

本発明はコンピュータシステムのセキュリティ、特にコンピュータ装置上で動作するコンピュータプログラムの完全性と真正性の保護、及びコンピュータシステムの少なくとも2つのモジュール間での通信方法に関する。
コンピュータ・システムのセキュリティは、3つの要素、有用性、機密性及び完全性にかかっている。さらに、アプリケーション数の増加におけるその重要性ゆえに、真正性が第四の要素として加わった。
有用性は、セキュリティ・ポリシーに規定された時間内に、認証されたユーザにそのサービスを提供することと定義される。機密性は、幾つかのデータは権限の無いユーザに対して機密とされなければならない、というセキュリティ・ポリシーに従い特定する。完全性は、例えば、作成、変更、消去といったデータ及びプログラムに対する変更が、セキュリティ・ポリシーに従い認証されたユーザによってのみなされることを要件としている。そして、最後に、真正性は、データ又はプログラムの受け手がその送り手の同一性についての要求を検証できることを要件としている。
本発明は、例えば、トロイの木馬プログラム、ウイルス、及びワームといったユーザのコンピュータ上で、又は彼のアカウントにおいて、ユーザの承諾なしに、殆どの場合は知らないうちに動作する悪意あるプログラムによってもたらされる問題を解決する。悪意あるプログラムがユーザのコンピュータシステムに侵入できる多くの方法がある。ウインドウズ2000やリナックスといった一般的なオペレーティング・システムは、それを起動したユーザとの同一性をもとにプログラムに権限を付与するアクセス・コントロール・システムを有している。これらのオペレーティング・システムは、プログラムベースのアクセス権のコントロールをサポートするわけではない。このように、一度定着すれば、悪意あるプログラムは、プログラム実行の間に、ユーザの権限や特権が与えられ、例えば、ファイル消去、プログラム変更、又はプログラムの通信の妨害といったユーザの意図しない悪意の動作を行う事が可能となる。
悪意あるプログラムの脅威は深刻である。一方では、例えば、暗号化、デジタル署名、ホーム・バンキング、電子商取引、金融や他の信用取引といったユーザ・アカウントにおいてセキュリティ関連のタスクを行うアプリケーションが増えている。これらアプリケーションのセキュリティは殆どがユーザのアカウント、又は彼・彼女のパーソナル・コンピュータにおいて、それらが適切に実行されることに依存している。他方、ファイアウォール、ウイルス・スキャナー、e−mailフィルタといった現在の防御メカニズムは、悪意あるプログラムのコンピュータへの侵入を防止することのみを狙いとしている。実際には、しかしながら、この防御が多くの場合不十分であることを示している。
コンピュータベースのワークフロー、処理、動作の大部分は、ローカルエリア・ネットワーク(LAN)又はインターネットへの接続を必要とする。定置型、又は移動型eサービスの商業的な拡大−そして多くの政府よるプロモーション−に鑑みると、ネットワーク依存型のアプリケーション数は間違いなく増大するであろう。リモート通信において中心的役割を果たすインターネットは、オープンなワールドワイドネットワークである。その構造とデザインの帰結として、インターネットの通信は様々な脅威にさらされるようになった。インターネット上のデータの移動は、その受け手以外の者によって盗聴され、読み出される可能性があり、そのことはデータの機密性と通信主体のプライバシーを侵害するものである。データはまた、インターネットにおける権限の無い通信主体によって変更され、その完全性を侵害されうるし、あるいは、不正なデータが挿入されて、その真正性を侵害されうる。その結末は予想がつかない。ついには、インターネットの攻撃者は有用性に影響を与えうるまでになる。
暗号化技術は機密性、完全性、及び真正性の強力な保護策であると考えられている。
機密性を強化するために、送り手は彼のコンピュータ内のデータを暗号化し、暗号化された形式で受け手に送信する。暗号化はデータの意味を隠し、使われたアルゴリズムは、データを読み出せる権限の無いユーザが、その意図された意味を再構築、及び認識できないことを確実なものとする。認証されたユーザのみが暗号化されたデータを彼の秘密鍵で復号できる。すなわち、暗号化技術は機密性の侵害を防止する。
完全性と真正性を強化するため、送り手はデータに、データと送り手の両方を識別するためのデジタル署名を添付する。デジタル署名の使用については図2に概略が例示してある。ステップS1において、送り手は秘密鍵と、受け手がアクセス可能な公開鍵を生成する(ステップS2)。その後、デジタル署名は、秘密鍵を用いてメッセージに添付される。デジタル署名付のメッセージは、送り手の公開鍵を使ってメッセージの完全性と真正性を検証することのできる受け手に送信される。データ又はその署名を変更できる権限の無いユーザは、署名がデータと、送り手の身元とを符合させる方法で、依然データを変更できない。デジタル署名付データの受け手は、送り手の公開情報を持つ他のどのユーザ同様、送信の間に署名データが変更されたか否かを照合でき、よって送り手の同一性についての要求を検証できる。
すなわち、デジタル署名のような暗号技術は、通信ネットワークで送信されたメッセージの完全性と真正性に対する侵害を防止はできないが、少なくとも検知を可能にする。暗号化技術の強度は2つの仮定に依存する。
1.潜在的攻撃者は、暗号化された又は署名されたデータ、さもなくば公に利用可能な情報にのみにアクセスする。
2.このデータであっても、データの復号やデジタル署名の偽造が計算量的に実行不可能である。
第2の仮定は公式な数学的議論と現在の演算能力を根拠として正当化される。それは、証明と同じくらいの厳密さをもって検証できる。
これとは対照的に、第1の仮定の条件は、簡単に認めることができる。このことは、しかしながら、悪意あるプログラムが詳細に考慮される必要がある点である。
暗号化技術の数学的特性が強くなるにつれ、攻撃者は攻撃しなくなると思われる。従って、システム内のより安全でない他の部分が好んで狙われることとなる。
機密性を貶めようと、潜在的な攻撃者はユーザのデータに直接アクセスしてそれを盗むもうとする。アクセスコントロールは、しかしながら、信頼できる技術であり、コンピュータ・システム上での外部者の行動は注意深くモニターされている。攻撃者にとってより簡便な方法は、ユーザをだまして悪意あるプログラムを作動させ、このプログラムに、ユーザの秘密鍵の秘密データを、あたかもユーザ自身に成り代わって、彼に向けて送信させることである。
例えば、デジタル署名を強要するといったように、攻撃者が完全性と真正性を貶めようとするなら、悪意あるプログラムに対してさらなる注目がなされるべきである。署名を生成するために必要なこの秘密署名鍵は、多くの場合、すなわちユーザのみが知っている秘密番号であるPINにより保護されているスマートカード上に、復元不能なやり方で保持されている。このように、デジタル署名を彼自身で生成するためには、攻撃者はスマートカードをユーザから盗んで、PINを開示させなくてはならない。この行為の結果として、ユーザはスマートカードと、ひいては偽造された署名を無効にするであろう。他方、ユーザのアカウント、又は彼のコンピュータ上で作動する悪意あるプログラムはどんなデータのデジタル署名も無難に生成し、この署名されたデータをあたかもユーザ自身に成り代わって配信することができる。
インターネット時代の悪意あるプログラムは攻撃の一般的かつ簡便な手段である。それらは簡単に配信されうるし、時として攻撃されたユーザの実行起動の明示的なアクションさえも必要とせず、その実行は偽装され、それらは一度定着してしまえば、ユーザに可能なあらゆる操作を行うことができる。
本発明はすなわち、以下の2つの問題を解決する。
1.プログラムコードの完全性の、その実行の間における強化。
2.コンピュータシステムにおけるローカル通信の完全性と真正性の強化
第一の問題は、コンピュータ装置上で動作するコンピュータ・プログラムの完全性を保護する方法であって、プログラムの実行を開始するステップと、プログラムのアドレス空間に対する権限の無い変更が発生したか否かを検知するステップと、権限の無い変更が検知された場合にはプログラムの実行を終了し、そのような変更が検知されなかった場合にはプログラムの実行を継続するステップとを含む方法により解決される。
上記の方法は、その実行の間にプログラムのアドレス空間に配置されたコード、すなわち、プログラム自身のコードと、それに加えて、独立したライブラリとモジュールがリンクするコードがプログラムの作成者が意図したものであることを保証する。
エラーメッセージが、プログラムのアドレス空間の権限の無い変更が検知された場合、出されてもよい。
プログラムのアドレス空間の権限の無い変更を検知するためには、暗号的に強力なハッシュ関数が採用されても良い。このことは、アドレス空間におけるただ1ビットの変更が、ハッシュ関数においては明らかな差異となり、容易に検知されうることを保証する。
該方法は、プログラム・モジュールのハッシュ関数h(M)を演算するステップと、ランタイム・ライブラリとリンクしたモジュールのハッシュ関数h(L)を演算するステップと、を含むプログラムのインストール・プロシージャを有してもよい。
ハッシュ関数が変更に対して保護された記憶領域に保持されることが望ましい。変更に対する保護は、アクセス制御又は/及びユーザ・アカウントを通じて動作環境によって実現される。ハッシュ関数の権限の無い変更は、すなわち防止される。ハッシュ関数のサイズの小ささゆえに、変更から保護されなくてはならない記憶領域は大変小さくなりうる。例えば、数キロバイトである。
プログラムそれ自体は、インストールプロセス間に変更に対して保護された記憶領域への一時的アクセスのみが許可される。
検知するステップは、欠落した、追加された、又は変更されたプログラム・モジュールの認識が可能であっても良い。このことは、起こりうる権限の無い変更に関与する悪意あるプログラムの検知を容易にする。
本発明による方法は、メインフレームコンピュータ、デスクトップコンピュータ、又はラップトップ、パーソナル・デジタル・アシスタンス、携帯電話といった携帯装置から、内蔵型コンピュータ又はマイクロコントローラに及ぶコンピュータ装置上で作動するあらゆる種類のコンピュータプログラムに応用できる。該発明は特に、デジタル署名プログラム、金融取引プログラムのような高度なセキュリティを要するプログラムにとって有用である。
本発明は、また、請求項1に記載の方法を行うようにプログラムされているコンピュータ装置と、請求項1に記載の方法を行うためのプログラムコードを有するコンピュータプログラムと、それに加えて請求項1に記載の方法を行うためのプログラムコードを有するコンピュータプログラムを保持する記憶媒体を提供する。
本発明の第二の特徴によれば、少なくとも2つの演算装置のモジュール間の通信方法であって、少なくとも2つのモジュール間の通信シーケンスを開始するステップを含み、デジタル署名のための秘密鍵と公開鍵を、各通信シーケンスのための各モジュールで生成し、他のモジュール夫々に利用可能な1つのモジュールの公開鍵を作成し、秘密鍵と公開鍵のそれぞれを用いてデジタル署名付のモジュール間でメッセージを交換する、少なくとも2つの演算装置のモジュール間の通信方法が提供される。
本発明の第二の特徴により、1つの装置上で互いに通信し合う2つ又はそれ以上のプログラム、ドライバ、又は他のモジュールが、データが送信の間に変更されたか、及びデータが予定された送り手から発信されたかを、データの受信の際に照合できることが確実となる。本発明の第二の特徴はすなわち、上述の2つの問題のうち、第2の問題を解決する。
コンピュータシステムの異なるモジュール間の通信シーケンスは、ほとんどの場合極めて短いため、どの攻撃者にとっても、より強度の低いデジタル署名すら偽造することが難しい。デジタル署名の鍵は各通信シーケンスの終了時に無効とされることが望ましい。
各モジュールの公開鍵は変更に対して保護された記憶領域に所定の固定アドレスで保持されてもよい。安全な通信の他の通信パートナーの公開鍵の固定アドレスもまた、モジュールの変更に対して保護された記憶領域において保持される。各モジュールは、すなわち、他のモジュールのそれぞれの秘密鍵にアクセスする。固定アドレスは、記憶領域にハードコードされ、システム外の第三者には知られない。
各モジュールは、本発明の第一の特徴によって、完全性保護プロシージャに支配される。
本発明の第二の特徴によれば、複数の機能的モジュールを有する演算装置であって、秘密鍵とそれに対応する公開鍵を生成する鍵生成部と、秘密鍵を用いたデジタル署名付メッセージを供給する署名添付部と、公開鍵を保持するための固定アドレスと、さらに、安全な通信が行われるべき他のモジュールの公開鍵の固定アドレスとを有する変更に対して保護された記憶領域と、それぞれの送信側モジュールの公開鍵を用いて、他のモジュールから受信したメッセージを照合する署名照合部とを有する演算装置も提供される。
本発明の第二の特徴によれば、請求項20に記載の方法を行うためのプログラムコードを有するコンピュータプログラムと、それに加えて請求項20に記載の方法を行うためのプログラムコードを有するコンピュータプログラムを保持する記憶媒体も提供される。
本発明及びその特徴と利点は、図面を参照した以下の本発明の具体的な実施例の説明により、直ちに明確となるであろう。
(A)用語の説明
コンピュータ装置/演算装置:プログラムコードに従って所定の命令を実行するあらゆるサイズ、又は動作レベルのあらゆる装置であって、
メインフレームコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、パーソナル・デジタル・アシスタンス、携帯電話、内蔵型コンピュータ、又はマイクロコントローラを含む。
プログラムモジュール: 他のモジュールと通信するコンピュータプログラムの一部であって、サブ・プログラム、又は、サブ・ルーチン、ドライバ、インターフェースを含む。
アドレス空間: プログラムのコード、加えて、プログラムにリンクする、又はプログラム実行の間にプログラムにより使用される全てのライブラリ又はモジュール。
asm関数: プログラムのアドレス空間内の全てのモジュールの名前を返す関数であって、すなわち、プログラム自身やランタイムの動作環境により供給される。
動作環境: プログラムの基礎管理機能を提供するプログラム、又はネットワーク機能であって、例えば、ウインドウズXP,リナックス,又はPalmOSのようなPDAオペレーティング・システムといったPCオペレーティング・システム。
ハッシュ関数: 数学的関数であって、データセットのユニークな識別が、ハッシュ関数を通して可能となるように、所定のデータセットを数学上の値にマップする。
デジタル署名: 特定の電子文書のソースと完全性を認証するための暗号化技術を用いた方法。
暗号鍵: 電子文書を暗号化するアルゴリズムにおいて使用される数学的値。
(B)起こりうる脅威のシナリオの分析
悪意あるプログラムが脅威であると考えられるいつの場合も、ファイアウォール、ウイルススキャナとアクセスコントロールが防御手段として提案される。しかしながら、それらにより提供される実際の防御は、多くの場合不適切である。
ファイアウォールはコンピュータのポート、すなわち、それに接続されるネットワークからデータの送受信をするために使用されるスロットをコントロールする。ネットワーク上を移動するデータはパケットにグループ化される。ファイアウォールは以下を決定可能である。
−ポートを通信のために開けるか。
−アプリケーションにポートを使用させるか。
−到着するデータパケットをコンピュータに進入させるか。
−送出されるデータパケットをコンピュータから送出させるか。
悪意あるプログラムは、あらゆるデータがそうするのと同様に、ネットワークのデータパケットからコンピュータに侵入する。これを防止するファイアウォールの能力は非常に限られている。閉じたポートはどのデータの送受信にも使用できない。このことはまた、悪意あるプログラムの転送に使用されえないことを意味する。しかし、ポートは開かれており、例えばe−mailプログラムといったアプリケーションが到着したデータパケットのために待機していると仮定する。ファイアウォールから見ると、データパケットは送り手のネットワークアドレス、受け手のネットワークアドレス、及びペイロードを有している。ファイアウォールにはペイロードの意味を理解できず、結果として、それが悪意あるプログラムの一部かどうかを認識できない。オープンなポートにアドレスされ到着したデータパケットを拒絶するか、又は承認するかの決定は送り手のネットワークアドレスを根拠としてなされなくてはならない。例えばデータベースシステムのようなアプリケーションは多くの場合、ファイアウォールによってそのアドレスが特定され、検証されるソースの小さいセットからのデータのみを想定している。しかしながら、多くのアプリケーション−そのうちのいくつかは不可欠であり、例えば、e−mailクライアントやwebブラウザである−があるが、2,3のソースを除いた全てのソースからのデータを受け付ける。ここで、ファイアウォールは、ほとんど全てのデータパケットを通してしまうので、明らかに効力がない。この事実は、悪意あるプログラムをe−mailメッセージやHTMLページに埋め込む主な理由のひとつとなっている。さらに、データパケット内の送り手のネットワークアドレスは信頼できない。それは、容易に偽造されうるし、オリジナルであるという何の保証にもならない。ついには、悪意あるプログラムの配信には、他人をだまして必要な情報を入手する技術的に変化した手口がさらに頻繁に利用されることとなる。悪意あるプログラムは、コンピュータに侵入すると直ちに、友好関係にあると思われる他のコンピュータのアドレス、例えば、ユーザのアドレスを探す。そして、自身、又は他の悪意あるプログラムをそれらに送信する。受け手のファイアウォールは、送り手のコンピュータが破壊されていて、友好的なメッセージに悪意あるプログラムが埋め込まれている事を認識できないし、受け手自身も、悪意のコンテンツを見抜くチャンスがほとんどない。
ウィルススキャナは、例えば、ファイル又はメインメモリといったコンピュータの記憶と、それらプログラムのパターンのリストとを比較することで、悪意あるプログラムを検知しようとするプログラムである。検知のためのこのアプローチは、すでにその欠点が指摘されている。第一に、ウィルススキャナのパターンリストの一部となるためには、悪意あるプログラムは、すでに認知され分析されていなければならない。すなわち、誰かが最初に新しい悪意あるプログラムの被害を受けなくてはならない。その時点ではスキャンは失敗している。そしてその後、将来においては検知されるように、スキャナの製造者にリポートされる。この事実から見ると、第二に、ウィルススキャナは、特定者に向けられた悪意あるプログラム、又は既知のものの巧みな変種を検知しそうに無い。そして最後に、もしデータ暗号化された形式で友好関係にあるが破壊された発信源から到着した場合、ウィルススキャナとユーザの双方ともが、その中に含まれた悪意のコンテンツを検知することに失敗する傾向にある。
アクセスコントロールシステムは、悪意あるプログラムに対する最後の防御メカニズムであると言われており、今日のオペレーティングシステムにおいて発見され、ユーザベースの防御スキームを実現する。それらは、プログラムを起動したアカウントと関連のあるユーザの身元に基づいて、例えば、データファイルやプログラムといったコンピュータ資源へのプログラムアクセスを制限する。プログラムのアクセス要求の許可又は拒否において、これらのアクセスコントロールシステムは、実際には、プログラム自身の信頼性においてではなく、ユーザに代わってプログラムが実行されるというユーザの信頼性においてアクセスする。信頼できるプログラムからアクセスコントロールシステムへのアクセス要求は悪意あるプログラムからのそれと区別ができない。結果として、いつ悪意あるプログラムがアクセス要求を出しても、アクセスコントロールシステムは、この要求が アカウントの所有者の承諾を得て代わって出されたものと想定する。悪意のあるプログラムによって被る潜在的な被害を大幅に減少させるプログラム指向コントロールで、その柔軟性を維持しつつ、アクセスコントロールシステムの防御のクオリティを強化するアプローチは存在するが、今日のオペレーティングシステムは、それらを実現するには遠い。このように、すでに存在したいたとしても、現在のかたちのアクセスコントロールシステムは、悪意あるプログラムのアクションに対してなんら現実的な制限を設けることにならない。
脅威のシナリオについての分析を結論付けると、悪意あるプログラムは、現在の技術による防御メカニズムによって不適切にしか解決されない完全性に対する脅威を示している。結果として、管理規則、すなわち、ノット・トゥ・ドゥのセット、及びユーザに悪意あるプログラムの侵入を回避するハウツーを教える禁止とアドバイスは、多くの場合、防御における本質的な鍵であると考えられている。この結果として、悪意あるプログラムがいくらかの被害を及ぼした場合、責任を押し付ける都合の良いスケープゴートはすでに決まっている。例えば、"常に一連のプロテクションの中で紛れもなく最も弱く、彼のアクションに十分な注意を払ってこなかったユーザであり、それは彼の責任である・・・"。しかしながら、正しい観察者は、この考え方がユーザが全く根拠を欠くことに対する決定を要求するものとして直ちに異を唱えるであろう。
悪意あるプログラムがユーザのコンテクストにおいて実行されないとの仮定に基づいて、全てのセキュリティの保証を考えることは全く当てにならない。ある人は攻撃者が殆どの場合に不正なやり方でそのようなプログラムを攻撃されるコンピュータ上に持ち込むという事実と対面しなくてはならない。すなわち、完全性の防御にとって効果的なストラテジーは悪意あるプログラムを考慮しなくてはならないし、悪意あるプログラムの存在下においても、プログラム実行と通信の完全性と真正性を強化する技術的なコントロールに依拠しなくてはならない。
C)完全性と真正性の防御の要件
セキュリティポリシーのプログラム的な規格でもって、完全性と真正性の防御はプログラムが権限のある動作のみを行うことを要求する。完全性と真正性の効果的な強化のストラテジーは、以下の3つのステップを含む。
i)プログラムの実行が依拠するコンポーネントとファクターの認識
ii)悪意あるプログラムが完全性と真正性を侵害しうる脆弱性と方法の分析
iii)好適で頑強な防御メカニズムの考案
図1は、プログラムの実行に関係する構成要素の概略図である。プログラムの実行は以下のアクションを含む。
−ユーザ又はプログラムはスタートコマンド63でプログラムを起動する。
−動作環境は、プログラムがランタイムに要求する全てのオブジェクトモジュール62とランタイムライブラリ61を収集し、アドレス空間60又は仮想メモリに保持する。
−オペレーティングシステムはプログラムの実行を初期化する。
−プログラムは、その一部がユーザによって与えられるプログラムの入力データ64を収集する。
−プログラムは他のプロセス68、ドライバ66、サービス69、及び通信コンポーネントと通信する。
−プログラムはその出力データ65を生み出す。
−プログラムが終了する、又は終了される。
プログラム実行のアクションは任意の順序で数回繰り返される。
以下の各アクションにおいて、以上に記載されたアクションは詳細に検査され、意図された意味の保存に必要な要件が決定される。その後、その完全性と真正性を侵害する可能性が検討される。
a)プログラム起動の完全性と真正性
プログラムは、ユーザのインタラクション、又は作動しているプログラムのコマンドにより起動される。完全性と真正性の侵害を、この早い段階においてすでに避けておくためには、2つの要件が合致しなくてはならない。
要件1: 開始プログラムは、オペレーティングシステムが意図されたプログラムを起動することを確実にしなくてはならない。
要件2: オペレーティングシステムにより実行のために選択されたプログラムは、その実行順序がユーザにより認証されることを確実にしなくてはならない。
コンピュータにローカルなプログラムの明確な名前はフルディレクトリ・パスと、そのディレクトリにローカルな名前によって定義される。上記要件の両方の侵害は、多くの場合、悪意あるプログラムによるものと見られる。
多くのオペレーティングシステムによってもたらされるファイルのサーチパスやファイルの相対パスアドレッシングを利用するために、悪意あるプログラムは意図された既に存在しているプログラムのローカルネームを与えられ、意図されたプログラムが駐在する場所よりも前の場所であってそのネームのためにサーチされる場所に保持される。もし悪意あるプログラムが対象となるプログラムに変更するアクセスをした場合、それは、コンテンツディレクトリを置き換えるか、又は操作する。
このように、要件1を満たすために、開始プログラムは、オペレーティングシステムにより実行のために選択されたプログラムが、意図された内容を持つプログラムであることを確実にする。
要件2は、プログラムが、悪意あるプログラムによって権限の無い動作を行うように起動されうるという問題と関係がある。この要件を満たすために、プログラム自身、又はオペレーティングシステムは、このプログラムを起動するための認証された条件を知っていなくてはならないし、これらの条件は検証できなくてはならない。例えば、仮にプログラムが、ユーザによって、インタラクティブなやり方でのみ起動することを意図されているなら、コマンドファイル又は他のプログラム(おそらくは悪意あるプログラム)から起動された場合には、実行されてはならない。
b)プログラムアドレス空間の完全性と真正性
プログラムのアドレス空間は静的オブジェクトモジュール及びダイナミックランタイムライブラリを持つオペレーティングシステムによって占められる。
静的モジュールはプログラムファイルの一部である。仮に上記要件1が強化されるなら、意図されたオブジェクトモジュールはプログラムのアドレス空間に占められることを許される。
したがって、この段階でプログラムの完全性と真正性を侵害するために、悪意あるプログラムは、攻撃されるプログラムのアドレス空間に意図されないランタイムライブラリのセットを含まなくてはならない。含まれるランタイムライブラリの決定は帰納的プロセスである。プログラムが直接に依拠するランタイムライブラリの名前はプログラムファイルにおいて特定される。もしライブラリが他のライブラリに依拠するなら、それらの名前はライブラリファイルにおいて特定される。その選択処理は、全ての依存状態が満足され、さらなるライブラリが必要とされない場合に終了する。すなわち、ライブラリの遷移的閉包の演算完了時である。
ランタイムライブラリは、普通のファイルのようにファイルシステムに保持されるため、悪意あるプログラムは、オペレーティングシステムを欺いて意図されないライブラリの選択させるという、前述の攻撃をすることができる。
今、上記要件1と同様なランタイムライブラリの要件を繰り返したいと考えるかもしれない。この特徴は、たとえ効果的であっても、非効率的であろうと思われる。プログラムの作成者は、間違いなくランタイムライブラリに要求されるディレクトリの名前のみを知っている。しかしながら、それらの内容と、結果的遷移的閉包におけるありうる追加ライブラリ、それは特定のコンピュータ上でのプログラム実行に実際に必要とされる最も小さいライブラリのセットであるが、はオペレーティングシステムのヴァージョン、そのサービスパック、パッチ、及びランタイム環境の他のパーティに依拠することが可能である。
このように、開発者のコンピュータ上の全ての要求されたランタイムライブラリのを決めることは、広い範囲のコンピュータで実行するプログラムの能力を限定しそうである。すなわち、対象コンピュータ上のランタイムライブラリの意図された状態を決める事が必要である。我々の目的であるプログラムアドレス空間の完全性と真正性の保証の点から見ると、まず第一に、誰かがこのプロシージャを対象コンピュータ上の遷移的閉包のランタイムライブラリに限定する。検証の結果は2つの要件をもたらす。
要件3: プログラムは、その実行に必要な対象となるランタイムライブラリのセットを決定しなくてはならない。
要件4: プログラムは、オペレーティングシステムがそのアドレス空間の対象となるランタイムライブラリのみを含まなくてはならない。
c)1つのコンポーネント又はモジュールと、他のコンポーネントの通信の完全性と真正性
今、適正なプログラムの実行もまた、たとえば、他のプログラム、ドライバ、又はサービスといった、それ自体のアドレス空間外のモジュールと独立したコンポーネントとの通信に依拠していると仮定する。ローカル通信コンポーネントの完全性と真正性の要件はまさにリモート通信主体のそれと同様である。
要件5: データの受信時に、受け手は
i)もし、転送される間にデータが変更されているかどうか決定できる。
ii)データの作成者ついての要求を検証できる。
iii)データの送り手についての要求を検証できる。
ローカルコンポーネント間の通信は、通常コンピュータのオペレーティングシステムによって管理される。送り手は受け手にデータ(多くの場合、メッセージを意味する)を送るためにシステムコールを使う。すなわち、送り手はオペレーティングシステムに受け手にデータを配信するように命令する。オペレーティングシステムは、郵便サービスのように働く。すなわち、データを送り手から収集し、受け手に配信する。要件5i)は、ほとんどの場合、オペレーティングシステムにより満足される。しかし、有用ではあるが、リナックスとウインドウズのどちらも送り手の身元に関する情報を受け手に提供しない、よって要件5iii)は通信パーティによって管理されなくてはならない。そして、最後に、オペレーティングシステムは、データの断片の作成者の身元の記録について何も提供しない。結果として、通信パーティは当該要件5ii)についても責任があることになる。
もし、悪意あるプログラムが権限あるパーティ間を通過するデータを記録できる場合、データの送り手と作成者との間の違いは、重要である。コンポーネントAは、重大な動作を行うが、それは特定の他のコンポーネントBによる要求時のみと想定する。もし、悪意あるプログラムがBからAに送られたデータを記録する場合、後で再度Aにデータを送り、重大な動作の実行を要求する。たとえこのデータがAの真正性のプルーフを持っていたとしても、Bはそれが悪意の送り手であると発見することができないであろう。
要件5の強化のための一般的な提案は、デジタル署名の使用である。各通信コンポーネントは、個々の秘密鍵と公開鍵と与えられる;送り手は、送出するデータに秘密鍵で署名し、データの受け手は、送り手の要求を公開鍵で検証する。無警戒なアプローチは実際に2つの問題を抱えている:送り手側の問題は秘密鍵の保持であり、受け手側の問題は、要求者である送り手の真正の公開鍵の取得である。送り手はその秘密鍵をある場所に保持しなくてはならない。例えば、実行可能なファイルに暗号化されうる、又はある外部記憶装置保持されうる。そして、この鍵をその実行中に、アドレス空間にロードしなくてはならない。いずれにせよ、もし攻撃者が実行可能なファイルのコピー、又はオフライン分析のための秘密鍵をもつアドレス空間のフラグメントを取得できる場合は、そのようなオブジェクトの中に秘密鍵を発見し、それらから取り出すための技術がある。もし、送り手の公開鍵が、あらゆるデータがそうであるように、受け手に渡された場合、悪意あるプログラムはそれ自身の公開鍵をコンポーネントに送ることにより、コンポーネントとの通信を構築することができる。受け手は、署名されたデータを悪意あるプログラムから受け取るであろう。
通信コンポーネントの2つの分類の区別についてさらに検討する。
i)その実行内容:
−ユーザモード: アクセスコントロールを前提とする実行
−特権モード: 無制限アクセスでの実行
ii)協力モード:
−特別な目的: 特定のコンポーネントのみとの通信
−一般: すべてのコンポーネントとの通信
第一の区別は、悪意あるプログラムによるコンポーネントの破壊の結果に非常に大きな衝撃をもたらす。第二の区別は、クライアントコンポーネントの権限あるリストをもつサービスを提供するコンポーネントを装備する能力の範囲を決定付ける。
ユーザモードで実行するコンポーネントは、一方で、オペレーティングシステムのアクセスコントロールを前提としている。しかし、他方では、それらにより保護されうる。ユーザモードにおけるアクセスコントロールの決定は、アカウントと関連付けられているので、悪意あるプログラムは、同じアカウント及びアクセスの許可された他のアカウントに所有されている全てのプログラム、データ、及び他のコンポーネントを貶めることができる。特権モードは、ユーザモードコンポーネントからのフルプロテクションと、同時に、全てのリソースへの無制限のアクセスを提供する。ネガティブな意味においては、このことは、仮に不可能でないとしても、特権モードにおける悪意あるプログラムの実行の制限、又は検知することすら非常に困難であることを意味している。殆どの防御ストラテジーは、すなわち、例えば、管理者モード又はルートモードといった特権モードのアカウントが、悪意あるプログラムを含まないと想定している。特権実行コンテクストを要求するいくらかのコンポーネントが存在するに違いないが、多くのコンポーネントの実行コンテクストの決定は、オペレーティングシステムの設計者の裁量に委ねられている。ウインドウズ2000を例にとると、全てのデバイスドライバとサービスが特権モードで実行されている。
オペレーティングシステムのコンポーネントは、殆どの場合、要求に応じてあらゆる他のコンポーネントにサービスを提供することを目的として設計されている。これらの一般コンポーネントはクライアントの同一性や、現在のところ、通信の完全性には注意を払っていない。コンポーネントの動作がクリティカルになると直ちに、この態度がセキュリティ上の脅威をもたらすことは明らかである。もしアプリケーションが、プログラムやドライバといった特別な目的を持ついくつかの独立コンポーネントの通信を要求した場合、そのようなコンポーネントは、所定のコンポーネントのみに対して通信するように、及び上記要件5の要求を確実なものとするように、それら自身の管理すべく設計されうる。
d)入出力データの完全性と真正性
この重要な事項は、この発明の対象範囲外である。
e)プログラム終了の完全性と真正性
この重要な事項は、本発明の対象範囲外である。
本発明の両特徴は、単体のコンピュータの実行環境の完全性と真正性の防御のための大きなネットワークにおいて採用される防御手段と技術を用いる。これら技術は:
− 暗号強度の高いハッシュ関数
− デジタル署名
− 暗号鍵のランタイム生成
− 変更に対して保護された記憶領域
本発明は上記要件1から5に対するソリューションを提示することを目的としている。
D)本発明の第一の特徴: コンピュータプログラムのアドレス空間の完全性と真正性の保護
図4は、本発明の第一の特徴によってコンピュータ装置上で作動するコンピュータプログラムの完全性を保護する方法の操作ステップを例示する概略フローチャートである。コンピュータ装置については、前述のように、あらゆるサイズ、又は稼働レベルのコンピュータシステムであってよい。コンピュータ装置50の概略が図3に例示してある。それは1つ、又は複数のマイクロプロセッサからなる中央処理部51、通信リンク、キーボード装置、マウス、又はプリンタのような入出力装置に対してインターフェースとして使用される入出力部52、それに加えてメモリ装置53を有する。後者は、例えば、コンピュータのオペレーティングシステムによる変更に対して保護されたスモールエリア54を有する。図4のプロシージャは方法ステップS10におけるプログラム実行で開始する。その後、続く方法ステップS20において、プログラムのアドレス空間の無権限の変更が起こったか否かをランタイムに検証する。もし上記の場合でなければ、アドレス空間の真正性と完全性が検証され、ステップS30でプログラムの実行が継続される。もしステップS20でアドレス空間の無権限の変更が検知されれば、ステップS40でエラーメッセージが検知され、続く方法ステップS41でプログラムの実行が終了される。
実施例によると、検知ステップS20は、欠落、追加、又は変更されたプログラムモジュール、又はプログラムのアドレス空間内のランタイムライブラリを認識する。
検知ステップS20を、図5のフローチャートを参照してさらに詳細に説明する。プログラムの実行が開始した後、プログラムPのモジュールとランタイムライブラリは方法ステップS21により取得される。そのために、asm関数が採用されるやり方を以下、より詳細に説明する。続くステップS22において、モジュールのハッシュ関数とランタイムライブラリが算出される。ステップS22において取得されるこれらのハッシュ関数は、その後、ステップS23において、モジュールとプログラムのランタイムライブラリの予め保持された参照ハッシュ関数、それは以前のプログラムインストール時に算出されたものであるが、と比較される。変更に対して保護された記憶領域(図3のエリア54又は図7のエリア121)に保持される。文書とデータセットのハッシュ関数h(D)は、間違いなく文書とデータセットDを認識する。2つの異なる文書が同じハッシュ関数を持つことは理論的に可能である一方で、他方、変更された文章D’のハッシュ関数h(D’)はオリジナル文書のそれと同一である可能性があり、ハッシュ関数は数学的値であり、100ビットから160ビット長である。プログラムのアドレス空間の完全性と真正性を保護するためには、非常に小さい記憶領域の変更に対する保護は有効である。
プログラムのアドレス空間のハッシュ関数を算出するためのプログラムインストールプロセスは、図6のフローチャートに概略的に示されている。
方法ステップS50のプログラムインストールを開始した後、プログラムPのモジュールのセットのハッシュ関数h(M)は続く方法ステップS51で算出される。その後、プログラムPで使用されるランタイムライブラリの名前が、多くのオペレーティングシステムにより提供されている、いわゆるasm関数を用いて取得される。続いて、ステップS53において、ランタイムライブラリのハッシュ関数h(L)が算出され、ステップS54において、ハッシュ関数h(M)とh(L)、又は連結されたハッシュ関数が、コンピュータシステムの変更に対して保護された記憶領域に保持される。その後、保護された記憶領域への書き込み権限が、ステップS55において、削除される。
図7は、図6に示されたインストール・プロシージャの間と、図4に示されたプログラム実行の間のいずれかのうちに、プログラムのアドレス空間のハッシュ関数を算出するプロシージャを概略的に示している。実行環境100は、asm関数102を提供するサービス機能101と、ハッシュ関数103を有し、変更に対して保護された記憶領域121を含む記憶装置を管理する。
asm関数102は、一方で、プログラムPのアドレス空間115における全てのモジュールM,...,Mの名前に加えて、全てのランタイムライブラリL,...,Lの名前を返す。その後、モジュールセットのハッシュ関数h(M)とランタイムライブラリのハッシュ関数h(L)がハッシュ関数機能103を用いて算出される。あるいは、モジュールとライブラリの連結されたハッシュ関数が用いられても良い。
以下、本発明の第一の特徴である方法の実施例を詳細に説明する。
前提条件:
− 変更に対して保護されうるリード・オンリーにセットされた小さい量のストレージ。
− ランタイムにアドレス空間に設置されたモジュールの名前を返すasm関数
−暗号強度の高いハッシュ関数、例えば160ビット
プログラムPのためのプロシージャ:
段階1: Pの前処理
i) Pにより与えられるモジュールのセットを、M={M,...,M}とする。
ii) ハッシュ関数hでセット値h(M)={h(M),...,h(M)}を算出する。
段階2: Pのインストール
i) Pとhを送り先にコピー
ii) Pに変更に対して保護された記憶領域への書き込み権限を付与
iii) h(M)を変更に対して保護された記憶領域へ設置
iv) Pの実行開始
v) asm関数を用いて、対象コンピュータ上のPのアドレス空間に設置されたランタイムライブラリの名前のサブセットである、L={L,...,L}を取得。
vi) hでセット値 h(L)={h(L),...,h(L)}を算出
vii) h(L) を変更に対して保護された記憶領域に設置
viii) 保護された記憶領域への書き込み権限が、Pから削除される。
ix) Pの実行を終了
段階3: Pの実行
i) Pの実行開始。
ii) asm関数を用いて、Pのアドレス空間内の全てのランタイムライブラリL’とモジュールM’の名前のセットを取得する。
iii) hを用いて、セット値 h(L’)とh(M’) を算出する。
iv) 変更に対して保護された記憶領域からh(M)とh(L)を読み出す。
v) h(L’)∪h(M’)=h(M)∪h(L)かどうかテストする。
a) テストが失敗した場合に、プログラムPを終了する。
b) テストが成功の場合に、プログラムの正常な実行を継続する。
上述のように、プロシージャの態様によって、段階3のステップ(v)で行われるテストは、欠落したモジュール、追加されたモジュール、及び変更されたモジュールを認識する。もし変更に対する保護(リード・オンリー)記憶領域においてモジュールの場所と名前が保持されていた場合、上記テストはkのデータの操作を検知するように拡張されうる。たとえば、モジュールが再度命名された、又は異なる場所に移動された場合である。
発明の第一の特徴は、悪意あるプログラムによってもたらされる脅威を解決する。これらのプログラムは、ユーザアカウント又はコンテクストにおいて実行され、すなわち、動作環境によりこのアカウントにおいて実行される全てのプログラムに付与される権限と特権を取得することとなる。しかしながら、悪意あるプログラムはまた、意図されない、すなわち、ユーザによって権限を与えられて無い動作を行ってもよい。動作環境は、信頼できるプログラムを悪意あるプログラムから見分けることができないので、セキュリティ上の要件に基づいたプログラムは、悪意あるプログラムに対する防御のため、動作環境に依存できない。このようなプログラムは、すなわち動作環境のサポートがあっても、それら自身で防御を確実なものとしなくてはならない。
以下の、保護されるべきプログラムに対する悪意あるプログラムの典型的な攻撃や本発明の第一の特徴によるプロシージャの防御の質を検討する:
1.攻撃: プログラムのアドレス空間において必要なモジュールがそこから取り除かれた。
防御: 段階3のステップ(v)で行われるテストは、欠落したエレメントをランタイムで検知する。
2.攻撃: プログラムのアドレス空間において不要なモジュールがそこに追加された。
防御: 段階3のステップ(v)で行われるテストは、ランタイムで算出されたモジュールのセットにおける余分のエレメントを検知する。
3.攻撃: アドレス空間において必要なモジュールが変更された。
防御: 段階3のステップ(v)で行われるテストは、ランタイムで算出されたモジュールのセットにおける欠落したエレメントと余分のエレメントの両方を検知する。
ウイルスの攻撃の検知は、上記に定義されたプログラムのための防御プロシージャを実行する能力に依存する。このことは、以下を意味している。
1.プログラムのアドレス空間内のモジュールのリストは動作環境により管理される。リストは攻撃者によって操作されてはならない。
2.ハッシュ関数の使用は、変更に対して保護された記憶領域のサイズの要件を小さな容量に削減する。暗号強度の高いハッシュ関数の要件は、モジュールがそのハッシュ値とユニークに関連付けられうる。
3.インストール段階では、プログラムの作成者により提供されるモジュールと、保護されるべきシステムの動作環境の製造者により提供されるモジュールの両方が考慮される。一方では、このことは、動作環境の互換性のあるそれぞれのバージョン上で動作する柔軟性をプログラムに与える。他方では、プログラムのアドレス空間内のあらゆるモジュールの更新が、感染したモジュールのために前処理段階やインストール段階の繰り返しを必要とする。
4.参照ハッシュ値を保持する変更に対して保護された記憶領域は、以下の特性をもつ。
a)プログラム自体が、インストール段階で参照ハッシュ値の保持のための変更に対して保護された記憶領域に対する一時的な変更権限を有しなくてはならない。
b)他のどのプログラムも、参照ハッシュ値を変更できない。したがって、悪意を有する可能性のあるプログラムは、変更に対して保護された記憶領域に対して、いかなる変更権限も有してはならない。リード・オンリーアクセスは、保持されたハッシュ値が秘密にされておく必要がないため、禁止される必要が無い。
このタイプの動作環境において、変更に対して保護された記憶領域は、アクセスコントロールとユーザアカウントで実現されうる。
5.いかなるプログラムも、自らは、自身の完全性を検証できない。それを見つけるのは容易である。なぜなら、攻撃者は、重要なテスト(段階3のステップ(v))を行うモジュールを、このテストが省かれたモジュールを置き換え、すなわち、全体の防御スキームを意味の無いものにしてしまうからである。すなわち、このテストは、その完全性が想定される攻撃者によって貶められる可能性の無い第三者によって行われなくてはならない。オペレーティングシステムにおいては、このことは、当該動作システム又は動作環境により、実現されうる。
本発明の第一の特徴によるプロシージャは、すなわち、プログラムのアドレス空間の操作を効果的に検知することができる。
E)発明の第二の特徴
本発明の第二の特徴は、2つ又はそれ以上のモジュール間の通信、又はコンピュータシステムの通信主体A,B,...間の通信に関する。モジュールA,B,...は、多くの(おそらくは悪意の)モジュールによって使用されるメッセージパスシステムを通じて通信すると想定される。
図8では、モジュールA,B,C,Dを有する演算装置200を概略的に例示しされている。無論、あらゆる数のモジュールが可能である。モジュールは、管理されたメッセージパッシングシステム、例えば、動作環境を通じて互いに通信する。もし悪意あるプログラムが通信主体間で送信されるデータセットを操作する能力がある場合に、明らかに真正性と完全性は強化されない。しかしながら、デジタル署名はデータの受け手に、これらの特性の侵害を検知する可能性を提供する。適正な鍵を用いた公認のデジタル署名スキームが採用されたとすると、送り手側におけるそれらの信頼性は、他の主体が、秘密鍵を用いたデジタル署名の生成をすることを防止する能力に依存しており、受け手側においては、送り手の真正な公開鍵を所有していることに依存している。
本発明の第二の特徴による通信方法は図10のフローチャートに概略的に例示してある。ステップS80において、2つのモジュール間の通信シーケンスが開始する。その後、この通信シーケンスの一部であるモジュールA,Bのおのおのにおいて、鍵のペア(秘密鍵、公開鍵)がランタイムで生成される(ステップS81)。公開鍵は、通信シーケンスに関係する他の各モジュールに使用可能とする。すなわち、モジュールAの公開鍵はモジュールBに使用可能とする。逆もまた然りである。その後、秘密鍵と公開鍵のペアに基づいて、A,B間におけるあらゆる方向でのデジタル署名付きメッセージの交換が可能となる(ステップS83)。このプロシージャで、メッセージの完全性と真正性に対するどのような侵害(すなわち、メッセージの内容、推定される作成者、送り手の変更)も防止することはできない。しかし、大きなネットワークにおけるデジタル署名を用いたケースのように、そのような侵害を検知することは可能である。コンピュータシステムの2つのモジュール間の通信シーケンスにおける時間は、極めて短く、新たな暗号鍵のセットがそれぞれの新たな通信シーケンスに対して使用されるので、秘密鍵を発見するためのオフライン分析を行うことは不可能である。
図11のフローチャートでは、本発明の第二の特徴の特定の実施例によるインストール・プロシージャが概略的に例示されている。ステップS90のモジュールインストールが開始した後、モジュールの変更に対して保護された記憶領域は、ステップS91で定義される。その後、このモジュールのための公開鍵の固定アドレスは、変更に対して保護された記憶領域にハードコードされ(ステップS92)、続いて、ステップS93で、それぞれの通信パートナーの変更に対して保護された記憶領域の公開鍵(そこに対して、及びそこからの安全な通信が可能であるべきモジュール)の固定アドレスもまた、変更に対して保護された記憶領域に保持される。各モジュールはすなわち、ハードコードされたアドレス情報にもとづいて、通信パートナーの公開鍵に容易にアクセス可能である。変更に対する保護により、このアドレス情報は悪意あるプログラムによって変更されえない。
図9には、本発明の第二の特徴による演算装置の例が、概略的に例示してある。簡略化するために、A,Bの2つのモジュールのみが示してある。これらの各モジュールは、デジタル署名に用いる秘密鍵と公開鍵の対応するペアをランタイムに生成するための鍵生成部212を有している。A,Bの各モジュールはまた、秘密鍵を用いてメッセージにデジタル署名を添付するための署名添付部211と、それに加えて公開鍵を用いてデジタル署名を照合するための署名照合部210を有する。各モジュールのアドレス領域213は、それぞれのモジュールの公開鍵と、他のモジュールの変更に対して保護された記憶領域内の固定アドレスと、ハードコードされる変更に対して保護された領域214を有する。
攻撃者によるオフライン分析を無意味なものにするべく、そして、マン・イン・ザ・ミドル アタックや、多様な攻撃を防止すべく、本発明の第二の特徴の特定の実施例は、以下の特徴を持つ:
1.デジタル署名の生成と照合に使用される秘密鍵と公開鍵は、送り手による各通信シーケンスのために、繰り返し、ランタイムで生成される。
2.そのカレントな公開鍵のデポジットのための変更に対して保護された記憶領域内の固定アドレスは、各通信主体に割り当てられる。
3.2.で特定される、モジュールが通信する各主体の名前とアドレスは、モジュールにハードコードされる。これらの特徴のためには、以下の前提条件が必要である:
−変更に対して保護されうる、すなわち、リード・オンリーに設定可能小さな容量の記憶装置。
−ランタイムにアドレス空間に設置されたモジュールの名前を返すasm関数
−暗号強度の高いハッシュ関数
−デジタル署名を生成、照合する能力
本発明の第二の特徴による通信方法の例をより詳細に述べる:
モジュールAの前処理:
i) 公開鍵のデポジットのための変更に対して保護された記憶領域内の固定アドレスを、Aに割り当て、Aにハードコードする。
ii)Aが通信しようとする各モジュールの公開鍵の固定アドレスをAにハードコードする。
AとB2つのモジュール間での通信(n個の主体に拡張可能):
段階1: 全体の前処理
i) 本発明の第一の特徴の例における段階1から3ので述べたように、各モジュールは、インストールされ、スタートする。
段階2: 通信の前処理
i) AとBは互いに、保護された通信を構築する意思を合図する。
ii) Aは、鍵のペアを生成し、変更に対して保護された記憶領域内のそのアドレスに公開鍵を書き込む(各通信モジュールが、このステップを行う)。
iii) Aは、Bの公開鍵を変更に対して保護された記憶領域から選び出す(各通信モジュールが、このステップを行う)。
iv) 保護された通信: AとBはデジタル署名が添付されたメッセージを交換する。
v) 追加: Aは、他のモジュール同様、変更に対して保護された記憶領域内のその公開鍵を無効にする。例えば、ゼロのような同意された無意味な値にすることで行う。
通信を妨害する悪意あるプログラムの能力は、動作環境の通信モデルにより決定される。本発明による方法の防御の強度に対する本質的な鍵は、通信主体のカレントな公開鍵を保持する小さな変更に対して保護された記憶領域の提供である。以下の特徴がなくてはならない。
a)通信主体自身は、保護された通信を行うことをコミットメントしたのち、ランタイムに生成されたカレントな公開鍵を保持する変更に対して保護された記憶領域への一時的な変更権限を持たなくてはならない。
b)いかなる他のプログラムも公開鍵を変更できない。したがって、起こりうる悪意あるプログラムは、変更に対して保護された記憶領域(リード・オンリーアクセスは保持された(秘密にしておく必要のない)公開鍵に対して禁止される必要はない)に対するどのような変更権限を持ってはならない。
本発明の第一の特徴にあるケースのように、動作環境において、このタイプのストレージは、アクセスコントロール又は/及びユーザアカウントで実現されうる。
以下の起こりうる攻撃と、前述のシステムのもたらす結果について検討する。
1.マン・イン・ザ・ミドル アタック: この攻撃は、攻撃者が、彼が持つ秘密鍵と対をなす彼自身の公開鍵で、1つ、又はそれ以上の主体の公開鍵を置き換える能力を持つことを想定している。
防御: 悪意あるプログラムが、公開鍵のための記憶領域に対する変更権限を持つことは起こりえない。
2.攻撃: 公開鍵の真正性は、今や、プログラムが、その通信パートナーの公開鍵の正しいアドレスを有することに依存している。そのアドレスは、プログラムにハードコードされる。悪意あるプログラムは、すなわち、プログラムコードを変更でき、オリジナルのアドレスを偽造したものに置き換えることができる。
防御: そのような変更により、本発明の第一の特徴に記載されたプログラムのアドレス空間の完全性テストが不成功に終わるであろう。
3.攻撃: 通信シーケンスにメッセージが挿入される。
防御: デジタル署名は、メッセージの真正性の欠如を明らかにするであろう。
4.攻撃: 通信主体のプログラムコードのコピーが、オフライン分析のために、ネットワークを介して送信される。
防御: そのコードは、何の秘密データも有していない。
5.攻撃: ランタイムに生成された秘密鍵は、パーティの仮想メモリにおいてのみ保持される。攻撃者は、通信主体の秘密鍵を探して仮想メモリをサーチする。
防御: 各通信シーケンスのために新たな鍵が生成される。鍵の長さは、オンライン分析が鍵を貶めるのに不十分であるように選択される。たいていの場合、仮想メモリは、他のプログラムにはアクセス不能であり、スキャンは不可能である。他方、鍵のライフタイムの短さにより、それらの長さは非常に短くできる。そのことは、パターン指向のスキャンの有効性を下げ、無用なものにする。
保護された通信は、悪意あるプログラムの存在下ですら、行うことが可能である。悪意あるプログラムは、基礎をなす通信モデルがこれを許す限り、通信を妨害できるが、通信の完全性と真正性に対する侵害は、本発明の方法で検知可能である。
本発明による保護されたプログラムの実行と保護された通信は、基礎的な防御特性を与える多くの動作環境において行うことができる。その結果は、広く使用されているオペレーティングシステム、また同様に、独自の仕様を持つ動作環境に適用可能である。例えば、携帯装置等である。
図2は、アドレス空間に対するコンピュータプログラムの実行を示す概略図である。 図2は、デジタル署名を用いたメッセージの送信のプロシージャを示す概略フローチャートである。 図3は、本発明が実現されるコンピュータ装置の概略図である。 図4は、本発明の第一の特徴をもつ実施例の方法ステップを例示する概略図である。 図5は、図4のステップS20の動作の概略フローチャートである。 図6は、本発明の第一の特徴をもつ具体的な実施例による、プログラムインストール・プロシージャの概略フローチャートである。 図7は、本発明の第一の特徴をもつ実施例におけるハッシュ関数生成の動作を例示する概略図である。 図8は、互いに通信する複数のモジュールを持つ演算装置の概略図である。 図9は、本発明の第二の特徴をもつ具体的な実施例による、演算装置の概略図である。 図10は、本発明の第二の特徴による方法の具体的な実施例の方法ステップを例示する概略フローチャートである。 図11は、本発明の第二の特徴による具体的な実施例のインストール・プロシージャの方法ステップを例示する概略フローチャートである。
符号の説明
50: コンピュータ装置
51: 処理部
52: 入出力部
53: メモリ
54: 変更に対して保護された記憶領域
60: プログラムのアドレス空間
61: ランタイム・ライブラリ
62: オブジェクト・モジュール
63: 開始コマンド
64: 入力データ
65: 出力データ
66: ドライバ装置
67: ハードウェア装置
68: ソフトウェアプロセス
69: サービス機能
100: 動作環境
101: サービス機能
102: asm関数
103: ハッシュ関数
110: プログラムP
115: Pのアドレス空間
120: 記憶装置
121: 変更に対して保護された記憶領域
200: 演算装置
210: 署名照合部
211: 署名添付部
212: 鍵生成部
213: 記憶装置
214: 変更に対して保護された記憶領域

Claims (30)

  1. コンピュータ装置上で動作するコンピュータ・プログラムの完全性を保護する方法であって、
    プログラムの実行を開始するステップと、
    プログラムのアドレス空間に対する権限の無い変更が発生したか否かを検知するステップと、
    権限の無い変更が検知された場合にはプログラムの実行を終了し、そのような変更が検知されなかった場合にはプログラムの実行を継続するステップと
    を含む方法。
  2. プログラムのアドレス空間に対する権限の無い変更の発生が検知された場合にエラーメッセージが出力される請求項1に記載の方法。
  3. 検知するステップは、
    プログラムのプログラムモジュールとプログラムにより使用されるランタイム・ライブラリと対する権限の無い変更の検知を含む請求項1、又は2に記載の方法。
  4. 検知するステップは、
    プログラムのアドレス空間のハッシュ関数と参照ハッシュ値との比較を含む請求項3に記載の方法。
  5. 少なくとも100ビット長、望ましくは少なくとも160ビット長の、暗号として強力なハッシュ関数を使用する請求項4に記載の方法。
  6. プログラム・モジュールのハッシュ関数h(M)を演算するステップと、
    ランタイム・ライブラリのハッシュ関数h(L)を演算するステップと、
    を含むプログラムのインストール・プロシージャを有する、請求項4又は5に記載の方法。
  7. インストール・プロシージャは、プログラムの権利者により与えられたモジュールのハッシュ関数h(M)と、動作環境により与えられた外部モジュールのハッシュ関数h(M)の演算を含む請求項6に記載の方法。
  8. インストール・プロシージャは、プログラムの更新がインストールされた場合に、繰り返される請求項6又は7に記載の方法。
  9. h(M)とh(L)は演算装置の変更に対して保護された記憶領域(54; 121)に保持される請求項6、7又は8に記載の方法。
  10. 検知するステップは、
    プログラム実行の起動時のプログラム・モジュールのハッシュ関数h(M)と、ランタイム・ライブラリのh(L)の演算と、
    (M)、h(L)と変更に対して保護された記憶領域に保持されているハッシュ関数h(M)、h(L)との比較を含む請求項9に記載の方法。
  11. プログラム・モジュールの名前と、プログラムのアドレス空間のランタイム・ライブラリの名前を取得するためのasm関数の使用を含む請求項3から10に記載の方法。
  12. 変更に対して保護された記憶領域の変更に対する保護は、アクセス制御又は/及びユーザ・アカウントを通じて動作環境によって実現される請求項9から11のいずれか一に記載の方法。
  13. プログラム自身がインストール・プロシージャ間に変更に対して保護された記憶領域への一時的なアクセスを認められる請求項9から12のいずれか一に記載の方法。
  14. 検知するステップは欠落プログラム・モジュール、追加プログラム・モジュール、又は変更プログラム・モジュールの認識を含む請求項3から13のいずれか一に記載の方法。
  15. 保護されたプログラムは、デジタル署名プログラムや、金融取引プログラムのように安全性の高いプログラムである請求項1から14のいずれか一に記載の方法。
  16. プロセッサ部(51)、少なくとも一つの記憶装置(53)、及び入出力部(52)を有し、請求項1から15のいずれか一に記載の方法を実行するようプログラムされている演算装置。
  17. 請求項1から15のいずれか一に記載の方法を実行するためのプログラム・コードを有するコンピュータ・プログラム
  18. 請求項1から15のいずれか一に記載の方法を実行するためのプログラム・コードを有するコンピュータ・プログラムを保持する記憶媒体。
  19. プログラムの更新がインストールされると、インストール・プロシージャが繰り返される請求項6又は7のいずれか一に記載の方法。
  20. 演算装置の少なくとも2つの通信主体(A・B)間の通信方法であって、
    少なくとも2つの通信主体間の通信シーケンスを開始するステップと、
    通信シーケンスごとの各通信主体において、デジタル署名のための秘密鍵と公開鍵を生成するステップと、
    一つの通信主体の公開鍵を他の通信主体が利用可能とするステップと、
    秘密鍵と公開鍵のそれぞれを用いて暗号化された、通信主体間のデジタル署名付メッセージを交換するステップと、
    を含む通信方法。
  21. 変更に対して保護された記憶領域内の予め定義された固定アドレスに各通信主体の公開鍵を書き込むステップを含む請求項20に記載の方法。
  22. 通信シーケンスを終了する際に各通信主体の公開鍵を無効にするステップを含む請求項20又は21に記載の方法。
  23. 各通信主体に対するインストール・プロシージャを含む方法であって、
    変更に対して保護された記憶領域を定義するステップと、
    通信主体の公開鍵用の固定アドレスを変更に対して保護された記憶領域にハード・コードするステップと、
    安全な通信が行われるべき他の通信主体の公開鍵の固定アドレスを変更に対して保護された記憶領域にハード・コードするステップと、
    を含む請求項21又は22に記載の方法。
  24. 通信主体の操作が開始した際に、請求項1から15のいずれか一に記載の完全性保護プロシージャを含む請求項20から23のいずれか一に記載の方法。
  25. 通信主体はコンピュータ・システムのローカル・モジュールである請求項20から24のいずれか一に記載の方法。
  26. 複数の機能的モジュール(A,B,C,D)を含む演算装置であって、
    秘密鍵とそれに対応する公開鍵を生成する鍵生成部(212)と、
    秘密鍵を用いたデジタル署名付メッセージを供給する署名添付部(211)と、
    公開鍵を保持するための固定アドレスと、さらに、安全な通信が行われるべき他のモジュールの公開鍵の固定アドレスとを有する変更に対して保護された記憶領域(214)と、
    それぞれの送信側モジュールの公開鍵を用いて、他のモジュールから受信したメッセージを照合する署名照合部(210)と
    を含む演算装置。
  27. 演算装置は、パーソナル・コンピュータである請求項26に記載の方法。
  28. 演算装置は、ラップトップ、パーソナル・デジタル・アシスタント、又は、携帯電話といった携帯装置である請求項26に記載の方法。
  29. コンピュータ上で実行される際に、請求項20から25のいずれか一に記載の方法を行うためのプログラム・コードを含むコンピュータ・プログラム。
  30. 請求項29に記載のコンピュータ・プログラムを保持する記憶媒体。
JP2003579062A 2002-03-26 2003-03-06 コンピュータプログラムの完全性の保護方法 Pending JP2005535945A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP02006935A EP1349033B1 (en) 2002-03-26 2002-03-26 A method of protecting the integrity of a computer program
PCT/EP2003/002314 WO2003081397A2 (en) 2002-03-26 2003-03-06 A method of protecting the integrity of a computer program

Publications (1)

Publication Number Publication Date
JP2005535945A true JP2005535945A (ja) 2005-11-24

Family

ID=27798808

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003579062A Pending JP2005535945A (ja) 2002-03-26 2003-03-06 コンピュータプログラムの完全性の保護方法

Country Status (9)

Country Link
US (1) US7228434B2 (ja)
EP (1) EP1349033B1 (ja)
JP (1) JP2005535945A (ja)
AT (1) ATE263391T1 (ja)
AU (1) AU2003219022A1 (ja)
DE (1) DE60200323T2 (ja)
ES (1) ES2218484T3 (ja)
HK (1) HK1055486A1 (ja)
WO (1) WO2003081397A2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009187438A (ja) * 2008-02-08 2009-08-20 Dainippon Printing Co Ltd Icカードへの攻撃検知方法、icカードおよびicカード用プログラム
JP2010102579A (ja) * 2008-10-24 2010-05-06 Hitachi Ltd 情報処理装置、及びコンピュータプログラム
KR101295428B1 (ko) * 2011-09-09 2013-08-23 주식회사 팬택 스마트 단말기에서 어플리케이션의 권한정보 관리 장치 및 제어 방법
WO2013129212A1 (ja) 2012-02-27 2013-09-06 三菱重工業株式会社 制御プログラム管理システム、及び制御プログラムの変更方法
WO2021059475A1 (ja) * 2019-09-27 2021-04-01 日本電気株式会社 ホワイトリスト生成装置、ホワイトリスト生成方法、及び、プログラムが記録された非一時的なコンピュータ可読媒体

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7331062B2 (en) * 2002-08-30 2008-02-12 Symantec Corporation Method, computer software, and system for providing end to end security protection of an online transaction
FR2857473B1 (fr) * 2003-07-11 2005-09-16 Oberthur Card Syst Sa Procede de securisation de l'execution d'un programme informatique, notamment dans une carte a microcircuit
US8832842B1 (en) * 2003-10-07 2014-09-09 Oracle America, Inc. Storage area network external security device
US7350079B2 (en) 2003-11-20 2008-03-25 International Business Machines Corporation Apparatus and method for inter-program authentication using dynamically-generated public/private key pairs
US7376970B2 (en) * 2004-02-20 2008-05-20 Microsoft Corporation System and method for proactive computer virus protection
US20050223993A1 (en) * 2004-04-08 2005-10-13 Blomiley Eric R Deposition apparatuses; methods for assessing alignments of substrates within deposition apparatuses; and methods for assessing thicknesses of deposited layers within deposition apparatuses
GB2435761B (en) * 2004-09-21 2009-07-08 Snapin Software Inc Secure software such as for use with a cell phone or mobile device
US8015595B2 (en) * 2004-09-23 2011-09-06 Igt Methods and apparatus for negotiating communications within a gaming network
US8156488B2 (en) 2004-10-20 2012-04-10 Nokia Corporation Terminal, method and computer program product for validating a software application
GB2434673B (en) * 2004-11-12 2009-10-14 Discretix Technologies Ltd Method, device, and system of securely storing data
US7827608B2 (en) * 2005-02-08 2010-11-02 International Business Machines Corporation Data leak protection system, method and apparatus
US20060195689A1 (en) * 2005-02-28 2006-08-31 Carsten Blecken Authenticated and confidential communication between software components executing in un-trusted environments
US20060236100A1 (en) * 2005-04-19 2006-10-19 Guruprasad Baskaran System and method for enhanced layer of security to protect a file system from malicious programs
US8015415B1 (en) * 2005-05-31 2011-09-06 Adobe Systems Incorporated Form count licensing
WO2006133222A2 (en) * 2005-06-07 2006-12-14 Vmware, Inc. Constraint injection system for immunizing software programs against vulnerabilities and attacks
US7895651B2 (en) 2005-07-29 2011-02-22 Bit 9, Inc. Content tracking in a network security system
US8984636B2 (en) 2005-07-29 2015-03-17 Bit9, Inc. Content extractor and analysis system
US8272058B2 (en) 2005-07-29 2012-09-18 Bit 9, Inc. Centralized timed analysis in a network security system
DE602005002652T2 (de) * 2005-08-05 2008-07-10 Sap Ag System und Verfahren für das Erneuern von Schlüsseln, welche in Public-Key Kryptographie genutzt werden
US7647636B2 (en) * 2005-08-24 2010-01-12 Microsoft Corporation Generic RootKit detector
US8219829B2 (en) * 2005-12-08 2012-07-10 Intel Corporation Scheme for securing locally generated data with authenticated write operations
WO2007089786A2 (en) * 2006-01-30 2007-08-09 Sudhakar Govindavajhala Identifying unauthorized privilege escalations
US8510596B1 (en) 2006-02-09 2013-08-13 Virsec Systems, Inc. System and methods for run time detection and correction of memory corruption
US8443354B1 (en) * 2006-03-29 2013-05-14 Symantec Corporation Detecting new or modified portions of code
US20080034350A1 (en) * 2006-04-05 2008-02-07 Conti Gregory R System and Method for Checking the Integrity of Computer Program Code
US20080022378A1 (en) * 2006-06-21 2008-01-24 Rolf Repasi Restricting malicious libraries
KR101055712B1 (ko) * 2006-06-30 2011-08-11 인터내셔널 비지네스 머신즈 코포레이션 모바일 장치에서의 메시지 핸들링
US8010995B2 (en) 2006-09-08 2011-08-30 International Business Machines Corporation Methods, systems, and computer program products for implementing inter-process integrity serialization
EP2074807A4 (en) * 2006-10-03 2012-03-28 Nuance Communications Inc SYSTEMS AND METHODS FOR STORING OR PERFORMING FUNCTIONS IN REMOVABLE MEMORY, SUCH AS THE SUBSCRIBER IDENTITY MODULE OF A MOBILE DEVICE
US20080134321A1 (en) * 2006-12-05 2008-06-05 Priya Rajagopal Tamper-resistant method and apparatus for verification and measurement of host agent dynamic data updates
WO2008101135A1 (en) 2007-02-14 2008-08-21 Snapin Software Inc. System and method for securely managing data stored on mobile devices, such as enterprise mobility data
US8375219B2 (en) * 2007-10-24 2013-02-12 Microsoft Corporation Program and operation verification
US8250475B2 (en) * 2007-12-14 2012-08-21 International Business Machines Corporation Managing icon integrity
US7921195B2 (en) * 2008-06-09 2011-04-05 International Business Machines Corporation Optimizing service processing based on business information, operational intelligence, and self-learning
DE102008046639B4 (de) 2008-09-09 2011-02-24 Adrian Dr. Spalka Verfahren zur Bereitstellung mindestens einer Leistung über ein Serversystem
EP2278514B1 (en) * 2009-07-16 2018-05-30 Alcatel Lucent System and method for providing secure virtual machines
KR101047884B1 (ko) * 2009-08-11 2011-07-08 주식회사 안철수연구소 가상 환경을 이용한 데이터 보호 방법과 장치 및 이 방법을 수행하는 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체
JP5440053B2 (ja) 2009-09-14 2014-03-12 ソニー株式会社 情報処理装置及び情報処理方法、並びにコンピューター・プログラム
KR101089157B1 (ko) * 2010-03-05 2011-12-02 주식회사 안철수연구소 클라이언트 가상화를 이용한 서버의 논리적 망분리 시스템 및 방법
US9098333B1 (en) 2010-05-07 2015-08-04 Ziften Technologies, Inc. Monitoring computer process resource usage
US8904189B1 (en) 2010-07-15 2014-12-02 The Research Foundation For The State University Of New York System and method for validating program execution at run-time using control flow signatures
RU2449348C1 (ru) * 2010-11-01 2012-04-27 Закрытое акционерное общество "Лаборатория Касперского" Система и способ для антивирусной проверки на стороне сервера скачиваемых из сети данных
US20130061328A1 (en) * 2011-09-06 2013-03-07 Broadcom Corporation Integrity checking system
WO2014046974A2 (en) 2012-09-20 2014-03-27 Case Paul Sr Case secure computer architecture
DE102013201937A1 (de) * 2013-02-06 2014-08-07 Areva Gmbh Vorrichtung und Verfahren zur Erkennung von unbefugten Manipulationen des Systemzustandes einer Steuer- und Regeleinheit einer kerntechnischen Anlage
US20160055331A1 (en) * 2013-03-28 2016-02-25 Irdeto B.V. Detecting exploits against software applications
WO2015038944A1 (en) 2013-09-12 2015-03-19 Virsec Systems, Inc. Automated runtime detection of malware
EP3161638A1 (en) 2014-06-24 2017-05-03 Virsec Systems, Inc. Automated root cause analysis of single or n-tiered applications
US10354074B2 (en) 2014-06-24 2019-07-16 Virsec Systems, Inc. System and methods for automated detection of input and output validation and resource management vulnerability
ES2905268T3 (es) 2014-07-30 2022-04-07 Siemens Ag Protección de un componente de automatización contra manipulaciones de programa mediante coincidencia de firmas
US9411979B2 (en) 2014-08-07 2016-08-09 Vmware, Inc. Embedding secret data in code
US9398019B2 (en) * 2014-08-07 2016-07-19 Vmware, Inc. Verifying caller authorization using secret data embedded in code
US10922402B2 (en) 2014-09-29 2021-02-16 Vmware, Inc. Securing secret data embedded in code against compromised interrupt and exception handlers
US9449189B1 (en) 2015-11-03 2016-09-20 International Business Machines Corporation Protection of state data in computer system code
CA3027728A1 (en) 2016-06-16 2017-12-21 Virsec Systems, Inc. Systems and methods for remediating memory corruption in a computer application
DE102016219848A1 (de) * 2016-10-12 2018-04-12 Siemens Aktiengesellschaft Verfahren und Vorrichtung zum Bereitstellen einer gesicherten Kommunikation innerhalb eines echtzeitfähigen Kommunikationsnetzwerkes
WO2020010515A1 (en) * 2018-07-10 2020-01-16 Apple Inc. Identity-based message integrity protection and verification for wireless communication
JP7105640B2 (ja) 2018-07-10 2022-07-25 キヤノン株式会社 画像処理装置、その制御方法、及びプログラム
US20220200787A1 (en) * 2020-12-22 2022-06-23 ProtectedBy.Al, Inc. System and method for securing computer code using dynamically generated digital signatures
US20220303138A1 (en) * 2021-03-19 2022-09-22 Lexmark International, Inc. Security Device Computation Matching
CN113886862B (zh) * 2021-12-06 2022-04-15 粤港澳大湾区数字经济研究院(福田) 一种可信计算***及基于可信计算***的资源处理方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4104721A (en) * 1976-12-30 1978-08-01 International Business Machines Corporation Hierarchical security mechanism for dynamically assigning security levels to object programs
US4310720A (en) * 1978-03-31 1982-01-12 Pitney Bowes Inc. Computer accessing system
US4328542A (en) * 1979-11-07 1982-05-04 The Boeing Company Secure implementation of transition machine computer
US4494114B1 (en) * 1983-12-05 1996-10-15 Int Electronic Tech Security arrangement for and method of rendering microprocessor-controlled electronic equipment inoperative after occurrence of disabling event
US4609777A (en) * 1984-02-22 1986-09-02 Gordian Systems, Inc. Solid state key for controlling access to computer software
US5343527A (en) * 1993-10-27 1994-08-30 International Business Machines Corporation Hybrid encryption method and system for protecting reusable software components
JPH07230380A (ja) * 1994-02-15 1995-08-29 Internatl Business Mach Corp <Ibm> 適用業務プログラムの利用管理方法およびシステム
US5638443A (en) * 1994-11-23 1997-06-10 Xerox Corporation System for controlling the distribution and use of composite digital works
ES2357472T3 (es) * 1995-06-29 2011-04-26 Igt Sistema de juego electrónico de casino con mayor capacidad de juego, de autenticación y de seguridad.
US5818939A (en) * 1996-12-18 1998-10-06 Intel Corporation Optimized security functionality in an electronic system
US6463535B1 (en) * 1998-10-05 2002-10-08 Intel Corporation System and method for verifying the integrity and authorization of software before execution in a local platform

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009187438A (ja) * 2008-02-08 2009-08-20 Dainippon Printing Co Ltd Icカードへの攻撃検知方法、icカードおよびicカード用プログラム
JP2010102579A (ja) * 2008-10-24 2010-05-06 Hitachi Ltd 情報処理装置、及びコンピュータプログラム
KR101295428B1 (ko) * 2011-09-09 2013-08-23 주식회사 팬택 스마트 단말기에서 어플리케이션의 권한정보 관리 장치 및 제어 방법
WO2013129212A1 (ja) 2012-02-27 2013-09-06 三菱重工業株式会社 制御プログラム管理システム、及び制御プログラムの変更方法
US9823639B2 (en) 2012-02-27 2017-11-21 Mitsubishi Heavy Industries, Ltd. Control program management system and method for changing control program
WO2021059475A1 (ja) * 2019-09-27 2021-04-01 日本電気株式会社 ホワイトリスト生成装置、ホワイトリスト生成方法、及び、プログラムが記録された非一時的なコンピュータ可読媒体
JPWO2021059475A1 (ja) * 2019-09-27 2021-04-01
JP7283551B2 (ja) 2019-09-27 2023-05-30 日本電気株式会社 ホワイトリスト生成装置、ホワイトリスト生成方法、及び、ホワイトリスト生成プログラム

Also Published As

Publication number Publication date
ES2218484T3 (es) 2004-11-16
WO2003081397A2 (en) 2003-10-02
DE60200323T2 (de) 2005-02-24
HK1055486A1 (en) 2004-01-09
EP1349033A1 (en) 2003-10-01
AU2003219022A1 (en) 2003-10-08
ATE263391T1 (de) 2004-04-15
WO2003081397A3 (en) 2004-09-23
US20030188174A1 (en) 2003-10-02
DE60200323D1 (de) 2004-05-06
US7228434B2 (en) 2007-06-05
EP1349033B1 (en) 2004-03-31

Similar Documents

Publication Publication Date Title
EP1349033B1 (en) A method of protecting the integrity of a computer program
CN109923548B (zh) 通过监管进程访问加密数据实现数据保护的方法、***及计算机程序产品
JP4463887B2 (ja) コア・データ機密事項の保護記憶
US9665708B2 (en) Secure system for allowing the execution of authorized computer program code
Jansen et al. Mobile agent security
US7299364B2 (en) Method and system to maintain application data secure and authentication token for use therein
Lampson Computer security in the real world
JP4689946B2 (ja) 安全なデータを使用して情報処理を実行するシステム
JP4689945B2 (ja) リソースアクセス方法
US6167521A (en) Securely downloading and executing code from mutually suspicious authorities
US7526654B2 (en) Method and system for detecting a secure state of a computer system
US20090319793A1 (en) Portable device for use in establishing trust
CN111431707B (zh) 业务数据信息处理方法、装置、设备以及可读存储介质
JP2008502251A (ja) プロセスを使用するキーストアを有するコンピュータ装置及びコンピュータ装置を動作させる方法
Condé et al. Using Intel SGX to protect authentication credentials in an untrusted operating system
WO2001073533A1 (en) System and method for safeguarding electronic files and digital information in a network environment
US10521613B1 (en) Adaptive standalone secure software
Zachary et al. Bidirectional mobile code trust management using tamper resistant hardware
JP2006190050A (ja) マルチタスク実行システム及びマルチタスク実行方法
Tsiligiridis Security for mobile agents: privileges and state appraisal mechanism
Jaeger et al. Security requirements for the deployment of the linux kernel in enterprise systems
CN114547639A (zh) 数据安全性
Kursawe ESAT/COSIC
Imran Internet Security Agent
Piessens Developing Secure Software Applications DRAFT