(57)【特許請求の範囲】
【請求項１】
コンピュータ実装方法であって、
ホストオペレーティングシステムを有するホストデバイス上にエミュレータをインスタンス化することであって、前記エミュレータは、前記ホストデバイスのハードウェアアーキテクチャと異なるハードウェアアーキテクチャの機能性を実装し、前記エミュレータは、前記ホストデバイスの集積回路と異なる命令セットを有する少なくとも１つの集積回路をエミュレートするように構成されている、ことと、
前記エミュレートされた集積回路上で実行するゲストオペレーティングシステムを前記エミュレータのエミュレートされたネットワークインターフェースを通して通信するように構成することであって、前記ゲストオペレーティングシステムおよびホストオペレーティングシステムは両方とも、前記ホストデバイス上で実行し、前記エミュレートされたネットワークインターフェースは、前記ホストオペレーティングシステムのネットワークスタックを介して、前記ゲストオペレーティングシステムへおよびそこからのデータの転送を促進するように構成されている、ことと、
前記ゲストオペレーティングシステムおよび前記ゲストオペレーティングシステム上で実行するアプリケーションが、前記ホストデバイスのソフトウェアおよびハードウェアへの不正アクセスを有しないように、前記エミュレータを前記ホストデバイスから切り離すように構成することと、
前記エミュレータの環境が、前記ホストオペレーティングシステムおよび前記ホストオペレーティングシステム上で実行するアプリケーションによる不正アクセスから保護され、前記ホストデバイスの環境が、前記ゲストオペレーティングシステムおよび前記ゲストオペレーティングシステム上で実行するアプリケーションによる不正アクセスから保護されるように、前記エミュレータを構成することと、
前記エミュレートされた集積回路上で実行する１つ以上のゲストオペレーティングシステムプロセスの制御下、
第１のセキュアな通信チャネルを経由して、トランザクションを承認するための要求を受信することであって、前記要求は、前記ホストデバイス上で実行するアプリケーションから受信される、ことと、
前記受信された要求に基づいて、前記ホストデバイスの入力デバイスからユーザ入力を得て、前記ユーザ入力を検証データに変換することであって、前記検証データは、クレジットカードセキュリティコード、クイックレスポンスコード、またはクレジットカード上の集積回路から受信された情報である、ことと、
前記エミュレートされたネットワークインターフェースを通して、遠隔システムへの異なる第２のセキュアな通信チャネルを確立することと、
前記第２のセキュアな通信チャネルを経由して、前記検証データに基づいて前記トランザクションを承認するための要求を前記遠隔システムに送信することと、
前記第２のセキュアな通信チャネルを経由して、承認結果を前記遠隔システムから受信することと、
前記第１のセキュアな通信チャネルを経由して、前記承認結果を示す応答を前記アプリケーションに送信することと
を含む、方法。
【請求項２】
前記エミュレートされた集積回路は、複数の命令を実行する対応する物理的集積回路の動作を複製し、前記物理的集積回路は、中央処理ユニットを備える、請求項１に記載の方法。
【請求項３】
前記エミュレートされた集積回路は、前記物理的集積回路の命令サイクルおよび命令サイクルタイミングを複製する、請求項２に記載の方法。
【請求項４】
前記ホストデバイス上に前記エミュレータをインスタンス化することは、前記エミュレータによってアクセスされ得る制御されたリソースのセットを有するサンドボックスプロセスにおいて前記ホストデバイスを実行することを含む、請求項１に記載の方法。
【請求項５】
前記第１のセキュアな通信チャネルから受信された情報は、暗号化される、請求項１に記載の方法。
【請求項６】
前記入力デバイスは、タッチスクリーンであり、前記入力デバイスから前記ユーザ入力を得ることは、それぞれが前記タッチスクリーンとの相互作用の場所を示す、複数の場所を受信することを含む、請求項１に記載の方法。
【請求項７】
前記エミュレートされたネットワークインターフェースを通して前記遠隔システムへの異なる第２のセキュアな通信チャネルを確立することは、第２のゲストオペレーティングシステムプロセスと前記遠隔システムとの間にセキュアな仮想プライベートネットワークを確立することを含む、請求項１に記載の方法。
【請求項８】
前記ホストデバイスのホストオペレーティングシステムと通信するように前記エミュレータを構成することは、第２のゲストオペレーティングシステムプロセスを前記エミュレートされたネットワークインターフェースにアタッチすることを含み、前記第２のプロセスは、前記エミュレートされたネットワークインターフェースと前記ホストオペレーティングシステムネットワークスタックとの間でパケットを転送するように構成されている、請求項１に記載の方法。
【請求項９】
前記ゲストオペレーティングシステムプロセスのうちの少なくとも１つは、前記ゲストオペレーティングシステムのカーネル空間内で実行する、請求項１に記載の方法。
【請求項１０】
システムであって、
コンピュータ実行可能命令を記憶するためのメモリと、
前記メモリ上に記憶された命令を実行するための処理ユニットであって、前記命令の実行は、前記処理ユニットが、
ホストオペレーティングシステムを有するホストデバイス上にエミュレータをインスタンス化することであって、前記エミュレータは、前記ホストデバイスのハードウェアアーキテクチャと異なるハードウェアアーキテクチャの機能性を実装し、前記エミュレータは、前記ホストデバイスの集積回路と異なる命令セットを有する少なくとも１つの集積回路をエミュレートするように構成されている、ことと、
前記エミュレートされた集積回路上で実行するゲストオペレーティングシステムを前記エミュレータのエミュレートされたネットワークインターフェースを通して通信するように構成することであって、前記ゲストオペレーティングシステムおよびホストオペレーティングシステムは両方とも、前記ホストデバイス上で実行し、前記エミュレートされたネットワークインターフェースは、前記ホストオペレーティングシステムのネットワークスタックを介して、前記ゲストオペレーティングシステムへおよびそこからのデータの転送を促進するように構成されている、ことと、
前記ゲストオペレーティングシステムおよび前記ゲストオペレーティングシステム上で実行するアプリケーションが、前記ホストデバイスのソフトウェアおよびハードウェアへの不正アクセスを有しないように、前記エミュレータを前記ホストデバイスから切り離すように構成することと、
前記エミュレータの環境が、前記ホストオペレーティングシステムおよび前記ホストオペレーティングシステム上で実行するアプリケーションによる不正アクセスから保護され、前記ホストデバイスの環境が、前記ゲストオペレーティングシステムおよび前記ゲストオペレーティングシステム上で実行するアプリケーションによる不正アクセスから保護されるように、前記エミュレータを構成することと、
前記エミュレートされた集積回路上で実行する１つ以上のゲストオペレーティングシステムプロセスの制御下、
第１のセキュアな通信チャネルを経由して、トランザクションを承認するための要求を受信することであって、前記要求は、前記ホストデバイス上で実行するアプリケーションから受信される、ことと、
前記受信された要求に基づいて、前記ホストデバイスの入力デバイスからユーザ入力を得て、前記ユーザ入力を検証データに変換することであって、前記検証データは、クレジットカードセキュリティコード、クイックレスポンスコード、またはクレジットカード上の集積回路から受信された情報である、ことと、
前記エミュレートされたネットワークインターフェースを通して、遠隔システムへの異なる第２のセキュアな通信チャネルを確立することと、
前記第２のセキュアな通信チャネルを経由して、前記検証データに基づいて前記トランザクションを承認するための要求を前記遠隔システムに送信することと、
前記第２のセキュアな通信チャネルを経由して、承認結果を前記遠隔システムから受信することと、
前記第１のセキュアな通信チャネルを経由して、前記承認結果を示す応答を前記アプリケーションに送信することと
を含む動作を行う結果をもたらす、処理ユニットと
を備える、システム。
【請求項１１】
前記エミュレートされた集積回路は、複数の命令を実行する対応する物理的集積回路の動作を複製し、前記物理的集積回路は、中央処理ユニットを備える、請求項１０に記載のシステム。
【請求項１２】
前記エミュレートされた集積回路は、前記物理的集積回路の命令サイクルおよび命令サイクルタイミングを複製する、請求項１１に記載のシステム。
【請求項１３】
前記ホストデバイス上に前記エミュレータをインスタンス化することは、前記エミュレータによってアクセスされ得る制御されたリソースのセットを有するサンドボックスプロセスにおいて前記ホストデバイスを実行することを含む、請求項１０に記載のシステム。
【請求項１４】
前記第１のセキュアな通信チャネルから受信された情報は、暗号化される、請求項１０に記載のシステム。
【請求項１５】
前記入力デバイスは、タッチスクリーンであり、前記入力デバイスから前記ユーザ入力を得ることは、それぞれが前記タッチスクリーンとの相互作用の場所を示す、複数の場所を受信することを含む、請求項１０に記載のシステム。
【請求項１６】
前記エミュレートされたネットワークインターフェースを通して前記遠隔システムへの異なる第２のセキュアな通信チャネルを確立することは、第２のゲストオペレーティングシステムプロセスと前記遠隔システムとの間にセキュアな仮想プライベートネットワークを確立することを含む、請求項１０に記載のシステム。
【請求項１７】
前記ホストデバイスのホストオペレーティングシステムと通信するように前記エミュレータを構成することは、第２のゲストオペレーティングシステムプロセスを前記エミュレートされたネットワークインターフェースにアタッチすることを含み、前記第２のプロセスは、前記エミュレートされたネットワークインターフェースと前記ホストオペレーティングシステムネットワークスタックとの間でパケットを転送するように構成されている、請求項１０に記載のシステム。
【請求項１８】
前記ゲストオペレーティングシステムプロセスのうちの少なくとも１つは、前記ゲストオペレーティングシステムのカーネル空間内で実行する、請求項１０に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願への相互参照）
本出願は、２０１４年８月２６日に出願された「Ｓｙｓｔｅｍ  ｆｏｒ  Ｔｒａｎｓａｃｔｉｏｎ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ」という題名の米国仮特許出願第６２／０４２，１４８号に対して優先権主張する、２０１４年９月３０日に出願された「Ｓｙｓｔｅｍ  ｆｏｒ  Ｔｒａｎｓａｃｔｉｏｎ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ」という題名の米国特許出願第１４／５０２，３００号に対して優先権を主張する。上記文献の全ては、本明細書において参照することによって援用される。
【０００２】
（背景）
本開示は、概して、ハードウェアおよびソフトウェアエミュレーションに関し、より具体的には、エミュレートされた認証デバイスを介して、機密情報をセキュアに記憶、捕捉、および転送するためのシステムならびに方法に関する。
【背景技術】
【０００３】
認証ならびにセキュアなデータの記憶および転送のためのハードウェアベースの解決策は、多くの場合、複雑なカスタマイズされた回路を要求し、設計上の制約、デバイス間のハードウェアの非互換性、長期リードタイム、製造遅延、および他の障害のため、展開がゆっくりである。既存のハードウェアベースの解決策は、種々のモバイルおよび他のデバイス間で非常に異なり、これは、そのネットワーク効果を低減させ、チップベースまたはＳＩＭカードベースである異なるアプローチにわたって市場を分断化させたままにする。市場は、ハードウェアの差異にかかわらず、セキュアな情報を任意のデバイスからおよびそこに記憶、交換、ならびに伝送するための解決策から利益を享受するであろう。
【発明の概要】
【課題を解決するための手段】
【０００４】
（簡単な要約）
セキュアなトランザクション承認のためのシステムおよび方法が提供される。一側面では、コンピュータ実装方法は、エミュレータをホストデバイス上にインスタンス化することであって、エミュレータは、ホストデバイスの集積回路と異なる命令セットを有する集積回路をエミュレートするように構成される、ことと、エミュレータのエミュレートされたネットワークインターフェースを通してホストデバイスのホストオペレーティングシステムと通信するようにエミュレートされた集積回路上で実行するゲストオペレーティングシステムを構成することと、エミュレートされた集積回路上で実行する１つ以上のゲストオペレーティングシステムプロセスの制御下：第１のセキュアな通信チャネルを経由して、ホストオペレーティングシステム上で実行するアプリケーションまたは遠隔アプリケーションから、トランザクションを承認するための要求を受信することと、受信された要求に基づいて、ホストデバイスの入力デバイスからユーザ入力を得て、ユーザ入力を検証データに変換することと、エミュレートされたネットワークインターフェースを通して、遠隔システムへの異なる第２のセキュアな通信チャネルを確立することと、第２のセキュアな通信チャネルを経由して、検証データに基づいてトランザクションを承認するための要求を遠隔システムに送信することと、第２のセキュアな通信チャネルを経由して、承認結果を遠隔システムから受信することと、第１のセキュアな通信チャネルを経由して、承認結果を示す応答をアプリケーションに送信することとを含む。本側面の他の実施形態は、対応するシステムおよびコンピュータプログラムを含む。
【０００５】
一実装では、エミュレートされた集積回路は、複数の命令を実行する対応する物理的集積回路の動作を複製し、物理的集積回路は、中央処理ユニットを備える。エミュレートされた集積回路は、物理的集積回路の命令サイクルおよび命令サイクルタイミングを複製することができる。
【０００６】
別の実装では、エミュレータをホストデバイス上にインスタンス化することは、エミュレータによってアクセスされ得る制御されたリソースのセットを有するサンドボックスプロセスにおいてホストデバイスを実行することを含む。第１のセキュアな通信チャネルから受信された情報は、暗号化されることができる。入力デバイスは、タッチスクリーンであることができ、入力デバイスからユーザ入力を得ることは、それぞれがタッチスクリーンとの相互作用の場所を示す、複数の場所を受信することを含むことができる。
【０００７】
さらなる実装では、エミュレートされたネットワークインターフェースを通して遠隔システムへの異なる第２のセキュアな通信チャネルを確立することは、第２のゲストオペレーティングシステムプロセスと遠隔システムとの間にセキュアな仮想プライベートネットワークを確立することを含む。ホストデバイスのホストオペレーティングシステムと通信するようにエミュレータを構成することは、第２のゲストオペレーティングシステムプロセスをエミュレートされたネットワークインターフェースにアタッチすることを含むことができ、第２のプロセスは、エミュレートされたネットワークインターフェースとホストオペレーティングシステムネットワークスタックとの間でパケットを転送するように構成される。ゲストオペレーティングシステムプロセスのうちの少なくとも１つは、ゲストオペレーティングシステムのカーネル空間内で実行することができる。検証データは、クレジットカードセキュリティコード、クイックレスポンスコード、またはクレジットカード上の集積回路から受信された情報であることができる。
【０００８】
本明細書に説明される主題の１つ以上の実装の詳細は、付随の図面および以下の説明に記載される。本主題の他の特徴、側面、および利点は、説明、図面、ならびに請求項から明白となるであろう。
【０００９】
図面中、同様の参照文字は、概して、異なる図全体を通して、同一部分を指す。また、図面は、必ずしも、正確な縮尺ではなく、代わりに、概して実装の原理の例証に強調が置かれる。以下の説明では、種々の実装は、以下の図面を参照して説明される。
【図面の簡単な説明】
【００１０】
【図１】図１は、ある実装による、ユーザデバイスおよびエミュレートされたデバイスの高レベルシステムアーキテクチャを描写する、略図である。
【図２】図２は、ある実装による、セキュアな認証のための方法を描写する、フロー図である。
【図３】図３は、ある実装による、例示的ネットワーク通信フローを描写する、略図である。
【発明を実施するための形態】
【００１１】
（詳細な説明）
種々の実装において本明細書に説明されるのは、エミュレートされたデバイスを使用して、セキュアな通信、セキュアなデータ転送および記憶、ならびに認証を提供するためのシステムおよび方法である。エミュレートされたデバイスは、ホストデバイスのモバイルデバイスオペレーティングシステム（ＯＳ）上で実行することができ、モバイルおよび電子商取引マーチャントならびにサービスプロバイダのためのデバイスベースの認証サービスを有効にすることができる。例えば、エミュレートされたデバイスは、モバイルアプリケーションおよびクラウドベースのウェブサービスを通して、セキュアな様式で金融に関わる暗証番号（ＰＩＮ）ベースの認証を提供することができる。他の事例では、エミュレートされたデバイスは、種々の形態のモバイルおよび非モバイルデバイス、器具、コンピュータ、ならびに他のシステムへおよびそこからの情報のセキュアな記憶、交換、および伝送を有効にする。さらに、種々のデバイス、システム、プログラム、器具、および機器が、本明細書に説明される技法を使用してエミュレートされることができ、キオスク、ワークステーション、販売時点情報管理システムのためのハンドヘルドデバイス、銀行デバイス、現金自動支払い機、小売および支払システム、医療デバイス、防衛および行政に関わる機器、投票およびデータ収集デバイス、ならびに他のデータ記憶および伝送デバイス等が挙げられる。
【００１２】
エミュレーションとは、他のソフトウェアまたはハードウェアの機能性を提供（すなわち、エミュレート）するためのコンピュータプログラムまたはハードウェアの使用を指す。エミュレータは、エミュレートされたデバイスのハードウェア構成要素に対応する、モジュールを含むことができる。例えば、エミュレータは、中央処理ユニット（ＣＰＵ）、メモリサブシステム、および入力／出力デバイスのエミュレーションを提供することができる。ソフトウェアベースのエミュレータによるエミュレーションの場合、オペレーティングシステムおよび他のアプリケーションは、ネイティブハードウェアによって起動されるのではなく、エミュレータによって解釈されることができる。ソフトウェアベースのエミュレータはまた、エミュレータが実行するホストデバイスのアーキテクチャのうちの特定のハードウェアアーキテクチャをエミュレートすることができる。例えば、エミュレータは、ホストデバイスの物理的集積回路と異なる命令セットを有する、集積回路（例えば、ＣＰＵ）をエミュレートするように構成されることができる。エミュレートされた集積回路は、物理的集積回路の命令サイクルおよび命令サイクルタイミングを複製することができる。
【００１３】
エミュレートされたデバイスは、エミュレートされたハードウェア、オペレーティングシステム、ソフトウェアモジュール、アプリケーション、プラグイン、ランタイム環境、グラフィックエンジン、入力／出力方法、ドライバ、抽象層クライアント、接続プロトコル、セキュリティプロトコル、記憶、メモリ、および仮想化された周辺機器を含むことができる。さらに、エミュレートされたデバイスは、ホストデバイスのＣＰＵによって使用される命令セットと異なり得る、動作のための異なるＣＰＵ命令セットを選択することができる。一実装では、これは、特定の命令セットアーキテクチャ（ＩＳＡ）およびＩＳＡに適切な付随のオペレーティングシステムを有するエミュレートされたデバイスをランダムにインスタンス化することによって達成される。
【００１４】
標準的オペレーティングシステムと異なり、エミュレートされたデバイスは、その中で起動するアプリケーションがホストデバイスのハードウェアにアクセス不能であることを確実にすることができる。これらの制約は、エミュレートされたデバイスを不正な外部アクセスから遮蔽し、ホストデバイスのネイティブ環境をエミュレートされたデバイスによる不正アクセスから遮蔽する、完全にセキュアな環境およびコンテナを作成する。特に、エミュレートされたデバイスは、影響を受けやすい内部アプリケーションを外部からの不正改ざんから遮蔽する、暗号化された環境を提供する。
【００１５】
図１を参照すると、一実装では、システムは、デバイスハードウェア１１０上で実行するネイティブオペレーティングシステム１１４を有する、ユーザデバイス１０２を含む。ユーザデバイス１０２は、スマートフォン、スマートウォッチ、スマートグラス、タブレットコンピュータ、デスクトップコンピュータ、ポータブルコンピュータ、テレビ、ゲームデバイス、音楽プレーヤ、携帯電話、ラップトップ、パームトップ、スマートまたはダム端末、ネットワークコンピュータ、携帯情報端末、ワイヤレスデバイス、情報器具、ワークステーション、ミニコンピュータ、メインフレームコンピュータ、または本明細書に説明される機能性を実行することができる、汎用コンピュータもしくは特殊目的ハードウェアデバイスとして動作される、他のコンピューティングデバイス等のモバイルまたは他のデバイスであることができる。ネイティブオペレーティングシステム１１４は、Ａｐｐｌｅ  ｉＯＳ（登録商標）プラットフォーム、Ｇｏｏｇｌｅ  ＡｎｄｒｏｉｄＴＭプラットフォーム、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステム、Ａｐｐｌｅ  ＯＳ  Ｘ（登録商標）オペレーティングシステム、Ｌｉｎｕｘ（登録商標）オペレーティングシステム、ＵＮＩＸ（登録商標）オペレーティングシステムの亜種、および同等物等のモバイル、デスクトップ、サーバ、または他のオペレーティングシステムであることができる。
【００１６】
デバイスハードウェア１１０は、汎用および特殊目的の両方のマイクロプロセッサを含む、コンピュータプログラムの実行のために好適な１つ以上のプロセッサを含むことができる。概して、プロセッサは、読取専用メモリまたはランダムアクセスメモリもしくは両方上に記憶された命令およびデータを受信する。コンピュータプログラム命令およびデータを具現化するために好適な情報担体は、一例として、半導体メモリデバイス、例えば、ＥＰＲＯＭ、ＥＥＰＲＯＭ、およびフラッシュメモリデバイス；磁気ディスク、例えば、内部ハードディスクまたは可撤性ディスク；磁気光ディスク；ならびにＣＤ−ＲＯＭおよびＤＶＤ−ＲＯＭディスクを含む、あらゆる形態の不揮発性メモリを含む。１つ以上のメモリは、プロセッサによって実行されると、本明細書に説明されるモジュールおよび他の構成要素を形成し、構成要素と関連付けられた機能性を行う、命令を記憶することができる。プロセッサおよびメモリは、特殊目的論理回路によって補完される、またはその中に組み込まれることができる。
【００１７】
ユーザデバイス１０２は、メモリ内に記憶され、プロセッサ上で実行される、複数のソフトウェア処理モジュールを含むことができる。例証として、プログラムモジュールは、機械言語またはオブジェクトコードに変換され、プロセッサまたは複数のプロセッサが命令を実行することを可能にする、１つ以上の好適なプログラミング言語の形態であることができる。ソフトウェアは、好適なプログラミング言語またはフレームワークで実装される、スタンドアロンアプリケーションの形態であることができる。
【００１８】
一実装では、ソフトウェアは、スタンドアロンアプリケーション、プラグイン、構成要素、モジュール、ライブラリ（静的または動的にリンクされる）、または他のソフトウェアオブジェクトの形態であり得る、第三者モバイルアプリケーション１２２を含む。第三者モバイルアプリケーション１２２は、ユーザデバイス１０２上にエミュレートされたデバイス１２０（本明細書では、「エミュレータ」または「エミュレーションエンジン」とも称される）の作成およびそれとの通信を提供する、フレームワークまたはアプリケーションプログラミングインターフェース（ＡＰＩ）を呼び出す、または別様に実行することができる。例えば、フレームワーク／ＡＰＩは、第三者モバイルアプリケーション１２２とリンクされる、またはその中にインポートされる、ライブラリ内に提供されることができる。第三者モバイルアプリケーション１２２は、フレームワークに呼を発呼し、エミュレートされたデバイス１２０をユーザデバイス１０２上にインスタンス化することができる。エミュレートされたデバイス１２０は、エミュレートされたハードウェア１３０およびエミュレートされたゲストオペレーティングシステム１４０等のエミュレートされたソフトウェアを含むことができる。エミュレートされたハードウェア１３０は、エミュレートされた中央処理ユニット（ＣＰＵ）１３４、エミュレートされたメモリおよび他の記憶媒体、エミュレートされた入力および／または出力デバイス、エミュレートされた通信ポートおよび他のインターフェース等の１つ以上のエミュレートされたプロセッサを含むことができる。エミュレートされたオペレーティングシステム１４０は、エミュレートされたカーネル１４４および／または他のシステムおよびユーザ空間要素を含むことができる。
【００１９】
エミュレートされたゲストオペレーティングシステム１４０は、エミュレートされたデバイス１２０のエミュレートされたネットワークインターフェースを通して、ネイティブオペレーティングシステム１１４と通信するように構成されることができる。一実装では、通信は、ゲストオペレーティングシステムプロセスをエミュレートされたネットワークインターフェースにアタッチし、アタッチされたプロセスを使用して、エミュレートされたネットワークインターフェースとネイティブオペレーティングシステム１１４のネットワークスタックとの間でデータを転送する（例えば、伝送制御プロトコル（ＴＣＰ）パケット、ユーザデータグラムプロトコル（ＵＤＰ）データグラム、インターネットプロトコル（ＩＰ）パケット、および／または他のネットワークメッセージを介して）ことによって遂行される。アタッチされたプロセスは、ゲストオペレーティングシステムのカーネル空間またはユーザ空間内で実行することができる。いくつかの実装では、ネットワークトンネルおよび／またはネットワークタップ（ＴＵＮおよび／またはＴＡＰ）等の仮想ネットワークカーネルデバイスが、シミュレートされたネットワークおよびリンク層を提供し、ゲストとネイティブオペレーティングシステム１４０、１１４間における通信を促進するために使用される。
【００２０】
エミュレートされたゲストオペレーティングシステム１４０はまた、ネイティブオペレーティングシステム１１４と関連付けられた典型的ネイティブランタイムフレームワークおよびＡＰＩを利用するのではなく、ネイティブオペレーティングシステム１１４のエミュレートされたネットワークインターフェースおよびネットワークスタックを介して、１つ以上の遠隔システムと通信することができる。別の実装では、ゲストオペレーティングシステム１４０は、遠隔システムへのセキュアなトンネルを作成する、仮想ネットワークアダプタを通して通信する。ユーザデバイス１０２と遠隔システムとの間の通信は、例えば、標準的電話回線、ＬＡＮもしくはＷＡＮリンク（例えば、Ｔ１、Ｔ３、５６ｋｂ、Ｘ．２５）、ブロードバンド接続（ＩＳＤＮ、Ｆｒａｍｅ  Ｒｅｌａｙ、ＡＴＭ）、および／または無線リンク（８０２．１１（Ｗｉ−Ｆｉ）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、ＺｉｇＢｅｅ、Ｚ−Ｗａｖｅ、ＧＳＭ（登録商標）、ＴＤ−ＣＤＭＡ、ＴＤ−ＳＣＤＭＡ、ＣＤＭＡ、無線を経由したＳＭＳ、光ファイバ等）等の媒体を経由して生じることができる。他の通信媒体も、検討される。ネットワークは、ＴＣＰ／ＩＰプロトコル通信、ＨＴＴＰ／ＨＴＴＰＳ伝送等を搬送することができ、ユーザデバイス１０２と遠隔システムとの間の接続は、そのようなＴＣＰ／ＩＰネットワークを経由して通信されることができる。他の通信プロトコルも、検討される。さらに、ユーザデバイス１０２と遠隔システムとの間の通信は、公知のおよび／またはカスタム暗号化／解読アルゴリズムを使用して、暗号化される／解読されることができる。
【００２１】
一実施形態では、エミュレートされたデバイス１２０は、仮想トラステッドプラットフォームモジュール（ＴＰＭ）にエミュレートされたデバイス１２０によって生成される特殊トークンを提供することによって、エミュレートされたゲストオペレーティングシステム１４０のためのセキュアなブートモードを有効にする。特殊トークンは、エミュレーションシステムを利用する、ユーザデバイス１０２および／またはソフトウェア（例えば、第三者モバイルアプリケーション１２２）にウォーターマーク化されることができる。
【００２２】
いくつかの実装では、あるモバイルクライアントおよびバックエンド／クラウドサーバのための承認されたアクセスは、不透明データモデルを実装する、セキュアなフレームワーク／ＡＰＩを通して遂行されることができる。いくつかの事例では、第三者モバイルアプリケーション１１４は、アプリケーション１１４およびユーザデバイス１０２の組み合わせが合法ユーザプラットフォームとして正当性を立証されるまで、フレームワークを介して提供されるサービスを使用することが許可されない。例えば、エンドユーザが、そのサービスプロバイダ（例えば、銀行、マーチャント、医療機関）によって、フレームワークを使用するアプリケーションをダウンロードするように命令され、フレームワークが、続いて、デバイス１０２が感染している（例えば、脱獄されている、疑わしいソフトウェアを有する等）ことを検出する場合、フレームワークは、アプリケーションをフレームワークプロバイダによって動作される遠隔システムにアクセスさせないように拒否することができる。遠隔システムはまた、サービスプロバイダのバックエンドシステムと通信し、その特定のユーザのためのその特定のデバイス１０２の疑わしいステータスをアラートすることができる。
【００２３】
エミュレートされたデバイス１２０はまた、１つ以上のサービス１６０が実行し得る、サービスコンテナ１５０を含むことができる。サービス１６０は、限定ではないが、セキュアな入力／出力、仮想プライベートネットワーク（ＶＰＮ）通信、記憶、キー管理、クイックレスポンスコード（ＱＲＣ）管理、近距離通信（ＮＦＣ）、ホストカードエミュレーション（ＨＣＥ）、支払トークン管理、マルウェア保護、ウイルス検出、ならびに他のセキュリティおよび記憶サービスを含むことができる。
【００２４】
一実装では、エミュレートされたデバイス１２０は、エミュレートされたデバイス１２０によってアクセスされ得る制御されたリソースのセット（例えば、メモリ、記憶空間、プロセッサ、プロセッササイクル等）を有する、サンドボックスプロセスにおいて実行される。サンドボックスは、例えば、サンドボックスの内側で実行するソフトウェアによるサンドボックスの外側のソフトウェアおよび／またはハードウェアへのアクセスが制限されるように、プログラムを起動する、または命令を実行するための機構もしくは空間であることができる。いくつかの事例では、サービスコンテナ１５０は、サービス１６０が実行され得る、１つ以上の二次サンドボックスを含む。
【００２５】
加えて、または代替として、いくつかの機能性は、遠隔で、クラウド内で、またはサービスとしてのソフトウェア（Ｓｏｆｔｗａｒｅ−ａｓ−ａ−Ｓｅｒｖｉｃｅ）を介して、行われることができる。遠隔機能性は、十分なメモリ、データ記憶、および処理能力を有し、サーバクラスオペレーティングシステム（例えば、Ｏｒａｃｌｅ（登録商標）Ｓｏｌａｒｉｓ（登録商標）、ＧＮＵ／Ｌｉｎｕｘ（登録商標）、およびＭｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）系のオペレーティングシステム）を起動させる、サーバクラスコンピュータ上で実行することができる。
【００２６】
システムはまた、分散型コンピューティング環境において実践されることができ、タスクは、通信ネットワークを通してリンクされる、遠隔処理デバイスによって行われる。分散型コンピューティング環境では、プログラムモジュールは、メモリ記憶デバイスを含む、ローカルおよび遠隔コンピュータ記憶媒体の両方内に位置することができる。本明細書に説明されるもの以外のタイプのシステムハードウェアおよびソフトウェアもまた、デバイスの容量および要求されるデータ処理能力の量に応じて、使用されることができる。
【００２７】
本明細書に説明される技法の方法ステップは、１つ以上のコンピュータプログラムを実行し、入力データを操作し、出力を生成することによって、機能を果たす、１つ以上のプログラマブルプロセッサによって行われることができる。方法ステップはまた、特殊目的論理回路、例えば、ＦＰＧＡ（フィールドプログラマブルゲートアレイ）またはＡＳＩＣ（特定用途向け集積回路）によって行われることができ、モジュールは、そのようなものとして実装されることができる。モジュールは、コンピュータプログラムおよび／またはその機能性を実装するプロセッサ／特殊回路の一部を指すことができる。
【００２８】
また、システムおよび方法の実装は、１つ以上の製造品上もしくはその中に具現化される１つ以上のコンピュータ可読プログラムとして提供されることができることに留意されたい。プログラム命令は、データ処理装置による実行のために好適な受信機装置への伝送のために、情報をエンコードするために生成される、人工的に生成される伝搬信号、例えば、機械生成電気、光学、または電磁信号上にエンコードされることができる。コンピュータ記憶媒体は、コンピュータ可読記憶デバイス、コンピュータ可読記憶基板、ランダムまたはシリアルアクセスメモリアレイもしくはデバイス、またはそれらのうちの１つ以上の組み合わせである、またはその中に含まれることができる。さらに、コンピュータ記憶媒体は、伝搬信号ではないが、コンピュータ記憶媒体は、人工的に生成される伝搬信号内にエンコードされるコンピュータプログラム命令源またはその宛先であることができる。コンピュータ記憶媒体はまた、１つ以上の別個の物理的構成要素もしくは媒体（例えば、複数のＣＤ、ディスク、または他の記憶デバイス）である、またはその中に含まれることができる。
【００２９】
ここで図２および３を参照すると、一実装では、１つ以上のセキュアな通信チャネルが、購入、アカウントログイン、セキュアなデータ転送、または認証の形態を要求するデータもしくはプロパティの他の伝送、要求、もしくは受信等のトランザクションを承認するために作成される。一般に、セキュアな通信チャネルとは、セキュアな様式における（例えば、データを暗号化することによる）データの転送（送信および／または受信）のための２つ以上のエンドポイント間の接続を指す。セキュアな通信チャネルの実施例は、仮想プライベートネットワーク（ＶＰＮ）、トランスポート層セキュリティ（ＴＬＳ）およびセキュアソケット層（ＳＳＬ）トンネル、ＩＰセキュリティ（ＩＰｓｅｃ）伝送、ならびに他の形態のセキュアな通信を含む。
【００３０】
ステップ２０２では、クライアントアプリケーション（例えば、第三者モバイルアプリケーション１２２）が、クライアントアプリケーションにリンクされたフレームワークに呼を発呼し、フレームワークが、エミュレータ（例えば、エミュレートされたデバイス１２０）をホストデバイス（例えば、ユーザデバイス１０２）上にインスタンス化する。エミュレータは、エミュレートされたハードウェアおよびソフトウェアを含むことができ、ホストデバイス内の特定の集積回路（例えば、デバイスハードウェア１１０内のＣＰＵ）と異なる命令セットを有する、集積回路（例えば、エミュレートされたＣＰＵ１３４）の命令を再現することができる。エミュレートされた集積回路（例えば、エミュレートされたゲストＯＳ１４０）上で実行するゲストオペレーティングシステムは、エミュレータのエミュレートされたネットワークインターフェースを通して、ホストデバイス上で実行するホストオペレーティングシステム（例えば、ネイティブオペレーティングシステム１１４）と通信するように構成される（ステップ２０６）。
【００３１】
通信動作が、次いで、エミュレートされた集積回路上で実行する１つ以上のゲストオペレーティングシステムプロセスの制御下で行われることができる。第１の通信チャネルが、クライアントアプリケーションがフレームワークに初期化呼を発呼すると確立されることができる。初期化呼は、例えば、デバイス情報とフレームワーク実装と関連付けられたウォーターマークの組み合わせを使用して、そのチャネルを経由した通信の正当性を立証することができる。第１のセキュアな通信チャネルは、例えば、ホストオペレーティングシステムとゲストオペレーティングシステムのエミュレートされたネットワークインターフェースにアタッチされたゲストオペレーティングシステムプロセスとの間に形成されることができる。
【００３２】
ステップ２１０では、ゲストオペレーティングシステムが、第１のセキュアな通信チャネルを経由して、ホストオペレーティングシステム（例えば、第三者モバイルアプリケーション１２２）上で実行するクライアントアプリケーションから発信される、トランザクションを承認するための要求を受信する。エミュレータによって、またはそれを通して提供されるサービスの使用を承認するための要求、金融商品の使用と関連付けられた秘密（例えば、クレジットカードと関連付けられた情報）が存在するかどうかを判定するための要求、および秘密の有効性（例えば、エミュレータによって捕捉されたクレジットカード番号の有効性）を検証するための要求を含む、種々のタイプの要求が、フレームワークを介して行われることができる。
【００３３】
ステップ２１４では、承認のための受信された要求に基づいて、ゲストオペレーティングシステムは、ホストデバイスの入力デバイスからユーザ入力を得て、ステップ２１８では、ユーザ入力を検証データに変換する。ゲストオペレーティングシステムはさらに、ユーザの決定的識別を維持する、サービスプロバイダのシステムを用いて、検証データの正当性を立証することができる。検証データとは、クライアントアプリケーションのユーザの識別を認証するデータを指し、例えば、クレジットカードセキュリティコード（ＣＳＣ）、ＱＲＣ、誕生日、共有秘密、視覚的認識、バイオメトリック識別子、および／または支払カード上の磁気ストリップもしくは集積回路（例えば、埋設されたマイクロチップ）から受信された情報を含むことができる。
【００３４】
一実装では、入力デバイスは、タッチスクリーンであり、ユーザ入力は、それぞれがタッチスクリーンとのユーザの相互作用（例えば、デジタルキーパッド上の番号のユーザの打ち込み）の場所を示す、タッチスクリーン上の複数の場所である。より具体的には、ゲストオペレーティングシステムは、タッチスクリーングラフィカルデバイスを表す仮想入力デバイスのためのスクリーンバッファを作成することができ、バッファにユーザ制御の適切な表現（例えば、キーパッド）を作成させることができる。フレームワークは、ユーザデバイスのディスプレイを見ているユーザが、異なるまたは遠隔デバイスのディスプレイを視認および／または制御し得るように、遠隔ディスプレイおよび／または制御プロトコルもしくは他の技法を組み込むことができる。ユーザの相互作用に基づくユーザ入力は、捕捉され、捕捉された入力をエンコードならびに伝送し得る、カーネルモジュールおよび／またはユーザ空間プロセスとして、ゲストオペレーティングシステム内で起動する特定用途向けモジュールにダイレクトされる。
【００３５】
入力デバイスはまた、例えば、内蔵デバイス（例えば、タッチパッド、ポインティングスティック、クリックホイール、カメラ、マイクロホン、ジャイロスコープ、加速度計、内蔵キーボード等）、および／またはホストデバイスに結合される別個の入力周辺機器（例えば、マウス、キーボード、トラックボール、ジョイスティック、カメラ、マイクロホン、ゲームコントローラ、仮想ヘッドセット等）であることができる。ユーザ入力は、例えば、タッチスクリーンジェスチャ、マウスジェスチャ、タップ、クリック、クリックアンドドラッグ、追跡された眼の動き、ボタン押下、ユーザの顔のビデオフィード、印加された圧力、またはユーザが入力をホストデバイスに提供することを可能にするために好適な他のアクションであることができる。
【００３６】
ゲストオペレーティングシステムは、次いで、エミュレートされたネットワークインターフェースを通して、遠隔システム（例えば、フレームワークプロバイダによって動作されるシステム）への第２のセキュアな通信チャネルを確立する（ステップ２２２）。遠隔システムへの通信チャネルは、例えば、新しいまたは既存のゲストオペレーティングシステムプロセスと遠隔システムとの間のセキュアなＶＰＮであることができ、通信は、ＲＥＳＴｆｕｌ（表現可能な状態の転送アーキテクチャ制約に準拠する）ＡＰＩを使用して、第２のチャネルを経由して達成されることができる。いったん遠隔システムへのチャネルが確立されると、ゲストオペレーティングシステムは、検証データに基づいてトランザクションの承認を促進するための遠隔システムへの要求を送信する（ステップ２２６）。
【００３７】
いくつかの実装では、遠隔システム自体は、トランザクションを承認しないが、検証データをトランザクションと関連付けられた認証オーソリティにセキュアに伝送する。例えば、金融トランザクションの場合、ユーザは、支払カードのための暗証番号（ＰＩＮ）を打ち込むことができ、これは、ゲストオペレーティングシステムによってセキュアに捕捉され、遠隔システムに伝送される。遠隔システムは、次いで、認証のために、ＰＩＮを支払カードと関連付けられた金融ネットワークシステムに転送することができる。ある場合には、応答は、ＰＩＮが有効または無効であると判定される場合、受信される。他の事例では、ＰＩＮが検証されることができない場合、トランザクションは、トランザクションを拒否するであろう、関連付けられた金融ネットワーク内の既存のシステムを通してパスされる。
【００３８】
ステップ２３０では、ゲストオペレーティングシステムが、第２のセキュアな通信チャネルを経由して、遠隔システムから承認結果（例えば、許可または否定）を受信し、ステップ２３４では、第１のセキュアな通信チャネルを経由して、承認結果を示す応答をホストオペレーティングシステム上で実行するアプリケーションに送信する。いくつかの実装では、フレームワークは、ユーザデバイスが感染されていることを検出し、遠隔システムに、デバイスから要求の受諾を停止するように信号伝達することができる。遠隔システムはまた、トランザクション承認に関与する他のシステムにアラートし、ユーザデバイスが、承認が否定される、または別様に、トランザクションを行うことが禁止されるべきことを知らせることができる。
【００３９】
本システムおよび技法を使用した例示的トランザクションが、ここで、説明される。ユーザであるＳａｌｌｙが、家電販売店であるＭｅｇａ−ｍａｒｔ用のモバイル電子商取引アプリケーションをそのスマートフォン上にダウンロードする。電子商取引アプリケーションは、本明細書に説明される承認フレームワーク／ＡＰＩを統合する、Ｍｅｇａ−ｍａｒｔブランドのモバイルウォレットアプリケーションとインターフェースをとり、Ｓａｌｌｙが、例えば、Ｓａｌｌｙがモバイルウォレットアプリケーションに登録したクレジットカードを用いて、Ｍｅｇａ−ｍａｒｔ商品をセキュアに購入することを可能にする。電子商取引アプリケーション内での会計時、モバイルウォレットアプリケーションは、フレームワークを介して、初期化機能を呼び出し、他のデータのうち、Ｓａｌｌｙのクレジットカード情報をパラメータとしてパスする。初期化機能は、スマートフォンのローカル環境を調べ、セキュアである（例えば、脱獄されていない、または疑わしいソフトウェアを有していない）かどうかを判定し、環境がセキュアである場合、機能は、エミュレーションエンジンおよび環境をインスタンス化し、パラメータデータを適切なゲストオペレーティングサービスおよびモジュール（以降、「ｇＯＭ」と称される）にパスする。
【００４０】
ｇＯＭは、パラメータデータをエンコードおよび暗号化し、それをフレームワークプロバイダの遠隔バックエンドシステム（以降、「ＢＥ」と称される）に送信する。ＢＥは、新しいユーザであると判定する場合、適切なデータ構造を作成し、Ｓａｌｌｙについての情報を記憶する。ＢＥは、次いで、１つ以上の金融システムと通信し、該当する場合、認証のためのＰＩＮを使用し得るカードを判定し、応答をｇＯＭに返し、ＰＩＮに対応するカードをマークする。ｇＯＭは、本情報をエミュレーションエンジンに中継し、これは、順に、それを電子商取引アプリケーションに中継する。モバイルウォレットアプリケーションは、次いで、ユーザが支払のために好ましいＰＩＮ対応クレジットカードを選択することを可能にし、ユーザの選択に応じて、パラメータとして選択されたカードとのフレームワーク内のトランザクション承認機能を読み出す、インターフェースをユーザに表示することができる。ｇＯＭは、次いで、ＰＩＮ捕捉インターフェース（例えば、仮想キーパッド）をアクティブ化し、捕捉されたＰＩＮをＢＥに送信し、これは、カード発行者のバックエンドシステムの能力に基づいて、応答をまとめる。モバイルウォレットアプリケーションは、次いで、Ｍｅｇａ−ｍａｒｔによって定義された経験に従って、その通常トランザクションフローを継続する。
【００４１】
さらに、会計時、電子商取引アプリケーションは、ＲＥＳＴｆｕｌ  ＡＰＩ初期化機能をＢＥ上に呼び出し、パラメータとしてＳａｌｌｙのクレジットカード情報をパスすることができる。初期化機能は、ＳａｌｌｙがユーザとしてＢＥ内に存在するかどうかを判定し、該当しない場合、電子商取引アプリケーションに、Ｍｅｇａ−ｍａｒｔのモバイルウォレットアプリケーションをダウンロードするようにＳａｌｌｙに命令するように指示する。いったんモバイルウォレットアプリケーションがＳａｌｌｙのスマートフォン上にインストールされると、ＢＥは、通知要求の暗号化されたペイロードとしての結果とともに、通知サービスをモバイルウォレットアプリケーションに送信する。ウォレットアプリケーションは、次いで、フレームワーク内のデータ処理機能に呼を発呼し、通知ペイロードのコンテンツをパスする。データ処理機能は、ペイロードを受信し、スマートフォンプラットフォームの完全性をチェックする。プラットフォームが、完全性チェックに失敗する場合、ＢＥは、失敗を通知されることができ、ＢＥはまた、デバイスをブラックリストにするために、他の遠隔システムにも失敗を知らせることができる。プラットフォームが、無傷であると判定される場合、データ処理機能は、モバイルウォレットアプリケーションに応答し、支払画面を示し、適切なｇＯＭをプロビジョニングするために、エミュレーションエンジンをインスタンス化し、受信されたデータ（通知ペイロード）をパスする。ｇＯＭは、ＰＩＮ捕捉デバイスをアクティブ化し、任意の捕捉されたデータをＢＥに直ちに送信し、これは、トランザクションをログ化し、ｇＯＭに、通常通り進めるように命令する。ｇＯＭは、肯定応答をエミュレーションエンジンに中継し、これは、順に、それをモバイルウォレットアプリケーションに中継する。モバイルウォレットアプリケーションは、次いで、Ｍｅｇａ−ｍａｒｔによって設計された経験に従って、その通常トランザクションフローを継続する。
【００４２】
本明細書に採用される用語および表現は、限定ではなく、説明の用語および表現として使用され、そのような用語および表現の使用において、図示および説明される特徴の任意の均等物またはその一部を除外することを意図するものではない。加えて、本開示においてある実装が説明されたが、本明細書に開示される概念を組み込む他の実装も、本発明の精神および範囲から逸脱することなく、使用されることができることが当業者に明白となるであろう。種々の実装の特徴および機能は、種々の組み合わせおよび順列において配列されることができ、全て、開示される発明の範囲内にあると見なされる。故に、説明される実装は、あらゆる点において、制限ではなく、例証であると見なされるものとする。本明細書に説明される構成、材料、および寸法もまた、いかようにも限定として意図されず、例証として意図される。同様に、物理的説明が、説明目的のために提供されたが、任意の特定の理論または機構によって境界される、またはそれに従って請求項を限定するように意図されない。
【図１】
0006483243.tif 000002
【図２】
0006483243.tif 000003
【図３】
0006483243.tif 000004