JP2004509392A - Software Secure Authenticated Channel - Google Patents

Software Secure Authenticated Channel Download PDF

Info

Publication number
JP2004509392A
JP2004509392A JP2002524793A JP2002524793A JP2004509392A JP 2004509392 A JP2004509392 A JP 2004509392A JP 2002524793 A JP2002524793 A JP 2002524793A JP 2002524793 A JP2002524793 A JP 2002524793A JP 2004509392 A JP2004509392 A JP 2004509392A
Authority
JP
Japan
Prior art keywords
module
modules
signature
range
protected
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
JP2002524793A
Other languages
Japanese (ja)
Inventor
ロッツピーチ、ジェフリー
ナッサー、ステファン
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2004509392A publication Critical patent/JP2004509392A/en
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/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • G06F21/445Program or device authentication by mutual authentication, e.g. between devices or programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Circuits Of Receivers In General (AREA)
  • Stereophonic System (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

【課題】ソフトウェアのセキュア認証済チャネルを提供すること。
【解決手段】ソフトウェア製作者は、自己のモジュールを検査し、そのモジュールが占有するメモリ内のアドレスの範囲を判定する。メモリ内のアドレスの保護される範囲が、ハッカーによるパッチ当てなどの変更を可能にしないように事前に定義される。各製作者が、協調して処理を行うことをを望む他の全ての製作者に、記憶保護域を記述するアドレスの範囲およびモジュールの既知の適切なバージョンを配布する。他の製作者は、記憶保護域のディジタル署名を返し、これらのディジタル署名が、第1の製造業者のモジュールに保管される。それに相当するものとして、他方の製作者が、自分自身のモジュールに対して同一のことを行う。その後、2個のモジュールの間のセキュア通信チャネルを実現するために、モジュールが、まず、お互いに、前に作成られた署名を渡す。その後、真正の許可されたモジュールとの通信が行われていることを保証するために、署名および記憶保護域内のアドレス範囲の使用を介して、各モジュールが、他方のモジュールにパッチが当てられていないことを検査する。さらに、モジュールは、それぞれ、呼び出す予定の他のモジュール内のすべてのエントリ・ポイントが、実際に記憶保護域内にあることを検証する。両方のモジュールが信頼に値するものとして検証される場合に、これらのモジュールは、自由にお互いを呼び出すことができる。各モジュールは、呼び出された時に、他方のモジュールの記憶保護域内から呼び出されたことを検証しなければならない。
【選択図】図3
A secure authenticated channel for software is provided.
A software maker examines his module and determines the range of addresses in memory occupied by that module. The protected range of addresses in memory is predefined so as not to allow changes such as patching by hackers. Each producer distributes a range of addresses describing the protected area and a known suitable version of the module to all other producers who wish to work together. Other producers return the digital signatures of the protected area and these digital signatures are stored in the module of the first manufacturer. As an equivalent, the other creator does the same for his own module. Thereafter, the modules first pass each other a previously created signature in order to realize a secure communication channel between the two modules. Each module is then patched to the other module through signatures and the use of address ranges in the secure area to ensure that communication with the authentic authorized module is taking place. Inspect that there is no. In addition, each module verifies that all entry points in the other modules to be called are in fact protected. If both modules are verified as trustworthy, they can freely call each other. Each module, when called, must verify that it was called from within the protected area of the other module.
[Selection diagram] FIG.

Description

【0001】
【発明の属する技術分野】
本発明は、ソフトウェアの耐改竄性(tamper resistence)に関する。より具体的には、本発明は、システム上の2個のソフトウェア・モジュール間のセキュア認証済チャネル(Secure Authenticated Channel)を確立する方法および装置に関する。
【0002】
【従来の技術】
この開示において、情報処理ユニットを含むデバイスの製作者(manufacturer)をエンティティと称する。あるタイプのソフトウェア・アプリケーションは、自分自身をハッキングから保護しなければならない。例えば、DVDビデオ再生装置には、スクランブル方式を使用してユーザがDVDムービーをコピーできないようにする保護を含めることが、ライセンスによって要求されている。最近では、全米レコード協会によって開始されたSDMI(Secure Digital Music Initiative)が、耐改竄性を有するソフトウェアによってのみ満たすことができる要求仕様を公表した。
【0003】
SDMIの要求仕様では、特定のアプリケーションが、異なる製作者による異なるソフトウェア・モジュールから構成されることが想定されている。例えば、ある製作者は、IBM Electoronic Media Management System(商標)のようなインターネットを通じた音楽のセキュアなダウンロードを可能にする電子音楽配信システムを作成することができ、第2の製作者は、SONY(R)のメモリースティック・ウォークマン(商標)のようなセキュアなフラッシュ・メモリ音楽再生装置をサポートするソフトウェアを作成することができる。消費者は、購入し、ダウンロードした音楽を、自分のフラッシュ・メモリ音楽再生装置に置くことを望んでいる。
【0004】
SDMIの要求仕様には、2個の準拠するソフトウェア・モジュールの間のセキュア認証済チャネル(Secure Authenticated Channel)すなわちSACという概念が記載されている。そこでは、2の異なる製作者によって作成された、同一マシン上でお互いのエントリ・ポイントをセキュアに呼び出すことを望む2個のモジュールの間の通信を記述するモデルが提案されている。図1に、同一マシン(106)のメモリにロードされた少なくとも2個のモジュール(102、104)を含むセキュア認証済チャネル(100)が示されている。これらのモジュールは、異なるベンダによって作成され、公開されたAPIを使用して互いに通信する。不法な複製をするために自分自身を間に挟み音楽コンテンツを盗むハッキング・プログラムに対する保護はない。その理由により、SDMIは、認証の機構およびこれらの2つのモジュールの間の通信をセキュアなものとする機構(セキュア認証済チャネル)を要求する。
【0005】
図2に、SDMIの要求仕様に対応して設計された従来技術のソフトウェア・アーキテクチャのセキュリティ・コンテンツ(200)を示す。ソフトウェア・モジュールには、公開鍵証明書(202)、公開鍵(204)、および秘密鍵(206)が含まれる。例えば、SACは、下記のように実施される。
1.各モジュールが、自分自身の完全性(integrity)に対する責任を負っている。
2.各モジュールが、その公開鍵(204)を証明する標準的な公開鍵証明書(202)を有している。
3.各モジュールが、秘密に保持すべき秘密鍵(206)を有している。
4.標準的な公開鍵プロトコルを使用して、モジュールの間のセッション鍵を作成する。
5.後に続いてモジュール間でやりとりされるデータおよび制御を、セッション鍵(図2には図示せず)を用いて暗号化し、データの不正な改竄(tampering)または盗聴を防ぐ。
【0006】
【発明が解決しようとする課題】
本質的には、この手法は、2の当事者の間の通信を保護する周知のプロトコルである。残念ながら、SACに対してこの手法を使用することに対して幾つかの問題がある。セキュアな通信プロトコルでは、攻撃者が通信する二人の当事者の通信パイプラインの外部にいるだろうが、ソフトウェアに関してはそうではない。ハッカーは、両方のモジュールを見ることができ、一方または両方にパッチを当てることができるので、秘密鍵の秘密保持が現実の問題となる。同様に、各モジュールが、パッチを当てられ、または改竄をされてはいないことを確認する自己完全性の検査も非常に困難である。従って、このプロトコルは最弱のリンクと同程度に弱く、秘密鍵の一方が知られた場合や1のモジュールのパッチ当てが成功した場合にSACが破られることになる。
【0007】
【課題を解決するための手段】
本発明は、単一マシン上のソフトウェア・モジュールのピア・ツー・ピア認証の方法を提供する。この方法には、ソフトウェア・モジュールが占有するアドレスの保護される範囲を判定するステップと、前記保護される範囲内のコードの完全性を検証するステップと、そのモジュールによって実行される関数呼出しのすべてが、前記範囲から生じ、前記範囲にリターンすることを検証するステップとが含まれる。
【0008】
本発明の好適な実施形態によれば、2個のソフトウェア・モジュール間の接続の認証性およびセキュリティを安全なものとしかつ検証する、より効率的で有効な方法、装置、および製品が提供される。
【0009】
好適には、モジュールが、許可されたモジュールと許可されないモジュールを識別できるようにするソフトウェアの配信を制御する改良されたシステムおよび方法が提供される。
【0010】
好適には、本発明は、新しいセキュア認証済チャネル(SAC)を提供する。好適な実施形態によれば、各モジュールが、自分自身の完全性に関して責任を負うのでなく、他のモジュールの完全性の責任を負っていることが、このプロトコルの長所である。ソフトウェアの通信プロトコルの本来的な欠点は、SACの両方の実装がお互いおよび攻撃者に可視であることである。好ましいことに、本発明によれば、欠点であったものを長所に変えることができる。
【0011】
好適な実施形態によれば、本発明は、まず、各々のソフトウェア製作者が自己のモジュールを試験し、モジュールが占有するメモリ内のアドレスの範囲を判定することによって実施される。メモリ内のアドレスのどの範囲が、ハッカーによってパッチを当てられることが許されないかを判断する。そのような範囲を、記憶保護域と称する。典型的には、記憶保護域には、モジュールの全てのプログラム・コード及びプログラム・コードの機能を達成するのに必要なデータの一部が含まれる。
【0012】
近年のプログラミング技法では、ソフトウェア・モジュールは、しばしばロケーション非依存コード(location independent code)として作成される。最終的には、モジュールのアドレスは、最終製品のメモリ・マップでのロードの間に解決される。好適には、ロケーション非依存コードであるので、実行時に記憶保護域の絶対アドレスおよび長さが判定される。この理由から、好適には、相対基底としてコード・セグメントの先頭を使用する基底アドレスおよび長さの指定が可能とされている。好適には、アドレス範囲が供給されない場合は、コード・セグメント全体がデフォルトとされる。
【0013】
好適な実施形態によれば、次に、各製作者は、相互に協調したオペレーションを望む他の全ての製作者に、記憶保護域を記述したアドレス範囲およびモジュールの既知の適切なバージョンを配布する。好適には、他の製作者は、記憶保護域のディジタル署名を返し、これらのディジタル署名は、第1の製作者のモジュールに保管される。好適には、署名は、記憶保護域の機械コード命令に対して計算される。好適には、これらの全てが、モジュールがフィールドに展開される前に、製造時に行われる。
【0014】
好適には、相当するものとして、他の製作者が自分自身のモジュールについて同一のことを行う。2個のモジュールの間のセキュアな通信チャネルをもたらすために、本発明の1の好適な実施形態によるモジュールは、まず、前に作成された署名をお互いに渡しあう。これは、署名が秘密でないので、モジュールがフィールドで実際に動作する時に行うことができる。本発明の代替の好適な実施形態では、各モジュールに、フィールドでの実際の動作中に通信することが期待される他のモジュールの署名のコピーが含まれる。
【0015】
その後、好適な実施形態によれば、通信が真正の許可されたモジュールとの間で行われていることを保証するために、各モジュールが、署名および記憶保護域内のアドレス範囲の使用を通じて他のモジュールのアドレス範囲などに関してディジタル署名を検証することによって、他のモジュールにパッチが当てられていないことを検査する。
【0016】
好適には、モジュールは、両方のモジュールが信頼できるものとして検証された場合に、お互いを自由に呼び出すようにされる。好適には、各モジュールは、呼び出されたときに、他のモジュールの記憶保護域内から呼び出されたことを検証する。また、本発明の好適な実施形態では、他のモジュール内のエントリ・ポイントを呼び出す前に、モジュールが、それが呼び出す予定の関数が実際にターゲット・モジュールの記憶保護域内にあることを確認する。これらの検査は、攻撃者が2個のモジュールをメモリにロードし、署名検査が完了するのを待機し、その後、第3モジュール内からいずれかのモジュールのエントリ・ポイントを呼び出すことを防ぐためのものである。
【0017】
もう1つの態様によれば、本発明は、単一マシン上のソフトウェア・モジュールのピア・ツー・ピア認証の命令を含むコンピュータ可読媒体であって、ソフトウェア・モジュールが占有するアドレスの保護される範囲を判定する命令と、前記保護される範囲内のコードの完全性を検証する命令と、そのモジュールによって実行されるすべての関数呼出しが、前記範囲から生じ、前記範囲にリターンすることを検証する命令とを含むコンピュータ可読媒体を提供する。
【0018】
もう1つの態様によれば、本発明は、単一マシン上のソフトウェア・モジュールのピア・ツー・ピア認証のシステムであって、ソフトウェア・モジュールが占有するアドレスの保護される範囲を判定する判定ユニットと、前記保護される範囲内のコードの完全性を検証する検証ユニットと、そのモジュールによって実行されるすべての関数呼出しが、前記範囲から生じ、前記範囲にリターンすることを検証する第2の検証ユニットとを含むシステムを提供する。
【0019】
本発明の好適な実施形態を、例としてのみ、図面に関してここに説明する。
【0020】
【発明の実施の形態】
[例示的な実施形態−ソフトウェアのセキュア認証済チャネル]
この実施形態には、モジュールの改竄、置換を検出し、プログラム・モジュールのハッキングを防ぐためにコンピュータ内のコンピュータ・プログラム・コード・モジュールの完全性を検証する方法が含まれる。具体的には、各プログラム・モジュールが、他のプログラム・コード・モジュールの完全性の検証に対して責任を負う。換言すると、マスタ−スレーブ関係なしに、独立のピア(peer)モジュールがお互いを検査する。
【0021】
本発明の実施形態では、新規なセキュア認証済チャネル(SAC)が提供される。このプロトコルの長所は、各モジュールが自分自身の完全性に責任を負うのではなく、他のモジュールの完全性に責任を負っていることである。SACの両側が、お互いに、かつ、攻撃者を含む他の当事者に可視であることであるという伝統的なソフトウェアの通信プロトコルの本来的な欠点が、いま長所に変えられる。
【0022】
図3に、モジュール署名(module signiture)を生成するための本発明の好適な実施形態を図示するフロー図(300)が含まれる。まず、各ソフトウェアの製作者が、マニュアルまたは自動のいずれかで、自分のモジュールを検査し、当該モジュールが占有するメモリ内のアドレスの範囲を判定する(302)。ハッカーによる攻撃の可能性があるので、メモリ内のどのアドレス範囲を完全な状態に保たなければならないかに関する判定を行う(304)。代替的には、メモリ内のアドレスのどの範囲にモジュールの主機能が含まれるかに関する判定を行う。この範囲には、SACを利用する他のモジュールに対して発せられる呼出しの全てが含まれ、そのような範囲を記憶保護域と称する。典型的には、記憶保護域には、モジュールの全てのプログラム・コード及びプログラム・コードの機能を達成するのに必要なデータの一部が含まれる。
【0023】
次に、各製作者は、相互に協調したオペレーションを望む他の全ての製作者に、記憶保護域を記述したアドレスの範囲およびモジュールの既知の適切なバージョンを配布する(306)。他の製作者は、記憶保護域に対するディジタル署名を返す(308)。好適には、署名は、記憶保護域全体をハッシュ化し、ディジタル署名のためにそのハッシュを使用することによって生成される。その後、他のモジュールの他の製作者によって供給されるディジタル署名を、第1の製作者のモジュールに保管し(310)、改訂されたソフトウェア・モジュールを、ソフトウェア・モジュールの製作者に転送する。また、アドレスの範囲が、第1の製作者のモジュールに保管される。これは、署名を正しく検証できるようにし、呼出し元のルーチンおよび呼び出されるルーチンのエントリ・ポイントを判定するためである。換言すると、SACは、モジュールに、その期待されるエントリ・ポイントおよびその署名された区域を明らかにするように指示する。好適には、以上のステップのすべてが、製造時にモジュールがフィールドに展開される前に行われる。それに相当するものとして、他の製作者は、自分自身のモジュールに関して同一のことを行う。
【0024】
図4は、改良されたソフトウェア・モジュール・ピア・ツー・ピア完全性検査を示すフロー図(400)において、好適な実施形態に従う本発明を図示している。次に、完全性検査の基本動作の記述を説明する。2個のモジュール間のセキュア通信チャネルを実現するために、これらのモジュールは、まず、以前に作成した署名をお互いに渡す(402)。その後、通信が真正の許可されたモジュールとの間で行われていることを保証するために、署名および記憶保護域内のアドレス範囲の使用を介して、各モジュールが、他方のモジュールにパッチが当てられていないことを検査する(404)。署名は、指定されたアドレス範囲内のコードのハッシュに基づく。署名、アドレス範囲、および使用可能なAPIは、各モジュール内に永久的に保管され、署名検証のために検索される。検証中に、指定されたアドレス範囲に対するハッシュを再計算する。これによって、指定されたアドレス範囲内のコードが真正であるか否かが判定される。コードにパッチが当てられている場合には、供給されたアドレス範囲のハッシュが異なり、署名の検証が失敗する。また、関数呼出しの起点は、スタック上の関数のリターン・アドレスを調べることによって簡単に判定することができる。さらに、モジュールは、それぞれ、呼び出す予定の他のモジュール内のすべてのエントリ・ポイントが、実際に他のモジュールの記憶保護域内にあることを検証する。これを実現するために、全てのモジュールが、例えば、当該情報を他のモジュールに組み込ませるか、他のモジュールに動的に照会することによって、他のモジュールの保護記憶域を検索する。それらが真正のモジュールとして検証されない場合には、処理は終了する。そうではなく、両方のモジュールが信用に値するものとして検証される場合(406)は、モジュールは、自由にお互いを呼び出すことができる(408)。しかし、各モジュールは、呼び出される時に、他のモジュールの記憶保護域内から呼び出されたことを検証することが好ましい(410)。呼出し元モジュールが、その記憶保護域内から呼び出していない場合には、処理が終了する。そうではなく、他のモジュールの記憶保護域から呼び出された場合には、モジュールの間での通信を継続して(412)、作業を達成する。したがって、ソフトウェア・モジュールを攻撃するすべての試みは破られる。呼び出されたモジュールは、下記の処理によって、呼出し元モジュールが記憶保護域アドレス空間から呼び出していることを判定する。全ての関数呼出しが、スタックに残されたリターン・アドレスを信頼する。これが、関数が呼出し元にリターンする方法である。その結果、そのリターン・アドレスを使用して、呼出し元が指定された記憶保護域内にあるかどうかを確認する。換言すると、モジュールBは、モジュールAによって、最初の署名検証の処理中にモジュールBが検証したアドレス範囲内からのみ呼び出されることを保証することができる。これを図5に示す。
【0025】
図5に、本発明の好適な実施形態による、記憶保護域を含むソフトウェア・モジュールが占有する空間を含むコンピュータ・システムのメモリ空間(500)を示す。ソフトウェア・モジュールに、例えば、(504)および(506)によって定義されるコード空間が含まれる。モジュールには、ハッカーによるパッチ当てから保護されなければならないアドレス範囲を定義する記憶保護域(506)が含まれる。関数呼出し(508)が、スタック(510)に残されたリターン・アドレスを用いて図示されている。
【0026】
[高水準の概要について]
本発明の高水準の概要を、好適な実施形態に従って示す。
1.処理の性質のゆえに、秘密鍵のような秘密情報の伝送が不要である。
2.いかなる既知の暗号手段によっても、それを使用してディジタル署名を作成することが許される。「ディジタル署名」の用語は、最も広義に解釈されなければならない。各製作者みずからが、何がディジタル署名を構成するかを決定することができる。ディジタル署名は、標準的なRSAディジタル署名またはDSAディジタル署名とすることができる。換言すると、アドレスの範囲内のデータが、SHA−1などの暗号ハッシュを用いてハッシュ化され、そのハッシュが署名される。一般に、ディジタル署名は、疑わしいデータの有効性を表す単一のビット出力を提供するだけである。それゆえ、それによって提供されるコード保護は、攻撃者によってかなり簡単に破られる傾向にある。従って、好適には、本発明は、ディジタル・シグネット(digital signet)と称するものの代替使用を提供する。シグネットは、署名の通常の単一ビットではなく、ビットのストリングを出力として供給し、コード完全性アプリケーションにおいてより強いので、署名の代替として使用することができる。さらに、シグネットは、コード自体の一部とすることができ、これによって、コード保護機能が促進される。シグネット技術は、米国特許第6038316号および米国特許第5978482号で教示され、その教示は、参照によって本明細書に組み込まれる。そのような解決策の全てが、本発明の範囲に含まれる。
3.好適には、本発明には、古いコンピュータ・プログラム・コード・モジュールを、新しい署名を介して検証される新しいプログラム・コード・モジュールに変換するツールが含まれる。
4.一方向ベース(one−way basis)で、検証を実行することができる。換言すると、モジュールには、検証なしで使用できるものと検証されなければならないものがある。本明細書に記載のプロトコルを用いると、自分自身に関してはセキュリティを必要としないが、別のモジュールに接続する時に限ってセキュリティが必要である圧縮モジュールなどのモジュールの適切な解決が可能になる。
5.仮想記憶内のアドレス範囲に対するディジタル署名に関連する問題の1つは、オペレーティング・システムのローダが、衝突(collision)の場合に、モジュールを異なる基底アドレスに再配置する可能性があるという事実である。この再配置中に、ローダが、コード内の絶対アドレスを参照するいくつかの命令に対する修正を実行する。その結果、好適には、アドレス範囲のハッシュがモジュールの絶対基底アドレスにかかわらずに必ず同一の値を返すように、これらの変更を一時的に正規形に復帰させる特殊ハッシュ技法が必要である。この技法は、米国特許出願第09/352285号で教示され、その写しが、本明細書に置かれる。
6.好適な実施形態では、各モジュールが、他のモジュールの完全性の責任を負う。しかし、これは、他の理由のための自己完全性論理が各モジュールに存在しないことを意味するものではない。自己保全性も有するモジュールであっても本発明の範囲に含まれる。
7.好適な実施形態には、本発明に登場する製作者の働く悪事に対する保護がない。従って、このシステムへの参加に合意する製作者の権利を保護するために、契約などによって、製作者は、お互いに法的な関係を形成しなければならない。
8.セッション鍵がなく、従来技術のようにインターフェースの一方でデータを暗号化し、他方でそれを暗号化解除することに関連するオーバーヘッドがないことが好ましい。
9.このプロトコルは、最も強いリンクと同程度に強い。あるモジュールのハッキングが成功した場合に、他の完全なモジュールは、署名が一致しないのでその事実を検出する。この場合、第2のモジュールは、データ交換への参加を拒否する。
【0027】
[別の実施形態−署名生成の実施形態]
上記で説明したように、ソフトウェア・セキュア認証処理には、各製作者が他のすべての製作者と通信して、このプロトコルを使用可能にする処理が含まれる。モジュールの証明を実現するために、複数の実施形態が考えられる。具体的には、検証処理を援助するために、すべての製作者の代わりにモジュール内の署名の生成および保管を実行する認証機関を設ける。勿論、これには、製作者がディジタル署名に使用される技術に同意することを必要とする。代替の実施形態には、分散署名生成処理が含まれる。分散処理では、自分自身の署名技術を用いてモジュールに署名する複数の認証機関および個々の製作者が存在する。
【0028】
[別の1つの実施形態−変換ツール]
残念ながら、一部の製作者が、説明したプロトコルの制定に合意しない可能性がある。そこで、非準拠モジュールをプロトコルに必要なステップを実行するモジュールに変換できるツールを提供することによって、この可能性に前もって対応する。具体的には、このツールは、モジュールにクロス・モジュール署名交換を実行する追加のエントリ・ポイントを追加し、モジュール内の他のすべてのエントリ・ポイントを、呼出し元が他のモジュールの記憶保護域から来ることを確認するために検査するエントリ・ポイントに変換する。勿論、変換されたモジュールは、署名されるモジュールになる。
【0029】
[もう1つの実施形態 一方向保全性検査]
もう1つの実施形態では、このプロトコルが、一方向モードで使用される。たとえば音楽圧縮モジュールなど、呼出し元モジュールなどの呼出し元エンティティの性質に関心を持たない、ある種のソフトウェア・モジュールがある。その機能すなわち、なにものかのための音楽の圧縮を実行する音楽圧縮モジュールに関するセキュリティ問題はない。その一方で、音楽を委託され、通常は制限付きコピーを実施することを求める電子音楽配信システムでは、曲が送信されようとしている圧縮モジュールが、実際に、よい圧縮モジュールであって、ユーザのディスクに曲を不正に書き込むことによって曲を追加として盗むハッキングされたプログラムではないことに関心が持たれる。その場合に、電子音楽配信モジュールが、圧縮モジュールからの署名を必要とするが、その逆は必ずしも必要ではない。
【0030】
[もう1つの実施形態 周期的な署名検査]
ハッカーにとってはより困難ではあるが、ハッカーは、署名検査が行われた後に動作中の処理に接続して、その時に自分のコード・パッチを挿入する可能性がある。従って、一実施形態では、周期的、ランダム、またはモジュールが使用されるたびに、署名検査を実行して、新たに挿入されたパッチを検出することができる。これは、経過時間に基づいて、または保護されたインターフェースにまたがる実際の呼出し/リターンの数に基づいて行うことができる。多くのディジタル署名が、比較的高価なので、本発明の1実施形態では、さらに、後続のディジタル署名検査を、より安価な手段、例えば、単純に最初のハッシュを記録し、新しいハッシュが異なるか否かを検出することによって行うことができる。本明細書で企図されるディジタル署名の広義の定義で、ハッシュの最初の単純な検査が、特に強い検査ではないが、「ディジタル署名検査」の一種であることに留意されたい。
【0031】
[結論]
(1)データ・ファイルの認証をセキュアにし、検証するための、(2)セキュア認証済みチャネルを確立するための、および(3)2個のモジュールの間の通信を保護するための、より効率的な方法、装置、および製品を、従来技術の制限の多くを克服する本発明の種々の実施形態に従って説明した。
【0032】
[ハードウェアおよびソフトウェアの実施形態のオプションの議論]
本発明は、当業者に既知であるように、ハードウェアまたはソフトウェアあるいはハードウェアとソフトウェアの組合せとして実施することができる。好適な実施形態によるシステムまたは方法は、説明されたまたは請求された個々の機能またはステップを実行する別々の要素または手段、あるいは説明されたまたは請求された機能またはステップのどれかの実行を組合せた1または複数の要素または手段を有する単一のコンピュータ・システム内で実施することができ、あるいは当業者に既知の適当な手段によって相互接続された分散コンピュータ・システムに配置することができる。
【0033】
好適な実施形態によれば、本発明は、特定の種類のコンピュータ・システムに制限されるものではない。当業者には周知の通り、本発明は、説明された機能および方法ステップを実行するように配置された、すべての汎用のコンピュータと共に使用することができる。当業者には既知の通り、上記で説明したそのようなコンピュータの動作はコンピュータの動作または制御の下で使用する媒体に含まれるコンピュータ・プログラムによるものとすることができる。当業者に既知の通り、コンピュータ・プログラム製品を保持し、コンピュータ・プログラム製品を含むことができ、またはコンピュータ・プログラム製品を配布することに使用することが可能なコンピュータ可読媒体は、組み込みメモリなどのコンピュータの付属物とするか、ディスクなどの持ち運び可能な媒体とすることができる。
【0034】
本発明は、当業者には既知の通り、特定のコンピュータ・プログラムまたは論理または言語または命令に制限されない。本発明は、そのような適切なものであれば、いかなるプログラム、論理、言語、命令を用いても実施することができる。そのようなコンピュータ・システムには、コンピュータ可読媒体からのデータ、命令、メッセージすなわちメッセージ・パケット、およびその他のコンピュータ可読情報をコンピュータが読み取れるようにするコンピュータ可読媒体を、開示された発明を制限することなく、含め得る。コンピュータ可読媒体には、ROM、フラッシュ・メモリ、フレキシブル・ディスク(R)、ディスク・ドライブ・メモリ、CD−ROM、および他の永続記憶装置などの不揮発性メモリが含まれ得る。さらに、コンピュータ可読媒体には、例えば、RAM、バッファ、キャッシュ・メモリ、およびネットワーク回路などの揮発性記憶装置が含まれ得る。
【0035】
さらに、コンピュータ可読媒体には、有線ネットワークまたは無線ネットワークなどのコンピュータ可読情報をコンピュータが読み取れるようにするネットワーク・リンクおよび/またはネットワーク・インターフェースなどの一時的状態媒体内のコンピュータ可読情報が含まれ得る。
【0036】
要約すると、ソフトウェア製作者は、自分のモジュールを検査し、そのモジュールが占有するメモリ内のアドレスの範囲を判定する。メモリ内のアドレスの保護範囲が、ハッカーによるパッチ当てなどの変更を可能にしないように事前に定義される。各製作者が、協調処理を望む他のすべての製作者に、記憶保護域を記述するアドレスの範囲およびモジュールの既知のよいバージョンを、配布する。他の製作者は、記憶保護域のディジタル署名を返し、これらのディジタル署名が、第1の製作者のモジュールに保管される。それに相当するものとしてして、他方の製作者は、自分自身のモジュールに対して同一のことを行う。その後、2つのモジュールの間のセキュア通信チャネルをもたらすために、モジュールが、まず、互いに、前に作られた署名を渡す。その後、真正の許可されたモジュールとの通信が行われていることを保証するために、署名および記憶保護域内のアドレス範囲の使用を介して、各モジュールが、他方のモジュールにパッチが当てられていないことを検査する。さらに、モジュールは、それぞれ、呼び出す予定の他のモジュール内のすべてのエントリ・ポイントが、実際に記憶保護域内にあることを検証する。両方のモジュールが信頼に値するものとして検証される場合に、これらのモジュールは、自由にお互いを呼び出すことができる。しかし、各モジュールは、呼び出された時に、まず、他方のモジュールの記憶保護域内から呼び出されたことを検証する。
【図面の簡単な説明】
【図1】
従来技術で見られる、単一マシン上で実施されるセキュア認証済みチャネル(100)を示す図である。
【図2】
従来技術のSDMIの要求仕様に記載のソフトウェア・モジュールのセキュリティ・コンテンツ(200)を示す図である。
【図3】
本発明の好適な実施形態によるモジュール署名生成のフロー図(300)である。
【図4】
本発明の好適な実施形態による、改良されたソフトウェア・モジュール・ピア・ツー・ピア完全性の検査を表すフロー図(400)である。
【図5】
記憶保護域を含む、ソフトウェア・モジュールが占有する空間を含むコンピュータ・システムのメモリ空間(500)を示す図である。
[0001]
TECHNICAL FIELD OF THE INVENTION
The present invention relates to tamper resistance of software. More specifically, the present invention relates to a method and apparatus for establishing a Secure Authenticated Channel between two software modules on a system.
[0002]
[Prior art]
In this disclosure, the manufacturer of the device including the information processing unit is referred to as an entity. Certain types of software applications must protect themselves from hacking. For example, licenses require that DVD video playback devices include protection to prevent users from copying DVD movies using a scrambling scheme. More recently, Secure Digital Music Initiative (SDMI), launched by the American Records Association, has published requirements that can only be met by tamper-resistant software.
[0003]
The SDMI requirements assume that a particular application consists of different software modules from different producers. For example, one creator can create an electronic music distribution system that allows secure download of music over the Internet, such as the IBM Electronic Media Management System ™, and a second creator can use the SONY ( R) Software that supports secure flash memory music playback devices such as Memory Stick Walkman ™ can be created. Consumers want to place purchased and downloaded music on their flash memory music players.
[0004]
The SDMI requirements specification describes the concept of a Secure Authenticated Channel or SAC between two compliant software modules. There, a model has been proposed that describes the communication between two modules, created by two different producers, who wish to securely call each other's entry points on the same machine. FIG. 1 shows a secure authenticated channel (100) including at least two modules (102, 104) loaded into the memory of the same machine (106). These modules are created by different vendors and communicate with each other using published APIs. There is no protection against hacking programs that steal music content between themselves to make illegal copies. For that reason, SDMI requires a mechanism for authentication and a mechanism for securing communications between these two modules (secure authenticated channel).
[0005]
FIG. 2 shows the security content (200) of a prior art software architecture designed in accordance with the SDMI requirements. The software module includes a public key certificate (202), a public key (204), and a private key (206). For example, SAC is implemented as follows.
1. Each module is responsible for its own integrity.
2. Each module has a standard public key certificate (202) proving its public key (204).
3. Each module has a secret key (206) to be kept secret.
4. Create a session key between the modules using a standard public key protocol.
5. Data and controls subsequently exchanged between modules are encrypted using a session key (not shown in FIG. 2) to prevent unauthorized tampering or eavesdropping on the data.
[0006]
[Problems to be solved by the invention]
In essence, this approach is a well-known protocol that secures communication between two parties. Unfortunately, there are some problems with using this approach for SAC. In a secure communication protocol, the attacker would be outside the communication pipeline of the two parties communicating, but not the software. Hackers can see both modules and patch one or both, so keeping private keys secret is a real problem. Similarly, checking self-integrity to make sure that each module has not been patched or tampered with is very difficult. Thus, this protocol is as weak as the weakest link and will break the SAC if one of the secret keys is known or if one module is successfully patched.
[0007]
[Means for Solving the Problems]
The present invention provides a method for peer-to-peer authentication of software modules on a single machine. The method includes the steps of determining a protected range of addresses occupied by a software module, verifying the integrity of the code within the protected range, and all of the function calls performed by the module. Verifying that returns from the range and returns to the range.
[0008]
According to a preferred embodiment of the present invention, there is provided a more efficient and effective method, apparatus and product for securing and verifying the authenticity and security of a connection between two software modules. .
[0009]
Advantageously, there is provided an improved system and method for controlling the distribution of software that allows a module to distinguish between authorized and unauthorized modules.
[0010]
Preferably, the present invention provides a new secure authenticated channel (SAC). According to a preferred embodiment, it is an advantage of this protocol that each module is not responsible for its own integrity, but for the integrity of the other modules. An inherent disadvantage of software communication protocols is that both implementations of SAC are visible to each other and to attackers. Advantageously, according to the invention, the disadvantages can be turned into advantages.
[0011]
According to a preferred embodiment, the invention is implemented by first each software producer testing his module and determining the range of addresses in memory occupied by the module. Determine which ranges of addresses in memory are not allowed to be patched by hackers. Such a range is called a protected area. Typically, a protected area contains all the program code for a module and some of the data required to accomplish the functions of the program code.
[0012]
In modern programming techniques, software modules are often written as location-independent code. Eventually, the address of the module is resolved during the loading of the final product in the memory map. Preferably, because of the location-independent code, the absolute address and length of the protected area are determined at run time. For this reason, it is preferably possible to specify a base address and length using the beginning of the code segment as a relative base. Preferably, if no address range is provided, the entire code segment is defaulted.
[0013]
According to a preferred embodiment, each producer then distributes the known appropriate version of the address range and module describing the protected area to all other producers who wish to cooperate with each other. . Preferably, the other producers return digital signatures of the secure area, and these digital signatures are stored in the module of the first producer. Preferably, a signature is calculated for the protected area machine code instructions. Preferably, all of this is done during manufacturing, before the module is deployed to the field.
[0014]
Preferably, equivalently, other producers do the same for their own modules. To provide a secure communication channel between two modules, modules according to one preferred embodiment of the invention first pass a previously created signature to each other. This can be done when the module actually works in the field, since the signature is not secret. In an alternative preferred embodiment of the present invention, each module contains a copy of the signature of the other module that is expected to communicate during actual operation in the field.
[0015]
Thereafter, in accordance with a preferred embodiment, each module communicates with the other through a signature and use of an address range within the secure area to ensure that communication is taking place with the authentic authorized module. Verify that no other modules have been patched, such as by verifying the digital signature with respect to the address ranges of the modules.
[0016]
Preferably, the modules are free to call each other if both modules are verified as trusted. Preferably, each module, when called, verifies that it was called from within a protected area of another module. Also, in a preferred embodiment of the present invention, before calling an entry point in another module, the module verifies that the function it intends to call is actually in the protected area of the target module. These checks are to prevent the attacker from loading the two modules into memory, waiting for the signature check to complete, and then calling the entry point of any module from within the third module. Things.
[0017]
According to another aspect, the present invention is a computer readable medium comprising instructions for peer-to-peer authentication of a software module on a single machine, wherein the protected range of addresses occupied by the software module. Instructions to verify the integrity of the code within the protected range, and instructions to verify that all function calls performed by the module originate from and return to the range. And a computer readable medium comprising:
[0018]
According to another aspect, the present invention is a system for peer-to-peer authentication of a software module on a single machine, the determining unit determining a protected range of an address occupied by the software module. A verification unit for verifying the integrity of the code within the protected range, and a second verification for verifying that all function calls performed by the module originate from and return to the range. And a system comprising the unit.
[0019]
Preferred embodiments of the present invention will now be described, by way of example only, with reference to the drawings.
[0020]
BEST MODE FOR CARRYING OUT THE INVENTION
Exemplary Embodiment-Secure Authenticated Channel of Software
This embodiment includes a method of detecting tampering and replacement of a module and verifying the integrity of a computer program code module in a computer to prevent hacking of the program module. Specifically, each program module is responsible for verifying the integrity of other program code modules. In other words, independent master modules check each other without a master-slave relationship.
[0021]
In an embodiment of the present invention, a new secure authenticated channel (SAC) is provided. The advantage of this protocol is that each module is not responsible for its own integrity, but for the integrity of the other modules. The inherent disadvantage of traditional software communication protocols, that both sides of the SAC are visible to each other and to other parties, including attackers, is now turned into advantage.
[0022]
FIG. 3 includes a flow diagram (300) illustrating a preferred embodiment of the present invention for generating a module signature. First, each software maker inspects his or her module, either manually or automatically, and determines the range of addresses in memory occupied by the module (302). A determination is made as to which address range in memory must be kept complete due to the possibility of a hacker attack (304). Alternatively, a determination is made as to which range of addresses in the memory contains the main function of the module. This range includes all calls made to other modules utilizing the SAC, and such a range is called a protected area. Typically, a protected area contains all the program code for a module and some of the data required to accomplish the functions of the program code.
[0023]
Next, each producer distributes (306) a known appropriate version of the module and the address range describing the protected area to all other producers who wish to cooperate with each other. Other producers return the digital signature for the secure area (308). Preferably, the signature is generated by hashing the entire storage area and using that hash for the digital signature. Thereafter, the digital signature provided by the other producer of the other module is stored (310) in the module of the first producer, and the revised software module is forwarded to the producer of the software module. Also, the range of addresses is stored in the module of the first producer. This is to allow the signature to be correctly verified and to determine the entry point of the calling routine and the called routine. In other words, the SAC instructs the module to identify its expected entry point and its signed area. Preferably, all of the above steps are performed before the module is deployed to the field during manufacturing. As an equivalent, other producers do the same for their own modules.
[0024]
FIG. 4 illustrates the invention in accordance with a preferred embodiment in a flow diagram (400) illustrating an improved software module peer-to-peer integrity check. Next, description of the basic operation of the integrity check will be described. To implement a secure communication channel between the two modules, the modules first pass each other a previously created signature (402). Each module is then patched to the other module through signatures and the use of address ranges in the secure area to ensure that communication is taking place with the authentic authorized module. It is checked that it has not been performed (404). The signature is based on a hash of the code within the specified address range. Signatures, address ranges, and available APIs are permanently stored in each module and retrieved for signature verification. During verification, recompute the hash for the specified address range. As a result, it is determined whether the code within the specified address range is genuine. If the code is patched, the supplied address range has a different hash and signature verification fails. The starting point of a function call can be easily determined by examining the return address of the function on the stack. In addition, each module verifies that all entry points in the other module to be called are in fact in the protected area of the other module. To accomplish this, all modules search the protected storage of other modules, for example, by incorporating the information into other modules or dynamically querying other modules. If they are not verified as authentic modules, the process ends. Otherwise, if both modules are verified as trustworthy (406), the modules are free to call each other (408). However, each module, when invoked, preferably verifies that it was invoked from within the protected area of another module (410). If the calling module has not called from within the storage protected area, the process ends. Otherwise, if called from the protected area of another module, communication between the modules is continued (412) to accomplish the task. Therefore, all attempts to attack software modules are broken. The called module determines that the calling module is calling from the storage protected area address space by the following processing. All function calls rely on the return address left on the stack. This is how the function returns to the caller. As a result, the return address is used to determine whether the caller is within the specified protected area. In other words, module B can ensure that module A is only called from within the address range verified by module B during the initial signature verification process. This is shown in FIG.
[0025]
FIG. 5 illustrates a memory space (500) of a computer system including space occupied by software modules including a storage protection area according to a preferred embodiment of the present invention. The software module includes, for example, a code space defined by (504) and (506). The module includes a protected area (506) that defines an address range that must be protected from patching by hackers. The function call (508) is shown with the return address left on the stack (510).
[0026]
[About high-level overview]
A high level overview of the present invention is presented in accordance with a preferred embodiment.
1. Due to the nature of the processing, transmission of secret information such as secret keys is not required.
2. Any known cryptographic means may be used to create a digital signature. The term "digital signature" must be interpreted in the broadest sense. Each producer can determine what constitutes a digital signature. The digital signature can be a standard RSA digital signature or a DSA digital signature. In other words, data within the range of the address is hashed using a cryptographic hash such as SHA-1, and the hash is signed. In general, digital signatures only provide a single bit output that indicates the validity of the data in question. Therefore, the code protection provided thereby tends to be broken fairly easily by attackers. Thus, advantageously, the present invention provides an alternative use of what is referred to as a digital signet. Signets provide a string of bits as an output, rather than the usual single bits of a signature, and can be used as an alternative to signatures because they are stronger in code integrity applications. Further, the signet can be part of the code itself, which facilitates code protection. Signet technology is taught in U.S. Patent Nos. 6,038,316 and 5,978,482, the teachings of which are incorporated herein by reference. All such solutions fall within the scope of the invention.
3. Preferably, the present invention includes a tool for converting an old computer program code module into a new program code module that is verified via a new signature.
4. Verification can be performed on a one-way basis. In other words, some modules must be verified as usable without verification. The protocol described herein allows for the proper solution of modules such as compression modules that do not need security on their own, but only need security when connecting to another module.
5. One of the problems associated with digital signatures for address ranges in virtual memory is the fact that operating system loaders may relocate modules to different base addresses in the event of a collision. . During this relocation, the loader performs modifications on some instructions that reference absolute addresses in the code. As a result, there is a need for a special hashing technique that preferably temporarily reverts these changes to normal form, so that the hash of the address range always returns the same value regardless of the absolute base address of the module. This technique is taught in US patent application Ser. No. 09 / 352,285, a copy of which is provided herein.
6. In the preferred embodiment, each module is responsible for the integrity of the other modules. However, this does not mean that there is no self-integrity logic in each module for other reasons. Even a module having self-maintenance is included in the scope of the present invention.
7. The preferred embodiment has no protection against the wrongdoing of the producers who appear in the present invention. Therefore, producers must form a legal relationship with each other, such as by contract, in order to protect their rights to agree to participate in this system.
8. Preferably, there is no session key and there is no overhead associated with encrypting data on one side of the interface and decrypting it on the other side as in the prior art.
9. This protocol is as strong as the strongest link. If one module is successfully hacked, the other complete module will detect that fact because the signatures do not match. In this case, the second module refuses to participate in the data exchange.
[0027]
[Another embodiment-an embodiment of signature generation]
As explained above, the software secure authentication process includes a process where each producer communicates with all other producers to enable this protocol. In order to realize the certification of the module, several embodiments are conceivable. In particular, to assist in the verification process, a certification authority is provided to perform the generation and storage of the signatures in the module on behalf of all producers. Of course, this requires the producer to agree on the technology used for digital signatures. An alternative embodiment includes a distributed signature generation process. In distributed processing, there are multiple certificate authorities and individual producers signing modules using their own signature technology.
[0028]
[Another Embodiment-Conversion Tool]
Unfortunately, some authors may not agree to establish a protocol as described. This possibility is addressed in advance by providing a tool that can convert a non-compliant module into a module that performs the steps required by the protocol. Specifically, the tool adds an additional entry point to the module to perform a cross-module signature exchange and replaces all other entry points in the module with the caller's protected area Convert to an entry point to check to make sure it comes from. Of course, the converted module will be the module to be signed.
[0029]
[Another Embodiment One-Way Integrity Check]
In another embodiment, this protocol is used in a one-way mode. There are certain software modules that do not care about the nature of the calling entity, such as the calling module, for example, a music compression module. There is no security problem with that function, ie, a music compression module that performs music compression for something. On the other hand, in electronic music distribution systems that are entrusted with music and usually require limited copying, the compression module to which the song is about to be transmitted is actually a good compression module and the user's disk It is of interest that the program is not a hacked program that steals additional songs by illegally writing songs to them. In that case, the electronic music distribution module requires a signature from the compression module, but not vice versa.
[0030]
[Another Embodiment Periodic Signature Check]
Although more difficult for hackers, hackers may connect to the running process after the signature check has been performed and then insert their code patch at that time. Thus, in one embodiment, a signature check can be performed to detect newly inserted patches, periodically, randomly, or each time a module is used. This can be done based on elapsed time or based on the actual number of calls / returns across the protected interface. Since many digital signatures are relatively expensive, one embodiment of the present invention further provides for subsequent digital signature verification to be performed by cheaper means, such as simply recording the first hash and determining whether the new hash is different. This can be done by detecting Note that in the broad definition of digital signatures contemplated herein, the first simple check of the hash is not a particularly strong check, but is a type of "digital signature check".
[0031]
[Conclusion]
More efficient (1) to secure and verify the authentication of data files, (2) to establish a secure authenticated channel, and (3) to secure communication between the two modules. Exemplary methods, apparatus, and products have been described in accordance with various embodiments of the present invention that overcome many of the limitations of the prior art.
[0032]
[Discussion of options for hardware and software embodiments]
The invention can be implemented as hardware or software or a combination of hardware and software, as known to those skilled in the art. A system or method according to a preferred embodiment combines separate elements or means to perform the described or claimed individual functions or steps, or combines the execution of any of the described or claimed functions or steps. It can be implemented in a single computer system having one or more elements or means, or located in a distributed computer system interconnected by suitable means known to those of skill in the art.
[0033]
According to a preferred embodiment, the invention is not limited to a particular type of computer system. As is well known to those skilled in the art, the present invention can be used with all general-purpose computers arranged to perform the described functions and method steps. As known to those skilled in the art, such computer operations described above may be through a computer program included in a medium used under the operation or control of the computer. As is known to those skilled in the art, computer readable media that can hold, contain, or be used to distribute computer program products include computer memory products, such as embedded memory. It can be a computer accessory or a portable medium such as a disk.
[0034]
The invention is not limited to any particular computer program or logic or language or instructions, as known to those skilled in the art. The invention can be implemented using any such suitable programs, logic, languages and instructions. Such computer systems include a computer readable medium that allows a computer to read data, instructions, messages or message packets, and other computer readable information from the computer readable medium, limiting the disclosed invention. No, can be included. Computer readable media can include non-volatile memory, such as ROM, flash memory, Flexible Disk®, disk drive memory, CD-ROM, and other persistent storage. In addition, computer readable media may include, for example, volatile storage such as RAM, buffers, cache memory, and network circuits.
[0035]
Further, the computer readable medium may include computer readable information in a temporary state medium, such as a network link and / or a network interface that allows the computer to read the computer readable information, such as a wired or wireless network.
[0036]
In summary, software producers examine their modules and determine the range of addresses in memory that they occupy. The protection range of the addresses in the memory is predefined so as not to allow a hacker to make changes such as patching. Each producer distributes a known good version of the address range and module describing the protected area to all other producers who wish to cooperate. Other producers return the digital signatures of the secure area, and these digital signatures are stored in the first producer's module. As an equivalent, the other producer does the same for his own module. The modules then first pass each other a previously created signature to provide a secure communication channel between the two modules. Each module is then patched to the other module through signatures and the use of address ranges in the secure area to ensure that communication with the authentic authorized module is taking place. Inspect that there is no. In addition, each module verifies that all entry points in the other modules to be called are in fact protected. If both modules are verified as trustworthy, they can freely call each other. However, when called, each module first verifies that it was called from within the protected area of the other module.
[Brief description of the drawings]
FIG.
FIG. 1 shows a secure authenticated channel (100) implemented on a single machine as found in the prior art.
FIG. 2
FIG. 3 is a diagram showing security contents (200) of a software module described in a requirement specification of a conventional SDMI.
FIG. 3
FIG. 7 is a flow diagram (300) of module signature generation according to a preferred embodiment of the present invention.
FIG. 4
FIG. 7 is a flow diagram (400) depicting improved software module peer-to-peer integrity checking according to a preferred embodiment of the present invention.
FIG. 5
FIG. 4 is a diagram illustrating a memory space (500) of a computer system including a space occupied by a software module, including a protected area.

Claims (33)

単一マシン上のソフトウェア・モジュールのピア・ツー・ピア認証のための方法であって、
ソフトウェア・モジュールが占有する保護されたアドレス範囲を判定するステップと、
前記保護される範囲内のコードの完全性を検証するステップと、
そのモジュールによって実行される関数呼出しが、前記範囲から生じ、前記範囲にリターンすることを検証するステップと、
を含む方法。
A method for peer-to-peer authentication of a software module on a single machine, comprising:
Determining a protected address range occupied by the software module;
Verifying the integrity of the code within the protected range;
Verifying that function calls performed by the module originate from and return to the range;
A method that includes
前記認証方法が、各モジュールが他方のモジュールを認証するように2個のモジュールの間で実行される請求項1に記載の方法。The method of claim 1, wherein the authentication method is performed between two modules such that each module authenticates the other module. 前記モジュールの一方または両方が、自己完全性検査のための1または複数の機構を配置する請求項2に記載の方法。3. The method of claim 2, wherein one or both of the modules arrange one or more mechanisms for self-integrity testing. 前記保護されたアドレス範囲およびソフトウェア・モジュールを前記認証方法を使用するエンティティに配布するステップをさらに含む請求項1乃至3に記載の方法。4. The method according to claim 1, further comprising the step of distributing the protected address ranges and software modules to an entity using the authentication method. 前記保護されたアドレス範囲に対するディジタル署名と共に返される改訂されたソフトウェア・モジュールを受け取るステップをさらに含む請求項4に記載の方法。The method of claim 4, further comprising receiving a revised software module returned with a digital signature for the protected address range. 前記ディジタル署名が、RSA署名、DSA署名、署名されるSHA−1などの暗号ハッシュ、およびディジタル・シグネットからなるディジタル署名の群から選択されるディジタル署名を含む請求項5に記載の方法。The method of claim 5, wherein the digital signature comprises a digital signature selected from the group of digital signatures consisting of an RSA signature, a DSA signature, a cryptographic hash such as SHA-1 to be signed, and a digital signet. 非準拠ソフトウェア・モジュールを準拠ソフトウェア・モジュールに変換するツールをさらに含む請求項5または6に記載の方法。The method of claim 5 or 6, further comprising a tool for converting non-compliant software modules into compliant software modules. メモリ内のモジュールのロケーションに依存しない正規ハッシュに基づく署名をさらに含む請求項5に記載の方法。The method of claim 5, further comprising a signature based on a canonical hash independent of the location of the module in memory. 前記ディジタル署名が、周期的、ランダム、およびモジュールが使用されるたびに、からなる検査技法の群から選択される検査技法を使用して検査され、前記検査が、前記ソフトウェア・モジュールの動作中に実行される請求項5乃至8に記載の方法。The digital signature is verified using a verification technique selected from a group of verification techniques consisting of periodic, random, and each time a module is used, wherein the verification is performed during operation of the software module. 9. The method according to claim 5, which is performed. モジュールの署名が、複数の実施形態を介して生成され、保管され、前記実施形態が、すべての製作者の前記署名を生成し、保管する認証機関と、複数の認証機関および製作者がそれらの間で署名の生成および保管を分散する分散実施形態とからなる実施形態の群から選択される実施形態を含む請求項5乃至9のいずれかに記載の方法。Module signatures are generated and stored via a plurality of embodiments, which embodiments generate and store the signatures of all producers, and a plurality of certification authorities and producers 10. The method according to any of claims 5 to 9, comprising an embodiment selected from the group of embodiments consisting of distributed embodiments for distributing signature generation and storage between them. 呼び出されるすべての関数が検証された保護される範囲内に存在することを検証するステップをさらに含む請求項1乃至10のいずれかに記載の方法。The method according to any of the preceding claims, further comprising the step of verifying that all called functions are within the verified protected range. 単一マシン上のソフトウェア・モジュールのピア・ツー・ピア認証の命令を含むコンピュータ可読媒体であって、
ソフトウェア・モジュールが占有するアドレスの保護される範囲を判定する命令と、
前記保護される範囲内のコードの完全性を検証する命令と、
そのモジュールによって実行される関数呼出しが、前記範囲から生じ、前記範囲にリターンすることを検証する命令と、
を含むコンピュータ可読媒体。
A computer-readable medium containing instructions for peer-to-peer authentication of a software module on a single machine,
Instructions for determining the protected range of addresses occupied by the software module;
Instructions for verifying the integrity of the code within the protected range;
Instructions verifying that a function call performed by the module originates from and returns to the range;
A computer readable medium including:
前記認証命令が、各モジュールが他方のモジュールを認証するように2個のモジュールの間で実行される請求項12に記載のコンピュータ可読媒体。13. The computer-readable medium of claim 12, wherein the authentication instructions are executed between two modules such that each module authenticates the other module. 前記モジュールの一方または両方が、自己完全性検査のための1または複数の機構を配置する請求項13に記載のコンピュータ可読媒体。14. The computer-readable medium of claim 13, wherein one or both of the modules arrange one or more mechanisms for self-integrity checking. 前記保護されるアドレス範囲およびソフトウェア・モジュールを前記認証方法を使用するエンティティに配布する命令をさらに含む請求項12乃至14に記載のコンピュータ可読媒体。15. The computer-readable medium of claim 12, further comprising instructions for distributing the protected address range and software module to an entity using the authentication method. 前記保護されるアドレス範囲に対するディジタル署名と共に返される改訂されたソフトウェア・モジュールを受け取る命令をさらに含む請求項15に記載のコンピュータ可読媒体。The computer-readable medium of claim 15, further comprising instructions for receiving a revised software module returned with a digital signature for the protected address range. 前記ディジタル署名が、RSA署名、DSA署名、署名されるSHA−1などの暗号ハッシュ、およびディジタル・シグネットからなるディジタル署名の群から選択されるディジタル署名を含む請求項16に記載のコンピュータ可読媒体。17. The computer-readable medium of claim 16, wherein the digital signature comprises a digital signature selected from the group consisting of a digital hash, such as an RSA signature, a DSA signature, a signed SHA-1 and a digital signet. 非準拠ソフトウェア・モジュールを準拠ソフトウェア・モジュールに変換するツールをさらに含む請求項16または17に記載のコンピュータ可読媒体。The computer-readable medium of claim 16 or claim 17, further comprising a tool for converting a non-compliant software module into a compliant software module. メモリ内のモジュールのロケーションに依存しない正規ハッシュに基づく署名をさらに含む請求項16に記載のコンピュータ可読媒体。17. The computer-readable medium of claim 16, further comprising a signature based on a canonical hash independent of the location of the module in memory. 前記ディジタル署名が、周期的、ランダム、およびモジュールが使用されるたびに、からなる検査技法の群から選択される検査技法を使用して検査され、前記検査が、前記ソフトウェア・モジュールの動作中に実行される請求項16乃至19に記載のコンピュータ可読媒体。The digital signature is verified using a verification technique selected from a group of verification techniques consisting of periodic, random, and each time a module is used, wherein the verification is performed during operation of the software module. 20. The computer readable medium according to claim 16 being executed. モジュールの署名が、複数の実施形態を介して生成され、保管され、前記実施形態が、すべての製作者の前記署名を生成し、保管する認証機関と、複数の認証機関および製作者がそれらの間で署名の生成および保管を分散する分散実施形態とからなる実施形態の群から選択される実施形態を含む請求項16乃至20のいずれかに記載のコンピュータ可読媒体。Module signatures are generated and stored via a plurality of embodiments, which embodiments generate and store the signatures of all producers, and a plurality of certification authorities and producers 21. A computer-readable medium according to any of claims 16 to 20, including an embodiment selected from the group of embodiments consisting of distributed embodiments for distributing signature generation and storage amongst. 呼び出されるすべての関数が検証された保護される範囲内に存在することを検証することをさらに含む請求項12乃至21のいずれかに記載のコンピュータ可読媒体。22. The computer readable medium of any of claims 12 to 21, further comprising verifying that all called functions are within a verified protected range. 単一マシン上のソフトウェア・モジュールのピア・ツー・ピア認証のシステムであって、
ソフトウェア・モジュールが占有するアドレスの保護される範囲を判定する判定ユニットと、
前記保護される範囲内のコードの完全性を検証する検証ユニットと、
そのモジュールによって実行される関数呼出しが、前記範囲から生じ、前記範囲にリターンすることを検証する第2の検証ユニットと、
を含むシステム。
A system for peer-to-peer authentication of software modules on a single machine,
A determining unit for determining a protected range of an address occupied by the software module;
A verification unit for verifying the integrity of the code within the protected range;
A second verification unit for verifying that function calls performed by the module originate from and return to the range;
Including the system.
前記認証が、各モジュールが他方のモジュールを認証するように2個のモジュールの間で実行される請求項23に記載のシステム。24. The system of claim 23, wherein the authentication is performed between two modules such that each module authenticates the other module. 前記モジュールの一方または両方が、自己完全性検査のための1または複数の機構を配置する請求項24に記載のシステム。25. The system of claim 24, wherein one or both of the modules arrange one or more mechanisms for self-integrity checking. 前記保護されるアドレス範囲およびソフトウェア・モジュールを前記認証方法を使用するエンティティに配布する送信ユニットをさらに含む請求項23乃至25に記載のシステム。26. The system according to claims 23 to 25, further comprising a sending unit that distributes the protected address range and software module to an entity using the authentication method. 前記保護されるアドレス範囲に対するディジタル署名と共に返される改訂されたソフトウェア・モジュールを受け取る受信ユニットをさらに含む請求項26に記載のシステム。27. The system of claim 26, further comprising a receiving unit for receiving a revised software module returned with a digital signature for the protected address range. 前記ディジタル署名が、RSA署名、DSA署名、署名されるSHA−1などの暗号ハッシュ、およびディジタル・シグネットを含むディジタル署名の群から選択されるディジタル署名を含む請求項27に記載のシステム。28. The system of claim 27, wherein the digital signature comprises a digital signature selected from the group of digital signatures including an RSA signature, a DSA signature, a cryptographic hash such as SHA-1 to be signed, and a digital signet. 非準拠ソフトウェア・モジュールを準拠ソフトウェア・モジュールに変換するツール・ユニットをさらに含む請求項27または28に記載のシステム。29. The system of claim 27 or claim 28, further comprising a tool unit for converting a non-compliant software module into a compliant software module. メモリ内のモジュールのロケーションに依存しない正規ハッシュに基づく署名をさらに含む請求項27に記載のシステム。28. The system of claim 27, further comprising a signature based on a regular hash that is independent of the location of the module in memory. 前記ディジタル署名が、周期的、ランダム、およびモジュールが使用されるたびに、を含む検査技法の群から選択される検査技法を使用して検査され、前記検査が、前記ソフトウェア・モジュールの動作中に実行される請求項27乃至30に記載のシステム。The digital signature is verified using a verification technique selected from a group of verification techniques, including periodic, random, and each time a module is used, wherein the verification is performed during operation of the software module. 31. The system according to claims 27 to 30, which is implemented. モジュールの署名が、複数の実施形態を介して生成され、保管され、前記実施形態が、すべての製作者の前記署名を生成し、保管する認証機関と、複数の認証機関および製作者がそれらの間で署名の生成および保管を分散する分散実施形態とからなる実施形態の群から選択される実施形態を含む請求項27乃至31のいずれかに記載のシステム。Module signatures are generated and stored via a plurality of embodiments, which embodiments generate and store the signatures of all producers, and a plurality of certification authorities and producers 32. The system according to any one of claims 27 to 31, comprising an embodiment selected from the group of embodiments consisting of distributed embodiments for distributing signature generation and storage between them. 呼び出されるすべての関数が検証された保護される範囲内に存在することを検証する検証ユニットをさらに含む請求項23乃至32のいずれかに記載のシステム。33. The system according to any of claims 23 to 32, further comprising a verification unit for verifying that all called functions are within the verified protected range.
JP2002524793A 2000-09-08 2001-09-05 Software Secure Authenticated Channel Pending JP2004509392A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US65821800A 2000-09-08 2000-09-08
PCT/GB2001/003962 WO2002021243A2 (en) 2000-09-08 2001-09-05 Software secure authenticated channel

Publications (1)

Publication Number Publication Date
JP2004509392A true JP2004509392A (en) 2004-03-25

Family

ID=24640397

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002524793A Pending JP2004509392A (en) 2000-09-08 2001-09-05 Software Secure Authenticated Channel

Country Status (6)

Country Link
EP (1) EP1368737A2 (en)
JP (1) JP2004509392A (en)
KR (1) KR100561497B1 (en)
CN (1) CN1516836A (en)
AU (1) AU2001284259A1 (en)
WO (1) WO2002021243A2 (en)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006106956A (en) * 2004-10-01 2006-04-20 Fujitsu Ltd Falsification detection device and falsification detection method for software
JP2006260239A (en) * 2005-03-17 2006-09-28 Murata Mach Ltd Document management device and program
JP2007148962A (en) * 2005-11-30 2007-06-14 Fuji Xerox Co Ltd Subprogram, information processor for executing subprogram, and program control method in information processor for executing subprogram
WO2007125911A1 (en) * 2006-04-24 2007-11-08 Panasonic Corporation Data processing device, method, program, integrated circuit, and program generating device
JP2007318731A (en) * 2006-04-26 2007-12-06 Ricoh Co Ltd Image forming apparatus capable of managing multiple module constitution information
JP2008541211A (en) * 2005-05-05 2008-11-20 サーティコム コーポレーション Additional implementation of authentication to firmware
WO2023162048A1 (en) * 2022-02-22 2023-08-31 日本電信電話株式会社 Authentication system, generation device, generation method, and generation program

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101405673B (en) * 2002-12-20 2011-12-14 高通股份有限公司 Method and device to automatically process components on a device
FR2856815B1 (en) * 2003-06-24 2005-09-16 Omega Technology Ltd METHOD FOR AUTHENTICATING DATA CONTAINED IN A MEMORY OBJECT
US7328340B2 (en) * 2003-06-27 2008-02-05 Intel Corporation Methods and apparatus to provide secure firmware storage and service access
CN100489728C (en) * 2004-12-02 2009-05-20 联想(北京)有限公司 Method for establishing trustable operational environment in a computer
US20060195689A1 (en) * 2005-02-28 2006-08-31 Carsten Blecken Authenticated and confidential communication between software components executing in un-trusted environments
US7900046B2 (en) * 2006-01-11 2011-03-01 International Business Machines Corporation System and method for establishing mutual trust on a per-deployment basis between two software modules
US7877602B2 (en) * 2007-07-27 2011-01-25 International Business Machines Corporation Transparent aware data transformation at file system level for efficient encryption and integrity validation of network files
JP5177206B2 (en) * 2010-10-29 2013-04-03 富士通株式会社 Software falsification detection device and falsification detection method
JP5177205B2 (en) * 2010-10-29 2013-04-03 富士通株式会社 Software falsification preventing apparatus and falsification preventing method
US10616197B2 (en) 2016-04-18 2020-04-07 Atmel Corporation Message authentication with secure code verification

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09231068A (en) * 1995-10-26 1997-09-05 Sun Microsyst Inc System and method for protecting use of dynamically linked and executable module
US6105137A (en) * 1998-07-02 2000-08-15 Intel Corporation Method and apparatus for integrity verification, authentication, and secure linkage of software modules

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09231068A (en) * 1995-10-26 1997-09-05 Sun Microsyst Inc System and method for protecting use of dynamically linked and executable module
US6105137A (en) * 1998-07-02 2000-08-15 Intel Corporation Method and apparatus for integrity verification, authentication, and secure linkage of software modules

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006106956A (en) * 2004-10-01 2006-04-20 Fujitsu Ltd Falsification detection device and falsification detection method for software
JP4728619B2 (en) * 2004-10-01 2011-07-20 富士通株式会社 Software falsification detection device, falsification prevention device, falsification detection method and falsification prevention method
JP2006260239A (en) * 2005-03-17 2006-09-28 Murata Mach Ltd Document management device and program
JP2008541211A (en) * 2005-05-05 2008-11-20 サーティコム コーポレーション Additional implementation of authentication to firmware
US8566791B2 (en) 2005-05-05 2013-10-22 Blackberry Limited Retrofitting authentication onto firmware
JP2007148962A (en) * 2005-11-30 2007-06-14 Fuji Xerox Co Ltd Subprogram, information processor for executing subprogram, and program control method in information processor for executing subprogram
WO2007125911A1 (en) * 2006-04-24 2007-11-08 Panasonic Corporation Data processing device, method, program, integrated circuit, and program generating device
JP2007318731A (en) * 2006-04-26 2007-12-06 Ricoh Co Ltd Image forming apparatus capable of managing multiple module constitution information
WO2023162048A1 (en) * 2022-02-22 2023-08-31 日本電信電話株式会社 Authentication system, generation device, generation method, and generation program

Also Published As

Publication number Publication date
KR100561497B1 (en) 2006-03-17
WO2002021243A3 (en) 2003-10-09
EP1368737A2 (en) 2003-12-10
CN1516836A (en) 2004-07-28
AU2001284259A1 (en) 2002-03-22
KR20030029957A (en) 2003-04-16
WO2002021243A2 (en) 2002-03-14

Similar Documents

Publication Publication Date Title
US9281949B2 (en) Device using secure processing zone to establish trust for digital rights management
JP6151402B2 (en) Inclusive verification of platform to data center
US6327652B1 (en) Loading and identifying a digital rights management operating system
US7302709B2 (en) Key-based secure storage
FI114416B (en) Method for securing the electronic device, the backup system and the electronic device
EP1942430B1 (en) Token Passing Technique for Media Playback Devices
US6782477B2 (en) Method and system for using tamperproof hardware to provide copy protection and online security
US7734921B2 (en) System and method for guaranteeing software integrity via combined hardware and software authentication
EP1556750A2 (en) Digital-rights management system
JP2004509392A (en) Software Secure Authenticated Channel
JP2004280284A (en) Control processor, electronic equipment, and program starting method for electronic equipment, and system module updating method for electronic equipment
US20070277037A1 (en) Software component authentication via encrypted embedded self-signatures
US7500109B2 (en) System and method for secure authentication of external software modules provided by third parties
CN109831311B (en) Server verification method, system, user terminal and readable storage medium
US20050060549A1 (en) Controlling access to content based on certificates and access predicates
CN114817956A (en) USB communication object verification method, system, device and storage medium
JP2008529340A (en) Registration stage

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060620

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060714

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20060714

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20060714

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20060714

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060913

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20060919

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20060919