JP2005535945A - コンピュータプログラムの完全性の保護方法 - Google Patents
コンピュータプログラムの完全性の保護方法 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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における全てのモジュールM1,...,Mkの名前に加えて、全てのランタイムライブラリL1,...,Lmの名前を返す。その後、モジュールセットのハッシュ関数h(M)とランタイムライブラリのハッシュ関数h(L)がハッシュ関数機能103を用いて算出される。あるいは、モジュールとライブラリの連結されたハッシュ関数が用いられても良い。
以下、本発明の第一の特徴である方法の実施例を詳細に説明する。
前提条件:
− 変更に対して保護されうるリード・オンリーにセットされた小さい量のストレージ。
− ランタイムにアドレス空間に設置されたモジュールの名前を返すasm関数
−暗号強度の高いハッシュ関数、例えば160ビット
プログラムPのためのプロシージャ:
段階1: Pの前処理
i) Pにより与えられるモジュールのセットを、M={M1,...,Mk}とする。
ii) ハッシュ関数hでセット値h(M)={h(M1),...,h(Mk)}を算出する。
段階2: Pのインストール
i) Pとhを送り先にコピー
ii) Pに変更に対して保護された記憶領域への書き込み権限を付与
iii) h(M)を変更に対して保護された記憶領域へ設置
iv) Pの実行開始
v) asm関数を用いて、対象コンピュータ上のPのアドレス空間に設置されたランタイムライブラリの名前のサブセットである、L={L1,...,Lm}を取得。
vi) hでセット値 h(L)={h(L1),...,h(Lm)}を算出
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.攻撃: ランタイムに生成された秘密鍵は、パーティの仮想メモリにおいてのみ保持される。攻撃者は、通信主体の秘密鍵を探して仮想メモリをサーチする。
防御: 各通信シーケンスのために新たな鍵が生成される。鍵の長さは、オンライン分析が鍵を貶めるのに不十分であるように選択される。たいていの場合、仮想メモリは、他のプログラムにはアクセス不能であり、スキャンは不可能である。他方、鍵のライフタイムの短さにより、それらの長さは非常に短くできる。そのことは、パターン指向のスキャンの有効性を下げ、無用なものにする。
保護された通信は、悪意あるプログラムの存在下ですら、行うことが可能である。悪意あるプログラムは、基礎をなす通信モデルがこれを許す限り、通信を妨害できるが、通信の完全性と真正性に対する侵害は、本発明の方法で検知可能である。
本発明による保護されたプログラムの実行と保護された通信は、基礎的な防御特性を与える多くの動作環境において行うことができる。その結果は、広く使用されているオペレーティングシステム、また同様に、独自の仕様を持つ動作環境に適用可能である。例えば、携帯装置等である。
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: 変更に対して保護された記憶領域
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に記載の方法。
- 検知するステップは、
プログラムのプログラムモジュールとプログラムにより使用されるランタイム・ライブラリと対する権限の無い変更の検知を含む請求項1、又は2に記載の方法。 - 検知するステップは、
プログラムのアドレス空間のハッシュ関数と参照ハッシュ値との比較を含む請求項3に記載の方法。 - 少なくとも100ビット長、望ましくは少なくとも160ビット長の、暗号として強力なハッシュ関数を使用する請求項4に記載の方法。
- プログラム・モジュールのハッシュ関数h(M)を演算するステップと、
ランタイム・ライブラリのハッシュ関数h(L)を演算するステップと、
を含むプログラムのインストール・プロシージャを有する、請求項4又は5に記載の方法。 - インストール・プロシージャは、プログラムの権利者により与えられたモジュールのハッシュ関数h(M)と、動作環境により与えられた外部モジュールのハッシュ関数h(M)の演算を含む請求項6に記載の方法。
- インストール・プロシージャは、プログラムの更新がインストールされた場合に、繰り返される請求項6又は7に記載の方法。
- h(M)とh(L)は演算装置の変更に対して保護された記憶領域(54; 121)に保持される請求項6、7又は8に記載の方法。
- 検知するステップは、
プログラム実行の起動時のプログラム・モジュールのハッシュ関数h*(M)と、ランタイム・ライブラリのh*(L)の演算と、
h*(M)、h*(L)と変更に対して保護された記憶領域に保持されているハッシュ関数h(M)、h(L)との比較を含む請求項9に記載の方法。 - プログラム・モジュールの名前と、プログラムのアドレス空間のランタイム・ライブラリの名前を取得するためのasm関数の使用を含む請求項3から10に記載の方法。
- 変更に対して保護された記憶領域の変更に対する保護は、アクセス制御又は/及びユーザ・アカウントを通じて動作環境によって実現される請求項9から11のいずれか一に記載の方法。
- プログラム自身がインストール・プロシージャ間に変更に対して保護された記憶領域への一時的なアクセスを認められる請求項9から12のいずれか一に記載の方法。
- 検知するステップは欠落プログラム・モジュール、追加プログラム・モジュール、又は変更プログラム・モジュールの認識を含む請求項3から13のいずれか一に記載の方法。
- 保護されたプログラムは、デジタル署名プログラムや、金融取引プログラムのように安全性の高いプログラムである請求項1から14のいずれか一に記載の方法。
- プロセッサ部(51)、少なくとも一つの記憶装置(53)、及び入出力部(52)を有し、請求項1から15のいずれか一に記載の方法を実行するようプログラムされている演算装置。
- 請求項1から15のいずれか一に記載の方法を実行するためのプログラム・コードを有するコンピュータ・プログラム
- 請求項1から15のいずれか一に記載の方法を実行するためのプログラム・コードを有するコンピュータ・プログラムを保持する記憶媒体。
- プログラムの更新がインストールされると、インストール・プロシージャが繰り返される請求項6又は7のいずれか一に記載の方法。
- 演算装置の少なくとも2つの通信主体(A・B)間の通信方法であって、
少なくとも2つの通信主体間の通信シーケンスを開始するステップと、
通信シーケンスごとの各通信主体において、デジタル署名のための秘密鍵と公開鍵を生成するステップと、
一つの通信主体の公開鍵を他の通信主体が利用可能とするステップと、
秘密鍵と公開鍵のそれぞれを用いて暗号化された、通信主体間のデジタル署名付メッセージを交換するステップと、
を含む通信方法。 - 変更に対して保護された記憶領域内の予め定義された固定アドレスに各通信主体の公開鍵を書き込むステップを含む請求項20に記載の方法。
- 通信シーケンスを終了する際に各通信主体の公開鍵を無効にするステップを含む請求項20又は21に記載の方法。
- 各通信主体に対するインストール・プロシージャを含む方法であって、
変更に対して保護された記憶領域を定義するステップと、
通信主体の公開鍵用の固定アドレスを変更に対して保護された記憶領域にハード・コードするステップと、
安全な通信が行われるべき他の通信主体の公開鍵の固定アドレスを変更に対して保護された記憶領域にハード・コードするステップと、
を含む請求項21又は22に記載の方法。 - 通信主体の操作が開始した際に、請求項1から15のいずれか一に記載の完全性保護プロシージャを含む請求項20から23のいずれか一に記載の方法。
- 通信主体はコンピュータ・システムのローカル・モジュールである請求項20から24のいずれか一に記載の方法。
- 複数の機能的モジュール(A,B,C,D)を含む演算装置であって、
秘密鍵とそれに対応する公開鍵を生成する鍵生成部(212)と、
秘密鍵を用いたデジタル署名付メッセージを供給する署名添付部(211)と、
公開鍵を保持するための固定アドレスと、さらに、安全な通信が行われるべき他のモジュールの公開鍵の固定アドレスとを有する変更に対して保護された記憶領域(214)と、
それぞれの送信側モジュールの公開鍵を用いて、他のモジュールから受信したメッセージを照合する署名照合部(210)と
を含む演算装置。 - 演算装置は、パーソナル・コンピュータである請求項26に記載の方法。
- 演算装置は、ラップトップ、パーソナル・デジタル・アシスタント、又は、携帯電話といった携帯装置である請求項26に記載の方法。
- コンピュータ上で実行される際に、請求項20から25のいずれか一に記載の方法を行うためのプログラム・コードを含むコンピュータ・プログラム。
- 請求項29に記載のコンピュータ・プログラムを保持する記憶媒体。
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)
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)
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)
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 |
-
2002
- 2002-03-26 AT AT02006935T patent/ATE263391T1/de not_active IP Right Cessation
- 2002-03-26 DE DE60200323T patent/DE60200323T2/de not_active Expired - Fee Related
- 2002-03-26 EP EP02006935A patent/EP1349033B1/en not_active Expired - Lifetime
- 2002-03-26 ES ES02006935T patent/ES2218484T3/es not_active Expired - Lifetime
- 2002-06-19 US US10/175,343 patent/US7228434B2/en not_active Expired - Fee Related
-
2003
- 2003-03-06 JP JP2003579062A patent/JP2005535945A/ja active Pending
- 2003-03-06 AU AU2003219022A patent/AU2003219022A1/en not_active Abandoned
- 2003-03-06 WO PCT/EP2003/002314 patent/WO2003081397A2/en active Application Filing
- 2003-10-24 HK HK03107677A patent/HK1055486A1/xx not_active IP Right Cessation
Cited By (8)
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 |