特許第5777810号(P5777810)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オラクル・インターナショナル・コーポレイションの特許一覧

<>
  • 特許5777810-セキュアホスト実行アーキテクチャ 図000002
  • 特許5777810-セキュアホスト実行アーキテクチャ 図000003
  • 特許5777810-セキュアホスト実行アーキテクチャ 図000004
  • 特許5777810-セキュアホスト実行アーキテクチャ 図000005
  • 特許5777810-セキュアホスト実行アーキテクチャ 図000006
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5777810
(24)【登録日】2015年7月17日
(45)【発行日】2015年9月9日
(54)【発明の名称】セキュアホスト実行アーキテクチャ
(51)【国際特許分類】
   G06F 12/14 20060101AFI20150820BHJP
   G06F 21/64 20130101ALI20150820BHJP
【FI】
   G06F12/14 510A
   G06F21/64
【請求項の数】21
【全頁数】28
(21)【出願番号】特願2014-518640(P2014-518640)
(86)(22)【出願日】2012年6月20日
(65)【公表番号】特表2014-524088(P2014-524088A)
(43)【公表日】2014年9月18日
(86)【国際出願番号】US2012043204
(87)【国際公開番号】WO2013003131
(87)【国際公開日】20130103
【審査請求日】2014年1月23日
(31)【優先権主張番号】13/174,508
(32)【優先日】2011年6月30日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】ビオロー,ティエリ・ピィ
(72)【発明者】
【氏名】ラビシャンカール,タンジョール・エス
【審査官】 青木 重徳
(56)【参考文献】
【文献】 米国特許出願公開第2010/0235647(US,A1)
【文献】 国際公開第2010/077000(WO,A1)
【文献】 米国特許出願公開第2002/0156863(US,A1)
【文献】 特開2004−310776(JP,A)
【文献】 米国特許第07900200(US,B1)
【文献】 国際公開第2010/056552(WO,A1)
【文献】 欧州特許出願公開第02015212(EP,A1)
【文献】 米国特許第08543841(US,B1)
【文献】 池上 輝哉、加藤 清志、中村 暢達、平池 龍一,“システム運用管理におけるUNDO操作ユーザインタフェース”,情報処理学会研究報告,日本,社団法人情報処理学会,2004年11月12日,Vol.2004、No.115,p.79−86
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/14
G06F 21/64
(57)【特許請求の範囲】
【請求項1】
ホスト装置アプリケーション上でアプリケーションをセキュアに実行するための方法であって、
前記ホスト装置によって、セキュア記憶域エレメントを含むスマートカードにアクセスするステップと、
前記ホスト装置のコンピュータプロセッサによって前記ホスト装置上でホスト実行ランタイム環境(HERE)を実行するステップと、
前記スマートカードによって、前記セキュア記憶域エレメントに常駐するセキュアエレメントランタイム環境(SERE)を実行するステップとを備え、前記セキュア記憶域エレメントは、前記セキュア記憶域エレメントへのアクセスについて前記ホスト装置のユーザを認証するように構成され、
前記HEREによって、前記HEREと前記SEREとの間のセキュア通信セッションを開始するステップと、
前記セキュア記憶域エレメント内の、前記アプリケーションを含む、前記HEREの永続メモリイメージを識別するステップと、
前記永続メモリイメージを用いて、前記HEREがセキュアであることを検証するステップと、
前記HEREがセキュアであることを検証した後、前記コンピュータプロセッサによって前記HERE内の前記アプリケーションを実行するステップと、
前記SEREによって、前記アプリケーションの実行に基づいて前記永続メモリイメージに対して第1の複数の変更を適用するステップとを備える、方法。
【請求項2】
前記HEREによって前記セキュア通信セッションを介して前記セキュア記憶域エレメントから前記永続メモリイメージを取得するステップと、
前記アプリケーションを実行するステップの前に前記ホスト装置内に前記永続メモリイメージのキャッシュを作成するステップとをさらに備え、前記第1の複数の変更は、前記アプリケーションの実行中に前記キャッシュに対して行われる、請求項に記載の方法。
【請求項3】
記永続メモリイメージに対して前記第1の複数の変更を適用するステップは、
前記キャッシュに対応する変更ログを維持するステップと、
前記アプリケーションの実行中に前記変更ログ内に前記キャッシュに対する前記第1の複数の変更を記憶するステップと、
前記セキュア通信セッションを介して前記アプリケーションの実行後に前記SEREに対する前記変更ログを送信するステップと、
前記SEREによって前記永続メモリイメージに対して前記第1の複数の変更を適用するステップとを含む、請求項に記載の方法。
【請求項4】
記永続メモリイメージに対して前記第1の複数の変更を適用した後に前記アプリケーションを再度実行するステップと、
前記アプリケーションを再度実行する一方で前記セキュア記憶域エレメント内に常駐するセッション変更ログ内に前記キャッシュに対する第2の複数の変更を記憶するステップとを備え、前記第2の複数の変更は、前記セッション変更ログにおける一連の冪等エントリとして記憶され、方法はさらに、
前記セキュア記憶域エレメント内に前記永続メモリイメージのコピーを作成するステップと、
永続メモリイメージの前記コピーに対して前記第2の複数の変更を適用する処理を開始するステップと、
前記処理の障害を検知するステップと、
前記障害の検知に応答して、前記永続メモリイメージの前記コピーに対して前記第2の複数の変更を再度適用するステップとをさらに備える、請求項またはに記載の方法。
【請求項5】
記永続メモリイメージに対して前記第1の複数の変更を適用した後に前記アプリケーションを再度実行するステップと、
前記アプリケーションを再度実行する一方で前記セキュア記憶域エレメント内に常駐するセッション変更ログ内に前記キャッシュに対する第2の複数の変更を記憶するステップと、
前記セキュア記憶域エレメント内に前記永続メモリイメージの複数のページのコピーを作成するステップと、
前記複数のページの前記コピーに対して前記第2の複数の変更を適用するステップと、
前記第2の複数の変更を適用した後に、前記セッション変更ログおよび前記複数のページの前記コピーを削除するステップとを備える、請求項またはに記載の方法。
【請求項6】
前記アプリケーションを実行するステップは、
前記アプリケーションのセキュリティ依存セクションを識別するステップと、
前記セキュリティ依存セクションについてのチェック値を算出するステップと、
前記チェック値と前記セキュア記憶域エレメントに記憶された登録チェック値との比較を生成するステップとをさらに含み、前記チェック値と前記登録チェック値とは等しく、前記アプリケーションを実行するステップはさらに、
前記比較に基づいて前記セキュリティ依存セクションを前記SEREによって有効化するステップと、
前記セキュリティ依存セクションを有効化した後に前記セキュリティ依存セクションを実行するステップとをさらに含む、請求項のいずれか1項に記載の方法。
【請求項7】
前記セキュリティ依存セクションは暗号法演算を含む、請求項に記載の方法。
【請求項8】
前記アプリケーションのための前記永続メモリイメージのセクションを指定するステップをさらに備え、前記指定されたセクションに対して前記第1の複数の変更が適用される、請求項1〜のいずれか1項に記載の方法。
【請求項9】
前記第1の複数の変更は、永続オブジェクトに対する単一アイテムのアトミック変更を含み、前記第1の複数の変更は、前記セキュア記憶域エレメント内に常駐するセッション変更ログに記憶される、請求項1〜のいずれか1項に記載の方法。
【請求項10】
前記セキュア記憶域エレメントにアクセスするステップは、
前記ホスト装置のユーザからセキュリティ認証情報を取得するステップと、
前記セキュリティ認証情報に基づいて前記ユーザを認証するステップとを含む、請求項1〜のいずれか1項に記載の方法。
【請求項11】
前記SEREおよび前記HEREは、Java Cardプラットフォームのバージョンであり、前記HEREは、前記SEREに比較して、前記Java Cardプラットフォームの後のバージョンである、請求項1〜10のいずれか1項に記載の方法。
【請求項12】
コンピュータプロセッサによって実行されるコンピュータ読取可能な命令を含むコンピュータプログラムであって、前記命令は、請求項1〜11のいずれか1項に記載の方法を前記コンピュータプロセッサに実行させる、コンピュータプログラム。
【請求項13】
アプリケーションをセキュアに実行するためのシステムであって、
コンピュータプロセッサを含むホスト装置と、
キュア記憶域エレメントを含むとともに、前記ホスト装置に動作的に接続されるスマートカードとを備え、前記セキュア記憶域エレメントは、前記セキュア記憶域エレメントへのアクセスついて前記ホスト装置のユーザを認証するように構成され、前記システムはさらに、
前記コンピュータプロセッサ上で実行されるホスト実行ランタイム環境(HERE)を備え、前記HEREは
前記HEREと、前記セキュア記憶域エレメントに常駐するセキュアエレメントランタイム環境(SERE)との間の、セキュア通信セッションを開始するように構成され、
前記セキュア記憶域エレメント内の、前記アプリケーションを含む、HEREの永続メモリイメージを識別するように構成され
アプリケーションを実行するように構成され、
前記SEREは、さらに、前記永続メモリイメージに対して第1の複数の変更が適用されるように構成される、システム。
【請求項14】
前記HEREは、さらに
前記セキュア通信セッションを介して前記セキュア記憶域エレメントから前記永続メモリイメージを取得するように構成され
前記アプリケーションを実行する前に前記ホスト装置において前記永続メモリイメージのキャッシュを作成し、前記アプリケーションの実行中に前記キャッシュに対して前記第1の複数の変更が行われるように構成される、請求項13に記載のシステム。
【請求項15】
前記HEREは、さらに
前記キャッシュに対応する変更ログを維持するように構成され
前記アプリケーションの実行中に、前記キャッシュに対する前記第1の複数の変更を前記変更ログに記憶するように構成され
前記セキュア通信セッションを介し、前記アプリケーションを実行した後に前記変更ログを前記SEREに対して送信し、前記SEREによって前記永続メモリイメージに対して前記第1の複数の変更が適用されるように構成される、請求項14に記載のシステム。
【請求項16】
前記HEREは、さらに、前記アプリケーションを再度実行するように構成され、前記SEREは、
前記アプリケーションが再度実行される一方で前記セキュア記憶域エレメント内にあるセッション変更ログに前記キャッシュに対する第2の複数の変更を記憶するように構成され
前記セキュア記憶域エレメント内に前記永続メモリイメージのコピーを作成するように構成され
前記永続メモリイメージの前記コピーに対して前記第2の複数の変更を適用する処理を開始するように構成され
前記処理の障害を検知するように構成され
前記障害の検知に応答して前記永続メモリイメージの前記コピーを削除するように構成される、請求項14または15に記載のシステム。
【請求項17】
前記HEREは、さらに、前記アプリケーションを再度実行するようにさらに構成され、
前記SEREは、さらに
前記アプリケーションが再度実行される一方で前記セキュア記憶域エレメント内にあるセッション変更ログに前記キャッシュに対する第2の複数の変更を記憶するように構成され
前記セキュア記憶域エレメント内に前記永続メモリイメージのコピーを作成するように構成され
記永続メモリイメージの前記コピーに対して前記第2の複数の変更を適するように構成され
記永続メモリイメージの前記コピーに対して前記第2の複数の変更が適用された後に前記セッション変更ログおよび前記永続メモリイメージの前記コピーを削除するように構成される、請求項14または15に記載のシステム。
【請求項18】
前記アプリケーションの実行は、
前記アプリケーションのセキュリティ依存セクションを識別することと、
前記セキュリティ依存セクションについてのチェック値を算出することと、
前記チェック値と前記セキュア記憶域エレメント内に記憶された登録チェック値との比較を生成することとを含み、前記チェック値と前記登録チェック値とは等しく、前記アプリケーションの実行はさらに、
前記比較に基づき、前記SEREによって前記セキュリティ依存セクションを有効化することと、
前記セキュリティ依存セクションを有効化した後に前記セキュリティ依存セクションを実行することとをさらに含む、請求項1317のいずれか1項に記載のシステム。
【請求項19】
前記SEREおよび前記HEREは、Java Cardプラットフォームのバージョンであり、前記HEREは、前記SEREに比較して、前記Java Cardプラットフォームの後のバージョンである、請求項13〜18のいずれか1項に記載のシステム。
【請求項20】
アプリケーションをセキュアに実行するための複数の命令を含むプログラムであって、前記複数の命令は、コンピュータプロセッサを
ホスト装置を介してセキュア記憶域エレメントを含むスマートカードにアクセスする手段と
前記ホスト上でホスト実行ランタイム環境(HERE)を実行する手段と
前記スマートカードによって、前記セキュア記憶域エレメントに常駐するセキュアエレメントランタイム環境(SERE)を実行する手段として機能させ、前記セキュア記憶域エレメントは、前記セキュア記憶域エレメントへのアクセスについて前記ホスト装置のユーザを認証するように構成され、
前記HEREによって、前記HEREと前記SEREとの間のセキュア通信セッションを開始する手段と、
前記セキュア記憶域エレメント内の、前記アプリケーションを含む、前記HEREの永続メモリイメージを識別する手段と
前記永続メモリイメージを用いて、前記HEREがセキュアであることを検証する手段と、
前記HERE内の前記アプリケーションを実行する手段と
前記SEREによって、前記アプリケーションの実行に基づいて前記永続メモリイメージに対して第1の複数の変更を適用する手段として機能させるプログラム
【請求項21】
前記SEREおよび前記HEREは、Java Cardプラットフォームのバージョンであり、前記HEREは、前記SEREに比較して、前記Java Cardプラットフォームの後のバージョンである、請求項20に記載のプログラム。
【発明の詳細な説明】
【背景技術】
【0001】
背景
増え続ける要求を満たすために現代の演算装置の性能が発達するにつれ、設計者たちは既存のソフトウェアプラットフォームを全く新しい用途に適合させる取り組みを行っている。このような装置は、純粋な組み込みシステムおよびハイブリッド組み込みシステムから汎用コンピュータシステムにわたる領域に及んでいる。医療装置、スマートフォン、ネットブック、およびラップトップ型コンピュータなどの特定の用途においては、ハードウェアおよびソフトウェアの厳しい互換性要件を満たすように設計がなされている。これらの用途の多くにおいては、互換性についての考慮とセキュリティについての考慮とのバランスを絶えず変化させる必要がある。
【0002】
既存のソフトウェアプラットフォームは、互換性のあるハードウェアと結合された場合に広範なセキュリティ機能を提供することができる。たとえば、データのカプセル化および暗号法は、セキュアマイクロコントローラを利用するモバイルオペレーティングシステムにおいて共通の機能である。ハードウェアコンポーネントも、互換性のあるソフトウェアと結合された場合に装置のセキュリティに寄与し得る。しかしながら、このような特殊なアーキテクチャに関連する設計および開発にかかる費用は相当なものとなり得る。
【0003】
費用についての考慮に加え、セキュリティ機能は、装置の機能性および/または効率を制限し得る。同時に、一般的な電子装置において使用される組み込みシステムの多くは、汎用コンピュータの機能性をより多く組み込むように変更がなされている。たとえば、Web 2.0対応のスマートフォンおよびネットブックは、関連するセキュリティリスクを伴うことなく、デスクトップ型パーソナルコンピュータによって提供されるオンラインエクスペリエンスを模擬するものとして期待されている。設計者たちは、これらの装置の設計に大きなオープン性および機能性を組み込んでいることから、マルウェア、トロイ、ウイルス、および他のエクスプロイトによって悪用される脆弱性が導入される可能性をも高めている。結果として、設計者たちはセキュリティについての考慮と費用および機能性についての考慮とのバランスを取るという困難な課題に直面している。
【発明の概要】
【課題を解決するための手段】
【0004】
概要
概して、ある局面において、本発明はアプリケーションを実行する方法に関する。方法は、コンピュータプロセッサを含むホスト装置を介してセキュア記憶域エレメントにアクセスするステップと、コンピュータプロセッサによってホスト装置上でホスト実行ランタイム環境(HERE)を実行するステップと、セキュア記憶域エレメント内のHEREの永続メモリイメージを識別するステップと、コンピュータプロセッサによってHEREを使用してアプリケーションを実行するステップと、アプリケーションの実行に基づいて永続メモリイメージに対して第1の変更のセットを適用するステップとを含む。
【0005】
概して、ある局面において、本発明はアプリケーションを実行するためのシステムに関する。システムは、コンピュータプロセッサを含むホスト装置と、ホスト装置に動作的に接続され、セキュア記憶域エレメントとを含み、セキュア記憶域エレメントは、セキュア記憶域エレメントへのアクセスについてホスト装置のユーザを認証するように構成され、システムはさらに、コンピュータプロセッサ上で実行されるホスト実行ランタイム環境(HERE)を含み、ホスト実行ランタイム環境(HERE)は、セキュア記憶域エレメント内のHEREの永続メモリイメージを識別し、アプリケーションを実行するように構成され、アプリケーションの実行に基づいて第1の変更のセットがHEREの永続メモリイメージに適用される。
【0006】
概して、ある局面において、本発明はアプリケーションを実行するための命令を記憶する非一時的コンピュータ可読記憶媒体に関する。命令は、ホスト装置を介してセキュア記憶域エレメントにアクセスし、ホスト装置上でホスト実行ランタイム環境(HERE)を実行し、セキュア記憶域エレメント内のHEREの永続メモリイメージを識別し、HEREを使用するアプリケーションを実行し、アプリケーションの実行に基づいて第1の変更のセットを永続メモリイメージに適用する機能性を含む。
【0007】
本発明の他の局面は、以下の説明および添付の図面から明らかになるであろう。
【図面の簡単な説明】
【0008】
図1】本発明の1つ以上の実施形態に基づく概略図である。
図2】本発明の1つ以上の実施形態に基づくフローチャートである。
図3】本発明の1つ以上の実施形態に基づくフローチャートである。
図4】本発明の1つ以上の実施形態に基づくモバイル装置を示す図である。
図5】本発明の1つ以上の実施形態に基づくコンピュータシステムを示す図である。
【発明を実施するための形態】
【0009】
詳細な説明
本発明の具体的な実施形態について添付の図面を参照して説明する。様々な図面における同様のエレメントには、整合性を図るために同様の参照符号が付される。
【0010】
本発明の実施形態についての以下の詳細な説明においては、本発明についてより十分な理解を提供するために、多くの具体的詳細が記載される。しかしながら、これらの具体的詳細なしに本発明が実施され得ることは、当業者にとって明らかとなるであろう。他の例では、説明が不必要に複雑となることを避けるために、周知の特徴については詳細に説明していない。
【0011】
概して、本発明の実施形態は、ホスト実行ランタイム環境(HERE)を使用してアプリケーションを実行するための方法およびシステムを提供する。概して、本発明の実施形態は、セキュア記憶域エレメントに動作的に接続されるホスト装置によってHEREを実行する。セキュア記憶域エレメントは、アプリケーションを実行した結果として更新され得るHEREの永続メモリイメージを含む。
【0012】
図1は、本発明のある実施形態に基づくシステム(199)を示す。図1に示されるように、システム(199)は、ホスト装置(100)、ホスト実行ランタイム環境(HERE)(105)、永続メモリキャッシュ(110)、セキュア記憶域エレメント(115)、セキュアエレメントランタイム環境(SERE)(120)、および永続メモリイメージ(125)など、複数のコンポーネントを含む。システムのコンポーネントは、同じ装置(たとえば、サーバー、メインフレーム、デスクトップ型パーソナルコンピュータ(PC)、ラップトップ、パーソナルデジタルアシスタント(PDA)、電話、携帯電話、キオスク、ケーブルボックス、および任意の他の装置)に設置され得る、または有線および/もしくは無線セグメントを用いてネットワーク(たとえば、インターネット)によって接続される別個の装置に設置され得る。当業者は、装置上で動作する各別個のコンポーネントが2つ以上設けられてもよく、本発明の所与の実施形態の範囲においてこれらのコンポーネントを任意で組み合わせてもよいことを理解するであろう。
【0013】
ホスト装置(100)は、パーソナルコンピュータ(PC)、パーソナルデジタルアシスタント(PDA)、携帯電話、スマートフォン、モバイルインターネットデバイス(MID)、ウルトラモバイルパーソナルコンピュータ(UMPC)、ラップトップ、ネットトップ、ネットブック、タブレット、ホームシアターパーソナルコンピュータ(HTPC)、ハンドヘルドコンピュータ、GPSナビゲーション装置、自動車コンピュータシステム、Mobile Information Device Profile(MIDP)に準拠した装置、Connected Limited Device Configuration(CLDC)に準拠した装置、および/またはアプリケーションを実行できる任意の他の演算装置であり得る。
【0014】
本発明の1つ以上の実施形態において、セキュア記憶域エレメント(115)は、メモリ装置またはメモリの割り当てられたセグメントであってもよい。セキュア記憶域エレメント(115)の例としては、セキュリティトークン、加入者識別モジュール(SIM)カード、セキュアデジタル(SD)カード、アイロンキー(Ironkey(商標))USBカード(アイロンキー(Ironkey)はカリフォルニア州サニーベールのアイロンキーコーポレーション(Ironkey Corporation)の商標である)、トラステッド組み込み環境(trusted embedded environment)(TEE)内のセキュアな場所、およびホスト装置(100)が読み取り可能な任意の永続メモリが含まれる。
【0015】
本発明の1つ以上の実施形態において、セキュア記憶域エレメント(115)は、ハードウェアによるデータの暗号化および復号化、認証、認証情報管理、ならびに/またはアクセス制御を行う機能性を含む。セキュア記憶域エレメント(115)は、本発明の様々な実施形態に基づき、ロックアウト機能性、生体認証、耐タンパー性パッケージ化/検知、および/または様々な他のハードウェアおよびソフトウェアによるセキュリティ機構も含み得る。
【0016】
本発明の1つ以上の実施形態において、セキュア記憶域エレメント(115)は、HERE(105)の永続メモリイメージ(125)を含む。永続メモリイメージ(125)は、セキュア記憶域エレメント(115)内にHERE(105)を記憶する任意の形態の永続メモリ(電気的消去書き込み可能読み出し専用メモリ(EEPROM))であり得る。
【0017】
図1についての考察を続けると、永続メモリキャッシュ(110)は、本発明の1つ以上の実施形態に基づき、ホスト装置(100)に常駐する永続メモリイメージ(125)のキャッシュである。永続メモリキャッシュ(110)は、ホスト装置(100)内の1つ以上の永続もしくは非永続(すなわち、揮発性)のメモリ装置(たとえば、ランダムアクセスメモリ)に常駐し得る、および/またはホスト装置(100)に動作的に接続され得る。本発明の1つ以上の実施形態において、SERE(120)は、永続メモリキャッシュ(110)として使用される永続メモリイメージ(125)のコピーをセキュア通信セッションを介してHERE(105)に送信するように構成される。
【0018】
ホスト実行ランタイム環境(HERE)(105)は、ホスト装置(100)上でアプリケーションを実行することが可能な任意のソフトウェアであり得る。HERE(105)の例として、オラクルコーポレーション(Oracle Corporation)のJava(商標)ランタイム環境(JRE)、オラクルコーポレーションのJava Card(商標)ランタイム環境(JCRE)、ノキアコーポレーション(Nokia Corporation)のシンビアン(Symbian)オペレーティングシステム、アップルコーポレーション(Apple Corporation)のiOS(商標)、グーグルコーポレーション(Google Corporation)のアンドロイド(Android)オペレーティングシステム、および/またはアプリケーションを実行することが可能な任意のオペレーティングシステムもしくはランタイム環境が含まれ得る。
【0019】
本発明の1つ以上の実施形態において、HERE(105)は、所定時に永続メモリキャッシュ(110)を作成するように構成される。たとえば、永続メモリキャッシュ(110)は、ホスト装置(100)の起動時またはホスト装置(100)におけるHERE(105)の実行時に作成され得る。HERE(105)は、本発明の様々な実施形態に基づき、永続メモリキャッシュ(110)をいつでも作成、同期、および/または削除するように構成され得る。
【0020】
本発明の1つ以上の実施形態において、HERE(105)は、永続メモリイメージ(125)を永続メモリキャッシュ(110)と同期させるように構成される。同期化は、永続オブジェクトに対する単一アイテムのアトミックな変更およびコミット済みトランザクションの永続性を見込んで行われ得る。本発明の1つ以上の実施形態において、任意のトランザクション外での永続オブジェクトに対する単一アイテムのアトミックな変更は、永続メモリイメージ(125)および永続メモリキャッシュ(110)の両方について即時に行われる。
【0021】
本発明の1つ以上の実施形態において、HERE(105)は、未だ永続メモリイメージ(125)に適用されていない永続メモリキャッシュ(110)への変更を含む1つ以上の変更ログを維持する。最初に、進行中のトランザクションの範囲内の変更は、永続メモリキャッシュ(110)に対して行われ、変更ログに記録され得る。本発明の1つ以上の実施形態において、トランザクションがコミットされると、変更ログが永続メモリイメージ(125)に適用される。HERE(105)は、本発明の1つ以上の実施形態に基づき、アプリケーションの実行毎、トランザクション毎、セッション毎、および/または永続メモリキャッシュ(110)の更新毎に変更ログを維持し得る。本発明の1つ以上の実施形態において、SERE(120)は、セキュア記憶域エレメント(115)内に変更ログを記憶する。
【0022】
本発明の1つ以上の実施形態において、HERE(105)は、永続メモリキャッシュ(110)を維持するためにホスト装置(100)のキャッシング機構をバイパスするように、およびここに記載されるような永続メモリイメージ(125)に変更を適用する1つ以上の方法を適用するように構成される。本発明の1つ以上の実施形態において、HERE(105)は、永続メモリキャッシュ(110)と永続メモリイメージ(125)とを強制的に同期させるためにホスト装置(100)のキャッシング機構を利用するように構成される。
【0023】
図1についての考察を続けると、HERE(105)は、本発明の1つ以上の実施形態に基づき、永続メモリイメージ(125)の破損および/または非同期状態を検知するように構成される。破損および/または非同期状態は、HERE(105)の障害、SERE(120)の障害、ホスト装置(100)のオペレーティングシステムの障害、ユーザによるセキュア記憶域エレメント(115)の突然の撤去、ならびに/またはキャッシュ、キャッシュログ、セッションキャッシュログ、および/もしくは永続メモリイメージ(125)の整合性の維持に関連する処理もしくはコンポーネントの障害によって起こり得る。本発明の1つ以上の実施形態において、HERE(105)および/またはホスト装置(100)は、起動時に同期化チェックを行うように構成される。同期化チェックの結果として、永続メモリイメージ(125)の破損および/または非同期状態が識別された場合、セキュア記憶域エレメント(115)は、1つ以上の予め定められたセキュリティ検証および/または回復処理を行うことができるようになるまで、さらなるアクセスから遮断される。
【0024】
本発明の1つ以上の実施形態において、HERE(105)は、永続メモリキャッシュ(110)に対して部分的に適用されたトランザクション変更および/または変更ログを障害の検知に応答して戻すように構成される。また、HERE(105)は、永続メモリキャッシュ(110)の破損が検知された場合に永続メモリキャッシュ(110)を再度作成するように構成され得る。本発明の1つ以上の実施形態において、SERE(120)は、永続メモリキャッシュ(110)についての同期化動作を追跡し、最後の変更ログが適切に記録されたことを検証するように構成される。
【0025】
本発明の1つ以上の実施形態において、HERE(105)は、セキュア記憶域エレメント(115)から最後のセッション変更ログを回収し、次のプラットフォームのリセット時にそれを適用するように構成される。代替的に、SERE(120)は、本発明の1つ以上の実施形態に基づき、HERE(105)の実行と同時に永続メモリイメージ(125)に対して直接的に変更ログを適用し得る。
【0026】
本発明の1つ以上の実施形態において、HERE(105)は、ホスト装置(100)と結合された場合に、1つ以上のセキュリティ機能を含む。セキュリティ機能の例としては、データのカプセル化、アプリケーションファイヤーウォール、暗号法、および/またはHERE(105)によって提供される任意の他のセキュリティ機能が含まれる。本発明の1つ以上の実施形態において、ホスト装置(100)は、HERE(105)によってセキュアである(すなわち、1つ以上のセキュリティ機能の整合性を保証している、または1つ以上のセキュリティ機能についてのサポートを保証している)とみなされるためには、互換性基準のセットを満たさなければならない。互換性基準の例としては、ハードウェアによる暗号化のサポート(たとえば、プログラムおよび/またはデータメモリの暗号化、暗号化キーの自動生成など)、アクセス防止、コピー/ロック保護、組み込みソフトウェアセキュリティ(たとえば、ファームウェア/メモリセキュリティ、トラステッド組み込み環境(TEE)のサポートなど)、ハードウェアコンポーネント要件、性能要件(たとえば、CPU、マイクロコントローラ、マイクロプロセッサベンチマーク要件、ランダムアクセスメモリ(RAM)、SRAM、ROM、EPROM、EEPROM、もしくは他のメモリの容量要件)、メモリアドレス割当要件、アーキテクチャ設計要件(たとえば、別個のアドレスおよびデータバス)、ハードウェア/メモリの自己破壊性能、タンパー保護、データメモリとプログラムメモリとの分離などが含まれる。
【0027】
互換性基準としては、標準化機構によって定められる1つ以上の標準に準拠していることも含まれる。標準の例としては、JEDEC半導体技術協会によって維持されるJEDEC Standard 100B.01およびJESC21-Cが含まれる。
【0028】
図1についての考察を続けると、ホスト装置(100)は、本発明の1つ以上の実施形態に基づき、HERE(105)の1つ以上の互換性基準を満たさない。これにより、ホスト装置(100)は、上述のセキュリティ機能の1つ以上に関して非セキュアであると考慮され得る。すなわち、ホスト装置(100)が非セキュアであるとみなされた場合、セキュリティ機能の1つ以上は、潜在的に危殆化され得る、または動作不能となり得る。
【0029】
本発明の1つ以上の実施形態において、HERE(105)は、アプリケーションの依存セクション(sensitive section)を識別するように構成される。依存セクションは、アプリケーションの任意のコードセグメント、機能、手順、ライブラリ、オブジェクト、および/または他の識別可能なセクション(HERE(105)自体のセクションも含む)であり、(1)依存セクションとして区別されたもの、または(2)予め定められた基準に適合するものであり得る。依存セクションは、アプリケーションが編集されたプログラム言語中の予め定められたアノテーションのセットを使用して区別され得る。たとえば、Java Card(商標)3 Security Annotationは、Java(商標)コードの依存セクションを区別するために使用され得る。JavaおよびJava Cardは、カリフォルニア州レッドウッドシティ(Redwood City)のオラクルコーポレーションの商標である。依存セクションは、整合性に依存するもの、機密性に依存するもの、および/または任意の他の予め定められたセキュリティ基準に依存するものであり得る。
【0030】
本発明の1つ以上の実施形態において、HERE(105)は、予め定められた基準に基づいてアプリケーションの依存セクションを識別するように構成される。予め定められた基準は、任意の動作タイプ、命令文、および/またはセクションコードを識別するための任意の基準(上記のような明示的な区別以外)を識別し得る。たとえば、HERE(105)は、暗号法演算を依存するものであると識別し、SERE(120)に実行を委任するように構成されてもよい。本発明の1つ以上の実施形態において、HERE(105)は、ホスト装置(100)のメモリ装置(たとえば、RAM)中のアプリケーションの依存セクションを暗号化および記憶する機能性を含む。依存セクションの暗号化および復号化は、実行中のアプリケーションからの要求に応じて行われ得る。
【0031】
本発明の1つ以上の実施形態において、HERE(105)は、セキュア記憶域エレメント(115)に設けられる依存セクションの呼び出しを可能とするためにリモートプロキシを生成する機能性を含む。
【0032】
本発明の1つ以上の実施形態において、HERE(105)は、ホスト装置(100)上で実行されるHERE(105)のチェック値を算出し、以前に算出されたチェック値に対してチェック値を検証するように構成される。チェック値は、本発明の様々な実施形態に基づき、ホスト装置(100)またはセキュア記憶域エレメント(115)に記憶され得る。チェック値がセキュア記憶域エレメント(115)に記憶されると、チェック値はセキュア通信セッションを介して送信され得る。この方法により、HERE(105)の全体が定期的に検証され得る。
【0033】
本発明の1つ以上の実施形態において、HERE(105)は、定期的にSERE(120)から切断され、ホスト装置(100)を再開、および/またはHERE(105)自体の実行を再開するように構成される。
【0034】
本発明の1つ以上の実施形態において、HERE(105)は、アプリケーションのHERE専用セクションおよびアプリケーションのセキュアエレメント専用(SE専用)セクションを識別する機能性を含む。HERE専用セクションおよびSE専用セクションの両方は、アプリケーションの開発者によって区別され得る。本発明の1つ以上の実施形態において、HERE専用アプリケーションは、ウェブとHERE(105)によって実行されるように設計された拡張アプレットアプリケーションとを含み、SE専用アプリケーションは、SERE(120)によって実行されるように設計されたクラッシックアプレットを含む。
【0035】
本発明の1つ以上の実施形態において、HERE(105)は、実行中のアプリケーションのHERE専用セクションと互換性のある1つ以上のセキュリティ機能(たとえば、HERE(105)の1つ以上のセキュリティ機能と互換性のあるセクション)を含む。本発明の1つ以上の実施形態において、HERE(105)は、未加工のバイナリオブジェクトとして記憶されるようにアプリケーションのHERE専用セクションを暗号化、復号化、および/またはSERE(120)に伝送する機能性を含む。そして、未加工のバイナリオブジェクトは、SERE(120)によってHERE(105)に戻され、アプリケーションの実行中にHERE(105)によって復号化される。本発明の1つ以上の実施形態において、HERE(105)およびSERE(120)は、暗号化されたHERE専用セクションを記憶する未加工のバイナリオブジェクトを伝送するために、帯域外通信プロトコルを利用する。
【0036】
図1についての考察を続けると、本発明の1つ以上の実施形態に基づき、本来セキュア記憶域エレメント(120)によって実行されるように設計され、HERE(105)によって実行されている、アプリケーションのためのリモートプロキシを利用するようにHERE(105)が構成される。これらのリモートプロキシは、セキュア記憶域エレメント(115)に記憶されたセキュリティ依存セクションについてSERE(120)に呼び出しを委任するために使用され得る。本発明の1つ以上の実施形態において、開発者は、本来SERE(120)によって実行されるように設計されたアプリケーションのセキュリティを、HERE(105)による実行のために強化するようリモートで利用し得る。
【0037】
本発明の1つ以上の実施形態において、HERE(105)は、ホスト実行(HE)カードマネージャを含む、またはこれに動作的に接続される。HEカードマネージャは、HERE(105)とセキュア記憶域エレメント(115)および/またはSERE(120)との間の通信を行う、および/または通信を容易にする機能性を含み得る。したがって、HEカードマネージャは、セキュア通信セッションを確立する、認証情報管理を扱う、暗号法演算を行う、および/またはセキュア記憶域エレメント(115)もしくはそのコンポーネントの1つ以上の機能を開始するように構成され得る。本発明の1つ以上の実施形態において、HERE専用アプリケーションまたはアプリケーションのセクションは、セキュア記憶域エレメント(115)へのアクセス(すなわち、読み取りおよび書き込み)についてHEカードマネージャに委任される。本発明の1つ以上の実施形態において、HEカードマネージャは、認証情報管理をセキュアエレメント(SE)カードマネージャに委任する。
【0038】
本発明の1つ以上の実施形態において、HERE(105)は、アプリケーションを実行することによって、ホスト装置(100)のオペレーティングシステムによって提供されるライブラリの使用を制限するように構成される。したがって、HERE(105)は、ホスト装置(100)上で利用可能なライブラリのサブセットを識別し、システム(199)の潜在的な脆弱性を低減させるためにこの承認されたサブセットの使用を許可し得る。
【0039】
本発明の1つ以上の実施形態において、HERE(105)は、SERE(120)とのセキュア通信セッションを確立する機能性を含む。セキュア通信セッションは、HERE(105)またはSERE(120)のいずれかによって開始されてHERE(105)とSERE(120)との間のデータの送信を可能とするセキュアな(たとえば、暗号化された)接続であり得る。セキュア通信セッションは、HERE(105)およびSERE(120)によってサポートされる帯域外通信プロトコルおよび/または任意のセキュアチャネルプロトコルを使用し得る。たとえば、Global PlatformのSCP03セキュアチャネルプロトコルがセキュア通信セッションを確立するために使用され得る。セキュア通信セッションは、本発明の1つ以上の実施形態に基づき、ホスト装置(100)のオペレーティングシステムによって容易となり得る、および/または1つ以上のオペレーティングシステムの呼び出しを利用し得る。
【0040】
図1についての考察を続けると、本発明の1つ以上の実施形態に基づき、HERE(105)は、セキュア通信セッションが失敗した後に再開するように構成される。SERE(120)は、失敗を監視し、試みの失敗が予め定められた数となった後にセキュア記憶域エレメントまたはその一部をロックしてもよい。
【0041】
本発明の1つ以上の実施形態において、HERE(105)は、帯域外通信プロトコルを使用してSERE(120)と通信するように構成される。範囲外通信プロトコルの例としては、ホスト装置(100)によって利用される包括的大容量記憶部インターフェイスとは異なる任意のプロトコルが含まれ得る。帯域外通信プロトコルの一例としては、アプリケーションプロトコルデータユニット(APDU)が挙げられる。
【0042】
本発明の1つ以上の実施形態において、ティア化アーキテクチャでは、セキュア記憶域エレメント(115)は、SERE(120)を含む。SERE(120)は、永続メモリイメージ(125)へのアクセスを制御する任意の処理であり得て、ランタイム環境(すなわち、実行環境)、ファームウェアアプリケーション、ファームウェアデータ構造、オペレーティングシステム、および/または永続メモリイメージ(125)へのアクセスを制御することが可能な任意のソフトウェアコード、アプリケーション、もしくはランタイム環境を含む。
【0043】
本発明の1つ以上の実施形態において、SERE(120)は、ホスト装置(100)によって実行された場合に1つ以上の外部アプリケーション(たとえば、HERE(105))と永続メモリイメージ(125)との間の通信のためのインターフェイスを提供するソフトウェアアプリケーションである。SERE(120)の例としては、オラクルコーポレーション(Oracle Corporation)のJava(商標)ランタイム環境(JRE)、オラクルコーポレーションのJava Card(商標)ランタイム環境(JRE)、TrueCrypt FoundationのTrueCryptアプリケーション、Sarah DeanのFreeOTFEアプリケーション、および任意の管理/暗号化/認証アプリケーションが含まれ得る。本発明の1つ以上の実施形態において、SEREは、ランタイム環境の機能性のないSEREの1つ以上の機能を含むセキュアエレメントアプリケーションとして実施され得る。
【0044】
図1についての考察を続けると、本発明の1つ以上の実施形態に基づき、SERE(120)は、セキュア記憶域エレメント(115)(もしくはそのセグメント)に記憶されたデータの暗号化および/または復号化を行う。SERE(120)は、対称キー(たとえば、データ暗号化標準(DES)、高度暗号化標準(AES))および公開キー暗号化(たとえば、RSA暗号化)を含む任意の暗号化の方法を使用するように構成され得る。
【0045】
本発明の1つ以上の実施形態において、非ティア化アーキテクチャでは、セキュア記憶域エレメント(115)は、SERE(120)を含まない。非ティア化アーキテクチャでは、本発明の様々な実施形態に基づき、様々な他のソフトウェアおよび/またはハードウェアセキュリティ機構が利用され得る。
【0046】
本発明の1つ以上の実施形態において、SERE(120)は、セキュア通信セッションのための相互セッションキーとして短期キーを無作為に生成する機能性を含む。相互セッションキーは、ホスト装置(100)上で実行するためにセキュア記憶域エレメント(115)からHERE(105)コードが回収された場合に生成され得る。代替的に、本発明の1つ以上の実施形態において、セキュア記憶域エレメント(115)は、ホスト装置(100)上で実行するためにセキュア記憶域エレメント(115)からHERE(105)コードが回収された場合に単独セッションキーを生成するように構成され得る。
【0047】
本発明の1つ以上の実施形態において、SERE(120)は、
−セキュア記憶域エレメント(115)から回収されるHERE(105)コードにセッションキーを挿入する、
−非常に短い間隔でセッションキーをセキュア記憶域エレメント(115)上の既知の場所に置く、および
−SERE(120)への要求に応答して非常に短い間隔でセッションキーを回収するように構成される。
【0048】
本発明の1つ以上の実施形態において、キーの代わりに、ワンタイムパスワードが使用され得る。本発明の様々な実施形態に基づき、キーまたはパスワードは、一度のみ使用され得る。
【0049】
本発明の1つ以上の実施形態において、SERE(120)は、セキュア記憶域エレメント(115)内のセッションログに対する変更(たとえば、変更ログ、永続オブジェクトに対する単一アイテムのアトミックな変更)をコミットするように構成される。そして、SERE(120)は、次のプラットフォームのリセット、1回以上の定められた回数、および/または1つ以上の事象に応答してセッション変更ログを永続メモリイメージ(125)に適用し得る。たとえば、SERE(120)は、永続メモリイメージ(125)をデフラグしなければならないことを検知してセッション変更ログを適用するように構成され得る。本発明の1つ以上の実施形態において、HERE(105)は、(たとえば非ティア化アーキテクチャにおいて)SERE(120)を必要とすることなく、セキュア記憶域エレメント(115)に対して直接的に前述の変更のいずれかを適用する機能性を含む。
【0050】
図1についての考察を続けると、SERE(120)は、本発明の1つ以上の実施形態に基づき、セキュア記憶域エレメント(115)および/または永続メモリイメージ(125)上で1回以上の定期メンテナンス動作を行うように構成される。定期メンテナンス動作の例としては、デフラグおよびガーベジコレクションが含まれる。SERE(120)は、必要に応じて、または1回以上の定められた回数にわたって定期メンテナンス動作を行い得る。たとえば、メンテナンス動作は、プラットフォームのリセット時に行われ得る。本発明の1つ以上の実施形態において、HERE(105)は、(たとえば、非ティア化アーキテクチャにおいて)SERE(120)を必要とすることなく、直接的にセキュア記憶域エレメント(115)に対して1回以上の定期メンテナンス動作を行う機能を含む。
【0051】
本発明の1つ以上の実施形態において、SERE(120)は、永続メモリイメージ(125)(またはその任意のセグメント)のコピーを作成するように構成される。そして、SERE(120)は、永続メモリイメージ(125)のコピーに対して(または、代替的に元の永続メモリイメージ(125)に対して)セッション変更ログを適用し得る。SERE(120)は、セッション変更ログが上手く適用された後に元の永続メモリイメージ(125)をコピーに置き換えるように構成され得る。本発明の1つ以上の実施形態において、セッション変更ログおよび元の(すなわち、変更されていない)永続メモリイメージ(125)は、コピーに対してセッション変更ログを適用した後に削除される。本発明の1つ以上の実施形態において、HERE(105)は、セキュア記憶域エレメント(115)内に永続メモリイメージのコピーを作成する機能性、および(たとえば、非ティア化アーキテクチャにおいて)SERE(120)を必要とすることなく直接的にセキュア記憶域エレメント(115)に対して変更ログを適用する機能性を含む。
【0052】
本発明の1つ以上の実施形態において、変更ログは、情報を損失することなく複数回にわたって変更を適用できるように一連の冪等エントリとして整理される。変更ログの適用時に障害が発生した場合において、これは永続メモリイメージ(125)のコピーを全て削除して処理を再開するよりも効率的である。
【0053】
本発明の1つ以上の実施形態において、永続メモリイメージ(125)の全体のコピーを作成するのではなく、SERE(120)は、永続メモリイメージ(125)内の1つ以上の変更されたページのコピーを作成するように構成される。したがって、変更ログからの変更は、ページに対して個別に適用され得る。変更の適用時に障害が発生した場合、(永続メモリイメージ(125)の全体ではなく)影響を受けたページのみに対して変更を適用することが可能となり得る。
【0054】
本発明の1つ以上の実施形態において、SERE(120)は、セキュア記憶域エレメント(115)にアプリケーションの依存セクションに対応するチェック値を記憶するように構成される。チェック値は、エラー検知を行い、破損した依存セクションまたは危殆化した依存セクションを識別するために使用され得る。チェック値は、任意の数値、英数字値、バイナリ値、または依存セクションの演算式に基づいて算出される他の値であり得る。たとえば、SERE(120)は、チェック値を生成してエラー検知を行うために、周期的冗長検査(CRC)を使用し得る。
【0055】
本発明の1つ以上の実施形態において、SERE(120)は、依存セクションのチェック値を算出し、安全記憶装置(115)内に記憶される以前の記録チェック値に対してチェック値を有効化するように構成される。HERE(105)は、依存セクションをSERE(120)に送信し、SERE(120)が有効化を行い得る。代替的に、HERE(105)は、有効化を行うために、記憶されたチェック値をSERE(120)から要求し得る。ある例において、HERE(105)はアプリケーションを実行し、実行中にアプリケーション内の依存オブジェクトを識別する。HERE(105)は、1回目にオブジェクトにアクセスすると、オブジェクトをSERE(120)に送信する。SERE(120)は、オブジェクトについての第1のチェック値を算出し、オブジェクトをセキュア記憶域エレメント(115)に記憶する。例について続けると、HERE(105)は、依存オブジェクトに対する2回目のアクセスを識別し、オブジェクトを再度SERE(120)に送信する。SERE(120)は、オブジェクトに基づいて第2のチェック値を算出し、第1のチェック値と第2のチェック値とが等しいことを確認することによってオブジェクトを有効化する。
【0056】
図1についての考察を続けると、本発明の1つ以上の実施形態に基づき、SERE(120)は、セキュア記憶域エレメント(115)の専用パーティションにチェック値を記憶するように構成される。専用パーティションは、チェック値に対する不法な変更を防止するために使用され得る、および/またはさらにホスト装置(100)上で実行中のアプリケーションの各々についてセクションにセグメント化され得る。本発明の1つ以上の実施形態において、HERE(105)は、(たとえば非ティア化アーキテクチャにおいて)SERE(120)を必要とすることなく直接的にセキュア記憶域エレメント(115)にアプリケーションの依存セクションに対応するチェック値を記憶、算出、および/または有効化する前述の機能性の全てを含む。
【0057】
代替的に、本発明の1つ以上の実施形態において、SERE(120)は、セキュア記憶域エレメント(115)上でアプリケーションの依存セクションを暗号化して記憶するように構成される。そして、SERE(120)は、HERE(105)からの要求により依存セクションを復号化する。
【0058】
本発明の1つ以上の実施形態において、SERE(120)は、実行中のアプリケーションのSE専用セクションと互換性のある1つ以上のセキュリティ機能を含む。本発明の1つ以上の実施形態において、SE専用セクション(たとえば、SERE(120)の1つ以上のセキュリティ機能と互換性のあるセクション)が暗号化される、セキュア記憶域エレメント(115)に記憶される、および/またはSERE(120)によって復号化される。したがって、本発明の1つ以上の実施形態に基づき、アプリーションを実行する時、HERE(105)は、SE専用依存セクションへのアクセスおよびセキュリティをSERE(120)に委任するように構成され得る。
【0059】
本発明の1つ以上の実施形態において、SERE(120)は、アプリケーションのSE専用セクションおよびアプリケーションのHERE専用セクションを識別する機能性を含む。SE専用セクションおよびHERE専用セクションの両方は、アプリケーションの開発者によって区別され得る。
【0060】
図1についての考察を続けると、SERE(120)は、本発明の1つ以上の実施形態に基づき、HERE(105)のチェック値を算出し、以前に算出されたチェック値に対してチェック値を有効化するように構成される。チェック値は、本発明の様々な実施形態に基づき、ホスト装置(100)またはセキュア記憶域エレメント(115)に記憶され得る。本発明の1つ以上の実施形態において、HERE(105)の完全なコードを送信およびチェックするのではなく、チェック値を算出するためにコードの一部を使用してもよい。本発明の様々な実施形態に基づき、セクションは、HERE(105)またはSERE(120)のいずれかによって無作為に判定され得る。したがって、本発明の1つ以上の実施形態において、SERE(120)は、検証のためにHERE(105)からHERE(105)コードのセクションを要求し得る、または検証のためにセクションについてのチェック値をHERE(105)が算出するように要求し得る。このため、HERE(105)は定期的に検証され得る。
【0061】
本発明の1つ以上の実施形態において、HERE(105)および/またはSERE(120)は、新たに算出されたチェック値と、セキュリティ依存セクションおよび/またはオブジェクトについてセキュア記憶域エレメントに記憶された登録チェック値との比較を生成するように構成される。比較に基づき(たとえば、チェック値が等しい)、HERE(105)および/またはSERE(120)は、実行のためにコードのセキュリティ依存セクションを有効化し得る。本発明の1つ以上の実施形態において、登録チェック値は、定期的に、または1つ以上の予め定められた事象に応答して更新される。
【0062】
本発明の1つ以上の実施形態において、SERE(120)は、HERE(105)コードについての1つ以上のセキュリティチェックを発動させるように構成される。セキュリティチェックは、ここに記載される1つ以上のエラー検知方法を含む、HERE(105)の整合性を検証する任意の方法を含み得る。セキュリティチェックは、開始時、終了時、時間ベース、および/またはHERE(105)とのインタラクション中の特定の状態時に行われ得る。本発明の1つ以上の実施形態において、SERE(120)は、セキュリティチェックの失敗を検知する、および失敗に応答して永続メモリイメージ(125)をロックする、および/またはHERE(105)との通信の終了を行うように構成される。本発明の1つ以上の実施形態において、HERE(105)は、(たとえば、非ティア化アーキテクチャにおいて)SERE(120)を必要とすることなく、直接的にHERE(105)についてのチェック値を記憶、算出、および/または有効化し、HERE(105)についての1つ以上のセキュリティチェックを発動する前述の機能性の全てを含む。
【0063】
図1についての考察を続けると、本発明の1つ以上の実施形態に基づき、SERE(120)は、SEカードマネージャを含む、またはSEカードマネージャに動作的に接続される。SEカードマネージャは、SERE(120)とセキュア記憶域エレメント(115)との間の通信を行う、および/または容易にする機能性を含み得る。したがって、SEカードマネージャは、本発明の様々な実施形態に基づき、ここに記載のように、セキュア記憶域エレメント(115)へのアクセス、および/またはセキュア記憶域エレメント(115)の管理を制御するように構成され得る。本発明の1つ以上の実施形態において、SE専用アプリケーションまたはアプリケーションのセクションは、セキュア記憶域エレメント(115)に対するアクセス(すなわち、読み取りおよび書き込み)についてSEカードマネージャに委任する。本発明の1つ以上の実施形態において、SEカードマネージャは、HERE(105)に対するセキュアな更新を行う。
【0064】
本発明の1つ以上の実施形態において、システム(199)は、以下の信頼チェーン、または信頼チェーンの任意の変形を利用する。1)SERE(120)→2)HERE(105)→3)セキュリティ対策→4)ホスト装置(100)上でのアプリケーションの実行。対策は、ここに記載のように、アプリケーションの依存セクション、またはHERE(105)、SERE(120)、永続メモリイメージ(125)、および/もしくは永続メモリキャッシュ(110)についての確実性および/または整合性を確保する任意の方法を含み得る。信頼チェーンにより識別された任意の2つのエンティティ間に矛盾が起こった場合、システムは、チェーンにおいて上位のエンティティに対してオーバーライドする権限を付与する。たとえば、SERE(120)からの要求は、HERE(105)からの矛盾する要求に対して優先される。
【0065】
ある例において、SEREはJava Card(商標)2 Runtime Environmentであり、HERE(105)はJava Card(商標)3 Connected Runtime Environmentである。この例において、開発者は、アプリケーションのコードを(1)「.jar」ファイルのHERE専用コードおよび(2)「.cap」ファイルのSE専用コードの2つに分離する。アプリケーションは、以下のコンポーネントを含む。
【0066】
−Transit POSウェブアプリケーション
−Transit Adminウェブアプリケーション
−Transit Turnstile拡張アプレットアプリケーション
−Wallet Assist拡張アプレットアプリケーション
−Wallet Classicアプレットアプリケーション
例について続けると、Transit POSウェブアプリケーション、Transit Adminウェブアプリケーション、Transit Turnstile拡張アプレットアプリケーション、およびWallet Assist拡張アプレットアプリケーションは、HERE(105)に展開される。Wallet Classicアプレットアプリケーションおよび必要なリモートプロキシの対応セクション(スケルトン)は、SERE(120)に展開される。
【0067】
図2は、ホスト装置上で実行ランタイム環境(HERE)を実行する方法についてのフローチャートを示す。ホスト装置は、HEREの永続メモリイメージを有するセキュア記憶域エレメントに接続される。フローチャートの様々なステップは順に示され、記載されているが、当業者は、これらのステップの一部または全てが異なる順序で行われてもよく、ステップの一部または全てが並行して実行されてもよいことを理解するであろう。さらに、本発明の1つ以上の実施形態において、以下に記載の1つ以上のステップは、省略されてもよい、繰り返されてもよい、および/または異なる順序で行われてもよい。このため、図2に示されるステップの具体的な配置は、本発明の範囲を限定するものと解釈されるべきではない。
【0068】
ステップ200において、本発明の1つ以上の実施形態では、セキュア記憶域エレメントはホスト装置を介してアクセスされる。セキュア記憶域エレメントは、動作的にホスト装置に接続され得る。セキュア記憶域エレメントへのアクセスには、セキュア記憶エレメントに対するアクセスのためにホスト装置のユーザを認証する任意の方法が伴う。セキュア記憶域エレメントは、アクセスを提供するために、ユーザからパスワード、キー、および/または認証を取得するように構成され得る。認証の例としては、セキュア記憶域エレメントによる生体認証が含まれ得る。
【0069】
ステップ205において、本発明の1つ以上の実施形態では、セキュア記憶域エレメントに常駐するセキュアエレメントランタイム環境(SERE)が実行される。SEREは、セキュア記憶域エレメントをホスト装置に接続した時に起動または接続ルーチンの一部として実行され得る。代替的に、SEREは、ホスト装置のユーザを認証したことに応答して、および/または任意の予め定められたトリガまたは事象に応答して実行され得る。
【0070】
ステップ210において、本発明の1つ以上の実施形態では、ホスト実行ランタイム環境(HERE)がホスト装置上で実行される。本発明の1つ以上の実施形態において、HEREコードがセキュア記憶域エレメントから安全に回収される。HEREコードは、ホスト装置からの要求に応答してSEREによって回収され得る。
【0071】
ティア化アーキテクチャにおいて、本発明の様々な実施形態に基づき、SEREはHEREの実行を開始または要求し得る。代替的に、本発明の1つ以上の実施形態において、HEREは、セキュア記憶域エレメントに対するアクセスを取得した後、任意の定められた事象またはトリガに応答して実行され得る。
【0072】
ステップ215において、本発明の1つ以上の実施形態では、セキュア通信セッションがHEREとSEREとの間で開始される。セキュア通信セッションは、帯域外通信プロトコルまたは任意の予め定められた通信プロトコルを利用し得る。本発明の様々な実施形態に基づき、セキュア通信セッションは、HEREとSEREとの間のデータの伝送を容易なものとし得る、ならびに暗号化、整合性チェック、および/または他のセキュリティ機構を提供し得る。
【0073】
ステップ220において、本発明の1つ以上の実施形態では、HEREの永続メモリイメージは、セキュア記憶域エレメント内で識別される。永続メモリイメージは、EEPROMイメージまたはセキュア記憶域エレメント上に記憶されるHEREコードのセキュアイメージの任意のタイプであり得る。SEREは、任意の予め定められた時に、または任意の予め定められた事象に応答して、永続メモリイメージの整合性を識別および/または有効化し得る。たとえば、SEREは、ホスト装置の起動時に永続メモリイメージの識別を伴う任意の数のセキュリティおよび/または起動ルーチンを行い得る。
【0074】
ステップ225において、アプリケーションはHEREを使用して実行される。本発明の1つ以上の実施形態において、ティア化アーキテクチャでは、HEREは、アプリケーションの実行を開始し、アプリケーションのSE専用セクションの実行についてSEREに委任する。本発明の1つ以上の実施形態において、HEREは、アプリケーションのHERE専用セクションを実行し、アプリケーションの依存セクションについてはセキュア記憶域エレメントを利用し得る(ティア化または非ティア化アーキテクチャにおいて)。本発明の様々な実施形態に基づき、アプリケーションのセキュリティ依存セクションは、SEREに委任され得る、および/またはセキュア記憶域エレメントに対して記憶される、およびセキュア記憶域エレメントから回収される。
【0075】
ステップ230において、アプリケーションの実行に基づき、永続メモリイメージに変更のセットが適用される。本発明の1つ以上の実施形態において、変更のセットは、変更ログに記憶され、予め定められた時、または予め定められた事象(たとえば、ホスト装置の起動/シャットダウン)に応答して永続メモリイメージに適用される。本発明の1つ以上の実施形態において、変更は、セキュア記憶域エレメント上に常駐するセッション変更ログに書き込まれ、後に永続メモリイメージに対して適用され得る。たとえば、トランザクション変更ログおよび単一アイテムのアトミック変更は、即時にセッション変更ログに書き込まれ得る。例について続けると、SEREはその次に永続メモリイメージのコピーを作成し、全ての変更をコピーに適用する。セッション変更ログがコピーに上手く適用された時、SEREは永続メモリイメージをコピーに置き換える。
【0076】
図3は、セキュア記憶域エレメント上に常駐するセキュアエレメントランタイム環境(SERE)によってアプリケーションのセキュリティ依存セクションを実行するための方法についてのフローチャートを示す。このフローチャートにおける様々なステップは順に示され、記載されているが、当業者は、ステップの一部または全てが異なる順に実行され、ステップの一部または全てが並行して実行され得ることを理解するであろう。さらに、本発明の1つ以上の実施形態において、以下に記載の1つ以上のステップは、省略されてもよい、繰り返されてもよい、および/または異なる順序で行われてもよい。このため、図3に示されるステップの具体的な配置は、本発明の範囲を限定するものと解釈されるべきではない。
【0077】
ステップ300において、アプリケーションは、ホスト装置上で実行中のホスト実行ランタイム環境(HERE)によって実行される。アプリケーションは、セキュア記憶域エレメント上に常駐するSEREの1つ以上のセキュリティ機能と互換性のあるコードの区別されたまたは認識可能なセキュリティ依存セクションを含み得る。
【0078】
ステップ305において、HEREとホスト装置に動作的に接続されたセキュア記憶域エレメントに常駐するSEREとの間でSEREセキュア通信セッションが開始される。本発明の1つ以上の実施形態において、セキュア通信セッションは、HEREまたはSEREによって開始され、様々な通信プロトコルのうちの1つに従い得る。
【0079】
ステップ310において、アプリケーションのセキュリティ依存セクションが識別される。セキュリティ依存セクションは、アプリケーションを記述するプログラム言語において区別され得る、および/またはHEREによって認識される1つ以上の予め定められたセキュリティ依存型命令文であり得る。HEREは、アプリケーションの実行前にアプリケーションのプログラム命令を走査することによって、アプリケーションの実行時にセキュリティセクションを識別し得る。
【0080】
ステップ315において、SEREによって、セキュリティ依存セクションがセキュア記憶域エレメントに記憶された登録チェック値に対して有効化される。セキュリティ依存セクションを有効化するために、セキュリティ依存セクションについての登録チェック値はセキュア記憶域エレメント内に存在しなければならない。したがって、HEREは、セキュリティ依存セクションについてのチェック値を算出し、セキュア通信セッションを介してチェック値をSEREに送信し得る。チェック値を受け取ると、SEREは、チェック値と登録チェック値とを比較し得る。2つの値が等しい場合、SEREは、セキュア通信セッションを介してHEREに対して有効化メッセージを送信することによって、セキュリティ依存セクションを有効化し得る。
【0081】
本発明の1つ以上の実施形態において、セキュリティ依存セクションについて登録チェック値がセキュア記憶域エレメント内に未だ存在しない場合、新たな登録チェック値が算出および記憶される。まず、HEREは、セキュリティ依存セクションについての新たなチェック値を算出し、セキュア通信セッションを介してSEREにチェック値を送信し得る。次に、SEREは、セキュア記憶域エレメントに新しいチェック値を登録および記憶し、登録を確認するHEREにメッセージを返答し得る。本発明の1つ以上の実施形態において、新しいチェック値は、アプリケーションの実行中にセキュリティ依存セクションを終了した時に登録される。
【0082】
本発明の1つ以上の実施形態において、ティア化アーキテクチャでは、チェック値は、SEREによって算出され得る、および/またはセキュア通信セッションを介してSEREに送信されるセキュリティ依存セクションのサブセクションに基づいて算出され得る。この方法により、セキュリティ依存セクションおよび/またはセキュリティ依存セクションによってアクセスされるセキュリティ依存オブジェクトに関する後続の有効化が、新たに登録されたチェック値に対して行われる。
【0083】
ステップ320において、セキュリティ依存セクションが有効化の後に実行される。本発明の様々な実施形態に基づき、セキュリティ依存セクションの実行は、SEREまたはHEREによって行われ得る。セキュリティ依存セクションがSE専用コードを含む場合、SEREはこのようなコードを実行するために使用され得る。逆に、HERE専用コードは、HEREによって実行され得る。
【0084】
ある例において、モバイル装置のユーザは、加入者識別モジュール(SIM)カードをモバイル装置に挿入する。電源が入ると、モバイル装置はSIMカード上常駐するJava Card(商標)2 Runtime Environment(JC2RE)を実行する。この時点において、ユーザからパスワードが取得されるまで、SIMカードはロックされ、モバイル装置上で実行されるアプリケーションからアクセス不能となる。
【0085】
例について続けると、次にホスト装置は、SIMカードのロックを解除するために、パスワードをユーザに促す。SIMカードのロックが解除されると、SIMカード上のJC2REは、パスワードまたは別個のワンタイムキー値を生成し、実行されるHEREのコード(SIMカード上の)内にそれを記憶する。そして、ホスト装置は、実行されるHEREのコードをSIMカードから回収する。この例において、起動後にホスト上(実行中)のHEREは、自身のコードからワンタイムキー値を回収し(使用可能時間は限定される)、HEREとJC2REとの間のセキュア通信セッションを可能とするようにJC2REを用いてセッションキーと交渉するために使用される。
【0086】
例について続けると、HEREは、SIMカードに常駐するHEREの暗号化されたEEPROMイメージのコピーを要求する。暗号化されたEEPROMイメージは、JC2REからモバイル装置上で実行中のHEREに対してセキュア通信セッションを介して送信される。暗号化されたEEPROMイメージは、モバイル装置のRAMにキャッシュされ、プラットフォームのリセットが行われる。
【0087】
例について続けると、プラットフォームのリセットの後、セキュア通信セッションが再び確立され、ホスト装置上でHEREによってアプリケーションのセットが実行される。アプリケーションの実行中、キャッシュの復号化および暗号化がHEREによって行われる。HEREは、以下のタスクも行う。
【0088】
a.暗号法API、Java Card 2互換オブジェクトの呼び出しをJC2REに委任する。
【0089】
b.依存セクション(セキュリティアノテーションオブジェクトまたは方法)に進む時、登録CRC/Digestチェック値に対するチェックのためにセクションをJC2REに送信する。
【0090】
c.依存セクション(セキュリティアノテーションオブジェクトまたは方法)を終了する時、CRC/Digestチェック値の登録のためにセクションをJC2REに送信する。
【0091】
d.単一アイテムのアトミック更新を行う時、または永続オブジェクトに対してトランザクションをコミットする時、対応する変更ログをJC2REに送信する。
【0092】
e.所定のセキュリティチェックポイントにおいて、またはJC2RE要求時において、EEPROMイメージまたはSIMカード上に記憶されたチェック値に対してエラーチェックを行うためのHEREコードまたはアプリケーションコートの所定のセクションまたは無作為に決定されたセクションを送信し得る。
【0093】
例について続けると、終了する前に、HEREはセキュア通信セッションを介してJC2REに対してEEPROMイメージのキャッシュ(またはキャッシュに対する変更のセット)を送信する。そして、JC2REは、キャッシュされたEEPROMイメージの全ての依存セクションをチェックし、SIMカード上のキャッシュされたEEPROMイメージを暗号化および保存する(または既存のEEPROMイメージに対して変更を適用する)。モバイル装置の次の起動時にEEPROMイメージが非同期としてマークされた場合、SIMカードは遮断される。
【0094】
本発明の実施形態は、使用されるプラットフォームに関わらず実質的に全てのタイプのモバイル装置に適用され得る。本発明の1つ以上の実施形態において、モバイル装置(400)は、ユーザインターフェイスを提供する任意のポータブル装置を含む。モバイル装置の例としては、携帯電話、パーソナルデジタルアシスタント、パーソナルコミュニケータ、ページャー、スマートフォン、または任意の他の演算装置が含まれ得るが、これらに限定されない。たとえば、図4に示されるように、モバイル装置(400)は、プロセッサ(402)、メモリ(404)、記憶装置(406)、加入者識別モジュール(SIM)カード(408)、スピーカー(429)、レシーバー(428)、キーボード(424)、音声レコーダ(426)、表示装置(420)、カメラ(422)、およびアンテナ(419)を含む。
【0095】
モバイル装置(400)は、1つ以上のプロセッサ(402)(中央処理ユニット(CPU)、集積回路、ハードウェアプロセッサなど)、関連するメモリ(404)(たとえば、RAM、キャッシュメモリ、フラッシュメモリなど)、記憶装置(406)(たとえば、ハードディスク、コンパクトディスクドライブもしくはデジタルビデオディスク(DVD)ドライブなどの光学ドライブ、フラッシュメモリスティックなど)、SIMカード(408)、および今日のモバイル装置に特有の多くの他のエレメントおよび機能性(図示せず)を含む。モバイル装置(400)は、数字、アルファベット、および他の文字、画像、もしくは他の媒体タイプを含むキーストロークを入力および/または表示することができる、キーボード(424)、レシーバー(428)、および/または表示装置(たとえば、液晶表示スクリーン)(420)などの入力手段および出力手段を含み得る。他の入力装置は、カメラ(422)、音声レコーダ(426)、および/または他のデータ記録機構を含み得る。当業者は、これらの入力および出力手段が、現在知られている、または後に開発される他の形態を取り得ることを理解するであろう。本発明の実施形態を使用し、消費者は、モバイル装置(400)を使用して電子的な資金移動を行い得る。
【0096】
モバイル装置(400)は、アンテナ(419)または他のネットワークインターフェイス接続(図示せず)を介してネットワーク(たとえば、ローカルエリアネットワーク(LAN)、インターネットなどの広域ネットワーク(WAN)、または任意の他の類似のタイプのネットワーク)に接続され得る。本発明の1つ以上の実施形態において、ネットワーク接続は、無線装置に対する無線通信を容易とするために協働する1つ以上のトランシーバーを含む無線インフラストラクチャによって容易となり得る。無線インフラストラクチャは、1つ以上のルータ、スイッチ、マイクロ波リンク、基地局、光ファイバ、または他の類似のネットワーキングハードウェアもしくはソフトウェアコンポーネントを含み得る。たとえば、無線インフラストラクチャは、ページングネットワークや携帯電話ネットワークであり得る。本発明の1つ以上の実施形態において、無線インフラストラクチャは、モバイル装置(400)から受信した任意のメッセージをモバイル装置(400)のモバイル装置識別子と関連付け得る。
【0097】
本発明の1つ以上の実施形態において、ネットワーク接続は、ハードウェアによって実現される接続または他の類似の接続によって容易となり得る。たとえば、ネットワーク接続は、第2のモバイル装置、印刷機構、スキャナ、もしくは記録システムを用いたハードウェアによって実現される接続、または短距離無線接続技術を伴い得る。
【0098】
本発明の実施形態は、使用されるプラットフォームに関わらず、実質的に全てのタイプのコンピュータ上で適用され得る。たとえば、図5に示されるように、コンピュータシステム(500)は、1つ以上のプロセッサ(502)(中央処理ユニット(CPU)、集積回路、ハードウェアプロセッサなど)、関連するメモリ(504)(たとえば、RAM、キャッシュメモリ、フラッシュメモリ)、記憶装置(506)(たとえば、ハードディスク、コンパクトディスクやデジタルビデオディスク(DVD)などの光学ドライブ、フラッシュメモリスティックなど)、および今日のコンピュータに特有の多くの他のエレメントおよび機能性(図示せず)を含む。コンピュータシステム(500)は、キーボード(508)、マウス(510)、またはマイクロフォン(図示せず)などの入力手段も含み得る。さらに、コンピュータシステム(500)は、モニタ(512)(たとえば、液晶ディスプレイ(LCD)、プラズマディスプレイ、もしくは陰極線管(CRT)モニタ)などの出力手段を含み得る。コンピュータシステム(500)は、ネットワークインターフェイス接続(図示せず)を介してネットワーク(514)(たとえば、ローカルエリアネットワーク(LAN)、インターネットなどの広域ネットワーク(WAN)、または任意の他のタイプのネットワーク)に接続され得る。当業者は、多くの異なるタイプのコンピュータシステムが存在し、上述の入力および出力手段が他の形態を取り得ることを理解するであろう。一般的にいえば、コンピュータシステム(500)は、本発明の実施形態を実施するために必要な最小限の処理手段、入力手段、および/または出力手段を少なくとも含む。
【0099】
さらに、本発明の1つ以上の実施形態において、上述のコンピュータシステム(500)の1つ以上のエレメントは、遠方の場所に設けられ、ネットワークを介して他のエレメントに接続され得る。さらに、本発明の実施形態は、複数のノードを有する分散処理システム上で実施され得て、本発明の各部分(たとえば、上で説明した図1のセキュア記憶域エレメント(115)、ホスト装置(100)、ホスト実行ランタイム環境(105)、永続メモリイメージ(125)など)は、分散処理システム内の異なるノード上に設けられ得る。本発明のある実施形態において、ノードはコンピュータシステムに対応する。代替的に、ノードは、関連する物理メモリを有するプロセッサに対応し得る。ノードは、プロセッサ、または共有メモリおよび/もしくはリソースを有するプロセッサのマイクロコアに代替的に対応し得る。さらに、本発明の実施形態を実行するためのコンピュータ可読プログラムコードの形態のソフトウェア命令が、コンパクトディスク(CD)、ディスケット、テープ、メモリ、または任意の他の有体のコンピュータ可読記憶装置などの非一時的コンピュータ可読記憶媒体上に一時的または永続的に記憶され得る。
【0100】
本発明の1つ以上の実施形態は、1つ以上の以下の利点を有する。セキュア記憶域エレメントに接続された非セキュアなホスト装置上でホスト実行ランタイム環境を実行することにより、セキュア記憶域エレメントまたはセキュア記憶域エレメントにあるSEREの1つ以上のセキュリティ機能を利用することができ得る。したがって、セキュア記憶域エレメントによって提供される追加のセキュリティを有しながら、設計者はホスト装置を幅広く選択することができ得る。
【0101】
さらに、セキュア記憶域エレメント上にあるSEREを使用してホストアプリケーションのセキュリティ依存セクションを実行することにより、1つ以上のSE専用セキュリティ機能が利用され得る。したがって、SEREの1つ以上のSE専用セキュリティ機能を危殆化させることなく、非セキュアなホスト装置の処理能力が利用され得る。
【0102】
さらに、永続メモリキャッシュに対する変更をセッション変更ログ内に維持し、予め定められた時(たとえば、プラットフォームのリセット時)に永続メモリイメージに対して変更を適用することにより、システムは変更を適用する際に発生して永続メモリイメージを破損させる障害の可能性を減らし得る。
【0103】
さらに、トランザクション変更ログおよびセッション変更ログ内での単一アイテムのアトミック変更をすぐに適用する代わりに、これらを記録することにより、永続メモリイメージへのアクセス回数が減少し得て、性能が向上し得る。
【0104】
限られた数の実施形態に関して本発明が記載されたが、当業者は本開示の利益を享受し、ここに開示される発明の範囲から逸脱することなく他の実施形態を考案することが可能であると理解するであろう。このため、本発明の範囲は、添付の請求項によってのみ限定されるべきである。
図1
図2
図3
図4
図5