(57)【特許請求の範囲】
【請求項１】
アプリケーションをテストするためにオペレーティングシステムによって実施される方法であって、
情報に関して前記アプリケーションから要求を受信すること、
前記情報として前記アプリケーションに置換情報を提供すること、
アプリケーション情報を外部コンピューティングデバイスに出力するための前記アプリケーションからの要求を受信すること、
前記アプリケーション情報内に前記置換情報が含まれているかどうかを判別するために、前記アプリケーション情報を検査すること、
前記アプリケーション情報を前記外部コンピューティングデバイスに出力すること、
を含む、方法。
【請求項２】
コンピューティングデバイス内のメモリ上に記憶されたオペレーティングシステムおよび前記アプリケーションを実行している少なくとも１つのプロセッサによって少なくとも部分的に実行される、請求項１に記載の方法。
【請求項３】
前記情報は機密情報である、請求項２に記載の方法。
【請求項４】
前記アプリケーションの証明または検証プロセス中に実行される、請求項３に記載の方法。
【請求項５】
前記アプリケーション情報を前記外部コンピューティングデバイスに出力する前に、ユーザの承諾の指示を取得することをさらに含む、請求項１に記載の方法。
【請求項６】
前記情報に関して前記アプリケーションから前記要求を受信することは、前記アプリケーションが第１のアプリケーションプログラミングインターフェースを呼び出すことを含み、出力するための前記アプリケーションからの前記要求を受信することは、前記アプリケーションが第２のアプリケーションプログラミングインターフェースを呼び出すことを含む、請求項１に記載の方法。
【請求項７】
前記検査することは、前記アプリケーション情報内の前記置換情報について、前記外部コンピューティングデバイスに出力されることになる前記アプリケーション情報を記憶しているバッファを検索することを含む、請求項６に記載の方法。
【請求項８】
前記置換情報は、偽造された情報および記録された情報のうちの１つから選択される、請求項７に記載の方法。
【請求項９】
受信することおよび判別することは、オペレーティングシステムによって少なくとも部分的に実行され、
前記アプリケーションは電子インタラクティブゲームを含み、
前記情報はビデオ信号を含む、
請求項８に記載の方法。
【請求項１０】
前記コンピューティングデバイスは前記ビデオ信号を取得するためのカメラを含む、請求項９に記載の方法。
【請求項１１】
ビデオ信号を取得するための少なくとも１つのカメラと、
少なくとも１つのプロセッサと、
プロセッサ可読命令、およびコンピューティングデバイスへのネットワークアドレスを有するアプリケーション、ならびに、ビデオ信号の少なくとも一部を前記ネットワークアドレスにある前記コンピューティングデバイスに転送できるようにするオペレーティングシステム、を記憶するための少なくとも１つのプロセッサ可読メモリと、を備える装置であって、
前記少なくとも１つのプロセッサは前記オペレーティングシステムの前記プロセッサ可読命令および前記アプリケーションを実行して、
前記オペレーティングシステムによって、前記ビデオ信号に関する要求を前記アプリケーションから受信し、
前記オペレーティングシステムによって、置換ビデオ信号を前記アプリケーションに提供し、
前記オペレーティングシステムによって、アプリケーション情報を外部コンピューティングデバイスに出力するための前記アプリケーションからの要求を受信し、
前記オペレーティングシステムによって、前記置換ビデオ信号が前記アプリケーション情報に含まれるかどうかを判別するために、前記アプリケーション情報を検査し、
前記オペレーティングシステムによって、前記アプリケーション情報を前記外部コンピューティングデバイスに出力する、
装置。
【請求項１２】
前記アプリケーション情報を記憶するためのトラフィックバッファをさらに含み、前記オペレーティングシステムは、前記置換ビデオ信号が前記アプリケーション情報内に記憶されているかどうかを判別するために、前記トラフィックバッファに記憶された前記アプリケーション情報を検査する、請求項１１に記載の装置。
【請求項１３】
前記装置はゲームコンソール内に含まれ、前記アプリケーションは電子インタラクティブゲームである、請求項１２に記載の装置。
【請求項１４】
前記ビデオ信号についての前記アプリケーションからの前記要求は、前記ビデオ信号を取り出すためのアプリケーションプログラミングインターフェースへの呼び出しを含み、アプリケーション情報を前記外部コンピューティングデバイスに出力するための前記アプリケーションからの前記要求は、前記アプリケーション情報を前記コンピューティングデバイスの前記ネットワークアドレスに出力するためのアプリケーションプログラミングインターフェースへの呼び出しを含む、請求項１１に記載の装置。
【請求項１５】
前記少なくとも１つのプロセッサは、前記アプリケーションが前記外部コンピューティングデバイスに出力される前に、承諾の指示をさらに取得するために、前記オペレーティングシステムおよび前記アプリケーションの前記プロセッサ可読命令を実行する、請求項１１に記載の装置。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピューティングデバイスは、ユーザが他者に流布することを意図していない可能性がある情報を、ユーザから取得することができる。ユーザは、こうした情報の他者への流布の許可に関して選択することができる。コンピューティングデバイスは、ユーザの選択に基づいて、その後、情報を流布することができる。しかしながら、こうした選択に関するクエリは、しばしばユーザの体験を中断および／または混乱させ、不要な可能性がある。
【０００２】
代替として、ユーザの体験前または体験中に、情報をどのように流布できるかまたはできないかを示す法的通知を掲示することができる。しかしながら、こうした法的通知の掲示も、ユーザの体験を中断および混乱させ、ユーザが情報に基づく決定を行う際に重要または理解可能な情報を法的通知内に提供しない可能性がある。
【０００３】
コンピューティングデバイスに関するアプリケーションは、典型的にはコンピューティングデバイスの製造業者によって作成またはコード化されない。したがって、コンピューティングデバイスの製造業者には、要求された情報を用いてアプリケーションが何を実行するかはわからない。ネットワーク上でアプリケーションが通信することをコンピュータデバイスの製造業者が知っている場合であっても、コンピュータ製造業者には、ネットワーク上で何の情報が伝送されるかはわからない。
【発明の概要】
【課題を解決するための手段】
【０００４】
技術は、アプリケーションが特定の情報を外部コンピューティングデバイスに転送するかどうかをテストするための方法を含む。アプリケーションが特定の情報を外部コンピューティングデバイスに転送していないという検証（または証明）は、転送が発生していないことを検証が示すことから、こうした情報を転送するための承諾を求めるためのユーザに対する中断を削減する。承諾のためのユーザへのプロンプトを少なくすることで、ユーザの体験を向上させることができる。アプリケーションが特定の情報を転送している旨が決定された場合、どのような特定の情報がどこに転送され得るかに関して正確かつ詳細な、ユーザからの承諾のためのプロンプトを提供することができる。実施形態において、ユーザは、何らかの転送が発生する前に、コンピューティングデバイスからのビデオ信号などの機密情報の転送について承諾することになる。実施形態において、機密情報は、ユーザのビデオクリップとするか、あるいは、アドレス情報または電話番号などの個人的に識別可能な情報、またはユーザが流布されることを意図しない他の情報を含む、メタデータとすることができる。
【０００５】
ゲームなどのアプリケーションがコンピューティングデバイスにロードされたとき、アプリケーションが外部コンピューティングデバイスと通信または接続することになるかどうかを決定するために、ネットワークセキュリティ許可リスト（NSAL）がアプリケーションから読み取られる。ＮＳＡＬは、アプリケーションがコンピューティングデバイス上で実行しているときに通信可能な、許可されたネットワークアドレスを含むことができる。ＮＳＡＬがいずれのネットワークアドレスも含まない場合、外部に機密情報を転送することに関して、アプリケーションはそのように実行することができないため、ユーザから承諾を得る必要はない。たとえＮＳＡＬを伴う場合であっても、アプリケーションは、機密情報が外部コンピュータに転送されないことをテストまたは検証され得る。さらに、コンピューティングデバイスが接続性を有することをＮＳＡＬが示す場合、いずれの特定の機密情報がいずれのネットワークアドレスに転送されるかの検証を行うことができる。
【０００６】
アプリケーションがテストされる、および／または検証（または証明）プロセス中の場合、ビデオ信号などの情報を戻すアプリケーションプログラミングインターフェース（API）へのアプリケーション呼び出しを遮断するために、シミングが使用される。実施形態において、シムまたはシミングとは、ＡＰＩをトランスペアレントに遮断して渡されたパラメータを変更するか、オペレーション自体を処理するか、またはコンピューティングオペレーションを他の場所にリダイレクトする、小ライブラリを指す。実施形態において、アプリケーション検証器も使用可能である。要求された機密情報を、見張りまたはカナリアを生成するためにそれらのＡＰＩから記録または偽造された情報と交換または置換することができる。たとえば、アプリケーションが「ＧｅｔＵｓｅｒＩＤ」ＡＰＩを呼び出した場合、アプリケーションは典型的には「ＤａｖｉｄＣｈｒ」などのユーザＩＤを受信することになる。シミングを使用して、「ＸＹＺＺＹ」などの置換された情報を代わりにアプリケーションに戻すことができる。代替として、アプリケーションは、コンピューティングデバイス内のカメラにユーザの画像を要求することができる。ユーザの画像の代わりに、コーヒーの写真を要求側アプリケーションに提供することができる。
【０００７】
テストおよび／または検証中、別のシムがアプリケーションのネットワークトラフィックを分析して、実施形態においてカナリア／見張りがいつ存在したかを決定することができる。カナリア／見張りが存在した場合、ＡＰＩ（およびそれらに渡されたソケット／ハンドル）は、カナリアがどのネットワークアドレスに伝送されたかを識別する。
【０００８】
偽の記録情報（見張りキャプチャ）または偽造情報（カナリア偽造）が機密情報を置換するために使用されるかどうかは、ＡＰＩおよびアプリケーションに依存する。いくつかのアプリケーションは機密情報を解析することができる。たとえば、電子インタラクティブゲーム（ゲーム）などのアプリケーションは、自身のスケレタルトラッキングを実行するために、カメラから戻されたビデオ信号上でイメージ処理を実行することができる。実施形態において、ビデオ信号を提供することは、ゲームが普通に挙動できるようにすることであるため、ビデオ信号などの偽の記録情報をトラフィック内で記録および検索しなければならない場合がある。
【０００９】
実施形態において、偽の記録情報（トラフィック内で容易に検索し得る動かないオブジェクトのビデオなど）を提供することができる。実施形態において、シムは、アプリケーションが逸出しているかどうかおよびその場所を、リアルタイムで検出することができる。これにより、アプリケーション上で診断を実行することができる。たとえばクラッシュダンプを生成して、分析のためにアプリケーション開発者に送信することができる。
【００１０】
アプリケーションをテストするための方法は、情報に関してアプリケーションから要求を受信することを含む。置換情報が情報としてアプリケーションに提供される。アプリケーション情報を外部コンピューティングデバイスに出力するためのアプリケーションからの要求が受信される。アプリケーション情報内に置換情報が含まれているかどうかを判別するために、アプリケーション情報が検査される。アプリケーション情報は外部コンピューティングデバイスに出力される。
【００１１】
装置実施形態は、ビデオ信号を取得するための少なくとも１つのカメラと、少なくとも１つのプロセッサと、プロセッサ可読命令、およびコンピューティングデバイスへのネットワークアドレスを有するアプリケーション、を記憶するための少なくとも１つのプロセッサ可読メモリを、備える。少なくとも１つのプロセッサ可読メモリは、ビデオ信号の少なくとも一部をネットワークアドレスにある外部コンピューティングデバイスに転送できるようにするオペレーティングシステムも記憶することができる。プロセッサは、オペレーティングシステムのプロセッサ可読命令およびアプリケーションを実行し、オペレーティングシステムによって、ビデオ信号に関する要求をアプリケーションから受信する。オペレーティングシステムは、置換ビデオ信号をアプリケーションに提供する。アプリケーション情報を外部コンピューティングデバイスに出力するためのアプリケーションからの要求も、オペレーティングシステムによって受信される。オペレーティングシステムは、アプリケーション情報を検査して、置換ビデオ信号がアプリケーション情報に含まれているかどうかを判別する。オペレーティングシステムは、アプリケーション情報を外部コンピューティングデバイスに出力する。
【００１２】
別の実施形態において、１つまたは複数のプロセッサ可読メモリは、実行された場合、１つまたは複数のプロセッサに方法を実行させる命令を含む。方法は、情報および情報に関する要求をアプリケーションから受信することを含む。情報は置換情報と交換される。置換情報は情報としてアプリケーションに提供される。アプリケーション情報をネットワークアドレスにあるコンピューティングデバイスに出力するためのアプリケーションからの要求が受信される。置換情報がアプリケーション情報に含まれるかどうかを判別するために、アプリケーション情報が検索される。アプリケーション情報は、ネットワークアドレスにある外部コンピューティングデバイスに出力される。
【００１３】
本概要は、以下の発明を実施するための形態で詳細に説明される概要の選択を、簡略化された形で紹介するために提供している。本概要は、請求される主題の主要な特徴または不可欠な特徴を識別することは意図されておらず、また、請求される主題の範囲を決定する際の補助として使用されることも意図されていない。
【図面の簡単な説明】
【００１４】
【図１】例示のシステムアーキテクチャの高水準ブロック図である。
【図２】例示のソフトウェアアーキテクチャの高水準ブロック図である。
【図３】例示のオペレーティングシステムおよびアプリケーションにおける、例示のネットワーク管理およびユーザインターフェースソフトウェア構成要素の高水準ブロック図である。
【図４】アプリケーションをテストするための例示の方法のフローチャートである。
【図５Ａ】アプリケーションがビデオ信号などの情報を外部コンピューティングデバイスに出力するかどうかを判別するための、例示の方法のフローチャートである。
【図５Ｂ】アプリケーションが外部コンピューティングデバイスに情報を出力したときに承諾の指示を取得するための、例示の方法のフローチャートである。
【図６】例示のゲームおよびメディアシステムの等角図である。
【図７】図６に示されたゲームおよびメディアシステムの構成要素の例示の機能ブロック図である。
【図８】例示のコンピュータデバイスである。
【発明を実施するための形態】
【００１５】
技術は、機密情報などのいずれの情報をアプリケーションが外部コンピューティングデバイスに転送するかをテストするための方法を含む。アプリケーションが機密情報を外部コンピューティングデバイスに転送していないという検証（または証明）は、転送が発生していないことを検証が示すことから、こうした情報を転送するための承諾を求めるためのユーザに対する中断を削減する。承諾のためのユーザへのプロンプトを少なくすることで、ユーザの体験を向上させることができる。アプリケーションが機密情報を転送している旨が決定された場合、いずれの機密情報がどこに転送され得るかにおける正確かつ詳細な、ユーザからの承諾のためのプロンプトを提供することができる。
【００１６】
機密情報を戻すＡＰＩへのアプリケーション呼び出しを遮断するために、シミングが使用される。要求された機密情報を、見張りまたはカナリアを生成するためにそれらのＡＰＩから偽の記録情報または偽造情報などの置換情報と交換することができる。同様に、別のシムによって、アプリケーションのネットワークトラフィックを分析し、置換情報がアプリケーションの送出トラフィック内に存在するかどうかを判別することができる。置換情報が存在する場合、ＡＰＩは、置換情報を含むアプリケーション情報をどこに送信するよう意図されているかを識別する。
【００１７】
シミングを使用することによって、機密情報を見つかりにくくする可能な暗号化の前に、ネットワークトラフィックを分析することができる。たとえばアプリケーションは、ハイパーテキスト転送プロトコルセキュア（HTTPS）を使用して、外部コンピューティングデバイスと通信することができる。実施形態は、情報を暗号化するためのセキュアソケットレイヤ移送レイヤセキュリティ（SSL/TLS）を要求するＡＰＩを遮断することによって、これを回避する。
【００１８】
コンピューティングデバイスは、アプリケーションが要求できる使用可能な機密情報を記憶または有することができる。たとえば、コンソール内のカメラからのライブビデオ信号は、アプリケーションによって要求された機密情報であり得る。ゲームなどのアプリケーションは、ビデオ信号内のユーザの顔をゲームのキャラクタに重ねるなどの処理のために、ビデオ信号を外部コンピューティングデバイスに転送することを希望する場合がある。
【００１９】
ゲームがユーザの意図に反して機密情報を外部コンピューティングデバイスに伝送する可能性があるため、コンソールは、ゲームが機密情報を使用できるようにする前に、ユーザの承諾を求めることができる。しかしながらユーザは、機密情報の転送を承諾するという選択をしなければならないことが、ゲームプレイの「面白さ」の側面を妨げるため、これを希望しない場合がある。
【００２０】
技術は、ユーザの承諾なしにアプリケーションが「家に電話をする」（機密情報を外部コンピューティングデバイスに転送する）というリスクなしに、機密情報をアプリケーションに提供する。ＮＳＡＬを使用すると、コンピューティングデバイスは、機密情報を外部コンピューティングデバイスに転送する機能を有さないアプリケーションのクラスを識別することができる。ＮＳＡＬは、オペレーティングシステムがアクセス可能なアプリケーション内に記憶された外部コンピューティングデバイスへの１つまたは複数のネットワークアドレスを含むことができる。実施形態では、ＮＳＡＬは、コンピューティングデバイス開発者とアプリケーション開発者との間で同意済みの、ネットワークアドレスのリストまたは複数のネットワークアドレスである。ネットワークアドレスを含まないことのできる、ＮＳＡＬを有するそれらのアプリケーションは、信頼できるものであり、機密情報をアプリケーションに公開することを希望するコンピューティングデバイスに、使いやすさと言う利点を提供することが可能である。多くのアプリケーションは、マルチプレーヤゲームまたは広告を含まない可能性があるため、それらのアプリケーションは外部コンピューティングデバイスにアクセスする必要がない。
【００２１】
一般に、アプリケーションがロードされると、コンピューティングデバイスは、ＮＳＡＬを読み取り、アプリケーションが外側の世界とどのような接続性を有するかを判別する。ＮＳＡＬが空の（接続性がない）場合、アプリケーションはユーザの機密情報を残りの世界に伝えることができないため、安全を宣言することが可能であり、承諾を得る際にユーザを中断させる必要がない。たとえＮＳＡＬが空であるかまたはネットワークアドレスを含む場合であっても、コンピューティングデバイスの製造業者は、特定の機密情報が特定のアプリケーションによって外部コンピューティングデバイスに転送されているか否かを検証または証明するために、アプリケーションをテストすることが必要な場合がある。
【００２２】
図１は、コンピューティングデバイス１０７上で記憶および実行されるアプリケーション１０７ａが、コンピューティングデバイス１０１などの外部コンピューティングデバイスに機密情報１０３を転送するかどうかをテストする、システムまたは装置１００の高水準ブロック図である。実施形態において、テストは、アプリケーション１０７ａの証明または検証プロセス中に実行可能である。実施形態において、コンピューティングデバイス１０７は、アプリケーション１０７ａをテストするために使用されるテスト機器に含められる。この実施形態において、ネットワーク１０５、コンピューティングデバイス１０１および／または１１０は含まれなくてもよい。
【００２３】
代替として、テストは、機密情報１０３がコンピューティングデバイス１０１に転送される前に、コンソールなどのコンピューティングデバイス１０７上でのアプリケーション１０７ａの実行中に、実行することができる。この実施形態において、アプリケーション１０７ａが機密情報１０３の転送を意図することをテストが示した後、情報を転送するためのユーザからの承諾の指示が取得されない限り、機密情報１０３は転送されない。実施形態において、コンピューティングデバイス１０７は、本明細書で説明するコンピューティングデバイス１０７のメモリに記憶された、アプリケーション１０７ａ（ＮＳＡＬ  １１２を含む）、承諾１０７ｂ、置換１０７ｃ、およびネットワーク検査器１０７ｄなどの、ソフトウェア構成要素を含む。
【００２４】
機密情報１０３は、コンピューティングデバイス１０７のメモリ内にデジタル情報としても記憶される。代替実施形態において、機密情報１０３は、コンピューティングデバイス１０７の電源がオンの場合のカメラ１１１からのビデオ信号など、コンピューティングデバイス１０７の動作中に使用可能な場合がある。実施形態において、機密情報１０３は、１人または複数のユーザの画像またはビデオとすることができる。他の実施形態において、機密情報は、ユーザのビデオクリップとするか、あるいは、アドレス情報または電話番号などの個人的に識別可能な情報を含むメタデータ、または、単独または組み合わせてコンピューティングデバイス１０７から流布されることがユーザによって意図されていない他の情報とすることができる。たとえば機密情報１０３は、コンピューティングデバイス１０７内のカメラ１１１からのビデオ信号とすることができる。ビデオ信号は、コンピューティングデバイス１０７上でゲーム（アプリケーション１０７ａ）をプレイ中のユーザのビデオなどの、１人または複数のユーザのフレームまたは画像を含むことができる。
【００２５】
実施形態において、機密情報１０３は、ユーザからの明白な承諾なしにはユーザから取得されない。機密情報１０３は、ユーザが見ることも可能であり、ユーザによる編集が可能である。実施形態において、機密情報１０３は、機密情報１０３の暗号化バージョンをメモリ内に記憶すること、ならびにパスワードによる機密情報へのアクセスを可能にすることによっても、セキュアとなり得る。
【００２６】
実施形態において、コンピューティングデバイス１０７は、本明細書で説明するネットワーク１０５によって、リモートの物理位置に位置するコンピューティングデバイス１０１と通信する。コンピューティングデバイス１０１は、実施形態において、コンピューティングデバイス１０７の外部にあるとみなされる。実施形態において、アプリケーション１０７ａは、サービスを提供することができるコンピューティングデバイス１０１に、機密情報１０３を転送することを希望する場合がある。アプリケーション１０７ａは、アプリケーションサーバ１０１ａからのサービスのために、コンピューティングデバイス１０１にビデオ信号（またはビデオのフレーム）を転送することを希望する、ゲームとすることができる。たとえばアプリケーションサーバ１０１ａは、ビデオ信号内のユーザの顔をゲーム内のキャラクタに重ねることなどの、グラフィクスオーバーレイサービスまたは機能を提供することができる。
【００２７】
実施形態において、コンピューティングデバイス１０７は、アプリケーション１０７ａが、コンピューティングデバイス１０１などの外部コンピューティングデバイスに機密情報１０３を転送できるようにするために、ユーザによる承諾の指示に応答して、機密情報１０３をコンピューティングデバイス１０１にも提供する。ユーザがクエリに応答してコンピューティングデバイス１０７に明白に承諾を送った場合、その承諾の指示を、コンピューティングデバイス１０７内のメモリのアドレスにデジタル値として記憶することができる。
【００２８】
実施形態において、コンピューティングデバイス１０１はサーバソフトウェア構成要素を有するサーバとすることが可能であり、コンピューティングデバイス１０７はコンピューティングデバイス１０１のクライアントとすることが可能である。別の実施形態において、コンピューティングデバイス１１０および１０７はピアである。コンピューティングデバイス１０１、１０７、および１１０のピアツーピア（P2P）実施形態において、各コンピューティングデバイスは、他方のクライアントまたはサーバとして働くことができる。
【００２９】
コンピューティングデバイス１０１および１０７は、本明細書で説明するネットワーク１０５によって通信可能である。他の実施形態において、コンピューティングデバイス１１０は、ネットワーク１０５によってコンピューティングデバイス１０１および１０７と通信する。実施形態において、ネットワーク１０５は、単独または組み合わせて、インターネット、ワイドエリアネットワーク（WAN）、またはローカルエリアネットワーク（LAN）とすることができる。実施形態において、コンピューティングデバイス１０１、１０７、および／または１１０は、伝送制御プロトコル／インターネットプロトコル（TCP/IP）などの１つまたは複数のプロトコルを使用して、情報を転送する。実施形態において、コンピューティングデバイス１０７は別のネットワークに含まれる。情報は、ネットワーク１０５内でワイヤによって、および／またはワイヤレスに、転送可能である。
【００３０】
代替実施形態において、装置１００は、情報を提供および受信するための、より多くのまたはより少ないコンピューティングデバイスおよび／またはサーバを含む。実施形態において、コンピューティングデバイス１０１、コンピューティングデバイス１１０、および／またはコンピューティングデバイス１０７は、図８に示され本明細書で説明する、例示のハードウェア構成要素を有するコンピューティングデバイス１８００に対応する。
【００３１】
実施形態において、コンピューティングデバイス１０７は、本明細書で説明し図６および図７に示された、コンソール内に含まれる。代替実施形態において、コンピューティングデバイス１０１および／または１０７は、図８に示され本明細書で説明する、コンピューティングデバイスである。代替実施形態において、コンピューティングデバイス１０７は、少なくともセル式電話、モバイルデバイス、埋め込み型システム、ラップトップコンピュータ、デスクトップコンピュータ、サーバ、および／またはデータセンタ内に、含めることができる。実施形態において、コンピューティングデバイス１０１はサーバおよび／またはデータセンタである。
【００３２】
実施形態において、コンピューティングデバイス１０１、１０７、および１１０は、デジタル情報、および／または本明細書で説明するプロセッサ可読命令を有するソフトウェア構成要素を記憶するための、１つまたは複数のプロセッサ可読メモリを含む。実施形態において、コンピューティングデバイス１０１、１０７、および１１０は、プロセッサ可読命令の実行または読み取り、およびデジタル情報の読み取りを行うための、１つまたは複数のプロセッサを含む。
【００３３】
図２は、アプリケーション２１１〜２１３などのアプリケーションが機密情報１０３を転送するかどうかをテストする、例示のソフトウェアアーキテクチャ２００の高水準ブロック図である。実施形態において、オペレーティングシステム（ＯＳ）２０５は、アプリケーションを検証または証明するために使用されるコンピューティングデバイス１０７に含めることができる。代替実施形態において、ＯＳ  ２０５は、機密情報が転送されているかどうかを判別し、その後機密情報を転送する前にユーザの承諾を得るために、本明細書で説明するコンソールなどのコンピューティングデバイス内で使用することができる。ＯＳ  ２０５は、アプリケーションが機密情報１０３を外部コンピューティングデバイスに転送しているかどうかをテストするための、承諾１０７ｂ、置換１０７ｃ、およびネットワーク検査器１０７ｄを含む。
【００３４】
実施形態において、ネットワーク管理２０８は、アプリケーション２１２が機密情報１０３を受信できるかどうかを判別するために、アプリケーション２１２のＮＳＡＬ  １１２を読み取る。
【００３５】
置換１０７ｃは、図２および図３に示されるように、アプリケーション２１２からの要求された機密情報を置換情報３１０と交換する。
【００３６】
次いで、ネットワーク検査器１０７ｄは、置換情報３１０に関して、外部コンピューティングデバイスに転送されるアプリケーション情報を検査または検索する。置換情報３１０が見つかった場合、機密情報１０３を転送するためのユーザの承諾が、転送が発生する前に取得される。
【００３７】
実施形態において、ＵＩ  ２０６内の承諾１０７ｂは、アプリケーション２１２から外部コンピューティングデバイスに機密情報１０３を転送するためのユーザからの（デジタル値としての）承諾の指示を取得および記憶する。実施形態において、承諾の指示は、アプリケーション２１２から機密情報１０３を転送するための承諾、またはアプリケーション２１２から機密情報１０３を転送するための承諾の拒否を含むことができる。実施形態において、アプリケーション２１１〜２１３は、１つまたは複数の電子インタラクティブゲームを含むことができる。
【００３８】
実施形態において、ＯＳ  ２０５およびアプリケーション２１１〜２１３は、ソフトウェア構成要素のうちの１つまたは複数を含む。実施形態において、ソフトウェア構成要素は、ソフトウェアプログラム、ソフトウェアオブジェクト、ソフトウェア関数、ソフトウェアサブルーチン、ソフトウェア方法、ソフトウェアインスタンス、スクリプト、および／またはコードフラグメントを、単独または組み合わせて含むことができる。たとえばＯＳ  ２０５は、ユーザインターフェース（UI）２０６、プロセス管理２０１、メモリ管理２０２、入力／出力（I/O）デバイス管理２０３、ファイル管理２０４、ネットワーク管理２０８、および保護２０７のうちの、１つまたは複数を含む。様々なＯＳソフトウェア構成要素によって実行可能な１つまたは複数の例示の機能を、以下で説明する。代替の実施形態において、以下で説明するソフトウェア構成要素のうちの、より多いかまたはより少ないソフトウェア構成要素および／または機能を使用することができる。代替実施形態において、承諾１０７ｂ、置換１０７ｃ、およびネットワーク検査器１０７ｄを、他のソフトウェア構成要素に含めることができる。
【００３９】
実施形態において、ＯＳ  ２０５の少なくとも一部が、１つまたは複数のプロセッサ可読メモリ内に記憶される。実施形態において、ＯＳ  ２０５の少なくとも一部が、図１に示されたコンピューティングデバイス１０７のプロセッサ可読メモリ内に記憶される。
【００４０】
プロセス管理２０１は、ユーザおよびシステムのプロセスを作成および削除する責務を負う。プロセス管理２０１は、プロセスの一時停止および再開の責務も負うことができる。プロセス管理２０１は、プロセスの同期および通信の責務も負う。プロセス管理２０１は、デッドロック処理の責務も負う。実施形態において、置換１０７ｃはプロセス管理２０１に含められる。本明細書で説明するように、置換１０７ｃは他のソフトウェア構成要素に含めることもできる。
【００４１】
メモリ管理２０２は、異なるタイプのメモリにおいて、メモリのいずれの部分が特定のソフトウェア構成要素またはアプリケーションによって現在使用されているかを追跡する責務を負う。メモリ管理２０２は、メモリスペースが使用可能になったときに、いずれのプロセスがメモリ内にロードされるかも決定する。メモリ管理は、必要に応じてメモリスペースの割り振りおよび割り振り解除も行う。
【００４２】
入力／出力（I/O）デバイス管理２０３は、Ｉ／Ｏデバイスを管理する責務を負う。たとえばＩ／Ｏデバイス管理２０３は、ビデオ信号を提供するカメラ１１１を管理する。実施形態において、特定のハードウェアの特異性はユーザから非表示とされる。実施形態において、デバイスドライバは特定のデバイスの特異性を認識している。たとえばＩ／Ｏデバイス管理２０３は、空きスペース管理、メモリ割り振り、断片化、取り外し、およびヘッドスケジューリングなどの、ディスク管理機能の責務を負うことができる。
【００４３】
ファイル管理２０４は、ファイルおよびディレクトリの作成および削除の責務を負う。ファイル管理２０４は階層型ファイルシステムをサポートすることができる。ファイル管理２０４は、ファイルを２次メモリ上にバックアップすることもできる。
【００４４】
ネットワーク管理２０８は、接続／ルーティング方法を提供することを含む、ネットワークとの通信の責務を負う。ネットワーク管理２０８は、他のコンピューティングデバイスへのデータ／プロセスのマイグレーションの責務も負うことができる。実施形態において、ネットワーク管理２０８は、本明細書で説明する、１つまたは複数の外部コンピューティングデバイスに送信されることになるアプリケーション情報を一時的に記憶するトラフィックバッファを検査または検索する、ネットワーク検査器１０７ｄを含む。
【００４５】
保護２０７は、ソフトウェア構成要素、プロセス、および／またはユーザの、コンピューティングデバイスのリソースへのアクセスを制御する責務を負う。たとえば保護２０７は、中央処理ユニット（CPU）などのリソース、サイクル、メモリ、ファイル、および／またはＩ／Ｏデバイスへのアクセスを制御する責務を負う。保護２０７は、ユーザ認証および通信の責務も負う。
【００４６】
ユーザインターフェース（UI）２０６は、音声、自然言語、文字、および／またはグラフィクスユーザインターフェースをユーザに提供し、ユーザの入力の受信および出力の提供の責務を負う。実施形態において、ＵＩ  ２０６は、コンピューティングデバイス１０７内のメモリのアドレスでのデジタル値としてのユーザからの承諾の指示の取得および記憶の責務を負う、承諾１０７ｂを含む。
【００４７】
図６および図７に示されたコンソール実施形態において、ユーザは、ジェスチャ、タッチ、またはボイスによって、入力をコンソール１００２に入力することができる。実施形態において、光学Ｉ／Ｏインターフェース１１３５はユーザのジェスチャを受信および変換する。実施形態において、コンソール１００２は、ユーザからのボイスおよび／またはジェスチャ入力を受信および変換するために、ユーザインターフェース２０６として自然ユーザインターフェース（NUI）を含む。実施形態において、フロントパネルサブアセンブリ１１４２は、本明細書で詳細に説明する、ユーザの承諾などのユーザのタッチまたはボイスを受信および変換するための、タッチ表面およびマイクロフォンを含む。実施形態において、ユーザインターフェース２０６は、１人または複数のユーザからコンソール１００２のマイクロフォンに提供された、ユーザが話した承諾を変換する。実施形態において、ＵＩ  ２０６は、ユーザからの承諾を求めるボイスを出力し、承諾または拒否などのユーザが話した答えを解釈する、ＮＵＩを含む。承諾などの話された答えは、その後メモリ内に承諾の指示として記憶することができる。
【００４８】
図３は、例示のオペレーティングシステム２０５内の例示のネットワーク管理２０８およびユーザインターフェース２０６、ならびにアプリケーション２１２の高水準ブロック図である。実施形態において、ＯＳ  ２０５は、カメラドライバ３００からのユーザのビデオ信号３０１などの、機密情報にアクセスすることができる。代替の実施形態において、ＯＳ  ２０５はメモリ内にデジタル情報として記憶された機密情報にアクセスすることができる。ＯＳ  ２０５は、要求３０２に応答して、ビデオ信号３０１などの機密情報をアプリケーション２１２に提供することができる。実施形態において、アプリケーション２１２は、第１のＡＰＩを呼び出すことによって要求を行うゲームである。
【００４９】
同様に、アプリケーション２１２は、ＯＳ  ２０５に要求およびアプリケーション情報３０４を提供することによって、アプリケーション情報を外部コンピューティングデバイスに転送することができる。次いでＯＳ  ２０５は、アプリケーション情報を、出力アプリケーション情報３０５として、アプリケーション２１２によって提供されたネットワークアドレスにある外部コンピューティングデバイスに転送することができる。実施形態において、要求およびアプリケーション情報３０４は、外部コンピューティングデバイスのネットワークアドレス、およびビデオ信号３０１（機密情報）または置換情報３１０を含むことができる。実施形態において、要求およびアプリケーション情報３０４は、アプリケーション２１２によって、伝送ＡＰＩなどの第２のＡＰＩを呼び出すことを含むことができる。
【００５０】
置換１０７ｃは、実施形態においてアプリケーション２１２がテストされているときに、ビデオ信号３０１などの機密情報を交換する、置換情報３１０を含む。置換情報３１０は、本明細書で説明する情報を含むことが可能であり、これは後に、ネットワーク管理２０８によって、および特にネットワーク検出器１０７ｄ内で、検索または検査することができる。実施形態において、置換情報３１０は動かないオブジェクトのビデオを含む。実施形態において、置換１０７ｃは、アプリケーション２１２によって機密情報を提供するための、ＡＰＩの呼び出しのためのシムとして動作する。実施形態において、置換１０７ｃはプロセス管理２０１に含められる。代替の実施形態において、置換１０７ｃは、偽のデバイスドライバとしてＩ／Ｏデバイス管理２０３に含められる。他の実施形態において、置換１０７ｃは、ＯＳ  ２０５によってアプリケーション２１２に提供されるシム可能な動的リンクライブラリ（ＤＬＬ）を使用して、アプリケーション２１２内に含められる。
【００５１】
ネットワーク管理２０８内のネットワーク検査器１０７ｄは、アプリケーション２１２が機密情報を外部コンピューティングデバイスに転送しようとしているかどうかを判別するために、置換情報３１０について要求およびアプリケーション情報３０４内のアプリケーション情報を検索または検査する。実施形態において、ネットワーク検査器１０７ｄは、置換情報３１０についてアプリケーション情報を記憶するトラフィックバッファを検索する。実施形態において、ネットワーク検査器１０７ｄは、アプリケーション２１２によってアプリケーション情報を外部コンピューティングデバイスに伝送するための、ＡＰＩの呼び出しのためのシムとして動作する。
【００５２】
実施形態において、ネットワーク検査器１０７ｄは、アプリケーション２１２によって特定のフォーマットで符号化されたビデオデータなどの機密情報を検索する。実施形態において、アプリケーション２１２は、帯域幅制約により、外部コンピューティングデバイスに転送する前に、ロービデオデータなどの機密情報を符号化することができる。実施形態において、ＯＳ  ２０５は、符号化された情報内の任意の置換情報３１０をネットワーク検査器１０７ｄが観察できるように、アプリケーション２１２について情報の符号化を実行するために、シミングまたはＡＰＩを提供する。
【００５３】
実施形態において、ネットワーク検査器１０７ｄは、アプリケーション２１２が置換情報３１０の非表示または符号化を試みるときに、置換情報３１０を観察することができる。
【００５４】
図４〜図５Ｂは、アプリケーションがユーザから承諾を取得せずに情報を受信できるかどうかを判別する、例示の方法を示すフローチャートである。実施形態において、図４〜図５Ｂに示されるステップは、ハードウェア（たとえばプロセッサ、メモリ、回路）、ソフトウェア（たとえばＯＳ、アプリケーション、ドライバ、機械／プロセッサ実行可能命令）、またはユーザの動作を、単独または組み合わせて表す。当業者であれば理解されるように、実施形態は図に示されるよりも少ないかまたは多いステップを含むことができる。
【００５５】
図４は、アプリケーションをテストするための例示の方法４００のフローチャートである。実施形態において、方法４００は、特定のアプリケーションの検証または証明中に実行される。代替の実施形態において、方法４００は、アプリケーションの実行中に承諾プロンプトを提供する前に実行される。実施形態において、方法４００は、コンピューティングデバイス１０７によって実行され、図１〜図３に示されるように、特に少なくとも置換１０７ｃおよびネットワーク検査器１０７ｄが使用される。
【００５６】
ステップ４０１は、機密情報などの情報について、アプリケーションから要求を受信することを示す。実施形態において、ＯＳ  ２０５は、図１および図２に示されるように、機密情報１０３に関してアプリケーション２１２からＡＰＩによって要求を受信する。
【００５７】
ステップ４０２は、アプリケーションに情報として置換情報を提供することを示す。実施形態において、置換１０７ｃは、情報を取得して置換情報と交換した後、本明細書で説明する置換情報を機密情報１０３としてアプリケーション２１２に戻す。
【００５８】
ステップ４０３は、アプリケーション情報を外部コンピューティングデバイスに出力するために、アプリケーションから要求を受信することを示す。実施形態において、ＯＳ  ２０５、および特にネットワークマネージャ２０８は、アプリケーション２１２から要求を受信する。
【００５９】
ステップ４０４は、置換情報がアプリケーション情報に含まれるかどうかを判別するために、アプリケーション情報を検査することを示す。実施形態において、ネットワーク検査器１０７ｄは、置換情報についてトラフィックバッファなどのバッファを検索することによって、ステップ４０４を実行する。
【００６０】
ステップ４０５は、アプリケーション情報を外部コンピューティングデバイスに出力することを示す。実施形態において、ネットワークマネージャ２０８はステップ４０５を少なくとも部分的に実行する。
【００６１】
他の実施形態において、ステップ４０１〜４０５は、図１〜図３および図６〜図８に示された少なくとも例示のソフトウェア構成要素およびハードウェアによって実行される。たとえば方法４００は、図６〜図７に示されたコンソール１００２または図８に示されたコンピューティングデバイス１８００によって実行することができる。
【００６２】
図５Ａは、アプリケーションがビデオ信号などの情報を外部コンピューティングデバイスに出力するかどうかを判別するための、例示の方法５００のフローチャートである。実施形態において、方法５００は、特定のアプリケーションの検証または証明中に実行される。代替実施形態において、方法５００は、アプリケーションの実行中にユーザの承諾を取得する前に実行される。実施形態において、方法５００はコンピューティングデバイス１０７によって実行され、図１〜図３に示されるように、特に少なくとも置換１０７ｃおよびネットワーク検査器１０７ｄが使用される。
【００６３】
ステップ５０１は、オペレーティングシステムによって、ビデオ信号についてアプリケーションから要求を受信することを示す。実施形態において、アプリケーション２１２は、図２に示されたオペレーティングシステム２０５にビデオ信号を要求するために第１のＡＰＩを使用する。
【００６４】
ステップ５０２は、オペレーティングシステムによって、置換ビデオ信号をアプリケーションに提供することを示す。実施形態において、置換１０７ｃは、要求されたビデオ信号を、動かないオブジェクトのビデオ信号などの置換ビデオ信号と交換するために、ステップ５０２を実行する。
【００６５】
ステップ５０３は、オペレーティングシステムによって、アプリケーション情報を外部コンピューティングデバイスに出力するためのアプリケーションからの要求を受信することを示す。実施形態において、アプリケーション２１２は、図２に示されたオペレーティングシステム２０５によってアプリケーション情報の出力を要求するために第２のＡＰＩを使用する。
【００６６】
ステップ５０４は、置換ビデオ信号がアプリケーション情報に含まれるかどうかを判別するために、オペレーティングシステムによってアプリケーション情報を検査することを示す。実施形態において、ネットワーク検査器１０７ｄは、置換ビデオ信号についてトラフィックバッファなどのバッファを検索することによって、ステップ５０４を実行する。
【００６７】
ステップ５０５は、オペレーティングシステムによって、アプリケーション情報を外部コンピューティングデバイスに出力することを示す。実施形態において、ネットワークマネージャ２０８は少なくとも部分的にステップ４０５を実行する。
【００６８】
他の実施形態において、ステップ５０１〜５０８は、図１〜図３および図６〜図８に示された少なくとも例示のソフトウェア構成要素およびハードウェアによって実行される。たとえば方法５００は、図６〜図７に示されたコンソール１００２または図８に示されたコンピューティングデバイス１８００によって実行可能である。
【００６９】
図５Ｂは、アプリケーションが情報を外部コンピューティングデバイスに転送するときに、ユーザの承諾を取得するための例示の方法５１０のフローチャートである。代替の実施形態において、方法５１０は、アプリケーションの実行中にユーザの承諾を取得する前に実行される。実施形態において、方法５００はコンピューティングデバイス１０７によって実行され、図１〜図３に示されるように、特に少なくとも置換１０７ｃおよびネットワーク検査器１０７ｄが使用される。
【００７０】
ステップ５１１は、図１に示され本明細書で説明する、機密情報１０３などの情報を受信することを示す。実施形態において、ＯＳ  ２０５などのオペレーティングシステムは、アプリケーション２１２などの要求側アプリケーションに機密情報をリリースまたは転送するまでに、機密情報にアクセスし、これを受信し、または制御する。実施形態において、カメラ１１１は、図１に示されるようにコンピューティングデバイス１０７によって受信されるビデオ信号を提供する。
【００７１】
ステップ５１２は、アプリケーションから機密情報に関する要求を受信することを示す。実施形態において、アプリケーション２１２は、図２に示されたオペレーティングシステム２０５に機密情報１０３を要求するために、第１のＡＰＩを使用する。
【００７２】
ステップ５１３は、機密情報を置換情報と交換することを示す。実施形態において、置換１０７ｃは、要求された機密情報を本明細書で説明する置換情報と交換するために、ステップ５１３を実行する。
【００７３】
ステップ５１４は、置換情報を機密情報としてアプリケーションに提供することを示す。実施形態において、アプリケーション２１２は、図２に示されたオペレーティングシステム２０５によってアプリケーション情報の出力を要求するために、第２のＡＰＩを使用する。
【００７４】
ステップ５１５は、アプリケーション情報をネットワークアドレスに出力するための要求をアプリケーションから受信することを示す。実施形態において、アプリケーション２１２は、図２に示されたオペレーティングシステム２０５によってアプリケーション情報の出力を要求するために、第２のＡＰＩを使用する。
【００７５】
ステップ５１６は、置換情報がアプリケーション情報に含まれるかどうかを判別するために、アプリケーション情報を検索することを示す。実施形態において、ネットワーク検査器１０７ｄは、置換情報についてトラフィックバッファなどのバッファを検索することによって、ステップ５１６を実行する。
【００７６】
ステップ５１７は、アプリケーション情報を出力する前に承諾の指示を取得することを示す。実施形態において、承諾１０７ｂはユーザから承諾の指示を取得する。実施形態において、機密情報を再度要求し、アプリケーション情報の出力も再度要求することを、オペレーティングシステムによってアプリケーションに通知することが可能なため、ユーザの承諾を受信した後に置換情報が使用されることはない。
【００７７】
ステップ５１８は、（置換情報なしに）アプリケーション情報を外部アドレスに出力する。実施形態において、ネットワークマネージャ２０８は少なくとも部分的にステップ５１８を実行する。
【００７８】
他の実施形態において、ステップ５１１〜５１８は、図１〜図３および図６〜図８に示される少なくとも例示のソフトウェア構成要素およびハードウェアによって実行される。たとえば方法５１０は、図６〜図７に示されたコンソール１００２または図８に示されたコンピューティングデバイス１８００によって実行可能である。
【００７９】
実施形態において、コンピューティングデバイス１０７は、ビデオゲームおよび／またはメディアコンソールとすることが可能であるが、これらに限定されない。実施形態において、コンピューティングデバイス１０７は、機密情報が外部コンピューティングデバイスに転送される前にゲームなどのアプリケーションをテストする。機密情報が転送されることになると、機密情報が転送される前に、ビデオゲームおよび／またはメディアコンソールとしてのコンピューティングデバイス１０７は、ユーザからの承諾の指示を取得する。
【００８０】
実施形態において、次に図６を使用して例示のビデオゲームおよびメディアコンソールを説明し、より一般的には、図６を使用してゲームおよびメディアコンソールを含む例示のゲームおよびメディアシステム１０００を説明する。図６の以下の考察は、本明細書で提示した概念を実装する際に使用可能な好適なコンピューティングデバイスの、簡単な一般的な説明を提供することが意図される。図６のシステムは単なる例であることを理解されよう。他の例では、本明細書で説明する実施形態は、クライアントコンピューティングデバイス上に常駐し、これによって実行される、ブラウザアプリケーションまたはソフトウェアアプリケーションのいずれかを介して、様々なクライアントコンピューティングデバイスを使用して実装可能である。図６に示されるように、ゲームおよびメディアシステム１０００は、ゲームおよびメディアコンソール（以下、「コンソール」）１００２を含む。一般に、コンソール１００２はクライアントコンピューティングデバイスの一種である。コンソール１００２は、コントローラ１００４１および１００４２によって表されるような１つまたは複数のワイヤレスコントローラに適応するように構成される。コンソール１００２には、内部ハードディスクドライブ、および、光学記憶ディスク１００８によって表されるような様々な形のポータブル記憶媒体をサポートするポータブルメディアドライブ１００６が装備される。好適なポータブル記憶媒体の例は、ＤＶＤ、ＣＤ−ＲＯＭ、ゲームディスクなどを含む。コンソール１００２は、取り外し可能なフラッシュタイプのメモリユニット１０４０を受け入れるための、２つのメモリユニットカードレセプタクル１０２５１および１０２５２も含む。コンソール１００２上のコマンドボタン１０３５は、ワイヤレス周辺機器サポートの実行を可能および不能にする。
【００８１】
図６に示されるように、コンソール１００２は、追加のコントローラまたは他の周辺機器とのワイヤード接続をサポートするために、１つまたは複数のデバイスならびに２つのＵＳＢポート１０１０１および１０１０２とワイヤレス通信するための光学ポート１０３０も含む。いくつかの実装において、追加ポートの数および配置構成を修正することができる。コンソール１００２の前面に、電源ボタン１０１２および取り出しボタン１０１４も配置される。電源ボタン１０１２は、ゲームコンソールに電力を印加するために選択され、他の機能およびコントロールにアクセスを提供することも可能であり、取り出しボタン１０１４は、光学記憶ディスク１００８の挿入および抜き取りを可能にするために、ポータブルメディアドライブ１００６のトレイを交互に開閉する。
【００８２】
コンソール１００２は、Ａ／Ｖインターフェースケーブル１０２０を介してテレビジョンまたは（ディスプレイ１０５０などの）他のディスプレイに接続する。一実装において、コンソール１００２には、Ａ／Ｖケーブル１０２０（たとえば、高解像度ディスプレイ１０５０または他のディスプレイデバイス上の高解像度マルチメディアインターフェース「ＨＤＭＩ」ポートへの結合に好適なＡ／Ｖケーブル）を使用するコンテンツセキュアデジタル通信用に構成された、専用Ａ／Ｖポートが装備される。電源ケーブル１０２２は、コンソール１００２に電力を提供する。コンソール１００２は、インターネットなどのネットワークへのアクセスを容易にするために、ケーブルまたはモデムコネクタ１０２４によって表されるように、ブロードバンド機能を用いてさらに構成することができる。ブロードバンド機能は、ワイヤレスフィデリティ（Ｗｉ−Ｆｉ）ネットワークなどのブロードバンドネットワークを介して、ワイヤレスに提供することも可能である。
【００８３】
各コントローラ１００４は、ワイヤードまたはワイヤレスのインターフェースを介して、コンソール１００２に結合される。図示された実装において、コントローラ１００４はＵＳＢ互換性があり、ワイヤレスまたはＵＳＢポート１０１０を介してコンソール１００２に結合される。コンソール１００２には、多種多様なユーザインタラクション機構のうちのいずれかが装備され得る。図６に示された例において、各コントローラ１００４には、２つの親指スティック１０３２１および１０３２２、Ｄパッド１０３４、ボタン１０３６、および２つのトリガ１０３８が装備される。これらのコントローラは単なる代表的なものであり、他の知られたゲームコントローラを図６に示されたコントローラと置き換えるかまたはこれに追加することが可能である。
【００８４】
実施形態において、ユーザは、ジェスチャ、タッチ、またはボイスによって、入力をコンソール１００２に入力することができる。実施形態において、光学Ｉ／Ｏインターフェース１１３５はユーザのジェスチャを受信および変換する。実施形態において、光学Ｉ／Ｏインターフェースは、たとえばユーザのビデオ信号を取得するためのカメラを含む。別の実施形態において、コンソール１００２は、ユーザからのボイスおよびジェスチャ入力を受信および変換するためにＮＵＩを含む。代替の実施形態において、フロントパネルサブアセンブリ１１４２は、ユーザの承諾などのタッチまたはボイスを受信および変換するための、タッチ表面およびマイクロフォンを含む。実施形態において、フロントパネルサブアセンブリ１１４２は、機密情報を外部コンピューティングデバイスに送ることができるようにするために、承諾（または拒否）の指示をユーザに求めるためのスピーカを含む。
【００８５】
実施形態において、複数のマイクロフォン１０１１は、ユーザの音声を表す４チャネル信号を提供するためにＵＳＢポート１０１０にプラグインすることができる。代替の実施形態において、単一のマイクロフォンを使用することができる。実施形態において、４つの１６  ｋＨｚ  ２４ビットオーディオ信号が、複数のマイクロフォン１０１１からＵＳＢポート１０１０および少なくとも１つのオーディオパイプラインに提供される。実施形態において、少なくとも１つのオーディオパイプラインは、電子インタラクティブゲームアプリケーションからの他のユーザの会話またはオーディオなどの、少なくとも１つのオーディオ信号に関連付けられたノイズを低減させる。
【００８６】
一実装において、追加またはポータブルのストレージを提供するために、メモリユニット（MU）１０４０をコントローラ１００４に挿入することも可能である。ポータブルＭＵは、他のコンソール上でプレイしているときに使用するためのゲームパラメータをユーザが記憶できるようにする。この実装において、各コントローラは、２つのＭＵ  １０４０に適応するように構成されるが、２つより多いかまたは少ないＭＵも採用可能である。
【００８７】
ゲームおよびメディアシステム１０００は、一般に、メモリ媒体上に記憶されたゲームをプレイするように、ならびに、電子およびハードの両方のメディアソースから、ゲームをダウンロードおよびプレイし、事前に記録された音楽およびビデオを再生するように構成される。異なるストレージの提供により、タイトル（またはアプリケーション）は、ハードディスクドライブから、光学記憶ディスク媒体（たとえば１００８）から、オンラインソースから、またはＭＵ  １０４０から、プレイすることができる。ゲームおよびメディアシステム１０００がプレイ可能な媒体のタイプのサンプルは、以下を含む。
【００８８】
ＣＤ、ＤＶＤ、またはより大容量のディスクから、ハードディスクドライブから、あるいはオンラインソースからプレイされる、ゲームタイトルまたはアプリケーション。
【００８９】
ポータブルメディアドライブ１００６内のＣＤから、ハードディスクドライブまたはソリッドステートディスク上のファイルから（たとえばメディアフォーマットの音楽）、あるいはオンラインストリーミングソースからプレイされる、デジタル音楽。
【００９０】
ポータブルメディアドライブ１００６内のＤＶＤディスクから、ハードディスクドライブ上のファイルから（たとえばアクティブストリーミングフォーマット）、またはオンラインストリーミングソースからプレイされる、デジタルオーディオ／ビデオ。
【００９１】
動作中、コンソール１００２は、コントローラ１００４からの入力を受信し、ディスプレイ１０５０上に情報を表示するように構成される。たとえばコンソール１００２は、ユーザがコントローラ１００４を使用して電子インタラクティブゲームを選択し、状態可解性情報を表示できるようにするために、ディスプレイ１０５０上にユーザインターフェースを表示することができる。実施形態において、コンソール１００２は、機密情報を外部コンピューティングデバイスに送信できるようにするために、コントローラ１００４による承諾（または拒否）の選択を可能にするためのメニューをディスプレイ１０５０に提供する。実施形態において、メニューは、任意のアプリケーションからの任意の機密情報の転送を承諾するかまたは承諾しないなど、非常に広範囲にわたるものとすることができる。代替としてメニューは、ユーザが特定のアプリケーションによって転送可能な特定の情報を選択できるかまたはこれを承諾できるようにすることが可能である。たとえばメニューは、ユーザがゲームから転送されることになるビデオ信号を承諾できるようにすることが可能であるが、ゲームはクレジットカード情報を転送することはできない。
【００９２】
実施形態において、アプリケーションについてのテスト、証明、または検証のプロセス後に、ユーザに対して承諾を取得するためのメニューが提供される。代替の実施形態において、アプリケーションの実行中、および機密情報が外部コンピューティングデバイスに転送される前に、ユーザに対して承諾を取得するためのメニューが提供される。
【００９３】
図７は、ゲームおよびメディアシステム１０００の機能ブロック図であり、ゲームおよびメディアシステム１０００の機能構成要素をより詳細に示す。コンソール１００２はＣＰＵ  １１００と、フラッシュＲＯＭ  １１０４、ＲＡＭ  １１０６、ハードディスクドライブまたはソリッドステートドライブ１１０８、およびポータブルメディアドライブ１００６を含む、様々なタイプのメモリへのプロセッサのアクセスを容易にするメモリコントローラ１１０２とを有する。代替の実施形態において、他のタイプの揮発性および不揮発性メモリ技術が使用可能である。一実装において、ＣＰＵ  １１００は、データを一時的に記憶し、したがってハードドライブ１１０８に対して実行されるメモリアクセスサイクルの数を減少させ、それによって処理速度およびスループットを向上させるための、レベル１キャッシュ１１１０およびレベル２キャッシュ１１１２を含む。
【００９４】
ＣＰＵ  １１００、メモリコントローラ１１０２、および様々なメモリは、１つまたは複数のバスを介して相互に接続される。本実装で使用されるバスの詳細は、本明細書で考察する重要な主題を理解することに特に関連しない。しかしながら、こうしたバスは、様々なバスアーキテクチャのうちのいずれかを使用する、シリアルおよびパラレルバス、メモリバス、周辺バス、およびプロセッサまたはローカルバスのうちの１つまたは複数を含む可能性があることを理解されよう。例として、こうしたアーキテクチャは、業界標準アーキテクチャ（ISA）バス、マイクロチャネルアーキテクチャ（MCA）バス、拡張ＩＳＡ（EISA）バス、ビデオエレクトロニクススタンダーズアソシエーション（VESA）ローカルバス、およびメザニンバスとも呼ばれる周辺構成要素相互接続（PCI）バスを含むことができる。
【００９５】
一実装において、ＣＰＵ  １１００、メモリコントローラ１１０２、ＲＯＭ  １１０４、およびＲＡＭ  １１０６は、共通モジュール１１１４に組み込まれる。この実装において、ＲＯＭ  １１０４は、ＰＣＩバスおよびＲＯＭバス（いずれも図示せず）を介してメモリコントローラ１１０２に接続される、フラッシュＲＯＭとして構成される。ＲＡＭ  １１０６は、別々のバスを介してメモリコントローラ１１０２によって独立に制御される、複数のダブルデータレート同期型ダイナミックＲＡＭ（DDR SDRAM）または高速データレートＤＲＡＭモジュールとして構成される。ハードディスクドライブ１１０８およびポータブルメディアドライブ１００６は、ＰＣＩバスおよびＡＴアタッチメント（ATA）バス１１１６を介してメモリコントローラ１１０２に接続されるように示されている。しかしながら他の実装では、異なるタイプの専用データバス構造も代替で適用可能である。
【００９６】
別の実施形態において、少なくともＣＰＵ  １１００、レベル１キャッシュ１１１０、レベル２キャッシュ１１１２、メモリコントローラ１１０２、およびＲＡＭメモリ１１０６が、システムオンチップ（SoC）上に含まれる。実施形態において、ＣＰＵ  １１００はプロセッサコアと交換される。実施形態において、ＲＡＭメモリ１１０６は、ワイドＩ／Ｏ  ＤＲＡＭなどの高性能メモリと交換され、メモリコントローラ１１０２の機能はプロセッサコアによって実行される。ＬＰＤＤＲ３  ＤＲＡＭなどの、高性能メモリではない別のタイプのメモリを、実施形態において、ＳｏＣに結合することができる。
【００９７】
ＳｏＣ（別名SOC）は、コンピューティングデバイスまたは他の電子システムの電子構成要素および／またはサブシステムを、単一のパッケージ内に収容された単一の半導体基板および／または単一のチップに統合する、集積回路（IC）である。たとえば、以前はパーソナルコンピュータ（PC）内のメモリモジュールサブシステム内にあったメモリは、ここではＳｏＣに含めることができる。同様にメモリ制御論理は、別々にパッケージングされたメモリコントローラではなく、ＳｏＣのプロセッサに含めることができる。
【００９８】
当業者であれば、他の電子構成要素がＳｏＣに含められることを理解されよう。ＳｏＣは、デジタル、アナログ、混合信号、および／または無線周波数回路を含むことが可能であり、それらの１つまたは複数は単一の半導体基板上にある。ＳｏＣは、発振器、位相ロックループ、カウンタータイマ、リアルタイムタイマ、パワーオンリセットジェネレータ、外部インターフェース（たとえばユニバーサルシリアルバス（USB）、IEEE 1394インターフェース（Fire Wire）、イーサネット、ユニバーサル非同期型送受信器（USART）、およびシリアル周辺バス（SPI））、アナログインターフェース、電圧レギュレータ、および／または電力管理回路を含むことができる。
【００９９】
代替実施形態において、ＳｏＣは、システムインパッケージ（SiP）またはパッケージオンパッケージ（PoP）と交換可能である。ＳｉＰでは、複数のチップまたは半導体基板が単一のパッケージに収容される。ＳｉＰ実施形態では、プロセッサコアは１つの半導体基板上にあり、高性能メモリは第２の半導体基板上にあって、両方が単一のパッケージに収容される。実施形態において、第１の半導体基板はワイヤボンディングによって第２の半導体基板に結合されることになる。
【０１００】
ＰｏＰ実施形態において、プロセッサコアは第１のパッケージに収容された１つの半導体ダイ上にあり、高性能メモリは第２の異なるパッケージに収容された第２の半導体ダイ上にある。次いで第１および第２のパッケージは、パッケージ、特に半導体ダイ間で信号をルーティングするための標準インターフェースと積み重ねることができる。次いで積層パッケージは、実施形態において構成要素としてメモリ追加メモリを有するプリント回路基板に結合することができる。
【０１０１】
実施形態において、プロセッサコアは、プロセッサ可読メモリ内に記憶されたプロセッサ（または機械）可読命令を実行する（または読み取る）、複数のプロセッサを含む。プロセッサ可読命令の例は、コンピューティングデバイス１０７用のＯＳおよび／またはアプリケーション（図２に示されたＯＳ  ２０５およびアプリケーション２１１〜２１３など）を含むことができる。プロセッサコアは、ＯＳおよびアプリケーションのプロセッサ可読命令の実行に応答して、高性能メモリおよび追加メモリを使用することができる。実施形態において、プロセッサコアは、プロセッサおよびメモリコントローラ、あるいは、メモリコントローラによって同様に実行されるメモリ管理機能も実行するプロセッサを、含むことができる。プロセッサコアは、コントローラ、グラフィクス処理ユニット（GPU）、デジタル信号プロセッサ（DSP）、および／またはフィールドプログラマブルゲートアレイ（FPGA）を含むこともできる。実施形態において、高性能メモリはプロセッサコアの上部に配置される。
【０１０２】
実施形態において、高性能メモリおよび追加メモリは、別の半導体基板上に配設されたＩＣ内のメモリセルの１つまたは複数のアレイに含められる。実施形態において、高性能メモリおよび追加メモリは、別々にパッケージされたデバイスに収容されたそれぞれの集積モノリシック回路に含められる。実施形態において、高性能メモリおよび追加メモリは、揮発性および／または不揮発性メモリを含むことができる。
【０１０３】
揮発性メモリのタイプは、ダイナミックランダムアクセスメモリ（DRAM）、分子電荷ベース（ZettaCore）ＤＲＡＭ、浮体ＤＲＡＭ、およびスタティックランダムアクセスメモリ（「SRAM」）を含むが、これらに限定されない。特定タイプのＤＲＡＭは、ダブルデータレートＳＤＲＡＭ（「DDR」）、または後世代ＳＤＲＡＭ（たとえば「DDRn」）を含む。
【０１０４】
不揮発性メモリのタイプは、電気的消去可能プログラム読み取り専用メモリ（「EEPROM」）、ＦＬＡＳＨ（NANDおよびNOR FLASHを含む）、ＯＮＯ  ＦＬＡＳＨ、磁気抵抗性または磁気ＲＡＭ（「MRAM」）、強誘電性ＲＡＭ（「FRAM」）、ホログラフィック媒体、オボニック／相変化、ナノクリスタル、ナノチューブＲＡＭ（NRAM-Nantero）、ＭＥＭＳスキャニングプローブシステム、ＭＥＭＳカンチレバースイッチ、ポリマー、分子、ナノフローティングゲート、および単一電子のタイプを含むが、これらに限定されない。
【０１０５】
３次元グラフィクス処理ユニット１１２０およびビデオエンコーダ１１２２は、高速および高分解能（たとえば高解像度）グラフィクス処理用のビデオ処理パイプラインを形成する。データは、グラフィクス処理ユニット１１２０からデジタルビデオバスを介してビデオエンコーダ１１２２に搬送される。オーディオ処理ユニット１１２４およびオーディオコーデック（コーダ／デコーダ）１１２６は、様々なデジタルオーディオ形式のマルチチャネルオーディオ処理用の対応するオーディオ処理パイプラインを形成する。オーディオデータは、オーディオ処理ユニット１１２４とオーディオコーデック１１２６との間で通信リンクを介して搬送される。ビデオおよびオーディオの処理パイプラインは、テレビジョンまたは他のディスプレイへの伝送用のＡ／Ｖ（オーディオ／ビデオ）ポート１１２８に、データを出力する。
【０１０６】
図７は、ＵＳＢホストコントローラ１１３０およびネットワークインターフェース１１３２を含む、モジュール１１１４を示す。ＵＳＢホストコントローラ１１３０は、バス（たとえばPCIバス）を介してＣＰＵ  １１００およびメモリコントローラ１１０２と通信するように示され、周辺コントローラ１００４１〜１００４４に対するホストとして働く。ネットワークインターフェース１１３２はネットワーク（たとえばインターネット、ホームネットワークなど）へのアクセスを提供し、イーサネットカード、モデム、ワイヤレスアクセスカード、ブルートゥースモジュール、ケーブルモデム、その他を含む、多種多様の様々なワイヤまたはワイヤレスインターフェース構成要素のうちのいずれかとすることができる。
【０１０７】
図７に示された実装において、コンソール１００２は、４つのコントローラ１００４１〜１００４４をサポートするためのコントローラサポートサブアセンブリ１１４０を含む。コントローラサポートサブアセンブリ１１４０は、たとえばメディアおよびゲームコントローラなどの外部コントロールデバイスを用いてワイヤードおよびワイヤレス動作をサポートするための、任意のハードウェアおよびソフトウェア構成要素を含む。フロントパネルＩ／Ｏサブアセンブリ１１４２は、電源ボタン１０１２、取り出しボタン１０１４、ならびに、コンソール１００２の外側表面に露出した任意のＬＥＤ（発光ダイオード）または他のインジケータの、複数の機能をサポートする。サブアセンブリ１１４０および１１４２は、１つまたは複数のケーブルアセンブリ１１４４を介してモジュール１１１４と通信している。他の実装において、コンソール１００２は追加のコントローラサブアセンブリを含むことができる。図示された実装は、モジュール１１１４に送ることが可能な信号を送信および受信するように構成された、光学Ｉ／Ｏインターフェース１１３５も示す。
【０１０８】
ＭＵ  １０４０１および１０４０２は、ＭＵポート「Ａ」１０３０１および「Ｂ」１０３０２にそれぞれ接続可能なように示されている。追加のＭＵ（たとえばMU 10403〜10406）は、コントローラ１００４１および１００４３に、すなわち各コントローラについて２つのＭＵに接続可能であるものとして、示されている。コントローラ１００４２および１００４４も、ＭＵを受け入れるように構成可能である。各ＭＵ  １０４０は、電子インタラクティブゲーム、ゲームパラメータ、および他のデータを記憶することができる、追加のストレージを提供する。いくつかの実装において、他のデータは、デジタルゲーム構成要素、実行可能ゲームアプリケーション、ゲームアプリケーションを拡張するための命令セット、およびメディアファイルのうちのいずれかを含むことができる。コンソール１００２またはコントローラ内に挿入された場合、ＭＵ  １０４０にはメモリコントローラ１１０２によってアクセス可能である。
【０１０９】
システム電源モジュール１１５０は、ゲームシステム１０００の構成要素に電力を提供する。ファン１１５２はコンソール１００２内の回路を冷却する。
【０１１０】
プロセッサ可読命令を備えるアプリケーション１１６０は、ハードディスクドライブ１１０８上に記憶される。コンソール１００２の電源がオンになると、アプリケーション１１６０の様々な部分が、ＣＰＵ  １１００上での実行のために、ＲＡＭ  １１０６、および／またはキャッシュ１１１０および１１１２にロードされ、アプリケーション１１６０はその一例である。様々なアプリケーションが、ＣＰＵ  １１００上での実行のためにハードディスクドライブ１１０８上に記憶可能である。実施形態において、アプリケーション１１６０は、本明細書で説明する図２に示されたアプリケーション２１１〜２１３のうちの１つに対応する。
【０１１１】
コンソール１００２は、コンソール１００２を１つまたは複数の他のコンピューティングデバイス（たとえば他のコンソール）と通信可能に結合するように構成された、通信サブシステム１１７０を含むようにも示されている。通信サブシステム１１７０は、１つまたは複数の異なる通信プロトコルとの互換性のあるワイヤードおよび／またはワイヤレス通信デバイスを含むことができる。非限定的な例として、通信サブシステム１１７０は、ワイヤレス電話網、あるいはワイヤードまたはワイヤレスのローカルまたはワイドエリアネットワークを介して通信するように構成可能である。いくつかの実施形態において、通信サブシステム１１７０は、コンソール１００２が、インターネットなどのネットワークを介して、他のデバイスとの間でメッセージを送信および／または受信できるようにすることが可能である。特定の実施形態において、通信サブシステム１１７０は、ダウンロード要求を送信するため、ならびにデジタルコンテンツのダウンロードおよびアップロードを行うために、コーディネータおよび／または他のコンピューティングデバイスと通信するために使用することができる。より一般的には、通信サブシステム１１７０は、コンソール１００２がピアツーピア通信に参加できるようにすることが可能である。
【０１１２】
ゲームおよびメディアシステム１０００は、システムをディスプレイ１０５０（図６）、テレビジョン、ビデオプロジェクタ、または他のディスプレイデバイスに単純に接続することによって、スタンドアロンシステムとして動作可能である。このスタンドアロンモードでは、ゲームおよびメディアシステム１０００は、１人または複数のプレーヤが電子インタラクティブゲームをプレイすること、あるいは、たとえば映画を見ることまたは音楽を聴くことによって、デジタルメディアを楽しむことができるようにする。しかしながら、ネットワークインターフェース１１３２、またはより一般には通信サブシステム１１７０を介して使用可能となるブロードバンド接続と統合することで、ゲームおよびメディアシステム１０００は、ピアツーピアネットワークなどのより大規模なネットワークゲームコミュニティへの参加者としてさらに動作可能である。
【０１１３】
前述のコンソール１００２は、図１および様々な他の図を参照しながら上記で考察したコンピューティングデバイス１０７の単なる一例である。上記で説明したように、本明細書で説明する実施形態は、様々な他のタイプのコンピューティングデバイスと共に使用可能である。
【０１１４】
図８は、図１〜図３に示されたソフトウェア構成要素のうちの少なくともいくつかをホストすることが可能な、（図１に示されたコンピューティングデバイス１０７に対応可能な）コンピューティングデバイス１８００の一実施形態のブロック図である。その最も基本的な構成において、コンピューティングデバイス１８００は、典型的には、１つまたは複数のＣＰＵおよび１つまたは複数のＧＰＵを含む、１つまたは複数の処理ユニット／コア１８０２を含む。コンピューティングデバイス１８００は、システムメモリ１８０４も含む。コンピューティングデバイスの精密な構成およびタイプに応じて、システムメモリ１８０４は、揮発性メモリ１８０５（RAMなど）、不揮発性メモリ１８０７（ROM、フラッシュメモリなど）またはこの２つのいくつかの組み合わせを含むことができる。この最も基本的な構成は、図８において破線１８０６で示される。加えて、コンピューティングデバイス１８００は、追加の特徴／機能を有することもできる。たとえばコンピューティングデバイス１８００は、磁気または光のディスクまたはテープを含むがこれらに限定されない、追加のストレージ（取り外し可能および／または取り外し不可）を含むこともできる。こうした追加のストレージは、図８において、取り外し可能ストレージ１８０８および取り外し不可ストレージ１８１０によって示されている。
【０１１５】
実施形態において、コンピューティングデバイス１８００は、アプリケーションが機密情報を外部コンピューティングデバイスに転送するかどうかをテストする際に使用される。実施形態において、コンピューティングデバイス１８００は、アプリケーションの証明または検証のプロセス中に使用される。実施形態において、本明細書で説明するソフトウェア構成要素はシステムメモリに記憶され、処理ユニット／コア１８０２によって実行される。
【０１１６】
コンピューティングデバイス１８００は、デバイスが他のデバイスと通信できるようにする、１つまたは複数のネットワークインターフェースおよびトランシーバなどの、通信接続１８１２も含むことができる。コンピューティングデバイス１８００は、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイス、ジェスチャ入力デバイスなどの、入力デバイス１８１４も含むことができる。ディスプレイ、スピーカ、プリンタなどの出力デバイス１８１６も含めることができる。これらのデバイスは当分野で周知であるため、ここでは詳細に考察しない。
【０１１７】
実施形態において、図示および説明される信号経路は、相互接続、導電素子、接点、ピン、半導体基板内の領域、ワイヤ、金属トレース／信号ライン、または光電子導体などの、単独または組み合わせた、信号を転送する媒体である。実施形態において、複数の信号経路を、図に示された単一の信号経路と交換することができ、単一の信号経路は図に示された複数の信号経路と交換することができる。実施形態において、信号経路は、バスおよび／またはポイントツーポイント接続を含むことができる。実施形態において、信号経路はコントロールおよびデータ信号ラインを含む。さらに他の実施形態において、信号経路は、単方向性（一方向に進行する信号）または双方向性（二方向に進行する信号）、あるいは単方向性信号ラインおよび双方向性信号ラインの両方の組み合わせである。
【０１１８】
本発明のシステムの前述の詳細な説明は、例示および説明のために提示したものであり、網羅的であること、または本発明のシステムを開示された精密な形に限定することは意図されていない。上記の教示に鑑み、多くの修正および変形が可能である。説明した実施形態は、それによって当業者が、様々な実施形態において、および企図される特定の用途に好適な様々な修正と共に、本発明のシステムを最も良く利用できるようにするために、本発明のシステムの原理およびその実際の応用例を最も良く説明するように選択された。本発明のシステムの範囲は、本明細書に添付された特許請求の範囲によって定義されることが意図される。
【図１】
0006356248.tif 000002
【図２】
0006356248.tif 000003
【図３】
0006356248.tif 000004
【図４】
0006356248.tif 000005
【図５Ａ】
0006356248.tif 000006
【図５Ｂ】
0006356248.tif 000007
【図６】
0006356248.tif 000008
【図７】
0006356248.tif 000009
【図８】
0006356248.tif 000010