(58)【調査した分野】(Int.Cl.,DB名)
前記共有するステップは、前記データ共有キーまたはデスティネーションアプリケーションキーで暗号化された前記オブジェクトデータ保護キーを前記デスティネーションアプリケーションに転送するステップを含む、請求項1に記載の方法。
前記ソースアプリケーションと前記デスティネーションアプリケーションとの間の前記データオブジェクトの転送が制限されているかどうかを、前記セキュリティマネージャアプリケーションによって判断するステップと、
前記判断に基づいて前記検索を促進するステップとを含む、請求項3に記載の方法。
前記検索を促進する前に、中心のセキュリティアプリケーションによって、前記ソースアプリケーションまたは前記デスティネーションアプリケーションの署名を検証するステップをさらに含む、請求項3または4に記載の方法。
前記セキュリティマネージャアプリケーションによって、前記ソースアプリケーションキー、前記デスティネーションアプリケーションキーおよび前記データ共有キーのうちの少なくとも1つを生成するステップをさらに含む、請求項3から9のいずれか1項に記載の方法。
前記ソースアプリケーションによって要求されると、前記セキュリティマネージャアプリケーションによって前記データ共有キーを生成するステップをさらに含む、請求項10に記載の方法。
前記デスティネーションアプリケーションの前記第2の置換オブジェクトコードによって、前記デスティネーションアプリケーションキーで前記オブジェクトデータ保護キーを暗号化するステップをさらに含む、請求項1から13のいずれか1項に記載の方法。
【発明の概要】
【課題を解決するための手段】
【0003】
概要
セキュリティサービスを提供するためのシステム、方法および機械読取り可能媒体を開示する。本開示の特徴に従うと、システムはメモリおよびプロセッサを含む。メモリは、複数のアプリケーションデータを格納するために用いられてもよく、各々のアプリケーションデータは、ソフトウェアアプリケーションに関連付けられ、アプリケーションオブジェクトコードを含み得る。プロセッサは、セキュリティマネージャアプリケーションモジュールを含み得る。セキュリティマネージャアプリケーションモジュールは、オブジェクトコード変更モジュールによって変更されたアプリケーションオブジェクトコードからのセキュリティサービスについての要求に、ソフトウェアアプリケーションを介して応答し得る。変更されたアプリケーションオブジェクトコードにより、セキュリティマネージャアプリケーションモジュールに対するセキュリティサービスについての要求の送信が容易になる。
【0004】
一実施形態においては、オブジェクトコード変更モジュールは、動的ライブラリまたは静的ライブラリの導入、ロードコマンドの追加、シンボルの置換、スウィズリング(swizzling)および挿入のうち少なくとも1つによってアプリケーションオブジェクトコードを変更するために用いられてもよい。別の実施形態においては、セキュリティマネージャアプリケーションモジュールは、認証トークン、認証キーおよびセキュア通信チャネルからなる群から選択されるセキュリティアーティファクトを生成し得る。セキュリティマネージャアプリケーションモジュールは、セキュリティサービスについての要求を受取ったことに応じて、ソフトウェアアプリケーションにセキュリティアーティファクトを送信し得る。オブジェクト変更モジュールによって受取られて変更されたアプリケーションオブジェクトコードは、署名なしの形式であってもよい。
【0005】
本開示の特徴に従うと、アプリケーションオブジェクトコードは、オブジェクトコード変更モジュールによるアプリケーションオブジェクトコードの変更前に、オブジェクトコード署名変換モジュールによって署名ありの形式から署名なしの形式に変換され、オブジェクトコード変更モジュールによるアプリケーションオブジェクトコードの変更後に、署名なしの形式から署名ありの形式に変換され得る。一実施形態においては、オブジェクトコード変更モジュールは、アプリケーションオブジェクトコードの変更前に、アプリケーションオブジェクトコードを署名ありの形式から署名なしの形式に変換し、アプリケーションオブジェクトコードの変更後に、アプリケーションオブジェクトコードを署名なしの形式から署名ありの形式に変換してもよい。
【0006】
一実施形態においては、アプリケーションオブジェクトコードの変更は、ソフトウェアアプリケーションによって利用されるプログラマティックインターフェイス、クラス、オブジェクトおよびファンクションのうちの少なくとも1つの変更を含んでもよい。アプリケーションオブジェクトコードの変更は、セキュリティポリシーに対するコンプライアンスを確実にするためにポリシーエンジンを導入することを含んでもよい。セキュリティポリシーは、データ漏洩防止ポリシーおよびアクセス制御ポリシーからなる群から選択されてもよい。
【0007】
本開示の特徴に従うと、セキュリティマネージャアプリケーションモジュールは、セキュリティポリシーに対するソフトウェアアプリケーションのコンプライアンスを確実にするためのポリシーエンジンを含み得る。セキュリティマネージャアプリケーションモジュールは、セキュリティポリシーをソフトウェアアプリケーションに送信して実行してもよい。セキュリティポリシーは、ソフトウェアアプリケーションの一部、単一のソフトウェアアプリケーションおよび複数のソフトウェアアプリケーションのうち少なくとも1つに適用され得る。一実施形態においては、ポリシーエンジンは動的なポリシーエンジンであり、セキュリティポリシーは、実行コンテキスト、外部イベント、明確なポリシー再定義、ならびにグループおよびロールメンバーシップの変更からなる群から選択される少なくとも1つのファクタに基づく。別の実施形態においては、セキュリティポリシーはリモートポリシーサーバから検索される。さらに別の実施形態においては、第1のソフトウェアアプリケーションがリモートポリシーサーバからセキュリティポリシーを検索し、第2のソフトウェアアプリケーションが第1のソフトウェアアプリケーションからセキュリティポリシーを検索する。ポリシーエンジンの実行によって生じるデータは、セキュリティマネージャアプリケーションモジュールおよび/またはポリシーサーバに送信されてもよい。
【0008】
本開示の特徴に従うと、ソフトウェアアプリケーションを介してセキュリティサービスについての要求に応答するセキュリティマネージャアプリケーションモジュールは、ソフトウェアアプリケーションが公開キーインフラストラクチャ(PKI:public key infrastructure)キーで署名される場合、セキュリティサービスを促進し得る。セキュリティマネージャアプリケーションモジュールは、ソフトウェアアプリケーションおよび関連付けられたコンピューティングプラットフォームが損なわれていないことを確認し、ソフトウェアアプリケーションの署名を検証し得る。一実施形態においては、複数のアプリケーションデータは共通のキーを含む。別の実施形態においては、セキュリティマネージャアプリケーションモジュールは、アプリケーション信頼性を確立するためにソフトウェアアプリケーションからの登録要求に応答してもよい。セキュリティマネージャアプリケーションモジュールは、ユーザにアプリケーション登録パスコードを入力するよう促し、アプリケーション登録パスコードを用いてアプリケーションの信頼性を確立するようキーを生成して、セキュリティマネージャアプリケーションモジュールによってソフトウェアアプリケーションに対して提供されるセキュリティサービスを促進し得る。
【0009】
別の実施形態においては、セキュリティマネージャアプリケーションモジュールは、ソフトウェアアプリケーションにキーを提供して、ソフトウェアアプリケーションが、セキュリティサービスについての要求をセキュリティマネージャアプリケーションモジュールに送信することを可能にし得る。アプリケーションデータは、ソフトウェアアプリケーションまたはセキュリティマネージャアプリケーションモジュールによって生成されるアプリケーションデータ保護キーを含み得る。アプリケーションデータ保護キーは、セキュリティマネージャアプリケーションモジュールによって維持される対応するデータ保護ルートキーによって暗号化および復号化されてもよい。一実施形態においては、アプリケーションデータ保護キーは、オブジェクトデータ保護キーの暗号化および復号化のうち少なくとも1つを実行して、第1のソフトウェアアプリケーションから第2のソフトウェアアプリケーションへのデータオブジェクトの転送を容易にし得る。セキュリティマネージャアプリケーションモジュールは、第1のソフトウェアアプリケーションから第2のソフトウェアアプリケーションへデータオブジェクトおよびオブジェクトデータ保護キーを転送する前に、オブジェクトデータ保護キーを暗号化するためのデータ共有キーを生成してもよい。データ共有キーはまた、データオブジェクトおよびオブジェクトデータ保護キーを第1のソフトウェアアプリケーションから第2のソフトウェアアプリケーションに転送した後に、オブジェクトデータ保護キーを復号化するために用いられてもよい。本開示の実施形態に従うと、セキュリティマネージャアプリケーションモジュールおよび第1のソフトウェアアプリケーションのうち少なくとも1つはまた、第1のソフトウェアアプリケーションのアプリケーションデータ保護キーでデータオブジェクトのためのオブジェクトデータ保護キーを復号化し、第2のソフトウェアアプリケーションのアプリケーションデータ保護キーでデータオブジェクトのためのオブジェクトデータ保護キーを暗号化し得る。
【0010】
本開示の特徴に従うと、セキュリティサービスを提供するための、コンピュータによって実現される方法が提供される。当該方法は、複数のアプリケーションデータを有するメモリと通信するプロセッサ上で実現されてもよく、各々のアプリケーションデータは、ソフトウェアアプリケーションに関連付けられ、アプリケーションオブジェクトコードを含み得る。当該方法は、ソフトウェアアプリケーションに対応するアプリケーションオブジェクトコードをメモリから検索するステップと、ソフトウェアアプリケーションがセキュアサービスについての要求を送信することを可能にするためにアプリケーションオブジェクトコードの変更を受取るステップとを含み得る。この変更は、動的ライブラリまたは静的ライブラリの導入、ロードコマンドの追加、シンボルの置換、スウィズリングおよび挿入のうち少なくとも1つを含み得る。当該方法はさらに、セキュリティサービスについての要求をプロセッサを介して受取るステップと、プロセッサを介してセキュリティサービスを提供するステップとを含み得る。
【0011】
一実施形態においては、アプリケーションオブジェクトコードは、変更前に署名ありの形式から署名なしの形式に変換され、変更後に署名なしの形式から署名ありの形式に変換される。アプリケーションオブジェクトコードの変更には、セキュリティポリシーに対するコンプライアンスを確実にするためにポリシーエンジンを導入することが含まれてもよい。セキュリティポリシーは、ソフトウェアアプリケーションの一部、単一のソフトウェアアプリケーション、および複数のソフトウェアアプリケーションのうち少なくとも1つに適用され得る。セキュリティポリシーは、データ漏洩防止ポリシーおよびアクセス制御ポリシーからなる群から選択されてもよい。一実施形態においては、ポリシーエンジンは、動的なポリシーエンジンであり、セキュリティポリシーは、実行コンテキスト、外部イベント、明確なポリシー再定義、ならびにグループおよびロールメンバーシップの変更からなる群から選択される少なくとも1つのファクタに基づく。
【0012】
一実施形態においては、コンピュータによって実現される方法は、ソフトウェアアプリケーションおよび関連付けられたコンピューティングプラットフォームが損なわれていないことをプロセッサを介して確認するステップと、ソフトウェアアプリケーションのPKIキー署名をプロセッサを介して検証するステップとを含む。また、コンピュータによって実現される方法は、セキュリティサービスについての要求を受取る前にアプリケーション信頼性を確立するためにソフトウェアアプリケーションから登録要求を受取るステップと、プロセッサを介してアプリケーション登録パスコードを入力するようユーザに促すステップとを含み得る。当該方法はさらに、アプリケーション登録パスコードを用いてアプリケーション信頼性を確立するためにプロセッサを介してキーを生成するステップと、ソフトウェアアプリケーションがセキュリティサービスについての要求を送信することを可能にするためにプロセッサを介してソフトウェアアプリケーションにキーを提供するステップとを含み得る。
【0013】
本開示の特徴に従うと、コンピュータによって実現される方法は、プロセッサによってアプリケーションデータ保護キーを生成するステップと、対応するデータ保護ルートキーをメモリから検索するステップと、対応するデータ保護ルートキーを用いて、プロセッサを介してアプリケーションデータ保護キーを暗号化するステップとを含み得る。一実施形態においては、コンピュータによって実現される方法は、データオブジェクトのためのオブジェクトデータ保護キーを、プロセッサを介して、第1のソフトウェアアプリケーションのアプリケーションデータ保護キーで復号化するステップと、オブジェクトデータ保護キーの暗号化および復号化のうち少なくとも1つのためにデータ共有キーをプロセッサを介して生成するステップと、データ共有キーを用いて、プロセッサを介して、オブジェクトデータ保護キーを暗号化するステップと、第1のソフトウェアアプリケーションから第2のソフトウェアアプリケーションにデータオブジェクトおよび暗号化されたオブジェクトデータ保護キーを転送するステップと、プロセッサを介して、データ共有キーを用いてオブジェクトデータ保護キーを復号化するステップと、データオブジェクトのためのオブジェクトデータ保護キーを、プロセッサを介して、第2のソフトウェアアプリケーションのアプリケーションデータ保護キーで暗号化するステップとを含み得る。
【0014】
本開示の特徴に従うと、機械読取り可能媒体が提供される。機械読取り可能媒体は、プロセッサおよびメモリを有する機械によって読取られたときに当該機械に本開示の方法に従った動作を実行させる命令を与え得る。
【0015】
いくつかの実施形態は、演算装置上において中心のアプリケーションから別のアプリケーションにセキュリティサービスを提供するための方法に関する。当該方法は、演算装置上にセキュリティサービスを提供するように構成された第1のアプリケーションを提供するステップと、オリジナルのコンパイル後のオブジェクトコードを有する第2のアプリケーションを演算装置上に提供するステップと、第1のアプリケーションと通信するように構成された置換オブジェクトコード(replacement object code)を作成するように、メモリと動作可能に結合された少なくとも1つのプロセッサを用いて第2のアプリケーションのオリジナルのオブジェクトコードを変更するステップと、第2のアプリケーションにおける置換オブジェクトコードを呼出すステップと、第2のアプリケーションにおける置換オブジェクトコードを用いて第1のアプリケーションに対してセキュリティサービスを要求するステップとを含む。
【0016】
オリジナルのオブジェクトコードは、動的ライブラリの導入、静的ライブラリの導入、付加的なロードコマンドの導入、シンボルの置換、ポインタスウィズリングおよび挿入からなる群から選択される少なくとも1つの技術によって変更することができる。当該方法は、認証トークン、キー、セキュリティクレデンシャル、シングルサインオントークン、識別子、セキュリティポリシー、セキュリティコマンド、セキュリティ構成、セッションハンドル、セッショントークン、およびセキュア通信チャネルからなる群から選択されるセキュリティアーティファクトを第1のアプリケーションによって生成するステップと、セキュリティサービスの要求に応答して第1のアプリケーションから第2のアプリケーションにセキュリティアーティファクトを送信するステップとを含み得る。オリジナルのオブジェクトコードは署名なしのコードを含んでもよい。当該方法はさらに、変更前にオリジナルのオブジェクトコードを署名ありの形式から署名なしの形式に変換するステップと、変更後に置換オブジェクトコードを署名なしの形式から署名ありの形式に変換するステップとを含んでもよい。演算装置はモバイルデバイスであり得る。
【0017】
変更するステップは、プログラマティックインターフェイス、クラス、オブジェクトおよびファンクションのうち少なくとも1つを変更するステップを含み得る。第2のアプリケーションのオリジナルのオブジェクトコードを変更するステップは、セキュリティポリシーに対するコンプライアンスを確実にするためにポリシーエンジンを導入するステップを含み得る。セキュリティポリシーは、データ漏洩防止ポリシーおよびアクセス制御ポリシーからなる群から選択することができる。第1のアプリケーションは、セキュリティポリシーに対する第2のアプリケーションのコンプライアンスを確実にするためのポリシーエンジンを含み得る。第1のアプリケーションは、第2のアプリケーションにセキュリティポリシーを送信して実行させ得る。セキュリティポリシーは、第2のアプリケーションの一部、単一のソフトウェアアプリケーション、および複数のソフトウェアアプリケーションのうち少なくとも1つに適用することができる。セキュリティポリシーは、実行コンテキスト、外部イベント、明確なポリシー再定義、ならびにグループおよびロールメンバーシップの変更からなる群から選択される少なくとも1つのファクタに基づき得る。セキュリティポリシーは、演算装置から離れたサーバから検索される。
【0018】
当該方法はさらに、第3のアプリケーションのオブジェクトコードを変更することによってポリシーエンジンを第2のアプリケーションから第3のアプリケーションに導入するステップを含み得る。置換オブジェクトコードの実行によって生じるデータは、第1のアプリケーションまたはリモートサーバに送信することができる。ソフトウェアアプリケーションが公開キーインフラストラクチャ(PKI)キーで署名される場合、セキュリティサービスについての要求に応答する第1のアプリケーションは、セキュリティサービスを促進することができる。当該方法はさらに、第2のアプリケーションおよび演算装置が損なわれていないことを第1のアプリケーションによって確認するステップと、第1のアプリケーションの署名を検証するステップとを含み得る。セキュリティサービスは、第2のアプリケーションおよび第3のアプリケーションに共通のキーを提供することができる。第1のアプリケーションは、アプリケーション信頼性を確立するために第2のアプリケーションからの登録要求に応答し得る。第1のアプリケーションは、アプリケーション登録パスコードを入力するようユーザを促し、アプリケーション登録パスコードを用いてアプリケーション信頼性を確立するためのキーを生成して、第1のアプリケーションによって第2のアプリケーションに提供されるセキュリティサービスを促進し得る。第1のアプリケーションは、第2のアプリケーションがセキュリティサービスについての要求を送信することを可能にするために第2のアプリケーションにキーを提供することができる。
【0019】
当該方法はさらに、アプリケーションデータ保護キーを生成するステップを含み得る。アプリケーションデータ保護キーは、第1のアプリケーションによって維持される対応するデータ保護ルートキーによって暗号化および復号化され得る。アプリケーションデータ保護キーは、オブジェクトデータ保護キーの暗号化および復号化のうち少なくとも1つを実行して、第1のソフトウェアアプリケーションから第2のソフトウェアアプリケーションへのデータオブジェクトの転送を促進することができる。当該方法はさらに、データオブジェクトおよびオブジェクトデータ保護キーを第1のソフトウェアアプリケーションから第2のソフトウェアアプリケーションに転送する前にオブジェクトデータ保護キーを暗号化するためのデータ共有キーを生成するステップと、データオブジェクトおよびオブジェクトデータ保護キーを第1のソフトウェアアプリケーションから第2のソフトウェアアプリケーションに転送した後にオブジェクトデータ保護キーを復号化するためのデータ共有キーを生成するステップとを含み得る。セキュリティマネージャアプリケーションモジュールおよび第1のソフトウェアアプリケーションのうち少なくとも1つは、第1のソフトウェアアプリケーションのアプリケーションデータ保護キーで、データオブジェクトのためのオブジェクトデータ保護キーを復号化することができ、第2のソフトウェアアプリケーションのアプリケーションデータ保護キーで、データオブジェクトのためのオブジェクトデータ保護キーを暗号化することができる。
【0020】
いくつかの実施形態は、ソフトウェアアプリケーションのセキュリティポリシーを動的に更新するための方法に関する。当該方法は、オリジナルのコンパイル後のオブジェクトコードを有するアプリケーションを演算装置上に提供するステップと、セキュリティポリシーを実施するように構成された置換オブジェクトコードを作成するように、メモリと動作可能に結合された少なくとも1つのプロセッサを用いてアプリケーションのオリジナルのオブジェクトコードを変更するステップと、第1のセキュリティポリシーを検索するステップと、置換オブジェクトコードを用いてセキュリティポリシーを実施するステップと、第1のセキュリティポリシーを第2のセキュリティポリシーと置換するステップと、置換オブジェクトコードを用いて第2のセキュリティポリシーを実施するステップとを含み、第1および第2のセキュリティポリシーは、実行コンテキスト、外部イベント、明確なポリシー再定義、ならびにグループおよびロールメンバーシップの変更からなる群から選択される少なくとも1つのファクタに基づく。
【0021】
第1または第2のセキュリティポリシーは、演算装置から離れたサーバから検索することができる。第1のアプリケーションは、リモートサーバから第1または第2のセキュリティポリシーを検索することができ、第2のアプリケーションは、第1のアプリケーションから第1または第2のセキュリティポリシーを検索する。置換オブジェクトコードの実行によって生じるデータはリモートサーバに送信することができる。演算装置はモバイルデバイスであり得る。
【0022】
いくつかの実施形態は、演算装置上におけるアプリケーション間の信頼性を確立するための方法に関する。当該方法は、各々がオリジナルのコンパイル後のオブジェクトコードを有するソフトウェアアプリケーションを演算装置上に提供するステップと、各々のアプリケーションのための置換オブジェクトコードを作成するように、メモリと動作可能に結合された少なくとも1つのプロセッサを用いて各々のアプリケーションのオリジナルのオブジェクトコードを変更するステップとを含み、置換オブジェクトコードは、アプリケーション間の共有の秘密にアクセスすることにより、アプリケーション間に信頼関係を確立するように構成される。
【0023】
当該方法はさらに、変更前に各々のソフトウェアアプリケーションのオリジナルのオブジェクトコードを署名ありの形式から署名なしの形式に変換するステップと、変更後に各々のソフトウェアアプリケーションの置換オブジェクトコードを署名なしの形式から署名ありの形式に変換するステップとを含み得る。当該方法は、演算装置上にセキュリティマネージャアプリケーションを提供するステップをさらに含み得る。各々のアプリケーションのための置換オブジェクトコードは、セキュリティマネージャアプリケーションと通信するよう変更されて、各々のソフトウェアアプリケーションの置換オブジェクトコードによってセキュリティマネージャアプリケーションから共有の秘密を取得する。当該方法はさらに、ソフトウェアアプリケーションの第1のアプリケーションの置換オブジェクトコードが共有の秘密にアクセスすることを可能にする前に、当該第1のアプリケーションの署名をセキュリティマネージャアプリケーションによって検証するステップを含み得る。署名は公開キーインフラストラクチャ(PKI)キーのプロダクトであってもよい。
【0024】
当該方法はさらに、ソフトウェアアプリケーションの第1のアプリケーションからの登録要求をセキュリティマネージャアプリケーションで受取るステップと、第1のアプリケーションが登録されると、セキュリティマネージャアプリケーションによってユーザにパスコードを促すステップと、パスコードを用いて、共有の秘密であるキーを生成するステップと、第1のアプリケーションにキーを提供するステップとを含み得る。当該方法はさらに、セキュリティマネージャアプリケーションによってアプリケーションデータ保護キーを生成するステップと、セキュリティマネージャアプリケーションによって、対応するデータ保護ルートキーを検索するステップと、セキュリティマネージャアプリケーションによって、対応するデータ保護ルートキーを用いてアプリケーションデータ保護キーを暗号化するステップとを含み得る。
【0025】
いくつかの実施形態は、演算装置上でデータオブジェクトをソースアプリケーションからデスティネーションアプリケーションにセキュアに転送するための方法に関する。当該方法は、演算装置上にソースアプリケーションおよびデスティネーションアプリケーションを提供するステップを含む。ソースアプリケーションおよびデスティネーションアプリケーションは各々、オリジナルのコンパイル後のオブジェクトコードを有する。当該方法はさらに、ソースアプリケーションのための第1の置換オブジェクトコードを作成するように、メモリと動作可能に結合された少なくとも1つのプロセッサを用いてソースアプリケーションのオリジナルのオブジェクトコードを変更するステップと、デスティネーションアプリケーションのための第2の置換オブジェクトコードを作成するように、メモリと動作可能に結合された少なくとも1つのプロセッサを用いてデスティネーションアプリケーションのオリジナルのオブジェクトコードを変更するステップと、オブジェクトデータ保護キーで暗号化されるデータオブジェクトをソースアプリケーションからデスティネーションアプリケーションに転送するステップと、ソースアプリケーションに関連付けられたソースアプリケーションキーをソースアプリケーションの第1の置換コードによって検索するステップと、ソースアプリケーションの第1の置換コードによって、検索されたソースアプリケーションキーでオブジェクトデータ保護キーを復号化するステップと、ソースアプリケーションの第1の置換コードによって、データ共有キーで、またはデスティネーションアプリケーションに関連付けられたデスティネーションアプリケーションキーで、オブジェクトデータ保護キーを暗号化するステップと、データ共有キーまたはデスティネーションアプリケーションキーで暗号化されたオブジェクトデータ保護キーをデスティネーションアプリケーションと共有するステップと、データ共有キーまたはデスティネーションアプリケーションキーで暗号化されたオブジェクトデータ保護キーをデスティネーションアプリケーションの第2の置換コードで復号化するステップと、暗号化されていない(unencrypted)オブジェクトデータ保護キーを用いて、オブジェクトデータをデスティネーションアプリケーションの第2の置換コードで復号化するステップとを含む。
【0026】
当該方法は、データ共有キーまたはデスティネーションアプリケーションキーで暗号化されたオブジェクトデータ保護キーをデスティネーションアプリケーションに転送するステップを含み得る。検索するステップは、演算装置上のセキュリティマネージャアプリケーションを用い得る。当該方法はさらに、ソースアプリケーションとデスティネーションアプリケーションとの間のデータオブジェクトの転送が制限されているかどうかをセキュリティマネージャアプリケーションによって判断するステップと、当該判断に基づいて検索を促進するステップとを含み得る。当該方法はさらに、検索を促進するステップの前に、中心のセキュリティアプリケーションによって、ソースアプリケーションまたはデスティネーションアプリケーションの署名を検証するステップを含み得る。署名は公開キーインフラストラクチャ(PKI)キーのプロダクトであってもよい。検索するステップは、暗号化されたソースアプリケーションキーを復号化するようにとの要求を含む暗号化されたソースアプリケーションキーをソースアプリケーションからセキュリティマネージャアプリケーションに送信するステップと、セキュリティマネージャアプリケーションによって、データ保護ルートキーを用いてソースアプリケーションキーを復号化するステップと、さらに、ソースアプリケーションキーをセキュリティマネージャアプリケーションからソースアプリケーションに転送するステップとを含み得る。検索するステップは、ソースアプリケーションキーについての要求をソースアプリケーションからセキュリティマネージャアプリケーションに送信するステップと、セキュリティマネージャアプリケーションによって、データ保護ルートキーを用いてソースアプリケーションキーを復号化するステップと、さらに、ソースアプリケーションキーをセキュリティマネージャアプリケーションからソースアプリケーションに転送するステップとを含み得る。検索するステップは、ソースアプリケーションからセキュリティマネージャアプリケーションに対してデータ保護ルートキーを要求するステップと、ソースアプリケーションによってデータ保護ルートキーを受取るステップと、ソースアプリケーションによって、データ保護ルートキーを用いてソースアプリケーションキーを復号化するステップとを含み得る。
【0027】
当該方法は、セキュリティマネージャアプリケーションによって、ソースアプリケーションキー、デスティネーションアプリケーションキーおよびデータ共有キーのうちの少なくとも1つを生成するステップをさらに含み得る。当該方法はさらに、セキュリティマネージャアプリケーションにソースアプリケーションが登録されるとソースアプリケーションキーを生成するステップ、または、セキュリティマネージャアプリケーションにデスティネーションアプリケーションが登録されるとデスティネーションアプリケーションキーを生成するステップを含み得る。当該方法はさらに、ユーザにパスコードを促すステップと、パスコードを用いてソースアプリケーションキーまたはデスティネーションアプリケーションキーを生成するステップを含み得る。当該方法はさらに、ソースアプリケーションによって要求されると、セキュリティマネージャアプリケーションによってデータ共有キーを生成するステップを含み得る。当該方法はさらに、デスティネーションアプリケーションの第2の置換コードによって、デスティネーションアプリケーションキーでオブジェクトデータ保護キーを暗号化するステップを含み得る。演算装置はモバイルデバイスであってもよい。
【0028】
本開示の特徴に従うと、機械読取り可能媒体が提供される。機械読取り可能媒体は、プロセッサおよびメモリを有する機械によって読取られると、当該機械に本開示の方法に従った動作を実行させる命令を与え得る。
【0029】
実施形態は、コンピュータによって実行されると、当該コンピュータに上記方法を実行させるコンピュータソフトウェアを含み得る。
【0030】
図面の簡単な説明
本開示の上述の特徴および目的は、添付の図面に関連付けて読まれる以下の説明に関連付けるとより明らかになるだろう。添付の図面においては、同様の参照番号は同様の要素を示す。
【発明を実施するための形態】
【0032】
詳細な説明
以下の詳細な説明は、多数の特徴および教示を別個にかつ組み合わせて利用する代表的な例を含み、添付の図面を参照しつつより詳細に多数の実施形態を記載する。この詳細な説明は、単に、本教示の好ましい局面を実施するためのさらなる詳細を当業者に教示するよう意図されたものに過ぎず、添付の特許請求の範囲を限定するよう意図されたものではない。したがって、以下の詳細な説明において開示される特徴の組み合わせは、教示を最も広い意味で実施するのに必ずしも必要ではない可能性があり、代わりに、単に本教示の特に代表的な例を記載するために教示されているに過ぎない。
【0033】
以下の詳細な説明のいくつかの部分は、コンピュータメモリ内で実行される動作のアルゴリズムおよびシーケンスに関して提示されている。これらのアルゴリズムに関する説明および表現は、データ処理技術に精通した人々によって用いられる手段であって、彼らの研究成果の本質を最も有効に他の当業者に伝えるためのものである。動作のアルゴリズムまたはシーケンスは、ここでは、そして一般的には、所望の結果に通じる矛盾のないステップのシーケンスであると考えられている。これらのステップは物理量の物理的な操作を必要とするステップである。通常、必ずしも必要ではないが、これらの量は、記憶、転送、組み合わせ、比較、および他の場合には操作、が可能な電気信号または磁気信号の形をとる。
【0034】
しかしながら、これらおよび同様の語のすべてが適切な物理量に関連付けられるべきであって、これらの量に適用される単に都合のよい標識に過ぎないことが留意されるべきである。特に規定のない限り、以下の説明から明らかになるように、記載全体を通じて、「処理する」または「演算する」または「計算する」または「判断する」または「表示する」などの語を用いた説明は、コンピュータシステムのレジスタおよびメモリ内の物理(電子)量として表わされるデータを処理して、電子装置のメモリもしくはレジスタまたは他のこのような情報記憶装置、送信装置もしくは表示装置内の物理量として同様に表わされる他のデータに変換するコンピュータシステムまたは同様の電子装置の動作およびプロセスを指している。
【0035】
この明細書中に記載される方法は、本質的に如何なる特定の電子装置または他の装置にも関連していない。さまざまな汎用のシステムは、この明細書中の教示に従ってプログラムと共に用いられてもよいか、または、必要な方法ステップを実行するためにより特化された装置を構成するのに好都合であることを証明し得る。これらのさまざまなシステムのために必要な構造が以下の記載から明らかになるだろう。この明細書中に記載されるように実施形態の教示を実現するためにさまざまなプログラミング言語が用いられ得ることが認識されるだろう。
【0036】
この特許文献は、モバイルデバイスを含む装置上のソフトウェアアプリケーションにセキュリティサービスを提供するための固有のシステム、方法および機械読取り可能媒体を記載する。これらのセキュリティサービスは、中でも、認証、承認、監査、シングルサインオン、セキュリティポリシーの実施、キーの管理および配布、セキュア通信、セキュアデータの記憶、およびセキュアデータの共有を含み得る。この目的のために、多数のプロトコルおよび基準が、この明細書中に記載される実施形態と組み合わせて説明および使用される。この明細書中に記載される実施形態は如何なるプロトコルまたは基準とも組み合わせて用いられてもよいが、以下のプロトコルおよび基準はそれら全体が引用によってこの明細書中に援用されている:IETF RFC 2631(Diffie-Hellman);IEEE 1363;IETF RFC 3280(X.509公開キーインフラストラクチャ);IETF RFC 4120(Kerberos V5);IETF RFC 4178(SPNEGO);IETF RFC 2616(HTTP 1.1);IETF RFC 4559;IETF RFC 4556(KerberosのためのPKINIT);IETF RFC 6101/2246/5246(SSL/TLS);SAML V1.0/1.1/2.0;OpenID;Oauth;WS−Federation;およびOATH HOTP/TOTP/OCRA。
【0037】
コンピュータアプリケーションのオブジェクトコードを変更することによるコンピュータアプリケーションのためのセキュリティサービス管理
当該技術においては、演算装置が一旦マルウェアに感染すると、コンピュータ上で実行されるほとんど如何なるアプリケーションも、その永続メモリをピーキングするかまたは永続メモリと他のアプリケーションとの間の通信を阻止することによってスヌープ(snooped)することができるために問題が生じる。いくつかのアプリケーションは、それらが送信したり、ディスクに保存したりするものなどすべてを暗号化することによってこれを最小限にするようにプログラムされているが、これにより、それらアプリケーションがファイルを伝達または共有するのに用いる他のすべてのアプリケーションだけでなく、それらの元来プログラムされていたソースコードに上述の特徴が必要となる。いくつかの実施形態は、暗号化および解読の追加、セキュアでないネットワークに対する呼出しの削除、セキュリティマネージャアプリケーションに対する暗号キーの要求などを行うために、演算装置にインストールされたアプリケーションのオリジナルのコンパイル後のオブジェクトコードを変更するステップを含む。たとえば、クリアテキストに電子メールを保存する電子メールクライアントアプリケーションの.dylibファイルは、暗号化を用いて電子メールを保存する別の.dylibファイルと切換えることができる。別の例においては、ビジネスインテリジェンスアプリケーションの記号表は、企業のファイアウォール外の電子メールメッセージを阻止するオリジナルの別のオブジェクトファィルとは異なるオブジェクトファィルを呼出すように変更することができる。さらに別の例においては、ポリシーエンジンは、新しいオブジェクトコードにコピーし、更新可能なポリシー上で実行することができる。
【0038】
一実施形態においては、モバイルデバイスのための集中型セキュリティサービスアーキテクチャがセキュリティマネージャアプリケーションを用いて提供される。本開示のある1つの特徴は、集中型セキュリティマネージャアプリケーションおよび統合した他のアプリケーションと、コンパイル後のオブジェクトコード変更によりセキュリティマネージャアプリケーションによって提供されるサービスとの組み合わせを含む。
【0039】
図1は、本開示の実施形態に従った、セキュリティサービスを提供するためのシステム100のブロック図を示す。システム100は、ネットワーク106を介して遠隔装置104にアクセスすることができる演算装置102を含み得る。
【0040】
一実施形態においては、演算装置102はメモリ108およびプロセッサ110を含み得る。メモリ108は複数のアプリケーションデータを格納するのに用いられてもよく、各々のアプリケーションデータは、ソフトウェアアプリケーションに関連付けられ、アプリケーションオブジェクトコードを含み得る。
【0041】
認識され得るように、メモリ108は、たとえば、エンドユーザの動作に応答してデータを格納および/または検索するために用いられてもよい。周知のように、メモリは、分割または相互参照され得るデータベースカテゴリを含み得るものであって、データベースなどの如何なる組み合わせもサーバ内から提供することができる。一実施形態においては、データベースの如何なる部分も、ネットワーク106を介して離れたところにまで提供することができる。外部データベースからの外部データは、デバイス102が理解し得るものであれば如何なる標準フォーマットでも提供することができる。たとえば、プロバイダにおける外部データベースは、たとえば名前、ユーザIDおよびコンピュータ同定数などのエンドユーザデータを、標準フォーマットで、サーバからの要求に応答して有利に提供することができ、エンドユーザデータブロックは、コードモジュールが理解し得る関数呼出しフォーマットに変換される。
【0042】
認識され得るように、メモリ108は、機械読取り可能媒体などの記憶装置であってもよく、情報をプロセッサによって読取り可能な形式で提供(すなわち、格納および/または送信)する如何なるメカニズムであってもよい。たとえば、機械読取り可能媒体は、読取り専用メモリ(read only memory:ROM)、ランダムアクセスメモリ(random access memory:RAM)、キャッシュ、ハードディスクドライブ、フロッピー(登録商標)ディスクドライブ、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリ素子、または、情報を格納することができる他の如何なるデバイスであってもよい。付加的には、機械読取り可能媒体はまた、コンピュータ記憶媒体および通信媒体を含んでもよい。機械読取り可能媒体は、コンピュータ読取り可能命令、データ構造、プログラムモジュールまたは他のデータなどの情報を格納するための如何なる方法または技術において実現される揮発性媒体および不揮発性媒体、取外し可能媒体および取外し不可能媒体を含む。機械読取り可能媒体はまた、RAM、ROM、EPROM、EEPROM、フラッシュメモリまたは他のソリッドステートメモリ技術、CD−ROM、DVDまたは他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または、所望の情報を格納するのに用いることができ、コンピュータによってアクセスすることができる他の如何なる媒体をも含むが、これらに限定されない。
【0043】
演算装置102はまた、セキュリティマネージャアプリケーションモジュール112を含むプロセッサ110に電気的および/または物理的に結合された1つ以上のファンクションモジュールを含んでもよい。この明細書中において用いられる場合、モジュールという語は、ハードウェアおよび/もしくはファームウェアにおいて具体化されるロジックを指すか、または、たとえばC++などのプログラミング言語で書込まれ、エントリポイントおよびエグジットポイントを有する可能性のあるソフトウェア命令の集まりを指す。ソフトウェアモジュールは、コンパイルされて実行可能プログラムにリンクされ得るか、ダイナミックリンクライブラリにインストールされ得るか、または、BASICなどの翻訳言語で書込まれ得る。ソフトウェアモジュールが他のモジュールから呼出し可能であり得ること、および/または、検出されたイベントもしくは割込みに応答して呼出され得ることが認識されるだろう。ソフトウェア命令はEPROMなどのファームウェアに埋込まれてもよい。ハードウェアモジュールがゲートおよびフリップフロップなどの接続された論理ユニットで構成され得ること、ならびに/または、プログラマブルゲートアレイなどのプログラム可能なユニットで構成され得ることがさらに認識されるだろう。この明細書中に記載されるモジュールは、好ましくは、ソフトウェアモジュールとして実現されるが、ハードウェアおよび/またはファームウェアで表わされてもよい。
【0044】
一実施形態においては、各々のモジュールはモジュラーコードオブジェクトとして提供される。この場合、コードオブジェクトは、典型的には、一組の標準化された関数呼出しを通じてインタラクトする(interact)。一実施形態においては、コードオブジェクトはC++などの好適なソフトウェア言語で書込まれているが、コードオブジェクトは如何なる低レベル言語または高レベル言語でも書込むことができる。一実施形態においては、コードモジュールは、C++で実現され、Windows(登録商標)プラットフォーム、iOSプラットフォーム、Android(登録商標)プラットフォームなどの上で実行されるコンピュータ上でコンパイルされる。当業者であれば、ハードウェアに対して直接的なコード実現例を含む実現例がいくつでも実現可能であることを認識するだろう。
【0045】
セキュリティマネージャアプリケーションモジュール112は、オブジェクトコード変更モジュール114および/またはオブジェクトコード署名変換モジュール116によって変更されたアプリケーションオブジェクトコードに動作可能に結合され得る。セキュリティマネージャアプリケーションモジュール112は、セキュリティサービス、たとえばネットワーク106上でのセキュア通信、についての要求にソフトウェアアプリケーションを介して応答し得る。オブジェクトコード変更モジュール114および/またはオブジェクトコード署名変換モジュール116は、セキュリティマネージャアプリケーションモジュール112に対するセキュリティサービスについての要求の送信を容易にするようにアプリケーションオブジェクトコードを変更し得る。各々のアプリケーションデータのための変更済みアプリケーションオブジェクトコードは、メモリ108に格納されてもよい。
【0046】
図2は、本開示の実施形態に従った、集中型セキュリティサービス117を同じプラットフォーム上に存在する他のソフトウェアアプリケーション118〜122に提供するための集中型セキュリティマネージャアプリケーションモジュール112のブロック図を示す。認識され得るように、他のソフトウェアアプリケーション118〜122は、他のソフトウェアアプリケーション118〜122におけるソースコードを変更することによってではなく、既存のアプリケーションオブジェクトコード124〜128を変更することによって集中型セキュリティサービス117にリンクされてもよい。一実施形態においては、オブジェクトコード変更124〜128は、他の公知のオブジェクトコード変更技術の中でも、動的ライブラリまたは静的ライブラリの投入、ロードコマンドの追加、シンボルの置換、スウィズリングおよび挿入を含み得る。当業者であれば、変更という語が追加、置換および/または削除を含み得ることを認識するだろう。
図3は、本開示の実施形態に従った、オブジェクトコード変更の例示的なブロック図を示す。
【0047】
一実施形態においては、認証トークン、キー、クレデンシャル、シングルサインオントークン、識別子、セキュリティポリシー、セキュリティコマンド、セキュリティ構成、セッションハンドル、セッショントークンおよびセキュア通信チャネルなどのセキュリティアーティファクトは、セキュリティマネージャアプリケーションモジュール112によって生成され、他のソフトウェアアプリケーション118〜122に対して要求に応じて分配されてもよい。
図4は、本開示の実施形態に従った、他のソフトウェアアプリケーション118〜122にセキュリティアーティファクト130〜134を送信するセキュリティマネージャアプリケーションモジュール112を示す例示的なブロック図である。
【0048】
認識され得るように、セキュリティマネージャアプリケーションモジュール112は、特にその目的のために構築された特定のソフトウェアアプリケーション(たとえば、セキュアコンテナアプリケーション)であってもよい。別の実施形態においては、セキュリティマネージャアプリケーションモジュール112は、変更されたモバイルアプリケーションであってもよく、たとえば、所与のデバイスにインストールされるかまたは所与のデバイス上で起動される第1のアプリケーションであってもよい。この場合、セキュリティマネージャ機能は上述されるオブジェクトコード変更の一部をなしている。一実施形態においては、特殊用途のセキュリティマネージャアプリケーションモジュールを備えたシステムは多数のアプリケーションにわたるコードおよびファンクションの重複を最小限にすることが好ましい可能性があるが、これは不要である。
【0049】
当業者であれば、オブジェクトコードを変更するためのいくつかの方法があることを認識するだろう。一実施形態においては、オブジェクトコード変更124〜128の段階が、ソフトウェアアプリケーション118〜122の実行時に動的に実行されてもよい。これにより、オブジェクトコード変更124〜128および結果として生じるアプリケーション挙動変更を、その実行時の特定の情況においてその時点で利用可能となるデータに基づいて決定することが可能となり得る。
【0050】
図5は、本開示の実施形態に従った、既存のアプリケーションオブジェクトコードを変更することによってソフトウェアアプリケーション118〜122の挙動を変更する方法を示す例示的なブロック図である。変更プロセスは2段階で実行されてもよい。ソフトウェアアプリケーション118〜122がそれが実施されるであろうプラットフォームにインストールされる前に、オブジェクトコード変更プロセスの第1段階が実行されてもよく、結果として、中間の変更済みアプリケーションオブジェクトコード130が得られることとなる。ソフトウェアアプリケーション118〜122がそれが実施されるであろうプラットフォームにインストールされた後に、オブジェクトコード変更プロセスの第2段階が実行されてもよく、結果として、最終的な変更済みアプリケーションオブジェクトコード131が得られることとなる。
【0051】
一実施形態においては、オブジェクトコード変更プロセスの第2段階は、中間の変更済みアプリケーションオブジェクトコード130によってそれ自体で実行されてもよい。別の実施形態においては、オブジェクトコード変更プロセスの第1段階および第2段階は、構成および/またはポリシーに基づいて別のやり方で実行されてもよい。認識され得るように、オブジェクトコード変更プロセスの第2段階は、アプリケーションの実行が開始されるたびに違ったやり方で実行されてもよく、ならびに/または、実行コンテキスト、外部イベント、明確なポリシー再定義、さまざまなカウンタ、およびモバイルデバイスを所有するユーザのグループおよびロールメンバーシップの変更を含むがこれらに限定されないさまざまなファクタに基づいて実行する間に違ったやり方で実行されてもよい。別の実施形態においては、オブジェクトコード変更プロセスの第2段階では、外部ソースから何らかの新しいオブジェクトコードをロードしてもよい。
【0052】
本開示の実施形態に従うと、オブジェクトコード変更124〜126は、既存のアプリケーション機能を停止させないようにソフトウェアアプリケーション118〜122の挙動を変更するために用いられてもよい。これは、オリジナルの未変更のアプリケーションコードがプラットフォームまたはオペレーティングシステムによって実行される前に、変更済みのオブジェクトコードをプラットフォームまたはオペレーティングシステムによって実行させることによって達成されてもよい。
【0053】
一実施形態においては、(アプリケーションソースコードを変更することによってではなく)既存のアプリケーションオブジェクトコードを変更することによってソフトウェアアプリケーション118〜122の挙動を分析および変更する方法が提供される。当該方法は、未変更のアプリケーションオブジェクトコードおよびいずれかの関連付けられた構成情報を分析して、アプリケーション実行プロファイルを抽出するために実行するよう意図されているプラットフォームまたはオペレーティングシステムによって如何に実行されるかを判断するステップと、もはやプラットフォームまたはオペレーティングシステムによって直接用いられることのないように未変更のアプリケーションオブジェクトコードおよびいずれかの関連付けられた構成情報を変更するステップと、アプリケーション実行プロファイルを用いて、未変更のアプリケーションが、任意には新しい関連付けられた構成情報を含む新しいオブジェクトコードでプラットフォームまたはオペレーティングシステムによって如何に実行されるかを再現するステップと、新しいオブジェクトコードを未変更のアプリケーションオブジェクトコードと組み合わせて、結果として変更済みのアプリケーションオブジェクトコード124〜128を得るステップと含み得る。
【0054】
一実施形態においては、変更済みのオブジェクトコード124〜128は、ソフトウェアアプリケーション118〜122に投入される動的ライブラリを含み得る。認識され得るように、動的ライブラリを参照する新しいロードコマンドが、未変更のアプリケーションオブジェクトコードに存在する既存のロードコマンドのリストに追加されてもよい。
【0055】
認識され得るように、オブジェクトコード変更プロセスに対する入力は、署名なしの形式の未変更のモバイルアプリケーションオブジェクトコードであってもよく、オブジェクトコード変更プロセスからの出力は、署名なしの形式または署名ありの形式の変更済みのモバイルオブジェクトコードであってもよい。一実施形態においては、未変更のモバイルアプリケーションオブジェクトコードの署名ありの形式を未変更のモバイルアプリケーションオブジェクトコードの署名なしの形式に変換するプロセスは、オブジェクトコード変更プロセスの前に実行されてもよい。別の実施形態においては、変更済みのモバイルアプリケーションオブジェクトコードの署名なしの形式を変更済みのモバイルアプリケーションオブジェクトコードの署名ありの形式に変換するプロセスは、オブジェクトコード変更プロセスの後に実行されてもよい。さらに別の実施形態においては、中間の変更済みのモバイルアプリケーションオブジェクトコードの署名なしの形式を中間の変更済みのモバイルアプリケーションオブジェクトコードの署名ありの形式に変換するプロセスは、これまでに説明した2段階のオブジェクトコード変更プロセスの第1段階の後に実行されてもよい。
【0056】
一実施形態においては、
図1に示されるオブジェクトコード署名変換モジュール116は、オブジェクトコード変更モジュール114によるアプリケーションオブジェクトコードの変更前にアプリケーションオブジェクトコードを署名ありの形式から署名なしの形式に変換するために用いられてもよく、オブジェクトコード変更モジュール114によるアプリケーションオブジェクトコードの変更後にアプリケーションオブジェクトコードを署名なしの形式から署名ありの形式に変換するために用いられてもよい。
【0057】
認識され得るように、未変更のアプリケーションオブジェクトコードを署名ありの形式から署名なしの形式に変換すること、および/または、変更済みのアプリケーションオブジェクトコードを署名なしの形式から署名ありの形式に変換することは、オブジェクトコード変更プロセスの一環として実行されてもよい。変更済みのオブジェクトコード124〜128は、アプリケーション自体内におけるおよび/またはアプリケーションが使用する既存のプログラマティックインターフェイス、クラス、オブジェクトおよび/またはファンクションの挙動に対する変更を含み得る。プログラマティックインターフェイス、クラス、オブジェクトおよび/またはファンクションはモバイルデバイスプラットフォームによって提供されてもよい。
【0058】
一実施形態においては、当該プロセスにより、結果として、既存のプログラマティックインターフェイス、クラス、オブジェクトもしくはファンクションがブロックされ、取除かれ、代替的な実現例と置換される可能性および/または部分的もしくは全体的に変更される可能性がある。別の実施形態においては、当該プロセスにより、結果として、既存のプログラマティックインターフェイス、クラス、オブジェクトもしくはファンクションの使用前および/または使用後に新しいプログラム機能が実行される可能性がある。さらに別の実施形態においては、たとえ既存のプログラマティックインターフェイス、クラス、オブジェクトまたはファンクションがオブジェクトコードに依然として存在していたとしても、当該プロセスにより、結果として、既存のプログラマティックインターフェイス、クラス、オブジェクトまたはファンクションの代わりに新しいプログラム機能が実行される可能性がある。
【0059】
認識され得るように、オブジェクトコード変更124〜128はモジュールで構成されてもよく、この場合、各々のモジュールがオブジェクトコード変更124〜128の一部を実現し、オブジェクトコード変更プロセス中にアプリケーションに適用されるモジュールの組が構成および/またはポリシーによって制御されてもよい。オブジェクトコード変更プロセス中にソフトウェアアプリケーション118〜122に適用されるモジュールの組は、先に説明した2段階のオブジェクトコード変更プロセスの第1段階および/または第2段階中に決定されてもよい。オブジェクトコード変更プロセス中にソフトウェアアプリケーション118〜122に適用されるモジュールの組はまた、アプリケーションによって配送される構成ファイルによって決定されてもよい。
【0060】
本開示の実施形態に従うと、(アプリケーションソースコードを変更することによってではなく)既存のアプリケーションオブジェクトコードを変更することによってソフトウェアアプリケーション118〜122の記憶挙動を変更する方法が提供される。当該方法は、未変更のアプリケーションがデータの記憶を直接要求する既存のプログラマティックインターフェイスまたはファンクションを、既存の挿入またはスウィズリング技術を用いて、新しいインターフェイスまたはファンクションと置換するステップを含み得る。新しいプログラマティックインターフェイスまたはファンクションは、データをその書込み時に暗号化するのに用いられてもよく、および/または、データをその読取り時に復号化するのに用いられてもよい。新しいプログラマティックインターフェイスまたはファンクションはまた、既存のプログラマティックインターフェイスまたはファンクションを呼出してもよい。認識され得るように、既存のプログラマティックインターフェイスまたはファンクションはモバイルデバイスプラットフォームによって提供され得る。既存のプログラマティックインターフェイスまたはファンクションはPOSIX I/O APIの一部であってもよい。
【0061】
本開示の実施形態に従うと、既存のアプリケーションオブジェクトコードを変更することによってソフトウェアアプリケーション118〜122の通信挙動を変更する方法が提供される。当該方法は、変更済みのアプリケーションオブジェクトコードを用いてソフトウェアアプリケーション118〜122からの通信要求を停止させるステップを含み得る。変更済みのアプリケーションオブジェクトコードは、必要なセキュリティアーティファクトが通信要求に存在しているかどうかをチェックするために用いられてもよい。一実施形態においては、必要なセキュリティアーティファクトが通信要求に存在していない場合、変更済みのアプリケーションオブジェクトコードが必要なセキュリティアーティファクトを検索してもよい。必要なセキュリティアーティファクトを検索した後、変更済みのアプリケーションオブジェクトコードがこれらセキュリティアーティファクトを通信要求に追加し、通信要求の継続を可能にし得る。認識され得るように、通信要求はネットワーク通信要求であってもよい。
【0062】
セキュリティアーティファクトは、認証トークン、キー、クレデンシャル、シングルサインオントークン、識別子、セキュリティポリシー、セキュリティコマンド、セキュリティ構成、セッションハンドル、セッショントークンまたはセキュア通信チャネルであってもよい。セキュリティアーティファクトは、サーバおよび/またはセキュリティマネージャアプリケーションモジュール112から検索されてもよい。
【0063】
コンピュータアプリケーションセキュリティポリシーのオブジェクトコードを変更することによるコンピュータアプリケーションセキュリティポリシーの変更
当該技術においては、コンピュータアプリケーションがコンピュータにインストールされると、そのセキュリティ手順またはルールが典型的には変更できなくなるため問題となる。いくつかの実施形態は、セキュリティポリシーを更新することができるようにアプリケーションのオブジェクトコードを変更するステップを含む。アプリケーションのオブジェクトコードは、追加、削除、置換、編集、または変更が可能である。たとえば、モバイルデバイスが世界中を移動して回っていると判断された場合、リモートサーバからセキュリティポリシーテキストファイルを検索するためのステップを追加するものと置換されたデータの保存および検索に関するそのオリジナルの.dylib(または.soまたは.dll)ファイルを有してデバイス上で実行される電子メールクライアントが、リモートサーバから新しいポリシーをダウンロードすることができる。新しいポリシーは、メッセージ通信なし、チャットなしまたは印刷なしなどの海外旅行のための新しいルールを導入することができる。別の例として、新しいポリシーは、ビジネスインテリジェンスアプリケーションによって保存または送信されたものすべての暗号化を規定し得るだろう。
【0064】
図6〜
図11は、本開示の実施形態に従った、オブジェクトコードにポリシーエンジン132を投入することによってソフトウェアアプリケーション118〜122の挙動を変更するための方法の例示的なブロック図を示す。当該方法は、ソフトウェアアプリケーション118〜122がデータ漏洩防止ポリシー、アクセス制御ポリシーなどを含むセキュリティポリシーに準拠することを確実にするポリシーエンジン132〜136をソフトウェアアプリケーション118〜122に投入するステップを含み得る。
【0065】
認識され得るように、ソフトウェアアプリケーション132〜136は、
図7〜
図9に示されるように、セキュリティマネージャアプリケーションモジュール112によって提供されるセキュリティサービスにリンクされてもよい。
図8に示されるように、ポリシーエンジン132〜136によって実施されるポリシーはリアルタイムに変化し得る(動的である)。これは、実行コンテキスト、さまざまなカウンタ、外部イベント、明確なポリシー再定義、ならびにデバイスのユーザのグループおよびロールメンバーシップの変更を含むがこれらに限定されないさまざまなファクタに基づいてもよい。
【0066】
図7〜
図11に示されるように、セキュリティマネージャアプリケーションモジュール112は任意にはポリシーエンジン137を含んでもよい。ポリシーエンジン132〜136は、ソフトウェアアプリケーション118〜122に送信されリモートロック、ワイプ、無効化などを含むコマンドの処理をサポートしてもよい。ワイプコマンドを処理することにより、結果として、ソフトウェアアプリケーション118〜122がその初期(未使用)状態に設定し直される可能性がある。個々のポリシー(およびコマンド)は、すべてのソフトウェアアプリケーション118〜122、ソフトウェアアプリケーション118〜122の一部、単一のソフトウェアアプリケーション118、またはソフトウェアアプリケーション118の一部に適用されてもよい。
【0067】
図9に示されるように、ポリシー(およびコマンド)は、各々のソフトウェアアプリケーション118〜122によってセキュリティマネージャアプリケーションモジュール112から検索されてもよい。代替的には、
図10に示されるように、ポリシー(およびコマンド)は、各々のソフトウェアアプリケーション118〜122によってデバイス外にあるポリシーサーバ138から検索されてもよい。一実施形態においては、ポリシー(およびコマンド)は、各々のソフトウェアアプリケーション118〜122によって、デバイス外にあるポリシーサーバ138からポリシー(およびコマンド)を検索するセキュリティマネージャアプリケーションモジュール112から検索されてもよい。
図11に示されるように、ポリシー(およびコマンド)はまた、予めポリシー(およびコマンド)を検索した別のソフトウェアアプリケーション118〜122から(セキュリティマネージャアプリケーションモジュール112を含む)各々のソフトウェアアプリケーション118〜122によって検索されてもよい。認識され得るように、(セキュリティマネージャアプリケーションモジュール112を含む)各々のソフトウェアアプリケーション118〜122によるポリシー(およびコマンド)の検索は、プッシュメカニズム、プルメカニズム、ポーリング、コールバック関数、イベントの登録、同報通信などを含むがこれらに限定されないさまざまな方法を用いて実行されてもよい。
【0068】
一実施形態においては、ポリシーの実施またはコマンドの実行により、結果として、実行結果が生成される可能性がある。実行結果は、セキュリティマネージャアプリケーションモジュール112および/またはポリシーサーバ138に送り返されてもよい。一実施形態においては、実行結果は監査イベントであってもよい。実行結果は、アプリケーションの使用についての統計を集める目的で用いられるデータであってもよい。実行結果はまた、1つ以上のソフトウェアアプリケーション118〜122が用いられてからどれくらいの時間が経過したのかを判断する目的で用いられるデータであってもよい。認識され得るように、各々のソフトウェアアプリケーション118〜122においてポリシーが実施されかつコマンドが実行され得る方法は、上述のオブジェクトコード変更プロセスを含み得る。
【0069】
当業者であれば、いくつかのセキュリティサービスが、それらのオブジェクトコードの変更後に、セキュリティマネージャアプリケーションモジュール112によってソフトウェアアプリケーション118〜122に提供され得ることを認識するだろう。たとえば、セキュリティサービスは、認証、承認、監査、シングルサインオン、休止時のデータの保護、移送時のデータの保護、データ漏洩保護ポリシーの実施、アクセス制御ポリシーの実施、アプリケーションコマンドの実行、キーの管理、キーの配布、プログラム間でのセキュアデータの共有、ソフトウェアアプリケーション118〜122間でのセキュア通信、プロビジョニング、アプリケーションライフサイクル管理、損なわれたプラットフォームの検出、損なわれたアプリケーションの検出、などを含み得る。
【0070】
付加的には、当業者であれば、使用され得るいくつかのタイプの認証、シングルサインオン、データ漏洩保護ポリシー、アクセス制御ポリシー、アプリケーションコマンド、およびセキュリティアーティファクトが存在することを認識するだろう。認証のタイプは、パスワード、PKI証明、チャレンジ/レスポンス、ワンタイムパスワード、セキュリティトークン、生体認証などを含み得る。シングルサインオンのタイプは、Kerberos、NTLM、SAML、OpenID、OAuth、WS−Fed、パスワード、HTTPクッキーなどを含み得る。実施可能なデータ漏洩保護ポリシーのタイプとしては、オフライン記憶なし、バックアップなしであり、信頼されたアプリケーションに対するオープンイン(open-in)の制限、信頼されたアプリケーションに対するコピー/ペーストの制限を含み得るが、電子メールなし、メッセージ通信なし、チャットなし、ソーシャルシェアリングなし、印刷なし、などであり得る。実施可能なアクセス制御ポリシーのタイプは、認証強度、認証頻度、停止中のタイムアウト、認証セッション期間、使用可能にされたアプリケーションのリスト、ウェブサイト、およびウェブサービスブラックリスト/ホワイトリスト、セキュリティ侵害の検出、不活動期間、タイムフェンス、ジオフェンスなどを含み得る。実行可能なアプリケーションコマンドのタイプは、アプリケーション無効化、リモートロック、リモートワイプなどを含み得る。ソフトウェアアプリケーション118〜122に分配されたセキュリティアーティファクトのタイプは、ユーザクレデンシャル、認証トークン、シングルサインオントークン、識別子、データ漏洩保護ポリシー、アプリケーションポリシー、アプリケーションコマンド、アプリケーション構成などを含み得る。
【0071】
コンピュータ上でのアプリケーション間における信頼性の確立
当該技術においては、他のアプリケーションが損なわれている可能性があるせいで、セキュアアプリケーションが同じコンピュータ上の別のアプリケーションとデータを共有することができるかどうかを認識しないかもしれないという問題がある。他のアプリケーションはマルウェアであるかもしれず、または、マルウェアによって損なわれた正当なアプリケーションであるかもしれない。いくつかの実施形態は、デバイスがインストールされると、暗号キーまたはキーペアなどの共有の秘密のために、各アプリケーションを中心のセキュリティアプリケーションに登録させるかまたは互いに登録させることによって、モバイルデバイス上におけるアプリケーション間の信頼性を確立するステップを含む。たとえば、デバイスに新しいアプリケーションがインストールされると、ユーザは、パスワードを選択するように促され、パスワードを用いてアプリケーションのためのキーが作成される。別の信頼されたアプリケーションがインストールされたアプリケーションとデータを共有することを所望する場合、他の信頼されたアプリケーションがターゲットアプリケーションのためのキーを用いて、そのためのデータを暗号化することができる。
【0072】
いくつかの実施形態の技術的な利点として、時間が重要視されない非緊急時に、演算装置上のアプリケーションが互いに対する信頼性を確立することができる点が挙げられる。アプリケーションの署名は、それらアプリケーションが元来インストールされていたときに存在していた署名と一致するかどうかを判断するために、後で比較することができる。
【0073】
認識され得るように、セキュリティマネージャアプリケーションモジュール112は、信頼されたアプリケーションにセキュリティサービスおよび極秘データを提供する態様で、モバイルデバイスなどのデバイス上でソフトウェアアプリケーション118〜122間に信頼性を確立するために用いられてもよい。
図12は、本開示の実施形態に従った、セキュリティマネージャアプリケーションモジュール112を用いてソフトウェアアプリケーション118〜122間に信頼性を確立する方法を示す例示的なブロック図である。ソフトウェアアプリケーション118〜122を介してセキュリティサービスについての要求に応答するセキュリティマネージャアプリケーションモジュール112は、ソフトウェアアプリケーション118〜122が共通のPKIキーで署名される場合に、セキュリティサービスを促進する。ソフトウェアアプリケーション118〜122が、既存のコンピューティングプラットフォーム能力および/またはセキュリティマネージャアプリケーションモジュール112を活用することによってインストールされると、各々のソフトウェアアプリケーション118〜122の署名が検証され得る。
図12に示されるように、コンピューティングプラットフォームは、プラットフォーム署名検証モジュール142を介して各々のソフトウェアアプリケーション118〜122の署名を検証してもよく、セキュリティマネージャアプリケーションモジュール112は、セキュリティマネージャアプリケーション署名検証モジュール140を介して各々のソフトウェアアプリケーション118〜122の署名を検証してもよい。一実施形態においては、セキュリティマネージャアプリケーションモジュール112は、ソフトウェアアプリケーション118〜122および関連付けられたコンピューティングプラットフォームが損なわれていないことを確認し、ソフトウェアアプリケーション118〜122の署名を検証するために用いられてもよい。
【0074】
各々のソフトウェアアプリケーション118〜122の署名は、既存のコンピューティングプラットフォーム能力を活用することによって、および/または、セキュリティマネージャアプリケーションモジュール112によって、実行時に検証されてもよい。同じPKIキーで署名されたソフトウェアアプリケーション118〜122にとって利用可能な共有の通信メカニズムは、セキュリティマネージャアプリケーションモジュール112と信頼されたソフトウェアアプリケーション118〜122のうちの残りとに対する信頼性を確立するために用いられてもよい。iOSプラットフォーム上におけるこのような共有通信メカニズムの一例は、キーチェーンにデータを書込むことである。
【0075】
一実施形態においては、PKIキーの証明書に含まれるかまたはPKIキーの証明書に関連付けられる識別子は、一群のソフトウェアアプリケーション118〜122を互いに信頼させるためにこれらソフトウェアアプリケーション118〜122の各々に加えられてもよい。
【0076】
別の実施形態においては、すべてのアプリケーションは、それらに埋込まれた共通のキーで構築される。このような場合、複数のアプリケーションデータは共通のキーを含む。
図13は、本開示の実施形態に従った、共通のキー144を有するソフトウェアアプリケーション118〜122と通信するセキュリティマネージャアプリケーションモジュール112を示す例示的なブロック図である。ソフトウェアアプリケーション118〜122が信頼されることを所望する場合、セキュリティマネージャアプリケーションモジュールの通信交換検証モジュール146との通信交換を開始してもよい。この通信交換は、共通のキー144で暗号化され得るか、任意には署名され得るか、またはMACを確認され得る。認識され得るように、多数の特定かつ周知の暗号メカニズムのうちのいずれかをこの通信交換において用いることにより、信頼されることを所望するソフトウェアアプリケーション118〜122とセキュリティマネージャアプリケーションモジュール112とが同じ共通のキーを共有することを検証することができる。通信交換を検証する前に、セキュリティマネージャアプリケーションモジュール112を用いて、コンピューティングプラットフォームおよび/またはソフトウェアアプリケーション118〜122が損なわれていないことをチェックしてもよい。
【0077】
図14は、本開示の実施形態に従った、セキュリティマネージャアプリケーションモジュール112に対する信頼性を確立するためのソフトウェアアプリケーション118〜122のパスコード登録を示す例示的なブロック図である。一実施形態においては、ソフトウェアアプリケーション118〜122が最初にインストールされるとき、それらは信頼されていない。信頼性を得るために、ソフトウェアアプリケーション118〜122はセキュリティマネージャアプリケーションモジュール112に登録要求を行ってもよい。次いで、セキュリティマネージャアプリケーションモジュール112は、信頼されることを要求しているソフトウェアアプリケーション118〜122の名前を示しかつアプリケーション登録パスコード148を提供するダイアログをユーザに提示してもよい。このダイアログを提示する前に、セキュリティマネージャアプリケーションモジュール112を用いて、コンピューティングプラットフォームおよび/またはソフトウェアアプリケーション118〜122が損なわれていないことをチェックしてもよい。
【0078】
一実施形態においては、アプリケーション登録パスコード148が、信頼されていないソフトウェアアプリケーション118〜122によって表示された対応するダイアログボックスに入力されてもよく、さらに、セキュリティマネージャアプリケーションモジュール112と信頼されたソフトウェアアプリケーション118〜122のうちの残りとに対する信頼性を確立するために用いられるキー150を導出するために用いられてもよい。この導出されたキー150は、セキュリティマネージャアプリケーションモジュール112の通信交換検証モジュール146との通信交換を開始するために用いられてもよい。上述のとおり、この通信交換は、キー150で暗号化されてもよく、任意には署名されてもよく、またはMACを確認されてもよい。一実施形態においては、このダイアログを提示する前に、変更済みのオブジェクトコードを用いて、コンピューティングプラットフォームおよび/またはソフトウェアアプリケーション118〜122が損なわれていないことをチェックしてもよい。
【0079】
認識され得るように、セキュリティマネージャアプリケーションモジュール112は、アプリケーション信頼性を確立するためにソフトウェアアプリケーション118〜122からの登録要求に応答し得る。セキュリティマネージャアプリケーションモジュール118〜122は、アプリケーション登録パスコード148を入力するようユーザに促し、アプリケーション登録パスコード148を用いてアプリケーション信頼性を確立するためにキー150を生成して、セキュリティマネージャアプリケーションモジュール112によってアプリケーションソフトウェア118〜122に提供されるセキュリティサービスを促進し得る。
【0080】
当該方法のうちの1つを用いて信頼性を確立した結果、キーなどの1つ以上のセキュリティアーティファクトは、セキュリティマネージャアプリケーションモジュール112から、新しく信頼されたソフトウェアアプリケーション118〜122に分配され得る。次いで、これらのセキュリティアーティファクトは、セキュアにセキュリティサービスを要求するかまたはデータを交換するのに用いられてもよい。このようにして、セキュリティマネージャアプリケーションモジュール112は、ソフトウェアアプリケーション118〜122にキー150を提供して、ソフトウェアアプリケーション118〜122がセキュリティマネージャアプリケーションモジュール112にセキュリティサービスについての要求を送信することを可能にし得る。
【0081】
アプリケーション間におけるコンピュータ間の保護された通信
当該技術においては、アプリケーションによって格納されたデータまたはアプリケーション間の通信が、同じデバイス上で実行されるマルウェアによってスヌープ(snoop)される可能性があるという問題がある。マルウェアがデバイスに感染してしまうと、そのマルウェアは、典型的には、メモリ内もしくはディスク上の暗号化されていないデータまたはアプリケーション間の暗号化されていない通信にアクセスすることができる。そして、これは、ユーザに知られることなくバックグランドにおいて密かに行うことができる。
【0082】
いくつかの実施形態の技術的な利点により、デバイス上の登録済みアプリケーション間における通信および保存されたデータをすべて暗号化することが実質的に可能となる。アプリケーション内のデータの暗号化および復号化のためのキーはそれら自体が暗号化されており、攻撃しようとする者がキーを得るのを阻止する。暗号化されたデータとして1つのアプリケーションに残存するデータは、データを復号化しなくても別のアプリケーションに転送することができ、処理時間および処理電力を節約することができる。代わりに、データを暗号化するキーは、それ自体が暗号化されてラップされた状態で、アプリケーション間を転送される。マルウェアがデバイスに至る行程を見つけたとしても、アプリケーション間におけるデータの転送は比較的セキュアである。
【0083】
認識され得るように、セキュリティマネージャアプリケーションモジュール112は、デバイス上のソフトウェアアプリケーション118〜122間でデータを共有するように構成および/またはプログラムされて、以下の特徴を容易にし得る。すなわち、データは、信頼された一群のアプリケーション間で自由に共有することができるが、信頼されていないアプリケーションにはエクスポートされない可能性がある;データは、信頼されていないアプリケーションから信頼されたアプリケーションにインポートすることができる;信頼されたアプリケーション内に格納されたデータはいつでも暗号化され得る;信頼されたアプリケーション間で共有されるデータは、信頼されたアプリケーション間での移送時に暗号化され得る;大きなデータオブジェクトは、アプリケーション間で共有するために再度暗号化される必要がなくなり、これにより、共有中に大規模な演算が行われるのが回避され得;(UIダイアログなどを受理する)ユーザインタラクションを必要とすることなくアプリケーション間でデータを共有することが可能となり得る。
【0084】
さらに、所与のデータオブジェクトがどんなアプリケーションに公開される(共有される)べきであるかを示すリストからユーザインタラクションが選択されることが所望される場合、セキュリティマネージャアプリケーションモジュール112は、ユーザインターフェイスを介して、信頼されたソフトウェアアプリケーション118〜122のリストを表示するように構成および/またはプログラムされてもよい。データは、ドキュメント、セキュリティアーティファクト、ポリシー、コマンド、アプリケーション間の要求/応答などを含み得る。データは、デバイス上の信頼されたソフトウェアアプリケーション118〜122内で、デバイス上の信頼されていないソフトウェアアプリケーション118〜122内で、またはデバイス外で、生成され得る。ユーザインタラクションは、極めて慎重な扱いを有するビジネスデータまたは機密データのためのダブルチェックとして有用であり得る。
【0085】
いくつかの実施形態は、デバイスのための集中型キーリポジトリとして作用するセキュリティマネージャアプリケーションを用いる。セキュリティマネージャアプリケーションの利点は、それがキーを高レベルで保護するよう特化されることにより、セキュリティ意識の低い開発者によって書込まれた他のアプリケーションを他の領域において特化することが可能になることであり得る。
【0086】
図15は、本開示の実施形態に従った、セキュリティマネージャアプリケーションモジュール112でセキュリティを維持するためのアプリケーションデータ保護キー152〜156の使用を示す例示的なブロック図である。
図15に示されるように、各々のソフトウェアアプリケーション118〜122は1つ以上の固有のアプリケーションデータ保護キー152〜156を含み得る。アプリケーションデータ保護キー152〜156を含む特定のソフトウェアアプリケーション118〜122が損なわれている場合、これを用いてそのソフトウェアアプリケーション118〜122に対する露出が制限され得ることが利点である。これによっても、いずれかの所与のキーを使用する頻度を減らして、より長い期間にわたってセキュアに使用することを可能にし得る。セキュリティマネージャアプリケーションモジュール112に対して信頼性が確立されると、各々のソフトウェアアプリケーション118〜122のためのアプリケーションデータ保護キー152〜156が生成され得る。これらは、ソフトウェアアプリケーション118〜122自体の内部で、またはセキュリティマネージャアプリケーションモジュール112内部で生成されてもよい。
【0087】
ソフトウェアアプリケーション118〜122のためのアプリケーションデータ保護キー152〜156をセキュアに格納する一方法は、セキュリティマネージャアプリケーションモジュール112によって維持される複数のデータ保護ルートキー158のうちの1つによって暗号化されたキーを、ソフトウェアアプリケーション118〜122自体の内部に暗号化された形式で残存させるためのものである。ソフトウェアアプリケーション118〜122は、アプリケーションデータ保護キー152〜156を用いる必要がある場合、セキュリティマネージャアプリケーションモジュール112との要求/応答交換を開始して、対応するデータ保護ルートキー158を用いてアプリケーションデータ保護キー152〜156を復号化してもよい。要求は、暗号化されたアプリケーションデータ保護キー152〜156を含んでもよく、応答は復号化されたアプリケーションデータ保護キー152〜156を含んでもよい。アプリケーションに関連付けられたアプリケーションデータ保護キーがアプリケーションによって維持されるので、必要な場合にのみロードされることが利点であり得る。
【0088】
ソフトウェアアプリケーション118〜122のためのアプリケーションデータ保護キー152〜156をセキュアに格納する別の方法は、セキュリティマネージャアプリケーションモジュール112によって維持される複数のデータ保護ルートキー158のうちの1つによって暗号化されたキーをセキュリティマネージャアプリケーションモジュール112内に残存させるためのものである。アプリケーションは、アプリケーションデータ保護キー152〜156を用いる必要がある場合、セキュリティマネージャアプリケーションモジュール112との要求/応答交換を開始して、対応するデータ保護ルートキー158を用いてアプリケーションデータ保護キー152〜156を復号化し得る。応答は、復号化されたアプリケーションデータ保護キー152〜156を含んでもよい。機密のアプリケーションデータ保護キーがともに格納され、それらのメモリ空間への侵入がよりうまく検出され得ることが利点であり得る。
【0089】
認識され得るように、これらの2つの上述の方法のいずれかの変更例では、セキュリティマネージャアプリケーションモジュール112から、ソフトウェアアプリケーション118〜122に対応するデータ保護ルートキー158をソフトウェアアプリケーション118〜122に提供させて、アプリケーションデータ保護キー152〜156自体を復号化してもよい。要求時にアプリケーションデータ保護キーを伝達する必要がないことが利点であり得る。
【0090】
認識され得るように、アプリケーションデータは、ソフトウェアアプリケーション118〜122およびセキュリティマネージャアプリケーションモジュール112のうち少なくとも1つによって生成されるアプリケーションデータ保護キー152〜156を含み得る。アプリケーションデータ保護キー152〜156は、セキュリティマネージャアプリケーションモジュール112によって維持される対応するデータ保護ルートキー158によって暗号化および復号化されてもよい。
【0091】
一実施形態においては、セキュリティマネージャアプリケーションモジュール112は、ソフトウェアアプリケーション118〜122間における暗号化されたデータオブジェクト172〜182の転送を容易にするために用いられてもよい。データオブジェクト172〜182は、それらデータオブジェクト172〜182または関連するデータオブジェクト172〜182の組に固有であるオブジェクトデータ保護キー160〜170で暗号化されてもよい。これらのオブジェクトデータ保護キー160〜170はさらに、それらが属するソフトウェアアプリケーション118〜122のアプリケーションデータ保護キー152〜156のうち1つ以上で暗号化されてもよい。これにより、転送中にデータオブジェクト172〜182を復号化する必要なしに、または、データオブジェクト172〜182を再度暗号化する必要なしに、ソフトウェアアプリケーション118〜122間でデータオブジェクト172〜182を共有することが可能となり得る。一般に、オブジェクトデータ保護キー160〜170の暗号化および復号化は、データオブジェクト172〜182自体を暗号化および復号化するよりもはるかに速く行われる。というのも、ほとんどのデータオブジェクト172〜182がそれらのオブジェクトデータ保護キー160〜170よりも有意に大きくなるからである。
【0092】
図16は、本開示の実施形態に従った、ソース(第1の)アプリケーション184からデスティネーション(第2の)アプリケーション186にセキュアにデータオブジェクト172〜182を転送するための方法を示す例示的なブロック図である。当該方法は、ソース(第1の)アプリケーション184のアプリケーションデータ保護キー152でデータオブジェクト172のためのオブジェクトデータ保護キー160を復号化するステップと、セキュリティマネージャアプリケーションモジュール112によって生成されたデータ共有キー188でデータオブジェクト172のためのオブジェクトデータ保護キー160を暗号化するステップとを含み得る。信頼性が確立されると、データ共有キー188は、セキュリティマネージャアプリケーションモジュール112からソース(第1の)アプリケーション184およびデスティネーション(第2の)アプリケーション186に転送され得る。ソース(第1の)アプリケーション184およびデスティネーション(第2の)アプリケーション186によってセキュリティサービス要求に応答して暗号化および復号化するために新しいデータオブジェクト172がセキュリティマネージャアプリケーションモジュール112によって共有または使用される必要がある場合、データ共有キー188はまた、要求に応じてこれらのソフトウェアアプリケーション184および186に転送されてもよい。
【0093】
当該方法はさらに、データオブジェクト172と、データオブジェクト172のための暗号化されたデータ保護キー160とをデスティネーション(第2の)アプリケーション186に転送するステップと、データ共有キー188でデータオブジェクト172のためのオブジェクトデータ保護キー160を復号化するステップと、デスティネーション(第2の)アプリケーション186のアプリケーションデータ保護キー154でデータオブジェクト172のためのオブジェクトデータ保護キー160を暗号化するステップとを含み得る。
【0094】
認識され得るように、セキュリティマネージャアプリケーションモジュール112は、データオブジェクト172およびオブジェクトデータ保護キー169をソース(第1の)ソフトウェアアプリケーション184からデスティネーション(第2の)ソフトウェアアプリケーション186に転送する前にオブジェクトデータ保護キー169を暗号化し、データオブジェクト172およびオブジェクトデータ保護キー160をソース(第1の)ソフトウェアアプリケーション184からデスティネーション(第2の)ソフトウェアアプリケーション186に転送した後にオブジェクトデータ保護キー160を復号化するためのデータ共有キー188を生成し得る。
【0095】
図17は、本開示の実施形態に従った、データオブジェクト172〜182をソース(第1の)アプリケーション184からデスティネーション(第2の)アプリケーション186にセキュアに転送するための別の方法を示す例示的なブロック図である。当該方法は、ソース(第1の)アプリケーション184のアプリケーションデータ保護キー152でデータオブジェクト172のためのオブジェクトデータ保護キー160を復号化するステップと、デスティネーション(第2の)アプリケーション186のアプリケーションデータ保護キー154でデータオブジェクト172のためのオブジェクトデータ保護キー160を暗号化するステップとを含み得る。信頼性が確立されると、デスティネーション(第2の)アプリケーション186のアプリケーションデータ保護キー154は、セキュリティマネージャアプリケーションモジュール112からソース(第1の)アプリケーション184に転送されてもよい。ソース(第1の)アプリケーション184によってセキュリティサービス要求に応答して暗号化および復号化するために新しいデータオブジェクト172がセキュリティマネージャアプリケーションモジュール112によって共有または使用される必要がある場合、デスティネーション(第2の)アプリケーション186のアプリケーションデータ保護キー154はまた、要求に応じて転送されてもよい。当該方法はさらに、データオブジェクト172とデータオブジェクト172のための暗号化されたオブジェクトデータ保護キー160とをデスティネーション(第2の)アプリケーション186に転送するステップを含み得る。
【0096】
本開示の実施形態に従うと、セキュリティマネージャアプリケーションモジュール112は、制約されたプラットフォーム上でアプリケーション間におけるセキュアデータの共有を促進するために用いられてもよい。デバイスプラットフォームは、ソフトウェアアプリケーション118〜122間でデータが如何に共有され得るかについて制約を課す可能性がある。各々のプラットフォームは、ソフトウェアアプリケーション118〜122間でデータを共有するためのさまざまなメカニズムを有し得るが、各々のメカニズムは特定の制限を有する可能性があり、これにより、セキュアデータの共有のためにそれ単独で使用するのが不適切となるかもしれない。各々のデータ共有メカニズムは、最大データサイズを有し得るかまたはメモリ108に全データオブジェクトを配置し得るので、大きなデータオブジェクトを共有するために用いることができない。これは、すべてのソフトウェアアプリケーション118〜122に公然とアクセス可能であるため、極秘データを暗号化されていない形式で共有するために用いることができない。これは、必要なユーザインタラクションをプログラムによって開始することをサポートしない可能性があるので、データオブジェクトを自動的にプログラムによって共有するために用いることができない。これはまた、デスティネーションアプリケーションに対して制御を転送しない可能性があるので、要求/応答処理のために用いることができない。付加的には、これは、アプリケーションがフォアグラウンドにない場合に非アクティブになる可能性があるので、別のアプリケーションからデータを受取るのに用いることができない。
【0097】
当業者であれば、いくつかのクラスのデータ共有メカニズムがあることを認識するだろう。たとえば:
クラス1:デスティネーションアプリケーションに制御を転送するメカニズムは、ユーザインタラクションを必要とせず、ソースアプリケーションおよびデスティネーションアプリケーションにのみアクセス可能であるが、大きなデータオブジェクトを共有するために用いることはできない。このクラスのメカニズムの一例として、iOSプラットフォーム上でのカスタムURLスキーム処理がある。
【0098】
クラス2:大きなデータオブジェクトを共有するために用いることができるメカニズムは、ユーザインタラクションを必要とせず、限られた一組の信頼されたアプリケーションにのみアクセス可能であるが、デスティネーションアプリケーションには制御を転送しない。このクラスのメカニズムの一例として、iOSプラットフォーム上のキーチェーンがある。
【0099】
クラス3:大きなデータオブジェクトを共有するために用いることができるメカニズムは、ユーザインタラクションを必要としないが、デスティネーションアプリケーションに制御を転送せず、すべてのアプリケーションに対して公然とアクセス可能である。このクラスのメカニズムの一例として、iOSプラットフォーム上のペーストボードがある。
【0100】
クラス4:デスティネーションアプリケーションに制御を転送するメカニズムは、ユーザインタラクションを必要とせず、大きなデータオブジェクトを共有するために用いることができ、ソースアプリケーションおよびデスティネーションアプリケーションのみにアクセス可能であるが、アプリケーションがバックグラウンドに移行するときに短期間だけアクティブになり、アプリケーションが完全にバックグラウンドにある場合には非アクティブとなる。このクラスのメカニズムの一例として、iOSプラットフォーム上のローカルの受信ソケットがある。
【0101】
クラス5:デスティネーションアプリケーションに制御を転送するメカニズムは、大きなデータオブジェクトを共有するために用いることができ、ソースアプリケーションおよびデスティネーションアプリケーションにのみアクセス可能であるが、ユーザインタラクションがデスティネーションアプリケーションを選択することを必要とする。このクラスのメカニズムの一例として、iOSプラットフォーム上の登録済みファイルタイプのためのオープン・イン(open-in)ファンクションがある。
【0102】
一実施形態においては、ユーザインタラクションを必要とすることなく、制約付きのプラットフォーム上でデータをソースアプリケーション184からデスティネーションアプリケーション186までセキュアに共有するための方法が提供される。当該方法は、クラス2のデータ共有メカニズムを用いてデータオブジェクト172を書込むようにソースアプリケーション184に命令を送信するステップと、ソースアプリケーション184によってデータオブジェクト172を暗号化するステップとを含む。当該方法はさらに、クラス1のデータ共有メカニズムを用いて制御をデスティネーションアプリケーション186に転送するようにソースアプリケーション184に命令を送信するステップを含んでもよく、クラス2のデータ共有メカニズムを用いて書込まれたデータオブジェクト172を識別するために十分な情報が含まれている。クラス1のデータ共有メカニズムは、任意には、クラス2のデータ共有メカニズムを用いて書込まれたデータオブジェクト172を暗号化するオブジェクトデータ保護キー160を含み得る。さらに、当該方法は、クラス2のデータ共有メカニズムを用いてデータオブジェクト172を読出し、データオブジェクト172を復号化するようにデスティネーションアプリケーション186に命令を送信するステップを含み得る。
【0103】
ユーザインタラクションを必要とすることなく、要求アプリケーションと応答アプリケーションとの間でセキュア要求/応答インタラクションを実行するために用いられ得る別の方法が提供される。要求アプリケーションは、クラス2のデータ共有メカニズムを用いて要求を書込み得る。この場合、要求のうち少なくともいくらかの部分がソースアプリケーションによって暗号化される。要求アプリケーションは、応答アプリケーションに制御を転送するためにクラス1のデータ共有メカニズムを用いてもよい。応答すべき要求アプリケーションおよびクラス2のデータ共有メカニズムを用いて書込まれた要求を識別するために十分な情報が含まれている。クラス1のデータ共有メカニズムは、任意には、クラス2のデータ共有メカニズムを用いて書込まれた要求を暗号化するキーを含んでもよい。応答アプリケーションは、クラス2のデータ共有メカニズムを用いて要求を読出し、要求の暗号化された部分を復号化し得る。応答アプリケーションはまた、クラス2のデータ共有メカニズムを用いて要求を処理し、応答を書込んでもよく、この場合、応答のうち少なくともいくらかの部分が応答アプリケーションによって暗号化される。さらに、応答アプリケーションは、要求アプリケーションに制御を転送し返すためにクラス1のデータ共有メカニズムを用いてもよい。クラス2のデータ共有メカニズムを用いて書込まれた応答を識別するために十分な情報が含まれている。クラス1のデータ共有メカニズムは、任意には、クラス2のデータ共有メカニズムを用いて書込まれた応答を暗号化するキーを含んでもよい。要求アプリケーションは、クラス2のデータ共有メカニズムを用いて応答を読出し、応答の暗号化された部分を復号化し得る。
【0104】
別の実施形態においては、要求および応答がさほど大きくない限り、要求の位置および任意のキーが上述の方法とは逆になり、結果として下記の方法が得られる可能性がある。要求アプリケーションはクラス2のデータ共有メカニズムを用いてキーを書込んでもよい。次いで、要求アプリケーションは、クラス1のデータ共有メカニズムを用いて応答アプリケーションに制御を転送し、少なくともいくらかの部分がキーによって暗号化されている要求を送信し得る。クラス2のデータ共有メカニズムと、応答すべき要求アプリケーションとを用いて書込まれたキーを識別するために十分な情報が含まれている。次いで、応答アプリケーションは、クラス2のデータ共有メカニズムを用いてキーを読出し、要求の暗号化された部分を復号化し得る。さらに、応答アプリケーションは要求を処理し、任意には、クラス2のデータ共有メカニズムを用いて新しいキーを書込み得る。応答アプリケーションは、クラス1のデータ共有メカニズムを用いて、要求アプリケーションに制御を転送し返し、キー(要求と同じキーまたは新しい応答キーのいずれか)によって少なくともいくらかの部分が暗号化されている応答を送信し得る。クラス2のデータ共有メカニズムを用いて書込まれたキーを識別するために十分な情報が含まれている。最終的に、要求アプリケーションは、クラス2のデータ共有メカニズムを用いてキーを読出し、応答の暗号化された部分を復号化し得る。
【0105】
当業者であれば、上述の記載に照らして、制約されたプラットフォーム上においてアプリケーション間でセキュアデータを共有するための他の代替的な方法を認識するだろう。たとえば、要求のさまざまな部分、応答のさまざまな部分、およびキーのさまざまな部分は、クラス1のデータ共有メカニズムとクラス2のデータ共有メカニズムとの間で多くの方法で分割されてもよい。代替的には、たとえば、クラス3のデータ共有メカニズムを用いて書込まれたいずれかのデータが上述のとおりアプリケーションデータ保護キーを用いて暗号化される場合、上述の方法ではクラス2のデータ共有メカニズムの代わりにクラス3のデータ共有メカニズムが用いられてもよい。別の代替例には、(バックグラウンドへと進むにつれて、各々のソフトウェアアプリケーション118〜122において一時的に利用可能となる)クラス4のデータ共有メカニズムが含まれる。クラス4のデータ共有メカニズムは、たとえば、バックグラウンドに移行するアプリケーションが非アクティブになる前に各々のデータ転送を短期間で実行することができる場合、上述の方法でクラス2のデータ共有メカニズムの代わりに用いられてもよい。
【0106】
一実施形態においては、ユーザインタラクションがデスティネーションアプリケーション186を選択することを必要とすることなく、信頼されたソースアプリケーション184から信頼されたデスティネーションアプリケーション186までセキュアにデータを共有するのに用いることができる方法であって、信頼されていないアプリケーションへのデータのエクスポートを防ぐ方法が、提供される。この例示的な方法においては、ソースアプリケーション184が、クラス5のデータ共有メカニズムを用いてデータオブジェクト172を書込み得る。データオブジェクト172は、ソースアプリケーション186によって暗号化されてもよく、所与のデータまたはファイルタイプをサポートするアプリケーションのリストから選択する場合に、信頼されたアプリケーションのリストだけが表示されるように、固有のデータまたはファイルタイプとして書込まれてもよい。次いで、デスティネーションアプリケーション186は、クラス5のデータ共有メカニズムを用いてデータオブジェクト172を読出し、データオブジェクト172を復号化してもよい。認識され得るように、ソースアプリケーション184からデスティネーションアプリケーション186にセキュアにデータオブジェクト172を転送するための上述の方法はいずれも、データオブジェクト172を暗号化および復号化するために用いられてもよい。
【0107】
本開示の実施形態に従うと、場合によっては周知の技術を用いた場合に損なわれる可能性のあるプラットフォームレベルの保護に対する依存性を最小限にするために、上述のようにアプリケーションデータ保護キーを用いて、暗号化されたデータオブジェクトを転送することが好ましいかもしれない。セキュリティのために、アプリケーション外にデータを維持するデータ共有メカニズムを用いて書込まれた如何なる一時データも、それが読出された後には削除されてもよい。
【0108】
技術的な利点はアプリケーションと同様に多く存在する。たとえば、ある実施形態においては、スマートフォン上のユーザは、ビジネスインテリジェンスアプリケーション内の機密データのチャートを準備することができ、ビジネスインテリジェンスアプリケーションから新しい電子メールを開始させることができる。ビジネスインテリジェンスアプリケーションは、ユーザに電子メールを「構成させる」ためにスマートフォンの電子メールクライアントを開く。データオブジェクトにおけるチャートは、ビジネスインテリジェンスアプリケーションにおいて暗号化された形式で残り、オブジェクトデータ保護キーによって暗号化される。オブジェクトデータ保護キーはビジネスインテリジェンスアプリケーション内に残って、それ自体はビジネスインテリジェンスアプリケーション自体のキーで暗号化される。ビジネスインテリジェンスアプリケーションは、スマートフォン上の中心的なセキュリティマネージャアプリケーションに対してそのキーを要求し、中心的なセキュリティマネージャは、これを暗号化されていない形式でビジネスインテリジェンスアプリケーションに提供する。ビジネスインテリジェンスアプリケーションはまた、セキュリティマネージャアプリケーションに対してデータ共有キーを要求し、セキュリティマネージャアプリケーションがデータ共有キーを提供する。ビジネスインテリジェンスアプリケーションは次いで、それ自体のキーでオブジェクトデータ保護キーを復号化し、さらに、データ共有キーでオブジェクトデータ保護キーを暗号化する。次いで、データ共有キーで暗号化されるオブジェクトデータ保護キーは、(既に暗号化された)チャートと共に電子メールクライアントに転送される。電子メールクライアントにおいては、オブジェクトデータ保護キーが、セキュリティマネージャアプリケーションに対して要求されたデータ共有キーで解読される。チャートは、オブジェクトデータ保護キーで解読され、次いで、ユーザが構成することのできる新しい電子メールに挿入される。
【0109】
認識され得るように、上述の方法はいずれも、セキュア通信のための方法およびシステム(Methods and Apparatuses for Secure Communication)と題された係属中の米国特許出願連続番号第13/405,357号と、ウェブアプリケーションおよびウェブアプリケーションデータとのインタラクションのための方法および装置(Methods and Apparatuses for Interaction with Web Applications and Web Application Data)と題された米国特許出願連続番号第13/215,178号とにおいて開示された方法およびシステムの1つ以上とまとめられ、組合わされ、および/または利用され得るものであって、これら特許出願はともに全体が引用によりこの明細書中に援用されている。
【0110】
本開示の実施形態に従うと、プロセッサ110およびメモリ108を有する機械によって読取られたときに当該機械に上述の方法のいずれかに従った動作を実行させる命令を与える機械読取り可能媒体がまた提供される。
【0111】
システム、方法および機械読取り可能媒体は、現在最も実用的かつ好ましい実施形態であるとみなされるものに関して説明されてきたが、その開示が必ずしも開示された実施形態に限定されるわけではないことが理解されるべきである。請求項の精神および範囲内に含まれるさまざまな変更例および同様の構成例をカバーするように意図されており、その範囲には、このような変更および同様の構造をすべて包含するように最も広範な解釈が与えられるべきである。本開示は、添付の特許請求の範囲のいずれかの実施形態およびすべての実施形態を含む。
【0112】
本発明の本質から逸脱することなくさまざまな変更がなされ得ることも理解されるはずである。このような変更も記載に暗黙的に含まれている。これらの変更は依然として本発明の範囲内にある。この開示が、独立して、かつ全体的なシステムである機械読取り可能媒体として、方法モードおよび装置モードの両方で、発明の多数の局面をカバーする特許をもたらすよう意図されたものであることが理解されるべきである。
【0113】
さらに、本発明および請求項のさまざまな要素の各々がまた、さまざまな態様で実現され得る。この開示は、いずれかの装置の実施形態、方法、機械読取り可能媒体もしくはプロセスの実施形態についてのこのような各々の変形例、または単にこれらのいずれかの要素の変形例をも包含するものと理解されるはずである。
【0114】
特に、開示が本発明の構成要素に関するものであるので、機能または結果だけが同じあったとしても、各々の構成要素についての用語が方法用語の相当する装置用語によって表わされ得ることが理解されるはずである。このような同等の、より広範囲の、またはさらにより多くの一般名称は、各々の要素または動作の説明に含まれるものとみなされるべきである。このような用語は、この発明が受ける暗黙的に広範な保護範囲を明らかにすることが望まれる場合に、代用することができる。
【0115】
すべての動作が、その動作を行うための手段として、または、その動作を引起す要素として表わされ得ることが理解されるべきである。同様に、開示された各々の物理的要素は、その物理的要素が容易にする動作の開示を包含するものと理解されるべきである。
【0116】
この特許出願において言及されている如何なる特許、刊行物または他の引用物も、引用によりここに援用されている。加えて、用いられる各々の用語に関して、本願におけるその利用がこのような解釈と一致しない場合を除き、共通の辞書的な定義が、当業者によって認識される標準的な専門辞書のうち少なくとも1つに含まれるような、この明細書中に引用により援用されている各々の用語およびすべての定義、代替的な用語、ならびに同義語として援用されるものと理解されるべきである。
【0117】
さらに、出願人に法律上許容可能な最も広範な保護範囲を与えるように、すべての請求項の用語がそれらの最も広範な形で解釈されるべきである。実施形態を添付の図面および具体例に関連付けて説明してきたが、この明細書中に記載されたプロセスおよび装置についての多くの変更例および適応例が、本発明の精神および範囲から逸脱することなく実現可能であることが当業者に容易に認識されるだろう。このため、この記載が単なる例示としてのみなされるものであって、添付の特許請求の範囲において主張されている実施形態の範囲を限定するものとしてなされるわけではないことが明確に理解されるはずである。