JP5043957B2 - モバイル動作環境のための、安全なアプリケーション間通信を提供すること - Google Patents

モバイル動作環境のための、安全なアプリケーション間通信を提供すること Download PDF

Info

Publication number
JP5043957B2
JP5043957B2 JP2009540431A JP2009540431A JP5043957B2 JP 5043957 B2 JP5043957 B2 JP 5043957B2 JP 2009540431 A JP2009540431 A JP 2009540431A JP 2009540431 A JP2009540431 A JP 2009540431A JP 5043957 B2 JP5043957 B2 JP 5043957B2
Authority
JP
Japan
Prior art keywords
handshake
application
response
data
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2009540431A
Other languages
English (en)
Other versions
JP2010511965A (ja
Inventor
フォク、ケニー
ホワン、ジーユン
イプ、エリック・チ・チュン
ルシン、ミカイル・エー.
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2010511965A publication Critical patent/JP2010511965A/ja
Application granted granted Critical
Publication of JP5043957B2 publication Critical patent/JP5043957B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0869Network architectures or network communication protocols for network security for authentication of entities for achieving mutual authentication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/06Authentication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/168Implementing security features at a particular protocol layer above the transport layer
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/70Reducing energy consumption in communication networks in wireless communication networks

Description

米国特許法第119条の優先権の主張
この特許出願は、本願の譲受人に譲受され、そして参照により本願に明示的に組み込まれる、2006年12月5日に出願され“METHOD AND APPARATUS FOR ESTABLISHING A TRUSTED COMMUNICATION BETWEEN TWO APPLICATIONS ON A SINGLE PLATFORM”と表題された米国仮出願番号60/868,701、及び、2007年3月14日に出願され“METHOD AND APPARATUS FOR INTER APPLICATIONS COMMUNICATION”と表題された米国仮出願番号60/894,897に基づく優先権を主張する。
下記の説明は、全般的にモバイル機器のアプリケーション及び無線通信に監視、より具体的には、1つまたはそれ以上のモバイルプラットフォーム上で動作するモバイルアプリケーション間における、安全(secure)なデータ交換を提供することに関する。
近年、様々な進歩が、移動体通信技術及び移動体通信機器において起きている。その進歩の一面は、例えばそのような機器へのカメラやビデオ録画技術の一体化や、モバイル通信へのeメールやショートメッセージサービスの組み込みなど、ソフトウェア及び/またはハードウェアアプリケーションに関係している。これらのアプリケーションは、既によくある通信機器(例えば携帯電話)に、増強されたフレキシビリティ、処理能力、通信機能等を付加してきた。その結果、そのような機器は、消費者市場においてよりポピュラーとなり、非常に多くの消費者にそのような機器の購入意欲を高め、または新たなアプリケーションまたは技術を含む機器へのアップグレードの動機付けとなってきた。
更に、種々のタイプの悪意のあるソフトウェア(破壊工作ソフト(malware))が、概して電子通信の妨げとなっている。ある破壊工作ソフトは、比較的無害であり、単にユーザの行動をモニタして、新たな製品の開発や、それらの製品を消費者にアピールするための販売戦略とコマーシャルの作成に役立たせる。モニタしているプログラムは、通常、動作環境や記録されているデータにダメージを与えることは無いが、これらをもとに、電子機器の処理リソースを消費し得る。しかし、ある破壊工作ソフトは積極的に、機器の動作環境を破壊し、データを改竄し、パスワードやユーザ情報を盗む等、行うことがある。それらは種々のメカニズムによって動作可能であるが、それらは一般的に、それら自身を機器上の真正のプログラムに書き込むか、またはそのようなプログラムに見えるようにそれら自身を隠すか等、行う。悪意のあるソフトウェアの影響によって、電子動作環境における通信を安全にするための種々のメカニズムが生まれてきた。モバイル機器も、なりすましプログラムや、他の破壊工作ソフトによる損害の例外では無く、一般的に保護通信の地益を得る。モバイルであっても。
下記は、1つまたはそれ以上の実施形態の単純化されたサマリを開示し、それはそのような実施形態の基本的な理解を提供するためである。このサマリは、全ての熟慮された実施形態の広範囲に及ぶ概観では無く、また全ての実施形態の主要なまたは重要な意味を持つ要素を特定するものでも無いし、いくつかまたは全ての実施形態の範囲の外延を示すものでも無い。その唯一の目的は、後に与えられるより詳細な説明の前置きとしての簡単化された形態における、1つまたはそれ以上の実施形態の、いくつかの考え方を提供することである。
主題となる開示は、モバイル動作環境において実行されるモバイルアプリケーションのための、安全で効率的な通信を提供する。例として、プライマリモバイルアプリケーションは、プライマリモバイルアプリケーションから受信した応答通信(responsive communication)を認証し及び/または署名するためのランダムな番号と、プライマリアプリケーションの識別子とを含むハンドシェイクをイニシエイト出来る。レシピエントアプリケーションは、ユニークな識別子を、認証されたプライマリアプリケーションのリストに照会し、プライマリアプリケーションを確認出来る。もしユニークな識別子が確認されれば、レシピエントアプリケーションは、レシピエントアプリケーションに送られる引き続く通信に署名及び/または認証するために使用され得る第2のランダムな番号及びランダムな番号と共にハンドシェイクに応答する。上記に加えて、プライマリアプリケーションとレシピエントアプリケーションは、対応する応答または要求がそれぞれ受信または送信されるまで、要求及び/または応答を遅延させることが出来る。
主題となる開示の更なる側面によれば、イニシエイトしているまたはレシピエントアプリケーションを特定するために生成されるランダムな番号は、次の通信のためにインクリメントされ得る。応答は、確認される応答についてのランダムな番号の適切なインクリメントを含むだろう。その結果、主題となる開示は、ラウンドトリップ通信を提供し、各ラウンドトリップはランダムな番号のインクリメントによって特定され、また各ラウンドトリップは引き続くラウンドトリップがイニシエイトされる前に完了する。
更に別の側面によれば、ランダムな番号は、この番号を隠し、認証されていないアプリケーションに対する更なるセキュリティを提供するため、ハッシュ及び/または切り捨てられることが出来る。更に、ハッシュ関数は、他の暗号化/復号化メカニズムに比べて非常に処理が少ないため、主題となる開示は、一般的な技術に比べて比較的低電力消費の効率的な方法において、モバイルアプリケーション間の安全なデータ転送を提供する。更に別の側面によれば、モバイルアプリケーションは、モバイルネットワーク、伝送制御プロトコル/インターネットプロトコル(TCP/IP)、及び他の同種のものによって接続された、隔てられた携帯電話等の遠隔動作機器、または1つの携帯電話のような単一で動作する機器上で、実行されることが出来る。
他の側面によれば、モバイル動作環境におけるアプリケーション間のデータ通信を提供する方法が開示される。この方法は、プライマリモバイルアプリケーションのユニークな識別子と、ハンドシェイクのために生成されたランダムな番号とを含む、モバイルアプリケーションとのハンドシェイクをイニシエイトすることと、ハンドシェイクに対する、第1の番号と第2の番号を含む応答を、受信することとを含み、第2の番号はモバイルアプリケーションによってランダムに生成される。この方法は更に、第1の番号がハンドシェイクのために生成されたランダムな番号であることを確認することと、もし第1の番号がランダムな番号として確認されれば、第2の番号のインクリメントを含むデータイベントをモバイルアプリケーションに送信することとを含む。更に方法はまた、第2のデータイベントの送信の前に、モバイルアプリケーションからの、少なくとも第2の番号のインクリメントを含むデータイベントの応答を待つことを含むことが出来る。
更なる側面によれば、モバイル動作環境におけるアプリケーション間のデータ通信を提供する装置が開示される。この装置は、レシピエントアプリケーションとのハンドシェイクをイニシエイトするように構成された安全セッションモジュールを含むことが出来、このハンドシェイクは、ランダムな番号と、プライマリアプリケーションのユニークなIDとを含む。更に装置は、ハンドシェイクに対する、応答番号と第2の番号とを含む応答を受信し、応答番号が前記ランダムな番号または第2のランダムな番号のインクリメントであるかを判断するように構成された確認モジュールを含むことが出来る。更にこの装置は、もし応答番号がランダムな番号または第2のランダムな番号のインクリメントとして確認されれば、第2のランダムな番号のインクリメントを含むデータイベントを、レシピエントアプリケーションに対して送信するように構成された通信モジュールを含むことが出来る。更に装置はまた、少なくとも第2の番号のインクリメントを含むデータイベントの応答がレシピエントアプリケーションから受信されれば、第2のデータイベントの送信を通信モジュールに対して可能にする、通信管理モジュールを含むことが出来る。
更に別の側面によれば、モバイル動作環境におけるアプリケーション間のデータ通信を提供する少なくとも1つのプロセッサが開示される。プロセッサは、プライマリモバイルアプリケーションのユニークな識別子と、ハンドシェイクのために生成されたランダムな番号と、を含む、モバイルアプリケーションとのハンドシェイクを、イニシエイトする、第1のモジュールと、第1の番号と第2の番号とを含む、ハンドシェイクに対する応答を受信する第2のモジュールとを含むことが出来、第2の番号は、モバイルアプリケーションによってランダムに生成される。更にプロセッサは、第1の番号が、ハンドシェイクのために生成されたランダムな番号であるかを確認する第3のモジュールと、もし第1の番号がランダムな番号と確認されれば、第2の番号のインクリメントを含む、モバイルアプリケーションのデータイベントを送信する第4のモジュールとを含むことが出来る。上記に加えてプロセッサは、第2のデータイベントの送信が可能とされる前に、少なくとも第2の番号のインクリメントを含む、モバイルアプリケーションからのデータイベントの応答を待つ第5のモジュールを含むことが出来る。
更に別の側面に従って、モバイル動作環境におけるアプリケーション間のデータ通信を提供する装置が述べられる。この装置は、プライマリモバイルアプリケーションのユニークな識別子と、ハンドシェイクのために生成されたランダムな番号とを含む、モバイルアプリケーションとのハンドシェイクをイニシエイトする手段と、第1の番号と第2の番号とを含む、ハンドシェイクに対する応答を受信する手段とを含むことが出来、第2の番号は、モバイルアプリケーションによってランダムに生成される。更に、装置はまた、第1の番号が、ハンドシェイクのために生成されたランダムな番号であるかを確認する手段と、もし第1の番号がランダムな番号として確認されれば、第2の番号のインクリメントを含むデータイベントを、モバイルアプリケーションへ送信する手段とを含むことが出来る。更に装置は、少なくとも第2の番号のインクリメントを含むデータイベントの応答をモバイルアプリケーションから受信するまで、送信される第2のデータイベントを遅延させる手段とを含むことが出来る。
少なくとも1つの側面によれば、モバイル環境アプリケーションのためのデータ通信セキュリティを提供する命令を保持するコンピュータ読み取り可能媒体を含むコンピュータプログラム製品が開示される。このコンピュータ読み取り可能媒体は、コンピュータに対して、プライマリモバイルアプリケーションのユニークな識別子と、ハンドシェイクのために生成されたランダムな番号とを含む、モバイルアプリケーションとのハンドシェイクをイニシエイトさせるように構成された第1の命令セットを含むことが出来る。更に、コンピュータ読み取り可能媒体は、コンピュータに対して、第1の番号と第2の番号とを含む、ハンドシェイクに対する応答を受信させるように構成された第2の命令セットを含むことが出来、第2の番号は、モバイルアプリケーションによってランダムに生成される。更に、コンピュータ読み取り可能媒体は、コンピュータに対して、もし第1の番号がランダムな番号として確認されれば、第2の番号のインクリメントを含むデータイベントをモバイルアプリケーションに送信させるように構成された第3の命令セットを含むことが出来る。上記に加えて、コンピュータ読み取り可能媒体はまた、コンピュータに対して、第2のデータイベントが送信可能とされる前に、少なくとも第2の番号のインクリメントを含む、モバイルアプリケーションからのデータイベントの応答を待たせるように構成された第4の命令セットを含むことが出来る。
1つまたはそれ以上の側面によれば、モバイル動作環境におけるアプリケーション間のデータ通信を提供する方法が述べられる。この方法は、プライマリアプリケーションのユニークなIDまたはプライマリアプリケーションによって生成されたランダムな番号を含む、プライマリアプリケーションからのハンドシェイクを受信することと、ユニークなIDを、信頼されたプライマリアプリケーションの識別子のリストに対して照会することとを含むことが出来る。更に方法は、もしユニークなIDが、信頼されたプライマリアプリケーションの識別子のリストのIDと一致すれば、プライマリアプリケーションにハンドシェイクの応答を送信することと、データイベントの要求を受信することとを含むことが出来る。更に方法は、更なるデータイベントの要求を受信する前に、データイベントの要求に対して応答することを更に含むことが出来る。
更なる側面によれば、モバイル動作環境におけるアプリケーション間のデータ通信を提供する装置が開示される。この装置は、プライマリアプリケーションのユニークなIDまたはプライマリアプリケーションによって生成されたランダムな番号を含む、プライマリアプリケーションからのハンドシェイクの要求を受信するように構成されたセキュリティモジュールを含むことが出来る。更に装置は、ユニークなIDを、信頼されたプライマリアプリケーションの識別子のリストに対して確認するように構成された照会モジュールと、もしユニークなIDが、信頼されたプライマリアプリケーションの識別子のリストのIDに一致すれば、プライマリアプリケーションにハンドシェイクの応答を送信するように構成され、またデータイベントの要求を受信するように構成されたインターフェースモジュールとを含むことが出来る。上記に加えて、装置はまた、更なるデータイベントの要求を受信する前に、データイベント要求への応答するための接続を求めるように構成された管理モジュールを含むことが出来る。
更に別の側面によれば、モバイル動作環境におけるアプリケーション間のデータ通信を提供する、少なくとも1つのプロセッサが述べられる。このプロセッサは、プライマリアプリケーションのユニークなIDまたはプライマリアプリケーションにより生成されたランダムな番号を含む、プライマリアプリケーションからのハンドシェイクの要求を受信する第1のモジュールと、信頼されたプライマリアプリケーションの識別子のリストに対してユニークなiDを照会する第2のモジュールとを含む。更にこのプロセッサは、もしユニークなIDが、信頼されたプライマリアプリケーションの識別子のリストに一致すれば、プライマリアプリケーションにハンドシェイクの応答を送信する第3のモジュールと、データイベントの要求を受信する第4のモジュールとを含むことが出来る。更にプロセッサは、更なるデータイベントの要求を受信する前に、データイベントの要求に対して応答する第5のモジュールを含むことが出来る。
1つまたはそれ以上の更なる側面によれば、モバイル動作環境におけるアプリケーション間のデータ通信を提供する装置。この装置は、プライマリアプリケーションのユニークなIDまたはプライマリアプリケーションにより生成されたランダムな番号を含む、プライマリアプリケーションからのハンドシェイクの要求を受信する手段と、信頼されたプライマリアプリケーションの識別子のリストに対してユニークなiDを照会する手段とを含む。更にこの装置は、もしユニークなIDが、信頼されたプライマリアプリケーションの識別子のリストに一致すれば、プライマリアプリケーションにハンドシェイクの応答を送信する手段と、データイベントの要求を受信する手段とを含むことが出来る。更に装置は、データイベントの要求を受信するまで、更なるデータイベントの要求の受信を遅延させる手段を含むことが出来る。
更なる側面によれば、モバイル動作環境におけるアプリケーション間のデータ通信を提供するための命令を含むコンピュータ読み取り可能媒体を含む、コンピュータプログラム製品が述べられる。より具体的には、コンピュータ読み取り可能媒体は、コンピュータに対して、プライマリアプリケーションのユニークなIDまたはプライマリアプリケーションにより生成されたランダムな番号を含む、プライマリアプリケーションからのハンドシェイクの要求を受信させるように構成された、第1の命令セットを含むことが出来る。コンピュータ読み取り可能媒体はまた、コンピュータに対して、信頼されたプライマリアプリケーションの識別子のリストに対してユニークなiDを照会させるように構成された第2命令セットと、コンピュータに対して、もしユニークなIDが、信頼されたプライマリアプリケーションの識別子のリストのIDに一致すれば、プライマリアプリケーションにハンドシェイクの応答を送信させるように構成された第3命令セットとを含むことが出来る。更にコンピュータ読み取り可能な媒体はまた、コンピュータに対して、データイベントの要求を受信させるように構成された第4命令セットと、コンピュータに対して、更なるデータイベントの要求を受信する前に、データイベントの要求に対して応答させるように構成された第5命令セットとを含むことが出来る。
上記及び関連する目的の達成のため、1つまたはそれ以上の側面は、後に特許請求の範囲において十分に述べられ、また特に指摘される特徴を備える。下記の説明と、添付図面は、1つまたはそれ以上の側面の、ある特定の例示的な側面の詳細を説明する。しかしながらこれらの側面は、種々の側面の原理が使用される様々な方法のうちのほんの数例を示すに過ぎず、説明された側面は、そのような側面の全てと、それらに等価なものを含むことを意図している。
図1は、モバイルアプリケーション間における安全で低電力の通信を提供出来る、見本となるシステムのブロック図を例示する。 図2は、モバイル動作環境で実行されるアプリケーション間の安全な通信を先導(initiate)出来る、見本となるシステムのブロック図を示す。 図3は、モバイル動作環境において実行されるアプリケーション間での安全な通信に対して応答出来る、見本となるシステムのブロック図を示す。 アプリケーション間における安全で低電力の通信を提供でき、モバイルアプリケーションを実行出来る、見本となるモバイル機器を例示する。 図5は、ある側面に従った遠隔の機器(remote device)上で動作するモバイルアプリケーションのための安全な通信を提供する、見本となるネットワークを示す。 図6は、別の側面に従ったモバイルアプリケーションのための、安全な遠隔通信を容易にするための、見本となる基地局を例示する。 図7は、モバイル動作環境におけるモバイルアプリケーション間での安全な通信を先導するための、見本となる手順を例示する。 図8は、一側面に従ったラウンドトリップ通信を完了するために、データイベントを再送信する、見本となる手順を例示する。 図9は、モバイルアプリケーション間での安全な通信における、ラウンドトリップ通信をインクリメント(increment)する手順例を示す。 図10は、モバイル動作環境におけるモバイルアプリケーション間での安全な通信に応答する手順例を例示する。 図11は、イニシャル(initial)の要求とラウンドトリップ通信が完了するまで、引き続く要求をバッファリングする手順例を示す。 図12は、モバイルアプリケーション間での安全な通信における、再度イニシエイト(re-initiated)されたハンドシェイクを受信する手順例を例示する。 図13は、ハンドシェイクを終了する手順例を例示する。 図14は、モバイル動作環境における安全な通信をイニシエイトするためのシステムの、見本となるブロック図を例示する。 図15は、モバイル動作環境における安全な通信を受信するためのシステムの、見本となるブロック図を例示する。
種々の側面が、これより図面を参照して説明される。図面において、同様の参照符号が、全図にわたって同様の要素を指すために使用される。下記の説明において、例示の目的で、多数の具体的な詳細が、1つまたはそれ以上の側面の詳細な理解を提供するために、説明される。しかしながら、そのような側面は、これらの具体的な詳細を必要とせずに実行可能であることは、明らかであり得る。別の場合には、1つまたはそれ以上の側面の説明を助けるために、よく知られた構造及び機器はブロック図で示される。
主題となる開示は、モバイル環境におけるアプリケーション間の、安全で効率的で、そして処理の少ない通信を提供する。電子通信を保護するための種々の一般的なメカニズムが存在する。しかし、そのような一般的なメカニズムは通常、複雑で処理の集中する暗号化及び復号化アルゴリズムを使用する。そのようなメカニズムは、その演算処理の要求から、比較的大きな電力を消費する。しかしながらモバイル動作環境は、バッテリ電力に依存するため、低消費電力が有効である。いくつかのアプリケーションは、モバイル環境における低消費電力のための改良がなされているが、そのような改良は、通信を保護する点においては全く十分ではなかった。1つの理由は、システム処理及びメモリ技術における進歩及び予期された進歩によるものである。例えば、そのような進歩は、多くのアプリケーション研究者に、プロセッササイズ、並列処理、及びメモリサイズ等、予期される進歩に従って、通信プロトコルを改良して消費電力の削減することをやめさせる。
また開示は、ラウンドトリップコンセプト(round-trip concept)を使用するアプリケーション間の通信である。より具体的には、アプリケーションは、引き続く要求/応答の開始及び/または処理の前に、完了すべき並行する(concurrent)要求または応答を待つことが出来る。ラウンドトリップ通信は、同期環境において特に効率的であることが出来る。伝送制御プロトコル/インターネットプロトコル(TCP/IP)のような、共通の一般的な通信は通常、ターゲットとなるアプリケーションからの応答を待つ前に、データパケットの列を送信する。更に、保護されたTCP/IP通信では、受信データの復号化及び/または把握は、しばしば送信における全データパケットの受信に依存する。もし1つのデータパケットをロストした場合、送信されたデータの大半は使用不可となり得る。代わりに、主題となる開示は、もしデータまたはセキュリティ識別子が、イニシエイトしているまたはレシピエント(initiating and recipient)アプリケーションによってロストされた場合に、要求及び/または応答の再送信を規定する。そのようなシステムは、他のメッセージの受け渡し及び/または共有メモリ環境と同様にインターネットや最も私的なイントラネットにおいても使用される、広範囲にわたって成功したTCP/IPアーキテクチャと、劇的に異なっている。その結果、本明細書で述べられるラウンドトリップ及び再送信アーキテクチャは、それらの成功と大衆化のために、本明細書で説明された効率化、同期、及び低電力の安全なデータ交換から研究を遠ざけた一般的な通信アーキテクチャとは異なり、相容れないものである。
上記に加えて、開示は、別のアプリケーションによって提供される通信を特定及び/または認証するための、特定のアプリケーションによって生成された、ランダムな番号(random numbers)を使用する、アプリケーション間通信アーキテクチャである。例えば、イニシエイトしているモバイルアプリケーションはランダムな番号を生成して、そのランダムな番号をレシピエントアプリケーションに与えることが出来る。イニシエイトしているモバイルアプリケーションへの続く応答は、通信がレシピエントから来たものであること、及びなりすましプログラムまたはその他の破壊工作ソフトで無いことを確認するために、特定のラウンドトリップを特定する、ランダムな番号をインクリメントしたものまたはこのランダムな番号を含むだろう。更なる側面によれば、このランダムな番号は、集中的及び大消費電力の暗号化/復号化アルゴリズムを必要とせずにこのランダムな番号を分かりにくくするために、計算が集中的でないハッシュ関数(例えば、SHA-1、SHA-224、SHA-256、SHA-386、SHA-512、SHA-2、メッセージダイジェストアルゴリズム[MD5]、等)を用いて暗号化されることが出来る。更に、ハッシュされたランダムな番号は、イニシエイトしているまたはレシピエントアプリケーション間の特定の通信インターフェースによって求められるように切り捨てられることが出来る。このように開示は、モバイル環境に有益な、安全なアプリケーション間通信を提供するメカニズムである。
種々の側面が、以下に述べられる。本明細書における教示は非常に多くの様々な形態で実施されることが出来、また本明細書に開示された特定の構造及び/または関数は単なる例示に過ぎないことが明らかであるべきである。本明細書の教示に基づいて当業者は、本明細書に開示された側面が、他の側面から独立して実施可能であること、またこれらの側面の2つまたはそれ以上を、様々な方法で組み合わせることが可能であることを理解すべきである。例えば、本明細書で説明された幾つかの側面を用いて装置が実装され、及び/または方法が実行されることが出来る。更に、本明細書で説明された側面の1つまたはそれ以上、またはそれ以外のものに、他の構造及び/または機能を用いて、装置が実装され、及び/または方法が実行されることが出来る。一例として、本明細書で述べられた多くの方法、機器、システム、及び装置が、少なくとも1つの携帯機器上で動作し、そのようなアプリケーション間での安全な通信を確立する1つまたはそれ以上のアプリケーションと関連して説明される。当業者は、同様の技術がその他の通信環境にも更に適用出来ることを理解すべきである。
本開示で使用される際、用語「要素」、「システム」、及び同種の用語は、ハードウェア、ソフトウェア、実行中のソフトウェア、ファームウェア、ミドルウェア、マイクロコード、及び/またはこれらのあらゆる組み合わせのいずれかの、コンピュータに関連したエンティティを指すことを目的としている。例えば、要素は、これに限定されるものでは無いが、プロセッサ上で動作している処理、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラム、及び/またはコンピュータであるかもしれない。1つまたはそれ以上の要素は、実行プロセス及び/または実行スレッド内に存在しても良いし、要素は1つのコンピュータ上にとどまっていても良いし、及び/または2つ以上のコンピュータ間に分布していても良い。またこれらの要素は、そこに記録された種々のデータ構造を有する種々のコンピュータ読み取り可能な媒体から実行できる。この要素は、例えば、1つまたはそれ以上のデータパケット(例えば、ローカルシステム、分散システムにおいて、及び/または信号を経て別の要素とのインターネットのようなネットワークを横断して、別の要素と互いに情報をやりとりするある要素からのデータ)を有する信号に従って、ローカル及び/またはリモートプロセスを経て、通信し得る。更に、当業者には明らかなように、本明細書で説明されたシステムの要素は、それに関して説明された種々の側面、目的、効果等を得ることを容易にするために、追加の要素によって再構成、及び/または補足されても良く、そして要素は、任意の図面で説明された構成そのものに限定されるものでは無い。
更に、本明細書に開示された実施形態に関連して述べられた種々の一例としてのロジック、論理ブロック、モジュール、及び回路は、ここで述べられた機能を実行するように設計された汎用用途プロセッサ、デジタルシグナルプロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイシグナル(FPGA)、またはその他のプログラマブル論理デバイス、ディスクリートゲートまたはトランジスタロジック、ディスクリートハードウェア部品、またはこれらの適切な組み合わせによって、実装または実行されるだろう。汎用用途プロセッサは、マイクロプロセッサであっても良いが、代わりにプロセッサは一般のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであっても良い。プロセッサはまた、例えば、DSPとマイクロプロセッサの組み合わせ、複数のマイクロプロセッサ、DSPコアと接続された一つ以上のマイクロプロセッサ、または他のそのような構成の、コンピューティングデバイスの組み合わせして実装されても良い。更に、少なくとも1つのプロセッサは、本明細書で説明されたステップ及び/または動作の1つまたはそれ以上を実行するように動作可能な1つまたはそれ以上のモジュールを備えることが出来る。
更に、種々の側面が、モバイル通信機器(すなわち、例えばモバイル機器)と関連して本明細書で説明される。モバイル通信機器はまた、システム、加入者ユニット、加入者局、移動局、モバイル、モバイル機器、移動体機器、マルチモード機器、リモート局、リモート端末、アクセス端末、ユーザ端末、ユーザエージェント、ユーザ機器、またはユーザ装置等と呼ばれることがある。加入者局は、携帯電話、コードレス電話、Session Initiation Protocol(SIP)電話、無線ローカルループ(WLL)局、携帯情報端末(PDA)、無線接続能力を有する携帯型機器、または無線モデムまたは処理デバイスとの無線通信を手助けする同様のメカニズムに接続されたその他の処理デバイスであっても良い。
更に、本明細書で説明された種々の側面または特長は、標準的なプログラミング及び/または工学の技術を用いた方法、装置、または製品として実装され得る。更に、本明細書に開示された側面に関連して述べられた方法またはアルゴリズムのステップ及び/または動作は、ハードウェア、プロセッサによって実行されたソフトウェアモジュール、またはこの2つの組み合わせによって直接的に実施されることが出来る。更に、いくつかの側面では、方法またはアルゴリズムのステップ及び/または動作は、コンピュータプログラム製品に組み込まれることが出来る、機器読み取り可能な媒体及び/またはコンピュータ読み取り可能な媒体上のコード及び/または命令の少なくとも1つまたは幾つかの組み合わせとして存在し得る。更に、本明細書で使用される用語「製品」は、なんらかのコンピュータ読み取り可能な機器、担体、媒体からアクセス可能なコンピュータプログラムを包含することを意図する。例えば、コンピュータ読み取り可能な媒体は、これらに限定されるものでは無いが、磁気記録媒体(例えばハードディスク、フロッピー(登録商標)ディスク、磁気帯…)、光ディスク(コンパクトディスク(CD)、ディジタルバーサタイルディスク(DVD))、スマートカード、及びフラッシュメモリデバイス(例えばカード、スティック、キードライブ(key drive))を含むことができる。更に、本明細書で説明された種々の記録媒体は、情報を記録するための、1つまたはそれ以上の機器及び/またはその他の機器読み出し可能な媒体を意味することが出来る。用語「機器読み出し可能な媒体」は、無線チャネル、及び命令及び/またはデータを保持、収容、及び/または搬送可能な他の種々の媒体を含むことができるが、これらに限定されるものでは無い。
更に、用語「典型的」は、例(example)、事例(instance)、例証(illustration)であることを意味するために、本明細書では用いられる。「典型的」として本明細書で説明された側面または図案は、他の側面や図案よりも好ましいまたは有利であるとして必ずしも解釈されるものでは無い。むしろ、典型的なる用語の使用は、具体的な方法の考え方を提示することを目的としている。この出願で使用する際、用語「または」は、排他的な「また」よりもむしろ、包括的な「または」を意味する。すなわち、別に特定されない限り、または文脈から明らかでない限り、「XはAまたはBを使用する」は、当然に包括的な置換を意味することを目的としている。すなわち、もし、XがAを使用する;XがBを使用する、またはXはAとBの両方を使用する場合、先の例の下で、「XはAまたはBを使用する」が満足される。更に、この出願及び添付の請求項における単数での表現は、別に特定されない限り、または単数の形態であることが導かれる文脈から明らかで無い限り、全般的に「1つまたはそれ以上」との意味に解釈されるべきである。
本明細書で使用する際に、用語「推測する(infer)」、または「推測(inference)」なる用語は概して、イベント及び/またはデータを介して取り込む際の観察結果のセットから、システム、環境、及び/またはユーザの状況につき、論理的に考えること(reasoning)または推測すること(inferring)のプロセスを指す。推測は、特定の状況(context)または動作を特定するために実施されることが出来、または例えば状態に対する確率分布を生成することが出来る。推測は、確率論的、すなわち、データ及びイベントの考慮に基づく、対象の状態に対する確率分布の演算であり得る。推測はまた、イベント及び/またはデータのセットから、高レベルのイベントを組み立てるために使用される技術を指すことも出来る。そのような推測の結果は、観測されたイベント及び/または記憶されたイベントデータ、イベントが時間的に近接して密接に相関するか否か、及びイベントとデータが1つかそれとも複数のイベント及びデータソースから来たか、からの、新たなイベントまたは動作の構築に帰する。
図1を参照して、モバイル動作環境106における1つまたはそれ以上のモバイルアプリケーションのための安全な通信を提供する、例となるシステム100のブロック図が示されている。システム100は、他のアプリケーション104とのハンドシェイクセッションをイニシエイト(initiate)するために指定されたプライマリアプリケーション(primary application)102を含むことが出来る。プライマリアプリケーション102は、モバイルオペレーティングシステム106上で動作するよう構成された適切なアプリケーションであり得る。プライマリアプリケーション102の例は、診断集合(diagnostic gathering)アプリケーション(例えば、quality of service [QoS]アプリケーション)、通信アプリケーション(例えば、無線アプリケーションプロトコル[WAP]等のような、eメール、インスタントメッセージ[IM]、ショートメッセージサービス[SMS]、音声通話セットアップ及び/または維持、voice over Internet Protocol[VoIP]セットアップ及び/または維持、着信音ダウンロードまたは再生アプリケーション、ウェブブラウザアプリケーション)、またはこれらの組み合わせなどを含み得る。モバイル動作環境は、モバイルアプリケーションの記憶及び実行、並びにそのようなアプリケーション間のデータ転送に適した環境であることが出来、例えば、以下で説明されるbinary runtime environment for wireless(BREW(登録商標))等である。
プライマリアプリケーション102は、少なくとも1つの別のアプリケーション104との、安全な通信セッションを確立するハンドシェイクをイニシエイトすることが出来る。主題となる開示の大半は、2つのアプリケーション間における単一の通信を含むが、アプリケーション102は、多数の他のアプリケーション104との多数の安全な通信セッションを同時に維持することも出来る。このハンドシェイクは、プライマリアプリケーション102と、レシピエント(recipient)アプリケーション104との間の、信頼された“チャネル”を生成するために行われることが出来る。その結果、任意のデータ(例えばバイナリなど)が、例えばデータや命令などのアドレスポインタを用いて、信頼されたチャネル上で、プライマリアプリケーションとレシピエントアプリケーションとの間で交換されることが出来る。
ハンドシェイクは、少なくともプライマリアプリケーション102のユニーク(unique)な識別子、またはハンドシェイクのために生成されたランダムな番号、またはその両方を含むハンドシェイク要求を送ることによって、プライマリアプリケーション102によってイニシエイトされることが出来る。ユニークな識別子は、プライマリアプリケーションに関連付けられたアプリケーションIDであり、プライマリアプリケーションが信頼されるべきものかを確認するためにレシピエントアプリケーションによって使用されることが出来る。一般的に、オペレーティングシステム106は、オペレーティングシステム106上で実行するように設計されたアプリケーションにかなうある基準を求めることが出来る。1つのそのような要求は、信頼されたプライマリアプリケーションのユニークな識別子のリストを組み込むことであり得る。そのようなリストを有するレシピエントアプリケーション104は、受信したハンドシェイク要求が、要求をすることを承認されたアプリケーションによって送信されたかを確認して良い。レシピエント104はその後、そのようなアプリケーションを信頼し、通信を交わして良い。
プライマリアプリケーションのユニークな識別子に加えて、ハンドシェイク要求はまた、ハンドシェイクのために生成されたランダムな番号(例えば32ビット、64ビットなど)を含むことが出来る。このランダムな番号は、対象となるレシピエントアプリケーションに送信されることが出来、またレシピエントアプリケーション104によってプライマリアプリケーション104に送信される応答に組み込まれることが出来る。その結果、このランダムな番号(または、例えば以下で議論されるその予測可能な変形)を含む応答が、対象となるレシピエントから発していると特定されることが出来る。更なる側面によれば、このランダムな番号は、特定のハッシュ関数(SHA-1、SHA-2等)を用いてハッシュ(hashed)され、及び/または特定のインターフェース106上での送信のために切り捨てられる(truncated)ことが出来る。ハッシュされたランダムな番号は、更に一層、復号化が困難となり、なりすまし攻撃からの十分な保護を提供する。切り捨ては、異なるサイズ数をサポートする通信インターフェース106、及び/または種々のプロトコルを使用する、ランダムな番号を送信するために使用されることが出来る。例えば、ハンドシェイクセッションを特定する生成されたランダムな番号が32ビットであった場合、そしてレシピエントアプリケーション104の通信インターフェースが16ビットデータ伝送のみを可能とする場合、32ビットのランダムな番号は、ハッシュされ、そして送信のために16ビットデータに切り捨てられることが出来る。その後レシピエントは、ランダムな番号をハッシュして及び/または切り捨てて、通信の送信側がハンドシェイクのイニシエータ(initiator)であるかを確認するために、それを受信したハッシュされ及び/または切り捨てられた番号と比較することが出来る。
レシピエントアプリケーション104は、ハンドシェイク要求を受信することが出来、そして送信側102が信頼されたプライマリアプリケーションであるかを確認することが出来る。より具体的には、ユニークな識別子がハンドシェイク要求から取り出され、プライマリアプリケーション識別子のリストと比較されることが出来る。もし、取り出された識別子がリスト上の識別子と一致すれば、ハンドシェイク応答が送信側102に送信されることが出来、送信側102とレシピエント104との間に安全なチャネルが確立される。もし、取り出された識別子がリスト上の識別子と一致しなければ、このハンドシェイクと、引き続く通信は、確認されたハンドシェイクが受信されるまで、無視されることが出来る。
更に、レシピエントアプリケーション104は、ハンドシェイク要求内に含まれるランダムな番号を取り出し、記録することが出来る。具体的な例として、このランダムな番号を悪意のあるプログラムが取り出すこと、及びレシピエントアプリケーション104になりすますことをより困難にするため、このランダムな番号は、一時的なメモリ(図示せず)に記録されることが出来る。ハンドシェイク要求内に含まれるユニークな識別子が確認されると、上記議論したように、レシピエントアプリケーション104は、このランダムな番号を含むハンドシェイク応答を送信することが出来る。特に、ランダムな番号を含むことで、レシピエントアプリケーション104は、自身をプライマリアプリケーション102に開示することが出来る。ある側面によれば、上記議論されたように、レシピエントアプリケーション104自身へのなりすまし(例えば、生成され、従ってこのランダムな番号を信頼するように構成されたプライマリアプリケーション102に対して)をより困難にし、及び/またはハッシュされた番号が特定の通信インターフェース106とより互換性を持つように、レシピエントアプリケーション104はランダムな番号をハッシュし、及び/または切り捨てることが出来る。
更に、レシピエントアプリケーション104はまた、第2のランダムな番号(second random number)を生成して、ハンドシェイク要求に含めることが出来る。この第2のランダムな番号は、レシピエントアプリケーション104との引き続く通信において、プライマリアプリケーション102によって、それ自身を開示するために使用されることが出来る。プライマリアプリケーション102による引き続く通信は、上記議論されたように、第2のランダムな番号のインテグリティ(integrity)を保護するために、第2のランダムな番号をハッシュ及び/または切り捨てることが出来る。
更なる側面によれば、レシピエントアプリケーション104から引き続きハンドシェイク応答を受信することで、プライマリアプリケーション102は、レシピエントアプリケーション104にデータイベントを送信することが出来る。このデータイベントは、例えばモバイル環境に適したデータ構造またはデータを含むことが出来、データの要求を組み込むことが出来、または命令の実行を要求することが出来(例えば、診断情報の集中、設定パラメータの組み込み等)、またはそれらの組み合わせなどでありうる。この要求は、要求自身内にデータを含むことが出来、または共有メモリ内のデータを特定するアドレスポインタを使用することなどが出来る。データ/命令に加えて、データイベントは、データイベントの送信側がプライマリアプリケーション102であることを確認し、及び/または認証するために、レシピエントアプリケーションによって生成された第2のランダムな番号(例えば、ここで第2のランダムな番号はハッシュされ、及び/または切り捨てられている)を組み込むことが出来る。
ある側面によれば、プライマリアプリケーション102は、並行する(concurrent)データイベントの応答が受信されるまで、更なる命令やデータ要求などを含む更なるデータイベント(例えば、並行するデータイベントとは区別される)の送信を控えることが出来る。特定の応答を待つことにより、通信ラウンドトリップの概念が生成される。ラウンドトリップは、2方向の通信を含む。例えば、ラウンドトリップは、レシピエントによる応答だけでなく、プライマリアプリケーションによる要求を含む。逆もまた同じである。ラウンドトリップの概念はまた、予期された期間に受信されなかったデータの再送信を可能にする。例えば、ハンドシェイクの要求及びハンドシェイクの応答に関して測定された、プライマリアプリケーション102とレシピエントアプリケーション104との間におけるデータインターフェース106上の通信遅延が、予期された応答タイマを確立するために使用されることが出来る。データ要求やハンドシェイクが送信されると、アプリケーション102、104は、送信への応答の予想時間を示す、予測応答タイマをセットすることが出来る。もし、この応答の予想時間内に応答が受信されなければ、状況に応じて、閾変化時間(例えば、応答の予想時間の何割か、または複数倍)と共に、レシピエントアプリケーション104は反応無しとみなされることが出来る。
上述の個々の実施形態のように、ランダムな番号は、各ラウンドトリップ通信につきインクリメント(increment)されることが出来る。例えば、もしプライマリアプリケーションが第2のランダムな番号を含むハンドシェイクの応答を受信すると、引き続くデータイベント要求(例えば診断情報の要求)は、一度だけインクリメントすることが出来(例えば、第1のラウンドトリップ通信を特定する)、データイベント要求に従って、インクリメントされた(ハッシュ及び/または切り捨てられた)ランダムな番号を送信することが出来る。レシピエントアプリケーション104は、ランダムな番号をインクリメントすること(及び、例えば必要に応じてそれをハッシュし切り捨てること)、及びその結果と、データイベント内に含まれるランダムな番号とを比較すること、によっても、データイベントの送信側を確認することが出来る。従って、システム100は、ラウンドトリップを確認するメカニズムと同様に、安全で且つラウンドトリップの通信を規定する。代わりに、または更に、もしランダムな番号の比較が一致しなければ、受信した通信は無視されることが出来る。もしランダムな番号の比較が受信した通信の所定の及び/または設定可能な回数(例えば3)につき一致しなければ、ハンドシェイクがプライマリアプリケーション102とレシピエントアプリケーション104との間で再度イニシエイト(re-initiate)されて、アプリケーション102、104間で安全なチャネルが再度確立される(re-establishing)まで、引き続く要求/応答は無視されることが出来る。
もし、(例えば、応答期間内において、または応答期間プラス閾値内において)要求に対する応答が受信されなければ、アプリケーション102、104は、要求を再度イニシエイト出来る。ラウンドトリップの要求(requirement)のため、アプリケーション102、104は、少なくとも応答無し(non-responsive)のアプリケーション102、104につき、他に未解決の要求が存在しないことを仮定出来る。もし再度のイニシエイトされた要求(re-initiated request)に対して応答が受信されれば、データは処理され、通信は適切として継続されることが出来る。もし、応答が受信されなければ、アプリケーション102、104は、少なくとも要求の1つに対する応答が受信されるまで、所定の及び/または設定可能な数の(プライマリアプリケーション102とレシピエントアプリケーション104との間のデータインターフェース106における、予想されたまたは定められたパケットロス(packet loss)によって規定された)要求を再度イニシエイトすることが出来る。更に、所定の及び/または設定可能な数の、再度イニシエイトされた要求の後、応答が受信されなければ、アプリケーション102、104は、要求の送信を停止して単純に応答を待つか、またはアプリケーション102、104がプライマリアプリケーション102であれば、ハンドシェイクの再度のイニシエイトが、レシピエントアプリケーション104がまだ使用可能であるか否かを判定するために送信されることが出来る。その結果、多くの一般的なデータ送信メカニズムと異なり、ロストした要求及び/またはランダムな番号は、ロストしたパケットを把握するために求められる更なるデータパケットの再送信を行う必要無く(安全なTCP/IP環境におけるパケットロスと共に示されるように)、再送信及び/または再要求されることが出来る。従って、主題となる開示は、パケットをロスする環境において、受信されなかったそのような応答の単一の要求の再送信を許可することで、効率的なデータの再送信を提供する。
更に別の側面によれば、システム100は、モバイルオペレーティングシステム106上で実行するアプリケーション間でのハンドシェイクの再度のイニシエイトを規定することが出来る。例えば、もしデータイベント要求の設定可能な数が、応答を引き出さない場合には、プライマリアプリケーション102はハンドシェイクを再度イニシエイト出来る。このハンドシェイクは少なくとも、ハンドシェイクセッションのために生成されたランダムな番号(または、新たなハンドシェイクセッションを生成するための新たなランダムな番号)と同様に、プライマリアプリケーション102のユニークな識別子を含むことが出来る。そのような方法において、もしレシピエントアプリケーション104がプライマリアプリケーションによって生成されたランダムな番号を失った場合、通信は再度確立されることが出来る。ある実施形態によれば、ハンドシェイクは、設定可能な及び/または所定の回数だけ、再度イニシエイトされることが出来る。そのような回数は、インターフェース106において定められた及び/または予想されるパケットロス、破壊工作ソフトによる干渉の可能性、またはそれらの組み合わせなどに基づくことが出来る。
上記に加えて、しきい時間内にレシピエントアプリケーション104からデータを受信出来なければ、プライマリアプリケーション102は、ハンドシェイクを再度イニシエイト出来る。代わりに、または更に、ハンドシェイクが最初にイニシエイトされた後のデフォルトの期間、またはこのデフォルトの期間のインテグラル(integral、例えば、1時間、2時間、3時間、など)の間、再度イニシエイトされることが出来る。更に別の側面によれば、ハンドシェイクの「開始」コマンドが機器のユーザインターフェースから受信されると(例えば、ユーザが診断を行う、及び/またはハンドシェイクをイニシエイトするユーザインターフェース[UI]の「ヘルプ」機能を実行するなど)、ハンドシェイクは再度イニシエイトされることが出来る。一般的に、ハンドシェイクの再度のイニシエイトは、設定可能な回数に制限されることが出来る。よって、もし3回のハンドシェイクの再イニシエイトが応答無しに送信されれば、例えばハンドシェイクのユーザのイニシエイトに従って、例えばハンドシェイクは単純に終了し、及び/または継続されない。よって、もしセッションのために与えられたランダムな番号がロストされた等の場合であっても、アプリケーション間の通信は再確立され及び/または継続されることが出来る。
システム100はアプリケーション102、104間の通信のための、適切なデータインターフェース106及びまたはモバイルオペレーティングシステム106を使用出来ることが理解されるべきである。一実施形態によれば、BREWオペレーティングシステムは、オペレーティングシステム/データインターフェース106を備えることが出来る。より具体的には、BREWは、Qualcomm社、San Diego, Californiaによって開発されたBinary Runtime Environment for Wirelessソフトウェアを指す。例えば、無線演算機器上のアプリケーションの実行を制御するように動作する、他のランタイム環境も使用できる。オペレーティングシステム/データインターフェース106上は、機器の処理エンジン(図示せず)によって処理されるモジュールの、常駐バージョンや、遠隔アクセス可能なバージョンを与える、ソフトウェアの拡張(software extension)のクラスを含むことが出来る。これらのソフトウェアのクラスの拡張は、そのような機器上で処理するサブシステムと通信し、データの読み出し及び命令を有効にすることが出来る。例えば、ソフトウェアの拡張は、それを起動するアプリケーション102を代表して、コマンドを送信することが出来る。モジュールは、サブシステムの応答を、データインターフェース106を越えてレシピエントアプリケーション104に転送することが出来る。無線機器上の各常駐アプリケーション(resident application)102、104またはモジュールは、
他のアプリケーション102、104またはモジュールに独立したサブシステムと通信するために、新たなソフトウェアの拡張のインスタンス(instance)を生成することが出来る。
図2は、モバイル動作環境において実行されるアプリケーション間の安全な通信をイニシエイト出来る、見本となるシステム200のブロック図を示す。システム200は、1つまたはそれ以上の他のレシピエントアプリケーション(例えば、後の図3参照)とのハンドシェイクセッションを確立するように構成されたイニシエーションモジュール(initiation module)202を含むことが出来る。イニシエーションモジュール202は、通信の送信側を特定し及び/または認証するために、1つまたはそれ以上の、ハッシュされ及び/または切り捨てられたランダムな番号を使用することが出来る。更にイニシエーションモジュール202は、データイベントのラウンドトリップ送信及び受信を使用して通信出来、これにより、データをロストし、及び/または識別子をロストした場合において、各イベントについての再送信を可能とする。その結果、一般的なアーキテクチャに比べて、効率的で低電力で安全な通信アーキテクチャが提供される。
イニシエーションアプリケーション(initiation application)202は、レシピエントアプリケーション(図示せず)とのハンドシェイクを少なくともイニシエイトするように構成された安全セッションモジュール(secure session module)204を含むことが出来、このハンドシェイクは、ランダムな番号と、イニシエーションアプリケーション202のユニークなIDを含む。このランダムな番号は、レシピエントアプリケーションによってイニシエイトされる引き続く通信を確認するために使用できる。本明細書で説明したように、ランダムな番号は、安全な通信のために、なりすまし等の攻撃をより困難にするため、(例えば、イニシエーションアプリケーション202に結合されたハッシュモジュール(hashing module)216によって)ハッシュされ及び/または切り捨てられることが出来る。更なる実施形態によれば、もしハンドシェイクの応答が受信されなければ、あるいはもしデータイベントの応答を受信することなく、多くのデータイベント要求が送られる場合に、安全セッションモジュール204は、ハンドシェイクを再度イニシエイト出来る。ハンドシェイクの再度のイニシエーションは、このセッションに関連するランダムな番号をレシピエントアプリケーションに再度提供する点(例えば、もしレシピエントアプリケーションがランダムな番号をロストし、結果として受信したイベントに応答及び/または確認できなかった場合に)を除いては、安全なセッションの再確立を容易に出来る。
更なる実施形態によれば、この安全セッションモジュール204は、様々な状況において、ハンドシェイクをイニシエイト出来る。まず、もししきい期間内にレシピエントアプリケーションからデータを受信しなかった場合である。このようなハンドシェイクは、通信をリフレッシュし、例えばイニシエイトしているアプリケーション202にまだ結合されているかを判断するためのものであり得る。更にハンドシェイクは、(上で議論されたように)リフレッシュ回数が満了すれば、再度イニシエイトされることが出来る。代わりにまたは更に、もしコマンドが機器ユーザインターフェースから受信されれば(例えば、もしユーザが、ハンドシェイクがイニシエイトされることを要求すれば)、ハンドシェイクは再度イニシエイトされることが出来る。
更に別の実施形態によれば、安全セッションモジュール202は、ハンドシェイクの終了(termination)をイニシエイト出来る。例えば、もし、通信において受信されたランダムな番号が、イニシエイトしているアプリケーション202によって生成されたランダムな番号、またはそのインクリメントであると、正しく確認されなかった場合(例えば、安全な通信を脅かそうとする、認証されていない存在の可能性を示している場合)には、ハンドシェイクの終了が起こり得る。更に、もし、所定の数のハンドシェイクの要求がイニシエイトされた後に、ハンドシェイクの応答が受信出来なければ、ハンドシェイクの終了がイニシエイトされることが出来る。そのような結果は、例えばレシピエントアプリケーションが、イニシエイトしているアプリケーションに通信可能に結合されていないことを示すことが出来る。別の例として、もしイニシエイトしているアプリケーションが、通信セッションが完了したと判断すれば、終了(termination)が送信されることが出来る。
また、イニシエーションアプリケーション202内には、確認モジュール206が含まれる。確認モジュール206は、安全セッションモジュール204によってイニシエイトされたハンドシェイクへの応答を受信するように構成されることが出来る。そのような応答は、応答の番号と、第2のランダムな番号とを含むことが出来る。確認モジュール206は、通信がレシピエントアプリケーションによって送信されたかを判断するために、この応答の番号を取り出し、それをランダムな番号と比較することが出来る。より詳しくは、確認モジュール206は、ランダムな番号を適切にハッシュ及び/切り捨てて、その結果を応答の番号と比較することが出来る。もし結果が一致すれば、応答の番号はランダムな番号として確認されることが出来る。
上記に加えて、イニシエーションアプリケーション202はまた、もし確認モジュール206が応答の番号とランダムな番号とを一致させた場合に(すなわち、例えば、あるラウンドトリップセッションを特定する、適切なランダムな番号のインクリメントである場合に)データイベント要求を送信するように構成された、通信モジュール208を含むことが出来る。更に通信モジュール208は、もしデータイベントへの応答をレシピエントアプリケーションから受信しなかった場合に、データイベントを再送信出来る。ある側面では、このデータイベントの要求は、第2のランダムな番号のインクリメントを含むことが出来る。更に、このインクリメントは、ハンドシェイク及びハンドシェイクの応答に引き続く特定のラウンドトリップ通信に関連づけられることが出来る(例えば最初のインクリメントは最初のラウンドトリップデータイベントについてのものであり、第2のインクリメントは第2のラウンドトリップデータイベントについてのものであり、その他同様である)。このインクリメントは、認証されていない相手方から通信を更に保護するために使用されることが出来る。例えば、もし認証されていないプログラムが、ランダムな番号または第2のランダムな番号へのアクセスを引き起こす場合、もしこのランダムな番号の正しいインクリメントが、そのようなデータイベントと共に含まれていなければ、そのような番号を含むデータイベントは、イニシエイトしているアプリケーション202によってやはり拒絶されるだろう。認証されていないプログラムは、ハンドシェイク以来、ほとんどモニタされていないであろうから、並行するラウンドトリップのインスタンスを解読できそうになく、またイニシエーションアプリケーション202の信頼を得ることも出来ないだろう。
イニシエーションアプリケーション202はまた、少なくとも第2の番号のインクリメントを含むレシピエントアプリケーションからデータイベントの応答を受信した場合に、第2のデータイベントを送信する通信モジュールをイネーブルにするように構成された通信管理モジュール210を含むことが出来る。言い換えれば、管理モジュール202は、本明細書で議論されたラウンドトリップ通信ポリシー(policy)を実施するため、データイベントの応答が受信されるまで、通信モジュールが更なるデータイベントの送信をしないようにすることが出来る。従って、ロスしたランダムな番号及び/またはデータイベントの要求は、モバイル動作環境のための信頼できる通信を容易にするため、イニシエーションアプリケーション202によってイニシエイトされることが出来る。
更なる側面によれば、システム200は、イニシエーションアプリケーション202とインターフェースを取ることの出来る通信信頼性モジュール218を含むことが出来る。通信信頼性モジュール218は、パケットロスの頻度及び/またはイニシエーションアプリケーション202によって使用される通信インターフェース(例えば、上記図1におけるオペレーティング環境/データインターフェース106)についての可能性を判断するように構成されることが出来る。このパケットロスの判断は、応答が受信されなかった場合に、データイベントの再送信及び/またはハンドシェイクの再送信イベントの適切な回数を判断するために、イニシエーションアプリケーション202によって使用されることが出来る。より詳しくは、アプリケーション202は、適切な再送信を判断する際に、パケットロスの可能性を考慮し、もしパケットロスが大きければ、比較的高い回数の再送信が決定されることが出来る。もしパケットロスが小さければ、比較的低い回数の再送信が決定されることが出来る。
上記に加えて、システム200は、プライマリ及びレシピエントアプリケーション間の予想時間を計算するように構成された、タイミング要素212を含むことが出来る。この予想時間は、例えば安全セッションモジュール204によってイニシエイトされたハンドシェイクへの応答を受信するために必要な時間を、少なくとも部分的には、基礎とすることが出来る。更に、もしデータイベントまたは引き続くハンドシェイクの応答が、予想された応答時間(例えば、この応答時間の分数または倍数のように、しきい期間によって任意で変形される)内に受信されなければ、この通信モジュール208または安全セッションモジュール204は、データイベントまたはハンドシェイクをそれぞれ再送信出来る。
更に別の側面によれば、システム200は、安全な通信上で到来する応答及び/または要求をバッファするために、イニシエーションアプリケーション202をイネーブルにする処理バッファを含むことが出来る。その結果、アプリケーション202によって並行して実施される動作は、応答/要求を処理するために割り込まれずに済む。代わりに、応答/要求内のデータは、処理バッファにコピーされ、その後の期間に扱われることが出来る。従って、並列処理要求の受信にもかかわらず、同期処理がシステム200によって導かれることが出来る。
図3は、モバイル動作環境において実行されるアプリケーション間の安全な通信に応答出来る、見本となるシステム300のブロック図を例示する。システム300は、少なくともハンドシェイクを受信し、送信側のアプリケーションのIDを取り出して確認し、そして送信側のアプリケーションが信頼されたプライマリアプリケーションであればハンドシェイクの応答をイニシエイトすることが出来る、レシピエントアプリケーション302を含む。従ってシステム300は、モバイル動作環境における安全な通信を行うことが出来る。
レシピエントアプリケーション302は、プライマリアプリケーション(図示せず、但し上記図2の202参照)からのハンドシェイクの要求を受信するように構成された、少なくともセキュリティモジュール304を含むことが出来る。このハンドシェイクの要求は、プライマリアプリケーションによって生成されたランダムな番号及び/またはプライマリアプリケーションのユニークなIDを含むことが出来る。更にレシピエントアプリケーション302は、プライマリアプリケーションのユニークなIDを確認するように構成された参照モジュール306を含むことが出来る。例えば、この参照モジュールは、ユニークなIDを、信頼されたプライマリアプリケーションの識別子312のリストと比較することが出来る。そのようなリスト312は、レシピエントアプリケーション302が信頼すべきで、それからのハンドシェイクを受け入れるべきアプリケーションに関連付けられた全てのユニークなIDを含むことが出来る。よって、プライマリアプリケーションのユニークなIDは、リスト312を参照することによって、検証されることが出来る。
レシピエントアプリケーション302はまた、上記議論されたように、もしユニークなIDが参照モジュール306によって確認された場合に、プライマリアプリケーションにハンドシェイクの応答を送信するように構成されたインターフェースモジュール308を含むことが出来る。ある実施形態に寄れば、このハンドシェイクの応答は、レシピエントアプリケーション302によって送信された応答及び/または要求に応答して通信を確認するために、レシピエントアプリケーション302によって生成された第2のランダムな番号、及び/またはランダムな番号、または、ハッシュ及び切り捨てられたそのような番号(例えば、本明細書で説明されたように、ハッシュモジュール314によって生成される)を含むことが出来る。更に、インターフェースモジュール308は、データイベントの要求(例えばデータ、命令の動作、等)を受信、それへ応答、及びそれをイニシエイトするように構成されることが出来る。データイベントの要求は、例えば、少なくとも、ランダムな番号のインクリメントを含むことが出来、このインクリメントは、ラウンドトリップ通信を確認(identify)し、ランダムな番号は、セキュリティモジュール304によって受信されたハンドシェイクに関する通信を確認する。同様に、インターフェースモジュール308(及び、例えばレシピエントアプリケーション302)によってイニシエイトされたデータイベントの要求に関する応答は、少なくともランダムな番号のインクリメント(例えば、データイベントの要求に含まれる)、及び/またはプライマリアプリケーションのユニークなIDを含むことが出来る。代わりに、または更に、このデータイベントの応答は、レシピエントアプリケーションによって要求されたデータ、または命令の結果、またはそれらの組み合わせなどを含むことが出来る。
更なる側面によれば、レシピエントアプリケーション302はまた、更なるデータイベントの要求を受信する前に、先に受信したデータイベントの要求に応答するようインターフェースモジュール308に要求するように構成された管理モジュール310を含むことが出来る。従って、管理モジュール310は、本明細書で説明されたように、レシピエントアプリケーション302とプライマリアプリケーションとの間のラウンドトリップ通信のポリシーを執行することが出来る。更に、管理モジュール310は、インターフェースモジュール308がデータイベントの要求に応答することを許可し、そのような応答と共に、第2のランダムな番号のインクリメント及び/またはレシピエントアプリケーション302のアプリケーションIDを含むことが出来る。この応答は、イニシエイトしているアプリケーションについての適切なラウンドトリップを確認し、更にアプリケーションIDを経てアプリケーション302の情報を提供出来る。代わりに、管理モジュール310は、インターフェースモジュール308に、プライマリアプリケーションによって実行される命令及び/またはデータについての要求と同時に、ランダムな番号のインクリメントを含むデータイベントの要求の送信を許可出来る。
1つまたはそれ以上の他の側面によれば、管理モジュール310は、レシピエントアプリケーション302において並列するプロセスの割り込みを避けるため、到来する命令のバッファリングを容易にすることが出来る。より具体的には、管理モジュール302は、データイベントの要求に含まれる命令に適切なデータバッファ316を割り当て、データ要求内に含まれるデータをこのデータバッファ316にコピー出来る。更に管理モジュール310は、現在のプロセスを完了するために必要な見積もり時間を少なくとも部分的に基礎にした処理タイマ(process timer)をセットすることが出来る。上記加えて、管理モジュール310はまた、レシピエントアプリケーション302を、処理タイマが満了するまで、データイベント内に含まれるデータを処理させないようにすることが出来る。よって管理モジュール310は、レシピエントアプリケーション302についての命令の同期実行を容易に出来る。
ある実施形態によれば管理モジュール310は、インターフェースモジュール308に対して、1つまたはそれ以上のデータイベントの要求を無視するよう命令出来る。例えば、もしランダムな番号またはそのインクリメントが、適切なラウンドトリップ通信に一致しなければ、通信のインテグリティは疑わしいかもしれない。その結果、管理モジュール310は、そのような通信に応答が与えられる前にイニシエイトされ、確認可能な信頼されたユニークなIDを有する、新たなハンドシェイクを求めることが出来る。
更なる実施形態によれば、管理モジュール310は更に、例えば新たなランダムな番号と、ユニークなIDまたは第2のユニークなIDとを含む、ハンドシェイクの再イニシエーションメッセージ(re-initiation message)を受信するよう構成されている。管理モジュール310は、ユニークなID/第2のユニークなIDが確認されるまで、この新たなランダムな番号を、一時的なバッファ316に記憶出来る。もし、このIDが信頼されたアプリケーションと確認されれば、ハンドシェイクは承認され、この新たなランダムな番号は、プライマリアプリケーションによって送信された以前のランダムな番号を置き換えることが出来る。もしIDが確認されなければ、ハンドシェイクは承認されず、新たなランダムな番号は一時的なバッファ316から削除されることが出来る。従って、管理モジュール310は、確認された以前のハンドシェイクのパラメータを失うことなく、新たにイニシエイトされたハンドシェイクを処理出来る。
更なる側面によれば、もしインターフェースモジュール308によって送信されたデータイベントの要求への応答が受信されなければ、インターフェースモジュール308は、設定可能な回数(例えば、判定されたパケットロス等に依存する)だけ、この要求を再送信出来る。もし所定の回数だけ要求を再送信した後も応答が受信されなければ、管理モジュールは、その後に続くハンドシェイクが受け入れられるまで(例えば、それが確認可能なプライマリアプリケーションのクラスIDを含む)、インターフェースモジュール308が更なる要求を送信することを抑制出来る。従って、管理モジュール310はまた、モバイル動作環境におけるアプリケーションにつき、より効率的で更に信頼出来るデータ交換を容易にするために、応答のないプライマリアプリケーション(non-responding primary application)から応答を導こうとする試みにおいて消費される処理リソースを制限出来る。
図4は、モバイルアプリケーションを実行出来、アプリケーション間における安全で低電力の通信を提供出来る、例となるモバイル機器400を例示する。より具体的には、モバイル機器400は、モバイルアプリケーション414、416間の通信を容易にする共通のプラットフォーム(platform)408、410、412を提供出来、及び/または第2のアプリケーション(second application)414、416を含む遠隔機器(図示せず、しかし下記する図5参照)と無線により相互に接続する第1のアプリケーション414、416のためのプラットフォームを提供出来、介在する無線ネットワーク、コアモバイルネットワーク、及び/またはIPネットワーク等が、遠隔機器400、504a、504b間の通信インターフェースを提供する。従ってシステム400は、単一の機器400、または遠隔のネットワーク接続された機器400、504a、504bの処理及び通信アーキテクチャ(例えばプロセッサ408、メモリ410、通信ポリシー42、及び適切なバス構造)によって、結合されたモバイルアプリケーション間の安全な通信を提供出来る。
モバイル機器400は、信号(例えば、モバイル機器に対してデータの移転、ハンドシェイク、ハンドシェイクの応答、データイベント、データイベントの応答、ハンドシェイクの終了、など)を受信する少なくとも1つのアンテナ402(例えば通信受信機、または入力インターフェースを備えたそのような受信機の集合)、及び受信信号につき一般的な処理(例えばフィルタ、増幅、ダウンコンバートなど)を実行する受信機404を含む。より具体的には、アンテナ402は、本明細書で説明したように、データイベントの要求、ハンドシェイクへの応答、及び同種のもの(例えば、モバイル機器400において実行される少なくとも1つのアプリケーションによって生成されたランダムな番号、対応するアプリケーションによって生成されたランダムな番号、データイベントへの応答、などを含む)を受信出来る。
アンテナ402及び受信機404はまた、受信したシンボルを復調し、評価のためにそれをプロセッサ408に提供出来る変調器406に結合され得る。プロセッサ408は、アンテナ902またはモバイル機器のユーザ入力インターフェース(図示せず)によって受信された情報を解析し、及び/または送信機420による送信のための情報を生成出来る。更にプロセッサ408は、モバイル機器400の1つまたはそれ以上の要素406、412、414、416、418を制御し、及び/または参照することが出来る。更にプロセッサ408は、本明細書で述べられたように、モバイルアプリケーションのためのアプリケーション間の安全なデータ転送を提供する、1つまたはそれ以上のモジュール、アプリケーション、またはそれと同様のものを実行出来る。
モバイル機器400は、動作可能なようにプロセッサ408に結合され、送信されまた受信される等のデータを保持出来るメモリ410を更に含むことが出来る。メモリ410は、モバイル機器400上にある、及び/または遠隔インターフェースを通じて分布(下記に述べる図5参照)された、モバイルアプリケーション414、416間における安全な通信を導くための通信ポリシー412に関連する情報を保持出来る。より具体的には、本明細書で述べられたような、ラウンドトリップ通信の実施、未承認の通信の再送信、ハンドシェイクのイニシエイト及び再イニシエイト、または同種のもののルールと同様に、確認とセキュリティの目的のための、ランダムな番号の生成、インクリメント、ハッシュ及び/または切り捨て、並びにそのような番号の対象となるアプリケーション414、416への送信のルールが、この通信ポリシー412内に含まれることが出来る。更に、メモリ410は、本明細書で述べたように、更なるアプリケーション416及び/またはハンドシェイクの要求を受信し、プライマリアプリケーション414が信頼されたアプリケーション(例えば、上記図3において示されたいくつかまたは全てのモジュールを含む)であるかを確認するように構成された第2のアプリケーション416と共に、少なくともハンドシェイクの要求(例えば、上記図2において示されたいくつかまたは全てのモジュールを含む)をイニシエイトするように構成された、プライマリアプリケーション414を含むことが出来る。
本明細書で説明されたデータ保持(例えばメモリ1408)は、揮発性メモリまたは不揮発性メモリであって良いことが理解されるだろう。例示の目的で且つこれに限定するものでないが、不揮発性メモリは、読み出し専用メモリ(ROM)、書き込み可能なROM(PROM)、電気的に書き込み可能なROM(EPROM)、電気的に消去可能なPROM(EEPROM)、またはフラッシュメモリを含むことが出来る。揮発性メモリは、外部キャッシュメモリとして動作するランダムアクセスメモリ(RAM)を含むことが出来る。例示の目的で且つこれに限定するものでないが、揮発性メモリは、シンクロナスRAM(SRAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、ダブルデータレートSDRAM(DDR SDRAM)、エンハンスドSDRAM(ESDRAM)、Synchlink DRAM(SLDRAM)、及びダイレクトラムバス(direct Rambus(登録商標))DRAM(DRRAM)のような多くの形態で利用可能である。主題となるシステム及び方法のメモリ1408は、これに限定されないが、これらの及びその他の適切なタイプのメモリを含むことを意図している。
モバイル機器400は更に、変調器418、及び(例えばプロセッサ408及び変調器418によって)生成された信号を、例えば基地局、アクセスポイント、別のアクセス端末、リモートエージェント(remote agent)等に送信する送信機420を備えている。プロセッサ408とは分離して図示されているが、プライマリアプリケーション414及び/または第2のアプリケーション416は、プロセッサ408または複数のプロセッサ(図示せず)の一部であっても良いことが理解される。
図5は、ある側面に従った遠隔機器504a、504b上で動作するモバイルアプリケーション(図示せず、しかし上記図4の414、416参照)のための安全な通信を提供する、見本となるネットワーク500を図示している。システム500は、互いに及び/または1つまたはそれ以上のモバイル機器504a、504bに無線通信信号を受信、送信、再送等する、1つまたはそれ以上のセクタにおいて、1つまたはそれ以上の基地局502を備えることが出来る。図示するように、各基地局502は、506a、506b、506c、及び506dとラベルされ、3つの地理的な領域として示された、ある特定の地理的領域について、通信可能範囲を提供出来る。各基地局502は、当業者に理解されるように、それぞれが、信号の送受信に関連付けられた複数の要素(例えば図6に示されるように、プロセッサ、変調器、マルチプレクサ、復調器、デマルチプレクサ、アンテナ、等)を順々に交代に備えることが出来る、送信機チェイン(transmitter chain)及び受信機チェイン(receiver chain)を備えることが出来る。モバイル機器504は、例えば携帯電話、スマートフォン、ノート型パソコン、携帯型通信機器、携帯型コンピュータデバイス、衛星ラジオ、全地球測位システム、PDA、及び/または無線ネットワーク500上で通信するその他の適切な機器であり得る。システム500は、遠隔機器(例えば、下記図6に示されるようなモバイル機器504a、504b、またはネットワーク500上の動作要素)上で動作するモバイルアプリケーション間の安全な通信を容易にするため、本明細書で説明された種々の側面と共に使用されることが出来る。
1つまたはそれ以上のある側面によれば、基地局502は一般的に、モバイル機器504a、504bと通信する固定局(fixed station)であり、またアクセスポイント、ノードB、またはその他の専門用語で呼ばれ得る。モバイル機器504a、504bは一般的に、システム500全体において分散しており、504a、504bそれぞれは、は固定式、移動体、または準移動体(例えばラップトップ)の機器である。モバイル機器は、いつの時点においても、基地局502と通信していないか、1つまたは複数の基地局502と、ダウンリンク(基地局502から機器504a、504bへ送信されたデータ)及びアップリンク(機器504a、504bから基地局502へ送信されたデータ)で通信している。集権的アーキテクチャとして、システムコントローラ(例えば無線ネットワークコントローラ[RNC]、または同様のもの、図示せず)は、基地局502に結合されることが出来、また通信、プロトコル、診断集合、または基地局502に関連付けられた同様の動作の調整及び制御を提供出来る。分散的なアーキテクチャでは、必要に応じて基地局502は互いに通信し合うことが出来る。
図6は、別の側面に従ったモバイルアプリケーションのための、安全な遠隔通信(remote communication)において助けとなる、及び/または加わる基地局602を含む、例となるシステム600を例示する。システム600は、複数の受信アンテナ606を介して1つまたはそれ以上のモバイル機器604から信号を受信する受信機610と、送信アンテナ608を介して1つまたはそれ以上のモバイル機器604に送信する送信機622を有する基地局602(例えばアクセスポイント等)を含む。受信機610は、受信アンテナ606から情報を受信することができ、そして更に受信しなかったまたは判読できなかったデータパケットに関するフィードバックデータを受信する信号受信部(図示せず)を備えることができる。更に受信機610は、受信した情報を復調する復調器612と動作可能に関連付けられる。プロセッサ614は、復調器612から与えられる復調されたシンボルを解析することが出来る。プロセッサ614は更に、本明細書で説明された安全な遠隔通信において助けとなり、及び/または加わるアプリケーション618を保持することが出来るメモリ616に結合される。
例えば、アプリケーション618は、ハンドシェイクをイニシエイトし、データイベント(例えば、診断情報、データ解析、等に関連する)の要求をモバイル機器604上で動作するレシピエントアプリケーションに送信するように構成されたプライマリアプリケーションであって良い(例えば、アプリケーション618は、安全なモバイルアプリケーションのハンドシェイクのイニシエイト及び安全な通信への参加にあたって、上記した図2に示したモジュールのいくつかまたは全てを組み込むことが出来る)。あるいは、アプリケーション618は、ハンドシェイクの要求を受信し、本明細書で説明したようにイニシエイトしているプライマリアプリケーションを認証出来る第2のアプリケーションであっても良い(例えばアプリケーション618は、ハンドシェイクの受信及び応答、並びに安全な通信への参加にあたって、上記した図3に示したモジュールのいくつかまたは全てを組み込むことが出来る)。アプリケーション618は更に、アプリケーション618をモバイル機器604上の対応するアプリケーションに対してアプリケーション618を確認するためのランダムな番号(逆もまた同様)、またはある特定のラウンドトリップ通信を特定するためのそのようなランダムな番号のインクリメント生成または/及び確認するためのルールを含むことが出来る。更に、このルールは、本明細書で述べられたような、未承認の通信の再送信、ハンドシェイクの要求及び/または応答の再イニシエイト、及びハンドシェイクの終了についてのポリシーを確認出来る。従って、アプリケーション618は、モバイル機器604上にある1つまたはそれ以上のアプリケーション、及び/または本明細書で説明された機能及び種々の動作の実施に関するその他の適切なアクティビティとの、安全なモバイル通信に加わることが出来る。
本明細書で述べられた実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、またはこれらの組み合わせで実現可能であることが理解されるだろう。ハードウェア実装では、処理ユニットは、1つまたはそれ以上の特定用途向け集積回路(ASIC)、デジタルシグナルプロセッサ(DSP)、デジタル信号処理デバイス(DSPD)、プログラマブルロジックデバイス(PLD)、フィールドプログラマブルゲートアレイシグナル(FPGA)、プロセッサ、コントローラ、マイクロコントローラ、マイクロプロセッサ、本明細書で説明された機能を実現するために設計された他の電子ユニット、またはこれらの組み合わせで実現され得る。
実施形態がソフトウェア、ファームウェア、ミドルウェア、またはマイクロコード、プログラムコード、またはコードセグメントで実装される場合、これらは記憶要素のような機器読み出し可能な媒体に保持され得る。コードセグメントは、手順、機能、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または命令、データ構造、またはプログラムステートメントの組み合わせを表し得る。コードセグメントは、情報、データ、アーギュメント、パラメータ、またはメモリコンテンツを渡す、及び/または受信することにより、別のコードセグメントまたはハードウェア回路と結合され得る。情報、アーギュメント、パラメータ、データ等は、メモリ共有、メッセージパッシング(message passing)、トークンパッシング(token passing)、ネットワーク送信などを含む適切な手段を用いることで、パスされ、フォワードされ、または送信されることができる。
ソフトウェア実装においては、本明細書で説明された方法は、本明細書で説明された機能を実行するモジュール(手順、機能、及び同種のもの)で実装され得る。ソフトウェアコードは、メモリユニットに保持され、プロセッサで実行され得る。メモリユニットは、プロセッサ内に実装されることができ、または当技術分野で周知の種々の手段を介してプロセッサと通信可能に接続されることができる場合に、プロセッサの外部で実装され得る。
図7乃至12を参照して、少なくとも部分的にでもモバイル動作環境で動作するアプリケーションのための安全な通信を提供することに関する手順が示される。説明の簡略化の目的で、手順は一連の動作として説明されるが、手順はこの動作順に限定されるものでは無いことが理解され、認識されるだろう。例えば、1つまたはそれ以上の側面に従って、いくつかの動作は、本明細書で示され述べられたものとは別の動作と同時に、及び/または異なる順序で行われることが出来る。更に、手順は代わりに、状態図に示すように、一連の関連付けられた状態またはイベントとして示されることも出来ることを、当業者は理解し、認識するだろう。更に、1つまたはそれ以上の側面に従った手順を実施するために、例示された全ての動作が、必ずしも要求されるわけでは無い。
図7を参照して、モバイル動作環境におけるモバイルアプリケーション間の安全な通信をイニシエイトするための例となる手順700が示される。方法700は702において、ハンドシェイクのために生成されたランダムな番号と、プライマリモバイルアプリケーションのユニークな識別子とを含むモバイルアプリケーションとのハンドシェイクをイニシエイト出来る。このプライマリアプリケーションは、メッセージパッシング(message passing)アーキテクチャ、または共有メモリ、またはそれらの適切な組み合わせ、または同様のデータ転送プラットフォームを用いて、モバイルオペレーティングシステム(例えばBREW動作など)を介して、モバイルアプリケーションと通信するように構成されることが出来る。ハンドシェイクにおいて確認されるこのユニークな識別子は、プライマリアプリケーションが信頼されたアプリケーションであると特定するために使用されることが出来る。他方、ランダムな番号は、モバイルアプリケーションによって、それ自身をプライマリアプリケーションに特定するために使用されることが出来る。従って、このランダムな番号(及び/または、例えばその適切なインクリメント)を含む、プライマリアプリケーションにおいて受信された通信は、モバイルアプリケーションに関連付けられることが出来る。前述から当然のように、もしプライマリアプリケーションで受信した通信がランダムな番号(及び/または、例えばその適切なインクリメント)を含まなければ、この通信はハンドシェイクに関連付けられないとみなされ、よって安全では無い。
704において方法700は、ハンドシェイクの応答を受信出来る。特に、このハンドシェイクの応答は、モバイルアプリケーションによって生成された第2のランダムな番号と第1の番号とを含むことが出来る。より具体的な例として、プライマリアプリケーションは、モバイルアプリケーションに送信されたデータイベントにおける第2のランダムな番号(及び/または、例えばその適切なインクリメント)を含むことが出来る。この第2のランダムな番号は、プライマリアプリケーションを、モバイルアプリケーションとの安全なハンドシェイクセッションをイニシエイトした安全なアプリケーションと確認/承認出来る。
706において方法700は、参照番号704においてハンドシェイクの応答と共に受信した第1の番号が、ランダムな番号またはその適切なインクリメントであるかを確認出来る。例えば、第1の番号は、それらが等価であるかを確認するために、ランダムな番号と比較されることが出来る。あるいは、もし第1の番号がランダムな番号のハッシュ(例えばSHA-1、SHA-2など)及び/または切り捨てられたもの(例えば32ビットから16ビットなど)であれば、ランダムな番号はハッシュされ、切り捨てられ、そして第1の番号と比較されることが出来る。もし、第1の番号とランダムな番号(または、例えばそのハッシュ及び/または切り捨てられたもの)とが一致すれば、プライマリアプリケーションはハンドシェイクの応答を、モバイルアプリケーションから発せられたと認証し、このハンドシェイクに関連けられた引き続くデータイベント要求のための第2のランダムな番号を記憶することが出来る。もし第1の番号とランダムな番号とが一致しなければ、第2の番号は破棄されることが出来る。
708において方法700は、データイベントをモバイルアプリケーションに送信出来る。このデータイベントは、プライマリアプリケーションを特定/認証するために、第2のランダムな番号またはそのインクリメント(例えば、プライマリアプリケーションを、モバイルアプリケーション及び/またはハンドシェイクセッションのあるラウンドトリップ通信と同一に扱うため)を含むことが出来る。更に、このデータイベントは、モバイルアプリケーションから更なるデータを要求し、実行されまた応答において与えられた結果である命令を要求するなどが可能なデータのブロック(及び、例えばこのデータのブロックのサイズを特定するアドレスポインタ、共有メモリにおけるこのデータのブロックの位置を特定するアドレスポインタなど)を含むことが出来る。従って、方法700によって説明された安全な通信は、安全な環境において他のアプリケーションを制御/構成し、及び/またはデータを得るために使用されることが出来る。
710において、ハンドシェイクセッションに関連付けられ、参照符号702においてイニシエイトされ、ランダムな番号及び/またはそのインクリメントに関連付けられた第2のデータイベントは、データイベントに対する応答が受信されるまで遅延されることが出来る。従って、方法700は、1つまたはそれ以上のモバイルアプリケーション間のラウンドトリップ通信を実施出来る。より具体的には、ラウンドトリップ通信は、1つまたはそれ以上のイニシエイトされたイベントと、そのようなイベントに対する受信された応答とを含むことが出来、それぞれのイベント/応答のペアは、ラウンドトリップ通信を特定するインクリメントされたランダムな番号を与えている。よって、モバイル動作環境のための、比較的低電力消費(例えば、数学的に集中的な暗号化/復号化スキームとは反対に、暗号化にハッシュ関数を使用することにより)の同期通信が提供され得る。
図8は、一側面に従った、ラウンドトリップ通信を完了するためのデータイベントの再送信についての、見本となる手順800を例示する。方法800は802において、2つのアプリケーション間(少なくとも1つはモバイルアプリケーションである)での安全な通信のハンドシェイクを確立出来る。このハンドシェイクとその応答は、引き続くデータ要求のイニシエータを特定するための、少なくとも1つの生成されたランダムな番号を含むことができる。更に、このランダムな番号は、モバイル処理電力を削減するために、その切り捨て及び/またはハッシュ関数を用いて、符号化されることができる。従って、方法800は、効率的で安全な、アプリケーション間のデータ転送を提供できる。
更なる側面によれば、方法800はまた、そのようなアプリケーション間の転送信頼性を向上できる。例えば804において方法800は、データイベントを送信できる。このデータイベントは、レシピエントモバイルアプリケーションに、イニシエイトしているモバイルアプリケーションを特定するランダムな番号(または、例えばその適切なインクリメント)を含むことができる。更に、データイベントは、レシピエントアプリケーションについての動作(データの転送、診断動作、分析など)の要求を含むことができる。806において、判断は、データイベントに対する応答が受信されたかによってなされる。具体的には、この判断は、決定された及び/または予測されたラウンドトリップ応答時間(例えば、ハンドシェイクセッションの期間に測定される)、及び任意的にそのような応答時間の分数及び/または倍数、に少なくとも部分的に基づく応答タイマを使用できる。具体例として、もしこの応答が、ある応答タイマの満了前に受信できなければ、方法800は、参照符号808に進む。もしデータイベントに対する応答が、応答タイマの満了前に受信されれば、方法800は810に進み、ハンドシェイク通信を継続できる。
参照符号808において方法800は、データイベントを、少なくともデータイベントの応答を受信するまで、設定可能な回数(例えば、アプリケーション間のデータパケットロスの、確定した及び/または予測される可能性に関連する)だけ、再送信出来る。812において方法800は、データイベントの応答が、要求の複数回(設定可能な回数)の再送信の結果として受信されたかによって、別の判断を行うことが出来る。もしデータイベントの応答が受信されれば、方法800は810に進み、通信は継続される。もし適切な応答が受信されなければ、方法800は参照符号814に進み得る。
814において方法800は、少なくともハンドシェイクの応答を受信するまで、設定可能なある回数だけ、ハンドシェイクを再度イニシエイトできる。一例として、もしレシピエントアプリケーションが、ハンドシェイクセッションを特定するランダムな番号をロストした場合には、このレシピエントアプリケーションは、参照符号804、808において送信されたデータイベントを認証することが出来ないかもしれない。従って、本明細書で述べたように、レシピエントアプリケーションは、そのような要求を無視出来うる。参照符号814においてハンドシェイクをイニシエイトすることにより、このランダムな番号または新たなランダムな番号は、プライマリアプリケーションのユニークな識別子と共に、レシピエントアプリケーションに再度与えられ得る。その結果、それぞれハンドシェイクはリフレッシュされ、または改めて開始されることが出来る。
参照符号816において方法800は、ハンドシェイクに対する応答が受信されたかを判断できる。もしそうなら、方法800は810に進み、通信は継続される(例えば、データイベントまたは引き続くデータイベントが再送信/送信される)。もしそうでないなら、方法800は818に進み、ハンドシェイクの終了が送信され得る。818において、レシピエントアプリケーションはもはや送信側のアプリケーション通信可能に結合されておらず、またはレシピエントは、悪意のあるプログラムによって危うくされ、または通信ポリシーが改竄された等とみなされる。ハンドシェイクの終了には、ランダムな番号、プライマリ及び/またはレシピエントアプリケーションのID、通信に含まれたデータなどの、ハンドシェイクに関連する全てのデータを消去すること、が含まれうる。上記したように、方法800は、更なるデータの要求の前に、ロストした/承認されないデータの要求を再送信することによって、信頼できる同期通信を提供出来る。よって、送信におけるエラーは直ちに訂正され、冗長な再送信(例えば、安全なTCPIP通信にあるように)を回避できる。
図9は、モバイルアプリケーション間での安全な通信における、ラウンドトリップ通信をインクリメントするための手順900の例を示す。902において方法900は、少なくともランダムな番号を含むハンドシェイクイニシエーションを送信できる。このランダムな番号は、レシピエントアプリケーションにより、通信をそのようなレシピエントから発せられた(originating)と安全に特定するために、使用されることが出来る(例えば、なぜならこのランダムな番号は、レシピエントアプリケーションにのみ送信されたから)。このハンドシェイクは更に、本明細書で述べられたように、イニシエイトしているアプリケーションのユニークなIDを含み得る。
904において、ハンドシェイクに対する応答が受信されることが出来る。906において、この応答がランダムな番号、またはその適切なバージョン(例えば、ハッシュされ及び/または切り捨てられたバージョン)を含むかによって、判断がなされ得る。もしそうでないなら、方法900は910に進み、ハンドシェイクの終了が送信され、任意的に、このランダムな番号、受信した番号、送信されたデータ、及びその種のものを含む、ハンドシェイクセッションに関連した全てのデータが削除され得る。もし、参照符号904において受信した応答内に適切な番号が含まれていれば、方法900は908に進み、受信されたランダムな番号はインクリメントされ、レシピエントアプリケーションに送信されたデータイベント内に組み込まれ得る。このインクリメントされたランダムな番号は、本明細書で述べたように、並行するラウンドトリップ通信セッションを特定できる。
912において、もし受信されていれば、データイベントに対する応答が、ランダムな番号の適切なインクリメントを含むかによって、判断がなされる。もしそうでなければ、方法900は910に進み、ハンドシェイクの終了がイニシエイトされ得る。より詳細には、もし不適切なインクリメントが受信されていれば、データイベントの応答は認証されていないアプリケーションから送信されている(例えば、ランダムな番号は改竄された)とみなされ、またはレシピエントアプリケーションの安全な通信ポリシーが改竄されているなどとみなされることが出来る。もし、参照符号912において、ランダムな番号の適切なインクリメントが受信されていれば、方法900は914に進み、ランダムな番号の更なるインクリメントが、引き続くデータイベントに含まれる。916において、もし受信されていれば、引き続くデータイベントの応答が、ランダムな番号の更なる適切なインクリメントを含むかにより、別の判断がなされ得る。もしそうなら、方法900は918に進み、方法900及び/または本明細書の別の部分で述べた通りに、通信は継続される。916においてもし適切なインクリメントが判断されなければ、方法900は910に進み、上記したハンドシェイクの終了がイニシエイトされ得る。上記のように、方法900は、モバイルアプリケーション間での安全な通信への適切なデータイベントラウンドトリップと同様に、ハンドシェイクセッションを特定する、インクリメントされたランダムな番号のラウンドバイラウンド(round-by round)解析を提供出来る。
図10は、モバイル動作環境におけるモバイルアプリケーション間の安全な通信に応答するための、見本となる手順1000を例示する。1002において、ハンドシェイクの要求が受信され得る。このハンドシェイクの要求は、本明細書で述べたように、イニシエイトしているアプリケーションのユニークな識別子、及び/またはハンドシェイクのランダムな番号を含み得る。1004において、もし受信されれば、ユニークな識別子が、信頼されたプライマリアプリケーションIDのリストに対して照会され得る。もし、受信したユニークなIDとの間での一致が見られれば、方法900は1006に進むことが出来る。そうでなければ、方法900は終了することが出来る(図示せず)。1006において、ユニークなIDが信頼されたアプリケーションのリストに対して確認されれば、ハンドシェイクに対する応答が送信されることが出来る。1008において、データイベントの要求が受信され得る。このデータイベントの要求は、例えば、ハンドシェイクセッション(例えば、このようなセッションは、参照符号1002で受信されたハンドシェイク要求と、参照符号1006で送信されたハンドシェイク応答によって確立される)に関連付けられた、次にやってくる通信を特定するための、ハンドシェイクの応答に含まれる第2のランダムな番号を含むことが出来る。1010において、更なるデータイベントの受信は、少なくともデータイベントの要求が応答されるまで、遅延されることが出来る(例えば、データイベントに対する応答は、更なるデータイベントの要求の受信の前に送信される)。従って、方法1000は、イニシエイトしている及びレシピエントアプリケーションによって生成されたランダムな番号を組み込むことで、安全な通信のために、ラウンドトリップ通信のポリシーを課すことが出来る。更に、そのような番号は、低い処理の要求の電力コストにより更なるセキュリティを提供するために、ハッシュされ、切り捨てられることが出来る。従って、方法1000は、モバイル動作環境に特に有益な、安全なアプリケーション間通信に応答し、また加わるためのメカニズムを提供する。
図11は、最初の要求とラウンドトリップ通信が、安全なアプリケーション間データ転送を完了するまで、引き続くデータイベントの要求をバッファリングする、一例となる手順1100を示す。1102において、安全なモバイルアプリケーションのハンドシェイクが、本明細書で述べたように確立されることが出来る。1104において、データイベントの要求が、受信されることが出来る。更に、1106において、データバッファが、データイベントの要求内に含まれ、及び/またはそれによって特定されるデータを保持するために、割り当てられ得る。例えば、そのような要求は、命令、設定パラメータ、解析されるデータ、行われるモバイル通信の診断(例えば、QoS機能)等を含むことが出来る。1108において、参照符号1104で受信されたデータイベントの要求内に含まれるデータは、参照符号1106で割り当てられたデータバッファ内にコピーされることが出来る。1110において、処理タイマがセットされることが出来る。例えば、処理タイマは、レシピエントアプリケーションにおいて実行される並行処理を完了するのに予測される時間を示し得る。処理時間は、並列処理が完了するまで、データイベントの要求で受信されたデータの処理を遅延させることが出来る。1112において方法1100は、少なくとも処理タイマが満了するまで、データイベントの要求内で受信したデータの処理(及び、例えば受信すること、受信は処理を含む)をやめることが出来る。従って、現在の命令が処理(及び、例えば受信した、受信は処理を含む)される前に、それより前のアプリケーションによって受信された命令は完了し、応答されることが出来る。方法1100は、先のプロセスが完了され得るまで、引き続く命令や要求などをバッファリングすることで、同期環境におけるラウンドトリップ通信を容易にするメカニズムを提供する。
図12は、モバイルアプリケーション間の安全な通信において再度イニシエイトされたハンドシェイクを受信する、一例となる手順1200を例示する。1202において、通信の関係者を特定する(及び、例えば引き続くラウンドトリップ通信を特定出来る)少なくとも1つのランダムな番号を含む、安全なモバイルアプリケーションのハンドシェイクが、本明細書で述べたように、確立されることが出来る。更に、このハンドシェイクはまた、プライマリアプリケーションのユニークなIDを含むことが出来、それは、そのようなアプリケーションを信頼されたエンティティとして確認出来る。1204において、新たなランダムな番号及びユニークなIDまたは新たなユニークなIDを含むハンドシェイクの再イニシエーションが、受信され得る。1206において、新たなランダムな番号が確認されるまで、この新たなランダムな番号は、一時的なバッファに保持されることが出来る。そのような確認は、ハンドシェイクの再イニシエーションを受信したアプリケーションによって、または新たなランダムな番号を含む、正常に送信されたデータについての受信応答(ACK)を受信することによって認められたデータを受信することを含むことが出来る。従って、ハンドシェイクの再イニシエーションを受信したアプリケーションは、悪意のあるソースからの正規なデータ、または悪意のあるソース及び/または認証されていないソースからの認証されていないデータをフィルタすることを試みることが出来る。
1208において、本明細書で述べられたように、新たなユニークなIDが確認されることが出来る。例えば、この新たなユニークなIDは、信頼されたプライマリアプリケーションのユニークなIDのリストに関するリファレンスであり得る。もし一致が見られなければ、この新たなユニークなIDは、認証されていないアプリケーションに関連付けられているとみなされ得る。1210において、上記したように、新たなIDが確認されたかにつき判断がなされる。もし確認されなければ、方法1200は1214に進み、新たなランダムな番号は削除され、ハンドシェイクの応答は送信されない。もし新たなユニークなIDが確認されれば、方法1200は1212に進み、ランダムな番号は、アプリケーション間の引き続く通信を特定するために新たなランダムな番号に置き換えられ得る。説明したように、方法1200は、新たなランダムな番号及びユニークなIDを保持する前に、ハンドシェイクが確認され、これにより先のランダムな番号及び/またはユニークなIDが解放(release)され及び/または消去されるメカニズムを提供する。その結果、ランダムな番号を虚偽のランダムな番号に置き換えることにより安全な通信への侵入を試みるなりすまし攻撃を、抑制することが出来る。
図13は、主題となる開示の側面に従った、ハンドシェイクを終了するための例となる手順1300のフローチャートを与える。1302において、方法1300は、少なくとも第1のランダムな番号及び/またはイニシエイトしているアプリケーションのユニークなIDを含む、安全なモバイルアプリケーションのハンドシェイクを確立出来る。この第1のランダムな番号は、イニシエイトしているアプリケーションによって受信されたハンドシェイクACKが、ハンドシェイクのターゲットからのものであることを確認出来る。更に、このユニークなIDは、このターゲットに対し、イニシエイトしているアプリケーションにはそのようなターゲットに対してハンドシェイクを送信する権限を与えられていることを、示すことが出来る。
1304において、少なくとも第1のランダムな番号及び/または第2のランダムな番号を含むハンドシェイクACKが受信されることが出来る。この第1のランダムな番号は、それが送られた際と同様の形態、または暗号化された形態、またはハッシュされた形態等で受信されることが出来る。受信した第1の番号(またはその適切なハッシュまたは暗号化されたバージョン)と第1のランダムな番号との比較により、ACKが正規であることを確認出来る。もしACKが正規でなければ、ハンドシェイクの再イニシエーションが送信され、及び/または本明細書で述べたように通信は終了され得る。
1306において、少なくともユニークなIDと第2のランダムな番号のバージョンとを含む終了(termination)イベントがイニシエイトされ得る。このバージョンは、例えば第2のランダムな番号のインクリメントであり得る。このバージョンは、そのような番号のハッシュまたは暗号化された形態などであっても良い。1308において、終了イベントのACKについての往復時間(return trip time)を規定するために、ACKタイマがセットされ得る。このACKタイマは、例えば安全なモバイルアプリケーションのハンドシェイク及びハンドシェイクACKに関連付けられたラウンドトリップ時間に基づくことが出来る。1310において、終了(termination)ACKが受信される。この終了ACKは、少なくとも第2のランダムな番号またはその適切なバージョン、またはターゲットアプリケーションのアプリケーションID、またはその両方を含み得る。
1312において、ACKタイマが満足されたにより判断がなされる。具体的には、ACKタイマによりセットされた期間内に、終了ACKが受信されたか否かである。もしそうでなければ、方法1300は1314に進み、ハンドシェイクは終了(exit)し、そして例えば参照符号1302において説明されたように行われたような正常なハンドシェイクまで、更なる通信は無視される。ハンドシェイクの終了は、ハンドシェイクについてのデータイベントの送信をやめること、ハンドシェイクの下で生成された全てのランダムな番号をゼロにすること、及び/またはハンドシェイクにおいて含まれるアプリケーションに付随する固有のデータを解放(release)すること、を含むことが出来る。
もし、参照符号1312においてこのタイマが満足されれば、方法1300は1316に進み、終了イベント(termination event)は継続する。1318において、参照符号1310において終了ACKと共に受信された第2のランダムな番号のバージョンが正しく繰り返されたか、インクリメントされたか、ハッシュまたは暗号化されたか、またはそれらの適切な組み合わせによって、判断がなされる。もし、終了ACKと共に受信された第2のランダムな番号が適切であれば、方法1300は1320に進み、ACKタイマはキャンセルされ、ハンドシェイクの終了が完了する。ハンドシェイクの終了の完了は、ハンドシェイクのために生成された番号を消去すること、及びハンドシェイクにおいて含まれるアプリケーションに付随するデータを解放すること、を含むことが出来る。もし、参照符号1318において第2のランダムな番号が適切でないと判断されれば、方法1300は代わりに1322に進み、参照符号1314で説明されたように、ハンドシェイクは終了(exit)することが出来る。
図14及び15は、請求された構成要件の詳細な側面に従った、見本となるシステム1400、1400のブロック図を与える。具体的には、システム1400は、モバイル動作環境における安全なアプリケーション間通信をイニシエイトし加わることを提供出来る。例えばシステム1400は、ハンドシェイクをイニシエイトするモジュール1402を含み得る。具体的には、モジュール1402は、プライマリモバイルアプリケーションのユニークな識別子と、ハンドシェイクのために生成されたランダムな番号とを含むハンドシェイクを、モバイルアプリケーションとの間でイニシエイトすることが出来る。更にシステム1400は、応答を受信するモジュール1404を含むことが出来る。モジュール1404は、具体的にはモジュール1402によってイニシエイトされたハンドシェイクに対する応答を受信出来、この応答は第1の番号と第2の番号とを含む。第2の番号は、例えばモバイルアプリケーション(決定されたハンドシェイクのターゲット)によってランダムに生成されることが出来、そしてプライマリアプリケーションからこのモバイルアプリケーションに送信された要求に署名する及び/または要求を認証するために使用されることが出来る。
上記に加えシステム1400は、データを確認するモジュール1406を含むことが出来る。モジュール1406は、ハンドシェイクの応答の一部として受信した第1の番号が、ハンドシェイクのために生成されたランダムな番号(または、例えばそのハッシュ及び/または切り捨てられたバージョン、またはそのインクリメント、またはその両方)であるかを確認出来る。更に、データイベントを送信するモジュール1408が含まれる。モジュール1408は、もしモジュール1406によって第1の番号がランダムな番号と確認されれば、第2のランダムな番号(例えばモバイルアプリケーションによって生成される)を含むモバイルアプリケーションにデータイベントを送信し、イニシエイト出来る。更にシステム1400はまた、第2のデータイベントを遅延させるモジュール1410を含むことが出来る。モジュール1410は、少なくとも第2のランダムな番号のインクリメントを含む、少なくともデータイベントの応答がモバイルアプリケーションから受信されるまで、システム1400による第2のデータイベントの処理及び/または送信を遅延させることが出来る。その結果、システム1400は、アプリケーション間のデータ要求を確認し及び/または認証するためにランダムに生成された番号を少なくとも組み込む、安全な通信環境における、ラウンドトリップ同期通信ポリシーを実行出来る。
上記に加えてシステム1500は、ハンドシェイクの要求を受信するモジュール1502を含むことが出来る。詳しくは、モジュール1502は、少なくともプライマリアプリケーションのユニークなID、またはプライマリアプリケーションによって生成されたランダムな番号、またはその両方を含むハンドシェイクの要求を、プライマリアプリケーションから受信出来る。更にシステム1500は、信頼されたプライマリアプリケーション識別子のリストに対し、もしそうなら、受信したユニークなIDを照会出来る、IDを照会するモジュール1504を含むことが出来る。そのような照会は、信頼されたアプリケーションを、認証されていない、または信頼されていないアプリケーションと区別するために使用されることが出来る。更にシステム1500は、ハンドシェイクの応答を送信するモジュール1506を含むことが出来る。モジュール1506は、モジュール1504によって判断されるように、もしユニークなIDが、信頼されたプライマリアプリケーションのリストのユニークなIDと一致すれば、プライマリアプリケーションにハンドシェイクの応答を送信出来る。上記に加えてシステム1500はまた、データイベントの要求を受信するモジュール1508と、そのような要求の受信(例えば受信は、本明細書で述べられたように、処理タイマをセットすること及び/またはバッファリングすることの他に、受信したデータについてのある種のデータ処理を含むことが出来る)を遅延させるモジュールとを含むことが出来る。より具体的には、モジュール1510は、更なるデータの要求を、データイベントの要求に対する応答がシステム1500によってイニシエイトされるまで、遅延させることが出来る。従って、ラウンドトリップポリシーが実施されることができ、またこれにより、モバイルアプリケーション間でのデータ転送におけるハンドシェイクイベントの再イニシエーション及び/またはロストした要求の再送信を可能とする。その結果、(データはロストされていないか、または1つまたはそれ以上のパケットロスによりデータが使い物にならない)パケットロス環境における同期通信において、効率的なデータ転送アーキテクチャが提供されることが出来る。
上記説明されたことは、1つまたはそれ以上の側面を含む。言うまでもなく、上記の側面を説明するための目的で、要素または手順の全ての考え得る組み合わせを説明することは可能では無く、しかし当業者は、種々の側面の、多くの更なる組み合わせ及び置換が可能であることを認識出来るだろう。従って、説明された側面は、添付の請求の範囲内に含まれる全てのそのような修正、変形、及び変化を包含することを意図している。更に、実施の形態または請求項のいずれかにおいて、用語「含む」が使用される限りでは、当該用語は、請求項における移行部の用語(transitional word)として使用される際の「備える(comprising)」の解釈のされ方と同様に包括的であることを意図している。
以下に、本願出願時の特許請求の範囲に記載された発明を付記する。
[1]モバイル動作環境におけるアプリケーション間のデータ通信を提供する方法であって、
プライマリモバイルアプリケーションのユニークな識別子と、ハンドシェイクのために生成されたランダムな番号とを含む、モバイルアプリケーションとの前記ハンドシェイクをイニシエイトすることと、
前記ハンドシェイクに対する、少なくとも第2の番号を含む応答を、受信し確認することと、
もし前記ハンドシェイクに対する前記応答が確認されれば、前記第2の番号または前記第2の番号のバージョン(version)を含むデータイベントを、モバイルアプリケーションに対して送信することと、
前記モバイルアプリケーションからデータイベントの応答が受信されるまで、前記プライマリアプリケーションの実行を禁止することと
を備え、前記データイベントの応答は、少なくとも前記第2の番号または前記第2の番号のバージョンを含む、方法。
[2]もし前記データイベントの応答が前記モバイルアプリケーションから受信されなければ、前記データイベントを再送信すること、を更に備える[1]の方法。
[3]前記データイベントの応答が受信されるまで、設定可能な回数のデータイベントの再送信を実行すること、を更に備える[1]の方法。
[4]前記モバイルアプリケーションと前記プライマリモバイルアプリケーションとの間のインターフェースにおけるパケットロスの頻度または可能性を判断して、データイベントの再送信の前記設定可能な回数を決定すること、を更に備える[3]の方法。
[5]もし、前記設定可能な回数のデータイベントの再送信の後、前記データイベントの応答が受信されなければ、前記ハンドシェイクを再度イニシエイトすること、を更に備える[3]の方法。
[6]もし、前記ハンドシェイクに対する応答、または前記データイベントの応答が、しきい期間内に前記モバイルアプリケーションから受信されなければ、前記ハンドシェイクを再度イニシエイトすること、を更に備える[1]の方法。
[7]前記ランダムな番号を変換するため、または前記第2の番号のバージョンを生成するために、ハッシュ関数を使用すること、
前記ランダムな番号または前記第2の番号を切り捨てて(truncate)、アプリケーションのインターフェースが別の方法で調整された場合よりも大きい番号の送信を可能とすること、
前記第2の番号をインクリメントして、前記第2の番号のバージョンを生成すること、または
前記第2の番号を暗号化して、前記第2の番号のバージョンを生成すること、
の少なくともいずれかを更に備える、[1]の方法。
[8]もし前記第1の番号が前記ランダムな番号として確認されなければ、ハンドシェイクの終了(termination)をイニシエイトすること、を更に備える[1]の方法。
[9]単一のモバイル機器を用いて、前記モバイルアプリケーションと前記プライマリモバイルアプリケーションとを通信可能に結合し、実行すること、を更に備える[1]の方法。
[10]前記プライマリモバイルアプリケーションを保持し実行する第1の機器と、前記モバイルアプリケーションを保持し実行し、前記第1の機器から離隔して位置する第2の機器とを用いること、を更に備え、
前記第1及び第2の機器は、有線または無線ネットワーク、またはその両方により、通信可能に結合されている、[1]の方法。
[11]前記ハンドシェイクをイニシエイトすることと、前記ハンドシェイクに対する前記応答を受信することとの間に要する時間から、予測される応答時間を算出することと、
もし前記予測される応答時間内に前記データイベントの応答が受信されなければ、
引き続くハンドシェイクがイニシエイトされ確認されるまで、前記モバイルアプリケーションとの通信を終了すること、または前記データイベントを再送信すること、との少なくともいずれか一方と、
を更に備える[1]の方法。
[12]モバイル動作環境におけるアプリケーション間のデータ通信を提供する装置であって、
ランダムな番号と、プライマリアプリケーションのユニークなIDとを含む、レシピエントアプリケーションとのハンドシェイクを、イニシエイトするように構成された、安全セッションモジュールと、
前記ハンドシェイクに対する、少なくとも第2の番号を含む応答を、受信し確認するように構成された、確認モジュールと、
もし前記ハンドシェイクに対する前記応答が確認されれば、前記第2の番号または前記第2の番号のバージョン(version)を含むデータイベントを、前記レシピエントアプリケーションに対して送信するように構成された通信モジュールと、
前記モバイルアプリケーションからデータイベントの応答が受信されるまで、前記プライマリアプリケーションの実行を禁止するように構成された、送信管理モジュールと
を備え、前記データイベントの応答は、少なくとも前記第2の番号または前記第2の番号のバージョンを含む、装置。
[13]前記通信モジュールは、もし前記データイベントの応答が前記レシピエントアプリケーションから受信されなければ、前記データイベントを再送信する、[12]の装置。
[14]前記プライマリアプリケーションと前記レシピエントアプリケーションとの間のパケットロスの頻度または可能性を判断し、前記判断されたパケットロスに基づいて、受信確認されていないデータイベントの再送信の回数を決定するように構成された、通信信頼性モジュールを更に備える、[12]の装置。
[15]前記安全セッションモジュールは、もし、前記回数の再送信の後、前記データイベントの応答が受信されなければ、前記ハンドシェイクを再度イニシエイトする、[14]の装置。
[16]もし少なくとも、前記ハンドシェイクに対する応答、または前記データイベントの応答が、しきい期間内に前記モバイルアプリケーションから受信されず、またはハンドシェイクリフレッシュ時間が満了し、またはハンドシェイクイニシエーションコマンドが機器ユーザインターフェースから受信されれば、
前記安全セッションモジュールは、前記ハンドシェイクを再度イニシエイトする、[12]の装置。
[17]少なくとも、前記ランダムな番号をハッシュし、切り捨て(truncate)、またはインクリメントし、またはそれらを組み合わせ、または
前記第2の番号をハッシュし、切り捨て、またはインクリメントし、またはそれらを組み合わせて、前記第2の番号の前記バージョンを生成する
ように構成されたハッシュモジュールを更に備える、[12]の装置。
[18]もし少なくとも、前記第1の番号が前記ランダムな番号として確認されず、または所定の回数の前記ハンドシェイクに対してハンドシェイクの応答が受信されず、または通信セッションが完了されれば、
前記安全セッションモジュールは、ハンドシェイクの終了(termination)をイニシエイトするように構成される、[12]の装置。
[19]単一のモバイル機器が、前記モバイルアプリケーションと前記プライマリモバイルアプリケーションとを通信可能に結合し、実行する、[12]の装置。
[20]有線または無線ネットワークを介して通信可能に結合され、少なくともいずれか一方がモバイル機器である、第1及び第2の遠隔処理機器が、それぞれ前記レシピエントアプリケーション及び前記プライマリアプリケーションを実行する、[12]の装置。
[21]前記ハンドシェイクをイニシエイトすることと、受信することとの間の時間に、少なくとも部分的に基づいて、前記プライマリアプリケーションと前記レシピエントアプリケーションとの間において予測される応答時間を算出するように構成された、タイミング要素を更に備え、
前記通信モジュールは、もし前記予測される応答時間内に前記データイベントの応答が受信されなければ、前記データイベントを再送信する、[12]の装置。
[22]前記プライマリアプリケーションにおいて、前記プライマリアプリケーションの他の動作に割り込むことなく、ハンドシェイクの応答またはデータイベントの応答を受信してバッファすることを可能とするように構成された、処理バッファを更に備える、[12]の装置。
[23]モバイル動作環境におけるアプリケーション間のデータ通信を提供する少なくとも1つのプロセッサであって、
プライマリモバイルアプリケーションのユニークな識別子と、ハンドシェイクのために生成されたランダムな番号と、を含む、モバイルアプリケーションとのハンドシェイクを、イニシエイトする、第1のモジュールと、
前記ハンドシェイクに対する、少なくとも第2の番号を含む応答を、受信し確認する、第2のモジュールと、
もし前記ハンドシェイクに対する前記応答が確認されれば、前記第2の番号または前記第2の番号のバージョン(version)を含むデータイベントを、前記モバイルアプリケーションに対して送信する第3のモジュールと、
少なくとも前記第2の番号の前記インクリメントを含むデータイベントの応答が受信されるまで、前記プライマリモバイルアプリケーションの実行を禁止する、第4のモジュールと
を備えるプロセッサ。
[24]モバイル動作環境におけるアプリケーション間のデータ通信を提供する装置であって、
プライマリモバイルアプリケーションのユニークな識別子と、ハンドシェイクのために生成されたランダムな番号と、を含む、モバイルアプリケーションとのハンドシェイクを、イニシエイトする手段と、
前記ハンドシェイクに対する、少なくとも第2の番号を含む応答を、受信し確認する手段と、
もし前記ハンドシェイクに対する前記応答が確認されれば、前記第2の番号または前記第2の番号のバージョン(version)を含むデータイベントを、前記モバイルアプリケーションに対して送信する手段と、
少なくとも前記第2の番号の前記インクリメントを含むデータイベントの応答が受信されるまで、前記プライマリモバイルアプリケーションの実行を禁止する手段と
を備える装置。
[25]モバイル環境アプリケーションのためのデータ通信セキュリティを提供する命令を保持するコンピュータ読み取り可能媒体を備えたコンピュータプログラム製品であって、前記コンピュータ読み取り可能媒体は、
コンピュータに対して、プライマリモバイルアプリケーションのユニークな識別子と、ハンドシェイクのために生成されたランダムな番号と、を含む、モバイルアプリケーションとのハンドシェイクを、イニシエイトさせるように構成された、第1命令セットと、
コンピュータに対して、前記ハンドシェイクに対する、少なくとも第2の番号を含む応答を、受信し確認させるように構成された、第2命令セットと、
コンピュータに対して、もし前記ハンドシェイクに対する前記応答が確認されれば、前記第2の番号または前記第2の番号のバージョン(version)を含むデータイベントを、前記モバイルアプリケーションに対して送信させるように構成された、第3命令セットと、
コンピュータに対して、少なくとも前記第2の番号または前記第2の番号のバージョンを含むデータイベントの応答が受信されるまで、前記プライマリモバイルアプリケーションの実行を禁止させるように構成された、第4命令セットと
を備えるコンピュータプログラム製品。
[26]モバイル動作環境におけるアプリケーション間のデータ通信を提供する方法であって、
プライマリアプリケーションのユニークなID、または前記プライマリアプリケーションによって生成されたランダムな番号を含む、ハンドシェイクの要求を、前記プライマリアプリケーションから受信することと、
信頼されたプライマリアプリケーションの識別子のリストに対して、前記ユニークなIDを照会することと、
もし、前記ユニークなIDが、信頼されたプライマリアプリケーションの識別子の前記リストのIDに一致すれば、ハンドシェイクの応答を前記プライマリアプリケーションに送信することと、
データイベントの要求を受信することと、
前記データイベントの要求に対して、更なるデータイベントの要求の受信または処理の前に、応答することと
を備えた方法。
[27]レシピエントアプリケーションから発せられた通信を特定するために生成された第2のランダムな番号、または前記ランダムな番号、またはその両方を、前記ハンドシェイクの応答に含めること、を更に備える[26]の方法。
[28]前記データイベントにつき、データバッファを割り当てることと、
前記データイベント内に含まれるデータを、前記データバッファにコピーすることと、
現在のプロセスを完了させるための予測時間に、少なくとも部分的に基づいて、処理タイマをセットすることと、
前記処理タイマが満了するまで、前記データイベント内に含まれる前記データの処理を停止することと
を更に備える[27]の方法。
[29]前記データイベントの要求内の、前記第2のランダムな番号のインクリメントを受信すること、を更に備える[27]の方法。
[30]前記第2のランダムな番号のインクリメント、または前記レシピエントアプリケーションのアプリケーションID、またはその両方を、前記データイベントの要求の応答内に含めること、を更に備える[27]の方法。
[31]前記データイベントの要求に応答するデータと共に、前記ランダムな番号のインクリメントを、前記データイベントの要求の応答内に含めること、を更に備える[26]の方法。
[32]もし、前記データイベントの要求が前記第2のランダムな番号の現在のインクリメントを含んでいなければ、信頼されたユニークなIDを有する引き続くハンドシェイクのイベントが受信されるまで、前記データイベントの要求及び引き続くデータイベントの要求を無視すること、を更に備える[26]の方法。
[33]新たなランダムな番号と、前記ユニークなIDまたは第2のユニークなIDを含む、ハンドシェイクの再イニシエーションメッセージを受信することと、
前記新たなランダムな番号を、一時的なバッファに保持することと、
前記ユニークなIDまたは前記第2のユニークなIDが、信頼されたプライマリアプリケーションの識別子のリストのIDと一致するかを確認することと、
もし前記ユニークなIDまたは前記第2のユニークなIDが確認されれば、前記ランダムな番号を前記新たなランダムな番号で置き換えることと、もし前記ユニークなIDまたは前記第2のユニークなIDが確認されなければ、前記新たなランダムな番号を前記一時的なバッファから削除することと、のいずれかと
を更に備える[26]の方法。
[34]レシピエントデータイベントの要求を、前記プライマリアプリケーションに送信することと、
少なくとも、前記レシピエントデータイベントの要求に対する応答が受信されるまで、第2のレシピエントデータイベントの要求の送信を遅延させることと
を更に備える[26]の方法。
[35]前記ランダムな番号のインクリメント、または前記プライマリアプリケーションの前記ユニークなID、またはその両方を含む応答を、前記プライマリアプリケーションから受信すること、を更に備える[34]の方法。
[36]前記レシピエントデータイベントの要求に対する応答が受信されない限り、前記レシピエントデータイベントの要求を、設定可能な回数だけ再送信すること、または
もし、設定可能な回数の要求の送信の後、前記レシピエントデータイベントの要求に対する応答が受信されなければ、少なくとも信頼されたプライマリアプリケーションのクラスIDを有する、引き続くハンドシェイクが受信されるまで、前記レシピエントデータイベントの要求の送信を停止することと
の少なくとも1つを更に備える、[34]の方法。
[37]モバイル動作環境におけるアプリケーション間のデータ通信を提供する装置であって、
プライマリアプリケーションのユニークなID、または前記プライマリアプリケーションによって生成されたランダムな番号を含む、ハンドシェイクの要求を、前記プライマリアプリケーションから受信するように構成された、安全モジュールと、
信頼されたプライマリアプリケーションの識別子のリストに対して、前記ユニークなIDを確認する照会モジュールと、
もし、前記ユニークなIDが、信頼されたプライマリアプリケーションの識別子の前記リストのIDに一致すれば、ハンドシェイクの応答を前記プライマリアプリケーションに送信するように構成され、またデータイベントの要求を受信するように構成された、インターフェースモジュールと、
前記インターフェースモジュールに対して、更なるデータイベントの要求の受信の前に前記データイベントの要求に応答するよう求めるように構成された管理モジュールと
を備えた装置。
[38]前記ハンドシェイクの応答は、レシピエントアプリケーションに応答する通信を特定するために生成された第2のランダムな番号、または前記ランダムな番号、またはその両方を、有する[37]の装置。
[39]前記管理モジュールは、
前記データイベントにつき、データバッファを割り当てることと、
前記データイベント内に含まれるデータを、前記データバッファにコピーすることと、
現在のプロセスを完了させるための予測時間に、少なくとも部分的に基づいて、処理タイマをセットすることと、
レシピエントアプリケーションに対して、前記処理タイマが満了するまで、前記データイベント内に含まれる前記データの処理をさせないことと
の少なくとも1つを行うように更に構成されている、[38]の装置。
[40]前記データイベントの要求は、少なくとも前記ランダムな番号のインクリメントを含む、[38]の装置。
[41]前記管理モジュールは、前記第2のランダムな番号のインクリメント、または前記レシピエントアプリケーションのアプリケーションID、またはその両方を含む、前記データイベントの要求に対する応答を許可する、[38]の装置。
[42]前記管理モジュールは、前記インターフェースモジュールに対して、前記プライマリアプリケーションによる実行のための命令、またはデータの要求、またはその両方と共に、前記ランダムな番号のインクリメントを含む、データイベントの要求の送信を許可する、[37]の装置。
[43]前記管理モジュールは、もし、前記データイベントの要求が前記第2のランダムな番号の現在のインクリメントを含んでいなければ、信頼されたユニークなIDを有する引き続くハンドシェイクのイベントが受信されるまで、前記データイベントの要求及び引き続くデータイベントの要求を無視する、[37]の装置。
[44]前記管理モジュールは、新たなランダムな番号と、前記ユニークなIDまたは第2のユニークなIDを含む、ハンドシェイクの再イニシエーションメッセージを受信することと、
前記新たなランダムな番号を、一時的なバッファに保持することと、
前記ユニークなIDまたは前記第2のユニークなIDが、信頼されたプライマリアプリケーションの識別子のリストのIDと一致するかを確認することと、
もし前記ユニークなIDまたは前記第2のユニークなIDが確認されれば、前記ランダムな番号を前記新たなランダムな番号で置き換えることと、もし前記ユニークなIDまたは前記第2のユニークなIDが確認されなければ、前記新たなランダムな番号を前記一時的なバッファから削除することと、のいずれかと
の少なくとも1つを行うように更に構成されている、[37]の装置。
[45]前記インターフェースモジュールは、レシピエントデータイベントの要求を、前記プライマリアプリケーションに送信し、
前記管理モジュールは、少なくとも、前記レシピエントデータイベントの要求に対する応答が前記インターフェースで受信されるまで、第2のレシピエントデータイベントの要求の送信を遅延させる、[37]の装置。
[46]前記インターフェースモジュールで受信された、前記レシピエントデータイベントの要求に対する要求は、前記ランダムな番号のインクリメント、または前記プライマリアプリケーションの前記ユニークなID、またはその両方を含む、[45]の装置。
[47]前記インターフェースモジュールは、前記レシピエントデータイベントの要求に対する応答が受信されない限り、前記レシピエントデータイベントの要求を、設定可能な回数だけ再送信すること、または
前記管理モジュールは、前記インターフェースに対して、もし、設定可能な回数の要求の送信の後、前記レシピエントデータイベントの要求に対する応答が受信されなければ、確認されたプライマリアプリケーションのクラスIDを有する、引き続くハンドシェイクが受信されるまで、前記レシピエントデータイベントの要求の送信させないこと、
の少なくとも1つを更に備える、[46]の装置。
[48]モバイル動作環境におけるアプリケーション間のデータ通信を提供する少なくとも1つのプロセッサであって、
プライマリアプリケーションのユニークなID、または前記プライマリアプリケーションによって生成されたランダムな番号を含む、ハンドシェイクの要求を、前記プライマリアプリケーションから受信する第1のモジュールと、
信頼されたプライマリアプリケーションの識別子のリストに対して、前記ユニークなIDを照会する第2のモジュールと、
もし、前記ユニークなIDが、信頼されたプライマリアプリケーションの識別子の前記リストのIDに一致すれば、ハンドシェイクの応答を前記プライマリアプリケーションに送信する第3のモジュールと、
データイベントの要求を受信する第4のモジュールと、
更なるデータイベントの要求の受信の前に、前記データイベントの要求に応答する第5のモジュールと
を備えたプロセッサ。
[49]モバイル動作環境におけるアプリケーション間のデータ通信を提供する装置であって、
プライマリアプリケーションのユニークなID、または前記プライマリアプリケーションによって生成されたランダムな番号を含む、ハンドシェイクの要求を、前記プライマリアプリケーションから受信する手段と、
信頼されたプライマリアプリケーションの識別子のリストに対して、前記ユニークなIDを照会する手段と、
もし、前記ユニークなIDが、信頼されたプライマリアプリケーションの識別子の前記リストのIDに一致すれば、ハンドシェイクの応答を前記プライマリアプリケーションに送信する手段と、
データイベントの要求を受信する手段と、
前記データイベントの要求に対する応答がイニシエイトされるまで、更なるデータイベントの要求の受信を遅延させる手段と
を備えた装置。
[50]モバイル動作環境におけるアプリケーション間のデータ通信を提供する命令を保持するコンピュータ読み取り可能媒体を備えたコンピュータプログラム製品であって、前記コンピュータ読み取り可能媒体は、
コンピュータに対して、プライマリアプリケーションのユニークなID、または前記プライマリアプリケーションによって生成されたランダムな番号を含む、ハンドシェイクの要求を、前記プライマリアプリケーションから受信させるように構成された、第1命令セットと、
コンピュータに対して、信頼されたプライマリアプリケーションの識別子のリストに対して、前記ユニークなIDを照会させるように構成された、第2命令セットと、
コンピュータに対して、もし、前記ユニークなIDが、信頼されたプライマリアプリケーションの識別子の前記リストのIDに一致すれば、ハンドシェイクの応答を前記プライマリアプリケーションに送信させるように構成された、第3命令セットと、
コンピュータに対して、データイベントの要求を受信させるように構成された、第4命令セットと、
コンピュータに対して、更なるデータイベントの要求を受信する前に、前記データイベントの要求に対して応答させるように構成された、第5命令セットと
を備えたプロセッサ。

Claims (50)

  1. モバイル動作環境におけるアプリケーション間のデータ通信を提供する方法であって、
    コンピュータによって、プライマリモバイルアプリケーションのユニークな識別子と、ハンドシェイクのために生成されたランダムな番号とを含む、モバイルアプリケーションとの前記ハンドシェイクをイニシエイトすることと、
    コンピュータによって、前記ハンドシェイクに対する、少なくとも第2の番号を含む応答を、受信し確認することと、
    コンピュータによって、もし前記ハンドシェイクに対する前記応答が確認されれば、前記第2の番号または前記第2の番号のバージョン(version)を含むデータイベントを、モバイルアプリケーションに対して送信することと、
    コンピュータによって、前記モバイルアプリケーションからデータイベントの応答が受信されるまで、前記プライマリアプリケーションの実行を禁止することと
    を備え、前記データイベントの応答は、少なくとも前記第2の番号または前記第2の番号のバージョンを含む、方法。
  2. もし前記データイベントの応答が前記モバイルアプリケーションから受信されなければ、前記データイベントを再送信すること、を更に備える請求項1の方法。
  3. 前記データイベントの応答が受信されるまで、設定可能な回数のデータイベントの再送信を実行すること、を更に備える請求項1の方法。
  4. 前記モバイルアプリケーションと前記プライマリモバイルアプリケーションとの間のインターフェースにおけるパケットロスの頻度または可能性を判断して、データイベントの再送信の前記設定可能な回数を決定すること、を更に備える請求項3の方法。
  5. もし、前記設定可能な回数のデータイベントの再送信の後、前記データイベントの応答が受信されなければ、前記ハンドシェイクを再度イニシエイトすること、を更に備える請求項3の方法。
  6. もし、前記ハンドシェイクに対する応答、または前記データイベントの応答が、しきい期間内に前記モバイルアプリケーションから受信されなければ、前記ハンドシェイクを再度イニシエイトすること、を更に備える請求項1の方法。
  7. 前記ランダムな番号を変換するため、または前記第2の番号のバージョンを生成するために、ハッシュ関数を使用すること、
    前記ランダムな番号または前記第2の番号を切り捨てて(truncate)、アプリケーションのインターフェースが別の方法で調整された場合よりも大きい番号の送信を可能とすること、
    前記第2の番号をインクリメントして、前記第2の番号のバージョンを生成すること、または
    前記第2の番号を暗号化して、前記第2の番号のバージョンを生成すること、
    の少なくともいずれかを更に備える、請求項1の方法。
  8. もし前記第1の番号が前記ランダムな番号として確認されなければ、ハンドシェイクの終了(termination)をイニシエイトすること、を更に備える請求項1の方法。
  9. 単一のモバイル機器を用いて、前記モバイルアプリケーションと前記プライマリモバイルアプリケーションとを通信可能に結合し、実行すること、を更に備える請求項1の方法。
  10. 前記プライマリモバイルアプリケーションを保持し実行する第1の機器と、前記モバイルアプリケーションを保持し実行し、前記第1の機器から離隔して位置する第2の機器とを用いること、を更に備え、
    前記第1及び第2の機器は、有線または無線ネットワーク、またはその両方により、通信可能に結合されている、請求項1の方法。
  11. 前記ハンドシェイクをイニシエイトすることと、前記ハンドシェイクに対する前記応答を受信することとの間に要する時間から、予測される応答時間を算出することと、
    もし前記予測される応答時間内に前記データイベントの応答が受信されなければ、
    引き続くハンドシェイクがイニシエイトされ確認されるまで、前記モバイルアプリケーションとの通信を終了すること、または前記データイベントを再送信すること、との少なくともいずれか一方と、
    を更に備える請求項1の方法。
  12. モバイル動作環境におけるアプリケーション間のデータ通信を提供する装置であって、
    ランダムな番号と、プライマリアプリケーションのユニークなIDとを含む、レシピエントアプリケーションとのハンドシェイクを、イニシエイトするように構成された、安全セッションモジュールと、
    前記ハンドシェイクに対する、少なくとも第2の番号を含む応答を、受信し確認するように構成された、確認モジュールと、
    もし前記ハンドシェイクに対する前記応答が確認されれば、前記第2の番号または前記第2の番号のバージョン(version)を含むデータイベントを、前記レシピエントアプリケーションに対して送信するように構成された通信モジュールと、
    バイルアプリケーションからデータイベントの応答が受信されるまで、前記プライマリアプリケーションの実行を禁止するように構成された、送信管理モジュールと
    を備え、前記データイベントの応答は、少なくとも前記第2の番号または前記第2の番号のバージョンを含む、装置。
  13. 前記通信モジュールは、もし前記データイベントの応答が前記レシピエントアプリケーションから受信されなければ、前記データイベントを再送信する、請求項12の装置。
  14. 前記プライマリアプリケーションと前記レシピエントアプリケーションとの間のパケットロスの頻度または可能性を判断し、前記判断されたパケットロスに基づいて、受信確認されていないデータイベントの再送信の回数を決定するように構成された、通信信頼性モジュールを更に備える、請求項12の装置。
  15. 前記安全セッションモジュールは、もし、前記回数の再送信の後、前記データイベントの応答が受信されなければ、前記ハンドシェイクを再度イニシエイトする、請求項14の装置。
  16. もし少なくとも、前記ハンドシェイクに対する応答、または前記データイベントの応答が、しきい期間内に前記モバイルアプリケーションから受信されず、またはハンドシェイクリフレッシュ時間が満了し、またはハンドシェイクイニシエーションコマンドが機器ユーザインターフェースから受信されれば、
    前記安全セッションモジュールは、前記ハンドシェイクを再度イニシエイトする、請求項12の装置。
  17. 少なくとも、前記ランダムな番号をハッシュし、切り捨て(truncate)、またはインクリメントし、またはそれらを組み合わせ、または
    前記第2の番号をハッシュし、切り捨て、またはインクリメントし、またはそれらを組み合わせて、前記第2の番号の前記バージョンを生成する
    ように構成されたハッシュモジュールを更に備える、請求項12の装置。
  18. もし少なくとも、前記第1の番号が前記ランダムな番号として確認されず、または所定の回数の前記ハンドシェイクに対してハンドシェイクの応答が受信されず、または通信セッションが完了されれば、
    前記安全セッションモジュールは、ハンドシェイクの終了(termination)をイニシエイトするように構成される、請求項12の装置。
  19. 単一のモバイル機器が、前記モバイルアプリケーションと前記プライマリモバイルアプリケーションとを通信可能に結合し、実行する、請求項12の装置。
  20. 有線または無線ネットワークを介して通信可能に結合され、少なくともいずれか一方がモバイル機器である、第1及び第2の遠隔処理機器が、それぞれ前記レシピエントアプリケーション及び前記プライマリアプリケーションを実行する、請求項12の装置。
  21. 前記ハンドシェイクをイニシエイトすることと、受信することとの間の時間に少なくとも一部基づいて、前記プライマリアプリケーションと前記レシピエントアプリケーションとの間において予測される応答時間を算出するように構成された、タイミングモジュールを更に備え、
    前記通信モジュールは、もし前記予測される応答時間内に前記データイベントの応答が受信されなければ、前記データイベントを再送信する、請求項12の装置。
  22. 前記プライマリアプリケーションにおいて、前記プライマリアプリケーションの他の動作に割り込むことなく、ハンドシェイクの応答またはデータイベントの応答を受信してバッファすることを可能とするように構成された、処理バッファを更に備える、請求項12の装置。
  23. モバイル動作環境におけるアプリケーション間のデータ通信を提供する少なくとも1つのプロセッサであって、
    プライマリモバイルアプリケーションのユニークな識別子と、ハンドシェイクのために生成されたランダムな番号と、を含む、モバイルアプリケーションとのハンドシェイクを、イニシエイトする、第1のモジュールと、
    前記ハンドシェイクに対する、少なくとも第2の番号を含む応答を、受信し確認する、第2のモジュールと、
    もし前記ハンドシェイクに対する前記応答が確認されれば、前記第2の番号または前記第2の番号のバージョン(version)を含むデータイベントを、前記モバイルアプリケーションに対して送信する第3のモジュールと、
    少なくとも前記第2の番号の前記インクリメントを含むデータイベントの応答が受信されるまで、前記プライマリモバイルアプリケーションの実行を禁止する、第4のモジュールと
    を備えるプロセッサ。
  24. モバイル動作環境におけるアプリケーション間のデータ通信を提供する装置であって、
    プライマリモバイルアプリケーションのユニークな識別子と、ハンドシェイクのために生成されたランダムな番号と、を含む、モバイルアプリケーションとのハンドシェイクを、イニシエイトする手段と、
    前記ハンドシェイクに対する、少なくとも第2の番号を含む応答を、受信し確認する手段と、
    もし前記ハンドシェイクに対する前記応答が確認されれば、前記第2の番号または前記第2の番号のバージョン(version)を含むデータイベントを、前記モバイルアプリケーションに対して送信する手段と、
    少なくとも前記第2の番号の前記インクリメントを含むデータイベントの応答が受信されるまで、前記プライマリモバイルアプリケーションの実行を禁止する手段と
    を備える装置。
  25. モバイル環境アプリケーションのためのデータ通信セキュリティを提供する命令を保持するコンピュータ読み取り可能記憶媒体であって、
    コンピュータに対して、プライマリモバイルアプリケーションのユニークな識別子と、ハンドシェイクのために生成されたランダムな番号と、を含む、モバイルアプリケーションとのハンドシェイクを、イニシエイトさせるように構成された、第1命令セットと、
    コンピュータに対して、前記ハンドシェイクに対する、少なくとも第2の番号を含む応答を、受信し確認させるように構成された、第2命令セットと、
    コンピュータに対して、もし前記ハンドシェイクに対する前記応答が確認されれば、前記第2の番号または前記第2の番号のバージョン(version)を含むデータイベントを、前記モバイルアプリケーションに対して送信させるように構成された、第3命令セットと、
    コンピュータに対して、少なくとも前記第2の番号または前記第2の番号のバージョンを含むデータイベントの応答が受信されるまで、前記プライマリモバイルアプリケーションの実行を禁止させるように構成された、第4命令セットと
    を備えるコンピュータ読み取り可能記憶媒体
  26. モバイル動作環境におけるアプリケーション間のデータ通信を提供する方法であって、
    コンピュータによって、プライマリアプリケーションのユニークなID、または前記プライマリアプリケーションによって生成されたランダムな番号を含む、ハンドシェイクの要求を、前記プライマリアプリケーションから受信することと、
    コンピュータによって、信頼されたプライマリアプリケーションの識別子のリストに対して、前記ユニークなIDを照会することと、
    コンピュータによって、もし、前記ユニークなIDが、信頼されたプライマリアプリケーションの識別子の前記リストのIDに一致すれば、ハンドシェイクの応答を前記プライマリアプリケーションに送信することと、
    コンピュータによって、データイベントの要求を受信することと、
    コンピュータによって、前記データイベントの要求に対して、更なるデータイベントの要求の受信または処理の前に、応答することと
    を備えた方法。
  27. レシピエントアプリケーションから発せられた通信を特定するために生成された第2のランダムな番号、または前記ランダムな番号、またはその両方を、前記ハンドシェイクの応答に含めること、を更に備える請求項26の方法。
  28. 前記データイベントにつき、データバッファを割り当てることと、
    前記データイベント内に含まれるデータを、前記データバッファにコピーすることと、
    現在のプロセスを完了させるための予測時間に少なくとも一部基づいて、処理タイマをセットすることと、
    前記処理タイマが満了するまで、前記データイベント内に含まれる前記データの処理を停止することと
    を更に備える請求項27の方法。
  29. 前記データイベントの要求内の、前記第2のランダムな番号のインクリメントを受信すること、を更に備える請求項27の方法。
  30. 前記第2のランダムな番号のインクリメント、または前記レシピエントアプリケーションのアプリケーションID、またはその両方を、前記データイベントの要求の応答内に含めること、を更に備える請求項27の方法。
  31. 前記データイベントの要求に応答するデータと共に、前記ランダムな番号のインクリメントを、前記データイベントの要求の応答内に含めること、を更に備える請求項26の方法。
  32. もし、前記データイベントの要求が前記第2のランダムな番号の現在のインクリメントを含んでいなければ、信頼されたユニークなIDを有する引き続くハンドシェイクのイベントが受信されるまで、前記データイベントの要求及び引き続くデータイベントの要求を無視すること、を更に備える請求項26の方法。
  33. 新たなランダムな番号と、前記ユニークなIDまたは第2のユニークなIDを含む、ハンドシェイクの再イニシエーションメッセージを受信することと、
    前記新たなランダムな番号を、一時的なバッファに保持することと、
    前記ユニークなIDまたは前記第2のユニークなIDが、信頼されたプライマリアプリケーションの識別子のリストのIDと一致するかを確認することと、
    もし前記ユニークなIDまたは前記第2のユニークなIDが確認されれば、前記ランダムな番号を前記新たなランダムな番号で置き換えることと、もし前記ユニークなIDまたは前記第2のユニークなIDが確認されなければ、前記新たなランダムな番号を前記一時的なバッファから削除することと、のいずれかと
    を更に備える請求項26の方法。
  34. レシピエントデータイベントの要求を、前記プライマリアプリケーションに送信することと、
    少なくとも、前記レシピエントデータイベントの要求に対する応答が受信されるまで、第2のレシピエントデータイベントの要求の送信を遅延させることと
    を更に備える請求項26の方法。
  35. 前記ランダムな番号のインクリメント、または前記プライマリアプリケーションの前記ユニークなID、またはその両方を含む応答を、前記プライマリアプリケーションから受信すること、を更に備える請求項34の方法。
  36. 前記レシピエントデータイベントの要求に対する応答が受信されない限り、前記レシピエントデータイベントの要求を、設定可能な回数だけ再送信すること、または
    もし、設定可能な回数の要求の送信の後、前記レシピエントデータイベントの要求に対する応答が受信されなければ、少なくとも信頼されたプライマリアプリケーションのクラスIDを有する、引き続くハンドシェイクが受信されるまで、前記レシピエントデータイベントの要求の送信を停止することと
    の少なくとも1つを更に備える、請求項34の方法。
  37. モバイル動作環境におけるアプリケーション間のデータ通信を提供する装置であって、
    プライマリアプリケーションのユニークなID、または前記プライマリアプリケーションによって生成されたランダムな番号を含む、ハンドシェイクの要求を、前記プライマリアプリケーションから受信するように構成された、安全モジュールと、
    信頼されたプライマリアプリケーションの識別子のリストに対して、前記ユニークなIDを確認する照会モジュールと、
    もし、前記ユニークなIDが、信頼されたプライマリアプリケーションの識別子の前記リストのIDに一致すれば、ハンドシェイクの応答を前記プライマリアプリケーションに送信するように構成され、またデータイベントの要求を受信するように構成された、インターフェースモジュールと、
    前記インターフェースモジュールに対して、更なるデータイベントの要求の受信の前に前記データイベントの要求に応答するよう求めるように構成された管理モジュールと
    を備えた装置。
  38. 前記ハンドシェイクの応答は、レシピエントアプリケーションに応答する通信を特定するために生成された第2のランダムな番号、または前記ランダムな番号、またはその両方を、有する請求項37の装置。
  39. 前記管理モジュールは、
    前記データイベントにつき、データバッファを割り当てることと、
    前記データイベント内に含まれるデータを、前記データバッファにコピーすることと、
    現在のプロセスを完了させるための予測時間に、少なくとも部分的に基づいて、処理タイマをセットすることと、
    レシピエントアプリケーションに対して、前記処理タイマが満了するまで、前記データイベント内に含まれる前記データの処理をさせないことと
    の少なくとも1つを行うように更に構成されている、請求項38の装置。
  40. 前記データイベントの要求は、少なくとも前記ランダムな番号のインクリメントを含む、請求項38の装置。
  41. 前記管理モジュールは、前記第2のランダムな番号のインクリメント、または前記レシピエントアプリケーションのアプリケーションID、またはその両方を含む、前記データイベントの要求に対する応答を許可する、請求項38の装置。
  42. 前記管理モジュールは、前記インターフェースモジュールに対して、前記プライマリアプリケーションによる実行のための命令、またはデータの要求、またはその両方と共に、前記ランダムな番号のインクリメントを含む、データイベントの要求の送信を許可する、請求項37の装置。
  43. 前記管理モジュールは、もし、前記データイベントの要求が前記第2のランダムな番号の現在のインクリメントを含んでいなければ、信頼されたユニークなIDを有する引き続くハンドシェイクのイベントが受信されるまで、前記データイベントの要求及び引き続くデータイベントの要求を無視する、請求項37の装置。
  44. 前記管理モジュールは、新たなランダムな番号と、前記ユニークなIDまたは第2のユニークなIDを含む、ハンドシェイクの再イニシエーションメッセージを受信することと、
    前記新たなランダムな番号を、一時的なバッファに保持することと、
    前記ユニークなIDまたは前記第2のユニークなIDが、信頼されたプライマリアプリケーションの識別子のリストのIDと一致するかを確認することと、
    もし前記ユニークなIDまたは前記第2のユニークなIDが確認されれば、前記ランダムな番号を前記新たなランダムな番号で置き換えることと、もし前記ユニークなIDまたは前記第2のユニークなIDが確認されなければ、前記新たなランダムな番号を前記一時的なバッファから削除することと、のいずれかと
    の少なくとも1つを行うように更に構成されている、請求項37の装置。
  45. 前記インターフェースモジュールは、レシピエントデータイベントの要求を、前記プライマリアプリケーションに送信し、
    前記管理モジュールは、少なくとも、前記レシピエントデータイベントの要求に対する応答が前記インターフェースで受信されるまで、第2のレシピエントデータイベントの要求の送信を遅延させる、請求項37の装置。
  46. 前記インターフェースモジュールで受信された、前記レシピエントデータイベントの要求に対する要求は、前記ランダムな番号のインクリメント、または前記プライマリアプリケーションの前記ユニークなID、またはその両方を含む、請求項45の装置。
  47. 前記インターフェースモジュールは、前記レシピエントデータイベントの要求に対する応答が受信されない限り、前記レシピエントデータイベントの要求を、設定可能な回数だけ再送信すること、または
    前記管理モジュールは、前記インターフェースに対して、もし、設定可能な回数の要求の送信の後、前記レシピエントデータイベントの要求に対する応答が受信されなければ、確認されたプライマリアプリケーションのクラスIDを有する、引き続くハンドシェイクが受信されるまで、前記レシピエントデータイベントの要求の送信させないこと、
    の少なくとも1つを更に備える、請求項46の装置。
  48. モバイル動作環境におけるアプリケーション間のデータ通信を提供する少なくとも1つのプロセッサであって、
    プライマリアプリケーションのユニークなID、または前記プライマリアプリケーションによって生成されたランダムな番号を含む、ハンドシェイクの要求を、前記プライマリアプリケーションから受信する第1のモジュールと、
    信頼されたプライマリアプリケーションの識別子のリストに対して、前記ユニークなIDを照会する第2のモジュールと、
    もし、前記ユニークなIDが、信頼されたプライマリアプリケーションの識別子の前記リストのIDに一致すれば、ハンドシェイクの応答を前記プライマリアプリケーションに送信する第3のモジュールと、
    データイベントの要求を受信する第4のモジュールと、
    更なるデータイベントの要求の受信の前に、前記データイベントの要求に応答する第5のモジュールと
    を備えたプロセッサ。
  49. モバイル動作環境におけるアプリケーション間のデータ通信を提供する装置であって、
    プライマリアプリケーションのユニークなID、または前記プライマリアプリケーションによって生成されたランダムな番号を含む、ハンドシェイクの要求を、前記プライマリアプリケーションから受信する手段と、
    信頼されたプライマリアプリケーションの識別子のリストに対して、前記ユニークなIDを照会する手段と、
    もし、前記ユニークなIDが、信頼されたプライマリアプリケーションの識別子の前記リストのIDに一致すれば、ハンドシェイクの応答を前記プライマリアプリケーションに送信する手段と、
    データイベントの要求を受信する手段と、
    前記データイベントの要求に対する応答がイニシエイトされるまで、更なるデータイベントの要求の受信を遅延させる手段と
    を備えた装置
  50. モバイル動作環境におけるアプリケーション間のデータ通信を提供する命令を保持するコンピュータ読み取り可能記憶媒体であって、
    コンピュータに対して、プライマリアプリケーションのユニークなID、または前記プライマリアプリケーションによって生成されたランダムな番号を含む、ハンドシェイクの要求を、前記プライマリアプリケーションから受信させるように構成された、第1命令セットと、
    コンピュータに対して、信頼されたプライマリアプリケーションの識別子のリストに対して、前記ユニークなIDを照会させるように構成された、第2命令セットと、
    コンピュータに対して、もし、前記ユニークなIDが、信頼されたプライマリアプリケーションの識別子の前記リストのIDに一致すれば、ハンドシェイクの応答を前記プライマリアプリケーションに送信させるように構成された、第3命令セットと、
    コンピュータに対して、データイベントの要求を受信させるように構成された、第4命令セットと、
    コンピュータに対して、更なるデータイベントの要求を受信する前に、前記データイベントの要求に対して応答させるように構成された、第5命令セットと
    を備えたコンピュータ読み取り可能記憶媒体
JP2009540431A 2006-12-05 2007-12-04 モバイル動作環境のための、安全なアプリケーション間通信を提供すること Active JP5043957B2 (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US86870106P 2006-12-05 2006-12-05
US60/868,701 2006-12-05
US89489707P 2007-03-14 2007-03-14
US60/894,897 2007-03-14
US11/947,738 2007-11-29
US11/947,738 US8225093B2 (en) 2006-12-05 2007-11-29 Providing secure inter-application communication for a mobile operating environment
PCT/US2007/086418 WO2008070686A2 (en) 2006-12-05 2007-12-04 Providing secure inter-application communication for a mobile operating environment

Publications (2)

Publication Number Publication Date
JP2010511965A JP2010511965A (ja) 2010-04-15
JP5043957B2 true JP5043957B2 (ja) 2012-10-10

Family

ID=39471793

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009540431A Active JP5043957B2 (ja) 2006-12-05 2007-12-04 モバイル動作環境のための、安全なアプリケーション間通信を提供すること

Country Status (7)

Country Link
US (1) US8225093B2 (ja)
EP (1) EP2115935A2 (ja)
JP (1) JP5043957B2 (ja)
KR (1) KR101122853B1 (ja)
CN (1) CN101548503B (ja)
TW (1) TW200841667A (ja)
WO (1) WO2008070686A2 (ja)

Families Citing this family (145)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1924977A1 (en) * 2005-08-15 2008-05-28 John Roujinsky Method and system for obtaining feedback from at least one recipient via a telecommunication network
GB0603781D0 (en) * 2006-02-24 2006-04-05 Nokia Corp Application verification
KR101366803B1 (ko) * 2007-04-16 2014-02-24 삼성전자주식회사 Http를 이용한 통신 방법 및 장치
US8326814B2 (en) 2007-12-05 2012-12-04 Box, Inc. Web-based file management system and service
US7899058B2 (en) * 2008-03-12 2011-03-01 Telefonaktiebolaget L M Ericsson (Publ) Using a hash value as a pointer to an application class in a communications device
US8660268B2 (en) * 2008-04-29 2014-02-25 Red Hat, Inc. Keyed pseudo-random number generator
US8285746B2 (en) * 2008-06-16 2012-10-09 Canon U.S.A., Inc. Securing data from a shared device
US9258113B2 (en) 2008-08-29 2016-02-09 Red Hat, Inc. Username based key exchange
US8614965B2 (en) * 2008-10-24 2013-12-24 Nec Corporation Packet loss frequency measuring system, packet loss frequency measuring method, and program
KR101012872B1 (ko) 2009-09-16 2011-02-08 주식회사 팬택 플랫폼 보안 장치 및 방법
US9225526B2 (en) * 2009-11-30 2015-12-29 Red Hat, Inc. Multifactor username based authentication
US8271031B2 (en) * 2009-12-30 2012-09-18 Sap Ag Communication between integrated device and mobile application client on mobile personal communication device
US9772831B2 (en) 2010-04-26 2017-09-26 Pivotal Software, Inc. Droplet execution engine for dynamic server application deployment
US8572706B2 (en) 2010-04-26 2013-10-29 Vmware, Inc. Policy engine for cloud platform
US9448790B2 (en) 2010-04-26 2016-09-20 Pivotal Software, Inc. Rapid updating of cloud applications
US8813065B2 (en) 2010-04-26 2014-08-19 Vmware, Inc. Microcloud platform delivery system
US8627426B2 (en) * 2010-04-26 2014-01-07 Vmware, Inc. Cloud platform architecture
US9160408B2 (en) * 2010-10-11 2015-10-13 Sunpower Corporation System and method for establishing communication with an array of inverters
KR101141164B1 (ko) * 2010-11-17 2012-05-02 삼성에스디에스 주식회사 어플리케이션간 메시지 교환 시스템 및 방법
US20120124659A1 (en) 2010-11-17 2012-05-17 Michael Craft System and Method for Providing Diverse Secure Data Communication Permissions to Trusted Applications on a Portable Communication Device
WO2012099617A1 (en) 2011-01-20 2012-07-26 Box.Net, Inc. Real time notification of activities that occur in a web-based collaboration environment
KR101250661B1 (ko) * 2011-02-08 2013-04-03 주식회사 팬택 모바일 플랫폼 보안 장치 및 방법
US8527196B2 (en) * 2011-03-23 2013-09-03 Denso International America, Inc. System and method for determining routes to desired locations
US9015710B2 (en) 2011-04-12 2015-04-21 Pivotal Software, Inc. Deployment system for multi-node applications
US9015601B2 (en) 2011-06-21 2015-04-21 Box, Inc. Batch uploading of content to a web-based collaboration environment
US9063912B2 (en) 2011-06-22 2015-06-23 Box, Inc. Multimedia content preview rendering in a cloud content management system
US9652741B2 (en) 2011-07-08 2017-05-16 Box, Inc. Desktop application for access and interaction with workspaces in a cloud-based content management system and synchronization mechanisms thereof
GB2503625A (en) 2011-07-08 2014-01-01 Box Inc Collaboration sessions in a workspace on cloud-based content management system
US9170798B2 (en) 2012-03-02 2015-10-27 Vmware, Inc. System and method for customizing a deployment plan for a multi-tier application in a cloud infrastructure
US9197718B2 (en) 2011-09-23 2015-11-24 Box, Inc. Central management and control of user-contributed content in a web-based collaboration environment and management console thereof
US9098474B2 (en) 2011-10-26 2015-08-04 Box, Inc. Preview pre-generation based on heuristics and algorithmic prediction/assessment of predicted user behavior for enhancement of user experience
US11210610B2 (en) 2011-10-26 2021-12-28 Box, Inc. Enhanced multimedia content preview rendering in a cloud content management system
US8990307B2 (en) 2011-11-16 2015-03-24 Box, Inc. Resource effective incremental updating of a remote client with events which occurred via a cloud-enabled platform
US9773051B2 (en) 2011-11-29 2017-09-26 Box, Inc. Mobile platform file and folder selection functionalities for offline access and synchronization
US9019123B2 (en) 2011-12-22 2015-04-28 Box, Inc. Health check services for web-based collaboration environments
US9904435B2 (en) 2012-01-06 2018-02-27 Box, Inc. System and method for actionable event generation for task delegation and management via a discussion forum in a web-based collaboration environment
US9026784B2 (en) * 2012-01-26 2015-05-05 Mcafee, Inc. System and method for innovative management of transport layer security session tickets in a network environment
US11232481B2 (en) 2012-01-30 2022-01-25 Box, Inc. Extended applications of multimedia content previews in the cloud-based content management system
US9965745B2 (en) 2012-02-24 2018-05-08 Box, Inc. System and method for promoting enterprise adoption of a web-based collaboration environment
US10031783B2 (en) 2012-03-02 2018-07-24 Vmware, Inc. Execution of a distributed deployment plan for a multi-tier application in a cloud infrastructure
US9047133B2 (en) 2012-03-02 2015-06-02 Vmware, Inc. Single, logical, multi-tier application blueprint used for deployment and management of multiple physical applications in a cloud environment
US9052961B2 (en) 2012-03-02 2015-06-09 Vmware, Inc. System to generate a deployment plan for a cloud infrastructure according to logical, multi-tier application blueprint
US9195636B2 (en) 2012-03-07 2015-11-24 Box, Inc. Universal file type preview for mobile devices
US9054919B2 (en) 2012-04-05 2015-06-09 Box, Inc. Device pinning capability for enterprise cloud service and storage accounts
US9575981B2 (en) 2012-04-11 2017-02-21 Box, Inc. Cloud service enabled to handle a set of files depicted to a user as a single file in a native operating system
US9331995B2 (en) * 2012-04-23 2016-05-03 Sap Se Secure configuration of mobile application
GB2505272B (en) 2012-05-04 2014-07-09 Box Inc Repository redundancy implementation of a system which incrementally updates clients with events that occurred via cloud-enabled platform
US9298494B2 (en) 2012-05-14 2016-03-29 Qualcomm Incorporated Collaborative learning for efficient behavioral analysis in networked mobile device
US9609456B2 (en) 2012-05-14 2017-03-28 Qualcomm Incorporated Methods, devices, and systems for communicating behavioral analysis information
US9202047B2 (en) 2012-05-14 2015-12-01 Qualcomm Incorporated System, apparatus, and method for adaptive observation of mobile device behavior
US9690635B2 (en) 2012-05-14 2017-06-27 Qualcomm Incorporated Communicating behavior information in a mobile computing device
US9324034B2 (en) 2012-05-14 2016-04-26 Qualcomm Incorporated On-device real-time behavior analyzer
US9691051B2 (en) 2012-05-21 2017-06-27 Box, Inc. Security enhancement through application access control
US8914900B2 (en) 2012-05-23 2014-12-16 Box, Inc. Methods, architectures and security mechanisms for a third-party application to access content in a cloud-based platform
US9027108B2 (en) 2012-05-23 2015-05-05 Box, Inc. Systems and methods for secure file portability between mobile applications on a mobile device
US8515865B1 (en) * 2012-05-26 2013-08-20 At&T Intellectual Property I, L.P. Methods, systems, and products for charging batteries
US9348652B2 (en) 2012-07-02 2016-05-24 Vmware, Inc. Multi-tenant-cloud-aggregation and application-support system
US9021099B2 (en) 2012-07-03 2015-04-28 Box, Inc. Load balancing secure FTP connections among multiple FTP servers
GB2505072A (en) 2012-07-06 2014-02-19 Box Inc Identifying users and collaborators as search results in a cloud-based system
US9712510B2 (en) 2012-07-06 2017-07-18 Box, Inc. Systems and methods for securely submitting comments among users via external messaging applications in a cloud-based platform
US9792320B2 (en) 2012-07-06 2017-10-17 Box, Inc. System and method for performing shard migration to support functions of a cloud-based service
US9237170B2 (en) 2012-07-19 2016-01-12 Box, Inc. Data loss prevention (DLP) methods and architectures by a cloud service
JP5631940B2 (ja) * 2012-07-23 2014-11-26 株式会社東芝 情報処理装置、方法、プログラム
US9794256B2 (en) 2012-07-30 2017-10-17 Box, Inc. System and method for advanced control tools for administrators in a cloud-based service
US8868574B2 (en) 2012-07-30 2014-10-21 Box, Inc. System and method for advanced search and filtering mechanisms for enterprise administrators in a cloud-based environment
US9495537B2 (en) 2012-08-15 2016-11-15 Qualcomm Incorporated Adaptive observation of behavioral features on a mobile device
CN102843681A (zh) * 2012-08-15 2012-12-26 腾讯科技(深圳)有限公司 信息交互方法和装置
US9747440B2 (en) 2012-08-15 2017-08-29 Qualcomm Incorporated On-line behavioral analysis engine in mobile device with multiple analyzer model providers
US9330257B2 (en) 2012-08-15 2016-05-03 Qualcomm Incorporated Adaptive observation of behavioral features on a mobile device
KR101701889B1 (ko) * 2012-08-15 2017-02-02 이카노스 커뮤니케이션스, 인크. 크로스-토크 환경들에서의 강건한 핸드쉐이크 절차
US9319897B2 (en) 2012-08-15 2016-04-19 Qualcomm Incorporated Secure behavior analysis over trusted execution environment
US8745267B2 (en) 2012-08-19 2014-06-03 Box, Inc. Enhancement of upload and/or download performance based on client and/or server feedback information
US9369520B2 (en) 2012-08-19 2016-06-14 Box, Inc. Enhancement of upload and/or download performance based on client and/or server feedback information
GB2513671A (en) 2012-08-27 2014-11-05 Box Inc Server side techniques for reducing database workload in implementing selective subfolder synchronization in a cloud-based environment
US9135462B2 (en) 2012-08-29 2015-09-15 Box, Inc. Upload and download streaming encryption to/from a cloud-based platform
US9195519B2 (en) 2012-09-06 2015-11-24 Box, Inc. Disabling the self-referential appearance of a mobile application in an intent via a background registration
US9311071B2 (en) 2012-09-06 2016-04-12 Box, Inc. Force upgrade of a mobile application via a server side configuration file
US9117087B2 (en) * 2012-09-06 2015-08-25 Box, Inc. System and method for creating a secure channel for inter-application communication based on intents
US9292833B2 (en) 2012-09-14 2016-03-22 Box, Inc. Batching notifications of activities that occur in a web-based collaboration environment
US10200256B2 (en) 2012-09-17 2019-02-05 Box, Inc. System and method of a manipulative handle in an interactive mobile user interface
US9553758B2 (en) 2012-09-18 2017-01-24 Box, Inc. Sandboxing individual applications to specific user folders in a cloud-based service
US10915492B2 (en) 2012-09-19 2021-02-09 Box, Inc. Cloud-based platform enabled with media content indexed for text-based searches and/or metadata extraction
WO2014046974A2 (en) 2012-09-20 2014-03-27 Case Paul Sr Case secure computer architecture
US9521130B2 (en) * 2012-09-25 2016-12-13 Virnetx, Inc. User authenticated encrypted communication link
US9959420B2 (en) 2012-10-02 2018-05-01 Box, Inc. System and method for enhanced security and management mechanisms for enterprise administrators in a cloud-based environment
US9705967B2 (en) 2012-10-04 2017-07-11 Box, Inc. Corporate user discovery and identification of recommended collaborators in a cloud platform
US9495364B2 (en) 2012-10-04 2016-11-15 Box, Inc. Enhanced quick search features, low-barrier commenting/interactive features in a collaboration platform
US9665349B2 (en) 2012-10-05 2017-05-30 Box, Inc. System and method for generating embeddable widgets which enable access to a cloud-based collaboration platform
GB2507191B (en) 2012-10-17 2015-03-04 Box Inc Remote key management in a cloud-based environment
US9756022B2 (en) 2014-08-29 2017-09-05 Box, Inc. Enhanced remote key management for an enterprise in a cloud-based environment
US10235383B2 (en) 2012-12-19 2019-03-19 Box, Inc. Method and apparatus for synchronization of items with read-only permissions in a cloud-based environment
US9396245B2 (en) 2013-01-02 2016-07-19 Box, Inc. Race condition handling in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform
US10089582B2 (en) 2013-01-02 2018-10-02 Qualcomm Incorporated Using normalized confidence values for classifying mobile device behaviors
US9686023B2 (en) 2013-01-02 2017-06-20 Qualcomm Incorporated Methods and systems of dynamically generating and using device-specific and device-state-specific classifier models for the efficient classification of mobile device behaviors
US9684870B2 (en) 2013-01-02 2017-06-20 Qualcomm Incorporated Methods and systems of using boosted decision stumps and joint feature selection and culling algorithms for the efficient classification of mobile device behaviors
US9953036B2 (en) 2013-01-09 2018-04-24 Box, Inc. File system monitoring in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform
EP2755151A3 (en) 2013-01-11 2014-09-24 Box, Inc. Functionalities, features and user interface of a synchronization client to a cloud-based environment
US10599671B2 (en) 2013-01-17 2020-03-24 Box, Inc. Conflict resolution, retry condition management, and handling of problem files for the synchronization client to a cloud-based platform
US9742559B2 (en) 2013-01-22 2017-08-22 Qualcomm Incorporated Inter-module authentication for securing application execution integrity within a computing device
US9491187B2 (en) 2013-02-15 2016-11-08 Qualcomm Incorporated APIs for obtaining device-specific behavior classifier models from the cloud
KR102038964B1 (ko) 2013-03-18 2019-11-26 삼성전자주식회사 어플리케이션 간의 상호 인증 방법 및 장치
US9270674B2 (en) 2013-03-29 2016-02-23 Citrix Systems, Inc. Validating the identity of a mobile application for mobile application management
US9461905B2 (en) * 2013-05-02 2016-10-04 Raytheon Company Method for indirect link characterization and quality measurement of a digital network
US10725968B2 (en) 2013-05-10 2020-07-28 Box, Inc. Top down delete or unsynchronization on delete of and depiction of item synchronization with a synchronization client to a cloud-based platform
US10846074B2 (en) 2013-05-10 2020-11-24 Box, Inc. Identification and handling of items to be ignored for synchronization with a cloud-based platform by a synchronization client
GB2515192B (en) 2013-06-13 2016-12-14 Box Inc Systems and methods for synchronization event building and/or collapsing by a synchronization component of a cloud-based platform
US9805050B2 (en) 2013-06-21 2017-10-31 Box, Inc. Maintaining and updating file system shadows on a local device by a synchronization client of a cloud-based platform
US10229134B2 (en) 2013-06-25 2019-03-12 Box, Inc. Systems and methods for managing upgrades, migration of user data and improving performance of a cloud-based platform
US10110656B2 (en) 2013-06-25 2018-10-23 Box, Inc. Systems and methods for providing shell communication in a cloud-based platform
BR112016000036B1 (pt) * 2013-07-10 2023-05-09 Sony Corporation Dispositivo de recep«ão, e, mtodo para recep«ão de um dispositivo de recep«ão e para transmissão
US9535924B2 (en) 2013-07-30 2017-01-03 Box, Inc. Scalability improvement in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform
GB2518298A (en) 2013-09-13 2015-03-18 Box Inc High-availability architecture for a cloud-based concurrent-access collaboration platform
US9704137B2 (en) 2013-09-13 2017-07-11 Box, Inc. Simultaneous editing/accessing of content by collaborator invitation through a web-based or mobile application to a cloud-based collaboration platform
US9213684B2 (en) 2013-09-13 2015-12-15 Box, Inc. System and method for rendering document in web browser or mobile device regardless of third-party plug-in software
US9535909B2 (en) 2013-09-13 2017-01-03 Box, Inc. Configurable event-based automation architecture for cloud-based collaboration platforms
US10509527B2 (en) 2013-09-13 2019-12-17 Box, Inc. Systems and methods for configuring event-based automation in cloud-based collaboration platforms
US8892679B1 (en) 2013-09-13 2014-11-18 Box, Inc. Mobile device, methods and user interfaces thereof in a mobile device platform featuring multifunctional access and engagement in a collaborative environment provided by a cloud-based platform
US10866931B2 (en) 2013-10-22 2020-12-15 Box, Inc. Desktop application for accessing a cloud collaboration platform
CN106164878B (zh) * 2014-03-31 2020-02-14 飞力凯网路股份有限公司 信息处理装置、信息处理方法和程序
US10652240B2 (en) * 2014-05-29 2020-05-12 Entersekt International Limited Method and system for determining a compromise risk associated with a unique device identifier
US10530854B2 (en) 2014-05-30 2020-01-07 Box, Inc. Synchronization of permissioned content in cloud-based environments
US9602514B2 (en) 2014-06-16 2017-03-21 Box, Inc. Enterprise mobility management and verification of a managed application by a content provider
US10250698B2 (en) 2014-08-25 2019-04-02 Futurewei Technologies, Inc. System and method for securing pre-association service discovery
US9894119B2 (en) 2014-08-29 2018-02-13 Box, Inc. Configurable metadata-based automation and content classification architecture for cloud-based collaboration platforms
US10038731B2 (en) 2014-08-29 2018-07-31 Box, Inc. Managing flow-based interactions with cloud-based shared content
US10574442B2 (en) 2014-08-29 2020-02-25 Box, Inc. Enhanced remote key management for an enterprise in a cloud-based environment
WO2016149794A1 (en) * 2015-03-26 2016-09-29 Surgical Safety Technologies Inc. Operating room black-box device, system, method and computer readable medium
CN106999257A (zh) * 2014-09-23 2017-08-01 外科安全技术公司 手术室黑盒设备、系统、方法和计算机可读介质
US9998360B2 (en) * 2014-11-17 2018-06-12 Honeywell International Inc. Minimizining message propagation times when brief datalink interruptions occur
US10404475B2 (en) * 2015-01-22 2019-09-03 Visa International Service Association Method and system for establishing a secure communication tunnel
CN105321321B (zh) * 2015-11-03 2019-05-17 惠州市鸿业电力信息科技有限公司 保证北斗卫星天线与设备之间数据传输准确的方法和系统
US10596318B2 (en) 2016-03-31 2020-03-24 Dexcom, Inc. Systems and methods for inter-app communications
US10601595B2 (en) 2016-05-04 2020-03-24 Avaya Inc. Secure application attachment
CN106339203B (zh) * 2016-08-10 2018-10-19 钱庆照 一种随机数据生成方法
US10262146B2 (en) * 2016-12-15 2019-04-16 Vmware, Inc. Application-to-application messaging over an insecure application programming interface
US20200053055A1 (en) * 2017-02-17 2020-02-13 Connect2Me Pte Ltd Devices and methods for requesting and/or supplying information
CN106953728B (zh) * 2017-03-28 2020-08-25 联想(北京)有限公司 一种数据传输方法和电子设备
CN106982210B (zh) * 2017-03-28 2021-01-15 联想(北京)有限公司 一种数据下载方法和电子设备
US11063762B1 (en) 2018-02-22 2021-07-13 Allscripts Software, Llc Computing system for inter-application communication
US10884815B2 (en) 2018-10-29 2021-01-05 Pivotal Software, Inc. Independent services platform
US11389090B2 (en) 2018-12-19 2022-07-19 Dexcom, Inc. Intermittent monitoring
US20210306858A1 (en) * 2020-03-25 2021-09-30 Jpmorgan Chase Bank, N.A. Method and system for detecting instrumentation tools
US11728998B2 (en) * 2020-10-22 2023-08-15 EMC IP Holding Company LLC Authenticating communications between physical ports using knowledge of shared secrets
US11595490B2 (en) * 2021-04-14 2023-02-28 Ubkang (Qingdao) Technology Co., Ltd. Methods and systems for implementing a function for an application using a middleware
US20240031436A1 (en) * 2022-07-19 2024-01-25 Centurylink Intellectual Property Llc Dynamic storage and forwarding of data

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6463154B1 (en) 1998-08-28 2002-10-08 Lucent Technologies Inc. Method for determining temporary mobile identifiers and managing use thereof
US6801941B1 (en) 1999-08-12 2004-10-05 Sarnoff Corporation Dynamic wireless internet address assignment scheme with authorization
GB2357227B (en) 1999-12-08 2003-12-17 Hewlett Packard Co Security protocol
ATE403323T1 (de) 2000-05-24 2008-08-15 Voltaire Ltd Gefilterte kommunikation von anwendung zu anwendung
EP1524815B1 (en) * 2000-08-25 2009-09-23 Research In Motion Limited System and method for implementing an enhanced transport layer security protocol
JP2002132722A (ja) 2000-10-30 2002-05-10 Nippon Telegr & Teleph Corp <Ntt> 代行認証方法、その各装置、その装置の処理方法、及びプログラム記録媒体
JP2003208409A (ja) 2002-01-15 2003-07-25 Mitsubishi Electric Corp 認証システム及び認証方法
CA2387328C (en) * 2002-05-24 2012-01-03 Diversinet Corp. Mobile terminal system
JP2005244668A (ja) 2004-02-26 2005-09-08 Sanyo Electric Co Ltd 通信装置および通信方法
US20060136901A1 (en) 2004-12-22 2006-06-22 Sony Ericsson Mobile Communications Ab Mobile financial transaction management system and method
WO2008096396A1 (ja) * 2007-02-02 2008-08-14 Panasonic Corporation 無線通信装置および暗号鍵更新方法
TWI410105B (zh) * 2008-12-01 2013-09-21 Inst Information Industry 無線網路架構之行動台、存取台、閘道裝置、基地台及其握手方法
US8428264B2 (en) * 2009-04-30 2013-04-23 Peertribe Sa Method and system for wireless connecting a mobile device to a service provider through a hosting wireless access node

Also Published As

Publication number Publication date
TW200841667A (en) 2008-10-16
CN101548503A (zh) 2009-09-30
CN101548503B (zh) 2013-06-19
US8225093B2 (en) 2012-07-17
US20080215883A1 (en) 2008-09-04
KR20090094362A (ko) 2009-09-04
KR101122853B1 (ko) 2012-04-20
JP2010511965A (ja) 2010-04-15
WO2008070686A3 (en) 2008-08-07
EP2115935A2 (en) 2009-11-11
WO2008070686A2 (en) 2008-06-12

Similar Documents

Publication Publication Date Title
JP5043957B2 (ja) モバイル動作環境のための、安全なアプリケーション間通信を提供すること
KR101258845B1 (ko) Tcp통신을 이용한 정보 저장방법 및 시스템
RU2542911C2 (ru) Установление однорангового сеанса с малым временем ожидания
JP4875097B2 (ja) 無線ネットワーク内の安全なアーキテクチャのための機器および方法
US10834170B2 (en) Cloud authenticated offline file sharing
US9614868B2 (en) System and method for mitigation of denial of service attacks in networked computing systems
JP6279821B2 (ja) ワイヤレス通信においてメッセージを認証すること
JP2006060806A (ja) 無線ネットワークによって接続されたデバイスをバインドする方法
US8108904B1 (en) Selective persistent storage of controller information
RU2448427C2 (ru) Способ согласования секретного ключа одноадресной рассылки wapi
US20170026405A1 (en) Method and device for categorizing a stream control transmission protocol (sctp) receiver terminal as a malicious sctp receiver terminal
KR101463873B1 (ko) 정보 유출 차단 장치 및 방법
US7634655B2 (en) Efficient hash table protection for data transport protocols
KR101020470B1 (ko) 네트워크 침입차단 방법 및 장치
US20090113559A1 (en) Stateless challenge-response protocol
KR100995731B1 (ko) 방송 자료의 사용에 대한 인증 및 지급을 관리하는 방법 및 시스템
US8595477B1 (en) Systems and methods for reducing handshake delay in streaming protocol web requests
Zhang et al. FKR: An efficient authentication scheme for IEEE 802.11 ah networks
CN112399410A (zh) 用于安全通信的方法、装置、计算机可读介质及设备
WO2013090308A2 (en) Method and apparatus for authenticating a message
Heer LHIP–Lightweight Authentication for the Host Identity Protocol
CN115766233A (zh) 一种基于物联网的信息传输加密方法及系统
CN116846614A (zh) 基于可信计算的mqtt协议消息安全处理方法及系统
JP2008060817A (ja) 通信システム、ウェブサーバ装置、クライアント装置、通信を行うための通信プログラム及びプログラムを記録した記録媒体
JP2016063373A (ja) 秘密情報処理装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111025

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120124

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120131

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120227

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120305

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120323

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120612

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120712

R150 Certificate of patent or registration of utility model

Ref document number: 5043957

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150720

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250