以下の記載において、本発明の実施形態の完全な理解を提供するため、説明の目的で、多くの具体的で詳細な事項が記載される。しかしながら、この具体的な詳細がなくとも本発明を実施することができ、また、等価な構成を用いても本発明を実施できることは、当業者にとって明らかである。他の例として、周知の構造及び装置が、本発明の実施例を不必要に曖昧なものとさせない目的で、ブロック図の形式で示される。
図1は、本発明の一実施形態におけるコンポーネント及び情報のセキュリティ及び完全性を促進するシステム100を例示する。システム100は、ネットワーク又は他のアクセス可能な環境に露出するコンポーネントのセキュリティ及び完全性を促進し、及び/又は、システムコンポーネントへ又は当該システムコンポーネントからネットワークを介して送信される情報のセキュリティを促進する様々な防御手段を提供する一又は複数のコンピュータ及びサブシステムを含む。この様々な防御手段は、単独で用いられてもよく、他の防御手段と組み合わせて用いられてもよい。例えば、この防御手段は、所定のインターフェイス、又はソフトウェアコンポーネントの他のサブコンポーネントを無効化し、ソフトウェアコンポーネントが侵入されたか否かと無関係に、ソフトウェアコンポーネントを、対応する既知の良好なソフトウェアコンポーネントと置換し、ネットワークを介して伝達される情報を、インターリーブし難読化させる、及び/又は他の手段が含まれうる。
一部の実施形態において、システム100は、インターフェイス、又は侵入する脅威に曝される所定のコンポーネントの他のサブコンポーネントを無効化する。例えば、システム100は、インスタンスとして作成される場合に、ランタイム環境で動作し、ネットワークを介してアクセス可能なコンポーネントを生成するコンポーネント生成サブシステム118を含む。所定のコンポーネントには、例えば、この所定のコンポーネントに対してメンテナンス、又は管理者操作を行うシステム管理者によって従来から用いられるが、この所定のコンポーネントに侵入しようとする攻撃者及びその他によってしばしば不正使用されるコンポーネントインターフェイスといったサブコンポーネントが含まれる。一部の実施形態において、コンポーネント生成サブシステム118は、サブコンポーネントがアクセスが不可能となり、従って攻撃者又はその他によって不正使用ができないように、サブコンポーネントを無効化するようプログラムされている。このように、コンポーネント生成サブシステム118によって生成されたコンポーネントは、インスタンス化された場合に無効化され、従って攻撃の脅威にさらされない所定のサブコンポーネントを含んでもよい。不正使用可能又は潜在的に不正使用可能なサブコンポーネントの無効化は、例えば、設定(例えば、もう一つのコンポーネント又は、他の設定とのユニークな関係を構築する事前設定)が、ソフトウェアコンポーネントが送信し、受信し、又は保存する情報及びソフトウェアコンポーネントのセキュリティ又は完全性に対し負の影響を与えうる方法で修正されることを防ぐ。
コンポーネント生成サブシステム118は、メンテナンス又は管理者機能を提供するような命令、プログラムコード、又はコンポーネントから削除し、及び、サブコンポーネントがアクセスできない、及び/又はサブコンポーネントをアクセス不可能とするよう(システム、管理者、又はその他によってアクセス不可能とすることを含む)、コンポーネントを設定することによってサブコンポーネントを無効化するようプログラムされてもよい。このように、不正使用可能な所定のサブコンポーネントを削除することでシステムのセキュリティを高めるために、システムは、コンポーネントレベルでコンポーネントを保護してもよい。
一部の実施形態において、そのサブコンポーネントの一又は複数が無効化されているかどうかに関わらず、コンポーネント生成サブシステム118は、生成されたコンポーネントを、コンポーネントレポジトリ114に保存してもよい。これらの実施形態において、システム100は、コンポーネントレポジトリ114から所定のコンポーネントを得て、この所定のコンポーネントをランタイム環境でアクセス可能とするようプログラムされたコンピュータマネージャサブシステム112を含んでもよい。
一部の実施形態において、システム100は、ランタイム環境で動作するコンポーネントを、対応する既知の良好なコンポーネントと置換してもよい。例えば、コンポーネントマネージャサブシステム112は、コンポーネントが侵入されたかどうかと無関係に、ランタイム環境で動作するコンポーネントを、対応する既知の良好なコンポーネントと置換するようプログラムされてもよい。対応する既知の良好なコンポーネントは、コンポーネント生成サブシステム118によって生成されてもよい。一部の実施形態において、対応する既知の良好なコンポーネントの一又は複数のサブコンポーネントは、本明細書に記載の通り無効化されていてもよい。これらの実施形態において、システムは、制限されたコンポーネントのインターフェイスと、対応する既知の良好なコンポーネントに置換されたコンポーネントとを組合わせる保護手段を提供してもよい。他の実施形態において、対応する既知の良好なコンポーネントの一又は複数のサブコンポーネントのいずれも無効化されなくてもよい。
一部の実施形態において、システム100は、置換されたコンポーネントの分析を実行してもよい。これらの実施形態において、システム100は置換後の分析(post replacement analysis)を実行するようプログラムされたコンポーネント分析サブシステム116を含んでもよい。このシステムは、このような置換後の分析を、どの程度及び/又はどのように置換されたコンポーネントが侵入されたかを決定するのに用いてもよい。分析は、置換後に行われるので、分析結果は、分析対象のコンポーネントが置換されるべきかどうかを決定することには用いられない。
一部の実施形態において、システム100は、ネットワークを介してシステムコンポーネントに及び/又はシステムコンポーネントから、情報をセキュアに送信してもよい。このような情報として、例えば、ネットワークを介して送信されうる文書、メッセージ、テクスト、画像、データ、及び/又は他の種類の情報が含まれてもよい。例えば、一又は複数の送信側コンポーネント108(図1で、送信側コンポーネント108a、108b、108cとして図示される)が、対応する受信側コンポーネント(図1で、受信側コンポーネント110a、110b、110cとして図示される)に対して、関連する情報を個別に送信することを所望してもよい。所定の送信側コンポーネント108、又は所定の受信側コンポーネント110は、それぞれネットワークを介して提供される情報を生成、又は受信できるアプリケーション、計算デバイス、及び/又は他のコンポーネントを含んでもよい。
一部の実施形態において、システム100は、データパケットの異なるスライスに、伝達される異なる情報を組合わせ、情報のセキュアな伝達のために異なる暗号化スキームを用いてスライスを暗号化するようプログラムされた送信側コンピュータ104を含んでもよい。一例として、送信側コンピュータ104は、送信側コンポーネント108aと関連付けられた情報の一部、送信側コンポーネント108bと関連付けられた情報の一部、及び送信側コンポーネント108cと関連付けられた情報の一部をそれぞれのデータパケットが含むようなデータパケットを生成してもよい。情報と関連付けられたその他の数の送信側コンポーネント108が用いられてもよい。データパケット中のそれぞれのデータスライスが、データスライスが表現されたもう一つの部分の情報と関連付けられたもう一つの送信側コンポーネント108とは異なる送信側コンポーネント108に関連付けられた部分の情報を表現するように、及びデータパケット中のそれぞれのデータスライスが、データパケット中のもう一つのデータスライスを暗号化するのに用いられたもう一つの暗号化スキームと異なる暗号化スキームで暗号化されうるように、それぞれの部分の情報は、暗号化されたデータスライスとして、表現されてもよい。例えば、異なる暗号化スキームとは、異なる暗号タの種類、及び/又は異なる暗号鍵の使用が含まれうる。暗号化の種類の例として、ワンタイムパッド(one time pad、OTP)、データ暗号化標準(Data Encryption Standard、DES)、高度暗号化標準(Advanced Encryption Standard、AES)、及び/又は他の種類の暗号化が含まれる。本明細書で用いられる通り、データパケットは、通信のユニットを指しうる。例えば、データパケットは、データグラム、セグメント、ブロック、セル、フレーム、又はネットワークを介して伝達される通信の他のユニットを指してもよい。
一部の実施形態において、受信側コンピュータ106は、異なる暗号化スキームを用いて暗号化された異なる情報に関連付けられたデータスライスを備えるデータパケットを処理するようプログラムされてもよい。一例として、それぞれのデータパケットが、異なる情報と関連付けられた及び異なる暗号化スキームを用いて暗号化された異なるデータスライスを含むように、送信側コンピュータ104及び受信側コンピュータ106は、データパケットを介してお互いに通信するよう事前にプログラムされてもよい。一部の実施形態において、送信側コンピュータ104及び受信側コンピュータ106の該事前設定は、該二つのコンピュータ104及び106の間のユニークな関係性を確立してもよい。例えば、前記二つのコンピュータ間の該関係性は、以下の通り定義されてもよい。(i) 前記二つのコンピュータに利用可能なポリシー、(ii) ヘッダ、データスライス、又は他のデータパケットの要素を暗号化するのに用いられる、パッド(例えば、OTP)、又は他の暗号化スキームの収集、(iii) 関係性のステータス(例えば、次のデータパケット中のヘッダが位置する場所、現在用いられるべきパッド、又は他のステータス情報)、又は(iv) 関係性の他の特徴。送信側コンピュータ104は、他のコンピュータとの他の関係性を有し得るが、前記他のコンピュータは、異なるポリシー、暗号化スキーム、関係性ステータス、又は他の関係性の特徴の結果の通り、送信側コンピュータ104から受信側コンピュータ106へと向けられたデータパケットを処理しなくてもよい。一方で、異なる送信側コンポーネント108と関連付けられた部分の情報を取得するため、及びその後に適切な受信側コンポーネント110に提供される情報を形成するよう取得した部分を組み合わせるため、受信側コンピュータ106は、送信側コンピュータ104からのデータパケットを処理してもよい。
所定の送信側コンポーネント108、及び所定の受信側コンポーネントは、一又は複数の無効化されたインターフェイスを有してもよく、及び/又はコンポーネントが、本明細書に記載したように侵入されたかどうかと無関係にシステムによって置換されてもよい。このように、本明細書に記載されたように、単独で、又は本明細書にも記載された一又は複数の他の保護手段にと組み合わされてネットワークを介して伝達される情報を、システムは、セキュア化し、及び/又は難読化させてもよい。
一部の実施形態において、ソフトウェアコンポーネントが侵入されたか、又は、潜在的に侵入されうるかとは無関係に、送信側コンピュータ104と関連付けられたソフトウェアコンポーネント、及び/又は受信側コンピュータ106と関連付けられたソフトウェアコンポーネントを、対応する既知の良好なソフトウェアコンポーネントに置換するようコンポーネントマネージャサブシステム112は、プログラムされてもよい。一例として、置換時間間隔の経過により、伝達される異なる情報をデータパケット中の異なるデータスライスに組合わせ、異なる暗号化スキームを用いて該スライスの暗号化を実行する送信側コンピュータ104において、コンポーネントマネージャサブシステム112は、コンポーネント(例えば、情報送信サブシステム)を置換してもよい。該置換時間間隔の経過により、異なる暗号化スキームを用いて暗号化された異なる情報と関連付けられたデータスライスを有するデータパケットの処理を実行する受信側コンピュータ106において、コンポーネントマネージャサブシステム112は、コンポーネント(例えば、情報受信サブシステム)を置換してもよい。
それぞれのデータパケットが、異なる情報と関連付けられた及び異なる暗号化スキームを用いて暗号化された異なるデータスライスを含むように、送信側コンピュータ104におけるコンポーネント中の及び受信側コンポーネントにおけるコンポーネント中の置換コンポーネントは、データパケットを介してお互いに通信するよう事前にプログラムされてもよい。例えば、該置換コンポーネントの該該事前設定は、置換されたコンポーネント間の関係と同一の関係、又は置換されたコンポーネント間の関係と異なるユニークな関係性を確立してもよい。置換コンポーネント、及び/又は他の既知の良好なソフトウェアコンポーネントは、送信側コンピュータ104、受信側コンピュータ106、それらの個々のコンポーネント、又は他のコンポーネントが実行されるランタイム環境から区別されるコンポーネントレポジトリ114から取得されてもよい。一部の実施形態において、コンポーネントを、事前設定された関係性を有する既知の良好なソフトウェアコンポーネントに、定期的に置換することが実行されてもよく、ポリシー、暗号化スキーム及び関係性ステータスが定期的に変更されることを引き起こし、それにより、コンポーネント及び情報の更なるセキュリティ及び完全性を提供する。
一部の実施形態において、コンポーネントマネージャサブシステム112は、置換されたコンポーネントを、前記置換されたコンポーネントが過去に実行されていたランタイム環境から区別された分析環境に移動させるようプログラムされてもよい。置換されたコンポーネントを分析環境に移動させた後、コンポーネント分析サブシステム116は、前記置換されたコンポーネントが侵入されたかどうか、及び/又はどのように侵入されたかを決定するために、前記置換されたコンポーネントを分析するようプログラムされてもよい。このように、他の利点の中で、侵入に対してより優れた抵抗性を有する新しいバージョンのソフトウェアコンポーネントが、対応するソフトウェアコンポーネントの低い抵抗性を除去するよう開発されてもよい。
図1に図示されるとおり、システム100は、クライアントコンピュータ120(又は複数のクライアントコンピュータ120)をさらに備えてもよい。クライアントコンピュータ120には、あらゆる種類のモバイル端末、固定端末、又は他の装置が含まれる。一例として、クライアントコンピュータ120には、デスクトップコンピュータ、ノートブックコンピュータ、ネットブックコンピュータ、タブレットコンピュータ、スマートフォン、ナビゲーション装置、電子書籍デバイス、ゲーム装置、又は他のクライアントコンピュータが含まれる。例えば、ユーザは、一又は複数のクライアントコンピュータを、送信側コンピュータ104、受信側コンピュータ106、送信側コンポーネント108、受信側コンポーネント110、又はシステム100の他のコンポーネントと相互に対話するために利用する。他の一例として、クライアントコンピュータ120には、送信側コンピュータ104、受信側コンピュータ106、又はシステム100の他のコンポーネントが含まれてもよい。
本明細書で説明された様々なシステムコンポーネント及びそれらの全体の機能について、それぞれの保護手段のより詳細な説明を以下行う。本明細書で記載されるとおりシステムは、単独で、又は一又は複数の他の保護手段と組合わせて、このような保護手段を用いてもよい。
コンポーネントの対応する既知の良好なコンポーネントとの置換
図2は、本発明の一実施形態におけるサブシステム、レポジトリ、又は他のコンポーネントが存在しうる環境102、及び前記環境に関連する動作に関するフローチャートを例示する図である。図示されるとおり、環境102はコンポーネントマネージャサブシステム112、コンポーネントレポジトリ114、コンポーネント分析サブシステム116、コンポーネント生成サブシステム118、又は他のサブシステム、レポジトリ又はコンポーネントを含んでもよい。図2は、区別される環境102を図示するが、コンポーネントマネージャサブシステム112、コンポーネントレポジトリ114、コンポーネント分析サブシステム、及びコンポーネント生成サブシステム118の一又は複数は、同一の環境又は区別される環境に存在してもよい。本明細書で記載されるように、一つの環境におけるコンポーネント又はサブシステムが、他の環境に対してアクセスが制限される、又はアクセス不能である(例えばリードアクセス(read access)制限、書き込みアクセス制限、実行アクセス制限、消去アクセス制限、及び/又は他のアクセス制限)ことが有利になり得る。
一部の実施形態において、ランタイム環境において実行しているソフトウェアコンポーネントを、既知の良好なソフトウェアコンポーネントと置換することで、セキュリティ及び/又は完全性が、促進される。ランタイム環境で利用可能なソフトウェアコンポーネントが侵入された、又は潜在的に潜入されえたかと無関係に、このソフトウェアコンポーネントの置換が行われる。一例として、このソフトウェアコンポーネント(例えば、コンポーネント202a、202b、又は他のコンポーネント)の置換に関連する工程には、以下でさらに詳細に記載される工程204、206、208、210、212、214、又は他の動作の一又は複数が含まれる。
一の実施形態において、コンポーネントマネージャサブシステム112は、ソフトウェアコンポーネントを、既知の良好なソフトウェアコンポーネントに置換するようプログラムされてもよい。例えば、コンポーネントマネージャサブシステム112は、ランタイム環境102aにおいて実行している少なくとも一つの第一のソフトウェアコンポーネントが置換されるべきかを示す、少なくとも一つの第一のイベントを決定してもよい。コンポーネントマネージャサブシステム112は、前記第一のソフトウェアコンポーネントを、前記第一のイベントに基づいて、前記第一のソフトウェアコンポーネントに対応する第二のソフトウェアコンポーネントと置換してもよい。前記第一のイベント後前記第一のソフトウェアコンポーネント及び前記第一のイベントが利用可能ではなくなった後に、ランタイム環境102aにおいて、前記第二のソフトウェアコンポーネントが利用可能となるように、前記第一のソフトウェアコンポーネントが、前記第二のソフトウェアコンポーネントと置換されてもよい。前記第二のソフトウェアコンポーネントは、ランタイム環境102a(例えば、コンポーネントレポジトリ114は、ランタイム環境102aと区別される環境に存在してもよい)と区別されるコンポーネントレポジトリ114からコンポーネントマネージャサブシステム112によって取得されてもよい。
一例として、両方のソフトウェアコンポーネントが同一のソフトウェアのインスタンスであり、第二のソフトウェアコンポーネントが前記第一のソフトウェアコンポーネントのアップデートされたバージョンであり、又は前記第二のソフトウェアコンポーネントが前記第一のソフトウェアコンポーネントを置換するコンポーネントであるという点で、前記第一のソフトウェアコンポーネント及び前記第二のソフトウェアコンポーネントは、お互いに対応してもよい。ランタイム環境102aに置かれる、及び実行される前に、前記第一のソフトウェアコンポーネントは、既知の良好なソフトウェアコンポーネントとしてコンポーネントレポジトリ114に保存されてもよい。
図2に係る一部の実施形態において、前記第一のソフトウェアコンポーネントは、コンポーネント202aでもよく、及び前記第二のソフトウェアコンポーネントは、コンポーネント202bでもよい。コンポーネント202a及び202bは、コンポーネント生成サブシステム118によってコンポーネント生成環境において生成された同一のソフトウェアコンポーネントの、対応するインスタンスでもよい。工程204及び206において、該対応するコンポーネント202a及び202bは、置換コンポーネントとしてコンポーネントレポジトリ114に追加されてもよい。工程208において、その後に前記コンポーネント202aは、該他の対応するコンポーネントの代わりにランタイム環境102で実行されるよう、ランタイム環境102aにおいて実行されているもう一つの対応するコンポーネントを置換するため、コンポーネントマネージャサブシステム112により、コンポーネント202aが、取得されてもよい。工程210において、コンポーネント202bは、コンポーネントマネージャサブシステム112によって取得されてもよく、及びランタイム環境102aにおいて実行されているコンポーネント202aに対する置換コンポーネントとしてランタイム環境中に置かれてもよい。
前記第一のイベント(この第一のイベントに前記第一のソフトウェアコンポーネントの置換は基づいている)は、前記第一のソフトウェアコンポーネントが侵入されたか、又は潜在的に侵入されているかとは無関係に、前記第一のソフトウェアコンポーネントが置換されるべきかを示す。一部の実施形態において、前記第一のイベントには、一又は複数の置換時間間隔の経過、使用閾値に到達した又はを超えた前記第一のソフトウェアコンポーネントの使用回数、前記第一のソフトウェアのアップデートバージョンの使用可能性、及び/又は他のイベントが含まれてもよい。
一部の実施形態において、前記第一のソフトウェアコンポーネントは、前記一又は複数の置換時間間隔の経過後に置換されてもよく、前記第二のソフトウェアコンポーネントは、前記一又は複数の置換時間間隔の第二の経過後に置換されてもよい。一例として、ランタイム環境102aにおいて実行されるソフトウェアコンポーネントは、定期的に既知の良好なソフトウェアコンポーネントと置換されてもよい。他の実施形態において、前記第一のソフトウェアコンポーネントは、前記使用閾値に到達した又はを超えた前記第一のソフトウェアコンポーネントが多くの回数使用された後に、置換されてもよい。このように、他の利点とともに、ソフトウェアコンポーネントを、対応する既知の良好なソフトウェアコンポーネントと定期的置換することで、ランタイム102aにおいて実行されるソフトウェアコンポーネントの完全性が、維持されうる。このように、該ソフトウェアコンポーネントが侵入されるか、又は潜在的に侵入されうるかとは無関係に、該ソフトウェアコンポーネントが、対応する既知の良好なコンポーネントと定期的に置換されることにより、ランタイム環境102aにおいて実行されるソフトウェアコンポーネントが侵入された場合でも、侵入されたソフトウェアコンポーネントに関連付けられた負の影響が減少することになる。
他の実施形態において、前記第一のソフトウェアコンポーネントのアップデートされたバージョン(例えば、前記第二のソフトウェアコンポーネント)が利用可能になった後に、前記第一のソフトウェアコンポーネントは、置換されてもよい。すなわち、他の利点と共に、ランタイム環境102aは、マルウェアによる攻撃や他のセキュリティ問題に対して抵抗することができるバージョンのソフトウェアコンポーネントを含む利用可能な最新バージョンのソフトウェアコンポーネントを、反映することができる。
様々な実施形態において、コンポーネントマネージャサブシステム112は、ランタイム環境102aにおいて、前記第二のソフトウェアコンポーネントをインスタンス化するようプログラムされてもよい。例えば、前記第二のソフトウェアコンポーネントが、ランタイム環境102aにおいて利用可能とならないよう、前記第二のソフトウェアコンポーネントは、不活性パスにおいてインスタンス化されてもよい。前記第一のソフトウェアコンポーネントの、前記第二のソフトウェアコンポーネントとの該置換は、前記第二のソフトウェアコンポーネントがランタイム環境102aにおいて利用可能となるように、コンポーネントマネージャサブシステム112が、前記第二のソフトウェアコンポーネントを活性パスに配置することを含んでもよい。前記第一のソフトウェアコンポーネントの該置換は、コンポーネントマネージャサブシステム112が、前記第一のソフトウェアコンポーネントを前記活性パスの外に移動させることをさらに含んでもよい。
一例として、ランタイム環境102aは、所定のソフトウェアコンポーネントの一又は複数の活性インスタンス、及び前記ソフトウェアコンポーネントの一又は複数の不活性インスタンスを含んでもよい。例えば、前記ソフトウェアコンポーネントの前記不活性インスタンスは、前記ソフトウェアコンポーネントの活性インスタンスに対する置換インスタンスでもよい。このように、前記活性インスタンスのうち一つの置換が発生した場合、前記活性インスタンスは、単純に、前記不活性インスタンスのうち一つと置換されてもよい。前記ソフトウェアコンポーネントの付加的な対応する既知の良好なインスタンスは、コンポーネントレポジトリ114から取得されてもよく、及びランタイム環境102aにおいて、使用可能とする準備が整った置換インスタンスをランタイム環境102aに提供するため、不活性インスタンスとしてインスタンス化されてもよい。一部の実施形態において、前記第一のソフトウェアコンポーネントは、特定のソフトウェアコンポーネントの活性インスタンスでもよく、前記第二のソフトウェアコンポーネントは、該ソフトウェアコンポーネントの不活性インスタンスでもよい。前記第二のソフトウェアコンポーネントは、前記活性パスにおける前記第一のソフトウェアコンポーネントを置換するために、前記化成パス中に巡回させてもよく、前記第一のソフトウェアコンポーネントは、前記活性パスを出て巡回させてもよい。このように、前記第二のソフトウェアコンポーネントは、前記活性パス中で前記第二のソフトウェアコンポーネントを巡回させることで活性化させてもよい。このように、前記第一のソフトウェアコンポーネントは、前記活性パスを出て前記第一のソフトウェアコンポーネントを巡回させることで不活性化させてもよい。
一部の実施形態において、コンポーネントマネージャサブシステム112は、前記活性パスに前記第二のソフトウェアコンポーネントを配置するのと同時に、又は配置した後に、前記不活性パスから、前記第一のソフトウェアコンポーネントを移動させるようプログラムされてもよい。一例として、前記第一のソフトウェアコンポーネントの、前記第二のソフトウェアコンポーネントとの該置換は、該置換の前に前記第一のソフトウェアコンポーネントによって提供されていた継続的なスムースな動作に依存して、他のコンポーネント又はユーザにより経験するダウンタイム(downtime)がないようにシームレス(seamless)な方法で行われてもよい。
一部の実施形態において、前記第一のソフトウェアコンポーネントは、前記第一のソフトウェアコンポーネントが置換されるべきことを示す前記第一のイベントの時間において、前記第一のソフトウェアコンポーネントによりハンドル(handle)されているタスクを完結させることが可能でもよい。しかしながら、新たなタスクは、前記第一のソフトウェアコンポーネントによってハンドルされるようアサイン(assign)されなくてもよいが、その代わり、前記第一のソフトウェアコンポーネントに対応する他の活性化したソフトウェアコンポーネント(例えば、前記第一のソフトウェアの活性化した他のインスタンス)にアサインされうる。前記第一のイベントの時間に前記第一のソフトウェアコンポーネントによってハンドルされた前記タスクの完結において、コンポーネントマネージャサブシステムは、前記ソフトウェアコンポーネントを前記活性パスから移動させるが、同時に前記第二のソフトウェアコンポーネントを前記活性パスに配置してもよい。しかしながら、前記第二のソフトウェアコンポーネントに対応する他の活性化したソフトウェアコンポーネントと同様、新たなタスクは、前記第二のソフトウェアコンポーネント(例えば、前記第二のソフトウェアコンポーネント又は前記第一のソフトウェアコンポーネントの他の活性化されたインスタンス)にアサインされてもよい。
ある実施形態において、前記第一のソフトウェアコンポーネント及び前記第二のソフトウェアコンポーネントは、それぞれバーチャルマシンであってもよい。該ソフトウェアコンポーネントの定義は、一又は複数のディスクイメージを含んでもよい。ランタイム環境102aは、該置換の前に前記第一のソフトウェアコンポーネントが実行される、及び該置換の後に前記第二のソフトウェアコンポーネントが実行されるハイパーバイザ(hypervisor)を含んでもよい。前記活性パスにおける前記第二のソフトウェアコンポーネントの該置換は、前記第二のソフトウェアコンポーネントがランタイム環境において利用可能であるよう、コンポーネントマネージャ112が前記第二のソフトウェアコンポーネントと関連付けられたネットワーク設定をアップデートすることを含んでもよい。
一部の実施形態において、一又は複数の外部IPアドレスが、活性化されたサブネットアドレスにアサインされたソフトウェアコンポーネントにリダイレクトされるよう活性化された一又は複数のサブネットアドレスと関連付けられてもよい。ソフトウェアコンポーネントは、ランタイム環境102a利用可能ではなくてもよいが、前記活性化されたサブネットアドレスにアサインされたソフトウェアコンポーネントは、ランタイム環境102aにおいて利用可能であってもよい。前記第二のソフトウェアコンポーネントは、該置換の前に、前記不活性化されたサブネットアドレスの一つにアサインされてもよいが、前記第一のソフトウェアコンポーネントは、該置換の前に前記活性化されたサブネットアドレスの一つにアサインされてもよい。前記第一のソフトウェアコンポーネントが置換されるべきであると示す前記第一のイベントに応じて、外部IPアドレスに向かうリクエストが、前記第二のソフトウェアコンポーネントに、そのアサインされた活性化されたサブネットアドレスを介してリダイレクトされるよう、前記第二のソフトウェアコンポーネントにアサインされた前記不活性化されたサブネットアドレスが、活性化されてもよく、又は他の活性化されたサブネットアドレスが、前記第二のソフトウェアコンポーネントにアサインされてもよい。
様々な実施形態において、前記第一のソフトウェアコンポーネント及び前記第二のソフトウェアコンポーネントは、それぞれオペレーティングシステムのプロセスであってもよい。活性パスにおける前記第二のソフトウェアコンポーネントの該置換は、コンポーネントマネージャ112が、プロセス間通信の設定に基づいて、前記第二のソフトウェアコンポーネントを前記活性パスに移動させることを含んでもよい。
一部の実施形態において、前記第一のソフトウェアコンポーネント及び前記第二のソフトウェアコンポーネントは、それぞれ実行可能コードであってもよい。前記活性パスにおける前記第二のソフトウェアコンポーネントの該置換は、コンポーネントマネージャサブシステム112が、前記第二のソフトウェアコンポーネントに関連付けられたルックアップテーブル(look up table)又はメモリアドレスのポインタをアップデートすることを含んでもよい。一例として、言語ライブラリは、機能又は関数呼び出し(function call)を促進する前記言語ライブラリにおいて利用可能な機能(例えば、ソフトウェアコンポーネント)に関連付けられたルックアップテーブル又はメモリアドレスのポインタを利用してもよい。例えば、前記ルックアップテーブル又は前記メモリアドレスのポインタは、置換実行可能コードが存在するメモリにおける異なる位置を示す(point)それぞれの機能呼び出しの後に更新されてもよい。一実施形態において、前記第一のソフトウェアコンポーネントは、前記言語ライブラリのルックアップテーブル又はメモリアドレスのポインタが示す第一のメモリ位置にある所定の機能と関連付けられた実行可能コードであってもよい。ソフトウェアコンポーネント(例えば、前記機能と関連付けられた実行可能コード)が置換ソフトウェアコンポーネントと置換される前に、前記ソフトウェアコンポーネントが一度のみ呼び出されるように、前記言語ライブラリが設定されてもよい。このように、前記第一のソフトウェアコンポーネントが一度呼び出された後に前記第一のメモリ位置を示す前記ルックアップテーブル又は前記メモリアドレスポインタが、前記機能に関連付けられた置換実行可能コードが存在する場所である第二のメモリ位置を示すようアップデートされてもよい。
ある実施形態において、コンポーネントマネージャサブシステム112は、前記第二のソフトウェアコンポーネントに関連付けられた完全性の情報を取得できるようプログラムされてもよい。前記第二のソフトウェアコンポーネントは、完全性の情報に基づいて、コンポーネントマネージャサブシステム112により検証されてもよい。例えば、前記第一のソフトウェアコンポーネントを置換するため、前記コンポーネントマネージャサブシステム112が前記第二のソフトウェアコンポーネントを利用する前に、前記第二のソフトウェアコンポーネントの該検証が行われてもよい。一部の実施形態において、前記第二のソフトウェアコンポーネントが、既知の良好なソフトウェアコンポーネントであっても、前記完全性の情報は、前記第二のソフトウェアコンポーネントに対して生成されてもよい。一例として、前記第二のソフトウェアコンポーネントがその生成された環境、又は前記第二のソフトウェアコンポーネントが既知の良好なソフトウェアコンポーネントのままである他の環境の外に配布される前で、配布される準備がされたすぐ後に、前記完全性の情報は、前記第二のソフトウェアコンポーネントに対して生成されてもよい。例えば、前記完全性の情報は、前記第二のソフトウェアコンポーネントが既知の良好な形式から修正されていないことを決定するために用いられてもよい。一部の実施形態において、前記完全性の情報は、前記第二のソフトウェアコンポーネントでのハッシュ操作(一方向ハッシュ、又は他のハッシュ操作)を行うことで、生成されてもよい。
一部の実施形態において、コンポーネント分析サブシステム116は、第一のソフトウェアコンポーネントが置換された後に、前記第一のソフトウェアコンポーネントを分析するようプログラムされてもよい。コンポーネント分析サブシステム116は、前記第一のソフトウェアコンポーネントが該分析に基づき侵入されたかどうか、及び/又はどのように侵入されたかを決定するようプログラムされてもよい。一例として、前記第一のソフトウェアコンポーネントが前記活性パスから移動させられた後、コンポーネントマネージャサブシステム112は、分析環境102eに前記第一のソフトウェアコンポーネントを移動させてもよい。前記第一のソフトウェアコンポーネントが侵入されたか、又は潜在的に侵入されているかとは無関係に、前記第一のソフトウェアコンポーネントが、前記第二のソフトウェアコンポーネントと置換されてもよい。前記第一のソフトウェアコンポーネントが侵入されたか、及び、侵入された場合に前記第一のソフトウェアコンポーネントがどのように侵入されたかを決定するために、コンポーネント分析サブシステム116は、前記第一のソフトウェアコンポーネントを分析してもよい。このように、他の利点とともに、侵入に対してより優れた抵抗性を有する新しいバージョンのソフトウェアコンポーネントが、対応するソフトウェアコンポーネントの低い抵抗性を除去するよう開発されうる。
図2に係る一部の実施形態において、対応するコンポーネント202bがランタイム環境102aにおいてコンポーネント202aを置換した後に、工程212において、コンポーネントマネージャサブシステム112により、コンポーネント202aは、ランタイム環境102から分析環境102eへと移動させられてもよい。さらなる実施形態において、他の対応するコンポーネントがランタイム環境102bにおいてコンポーネント202bを置換した後に、工程214において、コンポーネントマネージャサブシステム112により、コンポーネント202bも、ランタイム環境102aから分析環境102eに移動させられてもよい。
上述のように、環境102は、一又は複数の区別された環境102a、102b、102c、102d、102e、又は他の環境を含みうる。一つの環境におけるコンポーネント又はサブシステムが、他の環境に対しアクセス制限されてもよい(例えばリードアクセス(read access)制限、書き込みアクセス制限、実行アクセス制限、消去アクセス制限、及び/又は他のアクセス制限)。
一例として、コンポーネントレポジトリ114から前記第二のソフトウェアコンポーネントを取得するために、コンポーネントマネージャサブシステム112(例えば、環境102bに位置する)は、コンポーネントレポジトリ114(例えば、環境102cに位置する)に対するリードアクセスを有していてもよい。しかしながら、コンポーネントマネージャサブシステム112が、コンポーネントレポジトリ114又は環境102cに対する書き込みアクセス、実行アクセス、又は消去アクセスを有さないよう、環境102b、環境102c、コンポーネントレポジトリ114、又はコンポーネントマネージャサブシステム112が、設定されてもよい。したがって、コンポーネントレポジトリ114に保存される既知の良好なコンポーネントに集中的に、又は偶発的に、侵入するために、コンポーネントマネージャサブシステム112は用いられなくてもよい。
他の一例として、前記第二のソフトウェアコンポーネント又は他のソフトウェアコンポーネントをコンポーネントレポジトリ114に追加するために、コンポーネント生成サブシステム118(例えば、環境102dに位置する)は、コンポーネントレポジトリ114に対して書き込みアクセスを有してもよい。しかしながら、コンポーネント生成サブシステム118が、コンポーネントレポジトリ114又は環境102cに対してリードアクセス、実行アクセス、又は消去アクセスを有さないように、環境102c、環境102d、コンポーネント生成サブシステム118、又はコンポーネントレポジトリ114が設定されてもよい。一部の実施形態において、環境102b、102a、102c、又は102eにおける他のコンポーネント又はサブシステムは、コンポーネント生成サブシステム118又は環境102dに対して書き込みアクセス、リードアクセス、実行アクセス、又は消去アクセスを有しなくてもよい。例えば、コンポーネント生成サブシステム118が、ランタイム環境102aから侵入され得ないように、コンポーネント生成サブシステム118がランタイム環境102aからアクセス不可能であってもよい。このように、生成されたソフトウェアコンポーネントがコンポーネントレポジトリ114に配置される場合、ソフトウェアコンポーネントが、既知の良好なソフトウェアコンポーネントとなるように、コンポーネント生成サブシステム118は、侵入のない環境でソフトウェアコンポーネントを生成してもよい。
一部の実施形態において、コンポーネント生成環境から区別されるコンポーネントレポジトリに、ソフトウェアコンポーネントを配置する前に、コンポーネント生成環境において生成されるソフトウェアコンポーネントのサブコンポーネントを不正使用すること、又は潜在的に不正使用が可能であることを制限することで、セキュリティ、及び/又は完全性が促進されてもよい。例として、コンポーネント生成サブシステム118は、コンポーネント生成環境102dにおいてソフトウェアコンポーネントを生成するようプログラムされてもよく、前記ソフトウェアコンポーネントがコンポーネント生成環境102dから外へ移動させられる前に、前記ソフトウェアコンポーネントのサブコンポーネントに対し不正使用可能、又は潜在的に不正使用可能であることを制限してもよい(例えば、前記ソフトウェアコンポーネントがコンポーネントレポジトリ114に配置される前に、前記ソフトウェアコンポーネントがランタイム環境102aにおいてインスタンス化される等)。
インターフェイス及び他のサブコンポーネントの制限化又は無効化
一の実施形態において、図3に図示されるように、コンポーネント生成サブシステム118は、コンポーネントオーサリング(authoring)サブシステム302、コンポーネントシーリング(sealing)サブシステム304、コンポーネントエクスポート(exporting)サブシステム306、及び/又は他のサブシステムを含んでよい。
一部の実施形態において、コンポーネントシーリングサブシステム304は、コンポーネント生成環境102dにおいて少なくとも一つの第一のソフトウェアコンポーネントを特定してもよい。前記第一のソフトウェアコンポーネントは、前記第一のソフトウェアコンポーネント、第二のサブコンポーネント、又は他のコンポーネントに侵入して不正使用される、又は潜在的に不正使用されうる機能を提供する第一のサブコンポーネントを含む。前記第一のソフトウェアコンポーネントが実行される場合に、第一のサブコンポーネントによって提供される機能が、前記第一のソフトウェアコンポーネントを介して利用可能とならないように、コンポーネントシーリングサブシステム304は、前記第一のサブコンポーネントを特定し、無効化する。前記第一のサブコンポーネントによって提供される前記機能が利用不可能に、前記第一のソフトウェアコンポーネントがコンポーネントレポジトリ114に配置されるよう、コンポーネントエクスポートサブシステム306は、コンポーネントレポジトリ114に、前記第一のソフトウェアコンポーネントを配置することができる。このように、前記第一のソフトウェアコンポーネントからの機能が不正使用可能、又は潜在的に不正使用されうる可能性を除去するため、前記第一のソフトウェアコンポーネントは、該不正使用可能、又は潜在的に不正使用されうる機能へアクセスするために用いられ得ない。他の利点と共に、侵入されるようになる前記第一のソフトウェアコンポーネントに関連付けられたリスクを減少させることが可能である。
一の実施形態において、前記第一のサブコンポーネントの無効化は、コンポーネントシーリングサブシステム304が、前記第一のサブコンポーネントを、前記第一のソフトウェアコンポーネントから削除することを含んでもよい。このように、前記第一のソフトウェアコンポーネントが、コンポーネントレポジトリ114に配置された場合、前記第一のソフトウェアコンポーネントは、前記第一のサブコンポーネントを含まなくてもよい。前記第一のソフトウェアコンポーネントからの前記第一のサブコンポーネントの該削除は、前記第一のソフトウェアコンポーネントが、前記第一のサブコンポーネントに関連付けられたソースコード又は実行可能コードをもはや含まないよう、前記第一のサブコンポーネントと関連付けられたソースコード、又は実行可能コードを、前記第一のソフトウェアコンポーネントから削除することを含んでもよい。一部の実施形態において、前記第一のソフトウェアコンポーネントは、バーチャルマシーンでもよく、及び前記第一のサブコンポーネントはセキュアシェル(secure shell、SSH)プログラムでもよい。前記第一のソフトウェアコンポーネントからの前記第一のサブコンポーネントの該削除は、バーチャルマシーンから前記SSHプログラムからなる実行コードを削除することを含んでもよい。
他の実施形態において、前記第一のサブコンポーネントの無効化は、前記第一のソフトウェアコンポーネントから前記第一のサブコンポーネントを削除すること無しに、前記第一のサブコンポーネントから提供される機能を切る(turn off)ことを含みうる。従って、コンポーネントレポジトリ114における前記第一のソフトウェアコンポーネントの前記第一のサブコンポーネントが無効化されうるにもかかわらず、前記第一のソフトウェアコンポーネントは、前記第一のサブコンポーネントを含んだままでもよい。一例として、前記第一のソフトウェアコンポーネントが不安定になるのを避けるため、前記第一のサブコンポーネントを前記第一のソフトウェアコンポーネントから削除すること無しに、前記第一のサブコンポーネントは、前記第一のソフトウェアコンポーネントに対して無効化されてもよい。
一部の実施形態において、前記第一のサブコンポーネントの該無効化は、前記第一のソフトウェアコンポーネントを無効化命令と関連付けることを含んでもよい。一の実施形態において、前記第一のサブコンポーネントが前記無効化命令に基づいて前記第一のソフトウェアコンポーネントから削除されるよう、前記第一のソフトウェアコンポーネントは前記無効化命令と関連付けられてもよい。一例として、前記第一のソフトウェアコンポーネントは、ランタイム環境で第一のソフトウェアコンポーネントをインスタンス化するよう実行されるスクリプト(例えば、Bashスクリプト、又は他のスクリプト)と関連付けられてもよい。前記第一のソフトウェアコンポーネントがインスタンス化された場合、前記スクリプトは、前記第一のソフトウェアコンポーネントから前記第一のサブコンポーネントに関連付けられたコードを削除してもよい。このように、前記第一のソフトウェアコンポーネントが実行された場合、前記第一のソフトウェアコンポーネントは、前記第一のサブコンポーネントと関連付けられた該コードを含まなくてもよい。他の一例として、前記第一のソフトウェアコンポーネントが前記コンポーネントレポジトリに配置される、又はランタイム環境において利用可能とされる前に、前記無効化命令が、前記第一のソフトウェアコンポーネントに注入されてもよい。前記第一のソフトウェアコンポーネントが実行された場合、前記無効化命令は、前記第一のソフトウェアコンポーネントから削除される前記第一のサブコンポーネントと関連付けられた該コードを引き起こしてもよい。
他の実施形態において、前記無効化命令に基づいて前記第一のサブコンポーネントにより提供された機能が切られるよう、前記第一のソフトウェアコンポーネントが、前記無効化命令に関連付けられてもよい。一例として、前記第一のソフトウェアコンポーネントは、ランタイム環境で第一のソフトウェアコンポーネントをインスタンス化するよう実行されるスクリプト(例えば、Bashスクリプト、又は他のスクリプト)と関連付けられてもよい。前記第一のソフトウェアコンポーネントがインスタンス化される場合、前記スクリプトは、前記第一のサブコンポーネントにより提供される前記機能を切ることができる。したがって、前記第一のソフトウェアコンポーネントが実行される場合に、第一のサブコンポーネントによって提供される機能は、前記第一のソフトウェアコンポーネントを介して利用可能とならない。他の一例として、前記第一のソフトウェアコンポーネントが前記コンポーネントレポジトリに配置される、又はランタイム環境において利用可能とされる前に、前記無効化命令が、前記第一のソフトウェアコンポーネントに注入されてもよい。前記第一のソフトウェアコンポーネントの実行において、前記無効化命令は、前記第一のサブコンポーネントによって提供される前記機能を切る(turn off)ことになる。
様々な実施形態において、前記第一のサブコンポーネントによって提供される前記機能は、前記第一のソフトウェアコンポーネントを維持するために用いられる管理者機能、又はメンテナンス機能を含みうる。前記第一のサブコンポーネントは、前記第一のサブコンポーネントにより提供される前記管理者機能又は前記メンテナンス機能に基づいて無効化、又は特定されてもよい。例として、バーチャルマシンを維持するための管理者機能又はメンテナンス機能を含むバーチャルマシンのサブコンポーネントは、テルネット(telnet)インターフェイス、SSHインターフェイス、リモートデスクトッププロトコル(remote desktop protocol、RDP)インターフェイス、アドミニストレイティブアプリケーションプログラマブルインターフェイス(Adminisntrative application programmable interface、API)、管理者ウェブサイト、又は他のサブコンポーネントを含んでもよい。
一部の実施形態において、前記第一のソフトウェアコンポーネントは、不正使用可能、又は潜在的に不正使用可能な第二のサブコンポーネントをさらに含み得る。前記第一のソフトウェアコンポーネントの前記第一のサブコンポーネントは、無効化されるが、前記第二のサブコンポーネントは無効化されなくてもよい。前記第一のサブコンポーネントが前記第一のソフトウェアコンポーネントの機能にとって必要でないとの決定に基づき、前記第一のサブコンポーネントはコンポーネントシーリングサブシステム304により無効化されてもよい。前記第二のサブコンポーネントが前記第一のソフトウェアコンポーネントの機能にとって必要であるという決定に基づいて、前記第二のサブコンポーネントは、コンポーネントシーリングサブ巣システム304によって無効化されてもよい。
ある実施形態においては、前記第2のサブコンポーネントが前記第一のソフトウェアコンポーネントから削除されなくてもよいが、コンポーネントシーリングサブシステム304は、前記第二のサブコンポーネントに関連するリスクを削除するあるいは減少させるため、前記第二のサブコンポーネントから前記第二のサブコンポーネントに関連付けられた一又は複数のコードセット(コード集合、code set)を削除するようにプログラムされてもよい。例として、コンポーネントシーリングサブシステムは、前記第二のサブコンポーネントを不正使用可能、又は潜在的に不正使用可能とすることを引き起こす前記第二のサブコンポーネントと関連付けられたコードを特定するように、及び前記第二のサブコンポーネントがもはや前記コードセットを含まなくなるよう前記第二のサブコンポーネントから、前記コードを削除するようにプログラムされてもよい。前記第一のソフトウェアコンポーネントがコンポーネントレポジトリ114に配置された場合、前記第一のソフトウェアコンポーネントは、前記コードセット無しに前記第二のサブコンポーネントを含んでもよい。
一の実施形態において、ソフトウェアコンポーネントはバーチャルマシンでもよい。前記バーチャルマシンのサブコンポーネントはBashであってもよい。Bashは、バーチャルマシンのオペレーティングシステムにとって、適切に動作するために必要なシェルであるので、Bashは、バーチャルマシンから削除されなくてもよく、あるいは無効化されなくてもよい。しかしながら、「ls」、「sed」、「vi」等の多くのコマンドは、適切に動作するためにバーチャルマシーンのオペレーティングシステムに対して必要ではないので、これらのコマンドは、削除、あるいは無効化されてもよい。例えば、これらの不要なコマンドと関連付けられたコードセットは、バーチャルマシンがこれらのコードセットを含まないBashを含みうるよう、Bashから削除されてもよい。
一部の実施形態において、コンポーネントオーサリングサブシステム302は、コンポーネント生成環境102dにおいて、前記第一のソフトウェアコンポーネントを生成するようプログラムされてもよい。コンポーネントオーサリングサブシステム302によって生成される前記第一のソフトウェアコンポーネントは、前記第一のサブコンポーネント(前記第一のソフトウェアコンポーネントに侵入して不正使用可能、又は潜在的に不正使用可能となり得る機能を提供する)、第二のサブコンポーネント、又は他のサブコンポーネントを含んでもよい。
ある実施形態において、コンポーネントオーサリングサブシステム302は、第一のプロファイル情報を前記第一のソフトウェアコンポーネントと関連付けてもよい。例として、前記第一のプロファイル情報は、所定のソフトウェアコンポーネントの所定のサブコンポーネントが無効化されるべきかを決定するために用いられる。前記第一のサブコンポーネントは前記第一のプロファイル情報に基づいて無効化される、又は特定されてもよい。一例として、前記第一のプロファイル情報は、削除を介して無効化されうるサブコンポーネントを規定する情報、削除されること無しに無効化されうるサブコンポーネントを規定する情報、無効化されないサブコンポーネントを規定する情報、又は他の情報を含みうる。一の実施形態において、前記第一のプロファイル情報は、ソフトウェアコンポーネントにおいて不正使用可能な又は潜在的に不正使用可能なサブコンポーネントを制限することに対して、一般的には適用可能になり得る。他の一つの実施形態において、前記第一のプロファイル情報は、ソフトウェアコンポーネント、特定の識別子と関連付けられたソフトウェアコンポーネント等のうち一又は複数の特定の種類において、不正使用可能な、又は潜在的に不正使用可能なサブコンポーネントを制限するためのものである。例えば、前記第一のプロファイル情報は、前記第一のソフトウェアコンポーネントの種類のソフトウェアコンポーネントを有するソフトウェアコンポーネントを規定する、又は前記第一のソフトウェアコンポーネントの識別子と対応する識別子を有するソフトウェアコンポーネントを規定してもよい。
様々な実施形態において、コンポーネントオーサリングサブシステム302は、前記第一のソフトウェアコンポーネントが前記第一のサブコンポーネント及び第二のサブコンポーネントを含むように、コンポーネント生成環境102dにおいて前記第一のソフトウェアコンポーネントを生成するようプログラムされてもよい。該第一のコンポーネントは、前記第一のプロファイル情報に基づいて、コンポーネントシーリングサブシステム304によって無効化されてもよい。該第二のコンポーネントは、前記第一のプロファイル情報に基づいて、コンポーネントシーリングサブシステム304によって無効化されなくてもよい。
ある実施形態において、コンポーネントエクスポートサブシステム306は、前記第一のソフトウェアコンポーネントに関連付けられた完全性の情報を生成するようプログラムされてもよい。例として、前記第一のソフトウェアコンポーネントが、既知の良好なソフトウェアコンポーネントであっても、前記完全性の情報は、前記第一のソフトウェアコンポーネントに対して生成されてもよい。一例として、前記第一のソフトウェアコンポーネントがその生成された環境(例えば、環境102d)、又は前記第一のソフトウェアコンポーネントが既知の良好なソフトウェアコンポーネントのままである他の環境の外に配布される前で、配布される準備がされたすぐ後に、前記完全性の情報は、前記第一のソフトウェアコンポーネントに対して生成されてもよい。
一部の実施形態において、前記第一のサブコンポーネントが無効化された後で、及び前記第一のソフトウェアコンポーネントがコンポーネントレポジトリ114に配置される前に、前記完全性の情報は、前記第一のソフトウェアコンポーネントに対して生成されてもよい。前記完全性の情報は、前記第一のソフトウェアに対して前記完全性の情報が生成された後に、前記第一のソフトウェアコンポーネントが修正されたかどうかを決定するために用いられてもよい。一部の実施形態において、前記完全性の情報は、前記第一のソフトウェアコンポーネントでのハッシュ操作(一方向ハッシュ、又は他のハッシュ操作)を行うことで生成されてもよい。
ネットワークを介して伝達される、インターリーブしており、難読化した情報
図4を参照すると、一部の実施形態において、送信側コンピュータ104は、データパケットの異なるスライスに伝達される異なる情報を組合わせ、及び/又は情報のセキュアな伝達のために異なる暗号化スキームを用いて当該スライスを暗号化するようプログラムされてもよい。例として、送信側コンピュータ104は伝達されるべき第一の情報、伝達されるべき第二の情報、又は伝達されるべき他の情報を受信してもよい。前記第一の情報は、第一の送信側コンポーネントと関連付けられてもよい。前記第二の情報は、第一の送信側コンポーネントと異なる第二の送信側コンポーネントと関連付けられてもよい。例えば、送信側コンポーネント108は、送信側コンピュータ104の外部のコンポーネント、送信側コンピュータ104内で実行されるコンポーネント、又は、他のコンポーネントを含んでもよい。
送信側コンピュータ104は、少なくとも前記第一の情報の一部を表す第一のデータスライス、少なくとも前記第二の情報の一部を表す第二のデータスライス、又は他のデータスライスを生成するようプログラムされてもよい。前記第一のデータスライスは、第一の暗号化スキームに基づき生成されてもよい。前記第二のデータスライスは、前記第一の暗号化スキームとは異なる第二の暗号化スキームに基づき生成されてもよい。一例として、前記第一の暗号化スキームに基づく前記第一のデータスライスの生成は、第一の暗号化の種類又は第一の暗号キーを用いて前記第一の情報の一部を暗号化することを含む。前記第二の暗号化スキームに基づく前記第二のデータスライスの生成は、前記第一の暗号化の種類又は前記第一の暗号キーとそれぞれ異なる第二の暗号の種類又は第二の暗号キーを用いて前記第二の情報の一部を暗号化することを含む。暗号化の種類の例として、ワンタイムパッド(one time pad、OTP)、データ暗号化標準(Data Encryption Standard、DES)、高度暗号化標準(Advanced Encryption Standard、AES)、又は他の種類の暗号化が含まれる。
送信側コンピュータ104は、前記第一のデータスライスに対する前記第一の暗号化スキーム、前記第二のデータスライスに対する前記第二の暗号化スキーム、又は他の情報を規定する第一のヘッダを生成するようプログラムされてもよい。送信側コンピュータ104は、前記第一のヘッダ、前記第一のデータスライス、前記第二のデータスライス、又は他のデータパケットの要素を含む第一のデータパケットを生成するようプログラムされてもよい。その後、前記第一のデータパケットは、適切な受信側コンピュータに対して送信されてもよい(例えば、受信側コンピュータ106、又は他の受信側コンピュータ)。
図4Aに関し、一部の実施形態において、送信側コンピュータ104は、送信側コンポーネント108a〜108n、情報送信サブシステム402、又は他のコンポーネントを含んでもよい。図4Bに関し、他の一つの使用例において、受信側コンピュータ106は、受信側コンポーネント110a〜110n、情報受信サブシステム404、又は他のコンポーネントを含んでもよい。状況に応じて、所定の送信側コンポーネント108は受信側コンポーネントであってもよく、及び所定の受信側コンポーネント110は、送信側コンポーネントであってもよい点に留意すべきである。さらに、状況に応じて、所定の送信側コンポーネント104は受信側コンピュータであってもよく、及び所定の受信側コンポーネント106は送信側コンピュータであってもよい点に留意すべきである。一例として、送信側コンピュータ104は、受信したデータパケットを処理する情報受信サブシステム404、又は他のコンポーネントをさらに含む。前記受信したデータパケットは、異なる暗号化スキームを用いて暗号化された異なる情報と関連付けられたデータスライスを含む。他の一例において、受信側コンピュータ106は、送信されるべき異なる情報を、データパケットの異なるスライスに組合わせ、及び/又はセキュアな前記情報の伝達のため異なる暗号化スキームを用いて前記スライスを暗号化する、情報送信サブシステム402、又は他のコンポーネントを含む。
図示されるとおり、一部の実施形態において、それぞれのデータパケットが異なる情報と関連付けられた及び異なる暗号化スキームを用いて暗号化された異なるデータスライスを含むように、送信側コンピュータ104及び受信側コンピュータ106は、データパケットを介してお互いに通信するよう事前にプログラムされてもよい。例えば、送信側コンピュータ104及び受信側コンピュータ106の該事前設定は、該二つのコンピュータ104及び106の間のユニークな関係性を確立してもよい。例えば、前記二つのコンピュータ間の該関係性は、(i) 前記二つのコンピュータに利用可能なポリシー、(ii) ヘッダ、データスライス、又は他のデータパケットの要素を暗号化するのに用いられる、パッド(例えば、OTP)、又は他の暗号化スキームの収集、(iii) 関係性のステータス(例えば、次のデータパケット中のヘッダが位置する場所、現在用いられるべきパッド、又は他のステータス情報)、又は(iv) 関係性の他の特徴、と定義されてもよい。送信側コンピュータ104は、他のコンピュータとの他の関係性を有し得るが、前記他のコンピュータは、異なるポリシー、暗号化スキーム、関係性ステータス、又は他の関係性の特徴の結果の通り、送信側コンピュータ104から受信側コンピュータ106へと向けられたデータパケットを処理しなくてもよい。一方で、異なる送信側コンポーネント108と関連付けられた部分の情報を取得するため、及びその後に適切な受信側コンポーネント110に提供される情報を形成するよう取得した部分を組み合わせるため、受信側コンピュータ106は、送信側コンピュータ104からのデータパケットを処理してもよい。
図5に関し、一部の実施形態において、送信側コンピュータ104は、送信側コンポーネント108a、108b、及び108cから、情報502、504、及び506を受信してもよい。一部の実施形態において、送信側コンポーネント108a、108b、及び108cは、送信側コンピュータ104において、バーチャルマシン、アプリケーション、又は他のコンポーネントを含んでもよい。前記情報502、504、及び506は、受信側コンポーネント110a、110b、及び110cとそれぞれ対応する送信側コンポーネント108a、108b、及び108cから伝達されるべき通信を含んでもよい。
送信側コンピュータ104は、少なくとも情報502の部分502a〜502n、少なくとも情報504の部分504a〜504n各々を表すデータスライス、及び少なくとも情報506の部分506a〜506nを表すデータスライスを生成してもよい。データパケット508a〜508nは、(i) データパケット508aが、ヘッダ510a、部分502a、504a、及び506a、又は他のデータパケットの要素を含み、(ii) データパケット508bが、ヘッダ510b、部分502b、504b、及び506b、又は他のデータパケットの要素を含み、及び(iii) 以下同様、に生成されてもよい。ヘッダ510aは、部分502a、504a、及び506aを表す前記データスライスを暗号化するのに用いられた暗号化スキームを規定してもよい。ヘッダ510bは、部分502b、504b、及び506bを表す前記データスライスを暗号化するのに用いられた暗号化スキームを規定してもよい。一例として、ヘッダ510を翻訳するのに用いられるべきポリシーを規定し、及び前記暗号化スキームに対応する前記ポリシーの暗号化スキームインデックスを規定することで、ヘッダ510は、暗号化スキームを規定する。ポリシーに関する更なる説明、及び暗号化スキームインデックスは、以下で記載される。
図5に関し、データパケット508a〜508nは、受信側コンピュータ106に送信されてもよい。情報502、504、及び506を形成するため、及び情報502、504、及び506を、それぞれの受信側コンポーネント110a、110bm及び110cに提供するために、受信側コンピュータ106は、データパケット508a〜508nを処理してもよい。一例として、部分502a〜502nを表すデータスライスを暗号化するために用いられた暗号化スキーム、部分504a〜504nを表すデータスライスを暗号化するために用いられた暗号化スキーム、及び部分506a〜506nを表すデータスライスを暗号化するために用いられた暗号化スキームを特定するため、受信側コンピュータ106は、ヘッダ510a〜510nを処理する。部分502a〜502n、504a〜504n、及び506a〜506nを取得するため、該特定された暗号化スキームを用いて、前記データスライスは、解読される。その後、該対応する部分は、情報502、504、及び506を形成するために組合わされる。
一部の実施形態において、送信側コンピュータ104は、ランダムに生成されたフィラーデータ(filler data)を含む第三のデータスライスを生成するようプログラムされてもよい。前記第三のデータスライスは、前記第一のデータスライス、又は前記第二のデータスライスのサイズとは異なるサイズを有してもよい。前記第一のデータパケットは、前記第一のデータパケットが前記第三のデータパケットを含むように生成されてもよい。このように、他の利点とともに、情報の部分を実際に表しているデータに対するカモフラージュの他の一つのレイヤを提供するために、ランダムに生成されたフィラーデータは、データパケット内でインターリーブされてもよい。前記ランダムに生成されたフィラーデータを含む前記データスライスが、情報の部分を表さない事実を、意図しない受信側にさらに隠すための暗号化スキームを用いて、前記ランダムに生成されたフィラーデータを含む前記データスライスは、暗号化されてもよい。付加的に又は代替的に、情報の部分を表すデータスライスの開始位置及び終端位置を隠すため、ランダムに生成されたフィラーデータを含むデータスライスのサイズは、データパケット内で異なっていてもよい。
図5に関し、非制限的な例として、データパケット508a〜508nそれぞれが、ランダムに生成されたフィラーデータ512を含むデータスライスを含んでもよい。データパケット508a〜508nが、受信側コンピュータ106によって受信された場合、ランダムに生成されたフィラーデータ(情報の部分とは反対に)は、無視されてもよい。例えば、情報の部分を表す前記データスライスの前記開始位置及び終端位置は、特定されてもよい。情報の部分を表すデータスライスは、ランダムに生成されたフィラーデータを含むデータスライスをそのままにして、抽出(extract)されてもよい。その後、情報の部分は、該抽出されたデータスライスを解読することで、情報の部分は、取得されてもよい。
一部の実施形態において、前記第一のヘッダは、前記第一のデータパケット内の前記第一のデータスライスの位置、前記第一のデータパケット内の前記第二のデータスライスの位置、前記第一のデータパケット内の前記第三のデータスライスの位置、又は他の位置情報を規定する。例として、データパケットヘッダを翻訳するのに用いられるべきポリシーを規定することで、データパケットヘッダは、データスライスの開始位置、データスライスの終端位置、データスライスのうちランダムに生成されたフィラーデータを含むデータスライス、又は他のデータパケットに関連する情報を規定してもよい。
一部の実施形態において、特定のポリシーに対する例ポリシー(example policy)の定義は、{"Policy":{"Index":0, "Name":"Standard ODEP", "SliceSizes":128, 512, 32, 32, 128, 384, 268, 24, "TrafficModel":2, "DataTypes":{0:"rand", 1:"otp", 2:"des", 3:"aes256"}}である。データパケットヘッダは、ポリシーインデックス(policy index)0を規定することで、データパケットを翻訳するために用いられるべき例ポリシーを規定し得る。ポリシーの定義に基づいて、トラフィックモデルインデックス(Traffic model index)2 と対応するトラフィックモデルは、データパケット内のデータスライスの位置、データスライスのうちランダムに生成されたフィラーデータを含むデータスライス、又は他のデータパケットに関連する情報を規定する。一部の実施形態において、議論されたとおり、ポリシー又は他のポリシーに関連する情報は、所定の送信側コンピュータ及び所定の受信側コンピュータ間で確立されたユニークな関係によって定義され得る。一例として、データパケットヘッダによって規定されるポリシーインデックスに対応するポリシーは、前記ユニークな関係を共有する送信側側コンピュータ及び受信側コンピュータによってのみ知られ得る。他の一例として、所定の送信側コンピュータは、前記送信側コンピュータから所定の受信側コンピュータへのセキュアな送信(例えば、送信チャネル)のため、前記受信側コンピュータとの第一の関係を有してもよく、及び前記受信側コンピュータから前記第二のコンピュータにおいて受信されるデータパケットを処理する(例えば、受信チャネル)ため、第二の関係を有してもよい。例えば、それぞれの関係は、該関係に利用可能な異なるポリシー又は他のデータパケットに関連する情報を定義してもよい。
図6に関し、一部の実施形態において、ビットの第一のセット中のデータパケットヘッダ600を含むデータパケットを翻訳するために用いられるべきポリシーを表すポリシーインデックス、データパケット中のデータスライスを暗号化するのに用いられた暗号化スキームを表す暗号化スキームインデックス、次のデータパケットのヘッダの位置を示すヘッダオフセット、逆接続のためのポート、又は他のデータパケットに関連する情報を、データパケットヘッダ600は、規定してもよい。
一部の実施形態において、送信側コンピュータ104は、第三の暗号化スキームに基づいて、前記第一のヘッダを生成するようプログラムされてもよい。前記第三の暗号化スキームは、前記第一の暗号化スキーム又は前記第二の暗号化スキームと同一でもよく、又は前記第一の暗号化スキーム及び前記第二の暗号化スキームの両方とから異なっていてもよい。図6に関し、一の実施形態において、特定のパッドが、データパケットヘッダ600を暗号化するのに用いられてもよい。例えば、データパケットヘッダ600を暗号化するのに用いられるパッドは、所定の送信側コンピュータ及び所定の受信側コンピュータ間のユニークな関係の一部として事前設定されたパッド集のうちの一つであってもよい。
様々な実施形態において、送信側コンピュータ104は、前記第三の暗号化スキームに基づいて、第一のハンドシェイクリクエスト(Handshake request)を生成するようプログラムされてもよい。前記第一のハンドシェイクリクエストは、受信側コンピュータに送信されてもよい。送信側コンピュータ104は、受信側コンピュータ106から第一のレスポンスを受信してもよい。前記第一のヘッダは、ヘッダの暗号化について前記第三の暗号化スキームを用いることを確認する前記第一のレスポンスに基づいて、前記第三の暗号化スキームを用いて暗号化される。
一部の実施形態において、送信側コンピュータ104が受信側コンピュータ106に情報をセキュアに送信するため、送信側コンピュータ104は、前記受信側コンピュータ106と通信セッションを開始して最初にハンドシェイクヘッダとともにハンドシェイクパケットを送信してもよい。前記ハンドシェイクヘッダは、標準的な24ビットのヘッダで、ボディ部は無く、このヘッダの全てのビットは0にセットされ、該二つのコンピュータ間で確立された関係がインデックス0と定義された第一のパッドを用いて暗号化されてもよい。前記ハンドシェイクヘッダが受信側コンピュータ106によって理解された場合(例えば、送信側コンピュータ104及び受信側コンピュータ106で用意されたパッド)、受信側コンピュータ106は、リプライとして、情報をセキュアに伝達するようデータパケットを生成するために、及び/又はデータパケットから情報の部分を取得するようデータパケットを処理するために用いられるべき確立した関係によって定義された事前設定されたポリシーの一つを規定するメッセージを送信してもよい。
一部の実施形態において、前記第一のデータパケットが送信される前に受信側コンピュータ106に送信されたデータパケットを処理するために、送信側コンピュータ104は、受信側コンピュータ106の失敗に基づいてリセットリクエスト(reset requsest)を受信してもよい。例えば、前記第一のハンドシェイクリクエストは、前記リセットリクエストに基づいて生成されてもよい。受信側コンピュータ106から受信した前記第一のレスポンスは、前記第一のヘッダに対する前記第一のデータパケット内の第一の位置を規定してもよい。前記第一のデータパケットが、前記第一のデータパケットを、前記第一のデータパケット内の前記第一の位置で含むように、前記第一のデータパケットは、生成されてもよい。一例として、受信側コンピュータ106が、後続のヘッダの位置を見失い、ヘッダを解読できず、あるいは送信側コンピュータ104から送信されたデータパケットを適切に処理できなかった場合、後続のデータパケットヘッダを暗号化するのに用いられた暗号化スキーム、次のデータパケットヘッダの開始位置、データパケットを生成/処理するために用いられたポリシー、又は他の情報を決定するよう、該二つのコンピュータ間のハンドシェイクを開始するため、受信側コンピュータ106は、送信側コンピュータ104にリセットリクエストを送信してもよい。
ある実施形態において、送信側コンピュータ104は、前記第三の暗号化スキーム(前記第一のヘッダの生成が基づくもの)と異なる第四の暗号化スキームに基づき、第一のハンドシェイクリクエストを生成するようプログラムされてもよい。前記第一のハンドシェイクリクエストは、受信側コンピュータに送信されてもよい。送信側コンピュータ104は、受信側コンピュータ106から第一のレスポンスを受信してもよい。前記第一のレスポンスは、前記第三の暗号化スキームの使用を規定してもよい。例えば、前記第一のレスポンスは、ヘッダインデックスを規定することで、前記第三の暗号化スキームの使用を規定してもよい。前記第三の暗号化スキームに対応する前記ヘッダインデックスに基づいて、送信側コンピュータ104は、前記第三の暗号化スキームを用いて第二のハンドシェイクリクエストを生成してもよい。前記第二のハンドシェイクリクエストは、受信側コンピュータ106に送信されてもよい。第二のレスポンスは、前記第二のコンピュータシステムから受信してもよい。例えば、前記第二のレスポンスは、ヘッダを暗号化することに対し、前記第三の暗号化スキームの使用を確認してもよい。前記第三の暗号化スキームは、前記第三の暗号化スキームの使用を確認する前記第二のレスポンスに基づいて前記第一のヘッダを暗号化するために用いられてもよい。
一部の実施形態においては、上述のとおり、送信側コンピュータ104は、送信側コンピュータ104が受信側コンピュータ106に情報をセキュアに送信するため、前記受信側コンピュータ106と通信セッションを開始して最初に、ハンドシェイクヘッダとともにハンドシェイクパケットを送信してもよい。前記ハンドシェイクヘッダは、該二つのコンピュータ間で確立された関係がインデックス0と定義する第一のパッドを用いて暗号化され得る。前記ハンドシェイクヘッダが受信側コンピュータ106によって理解された場合(例えば、用意されたパッド)、受信側コンピュータ106は、リプライとして、情報をセキュアに伝達するようデータパケットを生成するために、及び/又はデータパケットから情報の部分を取得するようデータパケットを処理するために用いられるべき確立した関係によって定義された事前設定されたポリシーの一つを規定するメッセージを送信してもよい。
他方、(例えば、パッドのミスアラインメント(missalignment)又は他の理由により)受信側コンピュータ106が該ヘッダを読めない場合、受信側コンピュータ106は、送信側コンピュータ104に、次に用いられるパッドファイルのインデックスを送信してもよい。その後、送信側コンピュータ104は、前記インデックスに対応するパッドを用いて暗号化されたハンドシェイクヘッダとともにハンドシェイクパケットを送信することで、通信セッションを再度開始してもよい。一部の実施形態において、該二つのコンピュータの関係は、ハンドシェイクの試行(attempt)が所定回数失敗した場合、未来の接続の試行を破棄するよう、無効としてマークされてもよい。
様々な実施形態において、送信側コンピュータ104は、少なくとも前記第一の情報の第二の部分を表す第三のデータスライス、少なくとも前記第二の情報の第二の部分を表す第四のデータスライス、又は他のデータスライスを生成するようプログラムされてもよい。送信側コンピュータ104は、前記第二のヘッダ、前記第三のデータスライス、前記第四のデータスライス、又は他のデータパケットの要素を含む第二のデータパケットを生成するようプログラムされてもよい。その後、前記第二のデータパケットは、適切な受信側コンピュータに対して送信されてもよい(例えば、受信側コンピュータ106、又は他の受信側コンピュータ)。
一の実施形態において、前記第三のデータスライスは、前記第一の暗号化スキームに基づき生成されてもよい。前記第四のデータスライスは、前記第二の暗号化スキームに基づき生成されてもよい。前記第三のデータスライスのための前記第一の暗号化スキーム、前記第四のデータスライスのための前期第二の暗号化スキーム、又は他の情報を前記第二のヘッダが規定できるように、送信側コンピュータ104が前記第二のヘッダを生成するようプログラムされてもよい。
一部の実施形態において、前記第三のデータスライスは、前記第一の暗号化スキームとは異なる暗号化スキームに基づき生成されてもよい。前記第四のデータスライスは、前記第二の暗号化スキームとは異なる暗号化スキームに基づき生成されてもよい。前記第三のデータスライスのための前記第一の暗号化スキームとは異なる暗号化スキーム、前記第四のデータスライスのための前期第二の暗号化スキームとは異なる暗号化スキーム、又は他の情報を、前記第二のヘッダが、規定できるように、送信側コンピュータ104が、前記第二のヘッダを生成するようプログラムされてもよい。
一部の実施形態において、前記第一のヘッダは、前記第一のデータパケット内の第一の位置に位置してもよい。前記第一のヘッダは、前記第二のヘッダに対して、前記第二のデータパケット内の第二の位置を規定してもよい。前記第二のデータパケットは、前記第二のデータパケットが前記第二のデータパケットを前記第一のヘッダで規定される前記第二のデータパケット内の前記第二の位置で含むように生成されてもよい。前記第二のヘッダは、前記第二のデータパケット内の前記第三のデータスライスの位置、前記第二のデータパケット内の前記第四のデータスライスの位置、又は他の情報を規定してもよい。このように、ヘッダの位置は、一つのデータパケットと次のデータパケットで異なり得るので、データスライスを暗号化するのに用いられた暗号化スキーム、及び暗号化スキームが適用された対応するデータスライスを特定することは、送信側コンピュータ104及び受信側コンピュータ106間の確立した関係の外にあるコンポーネントにとって、不可能ではないものの、大変困難である。
ある実施形態において、前記第一のデータパケット又は前記第二のデータパケットは、第一のセッションの間に生成され、又は送信されてもよい。前記第二のヘッダは、前記第三のヘッダに対して、前記第三のデータパケット内の第三の位置を規定してもよい。送信側コンピュータ104は、前記第一のセッションと異なる第二のセッションの間、前記第一の送信側コンポーネントに関連付けられた、送信される第三の情報を受信するようプログラムされてもよい。送信側コンピュータ104は、少なくとも前記第三の情報の一部を表す第五のデータスライスを生成するようプログラムされてもよい。送信側コンピュータ104は、前記第三のデータパケットが、前記第三のヘッダ及び前記第五のデータスライスを含むように前記第三のデータパケットを生成するようプログラムされてもよい。その後、前記第三のデータパケットは、前記第二のセッションの間に、適切な受信側コンピュータに対して送信されてもよい(例えば、受信側コンピュータ106、又は他の受信側コンピュータ)。このように、一部の実施形態において、データパケットは、次のデータパケットが、後続の通信セッションまで生成されないとしても、確立した関係を介して、次の(あるいは、後続の)データパケット中のヘッダの位置を規定する。
一の実施形態において、前記第五のデータスライスは、前記第一の暗号化スキームに基づき生成されてもよい。前記第三のヘッダが、前記第五のデータスライスに対する前記第一の暗号化スキームを規定するように、送信側コンピュータ104は、前記第三のデータパケットを生成するようプログラムされてもよい。
一部の実施形態において、前記第五のデータスライスは、前記第一の暗号化スキームとは異なる暗号化スキームに基づき生成されてもよい。前記第三のヘッダが、前記第一の暗号化スキームと異なる暗号化スキームを規定するように、送信側コンピュータ104は、前記第三のヘッダを生成するようプログラムされてもよい。
様々な実施形態において、第一のポリシー、第二のポリシー、又は他のポリシーは、送信側コンピュータ104に、又は送信側コンピュータ104と関連付けられて保存されてもよい。前記第一のポリシーを規定することで、前記第一のヘッダは、前記第一のデータスライスに対する前記第一の暗号化スキーム、及び前記第二のデータスライスに対する前記第二の暗号化スキームを規定してもよい。
一部の実施形態において、議論したように、特定のポリシーに対する例ポリシー(example policy)の定義は、{"Policy":{"Index":0, "Name":"Standard ODEP", "SliceSizes":128, 512, 32, 32, 128, 384, 268, 24, "TrafficModel":2, "DataTypes":{0:"rand", 1:"otp", 2:"des", 3:"aes256"}}である。データパケットヘッダは、ポリシーインデックス(policy index)0を規定することで、データパケットを翻訳するために用いられるべき例ポリシーを規定し得る。ポリシーインデックス0が規定された場合、暗号化スキームは、ポリシーインデックス0に対応するポリシーの暗号化スキームインデックスを用いて、データスライスに対して暗号化スキームが規定されうる(例えば、OTPに対してインデックス1、DESに対してインデックス2、AES256に対してインデックス3等)。
一部の実施形態において、送信側コンピュータ104は、受信側コンピュータ106から第二のデータパケットを受信するようプログラムされてもよい。前記第二のデータパケットは、第二のヘッダ、第三のデータスライス、又は他のデータパケットの要素を含んでもよい。前記第三のデータスライスは、第三の情報の位置を表してもよい。前記第二のヘッダは、前記第二のポリシーを規定してもよい。送信側コンピュータ104は、前記第一の暗号化スキームを、前記第二のポリシーを規定する前記第二のヘッダに基づいて前記第三のデータスライスを暗号化するために用いられる暗号化スキームとして特定してもよい。送信側コンピュータ104は、前記第三の情報の一部を取得するため、前記第一の暗号化スキームに基づいて、前記第三のデータスライスを処理するようプログラムされてもよい。このように、一部の実施形態において、異なるポリシーによって規定される暗号化スキームは、それにもかかわらず、重なってもよい。
一部の実施形態においては、上述のとおり、ポリシー又は他のポリシーに関連する情報は、所定の送信側コンピュータ及び所定の受信側コンピュータ間で確立されたユニークな関係によって定義されてもよい。一例として、データパケットヘッダによって規定されるポリシーインデックスに対応するポリシーは、前記ユニークな関係を共有する送信側側コンピュータ及び受信側コンピュータによってのみ知られてもよい。他の一例として、所定の送信側コンピュータは、前記送信側コンピュータから所定の受信側コンピュータへのセキュアな送信のため、前記受信側コンピュータとの第一の関係を有してもよく、及び前記受信側コンピュータから前記第二のコンピュータにおいて受信されるデータパケットを処理するため、第二の関係を有してもよい。例えば、それぞれの関係は、該関係に利用可能な異なるポリシー又は他のデータパケットに関連する情報を定義してもよい。
一の実施形態において、前記第一のポリシーは、第一の暗号化スキームインデックスの前記第一の暗号化スキームとの関連性、第二の暗号化スキームインデックスの前記第二の暗号化スキームとの関連性、又は他の関連性を規定し得る。前記第二のポリシーは、第三の暗号化スキームインデックスの前記第一の暗号化スキームとの関連性、又は他の関連性を規定し得る。前記第一のポリシー、前記第一のデータスライスに対する前記第一の暗号化スキームインデックス、及び前記第二のデータスライスに対する前記第二の暗号化スキームインデックスを規定することで、前記第一のヘッダは、前記第一のデータスライスに対する前記第一の暗号化スキーム、及び前記第二のデータスライスに対する前記第二の暗号化スキームを規定してもよい。前記第三のデータスライスに対する前記第三の暗号化スキームインデックス及び前記第二のポリシーを規定することで、前記第二のヘッダは、前記第三のデータスライスに対する前記第一の暗号化スキームを規定し得る。前記第三のデータスライスに対する前記第三の暗号化スキーム、及び前記第二のポリシーを規定する前記第二のヘッダに基づいて、前記第一の暗号化スキームは、前記第三のデータスライスを暗号化するために用いられる暗号化スキームとして特定されてもよい。
ある実施形態において、受信側コンピュータ106は、異なる暗号化スキームを用いて暗号化された異なる情報に関連付けられたデータスライスを備えるデータパケットを処理するようプログラムされてもよい。受信側コンピュータ106は、第一のヘッダ、少なくとも第一の情報の一部を表す第一のデータスライス、少なくとも第二の情報の一部を表す第二のデータスライス、又は他のデータパケットの要素を含む第一のデータパケットを受信するようプログラムされてもよい。前記第一の通信は、第一の送信側コンポーネントと関連付けられてもよい。前記第二の通信は、前記第一の送信側コンポーネントと異なる第二の送信側コンポーネントと関連付けられてもよい。例えば、受信側コンポーネントは、受信側コンピュータ106の外部のコンポーネント、受信側コンピュータ106内で実行されるコンポーネント(例えば、送信側コンピュータ104で実行される、バーチャルマシン、アプリケーション、又は他のコンポーネント)、又は他のコンポーネントを含んでもよい。
受信側コンピュータ106は、前記第一のデータスライスを暗号化するために用いられる暗号化スキームとして第一の暗号化スキームを、第二のデータスライスを暗号化するために用いられる暗号化スキームとして第二の暗号化スキームを、又は他の情報を、前記第一のヘッダに基づいて特定するようプログラムされてもよい。一例として、前記第一の暗号化スキームを用いて前記第一のデータスライスを暗号化することは、第一の暗号化の種類、又は第一の暗号キーを用いて前記第一の情報の部分を暗号化することを含み得る。前記第二の暗号化スキームを用いた前記第二のデータスライスの暗号化は、前記第一の暗号化の種類又は前記第一の暗号キーとそれぞれ異なる第二の暗号の種類又は第二の暗号キーを用いて前記第二の情報の一部を暗号化することを含む。議論されたとおり、暗号化の種類の例は、OTP、DES、AES、又は他の暗号化の種類を含んでもよい。
受信側コンピュータ106は、前記第一の情報の部分を取得するため前記第一の暗号化スキームに基づき前記第一のデータスライスを処理するよう、及び前記第二の情報の部分を取得するため前記第二の暗号化スキームに基づき前記第二のデータスライスを処理するようプログラムされてもよい。
一部の実施形態において、受信側コンピュータ106は、第二のヘッダ、少なくとも前記第一の情報の第二の部分を表す第三のデータスライス、少なくとも前記第二の情報の第二の部分を表す第四のデータスライス、又は他のデータパケットの要素を含む第二のデータパケットを受信するようプログラムされてもよい。受信側コンピュータ106は、前記第三のデータスライスを暗号化するために用いられる暗号化スキームとして前記第一の暗号化スキームを、第四のデータスライスを暗号化するために用いられる暗号化スキームとして前記第二の暗号化スキームを、又は他の情報を、前記第二のヘッダに基づいて特定するようプログラムされてもよい。受信側コンピュータ106は、前記第一の情報の前記第二の部分を取得するため前記第一の暗号化スキームに基づき前記第三のデータスライスを処理するよう、及び前記第二の情報の前記第二の部分を取得するため前記第二の暗号化スキームに基づき前記第四のデータスライスを処理するようプログラムされてもよい。
受信側コンピュータ106は、第一の受信側コンポーネントに対して前記第一の情報を形成するため前記第一の情報の部分と前記第一の情報の第二の部分をを組合わせるように、及び第二の受信側コンポーネントに対し、前記第二の情報を形成するため前記第二の情報の部分と前記第二の情報の第二の部分とを組み合わせるようにプログラムされてもよい。
例えば、図5に関し、受信側コンピュータ106によって受信されるデータパケット508a〜508nは、、(i) ヘッダ510a、部分502a、504a、及び506a、又は他のデータパケットの要素を有するデータパケット508a、(ii) ヘッダ510b、部分502b、504b、及び506b、又は他のデータパケットの要素をを有するデータパケット508b、(iii) 以下同様、を含んでもよい。ヘッダ510aは、部分502a、504a、及び506aを表す前記データスライスを暗号化するのに用いられた暗号化スキームを規定してもよい。ヘッダ510bは、部分502b、504b、及び506bを表す前記データスライスを暗号化するのに用いられた暗号化スキームを規定してもよい。
情報502、504、及び506を形成するため、及び情報502、504、及び506を、それぞれの受信側コンポーネント110a、110bm及び110cに提供するために、受信側コンピュータ106は、データパケット508a〜508nを処理してもよい。一例として、部分502a〜502nを表すデータスライスを暗号化するために用いられた前記暗号化スキーム、部分504a〜504nを表すデータスライスを暗号化するために用いられた暗号化スキーム、及び部分506a〜506nを表すデータスライスを暗号化するために用いられた暗号化スキームを特定するため、受信側コンピュータ106は、ヘッダ510a〜510nを処理する。部分502a〜502n、504a〜504n、及び506a〜506nを取得するため、該特定された暗号化スキームを用いて、前記データスライスは、解読される。その後、該対応する部分は、情報502、504、及び506を形成するために組合わされる。
一の実施形態において、前記第一のヘッダは、前記第一のデータパケット内の第一の位置に位置してもよい。前記第一のヘッダは、前記第二のヘッダに対して、前記第二のデータパケット内の第二の位置を規定してもよい。前記第二のデータパケットが、前記第二のデータパケットを、前記第一のヘッダで規定される前記第二のデータパケット内の前記第二の位置で含んでもよい。このように、ヘッダの位置は、一つのデータパケットと次のデータパケットで異なり得るので、データスライスを暗号化するのに用いられた暗号化スキーム、及び暗号化スキームが適用された対応するデータスライスを特定することは、送信側コンピュータ104及び受信側コンピュータ106間の確立した関係の外にあるコンポーネントにとって、不可能ではないものの、大変困難である。
一部の実施形態において、前記第一のデータパケット及び/又は前記第二のデータパケットは、ランダムに生成されたフィラーデータを含んでもよい。上述のとおり、他の利点とともに、情報の部分を実際に表しているデータに対するカモフラージュの他の一つのレイヤを提供するために、ランダムに生成されたフィラーデータは、データパケット内でインターリーブされてもよい。前記ランダムに生成されたフィラーデータを含む前記データスライスが、情報の部分を表さない事実を、意図しない受信側にさらに隠すための暗号化スキームを用いて、前記ランダムに生成されたフィラーデータを含む前記データスライスは、暗号化されてもよい。付加的に又は代替的に、情報の部分を表すデータスライスの開始位置及び終端位置を隠すため、ランダムに生成されたフィラーデータを含むデータスライスのサイズは、データパケット内で異なっていてもよい。
図5に関して図示されたとおり、データパケット508a〜508nそれぞれが、ランダムに生成されたフィラーデータ512を含むデータスライスを含んでもよい。データパケット508a〜508nが、受信側コンピュータ106によって受信された場合、ランダムに生成されたフィラーデータ(情報の部分とは反対に)は、無視されてもよい。例えば、情報の部分を表す前記データスライスの前記開始位置及び終端位置は、特定されてもよい。情報の部分を表すデータスライスは、ランダムに生成されたフィラーデータを含むデータスライスをそのままにして、抽出(extract)されてもよい。その後、情報の部分は、該抽出されたデータスライスを解読することで、情報の部分は取得されてもよい。
様々な実施形態において、受信側コンピュータ106は、前記第一のデータスライスを暗号化するために用いられる暗号化スキームとして前記第一の暗号化スキーム、第二のデータスライスを暗号化するために用いられる暗号化スキームとして前記第二の暗号化スキーム、又はこれら以外のヘッダ情報を特定するために、第三の暗号化スキームを用いて前記第一のヘッダを処理するようにプログラムされてもよい。前記第三の暗号化スキームは、前記第一の暗号化スキーム又は前記第二の暗号化スキームと同一でもよく、又は前記第一の暗号化スキーム及び前記第二の暗号化スキームの両方とから異なっていてもよい。一の実施形態において、特定のパッドが、前記データパケットヘッダ600(図6に図示)を暗号化するために用いられる。例えば、データパケットヘッダ600を暗号化するのに用いられるパッドは、所定の送信側コンピュータ及び所定の受信側コンピュータ間のユニークな関係の一部として事前設定されたパッド集のうちの一つであってもよい。
図5に戻り、一部の実施形態において、前記第一のデータパケットが、送信側コンピュータ104から受信されてもよい。受信側コンピュータ106は、送信側コンピュータ104から第一のハンドシェイクリクエストを受信してもよい。前記第一のハンドシェイクリクエストは、前記第三の暗号化スキームに基づき生成されてもよい。受信側コンピュータ106は、ヘッダの生成に対し、前記第三の暗号化スキームを用いることを確認する第一のレスポンスを生成するようプログラムされてもよい。前記第一のレスポンスは、送信側コンピュータ104に送信されてもよい。例えば、前記第一のヘッダは、前記第一のレスポンスに基づいて前記第三の暗号化スキームを用いて生成されてもよい。
一部の実施形態において、議論されたとおり、送信側コンピュータ104が、受信側コンピュータ106に情報をセキュアに送信するため、前記受信側コンピュータ106と通信セッションを開始して最初に、送信側コンピュータ104は、ハンドシェイクヘッダとともにハンドシェイクパケットを送信してもよい。前記ハンドシェイクヘッダは、該二つのコンピュータ間で確立された関係がインデックス0と定義する第一のパッドを用いて暗号化されてもよい。前記ハンドシェイクヘッダが、受信側コンピュータ106によって理解された場合(例えば、用意されたパッド)、受信側コンピュータ106は、リプライとして、情報をセキュアに伝達するようデータパケットを生成するために、及び/又はデータパケットから情報の部分を取得するようデータパケットを処理するために用いられるべき確立した関係によって定義された事前設定されたポリシーの一つを規定するメッセージを送信してもよい。
一の実施形態において、受信側コンピュータ106は、前記第一のパケットが受信される前に受信したデータパケットの処理に失敗したことに基づき、リセットリクエストを生成するようプログラムされてもよい。前記リセットリクエストは、送信側コンピュータ104に送信されてもよい。前記第一のハンドシェイクリクエストは、れセットリクエストの伝達に基づいて送信側コンピュータ104から受信されてもよい。送信側コンピュータ104へ送信された前記第一のレスポンスは、前記第一のヘッダに対する前記第一のデータパケット内の第一の位置を規定してもよい。前記第一のデータパケットが、前記第一のデータパケットを、前記第一のデータパケット内の前記第一の位置で含むように、前記第一のデータパケットは、生成されてもよい。例として、受信側コンピュータ106が、後続のヘッダの位置を見失い、ヘッダを解読できず、あるいは送信側コンピュータ104から送信されたデータパケットを適切に処理できなかった場合、後続のデータパケットヘッダを暗号化するのに用いられた暗号化スキーム、次のデータパケットヘッダの開始位置、データパケットを生成/処理するために用いられたポリシー、又は他の情報を決定するよう、該二つのコンピュータ間のハンドシェイクを開始するため、受信側コンピュータ106は、送信側コンピュータ104にリセットリクエストを送信してもよい。
ある実施形態において、送信側コンピュータ104は、他のデータパケットに関してあるデータパケット内の異なる位置から始まるヘッダを有するデータパケットを用いて情報をセキュア化するようプログラムされてもよい。例として、送信側コンピュータ104は伝達されるべき第一の情報を受信するようプログラムされてもよい。前記第一の情報は、第一の送信側コンポーネントと関連付けられてもよい。
送信側コンピュータ104は、少なくとも前記第一の情報の第一の部分を表す第一のデータスライス、少なくとも前記第一の情報の第二の部分を表す第二のデータスライス、又は他のデータスライスを生成するようプログラムされてもよい。送信側コンピュータ104は、前記第一のヘッダ、前記第一のデータスライス、又は他のデータパケットの要素を含む第一のデータパケットを生成するようプログラムされてもよい。前記第一のデータパケットは、前記第一のヘッダが前記第一のデータパケット内の第一の位置に位置するよう生成されてもよい。前記第一のデータパケットは、前記第一のヘッダが第二のヘッダに対する第二のデータパケット内の第二の位置を規定するよう生成されてもよい。送信側コンピュータ104は、前記第二のデータパケットが前記第二のヘッダ、前記第二のデータスライス、又は他のデータパケットの要素を含むような前記第二のデータパケットを生成するようプログラムされてもよい。前記第二のヘデータパケットは、前記第二のヘッダが前記第一のヘッダで規定される前記第二のデータパケット内の前記第二の位置に位置するように生成されてもよい。その後、前記第一のデータパケット及び前記第二のデータパケットは、適切な受信側コンピュータに対して送信されてもよい(例えば、受信側コンピュータ106、又は他の受信側コンピュータ)。このように、ヘッダの位置は、一つのデータパケットと次のデータパケットで異なり得るので、データスライスを暗号化するのに用いられた暗号化スキーム及び暗号化スキームが適用された対応するデータスライスを特定することは、送信側コンピュータ104及び受信側コンピュータ106間の確立した関係の外にあるコンポーネントにとって、不可能ではないものの、大変困難である。
一部の実施形態において、送信側コンピュータ104は、第一の暗号化スキームに基づいて前記第一のヘッダを生成するように、また、第一の暗号化スキームに基づいて前記第二のヘッダを生成するようプログラムされてもよい。前記第一のデータスライス及び前記第二のデータスライスは、それぞれ前記第一の暗号化スキームとは異なる第二の暗号化スキームに基づき生成されてもよい。
一の実施形態において、前記第一の情報は、第一のセッションの間に受信されてもよい。前記第二のヘッダは、前記第三のヘッダに対して前記第三のデータパケット内の第三の位置を規定してもよい。送信側コンピュータ104は、前記第一のセッションとは異なる第二のセッションの間に第二の情報を受信するようプログラムされてもよい。送信側コンピュータ104は、少なくとも前記第二の情報の一部を表す第三のデータスライスを生成するようプログラムされてもよい。送信側コンピュータ104は、前記第三のデータパケットが前記第三のヘッダ、前記第三のデータスライス、又は他のデータパケットの要素を含むような前記第三のデータパケットを生成するようプログラムされてもよい。前記第三のデータパケットは、前記第三のヘッダが前記第二のヘッダで規定される前記第三のデータパケット内の前記第三の位置に位置するように生成されてもよい。前記第三のデータパケットは、適切な受信側コンピュータに対して送信されてもよい(例えば、受信側コンピュータ106、又は他の受信側コンピュータ)。このように、一部の実施形態において、データパケットは、次のデータパケットが、後続の通信セッションまで生成されないとしても、確立した関係を介して、次の(あるいは、後続の)データパケット中のヘッダの位置を規定する。
ある実施形態において、受信側コンピュータ106は、データパケット内の他のデータパケットとは異なる位置から始まるヘッダを有するデータパケットを処理するようプログラムされてもよい。例として、受信側コンピュータ106は、第一のデータパケット、第二のデータパケット、又は他のデータパケットを受信するようプログラムされてもよい。前記第一のデータパケットは、第一のヘッダ、第一の情報の第一の部分を表す第一のデータスライス、又は他のデータパケットの要素を含んでもよい。前記第二のデータパケットは、第二のヘッダ、前記第一の情報の第二の部分を表す第二のデータスライス、又は他のデータパケットの要素を含んでもよい。
受信側コンピュータ106は、前記第一のデータパケット内の第一の位置おける前記第一のヘッダを特定するようプログラムされてもよい。受信側コンピュータ106は、前記第二のヘッダの前記第二の位置を規定する前記第一のヘッダに基づいて、前記第二のデータパケット内の第二の位置における前記第二ヘッダを特定するようプログラムされてもよい。受信側コンピュータ106は、前記第一のヘッダに基づいて前記第一のデータパケット内の前記第一のデータスライスを特定し、また、前記第二のヘッダに基づいて前記第二のデータパケット内の前記第二のデータスライスを特定するようプログラムされてもよい。
受信側コンピュータ106は、前記第一の情報の前記第一の部分を取得するために前記第一のデータスライスを処理するよう、また、前記第一の情報の前記第二の部分を取得するために前記第二のデータスライスを処理するようプログラムされてもよい。受信側コンピュータ106は、前記第一の情報を形成するため、前記第一の情報の前記第二の部分及び前記第一の情報の前記第一の部分を組合わせるようプログラムされてもよい。
一部の実施形態において、前記第一のヘッダを暗号化するために用いられる第一の暗号化スキームを特定するようプログラムされてもよい。受信側コンピュータ106は、前記第一のデータスライスを暗号化するために用いられる第二の暗号化スキームを特定するため前記第一の暗号化スキームを用いて前記第一のヘッダを処理するようプログラムされてもよい。前記第二の暗号化スキームは、前記第一の暗号化スキームと異なってもよい。前記第一のデータスライスは、前記第一の情報の前記第一の部分を取得するため、前記第二の暗号化スキームを用いて処理されてもよい。前記第二のデータスライスは、前記第一の情報の前記第二の部分を取得するため、前記第二の暗号化スキームを用いて処理されてもよい。
図7は、本発明の一実施形態において、ランタイム環境で実行しているソフトウェアコンポーネントを対応する既知の良好なソフトウェアと置換する方法のフローチャートを例示する図である。以下で説明する方法700の工程は、説明のためのものに過ぎない。一部の実施形態において、方法700は、説明されていない一又は複数の追加的な工程を備えて実現されてもよく、及び/又は説明する工程の一又は複数を省略して実現されてもよい。また、図7に示されて以下で説明される方法700の工程の順序は限定するよう意図されていない。
一部の実施形態において、方法700は、一又は複数の処理装置(例えば、デジタルプロセッサ、アナログプロセッサ、情報処理用のデジタル回路、情報処理用のアナログ回路、ステートマシン、及び/又は電子的に情報を処理する前記以外のメカニズム)において実行されてもよい。この一又は複数の処理装置には、電子ストレージメディアに電子的に格納された命令に応答して、方法700の工程の一部又は全部を実行する一又は複数の装置を備えてもよい。この一又は複数の処理装置には、方法700の段階の一又は複数を実行するために設計されたハードウェア、ファームウェア、及び/又はソフトウェアで構成された一又は複数の装置が含まれる。
工程702において、少なくとも前記ランタイム環境で実行されている少なくとも第一のソフトウェアコンポーネントを示す第一のイベントが置換されるべきか否かが決定されてもよい。例えば、前記第一のイベントは、前記第一のソフトウェアコンポーネントが侵入されたか、又は潜在的に侵入され得たのかと無関係に決定されてもよい。一部の実施形態において、前記第一のイベントには、一又は複数の置換時間間隔の経過、使用閾値に到達した又はを超えた前記第一のソフトウェアコンポーネントの使用回数、前記第一のソフトウェアのアップデートバージョンの使用可能性、及び/又は他のイベントが含まれてもよい。一又は複数の実施形態において、工程702は、コンポーネントマネージャサブシステム112と同一の、又は類似するコンポーネントマネージャサブシステムによって行われてもよい。
工程704において、少なくとも前記第一のソフトウェアコンポーネントと対応する第二のソフトウェアコンポーネントが、前記ランタイム環境と区別された(別個の、separate)コンポーネントレポジトリから取得されてもよい。一又は複数の実施形態において、工程704は、コンポーネントマネージャサブシステム112と同一の、又は類似するコンポーネントマネージャサブシステムによって行われてもよい。
工程706において、前記第二のソフトウェアコンポーネントに関連付けられた完全性の情報が、取得されてもよい。一又は複数の実施形態において、工程706は、コンポーネントマネージャサブシステム112と同一の又は類似するコンポーネントマネージャサブシステムによって行われてもよい。
工程708において、前記第二のソフトウェアコンポーネントは、前記完全性の情報に基づいて検証されてもよい。一又は複数の実施形態において、工程708は、コンポーネントマネージャサブシステム112と同一の又は類似するコンポーネントマネージャサブシステムによって行われてもよい。
工程710において、前記第二のソフトウェアコンポーネントは、前記ランタイム環境でインスタンス化されてもよい。前記第二のソフトウェアコンポーネントが、前記ランタイム環境において利用可能とならないよう、前記第二のソフトウェアコンポーネントは、不活性パスにおいてインスタンス化されてもよい。一部の実施形態において、前記第二のソフトウェアコンポーネントは、前記完全性の情報を介して検証された前記第二のソフトウェアコンポーネントに基づいてインスタンス化されてもよい。一又は複数の実施形態において、工程710は、コンポーネントマネージャサブシステム112と同一の、又は類似するコンポーネントマネージャサブシステムによって行われてもよい。
工程712において、前記第一のソフトウェアコンポーネントは、前記第一のイベント(少なくとも第一のソフトウェアコンポーネントが置換されるべきであることを示す)に基づいて、前記第二のソフトウェアコンポーネントと置換されてもよい。一又は複数の実施形態において、工程712は、コンポーネントマネージャサブシステム112と同一の又は類似するコンポーネントマネージャサブシステムによって行われてもよい。
ある実施形態において、工程712に関し、前記第一のイベントは、一又は複数の置換時間間隔の経過、使用閾値に到達した又はを超えた前記第一のソフトウェアコンポーネントの使用回数、前記第一のソフトウェアコンポーネントのアップデートバージョンの利用可能性、又はたの条件を含んでもよい。一例として、前記第一のソフトウェアコンポーネントは、前記一又は複数の置換時間間隔の経過後に置換されてもよい。前記第二のソフトウェアコンポーネントは、前記一又は複数の置換時間間隔の第二の経過後に置換されてもよい。他の一の実施形態において、前記第一のソフトウェアコンポーネントは、前記使用閾値に到達した又はを超えた前記第一のソフトウェアコンポーネントの使用回数に基づいて置換されてもよい。他の一の実施形態において、前記第一のソフトウェアコンポーネントは、前記第一のソフトウェアコンポーネントの利用可能なアップデートバージョンに基づいて置換されてもよい。前記第二のソフトウェアコンポーネントはアップデートバージョンを含んでもよい。
様々な実施形態において、工程712に関し、前記第一のソフトウェアコンポーネントの前記第二のソフトウェアコンポーネントとの該置換には、前記第二のソフトウェアコンポーネントが前記ランタイム環境で利用可能であるように活性パスに前記第二のソフトウェアコンポーネントを配置することが含まれてもよい。一の実施形態において、前記第一のソフトウェアコンポーネント及び前記第二のソフトウェアコンポーネントは、それぞれバーチャルマシンを含み、前記活性パスに前記第二のソフトウェアコンポーネントを配置することには、前記第二のソフトウェアコンポーネントが前記ランタイム環境で使用可能となるよう前記第二のソフトウェアコンポーネントに関連付けられたネットワーク設定をアップデートすることが含まれてもよい。他の一の実施形態において、前記第一のソフトウェアコンポーネント及び前記第二のソフトウェアコンポーネントは、それぞれオペレーティングシステムの処理を含み、前記活性パスに前記第二のソフトウェアコンポーネントを配置することには、プロセス間通信の設定を介して前記第二のソフトウェアコンポーネントを活性パスに移動させることが含まれる。他の一の実施形態において、前記第一のソフトウェアコンポーネント及び前記第二のソフトウェアコンポーネントは、それぞれ実行コードを含み、前記活性パスに前記第二のソフトウェアコンポーネントを配置することには、前記第二のソフトウェアコンポーネントに関連付けられたメモリアドレスポインタ又はルックアップテーブルを更新することが含まれてもよい。
一部の実施形態において、工程712に関し、前記第一のソフトウェアコンポーネントの前記第二のソフトウェアコンポーネントとの該置換は、前記第一のソフトウェアコンポーネントを前記活性パスの外に移動させることが含まれてもよい。一の実施形態において、前記第一のソフトウェアコンポーネントは、前記第二のソフトウェアコンポーネントが前記活性パスに配置された後に、前記活性パスから移動させられる。
工程714において、前記第一のソフトウェアコンポーネントは、前記第一のソフトウェアコンポーネントが置換された後に、分析されてもよい。一又は複数の実施形態において、工程714は、コンポーネント分析サブシステム116と同一の、又は類似するコンポーネント分析サブシステムによって行われてもよい。
工程716において、前記第一のソフトウェアコンポーネントが侵入されたか、及び/又はどのように侵入されたかの決定が実行される。例えば、前記第一のソフトウェアコンポーネントが侵入されたか及び/又はどのように侵入されたかは、前記第一のソフトウェアコンポーネントの分析に基づいて実行される。一又は複数の実施形態において、工程716は、コンポーネントマネージャサブシステム112と同一の又は類似するコンポーネントマネージャサブシステムによって行われてもよい。
図8は、本発明の一実施形態における、ソフトウェアコンポーネントにおける、不正使用可能な又は潜在的に不正使用可能なサブコンポーネントを制限する方法のフローチャートを例示する図である。以下で説明する方法800の工程は、説明のためのものに過ぎない。一部の実施形態において、方法800は、説明されていない一又は複数の追加的な工程を備えて実現されてもよく、説明する工程の一又は複数を省略して実現されてもよい。また、図8に示されて以下で説明される方法800の工程の順序は、限定するよう意図されていない。
一部の実施形態において、方法800は、一又は複数の処理装置(例えば、デジタルプロセッサ、アナログプロセッサ、情報処理用のデジタル回路、情報処理用のアナログ回路、ステートマシン、及び/又は電子的に情報を処理する前記以外のメカニズム)において実行され得る。この一又は複数の処理装置には、電子ストレージメディアに電子的に格納された命令に応答して、方法800の工程の一部又は全部を実行する一又は複数の装置を備えてもよい。この一又は複数の処理装置には、方法800の工程の一又は複数を実行するために設計されたハードウェア、ファームウェア、及び/又はソフトウェアで構成された一又は複数の装置が含まれる。
工程802において、少なくともコンポーネント生成環境における第一のソフトウェアコンポーネントが特定されてもよい。前記第一のソフトウェアコンポーネントは、前記第一のソフトウェアコンポーネントに侵入して不正使用可能又は潜在的に不正使用可能な機能を提供する第一のサブコンポーネントを含む。前記第一のソフトウェアコンポーネントは、前記第一のソフトウェアコンポーネントに侵入するため、不正使用されうる又は潜在的に不正使用されうる第二のサブコンポーネントをさらに含んでもよい。一又は複数の実施形態において、工程802は、コンポーネントシーリングサブシステム304と同一の又は類似するコンポーネントシーリングサブシステムによって行われてもよい。
工程804において、前記第一のソフトウェアコンポーネントの前記第一のサブコンポーネントが規定されてもよい。一部の実施形態において、前記第一のサブコンポーネントによって提供される前記機能は、前記第一のソフトウェアコンポーネントを維持するために用いられる管理者機能又はメンテナンス機能を含みうる。前記第一のサブコンポーネントは、前記第一のサブコンポーネントにより提供される前記管理者機能又は前記メンテナンス機能に基づいて特定されてもよい。一又は複数の実施形態において、工程804は、コンポーネントシーリングサブシステム304と同一の又は類似するコンポーネントシーリングサブシステムによって行われてもよい。
工程806において、前記第一のサブコンポーネントが無効化されてもよい。例えば、前記第一のサブコンポーネントが実行されている場合、前記第一のサブコンポーネントにより提供される機能が利用不可能となるよう、前記第一のサブコンポーネントが無効化されてもよい。ある実施形態において、前記第一のサブコンポーネントの無効化は、前記第一のサブコンポーネントを前記第一のソフトウェアコンポーネントから削除することを含みんでもよい。一部の実施形態において、前記第一のサブコンポーネントの無効化は、前記第一のソフトウェアコンポーネントから前記第一のサブコンポーネントを削除することなく、前記第一のサブコンポーネントから提供される機能を切ることを含んでもよい。様々な実施形態において、前記第一のサブコンポーネントの無効化は、前記第一のソフトウェアコンポーネントを無効化命令と関連付けることを含んでもよい。一例として、前記無効化命令は、前記第一のサブコンポーネントが該命令の無効化に基づいて前記第一のソフトウェアコンポーネントから削除されるように、前記第一のソフトウェアコンポーネントと関連付けられてもよい。他の一例において、前記無効化命令は、前記第一のサブコンポーネントにより提供される機能が前記無効化命令により切られるように、前記第一のソフトウェアコンポーネントと関連付けられてもよい。一又は複数の実施形態において、工程806は、コンポーネントシーリングサブシステム304と同一の、又は類似するコンポーネントシーリングサブシステムによって行われてもよい。
ある実施形態において、前記第一のソフトウェアコンポーネントが、前記第一のサブコンポーネント、前記第二のサブコンポーネント、又は他のサブコンポーネントを含むよう、前記第一のソフトウェアコンポーネントは、前記コンポーネント生成環境で生成されてもよい。第一のプロファイル情報は、前記第一のソフトウェアコンポーネントと関連付けられてもよい。例えば、前記第一のプロファイル情報は、所定のソフトウェアコンポーネントの所定のサブコンポーネントが無効化されるべきかを決定するために用いられる。前記第一のサブコンポーネントは前記第一のプロファイル情報に基づいて無効化されてもよい。前記第二のサブコンポーネントは前記第一のプロファイル情報に基づいて無効化されなくてもよい。一又は複数の実施形態において、前記第一のソフトウェアコンポーネントの生成及び前記第一のプロファイル情報の前記第一のソフトウェアコンポーネントとの関連付けは、コンポーネントオーサリングサブシステム302と同一の又は類似するコンポーネントオーサリングサブシステムによって行われてもよい。
工程808において、前記第一のソフトウェアコンポーネントの前記第二のサブコンポーネントが、特定されてもよい。前記第二のサブコンポーネントは、不正使用可能又は潜在的に不正使用可能なサブコンポーネントとして特定されてもよい。一部の実施形態において、前記第一のサブコンポーネントが前記第一のソフトウェアコンポーネントの機能にとって必要でないとの決定に基づいて、前記第一のサブコンポーネントを無効化してもよい。。前記第一のソフトウェアコンポーネントを機能させるために前記第二のサブコンポーネントが必要であるという決定に基づいて、前記第二のサブコンポーネントを無効化しなくてもよい。一又は複数の実施形態において、工程808は、コンポーネントシーリングサブシステム304と同一の又は類似のコンポーネントシーリングサブシステムによって行われなくてもよい。
工程810において、第二のサブコンポーネントが不正使用可能又は潜在的に不正使用可能となることを引き起こす前記第二のサブコンポーネントと関連付けられたコードセットを特定してもよい。一又は複数の実施形態において、工程810は、コンポーネントシーリングサブシステム304と同一の又は類似するコンポーネントシーリングサブシステムによって行われてもよい。
工程812において、前記第二のサブコンポーネントから、前記コードセットが削除されてもよい。例えば、前記第二のサブコンポーネントがもはや前記コードセットを含まないよう、前記コードセットが前記第二のサブコンポーネントから削除されてもよい。。一又は複数の実施形態において、工程812は、コンポーネントシーリングサブシステム304と同一の又は類似するコンポーネントシーリングサブシステムによって行われてもよい。
工程814において、完全性の情報が、前記第一のソフトウェアコンポーネントに対して生成されてもよい。例えば、前記第一のサブコンポーネントが無効化された後、前記コードセットが前記第二のサブコンポーネントから削除された後、及び前記第一のソフトウェアコンポーネントが前記コンポーネント生成環境から区別されるコンポーネントレポジトリに配置される前に、前記完全性の情報が、前記第一のソフトウェアコンポーネントに対して生成されてもよい。例えば、前記第一のソフトウェアに対して前記完全性の情報が生成された後に、前記完全性の情報は、前記第一のソフトウェアコンポーネントが修正されたかどうかを決定するために用いられてもよい。一又は複数の実施形態において、工程814は、コンポーネントエクスポートサブシステム306と同一の又は類似するコンポーネントエクスポートサブシステムによって行われてもよい。
工程816において、前記第一のソフトウェアコンポーネント及び前記完全性の情報は、前記コンポーネントレポジトリに配置されてもよい。一又は複数の実施形態において、工程816は、コンポーネントエクスポートサブシステム306と同一の又は類似するコンポーネントエクスポートサブシステムによって行われてもよい。
図9は、本発明の一実施形態における、データパケットの異なるスライスに、送信される異なる情報を組合わせ、及び情報のセキュアな送信のために異なる暗号化スキームを用いて前記スライスを暗号化する方法のフローチャートを例示する図である。以下で説明する方法900の工程は、説明のためのものに過ぎない。一部の実施形態において、方法900は、説明されていない一又は複数の追加的な工程を備えて実現されてもよく、説明する工程の一又は複数を省略して実現されてもよい。また、図9に示されて以下で説明される方法900の工程の順序は限定するよう意図されていない。
一部の実施形態において、方法900は、一又は複数の処理装置(例えば、デジタルプロセッサ、アナログプロセッサ、情報処理用のデジタル回路、情報処理用のアナログ回路、ステートマシン、及び/又は電子的に情報を処理する前記以外のメカニズム)において実行され得る。この一又は複数の処理装置には、電子ストレージメディアに電子的に格納された命令に応答して、方法900の工程の一部又は全部を実行する一又は複数の装置を備えてもよい。この一又は複数の処理装置には、方法900の工程の一又は複数を実行するために設計されたハードウェア、ファームウェア、及び/又はソフトウェアで構成された一又は複数の装置が含まれる。
工程902において、送信される第一の情報及び第二の情報が、受信されてもよい。前記第一の情報は、第一の送信側コンポーネントと関連付けられてもよい。前記第二の情報は、第二の送信側コンポーネントと関連付けられてもよい。一又は複数の実施形態において、工程902は、情報送信サブシステム402と同一の、又は類似する通信サブシステムによって行われてもよい。
工程904において、第一のデータスライスは、第一の暗号化スキームに基づき生成されてもよい。前記第一のデータスライスは、前記第一のデータスライスが少なくとも前記第一の情報の第一の部分を表すように生成されてもよい。例えば、前記第一の情報の前記第一の部分は、前記第一のデータスライスを生成するため、前記第一の暗号化スキームを用いて暗号化されてもよい。一又は複数の実施形態において、工程904は、情報送信サブシステム402と同一の、又は類似する通信サブシステムによって行われてもよい。
工程906において、第二のデータスライスは、第二の暗号化スキームに基づき生成されてもよい。前記第二のデータスライスは、前記第二のデータスライスが少なくとも前記第二の情報の第一の部分を表すように生成されてもよい。例えば、前記第二の情報の前記第一の部分は、前記第二のデータスライスを生成するため、前記第二の暗号化スキームを用いて暗号化されてもよい。一又は複数の実施形態において、工程906は、情報送信サブシステム402と同一の又は類似する通信サブシステムによって行われてもよい。
工程908において、第一のヘッダは、第三の暗号化スキームに基づいて生成されてもよい。前記第一のヘッダが前記第一のデータスライスに対する前記第一の暗号化スキームを、及び前記第二のデータスライスに対する前記第二の暗号化スキームを規定するように、前記第一のヘッダが生成されてもよい。例えば、前記第一のヘッダは、前記第三の暗号化スキームを用いて生成されてもよい。一又は複数の実施形態において、工程908は、情報送信サブシステム402と同一の又は類似する通信サブシステムによって行われてもよい。
一部の実施形態において、工程908に関し、前記第一のヘッダがデータパケット内の前記第一のデータスライスの位置、データパケット内の前記第二のデータスライスの位置、又はデータパケット内の他のデータスライスの位置を規定するように、前記第一のヘッダが生成されてもよい。
ある実施形態において、工程908に関し、第一のハンドシェイクリクエストが、前記第三の暗号化スキームに基づいて第一のコンピュータシステムで(そこでは、前記第一のヘッダが生成される)生成されてもよい。前記第一のハンドシェイクリクエストは、第二のコンピュータシステムへ送信されてもよい。第一のレスポンスは、前記第二のコンピュータシステムから受信してもよい。例えば、前記第一のレスポンスは、ヘッダを暗号化することに対し、前記第三の暗号化スキームの使用を確認してもよい。前記第三の暗号化スキームは、前記第三の暗号化スキームの使用を確認する前記第一のレスポンスに基づいて前記第一のヘッダを暗号化するために用いられてもよい。一部の実施形態において、前記第二のコンピュータシステムによる前記第二のコンピュータシステムに送信されたデータパケットの処理の失敗に基づいて(例えば、前記第一のヘッダの生成の前に)、リセットリクエストは、前記第一のコンピュータシステムで受信されてもよい。例えば、前記第一のハンドシェイクリクエストは、前記リセットリクエストに基づいて生成されてもよい。一又は複数の実施形態において、このような工程は、情報送信サブシステム402と同一の又は類似する通信サブシステムによって行われてもよい。
様々な実施形態において、工程908に関し、第一のハンドシェイクリクエストが、第四の暗号化スキームに基づいて第一のコンピュータシステムで(そこでは、前記第一のヘッダが生成される)生成されてもよい。前記第一のハンドシェイクリクエストは、第二のコンピュータシステムへ送信されてもよい。第一のレスポンスは、前記第二のコンピュータシステムから受信されてもよい。前記第一のレスポンスは、前記第三の暗号化スキームの使用を規定してもよい。例えば、前記第一のレスポンスは、ヘッダインデックスを規定することで、前記第三の暗号化スキームの使用を規定してもよい。第二のハンドシェイクリクエストは、前記第三の暗号化スキームに対応するヘッダインデックスに基づき前記第三の暗号化スキームを用いて生成されてもよい。前記第二のハンドシェイクリクエストは、前記第二のコンピュータシステムへ送信されてもよい。第二のレスポンスは、前記第二のコンピュータシステムから受信されてもよい。例えば、前記第二のレスポンスは、ヘッダを暗号化することに対し、前記第三の暗号化スキームの使用を確認してもよい。前記第三の暗号化スキームは、前記第三の暗号化スキームの使用を確認する前記第二のレスポンスに基づいて前記第一のヘッダを暗号化するために用いられてもよい。一又は複数の実施形態において、このような工程は、情報送信サブシステム402と同一の、又は類似する通信サブシステムによって行われてもよい。
工程910において、第一のデータパケットが生成されてもよい。前記第一のデータパケットが、前記第一のヘッダ、前記第一のデータスライス、前記第二のデータスライス、ランダムに生成されるフィラーデータ、又はこれら以外のデータを含むように、前記第一のデータパケットが生成されてもよい。一部の実施形態において、前記第一のデータパケットが、前記第一のデータスライスに対して前記第一のヘッダによって規定される前記第一のデータパケット内の位置にある前記第一のデータスライス、前記第二のデータスライス、若しくは他のデータスライス、前記第二のデータスライス、又は他のデータスライスを含むように、前記第一のデータパケットが生成されてもよい。一又は複数の実施形態において、工程910は、情報送信サブシステム402と同一の、又は類似する通信サブシステムによって行われてもよい。
工程912において、第三のデータスライスは、前記第一の暗号化スキームに基づき生成されてもよい。前記第三のデータスライスは、前記第三のデータスライスが少なくとも前記第一の情報の第二の部分を表すように生成されてもよい。例えば、前記第一の情報の前記第二の部分は、前記第三のデータスライスを生成するため、前記第一の暗号化スキームを用いて暗号化されてもよい。一又は複数の実施形態において、工程912は、情報送信サブシステム402と同一の又は類似する通信サブシステムによって行われてもよい。
工程914において、第四のデータスライスは、前記第二の暗号化スキームに基づき生成されてもよい。前記第四のデータスライスは、前記第四のデータスライスが少なくとも前記第二の情報の第二の部分を表すように生成されてもよい。例えば、前記第二の情報の前記第二の部分は、前記第四のデータスライスを生成するために、前記第二の暗号化スキームを用いて暗号化されてもよい。一又は複数の実施形態において、工程914は、情報送信サブシステム402と同一の又は類似する通信サブシステムによって行われてもよい。
工程916において、第二のヘッダは、第三の暗号化スキームに基づいて生成されてもよい。前記第二のヘッダが、前記第三のデータスライスに対して前記第一の暗号化スキームを規定し、また、前記第四のデータスライスに対して前記第二の暗号化スキームを規定するように、前記第二のヘッダを生成してもよい。例えば、前記第二のヘッダは、前記第三の暗号化スキームを用いて生成されてもよい。一又は複数の実施形態において、工程916は、情報送信サブシステム402と同一の又は類似する通信サブシステムによって行われてもよい。
工程918において、第二のデータパケットが生成されてもよい。前記第二のデータパケットが、前記第二のヘッダ、前記第三のデータスライス、前記第四のデータスライス、ランダムに生成されたフィラーデータ、又はこれら以外のデータを含むように、前記第二のデータパケットが生成されてもよい。一部の実施形態において、前記第二のデータパケットは、前記第二のデータパケットが前記第三のデータスライスに対して前記第二のヘッダにより規定される前記第二のデータ内の位置にある前期第三のデータスライス、前記第四のデータスライス、若しくは他のデータスライス、前記第四のデータスライス、又はこれら以外のデータスライスを含むように生成されてもよい。一又は複数の実施形態において、工程918は、情報送信サブシステム402と同一の、又は類似する通信サブシステムによって行われてもよい。
ある実施形態において、工程908、工程910、及び工程918に関して、前記第一のデータパケットは、前記第一のデータパケットが前記第一のデータパケット内の第一の位置にある前記第一のヘッダを含むように生成されてもよい。この第一のヘッダは、当該第一のヘッダが位置する前記第二のヘッダに対して前記第二のデータパケット内の第二の位置を規定するように生成されてもよい。前記第二のデータパケットは、前記第二のデータパケットが前記第二のデータパケットを前記第一のヘッダで規定される前記第二の位置で含むように生成されてもよい。
工程920において、前記第一のデータパケット及び前記第二のデータパケットが送信されてもよい。例えば、前記第一のデータパケット及び前記第二のデータパケットは、第一のコンピュータシステム(そこでは、前記第一のデータパケット及び前記第二のデータパケットが生成される)から第二のコンピュータシステムへ送信されてもよい。一又は複数の実施形態において、工程920は、情報送信サブシステム402と同一の又は類似する通信サブシステムによって行われてもよい。
図10は、本発明の一実施形態において、異なる暗号化スキームを用いて暗号化された異なる情報に関連したデータスライスを有するデータパケットを処理する方法のフローチャートを例示する図である。以下で説明する方法1000の工程は、説明のためのものに過ぎない。一部の実施形態において、方法1000は、説明されていない一又は複数の追加的な工程を備えて実現されてもよく、説明する工程の一又は複数を省略して実現されてもよい。また、図10に示されて以下で説明される方法1000の工程の順序は、限定するよう意図されていない。
一部の実施形態において、方法1000は、一又は複数の処理装置(例えば、デジタルプロセッサ、アナログプロセッサ、情報処理用のデジタル回路、情報処理用のアナログ回路、ステートマシン、及び/又は電子的に情報を処理する前記以外のメカニズム)において実行され得る。この一又は複数の処理装置には、電子ストレージメディアに電子的に格納された命令に応答して、方法1000の工程の一部又は全部を実行する一又は複数の装置を備えてもよい。この一又は複数の処理装置には、方法1000の段階の一又は複数を実行するために設計されたハードウェア、ファームウェア、及び/又はソフトウェアで構成された一又は複数の装置が含まれる。
工程1002において、第一のデータパケットが受信されてもよい。前記第一のデータパケットは、第一のヘッダ、第一のデータスライス、第二のデータスライス、又は他のデータを含んでもよい。前記第一のデータスライスは、少なくとも第一の情報の第一の部分を表してもよい。前記第二のデータスライスは、少なくとも第二の情報の第一の部分を表してもよい。前記第一の情報は、第一の送信側コンポーネントと関連付けられてもよい。前記第二の情報は、第二の送信側コンポーネントと関連付けられてもよい。前記第二の送信側コンポーネントは、前記第一の送信側コンポーネントと異なってもよい。一又は複数の実施形態において、工程1002は、情報受信サブシステム404と同一の、又は類似する通信サブシステムによって行われてもよい。
工程1004において、第二のデータパケットが受信されてもよい。前記第二のデータパケットは、第二のヘッダ、第三のデータスライス、第四のデータスライス、又は他のデータを含んでもよい。前記第三のデータスライスは、少なくとも前記第一の情報の第二の部分を表してもよい。前記第四のデータスライスは、少なくとも前記第二の情報の第二の部分を表してもよい。一部の実施形態において、前記第一のヘッダは、前記第一のデータパケット内の第一の位置に位置してもよい。前記第一のヘッダは、位置する前記第二のヘッダに対して、前記第二のデータパケット内の第二の位置を規定してもよい。一又は複数の実施形態において、工程1004は、情報受信サブシステム404と同一の、又は類似する通信サブシステムによって行われてもよい。
工程1006において、第一の暗号化スキームが、前記第一のデータスライスを暗号化するのに用いられる暗号化スキームとして特定されてもよい。第二の暗号化スキームが、第二のデータスライスを暗号化するために用いられる暗号化スキームとして特定される。前記第一の暗号化スキームの特定、又は前記第二の暗号化スキームの特定は、前記第一のヘッダに基づく。一又は複数の実施形態において、工程1006は、情報受信サブシステム404と同一の又は類似する通信サブシステムによって行われてもよい。
ある実施形態において、工程1006に関し、暗号化された前記第一のデータスライスに用いられた暗号化スキームとして前記第一の暗号化スキームを特定するため、前記第二のデータスライスを暗号化するのに用いられる暗号化スキームとして前記第二の暗号化スキームを特定するため、又は他のデータスライスを暗号化するために用いられる他の暗号化スキームを特定するために、第三の暗号化スキームを用いて、前記第一のヘッダが、処理される。一部の実施形態において、前記第一のデータパケットを受信する前に、受信したデータパケットを処理するのに失敗したことに基づいて、リセットリクエストが、前記第一のコンピュータシステム(そこでは、前記第一のヘッダが処理される)で生成される。前記リセットリクエストは、第二のコンピュータシステムに送信される。前記第二のコンピュータシステムから前記第一のデータパケットが、続いて受信されることになる。ハンドシェイクリクエストは、前記リセットリクエストに基づいて、前記第二のコンピュータシステムから前記第一のコンピュータシステムで受信されてもよい。前記ハンドシェイクリクエストは、前記第三の暗号化スキームに基づき生成されてもよい。ヘッダを生成することに対し、前記第三の暗号化スキームの使用を確認するレスポンスが生成されてもよい。前記レスポンスは前記第二のコンピュータシステムに送信されてもよい。例えば、前記第一のヘッダは、前記レスポンスに基づいて前記第三の暗号化スキームを用いて生成されてもよい。一又は複数の実施形態において、このような工程は、情報受信サブシステム404と同一の又は類似する通信サブシステムによって行われてもよい。
工程1008において、前記第一の情報の第一の部分を取得するために、前記第一のデータスライスは、前記第一の暗号化スキームに基づいて、前記第一のデータスライスが処理されてもよい。一又は複数の実施形態において、工程1008は、情報受信サブシステム404と同一の、又は類似する通信サブシステムによって行われてもよい。
工程1010において、前記第二の情報の前記第一の部分を取得するため、前記第二の暗号化スキームに基づいて前記第二のデータスライスを処理してもよい。一又は複数の実施形態において、工程1010は、情報受信サブシステム404と同一の又は類似する通信サブシステムによって行われてもよい。
工程1012においては、前記第一の暗号化スキームが、前記第三のデータスライスを暗号化するために用いられる暗号化スキームとして特定されてもよく、第二の暗号化スキームが、第四のデータスライスを暗号化するために用いられる暗号化スキームとして特定されてもよい。前記第一の暗号化スキームの特定又は前記第二の暗号化スキームの特定は、前記第二のヘッダに基づいて行われる。一又は複数の実施形態において、工程1012は、情報受信サブシステム404と同一の又は類似する通信サブシステムによって行われてもよい。
様々な実施形態において、工程1012に関し、暗号化された前記第三のデータスライスに用いられた暗号化スキームとして前記第一の暗号化スキームを特定するため、前記第四のデータスライスを暗号化するのに用いられる暗号化スキームとして前記第二の暗号化スキームを特定するため、又は他のデータスライスを暗号化するために用いられる他の暗号化スキームを特定するために、前記第二のヘッダが第三の暗号化スキームを用いて処理されてもよい。一又は複数の実施形態において、このような工程は、情報受信サブシステム404と同一の又は類似する通信サブシステムによって行われてもよい。
工程1014において、前記第一の情報の前記第二の部分を取得するため、前記第一の暗号化スキームに基づいて、前記第三のデータスライスが処理されてもよい。一又は複数の実施形態において、工程1014は、情報受信サブシステム404と同一の又は類似する通信サブシステムによって行われてもよい。
工程1016において、前記第二の情報の前記第二の部分を取得するため、前記第二の暗号化スキームに基づいて、前記第四のデータスライスが処理されてもよい。一又は複数の実施形態において、工程1016は、情報受信サブシステム404と同一の又は類似する通信サブシステムによって行われてもよい。
工程1018において、前記第一の受信側コンポーネントに対して前記第一の情報を形成するため前記第一の情報の前記第一の部分及び前記第一の情報の前記第二の部分が組合わされてもよい。一又は複数の実施形態において、工程1018は、情報受信サブシステム404と同一の又は類似する通信サブシステムによって行われてもよい。
工程1020において、前記第二の受信側コンポーネントに対して前記第二の情報を形成するため前記第二の情報の前記第二の部分及び前記第二の情報の前記第二の部分が組合わされてもよい。一又は複数の実施形態において、工程1020は、情報受信サブシステム404と同一の、又は類似する通信サブシステムによって行われてもよい。
図11は、本発明の一実施形態における、コンポーネントのサブコンポーネントを制限し、コンポーネントを対応する既知の良好なソフトウェアコンポーネントで置換し、及びネットワークを介して、コンポーネントに又は当該コンポーネントから送信された情報をセキュア化する又は隠す(Obscure)ことにより、コンポーネント及び情報のセキュリティと完全性を促進する方法のフローチャートを例示する図である。
以下で説明する方法1100の工程、説明のためのものに過ぎない。一部の実施形態において、方法1100は、説明されていない一又は複数の追加的な工程を備えて実現されてもよく、説明する工程の一又は複数を省略して実現されてもよい。また、図11に示されて以下で説明される方法1100の工程の順序は、発明の内容を限定することを意図していない。
一部の実施形態において、方法1100は、一又は複数の処理装置(例えば、デジタルプロセッサ、アナログプロセッサ、情報処理用のデジタル回路、情報処理用のアナログ回路、ステートマシン、及び/又は電子的に情報を処理する前記以外のメカニズム)において実行され得る。この一又は複数の処理装置には、電子ストレージメディアに電子的に格納された命令に応答して、方法1100の工程の一部又は全部を実行する一又は複数の装置を備えてもよい。この一又は複数の処理装置には、方法1100の段階の一又は複数を実行するために設計されたハードウェア、ファームウェア、及び/又はソフトウェアで構成された一又は複数の装置が含まれる。
工程1102において、ソフトウェアコンポーネントは、コンポーネント生成環境で生成されてもよい。一又は複数の実施形態において、工程1102は、コンポーネントオーサリングサブシステム302と同一の、又は類似するコンポーネントオーサリングサブシステムによって行われてもよい。
工程1104において、前記ソフトウェアコンポーネントに侵入するために、不正使用可能又は潜在的に不正使用可能な前記ソフトウェアコンポーネントのサブコンポーネントが無効化されてもよい。一又は複数の実施形態において、工程1104は、図8で示される方法800の工程802、工程804、工程806、工程808、工程810、又は工程812のうちの一又は複数を含む。
工程1106において、前記ソフトウェアコンポーネントは、ランタイム環境から区別されるコンポーネントレポジトリに保存されてもよい。例えば、前記ランタイム環境は、対応するソフトウェアコンポーネントが実行される生産環境である。一又は複数の実施形態において、工程1106は、図8で示される方法800の工程814及び工程816のうちの一又は複数を含む。
工程1108において、前記ランタイム環境で実行している対応するソフトウェアコンポーネントは、第一のイベントに基づいて、保存されたソフトウェアコンポーネントと置換されてもよい。一部の実施形態において、前記第一のイベントには、一又は複数の置換時間間隔の経過、使用閾値に到達した又は使用閾値を超えた前記対応するソフトウェアコンポーネントの使用回数、前記対応するソフトウェアのアップデートバージョンの使用可能性、及び/又は他のイベントが含まれてもよい。一又は複数の実施形態において、工程1108は、図7で示される方法700の工程702、工程704、工程706、工程708、工程710、工程712、工程714、又は工程716のうち一又は複数を含む。
工程1110において、データパケットは、前記ソフトウェアコンポーネントによって生成されてもよい。該生成されたデータパケットのそれぞれは、異なるコンポーネントを関連付けられた異なる情報の部分を表すデータスライスを含んでもよい。一部の実施形態において、前記ソフトウェアコンポーネントは、情報送信サブシステム402及び/又は情報受信サブシステム404と同一の、又は類似する情報送信サブシステム、及び/又は情報受信サブシステムを含むソフトウェアコンポーネントのインスタンスを含んでもよい。一又は複数の実施形態において、工程1110は、図9に示される方法900の工程902、工程904、工程906、工程908、工程910、工程912、工程914、工程916、又は工程918のうち一又は複数を含んでもよい。
工程1112において、受信したデータパケットは、前記ソフトウェアコンポーネントで処理されてもよい。該受信したデータパケットのそれぞれは、異なるコンポーネントと関連付けられた異なる情報の部分を表すデータスライスを含んでもよい。一部の実施形態において、前記ソフトウェアコンポーネントは、情報送信サブシステム402及び/又は情報受信サブシステム404と同一の、又は類似する情報送信サブシステム、及び/又は情報受信サブシステムを含むソフトウェアコンポーネントのインスタンスを含んでもよい。一又は複数の実施形態において、工程1112は、図10に示される方法1000の工程1002、工程1004、工程1006、工程1008、工程1010、工程1012、工程1014、工程1016、又は工程1018のうち一又は複数を含んでもよい。
図12は、本発明の一実施形態における、コンポーネントのサブコンポーネントを制限し、及びコンポーネントを対応する既知の良好なソフトウェアコンポーネントで置換することにより、コンポーネントと情報のセキュリティ及び完全性を促進する方法のフローチャートを例示する図である。
以下で説明する方法1200の工程は、説明のためのものに過ぎない。一部の実施形態において、方法1200は、説明されていない一又は複数の追加的な工程を備えて実現されてもよく、説明する工程の一又は複数を省略して実現されてもよい。また、図12に示されて以下で説明される方法1200の工程の順序は、発明の内容を限定することを意図していない。
一部の実施形態において、方法1200は、一又は複数の処理装置(例えば、デジタルプロセッサ、アナログプロセッサ、情報処理用のデジタル回路、情報処理用のアナログ回路、ステートマシン、及び/又は電子的に情報を処理する前記以外のメカニズム)において実行され得る。この一又は複数の処理装置には、電子ストレージメディアに電子的に格納された命令に応答して、方法1200の工程の一部又は全部を実行する一又は複数の装置を備えてもよい。この一又は複数の処理装置には、方法1200の段階の一又は複数を実行するために設計されたハードウェア、ファームウェア、及び/又はソフトウェアで構成された一又は複数の装置が含まれる。
工程1202において、ソフトウェアコンポーネントは、コンポーネント生成環境で生成されてもよい。一又は複数の実施形態において、工程1202は、コンポーネントオーサリングサブシステム302と同一の又は類似するコンポーネントオーサリングサブシステムによって行われてもよい。
工程1204において、前記ソフトウェアコンポーネントに侵入するために、不正使用される、又は潜在的に不正使用されうる前記ソフトウェアコンポーネントのサブコンポーネントが無効化されてもよい。一又は複数の実施形態において、工程1204は、図8で示される方法800の工程802、工程804、工程806、工程808、工程810、又は工程812のうちの一又は複数を含む。
工程1206において、前記ソフトウェアコンポーネントは、ランタイム環境から区別されるコンポーネントレポジトリに保存されてもよい。例えば、前記ランタイム環境は、対応するソフトウェアコンポーネントが実行される生産環境である。一又は複数の実施形態において、工程1206は、図8で示される方法800の工程814及び工程816のうちの一又は複数を含む。
工程1206において、前記ランタイム環境で実行している対応するソフトウェアコンポーネントは、第一のイベントに基づいて、保存されたソフトウェアコンポーネントと置換されてもよい。一部の実施形態において、前記第一のイベントには、一又は複数の置換時間間隔の経過、使用閾値に到達した又はを超えた前記対応するソフトウェアコンポーネントの使用回数、前記対応するソフトウェアのアップデートバージョンの使用可能性、及び/又は他のイベントが含まれてもよい。一又は複数の実施形態において、工程1208は、図7で示される方法700の工程702、工程704、工程706、工程708、工程710、工程712、工程714、又は工程716のうち一又は複数を含む。
図13は、本発明の一実施形態における、コンポーネントを対応する既知の良好なソフトウェアコンポーネントで置換し、及びネットワークを介して、コンポーネントに又は当該コンポーネントから伝達された情報をセキュア化する又は隠す(Obscure)ことにより、コンポーネント及び情報のセキュリティと完全性を促進する方法のフローチャートを例示する図である。
以下で説明する方法1300の工程は、説明のためのものに過ぎない。一部の実施形態において、方法1300は、説明されていない一又は複数の追加的な工程を備えて実現されてもよく、説明する工程の一又は複数を省略して実現されてもよい。また、図13に示されて以下で説明される方法1300の工程の順序は、発明の内容を限定することを意図していない。
一部の実施形態において、方法1300は、一又は複数の処理装置(例えば、デジタルプロセッサ、アナログプロセッサ、情報処理用のデジタル回路、情報処理用のアナログ回路、ステートマシン、及び/又は電子的に情報を処理する前記以外のメカニズム)が実装される。この一又は複数の処理装置には、電子ストレージメディアに電子的に格納された命令に応答して、方法1300の工程の一部又は全部を実行する一又は複数の装置を備えてもよい。この一又は複数の処理装置には、方法1300の段階の一又は複数を実行するために設計されたハードウェア、ファームウェア、及び/又はソフトウェアで構成された一又は複数の装置が含まれる。
工程1302において、ランタイム環境で実行している対応するソフトウェアコンポーネントは、前記ランタイム環境と区別されるコンテントレポジトリに保存されるソフトウェアコンポーネントと置換されてもよい。前記対応するソフトウェアコンポーネントの該置換は、第一のイベントに基づく。一部の実施形態において、前記第一のイベントには、一又は複数の置換時間間隔の経過、使用閾値に到達した又はを超えた前記対応するソフトウェアコンポーネントの使用回数、前記対応するソフトウェアのアップデートバージョンの使用可能性、及び/又は他のイベントが含まれうる。一又は複数の実施形態において、工程1302は、図7で示される方法700の工程702、工程704、工程706、工程708、工程710、工程712、工程714、又は工程716のうち一又は複数を含む。
工程1304において、データパケットは、前記ソフトウェアコンポーネントによって生成されてもよい。該生成されたデータパケットのそれぞれは、異なるコンポーネントを関連付けられた異なる情報の部分を表すデータスライスを含んでもよい。一部の実施形態において、前記ソフトウェアコンポーネントは、情報送信サブシステム402及び/又は情報受信サブシステム404と同一の、又は類似する情報送信サブシステム、及び/又は情報受信サブシステムを含むソフトウェアコンポーネントのインスタンスを含んでもよい。一又は複数の実施形態において、工程1304は、図9に示される方法900の工程902、工程904、工程906、工程908、工程910、工程912、工程914、工程916、又は工程918のうち一又は複数を含んでもよい。
工程1306において、受信したデータパケットは、前記ソフトウェアコンポーネントで処理されてもよい。該受信したデータパケットのそれぞれは、異なるコンポーネントと関連付けられた異なる情報の部分を表すデータスライスを含んでもよい。一部の実施形態において、前記ソフトウェアコンポーネントは、情報送信サブシステム402及び/又は情報受信サブシステム404と同一の、又は類似する情報送信サブシステム、及び/又は情報受信サブシステムを含むソフトウェアコンポーネントのインスタンスを含んでもよい。一又は複数の実施形態において、工程1306は、図10に示される方法1000の工程1002、工程1004、工程1006、工程1008、工程1010、工程1012、工程1014、工程1016、又は工程1018のうち一又は複数を含んでもよい。
図14は、本発明の一実施形態における、コンポーネントのサブコンポーネントを制限し、及びネットワークを介して、コンポーネントに又は当該コンポーネントから伝達された情報をセキュア化する又は隠す(Obscure)ことにより、コンポーネント及び情報のセキュリティと完全性を促進する方法のフローチャートを例示する図である。
以下で説明する方法1400の工程は、説明のためのものに過ぎない。一部の実施形態において、方法1400は、説明されていない一又は複数の追加的な工程を備えて実現されてもよく、説明する工程の一又は複数を省略して実現されてもよい。また、図14に示されて以下で説明される方法1400の工程の順序は、発明の内容を限定することを意図していない。
一部の実施形態において、方法1400は、一又は複数の処理装置(例えば、デジタルプロセッサ、アナログプロセッサ、情報処理用のデジタル回路、情報処理用のアナログ回路、ステートマシン、及び/又は電子的に情報を処理する前記以外のメカニズム)において実行され得る。この一又は複数の処理装置には、電子ストレージメディアに電子的に格納された命令に応答して、方法1400の工程の一部又は全部を実行する一又は複数の装置を備えてもよい。この一又は複数の処理装置には、方法1400の段階の一又は複数を実行するために設計されたハードウェア、ファームウェア、及び/又はソフトウェアで構成された一又は複数の装置が含まれる。
工程1402において、ソフトウェアコンポーネントは、コンポーネント生成環境で生成されてもよい。一又は複数の実施形態において、工程1402は、コンポーネントオーサリングサブシステム302と同一の又は類似するコンポーネントオーサリングサブシステムによって行われてもよい。
工程1404において、前記ソフトウェアコンポーネントに侵入するために、不正使用される、又は潜在的に不正使用されうる前記ソフトウェアコンポーネントのサブコンポーネントが無効化されてもよい。一又は複数の実施形態において、工程1404は、図8で示される方法800の工程802、工程804、工程806、工程808、工程810、又は工程812のうちの一又は複数を含む。
工程1406において、前記ソフトウェアコンポーネントは、ランタイム環境から区別されるコンポーネントレポジトリに保存されてもよい。一又は複数の実施形態において、工程1406は、図8で示される方法800の工程814及び工程816のうちの一又は複数を含む。
工程1408において、前記ソフトウェアコンポーネントは、前記ランタイム環境でインスタンス化されてもよい。例えば、前記ソフトウェアコンポーネントは、前記コンポーネントレポジトリから取得されて、その後前記ランタイム環境でインスタンス化される。続いて、前記ソフトウェアコンポーネントは、前記ランタイム環境のランタイム実行サブシステムで実行されてもよい。一又は複数の実施形態において、工程1408は、コンポーネントマネージャサブシステム112と同一の又は類似するコンポーネントマネージャサブシステムによって行われてもよい。
工程1410において、データパケットは、前記ソフトウェアコンポーネントによって生成されてもよい。該生成されたデータパケットのそれぞれは、異なるコンポーネントを関連付けられた異なる情報の部分を表すデータスライスを含みうる。一部の実施形態において、前記ソフトウェアコンポーネントは、情報送信サブシステム402及び/又は情報受信サブシステム404と同一の、又は類似する情報送信サブシステム、及び/又は情報受信サブシステムを含むソフトウェアコンポーネントのインスタンスを含んでもよい。一又は複数の実施形態において、工程1410は、図9に示される方法900の工程902、工程904、工程906、工程908、工程910、工程912、工程914、工程916、又は工程918のうち一又は複数を含んでもよい。
工程1412において、受信したデータパケットは、前記ソフトウェアコンポーネントで処理されてもよい。該受信したデータパケットのそれぞれは、異なるコンポーネントと関連付けられた異なる情報の部分を表すデータスライスを含んでもよい。一部の実施形態において、前記ソフトウェアコンポーネントは、情報送信サブシステム402及び/又は情報受信サブシステム404と同一の、又は類似する情報送信サブシステム、及び/又は情報受信サブシステムを含むソフトウェアコンポーネントのインスタンスを含んでもよい。一又は複数の実施形態において、工程1412は、図10に示される方法1000の工程1002、工程1004、工程1006、工程1008、工程1010、工程1012、工程1014、工程1016、又は工程1018のうち一又は複数を含んでもよい。
一部の実施形態において、図に示された様々なコンピュータ及びサブシステムは、本明細書に記載された機能を行うようプログラムされた一又は複数のコンピューティング装置を含んでもよい。前記コンピューティング装置は、一又は複数の電子ストレージ、一又は複数のコンピュータプログラムでプログラムされた一又は複数の物理プロセッサ、及び/又は他のコンポーネントを含んでもよい。前記コンピューティング装置は、ネットワーク及び/又は他の計算機プラットフォームと情報を交換することを可能にする通信線、又はポートを含んでもよい。コンピューティング装置は、共同して動作してコンピューティング装置の機能を提供する複数のハードウェア、ソフトウェア、及び/又はファームウェア・コンポーネントを含んでもよい。例えば、コンピューティング装置は、コンピューティング装置として共同して動作する多数の計算機プラットフォームによって実装されてもよい。前記コンピュータ及びサブシステムの各々は、それぞれ所定の保護手段を提供し、又は他のコンピュータ及びサブシステムと共同して本明細書で記載した保護手段の組合わせを提供してもよい。
前記電子ストレージには、情報を電子的に記憶する持続性ストレージ・メディアが含んでもよい。前記電子ストレージの電子ストレージメディアには、前記サーバと一体に(すなわち、実質的に着脱不能に)設けられたシステムストレージ、及び、例えばポート(例えばUSBポート、ファイヤーワイヤーポート等)やドライブ(例えばディスクドライブ等)を介して前記サーバに着脱可能に接続されたリムーバブルストレージの少なくとも一方が含んでもよい。前記電子ストレージには、光学的に読み取り可能な記憶メディア(例えば光学ディスク等)、磁気的に読み取り可能な記憶メディア(例えば磁気テープ、磁気ハードドライブ、フロッピードライブ等)、電荷型ストレージメディア(例えばEEPROM、RAM等)、ソリッドステート・ストレージメディア(例えばフラッシュドライブ等)、及び/又は前記以外の電子的に読み取り可能なストレージメディアが含んでもよい。前記電子ストレージには、一又は複数の仮想ストレージリソース(例えば、クラウドストレージ、仮想プライベートネットワーク、及び/又はこれら以外の仮想ストレージリソース)が含んでもよい。前記電子ストレージは、本明細書に記載した、ソフトウェアアルゴリズム、前記プロセッサで決定された情報、前記サーバから受信した情報、クライアントコンピューティングプラットフォームから受信した情報、又はサーバを機能させることを可能とする他の情報を含んでもよい。
前記プロセッサは、前記サーバの機能を処理する情報を提供するようプログラムされてもよい。このように、前記プロセッサは、デジタルプロセッサ、アナログプロセッサ、情報処理用のデジタル回路、情報処理用のアナログ回路、ステートマシン、及び/又は電子的に情報を処理する前記以外のメカニズムのうちの一又は複数を含んでもよい。一部の実施形態において、前記プロセッサは複数の処理装置を含んでもよい。これらの処理装置は物理的に同一の装置内に配置されてもよく、又は共同して動作する複数の装置の処理機能を前記プロセッサが代表してもよい。前記プロセッサは、サブシステム112、116、118、302、304、402、404又は他のサブシステムの本明細書で記載された機能を発揮するコンピュータプログラムの命令を実行するようプログラムされてもよい。前記プロセッサは、モジュールを実行する際に、ソフトウェア、ハードウェア、ファームウェア、何らかの方法で組み合わされたソフトウェア、ハードウェア、又はファームウェア、及び/又は前記プロセッサの処理能力を構成する他の機構を用いてもよい。
以下の異なるサブシステム112、116、118、302、304、402、又は404によって提供される機能の記述は説明のためのものであり、限定を意図したものではない。サブシステム112、116、118、302、304、402、又は404はいずれも記述されるよりも多くの、又は少ない機能を提供してもよい点留意すべきである。例えば、サブシステム112、116、118、302、304、402、又は404のうちの一又は複数を取り除き、その機能の一部又はすべてを、サブシステム112、116、118、302、304、402、又は404のうちの他のサブシステムで提供してもよい。他の例として、サブシステム112、116、118、302、304、402、又は404のうちの一つに帰せられる機能の一部又は全てを発揮するよう追加的なサブシステムがプログラムされてもよい。
現時点で最も実用的であり好ましいと考えられる態様に基づいて、本発明を例示のために詳細に説明したが、このような詳細な説明は例示のみを目的としたものである。本発明の技術は開示された実施形態に限定されるものではなく、むしろ添付された特許請求の範囲の趣旨及び範囲に入る変形や均等な配置も本発明に含められることが意図されている。例えば、本発明は、可能な範囲で、いずれの実施形態の一又は複数の特徴が他の実施形態のいずれの一又は複数の特徴と組合わせられることが考えられることが理解される。