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

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

▶ マイクロソフト テクノロジー ライセンシング,エルエルシーの特許一覧

特許6324388コンピューティング・デバイスについてのセキュアな識別およびセキュアな識別方法
<>
  • 特許6324388-コンピューティング・デバイスについてのセキュアな識別およびセキュアな識別方法 図000003
  • 特許6324388-コンピューティング・デバイスについてのセキュアな識別およびセキュアな識別方法 図000004
  • 特許6324388-コンピューティング・デバイスについてのセキュアな識別およびセキュアな識別方法 図000005
  • 特許6324388-コンピューティング・デバイスについてのセキュアな識別およびセキュアな識別方法 図000006
  • 特許6324388-コンピューティング・デバイスについてのセキュアな識別およびセキュアな識別方法 図000007
  • 特許6324388-コンピューティング・デバイスについてのセキュアな識別およびセキュアな識別方法 図000008
  • 特許6324388-コンピューティング・デバイスについてのセキュアな識別およびセキュアな識別方法 図000009
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6324388
(24)【登録日】2018年4月20日
(45)【発行日】2018年5月16日
(54)【発明の名称】コンピューティング・デバイスについてのセキュアな識別およびセキュアな識別方法
(51)【国際特許分類】
   G06F 21/62 20130101AFI20180507BHJP
   G06F 21/45 20130101ALI20180507BHJP
【FI】
   G06F21/62 354
   G06F21/45
【請求項の数】16
【全頁数】15
(21)【出願番号】特願2015-535673(P2015-535673)
(86)(22)【出願日】2013年9月18日
(65)【公表番号】特表2015-534691(P2015-534691A)
(43)【公表日】2015年12月3日
(86)【国際出願番号】US2013060235
(87)【国際公開番号】WO2014055241
(87)【国際公開日】20140410
【審査請求日】2016年9月20日
(31)【優先権主張番号】13/646,446
(32)【優先日】2012年10月5日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】314015767
【氏名又は名称】マイクロソフト テクノロジー ライセンシング,エルエルシー
(74)【代理人】
【識別番号】100140109
【弁理士】
【氏名又は名称】小野 新次郎
(74)【代理人】
【識別番号】100075270
【弁理士】
【氏名又は名称】小林 泰
(74)【代理人】
【識別番号】100101373
【弁理士】
【氏名又は名称】竹内 茂雄
(74)【代理人】
【識別番号】100118902
【弁理士】
【氏名又は名称】山本 修
(74)【代理人】
【識別番号】100173565
【弁理士】
【氏名又は名称】末松 亮太
(72)【発明者】
【氏名】ダンドゥ,シュリニヴァス
(72)【発明者】
【氏名】シスコウスキ,ピーター
(72)【発明者】
【氏名】アカル,トルガ
(72)【発明者】
【氏名】ラザ,ジョアン・ルーカス・ガバマン
【審査官】 岸野 徹
(56)【参考文献】
【文献】 米国特許第05825883(US,A)
【文献】 国際公開第2011/065768(WO,A1)
【文献】 特開平10−247905(JP,A)
【文献】 特表2008−501176(JP,A)
【文献】 米国特許出願公開第2003/0149670(US,A1)
【文献】 米国特許第06243468(US,B1)
【文献】 米国特許出願公開第2011/0191593(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/62
G06F 21/45
(57)【特許請求の範囲】
【請求項1】
コンピューティング・デバイスおよび/またはユーザを前記デバイス上のアプリケーションに対して識別するために、前記デバイスのプロセッサによって実施される方法であって、
パブリック識別子についての関数コールを受け取るステップと、
パブリッシャIDを要求することによって、前記関数コールに応答するステップであって、前記デバイスのオペレーティング・システムからプライベート・デバイス一意IDにアクセスすることを含む、ステップと、
プライベート・データを前記デバイス内のメモリ位置から要求することによって、前記関数コールに応答するステップと、
前記パブリック識別子を生成するために、前記プライベート・デバイス一意IDおよび前記プライベート・データに対してハッシュ動作を実行するステップと、
前記パブリック識別子を前記アプリケーションに戻すステップと、
を含む、方法。
【請求項2】
前記パブリック識別子が前記アプリケーションのパブリッシャに対して一意である、請求項1記載の方法。
【請求項3】
請求項1記載の方法において、
前記パブリック識別子が第1パブリック識別子であり、当該方法が、更に、
追加のプライベート・データを別のメモリ位置から要求することによって前記関数コールに応答するステップと、
前記パブリッシャIDおよび前記追加のプライベート・データに対してハッシュ動作を実行するステップと、
第2パブリック識別子を前記アプリケーションに戻すステップと、
を含む、方法。
【請求項4】
請求項3記載の方法において、前記第1パブリック識別子および前記第2パブリック識別子の少なくとも1つが、前記アプリケーションのパブリッシャに特有である、方法。
【請求項5】
請求項3記載の方法において、前記第1パブリック識別子および前記第2パブリック識別子の1つが、前記アプリケーションのパブリッシャに対して一意かつ匿名で第1モバイル・デバイス・ユーザを他のモバイル・デバイス・ユーザの間で識別するパブリック・アノニマス識別子である、方法。
【請求項6】
請求項1記載の方法において、前記パブリック識別子を前記アプリケーションに戻すステップが、前記パブリック識別子を前記アプリケーションのパブリッシャに伝達することを含む、方法。
【請求項7】
コンピューティング・デバイスおよび/またはユーザを前記デバイス上のアプリケーションに対して識別するために、前記デバイスのプロセッサによって実施される方法であって、
パブリック識別子についての関数コールを受け取るステップと、
パブリッシャIDを前記デバイス内の第1メモリ位置から要求することによって、前記関数コールに応答するステップと、
プライベート・データを前記デバイス内の第2メモリ位置から要求することによって、前記関数コールに応答するステップであって、前記デバイスのオペレーティング・システムからプライベート・アノニマス識別子にアクセスすることを含む、ステップと、
前記パブリック識別子を生成するために、前記パブリッシャIDおよび前記プライベート・アノニマス識別子に対しハッシュ動作を実行するステップと、
前記パブリック識別子を前記アプリケーションに戻すステップと、
を含む、方法。
【請求項8】
請求項7記載の方法において、前記パブリッシャIDを要求することによって、前記関数コールに応答するステップが、前記デバイスのオペレーティング・スステムからパブリッシャ名にアクセスすることを含む、方法。
【請求項9】
少なくとも1つのアプリケーションと関連付けられるモバイル・デバイスであって、前記少なくとも1つのアプリケーションが当該モバイル・デバイスおよび/または当該デバイスのユーザを識別することを求めており、当該モバイル・デバイスが、
少なくとも1つのプロセッサと、
前記プロセッサにリンクされ、パブリッシャIDが格納される第1メモリ位置とプライベート・データが格納される第2メモリ位置とを少なくとも有するメモリであって、更に前記プロセッサに、
パブリック識別子についての関数コールを受け取らせ、
(1)一意のパブリッシャ宛先を含むパブリッシャIDを前記第1メモリ位置から要求すること、および(2)プライベート・アノニマス識別子を含むプライベート・データを前記第2メモリ位置から要求することの内の少なくとも1つによって、前記関数コールに応答させ、
パブリック識別子を生成するために、前記パブリッシャIDおよび前記プライベート・データに対してハッシュ動作を実行させ、
前記パブリック識別子を前記アプリケーションに戻させる
ための命令を有するメモリと、
を備える、モバイル・デバイス。
【請求項10】
前記パブリック識別子が前記アプリケーションのパブリッシャに対して一意である、請求項9記載のモバイル・デバイス。
【請求項11】
請求項9記載のモバイル・デバイスにおいて、前記パブリック識別子が第1パブリック識別子であり、更に、
追加のプライベート・データを第3メモリ位置から要求することによって前記関数コールに応答させ、
前記パブリッシャIDおよび前記追加のプライベート・データに対しハッシュ動作を実行させ、
第2パブリック識別子を前記アプリケーションに戻させる
ための命令を含む、モバイル・デバイス。
【請求項12】
請求項9記載のモバイル・デバイスにおいて、パブリッシャIDを要求することによって前記関数コールに応答することが、前記デバイスのオペレーティング・システムからプライベート・デバイス一意IDにアクセスすることを含む、モバイル・デバイス。
【請求項13】
前記プライベート・アノニマス識別子が前記デバイスのオペレーティング・システムからアクセスされる、請求項9記載のモバイル・デバイス。
【請求項14】
パブリッシャIDを要求すること、またはプライベート・データを要求することの内少なくとも一方が、前記デバイスのセキュアな領域にアクセスすることを含む、請求項9記載のモバイル・デバイス。
【請求項15】
前記第1メモリ位置または前記第2メモリ位置の内少なくとも一方がバイナリの位置を含む、請求項9記載のモバイル・デバイス。
【請求項16】
前記パブリック識別子を前記アプリケーションのパブリッシャに伝達させる命令を更に含む、請求項9記載のモバイル・デバイス。
【発明の詳細な説明】
【従来技術】
【0001】
コンピューティング・デバイスの識別は、コンピューティング・アプリケーションのパブリッシャを含むコンテンツ・プロバイダにとって重要なことである。パブリッシャは、どのコンテンツが特定のユーザによって所望されるかを判断するのに解析論(analytics)を用いる。
【発明の概要】
【発明が解決しようとする課題】
【0002】
使用パターンの分析によって、パブリッシャにそのアプリケーションを改良させることができる。しかしながら、場合によっては、あまりに多量な使用データ、またはあまりに広範に共有される使用データがユーザ・セキュリティの懸念を生じさせることになる
本摘要は、以下の発明の詳細な説明に更に記載する簡略化した形態での概念の選択を導入するために設けている。本摘要は、特許請求する主題のキーとなる特徴や必須の特徴を特定することを意図するものではなく、また、特許請求する主題の範囲を限定するために用いることを意図するものでもない。
【課題を解決するための手段】
【0003】
一実施形態では、コンピューティング・デバイス上に実装される方法は、当該デバイスを識別し、および/または当該デバイス上のアプリケーションに対してユーザを識別するステップを提供する。本方法は、パブリック識別子についての関数コールを受け取るステップ、パブリッシャIDをデバイス内の第1メモリ位置から要求すること、およびプライベート・データをデバイス内の第2メモリ位置から要求することによって、関数コールに応答するステップを含む。パブリック識別子を生成するために、パブリッシャIDおよびプライベート・データに対してハッシュ動作が実行される。パブリック識別子はアプリケーションに戻される。
【0004】
パブリック識別子は、アプリケーションのパブリッシャに対して一意とすることができる。
パブリック識別子は第1パブリック識別子であり、本方法は第2パブリック識別子を生成するステップを含む。この場合、本方法は、追加のプライベート・データを第3メモリ位置から要求することによって関数コールに応答するステップ、パブリッシャIDおよび追加のプライベート・データに対してハッシュ動作を実行するステップ、並びに第2パブリック識別子をアプリケーションに戻すステップを含む。
【0005】
関数コールに応答するステップは、パブリッシャ名、プライベート・デバイス一意ID、および/またはデバイスのオペレーティング・システムからのプライベート・アノニマス識別子にアクセスするステップを含む。第1メモリ位置および第2メモリ位置の内の少なくとも1つはバリナリでの位置を含むことができる。パブリッシャIDを要求することおよびプライベート・データを要求することの内の少なくとも1つは、デバイスのセキュア領域にアクセスすることを含む。
【0006】
別の実施形態では、方法は、パブリッシャにコンピューティング・デバイス上のアプリケーションをテストさせる。このようにして、開発者は、アプリケーションが広くリリースされる前に、アプリケーションが意図したものとして機能することを保証する。本方法は、パブリッシャに割り当てられたパブリッシャIDを受け取るステップ、アプリケーションの開発コピーと共にパブリッシャから受け取ったパブリッシャIDを関連付けるステップ、および関連付けたパブリッシャIDを有するコンピューティング・デバイスに対し、アプリケーションの開発コピーを展開するステップを含む。
【0007】
パブリッシャIDは、例えば開発者が適切な証明書でログインしたときに、開発者ツールのウェブサイトを通じて取得することができる。
別の実施形態では、モバイル・デバイスは、モバイル・デバイスおよび該デバイスのユーザを識別することを求める少なくとも1つのアプリケーションを有する。モバイル・デバイスは、プロセッサおよび該プロセッサにリンクしたメモリを備え、第1メモリ位置および第2メモリ位置を少なくとも有する。パブリッシャIDは第1メモリ位置に格納され、プライベート・データは第2メモリ位置に格納される。メモリはまた、パブリック識別子についての関数コールを受け取り、パブリッシャIDを第1メモリ位置から要求することによって関数コールに応答し、プライベート・データを第2メモリ位置から要求することによって関数コールに応答し、また、パブリック識別子を生成するために、パブリッシャIDおよびプライベート・データに対してハッシュ動作を実行することを含む動作をプロセッサに実行させる命令を含む。パブリック識別子は次いで、アプリケーションに戻される。
【0008】
本発明について上記および他の目的、特徴および利点は、以下の詳細な説明を添付の図面を参照と共に進めることからより明らかなものとなろう。
【図面の簡単な説明】
【0009】
図1図1は、例示のモバイル・デバイスのシステム図である。
図2図2は、説明する技術(technique)および技術(technology)を実施する適切な実施環境の包括的な例を示す。
図3図3は、適切なコンピューティング環境の他の包括的な例を示すブロック図である。
図4図4は、識別コンポーネントを有するモバイル・デバイスのブロック図である。
図5図5は、開発者がアプリケーションをテストすることができる例示の実装態様を示すプロセス・フロー図である。
図6図6は、新規の識別方法を有するストアからアプリケーションをダウンロードする例示の実装態様を示すプロセス・フロー図である。
図7図7は、例示の方法についてのフローチャートである。
【発明を実施するための形態】
【0010】
本願および特許請求の範囲で用いられるように、「a」「an」および「the」は、さもなければ文脈が明確に指図しない限りは、複数形の形態を含む。同様に、「または(or)」なる語は、さもなければ文脈が明確に指示しない限りは、「および(and)」を含む。「備える(comprising)」という語は、「含む(including)」を意味する。つまり、「AまたはBを備える」は、AまたはBを含むことと同様に、AおよびBを共に含むことを意味する。加えて、「含む(includes)」なる語は、「備える(comprises)」を意味する。
【0011】
図1は、様々な任意のハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む例示のモバイル・デバイス100を示すシステム図であり、包括的に102として示す。モバイル・デバイスの如何なるコンポーネント102も他の如何なるコンポーネントと通信することができる。但し、説明の簡単化のために、全ての接続が示されるわけではない。モバイル・デバイスは、如何なる様々なコンピューティング・デバイス(例えば、セル・フォン、スマートフォン、ハンドヘルド・コンピュータ、パーソナル・デジタル・アシスタント(PDA)など)ともすることができ、セルラ・ネットワークまたは衛星ネットワークのような1つ以上のモバイル通信ネットワーク104を有するワイヤレス双方向通信を可能にすることができる。
【0012】
図示したモバイル・デバイス100は、信号符号化、データ処理、入/出力処理、電力制御、および/または他の機能のようなタスクを実行するために、コントローラまたはプロセッサ110(例えば、信号処理プロセッサ、マイクロプロセッサ、ASIC、または他の制御および処理論理回路)を含むことができる。オペレーティング・システム112は、コンポーネント102の割り当ておよび使用、並びに1つ以上のアプリケーション・プログラム114(複数の「アプリケーション」)のサポートを制御することができる。アプリケーション・プログラムは、一般的なモバイル・コンピューティング・アプリケーション(例えば、電子メール・アプリケーション、カレンダ、接触マネージャ、ウェブ・ブラウザ、メッセージング・アプリケーション)または他の如何なるコンピューティング・アプリケーションも含むことができる。アプリケーション・ストアにアクセスするための機能性113はまた、アプリケーション114を取得および更新するために使用することもできる。
【0013】
図示したモバイル・デバイス100は、メモリ120を含むことができる。メモリ120は、着脱不可メモリ122および/または着脱可能メモリ124を含むことができる。着脱不可メモリ122は、RAM、ROM、フラッシュ・メモリ、ハード・ディスクまたは他の公知のメモリ・ストレージ技術を含むことができる。着脱可能メモリ124は、フラッシュ・メモリ若しくはGSM(登録商標)通信システムで周知の加入者識別モジュール(SIM)カード、または「スマート・カード」のような他の周知のメモリ・ストレージ技術を含むことができる。メモリ120は、コードを格納するために、および/またはオペレーティング・システム112およびアプリケーション114を起動するために使用することができる。例示のデータは、ウェブ・ページ、テキスト、イメージ、サウンド・ファイル、ビデオ・データまたは他のデータ・セットを含むことができ、1つ以上の有線または無線ネットワークを介して1つ以上のネットワーク・サーバまたは他のデバイスに送信および/または受信されることになる。メモリ120は、国際モバイル加入者識別(IMSI)のような加入者識別子、および国際モバイル装置識別子(IMEI)のような装置識別子を格納するのに使用することができ、これらは、ユーザおよび装置を識別するためにネットワーク・サーバに送信される。以下の説明は、識別に対する新規の手法である。
【0014】
モバイル・デバイス100は、1つ以上の入力デバイス130(例えば、タッチスクリーン132、マイクロフォン134、カメラ136、物理キーボード138、および/またはトラックボール140)、および1つ以上の出力デバイス150(例えば、スピーカ152およびディスプレイ154)をサポートすることができる。他の見込まれる出力デバイス(図示せず)は、圧電式または他の触覚型出力デバイスを含むことができる。デバイスには、2以上の入力/出力機能を提供することができる。例えば、タッチスクリーン132およびディスプレイ154は、単一の入/出力用デバイスに組み込むことができる。入力デバイス130は、ナチュラル・ユーザ・インタフェース(NUI)を含むことができる。NUIはあらゆるインタフェース技術であり、ユーザが、入力デバイス(例えば、マウス、キーボード、リモート・コントロールなど)によって課される人工的な制約を受けることなく、「自然(natural)」な手法でデバイスと相互作用するのを可能にする。例示のNUI方法は、音声認識、タッチおよびスタイラス認識、スクリーンおよび隣接のスクリーンの両方に対するジェスチャ認識、エア・ジェスチャ、頭および目のトラッキング、音声およびスピーチ、視野、タッチ、ジェスチャ、並びに人工知能に依存するものを含む。NUIの他の例は、加速度計/ジャイロスコープを用いるモーション・ジェスチャ検出、顔認識、3Dディスプレイ、頭、目および視線の追跡、没入増大リアリティおよびバーチャル・リアリティ・システムを含み、これら全ては、より自然なインタフェースを、電界感知電極(EEGおよび関連した方法)を用いて脳活動を感知する技術と同様に提供する。つまり、1つの具体例では、オペレーティング・システム112またはアプリケーション114は、音声ユーザ・インタフェースの一部として、音声認識ソフトウェアを含むことができ、ユーザが音声コマンドを介してデバイス100を操作するのを可能にする。更に、デバイス100は、入力デバイス、およびユーザの空間ジェスチャを介したユーザ対話(例えば、ゲーミング・アプリケーションへの入力を供給するジェスチャを検出および解釈すること)を可能とするソフトウェアを含むことができる。
【0015】
従来技術においてよく理解されるように、ワイヤレス・モデル160は、アンテナ(図示せず)に結合することができ、プロセッサ110と外部デバイス間の双方向通信をサポートすることができる。モデム160を包括的に示し、モバイル通信ネットワーク104および/または他の無線ベースのモデム(例えば、ブルートゥース164またはWi−Fi162)と通信するためにセルラ・モデムを含むことができる。ワイヤレス・モデム160は、通例、複数のセルラ・ネットワーク間、または、モバイル・デバイスおよびパブリック・スイッチ電話ネットワーク(PSTN)間の1つ以上のセルラ・ネットワーク(例えば、単一セルラ・ネットワーク内でのデータおよび音声通信のためのGSM(登録商標)ネットワーク)との通信のために構成される。
【0016】
モバイル・デバイスは更に、少なくとも1つの入/出力ポート180、電源182、衛星ナビゲーション・システム受信機184(例えば全地球位置測定システム(GPS)受信機)、加速度計186、および/または物理的コネクタ190を含むことができる。物理的コネクタ190は、USBポート、IEEE1394(ファイア・ワイア)ポートおよび/またはRS−232ポートとすることができる。図示のコンポーネント102は、全てを含む必要もない。何故ならば、如何なるコンポーネントも削除することができ、また、他のコンポーネントを付加することができるからである。
【0017】
図2は、適切な実施環境200の包括的な例を示し、ここでは、説明する実施形態、技術(techniques)および技術(technologies)を実施することができる。
例示の環境200では、様々な種別のサービス(例えば、コンピューティング・サービス)がクラウド210によって提供される。例えば、クラウド210は、コンピューティング・デバイスの集合を含み、中央化または分散して配置することができる。コンピューティング・デバイスは、クラウド・ベースのサービスを様々な種別のユーザおよびインターネットのようなネットワークを介して接続されるデバイスに提供する。実施環境200は、コンピューティング・タスクを遂行するために、異なる方法で使用することができる。例えば、幾らかのタスク(例えば、ユーザ入力の処理、およびユーザ・インタフェースの提示)がローカル・コンピューティング・デバイス(例えば、接続されるデバイス230,240,260)に対して実行されることができる一方で、他のタスク(例えば、後続の処理で用いられることになるデータの記憶)はクラウド210で実行されることができる。
【0018】
例示の環境200では、クラウド210は、接続されるデバイス230,240,250へのサービスに様々なスクリーン性能を提供する。接続されるデバイス230は、コンピュータ・スクリーン235(例えば、中型サイズのスクリーン)を有するデバイスを表す。例えば、接続されるデバイス230は、パーソナル・コンピュータ(例えば、デスクトップ・コンピュータ、ラップトップ、ノートブック、ネットブックなど)とすることができる。接続されるデバイス240は、モバイル・デバイス・スクリーン245(例えば、小型サイズのスクリーン)を有するデバイスを表す。例えば、接続されるデバイス240は、モバイルフォン、スマートフォン、パーソナル・デジタル・アシスタント、タブレット型コンピュータなどとすることができる。接続される装置250は、大型のスクリーン255を有するデバイスを表す。例えば、接続されるデバイス250は、テレビ・スクリーン(例えば、スマート・テレビ)、またはテレビに接続される他のデバイス(例えば、セットトップ・ボックスまたはゲーミング・コンソール)などとすることができる。接続される装置230,240,250の1つ以上は、タッチスクリーン性能を有することができる。タッチスクリーンは、異なる方法で入力を受け入れることができる。例えば、容量型のタッチスクリーンは、オブジェクト(例えば、指先またはスタイラス)が表面にわたり流れる電流を歪め、遮断するときに入力を検出する。他の例として、タッチスクリーンは光学センサを使用することができ、光学センサからのビームが遮断されるときに入力を検出することができる。スクリーンの表面との物理的な接触は、幾らかのタッチスクリーンによって検出されることになる入力には必要でない。スクリーン性能のないデバイスはまた、例示の環境200でも使用することができる。例えば、クラウド210は、1つ以上のコンピュータ(例えば、複数のサーバ・コンピュータ)に対するサービスをディスプレイなしで提供することができる。
【0019】
サービスは、サービス・プロバイダ220を通じて、またはオンライン・サービスの他のプロバイダ(図示せず)を通じて、クラウド210によって提供することができる。例えば、クラウド・サービスは、接続される特定のデバイス(例えば、接続されるデバイス230,240,250)が有するスクリーン・サイズ、ディスプレイ性能、および/またはタッチスクリーン性能にカスタマイズすることができる。
【0020】
例示の環境200では、クラウド210は、接続される様々なデバイス230,240,250に対し、少なくとも部分的にサービス・プロバイダ220を使用して本明細書で説明する技術や解決策を提供する。例えば、サービス・プロバイダ220は、様々なクラウド・ベースのサービスについて中央化した解決策を提供することができる。サービス・プロバイダ220は、ユーザおよび/またはデバイスのために(例えば、接続されるデバイス230、240、250および/またはそれらの各ユーザのために)サービス購読を管理することができる。
【0021】
図3は、説明するイノベーションが実装される適切なコンピューティング環境300の包括的な例を示す。コンピューティング環境300は、使用性または機能性の範囲に関して如何なる限定をも示唆することを意図とするものではない。何故ならば、イノベーションは、汎用目的または特定目的のコンピューティング・システムで実施できるからである。例えば、コンピューティング環境300は、如何なる様々なコンピューティング・デバイス(例えば、デスクトップ・コンピュータ、ラップトップ・コンピュータ、サーバ・コンピュータ、タブレット型コンピュータ、メディア・プレーヤ、ゲーミング・システム、モバイル・デバイスなど)ともすることができる。
【0022】
図3を参照すると、コンピューティング環境300は、1つ以上の処理ユニット310,315およびメモリ320,325を含む。図3では、この基本構成330は、点線内に含まれる。処理ユニット310,315は、コンピュータ実行可能命令を実行する。処理ユニットは、汎用中央演算処理装置(CPU)、特定用途集積回路(ASIC)のプロセッサ、または他の如何なる種別のプロセッサともすることができる。マルチ処理システムでは、複数の処理ユニットは、処理パワーを増大させるコンピュータ実行可能命令を実行する。例えば、図3は、グラフィックス処理ユニットまたは共同処理ユニット315と同様に中央処理ユニット310を示す。タンジブル・メモリ320,325は、揮発性メモリ(例えば、レジスタ、キャッシュ、RAM)、不揮発性メモリ(例えば、ROM、EEPROM、フラッシュ・メモリなど)、またはこられ2つの幾らかの組み合わせとしてよく、処理ユニット(1または複数)によってアクセス可能である。メモリ320,325は、本明細書に記載する1または複数のイノベーションを実施するソフトウェア380を、処理ユニット(1または複数)によって実行するのに適したコンピュータ実行可能命令の形態で格納する。
【0023】
コンピューティング・システムは付加的な特徴を有する。例えば、コンピューティング環境300は、ストレージ340、1つ以上の入力デバイス350、1つ以上の出力デバイス360、および1つ以上の通信接続370を含む。バス、コントローラ、またはネットワークのような相互接続機構(図示せず)は、コンピューティング環境300のコンポーネントを相互接続する。通例、オペレーティング・システム(図示せず)は、コンピューティング環境300で実装する他のソフトウェアについての動作環境を提供し、また、コンピューティング環境300のコンポーネントの活動をコーディネートする。
【0024】
タンジブル・ストレージ340は、着脱可能または着脱不能とすることができ、また、磁気ディスク、磁気テープまたはカセット、CD−ROM、DVD、または非一時的手段で情報を格納するのに用いることができ、コンピューティング環境300内でアクセスできる他のいかなる媒体をも含む。ストレージ340は、本明細書に記載する1つ以上のイノベーションを実装するソフトウェア380の指示を格納する。
【0025】
入力デバイス(1または複数)350は、タッチ入力デバイス(例えばキーボード、マウス、ペンまたはトラックボール)、音声入力デバイス、スキャニング・デバイス、または入力をコンピューティング環境300に提供する他のデバイスとしてもよい。ビデオ符号化のために、入力デバイス(1または複数)350は、カメラ、ビデオ・カード、TVチューナ・カード、アナログ若しくはデジタル形態のビデオ入力を受け付ける同様のデバイス、またはコンピューティング環境300にビデオ・サンプルを読み込むCD−ROMまたはCD−RWとしてもよい。出力デバイス(1または複数)360は、ディスプレイ、プリンタ、スピーカ、CDライタ、またはコンピューティング環境300からの出力を提供する他のデバイスとしてもよい。
【0026】
通信接続(1または複数)370は、通信媒体を介して他のコンピューティング・エンティティへの通信を可能にする。通信媒体は、情報(例えばコンピュータ実行可能命令、音声若しくはビデオの入力若しくは出力、または変調データ信号内の他のデータ)を搬送する。変調データ信号は、1つ以上のその特徴セットを有し、信号内の情報を符号化するような手法で変更される信号である。例えば、この例に限定されないが、通信媒体は、電気、光、RF、または他のキャリアを用いることができる。
【0027】
開示する方法の内の幾らかの動作について都合のいい提示のために経時的な順序で特に記載するにも拘わらず、特定の順序付けが次に述べる特定の言語によって必要とされない限りにおいて、本説明の手法が再構成を包含することが理解されるべきである。例えば、経時的に説明する動作は、場合によっては並行して再構成または実行されることもある。更に、単純化のために、図面は様々な方法で示すことはしない。ここでは、開示する方法は他の方法に関連して用いることができる。
【0028】
開示する如何なる方法も1つ以上のコンピュータ可読ストレージ媒体(例えば、光学媒体ディスク、揮発性メモリ・コンポーネント(例えば、DRAM若しくはSRAM)、または不揮発性メモリ・コンポーネント(例えばフラッシュ・メモリ若しくはハード・ドライブ)の1つ以上のような非一時的なコンピュータ可読媒体)上のコンピュータ実行可能命令として実装することができ、コンピュータ(例えば、スマートフォン、またはコンピューティング・ハードウェアを含む他のモバイル・デバイスを含む、如何なる商用可能なコンピュータ)上で実行することができる。コンピュータ可読記憶ストレージ媒体という用語は、変調データ信号のような通信接続を含まないことが容易に理解されよう。開示される技術を実施する如何なるコンピュータ実行可能命令は、開示される実施形態の実施の間で生成および使用される如何なるデータと同様に、1つ以上のコンピュータ可読媒体(例えば、伝搬された信号を排除する非一時的コンピュータ可読媒体)に格納することができる。例えば、コンピュータ実行可能命令は、専用のソフトウェア・アプリケーション、またはウェブ・ブラウザまたは他のソフトウェア・アプリケーション(例えば遠隔コンピューティング・アプリケーション)を介してアクセスまたはダウンロードされるソフトウェア・アプリケーションの一部とすることができる。このようなソフトウェアは、例えば、単一のローカル・コンピュータ(例えば、如何なる適切な商用のコンピュータ)上で、または、1つ以上のネットワーク・コンピュータを使用しているネットワーク環境(例えば、インターネット、ワイド・エリア・ネットワーク、ローカル・エリア・ネットワーク、クライアント・サーバー・ネットワーク(例えばクラウド・コンピューティング・ネットワーク)、またはこの種の他のネットワークを介して)において、実行することができる。
【0029】
明確化のために、ソフトウェア・ベースの実施についての特定の選択した態様のみを説明する。当該技術分野で公知である他の詳細については省略する。例えば、開示する技術が如何なる特定のコンピュータ言語またはプログラムにも限定されないことが理解されるべきである。例えば、開示する技術は、C++、Java(登録商標)、Perl、JavaScript(登録商標)、AdobeFlashまたは他の如何なる適切なプログラミング言語で記述されるソフトウェアによって実施することができる。同様に、開示する技術は、如何なる特定のコンピュータまたはハードウェアの種別にも限定されない。適切なコンピュータおよびハードウェアについての特定の詳細は公知であり、本開示において詳細には記載する必要がないものである。
【0030】
また、本明細書に記載する如何なる機能も、ソフトウェアの代替として1つ以上のハードウェア・ロジック・コンポーネントに少なくとも部分的によって実行できることも理解されるべきである。例えば、そして、限定するものではないが、使用可能な例示の種別のハードウェア・ロジック・コンポーネントは、フィールド・プログラム可能ゲート・アレイ(FPGA)、プログラム特定集積回路(ASIC)、プログラム特定スタンダード・プロダクツ(ASSP)などを含む。更に、如何なるソフトウェア・ベースの実施形態(例えば、開示する如何なる方法をもコンピュータに実行させるためのコンピュータ実行可能命令を含む)も、アップロードすることができる、ダウンロードすることができる、または、適切な通信手段を通じて遠隔でアクセスすることができる。このような適切な通信手段は、例えば、インターネット、ワールド・ワイド・ウェブ、イントラネット、ソフトウェア・アプリケーション、ケーブル(光ファイバ・ケーブルを含む)、磁気通信、電磁気通信(RF、マイクロ波および赤外線通信を含む)、電子通信、または他のこの種の通信手段を含む。
【0031】
本明細書において、「パブリッシャ」は、少なくとも1つのアプリケーションのパブリッシャ、即ち、カスタマへのアプリケーションの公表を制御および導出する当事者として定義される。アプリケーションは、通常、エンドユーザに向けられる1またはそれ以上のプログラムであると理解することができる。パブリッシャのアプリケーション(1または複数)は、通例、オンライン・ストアを通じてエンドユーザのコンピューティング・デバイスにダウンロードするために、エンドユーザに利用可能である。モバイル・デバイスの場合、このようなストアは、Marketplace(Windows(登録商標)Phone Apps+Games Store)、iTunes、Google Play、および他の類似のサイトを含む。パブリッシャはそのアプリケーションの公表を制御および導出するために、これは要件ではないが、通常はアプリケーションのオーナーまたは権利のライセンシである。場合によっては、アプリケーションのパブリッシャはまたアプリケーションの開発者、すなわち、アプリケーションを書いた1またはそれ以上の個人でもあるが、これもまた要件ではない。
【0032】
第1の識別のシナリオでは、各パブリッシャのアプリケーション(1または複数)がモバイル・デバイスに関連付けられるときに、各パブリッシャによってモバイル・デバイス(およびモバイル・デバイスのユーザ)を識別するのを可能にするが、どのパブリッシャのアプリケーションも関連付けられていないモバイル・デバイスの識別子には、各パブリッシャによっては容易にアクセスできないことが望まれる。加えて、各パブリッシャは異なる識別子を有するために、パブリッシャは識別子を相互に意味深長には共有できない。各パブリッシャは、適切なときに、モバイル・デバイス(およびそのユーザ)へのコンテンツを尚も対象とすることができるものの、そのようにする際のパブリッシャの行動は、ユーザのプライベート情報を不注意にパブリックにすることはしない。更に、モバイル・デバイス・ユーザの如何なる識別子も、アノニマス識別子であり、パブリッシャによって、第1および第2のモバイル・デバイス・ユーザの間を識別可能とするものの、それらユーザはパブリッシャに対し匿名のままである。
【0033】
説明する方法によれば、モバイル・デバイス上のメモリに格納されるプライベート情報は、パブリック識別子を供給するためにハッシュされて、また、パブリック識別子はアプリケーションに供給される。このようにして、モバイル・デバイスおよびユーザは、モバイル・デバイス上のアプリケーションに対し適切に識別されることができ、また、モバイル・デバイスまたはユーザに向けられるプリケーションのパブリッシャからのコンテンツは、適切に導出することができる。
【0034】
図4を参照する。特定の実装態様を例示する。例示のモバイル・デバイス400では、オペレーティング・システム402は、当該デバイス上に存在するアプリケーション404、識別コンポーネント406およびメモリ408の間の相互作用を提供する。アプリケーション404は、例えば識別コンポーネント406に向けられた関数コール内で、パブリック識別子を要求する。識別コンポーネントは、モバイル・デバイスおよびユーザを識別するプライベート・データにアクセスすることによって要求に応答し、次いで、格納されたパブリック・データを用いてハッシュ・エンジン414内でプライベート・データをハッシュして、その結果、パブリック識別子を生成することができる。1つの適切なハッシュ・アルゴリズムは、HMAC−SHA256であるものの、1つ以上の他のアルゴリズムもまた使用することができる。ハッシュに加えて、プライベート情報の秘密性を保存する他の動作もまた使用することができる。パブリック識別子は、次いでアプリケーションに戻される。
【0035】
特定の実装態様では、プライベート・データはプライベート・アノニマス識別子を含み、例えばデバイスで用いられるサービスのユーザ・アカウントによって、デバイスのユーザを識別する。プライベート・データはまた、デバイスを識別するプライベート・デバイスの一意の識別子を含む。図4に示される実装態様では、格納されたパブリック・データは、パブリッシャ識別子(パブリッシャID)を含む。このパブリッシャIDは、パブリッシャに割り当てられるパブリッシャ名または他の指名者とすることができる。
【0036】
1つのシーケンスでは、プライベート・デバイス一意識別子は、パブリッシャ識別子と共にハッシュされて、パブリック識別子、この場合はパブリック・デバイス一意識別子を作り出す。他のシーケンスでは、プライベート・アノニマス識別子は、パブリッシャ識別子と共にハッシュされて、第2のパブリック・アノニマス識別子を作り出す。図示した実装態様では両方のシーケンスが用いられる。即ち、プライベート・デバイス一意識別子が1つのメモリ位置(例えば、412、410のそれぞれ)からアクセスされ、プライベート・アノニマス識別子が異なるメモリ識別子(例えば、412、410のそれぞれ)からアクセスされ、それぞれがパブリッシャ識別子との別個のハッシュ動作でハッシュされ、その結果としてのパブリック識別子は実際のところ2つのパブリック識別子、即ち、パブリック・デバイス一意識別子およびパブリック・アノニマス識別子である。
【0037】
これらの関係は、次のテーブルにまとめられる。
【0038】
【表1】
【0039】
図7に例示の方法が有するステップを示す。ステップ700では、パブリック識別子についての関数コールが識別コンポーネントによって受け取られる。ステップ702では、識別コンポーネントは、パブリッシャIDを、デバイス内の第1メモリ位置(例えば、メモリ位置410)から要求することによって、また、デバイス内の第2メモリ位置(例えばメモリ位置412)からプライベート・データを要求することによって、関数コールに応答する。ステップ704では、識別コンポーネントは、次いで、パブリッシャIDおよびプライベート・データに対しハッシュ動作を実行することによって、パブリック識別子を生成する。ステップ706では、パブリック識別子は、アプリケーションに戻される。
【0040】
代替の方法では、第3メモリ位置(図には特に示さない)があり、プライベート・データの第2ピースが格納される。第2ハッシュ動作(第1ハッシュ動作と同一または、好ましくはこれと異なる)がパブリッシャIDおよびプライベート・データの第2ピースに対し実行され、第2パブリック識別子を作り出す。第2パブリック識別子はまた、アプリケーションに戻される。
【0041】
第2識別シナリオでは、アプリケーションのテストを求めているパブリッシャは、識別子をセットする機能を必要とし、その結果、動作中のモバイル・デバイス上のアプリケーションのテストを遂行することができる。例示の実装態様を図5に示す。プロセス・ブロック500では、当局(authority)は、各パブリッシャに識別子を割り当てる。プロセス・ブロック502では、開発者がアプリケーションの開発を行うときに、開発者はソフトウェア開発者ツールのパブリッシャ識別子を特定することができる。プロセス・ブロック504では、開発者は、アプリケーションのテストが望まれることを示すときに、マニフェストが更新されてパブリッシャ識別子を含める。プロセス・ブロック506では、パブリッシャ識別子と共にアプリケーションのコピーが、識別したモバイル・デバイスに、または別のコンピューティング・デバイス上で動作しているデバイスのエミュレータに展開される。プロセス・ブロック508では、アプリケーションの開始により、モバイル・デバイスに新規のパブリック識別子(1または複数)を受信させる。このように、如何なる従来の対応するパブリック識別子もが更新される。
【0042】
プロセス・ブロック508でモバイル・デバイスまたはエミュレータによって受信されたパブリック識別子(1または複数)は、アプリケーションのテスト・コピーに対してのみ動作可能である。つまり、一旦テストが完了すると、開発者またはパブリッシャが次いで、ユーザがダウンロードするのに利用可能なアプリケーションとして完全に公表するためにアプリケーションを当局にサブミットする場合に、図6のプロセスが次いで行われる。
【0043】
説明する識別方法を用いてモバイル・デバイスに新規のアプリケーションをダウンロードする例示の実施について図6に示す。プロセス・ブロック600では、当局は、マニフェスト内のパブリッシャ識別子をストアに送信する。プロセス・ブロック602では、ストアは、新規のアプリケーションをマニフェストと共にモバイル・デバイスに転送する。プロセス・ブロック604では、モバイル・デバイスは、ファイルであるマニフェストをオープンし、パブリッシャ識別子を読み取り、そして、パブリッシャ識別子をデバイスに格納する。プロセス・ブロック606では、識別コンポーネントは、パブリッシャ識別子を読み取り、上記に説明した方法にしたがってパブリッシャ識別子をハッシュ・アウトする。プロセス・ブロック608では、新規のパブリック・デバイス一意識別子および新規のパブリック・アノニマス識別子はデバイス上のアプリケーションに戻される。
【0044】
開示する方法、装置、およびシステムは、如何なる形であれ限定するものとして解釈してはならない。その代わりとして、本開示は、単独、並びに様々な相互の組み合わせおよび下位組み合わせで、様々な開示の実施形態について全ての新規および非自明な特徴および態様に向けられる。開示の方法、装置、およびシステムは、如何なる特定の態様若しくは特徴、またはこれらの組み合わせに限定されない。また、開示の実施形態は如何なる1つ以上の特定の有利な点が存在し、または課題が解決されることを必要としない。
【0045】
開示する原則を適用することができる多くの見込まれる実施形態という観点では、例示の実施形態は好適な例示に過ぎず、保護範囲を限定するものとしてはならないことが認識されるべきである。寧ろ、本範囲は、次の特許請求の範囲によって規定される。従って、これらの特許請求の範囲における範囲および趣旨内にあるものと我々は主張する。
図1
図2
図3
図4
図5
図6
図7