JP2023542527A - ヘテロジニアス暗号化を通したソフトウェア・アクセス - Google Patents
ヘテロジニアス暗号化を通したソフトウェア・アクセス Download PDFInfo
- Publication number
- JP2023542527A JP2023542527A JP2023518437A JP2023518437A JP2023542527A JP 2023542527 A JP2023542527 A JP 2023542527A JP 2023518437 A JP2023518437 A JP 2023518437A JP 2023518437 A JP2023518437 A JP 2023518437A JP 2023542527 A JP2023542527 A JP 2023542527A
- Authority
- JP
- Japan
- Prior art keywords
- program
- payload
- cryptographic
- encrypted
- components
- 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
- 230000004044 response Effects 0.000 claims abstract description 18
- 230000009471 action Effects 0.000 claims abstract description 13
- 238000000034 method Methods 0.000 claims description 95
- 230000008569 process Effects 0.000 claims description 42
- 238000003860 storage Methods 0.000 claims description 39
- 230000006870 function Effects 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 9
- 238000013459 approach Methods 0.000 description 19
- 238000012545 processing Methods 0.000 description 19
- 238000004422 calculation algorithm Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 10
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 238000009826 distribution Methods 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 239000000872 buffer Substances 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 241000700605 Viruses Species 0.000 description 1
- 238000010923 batch production Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000009172 bursting Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000007123 defense Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/105—Arrangements for software license management or administration, e.g. for managing licenses at corporate level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- 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/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0863—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving passwords or one-time passwords
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/107—License processing; Key processing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Technology Law (AREA)
- Multimedia (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
ヘテロジニアス・プログラム・ペイロードの第1のコピーが、第1のコンピューティング・デバイスに提供される。ヘテロジニアス・プログラム・ペイロードは、非暗号化コンポーネントと、1つ以上の暗号化コンポーネントのセットとを含む。暗号化コンポーネントのセットは、1つ以上のプログラムのセットに対応する。ヘテロジニアス・プログラム・ペイロードの非暗号化コンポーネントは、第1のライセンス・キーを受信するように構成されたローダ・プログラム・コードを含む。ローダ・プログラム・コードは、第1のライセンス・キーを受信するのに応答して、ヘテロジニアス・プログラム・ペイロードの暗号化コンポーネントのセットに対して復号アクションを実行するように構成されている。
Description
本開示はソフトウェア・アクセスに関し、特に、暗号化を通してソフトウェアの様々なプログラムへのアクセスを提供することに関する。
ソフトウェアは、物理的なコピーまたはソフトウェアへのネットワーク・アクセスなどのソフトウェア配布メカニズムを通して1つ以上の関係者に提供され得る。権限を与えられた関係者のみによりソフトウェアへのアクセスを制御することは、依然として技術およびセキュリティ面の課題である。
各実施形態によれば、方法、システム、およびコンピュータ・プログラム製品が開示される。
ヘテロジニアス・プログラム・ペイロード(heterogeneous program payload)の第1のコピーが、第1のコンピューティング・デバイスに提供される。
ヘテロジニアス・プログラム・ペイロードは、非暗号化コンポーネントと、1つ以上の暗号化コンポーネントのセットとを含む。暗号化コンポーネントのセットは、1つ以上のプログラムのセットに対応する。ヘテロジニアス・プログラム・ペイロードの非暗号化コンポーネントは、第1のライセンス・キーを受信するように構成されたローダ・プログラム・コードを含む。ローダ・プログラム・コードは、第1のライセンス・キーを受信するのに応答して、ヘテロジニアス・プログラム・ペイロードの暗号化コンポーネントのセットに対して復号アクションを実行するように構成されている。
ヘテロジニアス・プログラム・ペイロードは、非暗号化コンポーネントと、1つ以上の暗号化コンポーネントのセットとを含む。暗号化コンポーネントのセットは、1つ以上のプログラムのセットに対応する。ヘテロジニアス・プログラム・ペイロードの非暗号化コンポーネントは、第1のライセンス・キーを受信するように構成されたローダ・プログラム・コードを含む。ローダ・プログラム・コードは、第1のライセンス・キーを受信するのに応答して、ヘテロジニアス・プログラム・ペイロードの暗号化コンポーネントのセットに対して復号アクションを実行するように構成されている。
上記の概要は、本開示の例示される各実施形態またはすべての実装を記載することを目的としてはいない。
本願に含まれる図面は、本明細書に組み込まれその一部を構成する。図面は、本開示の実施形態を示し、本記載とともに本開示の原理を説明するのに役立つ。図面は、特定の実施形態の例示でしかなく、本開示を限定するものではない。
本発明は様々な変更および代わりの形態に適するが、その具体的内容が図面に例として示され、詳しく記載される。なお、当然のことながら、記載される特定の実施形態に本発明を限定しないことが意図されている。それどころか、本発明の範囲内に入るすべての変更、等価物、および選択肢を対象とすることが意図されている。
本開示の各側面は、ソフトウェア・アクセスに関し、より具体的な各側面は、暗号化を通してソフトウェアの様々なプログラムへのアクセスを提供することに関する。本開示は、必ずしもそのような用途に限定されず、この文脈を用いて様々な例を検討することを通して本開示の様々な側面が理解されるとよい。
ソフトウェアは、コンピュータを動作させる中核部分である。ソフトウェアは、プログラムの集合であることもある。ソフトウェアの各プログラムは、ユーザのために複数の動作を実行するように構成された実行可能ファイルの形式で提供されることもある。例えばワード・プロセッサは、入力をユーザから受信してテキスト文書を生成するように構成された一種のソフトウェアとされ得る。ソフトウェアは、ユーザのために様々なプログラムまたは動作を実行するように構成された実行可能コードの、異なるように構成されたバージョンまたはバリアントの形式で提供されることもある。例えば或る画像エディタは、1,110の機能のサブセットを有する第1の構成を含むかもしれない。画像エディタの第2の構成は、3,000を超える機能の完全なセットを含むかもしれない。ソフトウェアは、関係のある、または関係のないプログラム群のスイートの形式で提供されることもある。例えばプロダクティビティ・スイートは、ワード・プロセッサおよびプレゼンテーション・クリエータを含むかもしれない。ワード・プロセッサは、独立して動作できる第1の複数の機能を含むかもしれない。プレゼンテーション・クリエータは、独立して動作できる第2の複数の機能を含むかもしれない。ワード・プロセッサおよびプレゼンテーション・クリエータの両方が、図面、テキスト、またはその他要素をワード・プロセッサとプレゼンテーション・クリエータとの間でエクスポートまたはインポートする能力など、相互に関係のある追加の機能を含むかもしれない。
ソフトウェアの作成にはコストがかかり、多数の個人がソフトウェアの作成および維持に雇用されることもある。例えば、開発者、エンジニア、テスターなどが、所与の1つのソフトウェアを構成する、数百または数千になるケースもあるプログラムの作成および維持に専念することもある。様々な形態でソフトウェアを実施することは、ソフトウェア・クリエータにとって継続的な課題である。ソフトウェアをセキュリティ保護し、且つ無数の機能、コンポーネント、プログラム、バリアント、およびその他の形態のソフトウェアに対するアクセスを提供しようと試行して、いくつかのアプローチがとられてきた。ソフトウェア・クリエータは、高品質なソフトウェアを作成しながら、ソフトウェアに対するアクセスを付与されたクライアントに同じようにアクセスを提供しようと試行するので、課題は複雑になり得る。
さらに、ソフトウェアの制御は重大なセキュリティ問題となる場合がある。例えば第三者がソフトウェアを改ざんするかもしれず、すると第三者は所与のソフトウェアを構成する種々のプログラムにアクセスできるかもしれない。改ざんは、ウイルスが用いられたり、または情報を収集する手法が用いられたりすることもあるという点で、悪質な場合がある。ソフトウェアに対する悪意のある改ざんまたはその他アクセスは、非常に大きな技術的問題となることもある。例えば、ソフトウェアの悪意のある改ざんは、ソフトウェアをもはやうまく動作させなくしたり、またはデータを喪失させたりするかもしれない。
ソフトウェアをセキュリティ保護する1つのアプローチは、ソフトウェアのすべての購入者にバイナリの固有のバージョンを生成することである。具体的には、ソフトウェア・プロバイダが、ソフトウェアの第1のクライアントのために第1のソフトウェア実行ファイルを、コンパイル、ビルド、またはその他生成すればよい。ソフトウェア・プロバイダは、ソフトウェアの第2のクライアントのために第2のソフトウェア実行ファイルをさらに生成すればよい。各ユーザのためのソフトウェアのカスタム・バージョンを生成することには欠点があると考えられる。例えば、作成された各バージョンは、各バージョンがコードの重複する行または追加の論理を含み得るという点で、複雑さを生じるかもしれない。複雑さが増すことでさらに、ソフトウェアの成功裏な実行のために必要なメモリ・フットプリントまたは処理サイクルが増大するかもしれない。ソフトウェアの或るバージョンを望む異なるクライアントが1つまたは2つのみであれば、ソフトウェアのカスタマイズされたバージョンを作成することができると考えられる。しかしながら、ソフトウェアのユーザは数十または数百以上になることもあるので、各ユーザ向けにソフトウェアのバージョンを作成するのはすぐに非現実的または不可能となるかもしれない。さらに、ソフトウェアのカスタマイズおよびバージョン・アップデートに伴い、ソフトウェアを維持するのが、すぐにかなり困難になる可能性がある。例えば、一部のクライアントは様々なアップデートを望むかもしれないし、バグの発見に伴いソフトウェアの各バージョンのアップデートが必要となるかもしれない。ソフトウェアの単一の集合をアップデートするのではなく、各クライアント用にソフトウェアの各バージョンを維持することが必要となるかもしれない。さらにこれにより、ソフトウェアの集合の各バージョンを生成するため、ならびにソフトウェアの各バージョンのテストおよびデバッグに成功するために、追加のメモリおよび処理能力が消費されるかもしれない。
ソフトウェアをセキュリティ保護する別のアプローチは、ライセンス・ストリング・ベースのソフトウェア配布である。ライセンス・ストリング・ベースのソフトウェア配布では、ソフトウェア・クリエータは、ソフトウェアの各クライアントに対して非暗号化ストリング(例えばキー・ストリング、一連の文字、数値、および記号、ライセンス・ファイル)を生成する。具体的には、ソフトウェアは、すべてのバージョン、コンポーネント、機能、またはその他関連するバリアントがペイロードにまとめられた状態で出荷され得る(例えばソフトウェアの配布可能なバージョン)。さらにソフトウェアは、ライセンス・ストリングを受け入れ、ライセンス・ストリングの値を読み取り、クライアントによるアクセスが許可されるソフトウェアの様々なバリアントを判断するための、能力を含み得る。例えば第1のユーザは、12の可能なバリアントのうち、機能2、5、および7など、ソフトウェアの第1のバリアントに対するアクセスを許可する、第1のライセンス・ストリングを有するかもしれない。別の例において第2のユーザは、12の可能なバリアントのうち、機能1、2、3、5、および7など、ソフトウェアの第2のバリアントに対するアクセスを許可する、第2のライセンス・ストリングを有するかもしれない。
各ライセンス・ストリングは、1つ以上の埋め込み特性、文字、値、またはその他関連する属性を含み得る。埋め込み属性は、ソフトウェアの様々なバリアントに対応し得る。例えば、ライセンス・ストリング中の第1の属性は、第1のソフトウェア・バリアントに対応してもよく、ライセンス・ストリング中の第2の属性は、第2のソフトウェア・バリアントに対応してもよい。ソフトウェアは、ライセンス・ストリングを受け入れ、様々な属性を読み取って処理し、それに応答してソフトウェアのバリアントに対するアクセスを付与するように構成された、論理またはコードを含み得る。
ライセンス・ストリング・ベースのアプローチには、さらなる欠点があると考えられる。ライセンス・ストリングの属性を判断するために、ソフトウェアがデバッグまたはその他攻撃にさらされるかもしれない。例えば、悪意のある第三者がデバッガにおいてソフトウェアを実行するかもしれず、ランタイム中にソフトウェアが監視されるかもしれない。どの特定のフラグ、キー、属性、または値が様々な構成を担当し、またはそれに対応するかを判断するために、ソフトウェアの様々なコンポーネント、機能、構成、またはプログラムへのアクセスを制御するソフトウェア内の論理が監視されるかもしれない。例えば悪意のある第三者は、ソフトウェアのプログラム実行を監視して、ライセンス・ストリングの第4のポジションの属性が、ソフトウェアの第1のプログラムを実行する許可を付与する能力に対応すると判断するかもしれない。ライセンス・ストリング・ベースのアプローチは、リバース・エンジニアリングされることもあるかもしれない。例えば悪意のある第三者は、ソフトウェアをデコンパイルするかもしれず、デコンパイルされたソース・コードからソフトウェア内のアクセス制御プログラムの論理を判断するかもしれない。別の例では、悪意のある第三者は、プロセッサによりソフトウェアが実行されるときにソフトウェアのメモリ空間を監視するかもしれない。
メモリ空間を監視する間に、悪意のある第三者は、ソフトウェアの様々なプログラムへのアクセスに対応する様々な属性を判断できるかもしれない。値の様々な属性が判断されれば、当該のバリアントを他の関係者に共有または配布することは簡単かもしれない。例えば悪意のある第三者は、ソフトウェアのあらゆるプログラムに対するアクセスを付与する値を伴うライセンス・ストリングをインターネット上で共有するかもしれない。
メモリ空間を監視する間に、悪意のある第三者は、ソフトウェアの様々なプログラムへのアクセスに対応する様々な属性を判断できるかもしれない。値の様々な属性が判断されれば、当該のバリアントを他の関係者に共有または配布することは簡単かもしれない。例えば悪意のある第三者は、ソフトウェアのあらゆるプログラムに対するアクセスを付与する値を伴うライセンス・ストリングをインターネット上で共有するかもしれない。
もう1つの欠点は、デコンパイルまたはその他悪意のある手法を通して、アクセス制御されている様々なコンポーネントまたはプログラムを識別し、それらを使用するために抽出できるかもしれないということである。例えば悪意のある第三者は、ソフトウェアを構成する様々なプログラムを読み出し、またはそれにアクセスするために分解手法を実行するかもしれない。悪意のある第三者は、様々なプログラムにアクセスできれば、ライセンス・ストリング・ベースのアクセス制御論理を何ら有しないソフトウェアの新バージョンをリコンパイルまたは作成するかもしれない。この新バージョンのソフトウェアは、いかなるライセンス・ストリングまたはその他アクセス制御もなく、悪意のある第三者により実行可能かもしれない。
ソフトウェア・クリエータは、このような悪意のある手法をより困難にしようと試行するかもしれない。例えばソフトウェア・クリエータは、ソフトウェアの様々なコンポーネントに対するアクセスを付与するプログラムを難読化するため、またはその観測または傍受を行うための様々なステップを実行する、より複雑なアルゴリズムを作成しようと試行するかもしれない。より複雑なアルゴリズムが成功するのは、限定的な状況下のみかもしれない。例えば、アクセス制御プログラムのより複雑なアルゴリズムは、大量のメモリまたは多数の処理サイクルの使用を含むかもしれない。このようなものが有益なのは、メインフレーム・サーバまたはスーパー・コンピュータなど、大量のメモリを備えたコンピュータ上でのみかもしれない。ソフトウェアはますます、複雑なアルゴリズムを実行できない、より限定されたリソースを用いて、コンピュータ上で実行されるようになっている。例えばスマートフォンは、ランダム・アクセス・メモリ(RAM:random-access memory)の不足が理由で、ソフトウェアの他のプログラムのアクセス制御に関連する複雑なアルゴリズムを実行できないかもしれない。別の例では、モノのインターネット(IoT:internet of things)デバイスの埋め込みプロセッサは、何日または何週間も処理を行えば複雑なアルゴリズムを実行できるかもしれないが、これはIoTデバイス上でのセキュリティ保護の使用を非現実的にする。
ソフトウェア・セキュリティに対する別のアプローチとして、ネットワーク・ベースのソフトウェア・セキュリティ手法が考えられる。ネットワーク・ベースの手法では、クライアントがソフトウェアを動作させることを許可されているか検証するために、ソフトウェアはネットワーク(例えばインターネット)を通して中央サーバに接続する。ネットワーク・ベースの手法では、ソフトウェアが動作するのは中央サーバから信号を受信する間のみとなるかもしれない。このネットワーク・ベースのソフトウェア・セキュリティ手法には、さらに多数の欠点がある。第1に、この手法は第三者により不正に模倣されることがある。例えば悪意のある第三者は、所与のクライアント上でソフトウェアのコピーが実行されて中央サーバと通信するときに、ソフトウェアのコピーからのネットワーク・トラフィックを監視するかもしれない。監視を通して、信号およびその他合間の関連するネットワーク・トラフィックが記録されたり、または検証論理がリバース・エンジニアリングされたりするかもしれない。悪意のある第三者は、ソフトウェアに応答する類似の信号を生成するかもしれず、さらに、それが中央サーバであると不正にソフトウェアに示すかもしれない。第2に、ネットワーク・ベースの手法は大きなリソースを必要とすることがある。例えばソフトウェア・クリエータは、中央サーバの様々なコンポーネントと、中央サーバをすべてのクライアントに利用可能にすることに関連するネットワーク帯域幅とを所有および運用することに対して、かなりのリソースを費やすかもしれない。
第3に、ネットワーク・ベースの手法は信頼性が低いことがある。具体的には、中央サーバの停止またはネットワークの可用性の問題が理由で、所与のクライアントの認証の能力が損なわれるかもしれない。例えば或るユーザが、スマートフォンおよびソフトウェアのコピーを有するかもしれず、そのソフトウェアのコピーは、実行するソフトウェアのセキュリティを検証するために中央サーバと通信するように構成されているかもしれない。スマートフォンが偶然にでもネットワーク接続性を失うと、ソフトウェアのコピーは、アクセス制御がもはや利用可能でないので、もはや実行しないかもしれない。第4に、ネットワーク・ベースの手法は、実務的な状況によっては技術的に可能でないことがある。具体的には、ソフトウェアのクライアントには、エアギャップされたシステムであるコンピュータを動作させるものもあるかもしれない。エアギャップされたシステムは、他のいかなるコンピュータにも通信可能なように結合されていないシステムであるかもしれない。エアギャップされたシステムは、特定のクライアントのために必要とされることがある。例えば或るクライアントは、特定の業界(例えば財務、保健、防衛)において、セキュリティまたはプライバシー要件を有するシステムを、より高いセキュリティのために動作させるかもしれない。このクライアントは、セキュアな動作のために、他のいずれのコンピュータにも通信可能に接続しないかもしれず、さらに、ネットワーク接続を用いずに処理を実行するかもしれない。ネットワーク接続がなければ、ネットワーク・ベースの手法は、1つ以上のプログラムの検証に成功しないと考えられ、ソフトウェアは動作可能でなくなるであろう。
ヘテロジニアス暗号化ソフトウェア・セキュリティ(HESS)は、ソフトウェアをセキュリティ保護する他の形態と比較して1つ以上の利点および機能を伴って実行できる。HESSは、一つには、ソフトウェアを構成する1つ以上のプログラムを1つ以上の暗号化コンポーネントのセットへと暗号化することにより動作してもよい。1つ以上の暗号化コンポーネントのセットは、非暗号化コンポーネントと組み合わされて、ヘテロジニアス・プログラム・ペイロードを構成してもよい。例えばプログラムは、1つ以上のフォルダに配置されプログラム・パッケージに圧縮された、インタープリタ型言語などからの、1つ以上のプログラム・コード・ファイルであってもよい(例えばJARファイル内のJava(登録商標)プログラム・コード)。別の例において、コンパイル型言語などからの、1つ以上のソース・コード・ファイルが、プログラム実行ファイルの一連のバイナリ値へと一緒にコンパイルされてもよい。いずれの例においても、ペイロードを構成するプログラムの一部が、第1の暗号化プロセスを用いて暗号化されてもよい。例えばペイロードの各部分は、AES-128以上のキー長などの対称暗号化アルゴリズム、もしくはRSA-2048もしくはECDSA-224以上のキー長などの非対称暗号化アルゴリズム、またはキー・ポリシー属性ベース暗号方式(KP-ABE:key-policy attribute-based encryption scheme)もしくは一定サイズの暗号文を用いるKP-ABEなどの属性ベース暗号方式を用いて暗号化され得るであろう。
暗号化されると、ヘテロジニアス・プログラム・ペイロードは、1つ以上のプログラムに対応する1つ以上の暗号化コンポーネントのセットを有してもよい。暗号化プロセスは、コンポーネントの一部(例えば1つ以上のプログラムのセット)のみを対象としてもよい。具体的には、別の1つまたは複数のプログラムは、ヘテロジニアス・プログラム・ペイロードにおいて暗号化されないままであってもよい。一部の実施形態において、ローダ・プログラムなどのプログラムは、ヘテロジニアス・プログラム・ペイロードの非暗号化コンポーネントのままであってもよい。例えば、或るプログラムと、関係するかまたはサポートされる任意のライブラリまたはランタイムとは、バイナリ実行ファイル内の一連の非暗号化ビットのままであってもよく、この実行ファイルは、暗号化コンポーネントのセットを含む一連の暗号化ビットも含んでもよい。別の例において、JARファイルなどの配布可能なプログラムは、ヘテロジニアス・プログラム・ペイロードの非暗号化部分に対応する1つ以上のコード・ファイルおよびフォルダを有してもよい。
HESSのヘテロジニアス・プログラム・ペイロードは、ライセンス・キーなどのキーとともに動作してもよい。詳細には、ヘテロジニアス・プログラム・ペイロードは、1つ以上のコンピューティング・システムに、キーとともに、またはキーとは別に、配布されてもよい。一部の実施形態において、HESSは、ヘテロジニアス・プログラム・ペイロードおよび複数のキーの形態であってもよい。具体的には、キーは、ヘテロジニアス・プログラム・ペイロードのコピーを動作させるように構成されている潜在的なクライアント・マシンそれぞれに対して生成されてもよい。各キーは、ヘテロジニアス・プログラム・ペイロード内の様々なプログラムに対応する1つ以上の暗号化プログラム属性を含んでもよい。例として、第1のキーは、暗号化形式の属性である30の英数字を含んでもよい。暗号化プログラム属性は、暗号化コンポーネントのセット内の暗号化されているプログラムのセットのうちのサブセットにアクセスする許可を付与する暗号化形式のプログラム属性を表現する、1つ以上の字、文字、記号などであってもよい。
各キーは、他のいずれのキーとも異なってもよい。具体的には、HESSの各キーは、1つ以上の暗号化プログラム属性のセットが各キーについて異なるような形で構築されてもよい。別の言い方をすれば、ヘテロジニアス・プログラム・ペイロードに対する同じ許可を付与する2つのキーは、暗号化プログラム属性を共有しない。例えば、第1のキーが、ヘテロジニアス・プログラム・ペイロードのプログラムのセットのうちの第1のプログラムのみの動作を許可する1つ以上のプログラム属性を含んでもよい。第2のキーが、同じく第1のプログラムのみの動作を許可する同じ1つ以上のプログラム属性を含んでもよい。第1のキーは、1つ以上のプログラム属性が1つ以上の暗号化プログラム属性の第1のセットの形態となるように暗号化されるとよい。第2のキーはさらに、1つ以上のプログラム属性が、同じく暗号化プログラム属性の形態ではあるが、1つ以上の暗号化プログラム属性の第2のセットの形態となるように暗号化されるとよい。暗号化プログラム属性のみが観測可能であると考えられるので、調べてもプログラム属性は判断可能、理解可能、またはその他判断するために確認可能でないであろう。
ヘテロジニアス・プログラム・ペイロードの非暗号化コンポーネントは、ペイロードのほかの部分を構成する暗号化コンポーネントのセットを用いて動作しそれに対するアクセスを提供するように構成された、コードを含んでもよい。具体的には、ヘテロジニアス・プログラム・ペイロードの非暗号化コンポーネントは、ローダ・プログラム・コード(「ローダ」)として構成されてもよい。HESSのヘテロジニアス・プログラム・ペイロードのローダは、キーを受信し、1つ以上の復号手法を実行するように構成されてもよい。ヘテロジニアス・プログラム・ペイロードの復号手法は、自己復号手法であってもよい。具体的には、ヘテロジニアス・プログラム・ペイロードのローダ・プログラムは、暗号化コンポーネントのセットを対象とした1つ以上のコマンドを受け入れるように構成されてもよい。例えばユーザは、1つ以上のコンポーネントのうちの第1の暗号化コンポーネント内の暗号化されている第1のプログラムの実行を実施するリクエストを開始してもよい。ユーザは、プログラムの動作を実行するための入力をローダに提供することにより操作してもよい。例えばHESSは、テキスト・エディタ・プログラムおよび画像エディタ・プログラムを含む暗号化コンポーネントのセットを含んだソフトウェアの形態で提供される、プロダクティビティ・スイートを保護するように構成されてもよい。ユーザは、テキスト・エディタ・プログラムを実行するためのコマンドをローダに送信することにより、HESSの動作を開始してもよい。
ローダ・プログラム・コードは、キーを受信すると第1の暗号化コンポーネントに対して復号アクションを実行するように構成されてもよい。詳細には、ローダは、キーを受信し、キーに対して復号アクションを実行し、ヘテロジニアス・プログラム・ペイロードの暗号化コンポーネント内に格納されたプログラムにアクセスするためのキーの妥当性を判断するように構成されてもよい。例えば、キーが、ローダにより復号されたときに、リクエストされたプログラムに対応するプログラム属性を含む、暗号化プログラム属性を含む場合、ローダはそのプログラムを復号して、プログラムを実行のために1次メモリにロードするように構成されてもよい。別の例において、キーが、ローダにより復号されたときに、リクエストされたプログラムに対応するプログラム属性を含まない暗号化プログラム属性を含む場合、ローダはそのプログラムを含む暗号化コンポーネントの実行を拒否するように構成されてもよい。
ヘテロジニアス・プログラム・ペイロードは、他の形態のキーおよび実行ファイルの配布に対し、技術的に有利であろう。具体的には、HESSのキーの値は、悪意のある攻撃に抵抗力を持ち得る。第1に、HESSは、暗号化プログラム属性を含むキーに基づいてのみ動作し得るが、ライセンス・ストリング・ベースの手法は、非暗号化値に基づき動作し得る。悪意のある第三者が、キーの暗号化プログラム属性にある暗号化されている1つ以上のプログラム属性を読み取ることはできないであろう。ローダは、非暗号化プログラム属性を特に生成することなく、暗号化プログラム属性に対応する特定のプログラムの復号のみをするように構成されてもよい。例えばローダは、キーと、第1のプログラムのプログラム実行命令の形態の第1のプログラムの実行のリクエストとをプログラムの入力として得ることによってのみ動作してもよい。ローダの出力は、第1のプログラムの実行のみであってもよく、第1のプログラムに対応する非暗号化プログラム属性を含まなくてもよい。
第2に、ローダ・プログラムは、他の手法と比較して少ないリソースで動作し得る。具体的には、ライセンス・ストリング・ベースのセキュリティ手法などの他の手法よりも、より単純な形態の計算および復号アルゴリズムが、ローダにより実行され得る。例えば復号手法は、複雑なプロセスのセット、または専用の回路もしくは暗号化要素のセットに依拠することもある。他の手法の専用の復号プロセスは、特定のハードウェアまたはかなりの処理能力を有するスマートフォンもしくはその他ポータブル・コンピューティング・デバイスのみに限定され得る。これに対してローダの復号プロセスは、数十の処理サイクルのみを使用して実行し且つ数キロバイトのみの1次メモリを使用するコンピュータ・プロセスなど、比較的低いリソース使用量で動作するプロセスとされ得る。
第3に、HESSは、悪意のある第三者の観測またはデバッグに対して強靱性を持ちながら復号を実行し得る。例えばローダ・プログラム・コードは、デコンパイルまたはデバッグされるかもしれないが、ローダの復号手法は、プログラム属性を明らかにしないものとされ得る。ローダは、観測できない復号アクションを実行することにより動作してもよい。例えば、「セキュア」または「シークレット」コード実行と表現される手法に類似して、ローダ・プログラムにより復号されたコードは、依然としてある形態の暗号化コードであってもよい。一部の実施形態では、暗号化ペイロードが依然として実行可能であり、その一方で攻撃者がコードを観測するのは依然として防止するように、準同型暗号化手法を使用可能であろう。一部の実施形態では、限定的な動作が観測できるかもしれないが、ローダにより実行される動作は、いかなる点においても、非暗号化プログラム属性を提示したり、明らかにしたり、またはその他それに対するアクセスを許可したりしないとよい。例えばローダ・プログラムの各ステップは、暗号化コンポーネントのセットのあるセクションまたは部分のポインタ、参照、またはその他指示のみ明らかにしてもよいが、暗号化コンポーネントに格納された実際のプログラムは参照、開示、またはその他明らかにしないとよい。一部の実施形態では、ローダ・コードはいかなるアクセス制御論理も含まなくてもよい。ローダ・コードは、復号されるべき特定のコンポーネントを指示または選択するいかなるプログラム・コードも含まなくてもよい。一部の実施形態では、ライセンス・キーは、暗号化プログラム属性などの暗号化形式で、特定のプログラムに対する指示、ポインタ、またはその他関連する参照を格納してもよい。復号の動作は、特定のプログラムに対する、ライセンス・キーの暗号化プログラム属性から非暗号化されたポインタまたは参照を生じてもよい。
結果として、ヘテロジニアス・プログラム・ペイロードのローダは、すべての非暗号化プログラムまたは暗号化コンポーネントに格納されたプログラムに対する許可を付与するいかなるアクセス制御もしくはプログラム属性も明らかにしたり、その他そのコピーを平文で格納したりは決してしないとよい。さらにローダは、暗号化コンポーネントの一部のみを復号してもよい。例えば第1のヘテロジニアス・プログラム・ペイロードは、3つの暗号化コンポーネントのセットと、そのセットのためのローダ・プログラム・コードを含む非暗号化コンポーネントとを含む。第1の暗号化コンポーネントに対するアクセスを付与する第1のライセンス・キーを受信すると、第1の暗号化コンポーネントのみが1次メモリのセキュアな部分に復号されてもよい。第2および第3の暗号化コンポーネントは、非暗号化されなくてもよく、第1のライセンス・キーのみを受信することでローダにより復号されることは決してなくてもよい。復号に対するこの細粒度アプローチは、他の暗号化コンポーネントの権限のないアクセスまたは変更を防止し得る。その結果として、ソフトウェアの他のコンポーネントは決して復号されず、何らのアクセス制御論理も存在しないので、復号されていないプログラムがデコンパイル、リバース・エンジニアリング、またはその他閲覧、観測、または取得される可能性はない。
第4に、HESSは、エアギャップされたマシン上で動作し得る。ヘテロジニアス・プログラム・ペイロードは、部分的に自己復号型であってもよい。具体的には、ヘテロジニアス・プログラム・ペイロードのローダ・プログラム・コードは、ネットワーク接続を必要とすることなく動作してもよい。ヘテロジニアス・プログラム・ペイロードのローダは、他のコンピュータへの通信なしに動作してもよい。ローダは、(暗号化コンポーネントのセットに格納されている)どのプログラムかについての入力に対するアクセス、およびライセンス・キーに対するアクセスのみを用いて動作してもよい。
第5に、HESSは、維持が比較的単純となり得る。具体的には、ヘテロジニアス・プログラム・ペイロードは、単一のペイロードにおいて、配布するための多様な構成のコンポーネント、機能およびその他プログラムすべてを含むことができる。例えば第1のライセンス・キーは、第1の暗号化コンポーネントのみが復号および実行されることを許可する暗号化プログラム属性を含んでもよい。別の例において、第2のライセンス・キーは、複数の暗号化コンポーネントが復号および実行されることを許可する複数の暗号化プログラム属性を含んでもよい。新バージョンが作成される場合、ソフトウェア・クリエータは、すべての特定のクライアントのために単一のヘテロジニアス・プログラム・ペイロードのみを維持すればよいと考えられ、多様な機能またはバリアントが、ライセンス・キーと、非暗号化コンポーネントに格納されたローダ・プログラム・コードとの組み合わせのみによって制御されてもよい。
図1は、本開示の一部の実施形態による、使用され得る例示のコンピュータ・システム100(あるいはコンピュータ)の代表的な主要コンポーネントを示す。当然のことながら、個々のコンポーネントは、複雑さ、数、タイプ、もしくは構成、またはそのいずれかの組み合わせにおいて異なってもよい。開示される特定の例は、例示のみを目的としたものであり、必ずしも当該のバリエーションに限られない。コンピュータ・システム100は、プロセッサ110、メモリ120、入出力インターフェース(本願明細書ではI/OまたはI/Oインターフェース)130、およびメイン・バス140を含んでもよい。メイン・バス140は、コンピュータ・システム100の他のコンポーネントのための通信経路を提供してもよい。一部の実施形態において、メイン・バス140は、専用デジタル信号プロセッサ(図示せず)などの他のコンポーネントに接続してもよい。
コンピュータ・システム100のプロセッサ110は、1つ以上のコア112A、112B、112C、112D(集合的に112)からなってもよい。プロセッサ110はさらに、コア112のための命令およびデータの一時的なストレージを提供する1つ以上のメモリ・バッファまたはキャッシュ(図示せず)を含んでもよい。コア112は、キャッシュから、またはメモリ120から提供される入力に対して命令を実行し、結果をキャッシュまたはメモリに出力してもよい。コア112は、本開示の実施形態に従う1つ以上の方法を実行するように構成された、1つ以上の回路からなってもよい。一部の実施形態においてコンピュータ・システム100は、複数のプロセッサ110を含んでもよい。一部の実施形態においてコンピュータ・システム100は、1つだけのコア112を備えた単一プロセッサ110であってもよい。
コンピュータ・システム100のメモリ120は、メモリ・コントローラ122を含んでもよい。一部の実施形態においてメモリ120は、データおよびプログラムを格納するランダム・アクセス半導体メモリ、ストレージ・デバイス、またはストレージ媒体(揮発性または不揮発性のいずれか)を含んでもよい。一部の実施形態においてメモリは、モジュール(例えばデュアル・インライン・メモリ・モジュール)の形態であってもよい。メモリ・コントローラ122は、プロセッサ110と通信し、メモリ120における情報の格納および読み出しを促進してもよい。メモリ・コントローラ122は、I/Oインターフェース130と通信し、メモリ120における入力または出力の格納および読み出しを促進してもよい。
I/Oインターフェース130は、I/Oバス150、端末インターフェース152、ストレージ・インターフェース154、I/Oデバイス・インターフェース156、およびネットワーク・インターフェース158を含んでもよい。I/Oインターフェース130は、メイン・バス140をI/Oバス150に接続してもよい。I/Oインターフェース130は、プロセッサ110およびメモリ120からの命令およびデータをI/Oバス150の様々なインターフェースに向かわせてもよい。I/Oインターフェース130はさらに、I/Oバス150の様々なインターフェースからの命令およびデータをプロセッサ110およびメモリ120に向かわせてもよい。様々なインターフェースは、端末インターフェース152、ストレージ・インターフェース154、I/Oデバイス・インターフェース156、およびネットワーク・インターフェース158を含んでもよい。一部の実施形態において、様々なインターフェースは、前述のインターフェースのサブセットを含んでもよい(例えば、工業用途における埋め込みコンピュータ・システムは、端末インターフェース152およびストレージ・インターフェース154を含まなくてもよい)。
メモリ120、プロセッサ110、およびI/Oインターフェース130を含むがこれに限定されない、コンピュータ・システム100中の論理モジュールは、1つ以上のコンポーネントに対する障害および変更をハイパーバイザまたはオペレーティング・システム(図示せず)に伝達してもよい。ハイパーバイザまたはオペレーティング・システムは、コンピュータ・システム100内で利用可能な様々なリソースを配分し、メモリ120内のデータの位置および様々なコア112に割り当てられたプロセスを追跡してもよい。各要素を組み合わせ、または配置し直す実施形態では、論理モジュールの各側面および各能力が、組み合わされたり区分し直されたりしてもよい。当業者にはこうしたバリエーションが明らかであろう。
当然のことながら、本開示は、クラウド・コンピューティングについての詳細な記載を含むものの、本願明細書に記載される教示の実装は、クラウド・コンピューティング環境に限定されない。むしろ本発明の実施形態は、現在周知の、または後に開発される、ほかの任意のタイプのコンピューティング環境に関連して実装することができる。クラウド・コンピューティングは、最小限の管理作業またはサービスのプロバイダとのやり取りで迅速にプロビジョニングおよびリリースできる、構成可能なコンピューティング・リソース(例えばネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシンおよびサービス)の共有プールに対する、オンデマンドの便利なネットワーク・アクセスを実現するサービス供給のモデルである。こうしたクラウド・モデルには、少なくとも5つの特徴と、少なくとも3つのサービス・モデルと、少なくとも4つの展開モデルとが含まれ得る。
特徴は以下の通りである。
オンデマンド・セルフサービス:クラウド消費者は、サーバの時間およびネットワーク・ストレージなどのコンピューティング能力を、必要に応じて自動的に、サービスのプロバイダとの人的やり取りの必要なく、一方的にプロビジョニングできる。
広範なネットワーク・アクセス:各能力はネットワーク上で利用可能であり、ヘテロジニアスなシンまたはシック・クライアント・プラットフォーム(例えばモバイル電話、ラップトップおよびPDA(personal digital assistant:携帯情報端末))による使用を促進する標準のメカニズムを通してアクセスされる。
リソース・プーリング:プロバイダのコンピューティング・リソースは、マルチ・テナント・モデルを使用して複数の消費者にサービスを提供するようプールされ、種々の物理リソースおよび仮想リソースが要求に応じて動的に割り当ておよび再割り当てされる。一般に、消費者は提供されるリソースの正確な場所についての制御権も知識も有しないという点で、非場所依存の感覚があるが、より高い抽象化レベルでは場所(例えば国、州、またはデータセンター)を指定できることもある。
迅速な伸縮性:各能力は、場合によっては自動的に、迅速且つ伸縮自在にプロビジョニングされ素早くスケール・アウトすること、および迅速にリリースされ素早くスケール・インすることができる。多くの場合、消費者にはプロビジョニングに利用可能な各能力が無制限であるように見え、任意の量をいつでも購入できる。
測定されるサービス:クラウド・システムは、サービスのタイプに適した或る抽象化レベルでの計測能力(例えばストレージ、処理、帯域幅、およびアクティブなユーザ・アカウント)を活用することによって、リソースの使用を自動的に制御および最適化する。リソース使用量は、監視、制御、およびレポート可能であり、利用されるサービスのプロバイダおよび消費者の双方に透明性が提供される。
サービス・モデルは以下の通りである。
ソフトウェア・アズ・ア・サービス(SaaS:Software as a Service):消費者に提供される能力は、クラウド・インフラストラクチャ上で実行されているプロバイダのアプリケーションの使用である。アプリケーションは、ウェブ・ブラウザ(ウェブ・ベースの電子メール)などのシン・クライアント・インターフェースを通して様々なクライアント・デバイスからアクセス可能である。消費者は、ネットワーク、サーバ、オペレーティング・システム、ストレージを含む基礎をなすクラウド・インフラストラクチャも、個々のアプリケーションの能力さえも、管理または制御しないが、限られたユーザ別のアプリケーション構成の設定は例外とされることもある。
プラットフォーム・アズ・ア・サービス(PaaS:Platform as a Service):消費者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、消費者が作成または入手したアプリケーションの、クラウド・インフラストラクチャ上への展開である。消費者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基礎をなすクラウド・インフラストラクチャの管理または制御は行わないが、展開されたアプリケーション、さらに場合によってはアプリケーション・ホスティング環境の構成を制御する。
インフラストラクチャ・アズ・ア・サービス(IaaS:Infrastructure as a Service):消費者に提供される能力は、処理、ストレージ、ネットワーク、およびその他基本的なコンピューティング・リソースのプロビジョニングであり、消費者はそこで、オペレーティング・システムおよびアプリケーションを含み得る任意のソフトウェアを展開し実行することができる。
消費者は、基礎をなすクラウド・インフラストラクチャの管理または制御は行わないが、オペレーティング・システム、ストレージ、展開されたアプリケーションを制御し、場合によっては、一部のネットワーキング・コンポーネント(例えばホスト・ファイアウォール)を限定的に制御する。
消費者は、基礎をなすクラウド・インフラストラクチャの管理または制御は行わないが、オペレーティング・システム、ストレージ、展開されたアプリケーションを制御し、場合によっては、一部のネットワーキング・コンポーネント(例えばホスト・ファイアウォール)を限定的に制御する。
展開モデルは以下の通りである。
プライベート・クラウド:クラウド・インフラストラクチャは、或る組織のみのために運用される。これは、組織または第三者により管理されることがあり、オンプレミスまたはオフプレミスに存在し得る。
コミュニティ・クラウド:クラウド・インフラストラクチャは、いくつかの組織によって共有され、共有される関心事(例えばミッション、セキュリティ要件、ポリシー、およびコンプライアンスの考慮事項)を有する特定のコミュニティをサポートする。これは、組織または第三者により管理されることがあり、オンプレミスまたはオフプレミスに存在し得る。
パブリック・クラウド:クラウド・インフラストラクチャは、公衆または大規模業界団体に利用可能にされ、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:クラウド・インフラストラクチャは、2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合であり、各クラウドは一意のエンティティのままであるが、データおよびアプリケーションの移植性(例えばクラウド間のロード・バランシングのためのクラウド・バースト)を実現する標準技術またはプロプライエタリ技術によってバインドされる。
クラウド・コンピューティング環境は、サービス指向であり、ステートレス性、疎結合性、モジュール性、および意味的相互運用性が重視される。クラウド・コンピューティングの中心には、相互接続されたノードのネットワークを含むインフラストラクチャがある。
以下、図2を参照すると、例示のクラウド・コンピューティング環境50が示されている。図のように、クラウド・コンピューティング環境50は、1つ以上のクラウド・コンピューティング・ノード10を含み、例えば携帯情報端末(PDA)または携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、もしくは自動車用コンピュータ・システム54N、またはそのいずれかの組み合わせなど、クラウド消費者により使用されるローカル・コンピューティング・デバイスが、クラウド・コンピューティング・ノード10と通信できる。ノード10は互いに通信してもよい。ノード10は、上述のプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、もしくはハイブリッド・クラウド、またはその組み合わせなどの1つ以上のネットワークにおいて、物理的または仮想的にグループ化されることもある(図示せず)。これによりクラウド・コンピューティング環境50は、インフラストラクチャ、プラットフォーム、もしくはソフトウェア、またはそのいずれかの組み合わせをサービスとして提供することができ、それらのためにクラウド消費者がローカル・コンピューティング・デバイス上にリソースを維持する必要はない。当然のことながら、図2に示されているコンピューティング・デバイス54A~Nのタイプは例示のみを目的としており、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、コンピュータ化された任意のタイプのデバイスと、任意のタイプのネットワークもしくはネットワーク・アドレス指定可能な接続(例えばウェブ・ブラウザを使用)またはその両方で通信できる。
以下、図3を参照すると、クラウド・コンピューティング環境50(図2)によって提供される機能抽象化層のセットが示されている。図3に示されているコンポーネント、層、および機能は例示のみを目的としており、本発明の実施形態はそれに限定されないことをあらかじめ理解されたい。図示されているように、以下の層および対応する機能が提供される。
ハードウェアおよびソフトウェア層60は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例には、メインフレーム61、RISC(Reduced Instruction Set Computer(縮小命令セット・コンピュータ))アーキテクチャ・ベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーキング・コンポーネント66が含まれる。一部の実施形態において、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。仮想化層70は、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75を例とする仮想エンティティが提供され得る抽象化層を提供する。
一例において管理層80は、下記の機能を提供してもよい。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソースおよびその他のリソースの動的な調達を提供する。計測および価格決定82は、クラウド・コンピューティング環境内でリソースが利用されるときのコストの追跡と、こうしたリソースの消費に対する請求またはインボイスの作成とを提供する。一例において、当該のリソースは、アプリケーション・ソフトウェア・ライセンスを含んでもよい。セキュリティは、クラウド消費者およびタスクのアイデンティティ検証、ならびにデータおよびその他リソースの保護を提供する。ユーザ・ポータル83は、消費者およびシステム管理者のためにクラウド・コンピューティング環境に対するアクセスを提供する。サービス・レベル管理84は、必要なサービス・レベルが満たされるようにクラウド・コンピューティング・リソースの配分および管理を提供する。サービス・レベル合意(SLA:Service Level Agreement)計画および達成85は、SLAに従い将来の要求が予想されるクラウド・コンピューティング・リソースの事前準備および調達を提供する。
ワークロード層90は、クラウド・コンピューティング環境が利用される目的となり得る機能性の例を提供する。この層から提供され得るワークロードおよび機能の例には、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育配信93、データ分析処理94、トランザクション処理95、ならびにHESS96が含まれる。
図4は、本開示の一部の実施形態に従った、ソフトウェア・ペイロードの1つ以上のプログラムをセキュリティ保護するヘテロジニアス暗号化ソフトウェア・セキュリティ(HESS)のシステム400を示す。システム400は、セキュアなソフトウェア実行の動作を実行しているコンピューティング・デバイスの1つ以上のコンポーネントであってもよい。コンピューティング・デバイスは、コンピュータ100などのクライアント・デバイスであってもよい。システム400は、プロセッサ410、2次メモリ420、および1次メモリ430を含む複数のハードウェアを含んでもよい。システム400はさらに、プロセッサ410による実行を実施するためのコマンドを受信するための入力(図示せず)を含んでもよい。例えば、第1のプログラムまたはユーザから他のプログラムまたはサブルーチンを実行するためのコマンドを受信する。
2次メモリ420は、プロセッサ410および1次メモリ430に提供するプログラムおよび実行可能コードの格納または保持(一時的またはより永続的のいずれか)を促進してもよい。第1の例において2次メモリ420は、ハード・ディスク・ドライブもしくはソリッド・ステート・ストレージ・デバイスまたはその他データのビット1つ以上を格納するように構成されたコンピュータ・コンポーネントなどのストレージ・デバイスであってもよい。第1の例の続きとして、1次メモリ430は、ランダム・アクセス・メモリ(RAM)であってもよく、且つ、2次メモリ420からデータを受信してもよい。第2の例では、2次メモリ420がRAMであってもよく、1次メモリ430はプロセッサ410の1つ以上のレジスタまたはキャッシュであってもよい。
システム400は、セキュアなソフトウェアを受信および実行するように構成されてもよい。具体的には、システム400は、ライセンス・キー(キー)440およびヘテロジニアス・プログラム・ペイロード(ペイロード)450のコピーを受信するように構成されてもよい。ペイロード450は、サーバまたはクラウド・コンピューティング環境50などの別のコンピューティング・デバイスにより提供されてもよい。ペイロード450は、システム400に提供される前に別のコンピューティング・デバイスにより生成されてもよい。キー440も、システム400により受信される前に別のコンピューティング・デバイスにより提供されてもよい。キー440およびペイロード450は、システム400の2次ストレージ420に格納されてもよい。キー440は、1つ以上の暗号化プログラム属性442-1および442-2(集合的に442)のセットを含んでもよい。暗号化プログラム属性442のセットは、1つ以上のプログラム属性のセットを含む暗号化された一連の文字であってもよい(図示せず)。プログラム属性のセットは、参照、ポインタ、またはその他関連するプログラム値であってもよい。ペイロード450は、非暗号化コンポーネント452、および1つ以上の暗号化コンポーネント454-1、454-2、454-Nまで(集合的に454)のセットを含んでもよい。ペイロード450は、実行可能ファイルまたはアーカイブであってもよい。例えばペイロード450は、システム400のプロセッサ410により実行可能なバイナリ・ファイルであってもよい。別の例においてペイロード450は、プロセッサ410により実行される複数のファイルおよびフォルダ(図示せず)を含む実行可能なアーカイブであてもよい。
非暗号化コンポーネント452は、実行可能で、1つ以上のコマンド、入力、リクエストなどに応答するものであってもよい。詳細には、非暗号化コンポーネント452は、プログラム実行リクエストを受信するように構成されているローダ・プログラム・コード(ローダ)として構成されてもよい。ローダ452は、ペイロード450の他の部分を実行するように構成されてもよい。ローダ452は、例として、暗号化されていない他のランタイム、ライブラリ、コード・オブジェクトなどをロードしてもよい。ローダ452はさらに、ペイロード450の他の部分を条件付きで動作させるように構成されてもよい。具体的には、ローダ452は、暗号化コンポーネント454の1つ以上を間接的にロードまたは実行するのみであってもよい。
具体的には、ローダ452は、暗号化コンポーネント454のセットのうちの単一の暗号化コンポーネントを復号するのみであってもよく、復号が成功すると、暗号化コンポーネント454のセットの今や復号されたコンポーネントが自動的に開始してもよい。さらに、セキュリティを高めるために、キー440によっては、一定の暗号化コンポーネント454のみが復号されてもよく、且つ一部の暗号化コンポーネント454は決して復号されなくてもよい。例えば、実行されるよう指定されていない如何なるプログラム、コンポーネント、または機能(所与の暗号化コンポーネント454に格納されている)も、非暗号化コンポーネント452により復号されないことになる。別の例において、所与のキー440において対応する暗号化された許可442がない如何なるプログラム、コンポーネント、または機能(所与の暗号化コンポーネント454に格納されている)も、非暗号化コンポーネント452により復号されることは決してできないであろう。一部の状況において、他のシステムまたは他のキー(キー440以外)に暗号化属性の異なるセットが提供されてもよい。別のキーの暗号化属性の異なるセットは、特定の暗号化コンポーネント454の実行を許可することになるプログラム属性を含んでもよい。例えば、後の時点でシステム400に追加の暗号化属性を含む新たなキーが提供された場合、ペイロード450の第1のコピーの実行は、暗号化コンポーネント454に格納された他のプログラム、コンポーネント、または機能の実行を許可してもよい。
具体的には、ローダ452は、暗号化コンポーネント454のセットのうちの単一の暗号化コンポーネントを復号するのみであってもよく、復号が成功すると、暗号化コンポーネント454のセットの今や復号されたコンポーネントが自動的に開始してもよい。さらに、セキュリティを高めるために、キー440によっては、一定の暗号化コンポーネント454のみが復号されてもよく、且つ一部の暗号化コンポーネント454は決して復号されなくてもよい。例えば、実行されるよう指定されていない如何なるプログラム、コンポーネント、または機能(所与の暗号化コンポーネント454に格納されている)も、非暗号化コンポーネント452により復号されないことになる。別の例において、所与のキー440において対応する暗号化された許可442がない如何なるプログラム、コンポーネント、または機能(所与の暗号化コンポーネント454に格納されている)も、非暗号化コンポーネント452により復号されることは決してできないであろう。一部の状況において、他のシステムまたは他のキー(キー440以外)に暗号化属性の異なるセットが提供されてもよい。別のキーの暗号化属性の異なるセットは、特定の暗号化コンポーネント454の実行を許可することになるプログラム属性を含んでもよい。例えば、後の時点でシステム400に追加の暗号化属性を含む新たなキーが提供された場合、ペイロード450の第1のコピーの実行は、暗号化コンポーネント454に格納された他のプログラム、コンポーネント、または機能の実行を許可してもよい。
動作の第1の例において、第1のリクエスト460がシステム400のプロセッサ410により受信されてもよい。プロセッサ410は、第1のリクエスト460を受信してもよく、それに応答してペイロード450の第1のインスタンス470を実行してもよい。第1のペイロード・インスタンス470は、非暗号化コンポーネント472の第1のインスタンス、および暗号化コンポーネント474-1、474-2、474-Nまで(集合的に474)のセットを含んでもよい。第1のリクエスト460は、暗号化コンポーネント474のセット内の暗号化されているプログラムのセットのうちの第1のプログラムを対象としてもよい。第1のリクエスト460は、第1のプログラムに対する実行リクエストであってもよい。第1のペイロード・インスタンス470はさらに、(例えば実行に対する引数としてキー440を提供されることにより、または第1のリクエスト460に応答してキー440を読み出すことにより)キー440の妥当性を検証するように構成されていてもよい。リクエスト460は、グラフィカル・ユーザ・インターフェース(例えばメニューに対するマウスのクリック)を介したユーザからの入力またはコマンド・ライン命令の形態であってもよい。例えば第1のリクエスト460は、「myLicense.key」という名前のキー440を用い「mySoftware.jar」という名前のJava(登録商標)JARファイルであるペイロード450を対象とし、「TextTyper」という名前のプログラム474-1が実行されることをリクエストしてもよい。第1のリクエスト460は、コマンド・ラインにおいて「.java -jar mySoftware.jar -1 myLicense.key -t TextTyper」と表示されてもよい。
動作の第1の例の続きとして、リクエスト460を受信するとプロセッサ410は第1のペイロード・インスタンス470を実行してもよく、ローダ472は、キー440を使用して暗号化コンポーネント474-1を復号してもよい。キー440の暗号化属性442は、キーがどのコンポーネントを復号できるかを指定する暗号化バイナリ値と、保護された機能性を特徴付けるラベルとを含んでもよい。プログラム474-1の実行は、システム410のほかの部分による観測からセキュリティ保護されてもよい。第1の例では、準同型暗号化手法が採用されてもよい。第2の例では、第1のペイロード・インスタンス470は、1次ストレージ430において実行される他のプロセスからサンドボックス化されてもよい。別の例では、第1のペイロード・インスタンス470の暗号化コンポーネント474は、対称キー(図示せず)の第1の暗号化コピーを含んでもよく、キー440も、対称キーの第2の暗号化コピーを含んでもよい。キー440において暗号化されている対称キーのコピーが受信されないいかなる暗号化コンポーネント474も、実行されない可能性がある。その結果として、復号後、且つ1次ストレージ430に存在する間にプログラム474-1の第1のインスタンスを傍受する悪意のあるプログラムは、対称キーのコピーも保有していなければ実行可能なコピーを作ることはできない可能性がある。
動作の第2の例において、第2のリクエスト480がプロセッサ410により受信されてもよい。プロセッサ410は、第2のリクエスト480を受信してもよく、それに応答してペイロード450の第2のインスタンス490を実行してもよい。第2のペイロード・インスタンス490は、非暗号化コンポーネント492の第2のインスタンス、および暗号化コンポーネント494-1、494-2、494-Nまで(集合的に494)のセットを含んでもよい。第2のリクエスト480は、暗号化コンポーネント494のセット内の暗号化されているプログラムのセットのうちの第2のプログラムを対象としてもよい。具体的には、第2のプログラムは、暗号化コンポーネント494-2において暗号化されていてもよい。第2のリクエスト480はさらに、キー440を伴ってもよい。キー440は、暗号化属性のセットは有するかもしれないが、暗号化コンポーネント494-2に対応する暗号化属性は有しないかもしれない。
動作の第2の例の続きとして、リクエストに応答して、非暗号化コンポーネント492は、リクエスト480の第2のプログラムの実行を実施しようと試行してもよい。非暗号化コンポーネント492のコードは、アクセス制御の位置を特定もしくは実行するいかなる論理も含まず、暗号化コンポーネント494についていかなる情報も明らかにしないとよい。例えば第2のリクエスト480は、「PicturePainter」という名前のプログラムを対象としてもよく、さらにキー440を含んでもよい。暗号化属性442は、「PicturePainter」プログラムではないプログラムに対応してもよい。非暗号化コンポーネント492は、提供されたキーを使用して復号ルーチンを実行するコードのみを含んでもよい。コードは、いずれのコンポーネントの非暗号化データも明らかにしないとよい。この第2の例に基づき、暗号化コンポーネント494はすべて暗号化されたままであるとよい。
図5は、本開示の一部の実施形態に従った、クライアント・システムにより実行されるHESSの例示の方法500を示す。方法500は、コンピュータ・システム100などのコンピュータにより実行されてもよい。方法500は、コンピュータに提供されるセキュアなソフトウェアを実行するようにユーザがコンピュータに命令するのに応答して実行されてもよい。例えばメモリ・スティックが、ペイロード450などのヘテロジニアス・プログラム・ペイロード(ペイロード)のコピーを含んでもよい。方法500を実行するコンピュータは、インターネットなどのネットワークに接続されてもよい。一部の実施形態において方法500は、エアギャップされたコンピュータ上で実行されてもよい。例として、方法500を実行するコンピュータは、他のコンピュータ、サーバなどから分離されていてもよく、またはその他の形で他のいかなる処理デバイスにも通信可能に直接(またはネットワークを介して間接的に)結合されていなくてもよい。
方法500は505にて開始し、510にてペイロードが実行される。ペイロードは、プログラムの実行を実施し始めるためのコマンド・ライン引数を受信することにより実行されてもよい。ペイロードは、コンピュータ上のバッチ・プロセスまたはスクリプトなどにより周期的に510にて実行されてもよい。
520にて、ライセンス・キーがペイロードに入力されてもよい。一部の実施形態において、キーは、510でのペイロードの実行の一部として入力されてもよい。例えばライセンス・キーは、ペイロードの実行の一部として提供されるコマンド・ライン引数であってもよい。一部の実施形態において、キーは、510でのペイロードの実行後に入力されてもよい。例えばライセンス・キーは、ストレージ・デバイス上、論理フォルダ内、またはその他関連するコンピューティング構造に、ローカルに位置してもよい。ペイロード510が実行されると、検証およびロード・プログラムなどの非暗号化コンポーネントが、ライセンス・キーの提供をリクエストすることにより開始してもよい。ライセンス・キーのリクエストに応じて、ユーザまたはプログラムは520にて、ペイロードの非暗号化コンポーネントにライセンス・キーを入力してもよい。
プログラム実行命令が、530にて受信されてもよい。プログラム実行命令は、ペイロード510により受信されてもよい。例えばプログラム実行命令は、第1のプログラムの実行を開始するための、スクリプト、ユーザ、またはその他プログラムからの選択であってもよい。プログラム実行命令は、ペイロード510の実行時に受信されてもよい。例えばプログラム実行命令は、510での実行を受けてペイロードに提供される引数であってもよい。プログラム実行命令は、ペイロードの一部を対象にしてもよい。具体的には、プログラム実行命令は、プログラム名またはその他関連する識別子により、ペイロードの暗号化コンポーネントのセットに格納されている1つ以上のプログラムを参照してもよい。
540にて、ペイロードの実行の妥当性が判断されてもよい。実行の妥当性とは、520にて入力されたキーの妥当性であってもよい。ペイロードの非暗号化コンポーネントは、ライセンス・キーを受信してもよく、さらにライセンス・キーを用いて復号プロセスを実行しようと試行してもよい(例えばAESなどの対称アルゴリズムまたはABEなどの非対称アルゴリズムを使用)。実行の妥当性は、530にて受信されたプログラム実行命令に応答するものであってもよい。妥当性は、ライセンス・キーに基づいてもよく、さらに、530にて受信された特定のプログラム命令に基づいてもよい。具体的には、520にて入力されたライセンス・キーに基づき、且つ530にて受信されたプログラム命令と組み合わせて、ペイロードの非暗号化コンポーネントが、1つ以上の復号動作を実行することにより開始してもよい。復号動作は、コンポーネントのセットのうちのあらゆる暗号化コンポーネントに対して実行されてもよい。例えばライセンス・キー全体が、暗号化コンポーネントのセットの中の対象の暗号化コンポーネントに対応する平文の識別子とともに、復号プロセスに対する引数として提供されてもよい。妥当性の判断は、コンポーネントのセットのうちの暗号化コンポーネントに格納された特定されたプログラムを復号しようと試行するために、復号プロセスの復号アクションを実行してもよい。復号プロセスは、ライセンス・キーにある各暗号化属性を使用して復号アクションを実行しようと試行してもよい。例えば所与のライセンス・キーは、対応するヘテロジニアス・プログラム・ペイロードにより実行され得る45のプログラムに対応する45の暗号化属性を表現する値のストリングであってもよい。対応するペイロードは、70の別々の暗号化コンポーネントに格納された70のプログラムを含んでもよい。45の暗号化属性のうちの1つが暗号的に一致した暗号化コンポーネントに対応する場合、復号プロセスは、530の受信済みプログラム実行命令からリクエストされたプログラムのみを復号してもよい。復号プロセスは、暗号化コンポーネントに格納されたプログラムに対応するいかなる特定のプログラム属性も明らかにすることなく、キー全体を受信するように構成されてもよい。例えば復号プロセスは、暗号化属性のいかなる非暗号化バージョンも明らかにしない可能性があり、且つ、ライセンス・キーを構成する暗号化属性のいかなる非暗号化形式も示したり、出力として提供したり、または観測可能な中間物として(例えば1次ストレージ、メモリ、またはプロセッサのレジスタにおいて)提供したりしない可能性がある。
妥当性について、妥当、550:Yと判断されれば、560にて復号プログラムがロードされてもよい。復号プログラム560は、ロードされる唯一のプログラムであってもよい。別の言い方をすれば、リクエストされたプログラムではないいずれの暗号化コンポーネントも、560にて復号されない。復号プログラム560は、セキュアにロードされるとよい。例えばプロセッサは、実行中に復号プログラムを保持するために、RAMまたはキャッシュのセキュアな(例えばサンドボックス化されたプライベートな)部分を配分してもよい。
妥当性について550:Nで不当と判断されれば、受信されたプログラム実行命令は570にて拒否される。570での拒否は、拒否を表す指示、出力、またはその他メッセージであってもよい。例えば、ファイルに対する「プログラムのアクセス許可なし」と述べるメッセージが生成されてもよい。別の例では、コンピュータの出力または画面バッファに「不当な入力」と述べるメッセージが生成されてもよい。570での拒否は、ヘテロジニアス・プログラム・ペイロードの非暗号化コンポーネントのプログラム終了を、プログラム終了の理由を何ら伝達することなく含んでもよい。
妥当性について550:Yで妥当と判断された後、または妥当性について550:Nで不当と判断された後、方法500は595にて終了する。
図6は、本開示の一部の実施形態に従った、クライアント・システムに提供するためのHESSのコンポーネントを作成する例示の方法600を示す。方法600は、コンピュータ100などの中央コンピュータにより実行されてもよい。方法600は、クラウド・コンピューティング環境50などのクラウド・プロバイダにより実行されてもよい。方法600は、ソフトウェアを配布する、またはその他提供する前に、ソフトウェア・クリエータにより実行されてもよい。例えば方法600は、バグを修正するため、または新たな機能を拡張もしくは作成するために、ソフトウェアの新バージョンを生成するべく、統合開発環境の一部として実行されてもよい。
開始605から、リクエストが610にて受信されてもよい。リクエストは、ソフトウェアを生成する、またはソフトウェアに対するライセンスを生成するスクリプトの一部として入力されてもよい。610でのリクエストは、ビルド情報、ソフトウェア・バージョン情報、ライセンス名、クライアント名、ライセンス許可、またはその他関連するパラメータなどの1つ以上のパラメータを含んでもよい。610でのリクエストは、セキュリティ保護されていないソフトウェアへの参照を含んでもよい。例えばリクエストは、バイナリの一部として、またはソース・コード関数として、または1つ以上のファイル、もしくはソフトウェア・アーカイブ・ファイルのフォルダ、またはその両方として格納された非暗号化フォーマットのプログラム1つ以上のセットの位置に対する、ポインタを含んでもよい。
620:Yでリクエストが新たなペイロードに関する場合、630にて1つ以上のプログラム属性のセットが割り当てられてもよい。属性の割り当ては、ペイロードの一部となる、ソフトウェアのすべてのプログラムに単一の属性を割り当てることを含んでもよい。具体的には、所与の1つのソフトウェアが135の別個のプログラムを有する場合、135のプログラム属性が、それぞれの別個のプログラムに割り当てられてもよい。例えば、開発者が別個のプログラム4つを含む新たなペイロードを配布のために生成している場合、属性「F1」、「F2」、「F3」、および「F4」が、それぞれ第1のプログラム、第2のプログラム、第3のプログラム、および第4のプログラムに割り当てられてもよい。
640にて、ヘテロジニアス・プログラム・ペイロードが生成されてもよい。プログラムは、第1の暗号化プロセスに基づき生成されてもよい。第1の暗号化プロセスは、ヘテロジニアス・プログラム・ペイロードを生成する暗号化アルゴリズムの実行を含んでもよい。例えばペイロードは、AES-128またはそれより大きいキー長のものなどの対称暗号化アルゴリズムにより、またはRSA-2048もしくはECDSA-224またはそれより大きいキー長のものなどの非対称暗号化アルゴリズムを用いて、またはKP-ABEもしくはCP-ABEなどの属性ベース暗号方式を用いて暗号化されたものとすることができるであろう。第1の暗号化プロセスは、3つの入力を任意の順で得てもよい。第1の暗号化プロセスは、(610にて受信された)リクエストの一部であったセキュリティ保護されていないペイロードを第1の入力として得てもよい。第1の暗号化プロセスは、割り当てられたプログラム属性を第2の入力として得てもよい。第1の暗号化プロセスは、1次キーを第3の入力として得てもよい。1次キーは、十分な長さ(例えば1024ビット)のキー、値、ストリング、またはその他一連のワードもしくは文字であってもよい。
入力の1つ以上が不完全であるか、または欠けている場合、第1の暗号化プロセスは、エラーを出すか、またはエラー・コードを返してもよい。例えば、セキュリティ保護されていないペイロードが4つのプログラムを含み、第1の暗号化プロセスが、3つのみのプログラム属性を与えられた場合、第1の暗号化プロセスはエラーを返してもよい。ヘテロジニアス・プログラム・ペイロードを生成する一部として、1つ以上の暗号化コンポーネントのセットが生成されてもよい(例えば第1の暗号化プロセスの結果または出力として)。ヘテロジニアス・プログラム・ペイロードを生成する一部として、セキュリティ保護されていないコンポーネントが640にて暗号化コンポーネントと組み合わされてもよい(例えば、第1の暗号化プロセスが暗号化コンポーネントのセットを作成するのと実質的に同時か、その直前か、またはその直後に)。コンパイル、グループ化、アーカイブ化、埋め込み、またはその他の形で非暗号化コンポーネントと暗号化コンポーネントのセットとを組み合わせることにより、非暗号化コンポーネントが暗号化コンポーネントのセットと組み合わされてもよい。非暗号化コンポーネントは、第1の暗号化プロセスの出力であってもよい。例として、第1の暗号化プロセスの1つの出力として、復号プロセスが生成されてもよい。復号プロセスは、(例えば暗号化形式の)プログラム属性のサブセットなど、プログラム属性の1つ以上を入力として得てもよい。
620:Nでリクエストが新たなペイロードに関するものでなく、且つ650:Yでリクエストが新たなキーに関するものであれば、キーの1つ以上の許可が660にて受信され得る。新たなキーのリクエスト(610にて受信される)は、所与のヘテロジニアス・プログラム・ペイロードにより実行されることを許可されるプログラムの1つ以上の許可、参照、値、または関連する識別子、および所与のヘテロジニアス・プログラム・ペイロードに対する参照を含んでもよい。1つ以上の許可は、プログラム属性のセットのインスタンスまたは第1のサブセットであってもよい。例えばプログラム属性のセット全体は、ヘテロジニアス・プログラム・ペイロードに(暗号化形式で)格納されている各プログラムに対応する、35のプログラム属性を含んでもよい。本例の続きとして、受信された許可は、第3のプログラム属性、第12のプログラム属性、および第30のプログラム属性を含むプログラム属性のサブセットを含んでもよい。次に、670にてランダム値が取得され得る。ランダム値は、文字のランダム・ストリングであってもよい。ランダム値は、ランダムな一連のワードであってもよい。ランダム値は、十分な長さまたはサイズ(例えば256ビット)のものであるとよい。
ライセンス・キーが680にて生成される。ライセンス・キーは、第2の暗号化プロセスにより生成されてもよい。第2の暗号化プロセスは、適切な暗号化プロセスであればよい。第2の暗号化プロセスは、3つの入力を含んでもよい。第1の入力は、プログラム属性のサブセット(例えば、生成されるライセンス・キーにより実行へのアクセスが許可されるプログラムに対応するプログラム属性)であってもよい。第2の入力は、ランダム値であってもよい。第3の入力は、1次キーであってもよい。第2の暗号化プロセスの出力は、ライセンス・キーであってもよい。ライセンス・キーは、一連の値、文字のストリング、またはその他関連する暗号出力であってもよい。ライセンス・キーは、実行のために復号されることを許可されるヘテロジニアス・プログラム・ペイロードの暗号化コンポーネントのサブセットに対応する、暗号化プログラム属性のセットを含んでもよい。ライセンス・キーは、第1の暗号化プログラム属性がどこで終わるか、および第2の暗号化プログラム属性がどこで終わるかを明確化、区分、またはその他指示しなくてもよい。ランダム値の使用は、2つのキーを比較しても暗号化プログラム属性を識別できないようにすることができる。例えば、プログラム属性の第1のサブセット、および第1のランダム数、および1次キーを所与として、680にて生成されるライセンス・キーは、「skZIE”8’wBtbye-7[$$p7uNM2HLi>NZg0rA YFO&ltjh!X {QQ=Oyrb#s<R-+8%h,X」の値を備えたストリングであってもよい。
本例の続きとして、プログラム属性の同じ第1のサブセット、および第2のランダム数、および1次キーを所与として、680にて生成されるライセンス・キーは、「HF,FQLb]46,xA/d?”.QCd, ?#sm.v:CT/xT(Oo<4BxE&LfThZ8*Azp(C?_nPA」の値を備えたストリングであってもよい。
本例の続きとして、プログラム属性の同じ第1のサブセット、および第2のランダム数、および1次キーを所与として、680にて生成されるライセンス・キーは、「HF,FQLb]46,xA/d?”.QCd, ?#sm.v:CT/xT(Oo<4BxE&LfThZ8*Azp(C?_nPA」の値を備えたストリングであってもよい。
650:Nでリクエストが新たなキーに関するものでない場合、または680でライセンス・キーを生成した後、方法600は695にて終了する。
本発明は、任意の可能な技術的詳細レベルで統合されたシステム、方法、もしくはコンピュータ・プログラム製品、またはそのいずれかの組み合わせとされてもよい。コンピュータ・プログラム製品は、プロセッサに本発明の各側面を実行させるコンピュータ可読プログラム命令を有する1つまたは複数のコンピュータ可読ストレージ媒体を含んでもよい。
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用される命令を保持および格納することができる有形のデバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、または前述のものの任意の適切な組み合わせとされてもよいが、これらに限定されない。コンピュータ可読ストレージ媒体のより具体的な例の網羅的でないリストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM:read-only memory)、消去可能プログラマブル読み取り専用メモリ(EPROM(erasable programmable read-only memory)またはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタル多用途ディスク(DVD:digital versatile disk)、メモリ・スティック、フレキシブル・ディスク、パンチ・カードまたは命令が記録された溝の中の隆起構造などの機械的にエンコードされたデバイス、および前述のものの任意の適切な組み合わせを含む。本願明細書で使用されるとき、コンピュータ可読ストレージ媒体は、電波もしくはその他自由に伝搬する電磁波、導波路もしくはその他伝送媒体を伝搬する電磁波(例えば光ファイバ・ケーブルを通過する光パルス)、またはワイヤを介して伝送される電気信号など、本質的に一時的な信号とは解釈されないものとする。
本願明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスに、または例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくはワイヤレス・ネットワーク、またはそれらのいずれかの組み合わせなどのネットワークを介して外部コンピュータもしくは外部ストレージ・デバイスに、ダウンロード可能である。ネットワークは、銅製伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、もしくはエッジ・サーバ、またはそれらのいずれかの組み合わせを含み得る。各コンピューティング/処理デバイスのネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、コンピュータ可読プログラム命令をそれぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。
本発明の動作を実行するコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路の設定データ、またはSmalltalk(登録商標)、C++、もしくは同様のものなどのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは同様のプログラミング言語などの手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで書かれたソース・コードもしくはオブジェクト・コードのいずれかであってもよい。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行されても、部分的にユーザのコンピュータ上で実行されても、スタンドアロン・ソフトウェア・パッケージとして実行されても、部分的にユーザのコンピュータ上で且つ部分的にリモート・コンピュータ上で実行されても、または完全にリモート・コンピュータもしくはサーバ上で実行されてもよい。後者のシナリオでは、ローカル・エリア・ネットワーク(LAN:local area network)もしくはワイド・エリア・ネットワーク(WAN:wide area network)を含む任意のタイプのネットワークを通してリモート・コンピュータがユーザのコンピュータに接続されてもよく、または(例としてインターネット・サービス・プロバイダを使用しインターネットを介して)外部コンピュータに接続されてもよい。一部の実施形態において、本発明の各側面を実行するために、例としてプログラマブル論理回路構成、フィールド・プログラマブル・ゲート・アレイ(FPGA:field-programmable gate array)、またはプログラマブル論理アレイ(PLA:programmable logic array)を含む電子回路構成が、コンピュータ可読プログラム命令の状態情報を利用して電子回路構成をパーソナライズすることによりコンピュータ可読プログラム命令を実行してもよい。
本発明の各側面は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照して本願明細書に記載される。当然のことながら、フローチャート図もしくはブロック図またはその両方の各ブロック、およびフローチャート図もしくはブロック図またはその両方の複数ブロックの組み合わせは、コンピュータ可読プログラム命令により実装可能である。
マシンをもたらすよう、こうしたコンピュータ可読プログラム命令が、コンピュータ、またはその他プログラマブル・データ処理装置のプロセッサに提供されて、この命令が、コンピュータまたはその他プログラマブル・データ処理装置のプロセッサにより実行されて、フローチャートもしくはブロック図またはその両方の1つもしくは複数のブロックにおいて指定された機能/動作を実装する手段を作り出すようにすることもできる。特定の形で機能するようコンピュータ、プログラマブル・データ処理装置、もしくはその他デバイス、またはそれらのいずれかの組み合わせに指令することができる当該コンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体に格納されて、命令を格納されたコンピュータ可読ストレージ媒体が、フローチャートもしくはブロック図またはその両方の1つもしくは複数のブロックにおいて指定された機能/動作の各側面を実装する命令を含む製品を含むようにすることもできる。
さらに、コンピュータ可読プログラム命令は、コンピュータ、その他プログラマブル・データ処理装置、またはその他デバイスにロードされて、コンピュータ、その他プログラマブル装置、またはその他デバイス上で一連の動作ステップが実行されるようにしてコンピュータに実装されるプロセスをもたらし、コンピュータ、その他プログラマブル装置、またはその他デバイス上で実行される命令が、フローチャートもしくはブロック図またはその両方の1つもしくは複数のブロックにおいて指定された機能/動作を実装するようにすることもできる。
各図面のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の考えられる実装のアーキテクチャ、機能性、および動作を示す。この関連で、フローチャートまたはブロック図の中の各ブロックは、指定の論理機能(単数または複数)を実装する1つ以上の実行可能命令を含むモジュール、セグメント、または命令の一部を表現し得る。一部の代わりの実装では、ブロックの中に示されている機能が、図面に示されているのとは異なる順序で生じてもよい。例えば、関連する機能性次第で、連続して示されている2つのブロックが実際には1つのステップとして実現されてもよく、同時に実行されてもよく、実質的に同時に実行されてもよく、一部または全部が時間的に重なる形であってもよく、または各ブロックが逆順で実行されることがあってもよい。さらに、ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方の複数ブロックの組み合わせは、指定の機能もしくは動作を実行する、または専用ハードウェアおよびコンピュータ命令の組み合わせを実行する、専用ハードウェア・ベースのシステムにより実装できるということに留意されたい。
本開示の様々な実施形態の記載は、説明のために提示されたものであるが、包括的であることも、開示された実施形態に限定されることも目的としていない。当業者には、記載された実施形態の範囲から逸脱することのない多数の変更およびバリエーションが明らかであろう。本願明細書で使用された専門用語は、実施形態の原理、実際の応用、もしくは市場にある技術に比べた技術的改善を説明するよう、または当業者が本願明細書に開示された実施形態を理解できるよう選ばれた。
本開示の様々な実施形態の記載は、説明のために提示されたものであるが、包括的であることも、開示された実施形態に限定されることも目的としていない。当業者には、記載された実施形態の範囲から逸脱することのない多数の変更およびバリエーションが明らかであろう。本願明細書で使用された専門用語は、実施形態の原理、実際の応用、もしくは市場にある技術に比べた技術的改善を説明するよう、または当業者が本願明細書に開示された実施形態を理解できるよう選ばれた。
Claims (20)
- 第1のコンピューティング・デバイスにヘテロジニアス・プログラム・ペイロードの第1のコピーを提供するステップ
を含む方法であって、
前記ヘテロジニアス・プログラム・ペイロードは、非暗号化コンポーネントと、1つ以上の暗号化コンポーネントのセットとを含み、前記暗号化コンポーネントのセットは、1つ以上のプログラムのセットに対応し、
前記ヘテロジニアス・プログラム・ペイロードの前記非暗号化コンポーネントは、第1のライセンス・キーを受信するように構成されたローダ・プログラム・コードを含み、
前記ローダ・プログラム・コードは、前記第1のライセンス・キーを受信するのに応答して、前記ヘテロジニアス・プログラム・ペイロードの前記暗号化コンポーネントのセットに対して復号アクションを実行するように構成されている、方法。 - 前記方法は、
前記プログラムのセットに対応する1つ以上のプログラム属性のセットを第2のコンピューティング・デバイスにより割り当てるステップであって、前記プログラム属性のセットの各プログラム属性は、前記プログラムのセットの対応する各プログラムを特定する、前記割り当てるステップと、
前記第2のコンピューティング・デバイスにより、前記プログラムのセットから、1次キーを用い前記プログラム属性のセットを用いる第1の暗号化プロセスに基づき、前記非暗号化コンポーネントと、前記暗号化コンポーネントのセットとを含む前記ヘテロジニアス・プログラム・ペイロードを生成するステップであって、前記ヘテロジニアス・プログラム・ペイロードは、前記第1のコンピューティング・デバイスに提供する前に生成される、前記ヘテロジニアス・プログラム・ペイロードを生成するステップと
をさらに含む、請求項1に記載の方法。 - 前記方法は、
前記第2のコンピューティング・デバイスにより、前記1次キーを用い、文字のランダム・ストリングを用い、前記プログラム属性のセットの第1のサブセットを用いる第2の暗号化プロセスに基づき、前記第1のライセンス・キーを生成するステップであって、前記第1のライセンス・キーは、前記暗号化コンポーネントのセットの第1のサブセットに対応する1つ以上の暗号化プログラム属性の第1のセットを含む、前記第1のライセンス・キーを生成するステップ
をさらに含む、請求項2に記載の方法。 - 前記プログラム属性のセットの前記第1のサブセットは、前記プログラム属性のセットと同じであり、
前記暗号化コンポーネントのセットの前記第1のサブセットは、前記暗号化コンポーネントのセットと同じである、請求項3に記載の方法。 - 前記暗号化コンポーネントのうちの第1の暗号化コンポーネントは、第1のプログラムであり、前記暗号化コンポーネントのうちの第2の暗号化コンポーネントは、前記第1のプログラムの機能である、請求項1に記載の方法。
- 前記方法は、
前記第1のコンピューティング・デバイスに前記第1のライセンス・キーを提供するステップ
をさらに含み、
前記第1のライセンス・キーは、前記1つ以上の暗号化コンポーネントの第1のサブセットに対応する1つ以上の暗号化プログラム属性の第1のセットを含む、請求項1に記載の方法。 - 前記ローダ・プログラム・コードは、
前記暗号化コンポーネントのうちの第1のコンポーネント内の暗号化されている第1のプログラムを対象とする第1のプログラム実行命令を受信するようにさらに構成されている、請求項6に記載の方法。 - 前記復号アクションは、
前記ローダ・プログラム・コードにより前記第1のライセンス・キーの不当性を判断するステップと、
前記ローダ・プログラム・コードにより、前記不当性に応答して前記第1のプログラム実行命令を拒否するステップと
を含む、請求項7に記載の方法。 - 前記復号アクションは、
前記ローダ・プログラム・コードにより前記第1のライセンス・キーの妥当性を判断するステップと、
前記ローダ・プログラム・コードにより、前記妥当性に応答して前記第1のプログラム実行命令に基づき、前記第1のプログラムをプロセッサによる実行のためにメモリにロードするステップと
を含む、請求項7に記載の方法。 - 前記方法は、
第2のコンピューティング・デバイスに第2のライセンス・キーを提供するステップであって、
前記第2のライセンス・キーは、前記1つ以上の暗号化コンポーネントの前記第1のサブセットに対応する1つ以上の暗号化プログラム属性の第2のセットを含み、
1つ以上の暗号化プログラム属性の前記第2のセットは、前記1つ以上の暗号化プログラム属性の前記第1のサブセットと同じでない、
前記第2のライセンス・キーを提供するステップと、
前記第2のコンピューティング・デバイスに前記ヘテロジニアス・プログラム・ペイロードの第2のコピーを提供するステップと
をさらに含む、請求項9に記載の方法。 - 前記ヘテロジニアス・プログラム・ペイロードの前記第2のコピーの前記ローダ・プログラム・コードは、
前記ヘテロジニアス・プログラム・ペイロードの前記第2のコピーの前記暗号化コンポーネントのセットのうちの第1の暗号化コンポーネント内の暗号化されている前記第1のプログラムを対象とする第2のプログラム実行命令を受信することと、
前記第2のライセンス・キーを受信することと、
前記第2のライセンス・キーの第2の不当性を判断することと、
前記第2の不当性に応答して、前記第2のプログラム実行命令を拒否することと
をするように構成されている、請求項10に記載の方法。 - 前記ヘテロジニアス・プログラム・ペイロードの前記第2のコピーの前記ローダ・プログラム・コードは、
前記ヘテロジニアス・プログラム・ペイロードの前記第2のコピーの前記暗号化コンポーネントのセットのうちの前記第1の暗号化コンポーネント内の暗号化されている前記第1のプログラムを対象とする第2のプログラム実行命令を受信することと、
前記第2のライセンス・キーを受信することと、
前記第2のライセンス・キーの妥当性を判断することと、
前記妥当性に応答して、前記第2のプログラム実行命令に基づき、前記第1のプログラムをプロセッサによる実行のためにメモリにロードすることと
をするように構成されている、請求項10に記載の方法。 - 1つ以上の命令を含むメモリと、
前記メモリに通信可能に結合されたプロセッサと
を含むシステムであって、前記プロセッサは、前記1つ以上の命令を読み取るのに応答して、
ヘテロジニアス・プログラム・ペイロードの第1のコピーを受信するように構成され、
前記ヘテロジニアス・プログラム・ペイロードは、非暗号化コンポーネントと、1つ以上の暗号化コンポーネントのセットとを含み、前記暗号化コンポーネントのセットは、1つ以上のプログラムのセットに対応し、
前記ヘテロジニアス・プログラム・ペイロードの前記非暗号化コンポーネントは、第1のライセンス・キーを受信するように構成されたローダ・プログラム・コードを含み、
前記ローダ・プログラム・コードは、前記第1のライセンス・キーを受信するのに応答して、前記ヘテロジニアス・プログラム・ペイロードの前記暗号化コンポーネントのセットに対して復号アクションを実行するように構成されている、前記システム。 - 前記プロセッサは、
前記第1のライセンス・キーを受信するようにさらに構成され、
前記第1のライセンス・キーは、前記1つ以上の暗号化コンポーネントの第1のサブセットに対応する1つ以上の暗号化プログラム属性の第1のセットを含む、請求項13に記載のシステム。 - 前記プロセッサは、
前記暗号化コンポーネントのうちの第1のコンポーネント内の暗号化されている第1のプログラムを対象とする第1のプログラム実行命令を、前記ローダ・プログラム・コードにより受信するようにさらに構成されている、請求項14に記載のシステム。 - 前記復号アクションは、
前記ローダ・プログラム・コードにより前記第1のライセンス・キーの不当性を判断することと、
前記ローダ・プログラム・コードにより、前記不当性に応答して前記第1のプログラム実行命令を拒否することと
を含む、請求項15に記載のシステム。 - 1つ以上のコンピュータ可読ストレージ媒体と、
前記1つ以上のコンピュータ可読ストレージ媒体上に集合的に格納されたプログラム命令と
を含むコンピュータ・プログラム製品であって、前記プログラム命令は、
第1のコンピューティング・デバイスにヘテロジニアス・プログラム・ペイロードの第1のコピーを提供するように構成され、
前記ヘテロジニアス・プログラム・ペイロードは、非暗号化コンポーネントと、1つ以上の暗号化コンポーネントのセットとを含み、前記暗号化コンポーネントのセットは、1つ以上のプログラムのセットに対応し、
前記ヘテロジニアス・プログラム・ペイロードの前記非暗号化コンポーネントは、第1のライセンス・キーを受信するように構成されたローダ・プログラム・コードを含み、
前記ローダ・プログラム・コードは、前記第1のライセンス・キーを受信するのに応答して、前記ヘテロジニアス・プログラム・ペイロードの前記暗号化コンポーネントのセットに対して復号アクションを実行するように構成されている、前記コンピュータ・プログラム製品。 - 前記プログラム命令は、
前記プログラムのセットに対応する1つ以上のプログラム属性のセットを第2のコンピューティング・デバイスにより割り当てることであって、前記プログラム属性のセットの各プログラム属性は、前記プログラムのセットの対応する各プログラムを識別する、前記割り当てることと、
前記第2のコンピューティング・デバイスにより、前記プログラムのセットから、1次キーを用い前記プログラム属性のセットを用いる第1の暗号化プロセスに基づき、前記非暗号化コンポーネントと、前記暗号化コンポーネントのセットとを含む前記ヘテロジニアス・プログラム・ペイロードを生成することであって、前記ヘテロジニアス・プログラム・ペイロードは、前記第1のコンピューティング・デバイスに提供する前に生成される、前記ヘテロジニアス・プログラム・ペイロードを生成することと
をするようにさらに構成されている、請求項17に記載のコンピュータ・プログラム製品。 - 前記プログラム命令は、
前記第2のコンピューティング・デバイスにより、前記1次キーを用い、文字のランダム・ストリングを用い、前記プログラム属性のセットのうちの1つ以上のプログラム属性の第1のサブセットを用いる第2の暗号化プロセスに基づき、前記第1のライセンス・キーを生成することであって、前記第1のライセンス・キーは、前記暗号化コンポーネントのセットの第1のサブセットに対応する1つ以上の暗号化プログラム属性の第1のセットを含む、前記第1のライセンス・キーを生成すること
をするようにさらに構成されている、請求項18に記載のコンピュータ・プログラム製品。 - 前記プログラム属性のセットの前記第1のサブセットは、前記プログラム属性のセットと同じであり、
前記暗号化コンポーネントのセットの前記第1のサブセットは、前記暗号化コンポーネントのセットと同じである、請求項19に記載のコンピュータ・プログラム製品。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/036,577 | 2020-09-29 | ||
US17/036,577 US12001523B2 (en) | 2020-09-29 | 2020-09-29 | Software access through heterogeneous encryption |
PCT/CN2021/106794 WO2022068322A1 (en) | 2020-09-29 | 2021-07-16 | Software access through heterogeneous encryption |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023542527A true JP2023542527A (ja) | 2023-10-10 |
Family
ID=80822505
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023518437A Pending JP2023542527A (ja) | 2020-09-29 | 2021-07-16 | ヘテロジニアス暗号化を通したソフトウェア・アクセス |
Country Status (6)
Country | Link |
---|---|
US (1) | US12001523B2 (ja) |
JP (1) | JP2023542527A (ja) |
CN (1) | CN116249980A (ja) |
DE (1) | DE112021005119T5 (ja) |
GB (1) | GB2614677A (ja) |
WO (1) | WO2022068322A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115664836B (zh) * | 2022-11-07 | 2023-10-03 | 海光信息技术股份有限公司 | 数据传输方法、装置、计算机设备及存储介质 |
US12019778B1 (en) * | 2023-11-22 | 2024-06-25 | Verkada Inc. | Systems and methods to perform end to end encryption |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5598470A (en) | 1994-04-25 | 1997-01-28 | International Business Machines Corporation | Method and apparatus for enabling trial period use of software products: Method and apparatus for utilizing a decryption block |
US5563946A (en) | 1994-04-25 | 1996-10-08 | International Business Machines Corporation | Method and apparatus for enabling trial period use of software products: method and apparatus for passing encrypted files between data processing systems |
US6052780A (en) | 1996-09-12 | 2000-04-18 | Open Security Solutions, Llc | Computer system and process for accessing an encrypted and self-decrypting digital information product while restricting access to decrypted digital information |
US6523119B2 (en) | 1996-12-04 | 2003-02-18 | Rainbow Technologies, Inc. | Software protection device and method |
US6006190A (en) | 1997-04-28 | 1999-12-21 | Tartaroukos Llc | Computer implemented method and a computer system for enforcing software licenses |
US6920567B1 (en) * | 1999-04-07 | 2005-07-19 | Viatech Technologies Inc. | System and embedded license control mechanism for the creation and distribution of digital content files and enforcement of licensed use of the digital content files |
AU6061300A (en) | 1999-06-30 | 2001-01-31 | Ac Properties B.V. | A system, method and article of manufacture for an electronic software distribution, post-download payment scheme with encryption capabilities |
US20080082446A1 (en) * | 1999-10-01 | 2008-04-03 | Hicks Christian B | Remote Authorization for Unlocking Electronic Data System and Method |
US6460140B1 (en) * | 1999-12-30 | 2002-10-01 | Starnet Communications Corporation | System for controlling the use of licensed software |
US20070271191A1 (en) * | 2000-03-09 | 2007-11-22 | Andres Torrubia-Saez | Method and apparatus for secure distribution of software |
AU7593601A (en) * | 2000-07-14 | 2002-01-30 | Atabok Inc | Controlling and managing digital assets |
JP4743984B2 (ja) * | 2001-03-23 | 2011-08-10 | 三洋電機株式会社 | データ記録装置 |
JP4073913B2 (ja) * | 2002-07-09 | 2008-04-09 | 富士通株式会社 | 開放型汎用耐攻撃cpu及びその応用システム |
US7734550B1 (en) * | 2003-10-07 | 2010-06-08 | Microsoft Corporation | Method and system for identifying the controlling license for installed software |
CN1863038B (zh) | 2005-05-12 | 2010-10-13 | 中国电信股份有限公司 | 对终端设备中应用程序实施控制和管理的方法 |
CN101288083A (zh) * | 2005-10-17 | 2008-10-15 | Nxp股份有限公司 | 程序可执行映像加密 |
JP5034498B2 (ja) | 2006-02-20 | 2012-09-26 | 株式会社日立製作所 | ディジタルコンテンツの暗号化,復号方法,及び,ディジタルコンテンツを利用した業務フローシステム |
CN100446019C (zh) | 2006-07-19 | 2008-12-24 | 北京飞天诚信科技有限公司 | 一种软件版权保护方法 |
US20080313743A1 (en) * | 2007-06-13 | 2008-12-18 | Brian Chan | Network Software License Management and Piracy Protection |
US20090080658A1 (en) | 2007-07-13 | 2009-03-26 | Brent Waters | Method and apparatus for encrypting data for fine-grained access control |
RU2012130355A (ru) | 2009-12-18 | 2014-01-27 | Конинклейке Филипс Электроникс Н.В. | Управление цифровыми правами с использованием шифрования на основе атрибутов |
CN102360412B (zh) * | 2011-09-26 | 2014-07-02 | 飞天诚信科技股份有限公司 | Java源代码的保护方法和系统 |
US8725649B2 (en) * | 2011-12-08 | 2014-05-13 | Raytheon Company | System and method to protect computer software from unauthorized use |
US20150121073A1 (en) * | 2012-03-23 | 2015-04-30 | Irdeto B.V. | Software fingerprinting |
US9177121B2 (en) | 2012-04-27 | 2015-11-03 | Nvidia Corporation | Code protection using online authentication and encrypted code execution |
US20190026442A1 (en) | 2017-07-24 | 2019-01-24 | Microsoft Technology Licensing, Llc | Offline activation for application(s) installed on a computing device |
CN108388439A (zh) | 2018-03-27 | 2018-08-10 | 深圳市路畅科技股份有限公司 | 一种车载软件的更新方法、系统、装置及可读存储介质 |
-
2020
- 2020-09-29 US US17/036,577 patent/US12001523B2/en active Active
-
2021
- 2021-07-16 GB GB2305751.6A patent/GB2614677A/en active Pending
- 2021-07-16 CN CN202180066382.6A patent/CN116249980A/zh active Pending
- 2021-07-16 WO PCT/CN2021/106794 patent/WO2022068322A1/en active Application Filing
- 2021-07-16 JP JP2023518437A patent/JP2023542527A/ja active Pending
- 2021-07-16 DE DE112021005119.9T patent/DE112021005119T5/de active Pending
Also Published As
Publication number | Publication date |
---|---|
US12001523B2 (en) | 2024-06-04 |
GB202305751D0 (en) | 2023-05-31 |
WO2022068322A1 (en) | 2022-04-07 |
CN116249980A (zh) | 2023-06-09 |
US20220100822A1 (en) | 2022-03-31 |
GB2614677A (en) | 2023-07-12 |
DE112021005119T5 (de) | 2023-07-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102539777B1 (ko) | 하드웨어 보안 모듈에 대한 보안 게스트들의 보안 키들의 바인딩 | |
JP7397557B2 (ja) | セキュア実行ゲスト所有者環境制御 | |
AU2021302892B2 (en) | Hypervisor protected key | |
JP7445358B2 (ja) | セキュア・インタフェース・コントロールのためのセキュア実行ゲスト所有者コントロール | |
US10984108B2 (en) | Trusted computing attestation of system validation state | |
JP2023551527A (ja) | 準同型暗号化を使用したセキュアなコンピューティング・リソース配置 | |
JP2023542527A (ja) | ヘテロジニアス暗号化を通したソフトウェア・アクセス | |
WO2023073463A1 (en) | Trusted workload execution | |
CN115150117A (zh) | 在分散策略中维持机密性 | |
CN115668860B (zh) | 用于识别加密对象的创建者的方法和系统 | |
US11023619B2 (en) | Binding a hardware security module (HSM) to protected software | |
US20230169204A1 (en) | Secure sharing of personal data in distributed computing zones | |
US11645092B1 (en) | Building and deploying an application | |
US20230088524A1 (en) | Secrets swapping in code | |
US20230401328A1 (en) | Protecting sensitive data dump information | |
Gupta et al. | Ensuring Data Storage Security in Cloud Computing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230406 |
|
RD16 | Notification of change of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7436 Effective date: 20230419 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20231212 |