(57)【要約】  リモートセッション表示の動画像にデータを埋め込むシステム及び方法。当該方法は、プロセッサによって、動画像に関連付けられた表示フレームを受信し、表示フレームに埋め込まれる埋め込み対象データを受信し、表示フレームにおいて１つ以上の安定領域を特定し、１つ以上の安定領域を特定すると、キャッシュを更新し、キャッシュにおいて表示フレームに対応する最大安定領域を特定し、埋め込み対象データを最大安定領域に埋め込むことで埋め込みデータ包含領域を生成することを含む。キャッシュは、動画像に関連付けられた１つ以上の表示フレームに対応する複数の安定領域を有する。
2021513260.tif 000002
【特許請求の範囲】
【請求項１】
リモートセッション表示の動画像にデータを埋め込む方法であって、
プロセッサによって、
前記動画像に関連付けられた表示フレームを受信し、
前記表示フレームに埋め込まれる埋め込み対象データを受信し、
前記表示フレームにおいて１つ以上の安定領域を特定し、
前記１つ以上の安定領域を特定すると、前記動画像に関連付けられた１つ以上の表示フレームに対応する複数の安定領域を有するキャッシュを更新し、
前記キャッシュにおいて、前記表示フレームに対応する最大安定領域を特定し、
前記埋め込み対象データを前記最大安定領域に埋め込むことで埋め込みデータ包含領域を生成することを含む、方法。
【請求項２】
前記プロセッサによって、前記表示フレームにおける前記最大安定領域に対応する領域を前記埋め込みデータ包含領域に置き換えることで合成フレームを作成することをさらに含む、請求項１に記載の方法。
【請求項３】
前記埋め込みを実行する前に、前記プロセッサによって、前記埋め込み対象データを暗号化することをさらに含む、請求項１に記載の方法。
【請求項４】
前記最大安定領域に前記埋め込み対象データを埋め込む前に、前記プロセッサによって、
前記最大安定領域が既に前記埋め込み対象データを含んでいるか否かを判断し、
前記最大安定領域が前記埋め込み対象データを含んでいない場合にのみ前記埋め込みを行うこと、
をさらに含む、請求項１に記載の方法。
【請求項５】
前記最大安定領域に前記埋め込み対象データを埋め込む前に、前記プロセッサによって、
前記最大安定領域のサイズが閾値サイズより小さいか否かを判断し、
前記最大安定領域の前記サイズが前記閾値サイズ以上である場合にのみ前記最大安定領域への前記埋め込みを実行すること、
をさらに含む、請求項１に記載の方法。
【請求項６】
前記最大安定領域の前記サイズが前記閾値サイズより小さいという判断を受けて、最下位ビットアルゴリズムを用いて前記表示フレームに前記埋め込み対象データを埋め込むことをさらに含む、請求項５に記載の方法。
【請求項７】
前記閾値サイズは、前記埋め込み対象データの長さの４倍に等しい、請求項５に記載の方法。
【請求項８】
前記最大安定領域に前記埋め込みを実行することは、
前記最大安定領域に変換関数を作用して、前記最大安定領域の周波数領域表現を生成し、
空のビットマップを生成し、
前記埋め込み対象データを前記空のビットマップに埋め込むことで埋め込みデータ包含ビットマップを生成し、
前記最大安定領域の前記周波数領域表現の一部を前記埋め込みデータ包含ビットマップで置き換えることで修正周波数領域表現を生成し、
前記修正周波数領域表現に逆変換関数を作用すること、
を含む、請求項５に記載の方法。
【請求項９】
前記変換関数は高速フーリエ変換（ＦＦＴ）であり、前記逆変換関数は逆ＦＦＴである、請求項８に記載の方法。
【請求項１０】
前記最大安定領域の前記周波数領域表現の一部を前記埋め込みデータ包含ビットマップで置き換えることは、前記最大安定領域の前記周波数領域表現の右下隅部を置き換えることを含む、請求項８に記載の方法。
【請求項１１】
前記空のビットマップを生成することは、前記最大安定領域の画素の高さの半分の画素の高さを有し、前記最大安定領域の画素の長さの半分の画素の長さを有する前記空のビットマップを生成することを含む、請求項８に記載の方法。
【請求項１２】
前記プロセッサによって、
前記埋め込みデータ包含領域に識別子を組み込み、
前記キャッシュにおいて、前記最大安定領域を前記埋め込みデータ包含領域に置き換えること、
をさらに含む、請求項１に記載の方法。
【請求項１３】
前記表示フレームにおいて前記１つ以上の安定領域を特定することは、前記表示フレームを前記動画像に関連付けられた少なくとも１つの以前の表示フレームと比較することを含む、請求項１に記載の方法。
【請求項１４】
リモートセッション表示の動画像にデータを埋め込むシステムであって、
プロセッサと、
プログラミング命令を有する非一時的なコンピュータ読み取り可能な記憶媒体と、
を備え、
前記プログラミング命令は前記プロセッサに、
前記動画像に関連付けられた表示フレームを受信し、
前記表示フレームに埋め込まれる埋め込み対象データを受信し、
前記表示フレームにおいて１つ以上の安定領域を特定し、
前記１つ以上の安定領域を特定すると、前記動画像に関連付けられた１つ以上の表示フレームに対応する複数の安定領域を有するキャッシュを更新し、
前記キャッシュにおいて、前記表示フレームに対応する最大安定領域を特定し、
前記埋め込み対象データを前記最大安定領域に埋め込むことで埋め込みデータ包含領域を生成すること、
を実行させるシステム。
【請求項１５】
前記プログラミング命令は前記プロセッサに、前記表示フレームにおける前記最大安定領域に対応する領域を前記埋め込みデータ包含領域に置き換えることで合成フレームを作成させるための命令をさらに含む、請求項１４に記載のシステム。
【請求項１６】
前記プログラミング命令は、前記埋め込みを実行する前に、前記プロセッサに、前記埋め込み対象データを暗号化させるための命令をさらに含む、請求項１４に記載のシステム。
【請求項１７】
前記プログラミング命令は、前記最大安定領域に前記埋め込み対象データを埋め込む前に、前記プロセッサに、
前記最大安定領域が既に前記埋め込み対象データを含んでいるか否かを判断し、
前記最大安定領域が前記埋め込み対象データを含んでいない場合にのみ前記埋め込みを行うこと、
を実行させるための命令をさらに含む、請求項１４に記載のシステム。
【請求項１８】
前記プログラミング命令は、前記最大安定領域に前記埋め込み対象データを埋め込む前に、前記プロセッサに、
前記最大安定領域のサイズが閾値サイズより小さいか否かを判断し、
前記最大安定領域の前記サイズが前記閾値サイズ以上である場合にのみ前記最大安定領域への前記埋め込みを行うこと、
を実行させるための命令をさらに含む、請求項１４に記載のシステム。
【請求項１９】
前記プログラミング命令は、前記最大安定領域の前記サイズが前記閾値サイズより小さいという判断を受けて、前記プロセッサに、最下位ビットアルゴリズムを用いて前記表示フレームに前記埋め込み対象データを埋め込ませるための命令をさらに含む、請求項１８に記載のシステム。
【請求項２０】
前記閾値サイズは、前記埋め込み対象データの長さの４倍に等しい、請求項１８に記載のシステム。
【請求項２１】
前記プロセッサに前記最大安定領域への前記埋め込みを実行させる前記プログラミング命令は、
前記最大安定領域に変換関数を作用して、前記最大安定領域の周波数領域表現を生成し、
空のビットマップを生成し、
前記埋め込み対象データを前記空のビットマップに埋め込むことで埋め込みデータ包含ビットマップを生成し、
前記最大安定領域の前記周波数領域表現の一部を前記埋め込みデータ包含ビットマップで置き換えることで修正周波数領域表現を生成し、
前記修正周波数領域表現に逆変換関数を作用すること、
を実行させるための命令をさらに含む、請求項１８に記載のシステム。
【請求項２２】
前記変換関数は高速フーリエ変換（ＦＦＴ）であり、前記逆変換関数は逆ＦＦＴである、請求項２１に記載のシステム。
【請求項２３】
前記プロセッサに前記最大安定領域の前記周波数領域表現の一部を前記埋め込みデータ包含ビットマップで置き換えさせる前記プログラミング命令は、前記最大安定領域の前記周波数領域表現の右下隅部を置き換えさせるための命令をさらに含む、請求項２１に記載のシステム。
【請求項２４】
前記プロセッサに前記空のビットマップを生成させる前記プログラミング命令は、前記最大安定領域の画素の高さの半分の画素の高さを有し、前記最大安定領域の画素の長さの半分の画素の長さを有する前記空のビットマップを生成させるための命令を含む、請求項２１に記載のシステム。
【請求項２５】
前記プログラミング命令は前記プロセッサに、
前記埋め込みデータ包含領域に識別子を組み込み、
前記キャッシュにおいて、前記最大安定領域を前記埋め込みデータ包含領域に置き換えること、
を実行させるための命令をさらに含む、請求項１４に記載のシステム。
【請求項２６】
前記プロセッサに前記表示フレームにおいて前記１つ以上の安定領域を特定させる前記プログラミング命令は、前記表示フレームを前記動画像に関連付けられた少なくとも１つの以前の表示フレームと比較させるための命令を含む、請求項１４に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、リモートセッション表示でのデータの埋め込みに関する。特に、本発明は、リモートセッション表示に関連付けられた動画像の安定領域に不可視データを埋め込むことで、動画像から情報を不正取得するのを防止するシステム及び方法に関する。
【背景技術】
【０００２】
ますます多くの人々が、種々の目的で、私的な状況又はビジネスシーンでモバイルデバイスを使用している。電子メールの送受信、アポイントメントの管理、メディアファイルの共有、メディアコンテンツの消費、その他の多くのアクティビティを、ときには遠隔地から又は意外な場所から行うために、人々はこれらのデバイスを頻繁に使用している。これらのデバイスは人気が拡大し続けており、ますます多くの業務用アプリケーションを提供していることから、企業のモバイルアプリケーションは、従業員に対し、自分のモバイルデバイスからネットワーク化された企業アプリケーションへアクセスする手段を提供している。クラウドベースのアプリケーションとデバイスの出現によって、ユーザは、多数の異なるデバイスを通じて、自身の電子メール、文書、その他のモバイルアプリケーションにアクセスすることができる。
【０００３】
モバイルユーザが公共の場所で時間を過ごすとき、自身のモバイルデバイスで電子メールやメモを頻繁にチェックし、機密文書を開くことによって、機密のコンテンツにアクセスしている。公共の場所で文書を作成して読むモバイルユーザは、自身のモバイルデバイスで様々な極秘且つ安全なコンテンツにアクセスしている。さらに、仮想化技術により、パブリック又はプライベートネットワークを通じて、コンピュータ資源及び／又は企業アプリケーションにリモートアクセスを提供することが可能となっている。ユーザは、種々のクライアントを使って、仮想環境下のホストコンピュータ上で実行されている仮想デスクトップ又はアプリケーションにアクセスすることができる。現在、仮想環境下のモバイルデバイス及び／又はリモートデバイスで安全なコンテンツをこのように消費する者は、公共の場でそのようなコンテンツにアクセスした場合、ユーザのモバイルデバイス上でその安全なコンテンツが丸見えで表示され、及び／又は、再生されることがあるため、その安全なコンテンツを公開する危険を冒してしまう。公の場でユーザがそのような安全なコンテンツにアクセスするとき、すぐ近くにいる人は誰でも、その安全なコンテンツを見ることができ、及び／又は、聴くことができる。モバイルデバイスの近くにいる誰かが、公共の場でユーザのモバイルデバイス又はリモートデバイスでアクセスされた機密のコンテンツを写真撮影し、動画撮影し、及び／又は録音すれば、モバイルユーザの知らないうちに、その機密のコンテンツが盗まれることさえある。
【０００４】
同様のセキュリティ及びプライバシー上の問題は、他の環境下でも起こり得る。例えば、現金自動預払機（ＡＴＭ）は簡単に利用可能であるが、利便性のために目立つ場所に設置されるのが一般的である。選ばれた公共の場所は人目に付きやすいことから、観察が容易である。これにより、ユーザが自身のＡＴＭカードをＡＴＭに挿入し、続けて暗証番号（ＰＩＮ）を入力したとき、無許可の人がＡＴＭユーザの秘密情報を取得することが可能になる。
【０００５】
ユーザインターフェイスに表示された画像に特定可能データ（例えば、デジタル透かし）を埋め込むことで、上述の問題を緩和することができる。埋め込まれたデータがユーザに知覚できないように、又はほとんど知覚できないように画像を修正することができるが、自動検出プロセスによって検出することができる。よって、元の画像又はデータファイルに対する不正アクセス又は複写をすれば、抽出されたデータによってファイルの法的所有権の不存在をさらけ出す危険を冒してしまう、といった方策を講じることが可能である。
【０００６】
様々な方法によって画像にデータを埋め込むことができる。そのような方法の１つは、画像の各画素値を示すビット情報の最下位ビットにデータを埋め込むか又は隠すというものである。すなわち、データサンプルの最下位ビットにデータを隠す（例えば、１画素画像あたり８ビットでは、領域Ｉは７つの最上位ビットからなり、領域ＩＩは最下位ビットからなる。）。そのようなプロセスは単純で速いが、サイズ変更、カラースキーム調整、画像圧縮など、グラフィック画像になされた単純な修正に対して脆弱である。別のアプローチは、画像の周波数領域表現にデータを埋め込むか又は隠すというものであり、周波数領域表現は、画像の空間領域表現上で数学的変換（例えば、２次元高速フーリエ変換「ＦＦＴ」）を行うことによって得られる。しかしながら、このアプローチは、計算コストが高く、一般に、静止画のみにデータを埋め込む際に使用される。（特に、仮想環境下のリモートデバイスに画像データを送信するときに）このアプローチを用いて、リアルタイムで動画像の各画面フレームにデータを埋め込むことは、結果として性能損失が生じることから、非現実的である。
【発明の概要】
【０００７】
リモートセッション表示の動画像にデータを埋め込むシステム及び方法を実施すること。当該方法は、プロセッサによって、動画像に関連付けられた表示フレームを受信し、表示フレームに埋め込まれる埋め込み対象データを受信し、表示フレームにおいて１つ以上の安定領域を特定し、１つ以上の安定領域を特定すると、キャッシュを更新し、キャッシュにおいて表示フレームに対応する最大安定領域を特定し、埋め込み対象データを最大安定領域に埋め込むことで埋め込みデータ包含領域を生成することを含む。キャッシュは、動画像に関連付けられた１つ以上の表示フレームに対応する複数の安定領域を有する。
【０００８】
いくつかのシナリオにおいて、当該方法は、表示フレームにおける最大安定領域に対応する領域を埋め込みデータ包含領域に置き換えることで合成フレームを作成することをさらに含む。いくつかのシナリオにおいて、当該方法は、埋め込みを実行する前に、埋め込み対象データを暗号化することをさらに含む。
【０００９】
あるシナリオにおいて、当該方法は、最大安定領域に埋め込み対象データを埋め込む前に、最大安定領域が既に埋め込み対象データを含んでいるか否かを判断し、最大安定領域が埋め込み対象データを含んでいない場合にのみ埋め込みを行うこと、をさらに含む。
【００１０】
１つ以上のシナリオにおいて、当該方法は、最大安定領域に埋め込み対象データを埋め込む前に、最大安定領域のサイズが閾値サイズより小さいか否かを判断し、最大安定領域のサイズが閾値サイズ以上である場合にのみ最大安定領域への埋め込みを実行すること、を含む。閾値サイズは、埋め込み対象データの長さの４倍に等しい。いくつかのシナリオでは、最大安定領域のサイズが閾値サイズより小さいという判断を受けて、当該方法は、最下位ビットアルゴリズムを用いて表示フレームに埋め込み対象データを埋め込むことを含む。最大安定領域に埋め込みを実行することは、最大安定領域に変換関数を作用して、最大安定領域の周波数領域表現を生成し、空のビットマップを生成し、埋め込み対象データを空のビットマップに埋め込むことで埋め込みデータ包含ビットマップを生成し、最大安定領域の周波数領域表現の一部を埋め込みデータ包含ビットマップで置き換えることで修正周波数領域表現を生成し、修正周波数領域表現に逆変換関数を作用すること、を含んでもよい。変換関数は高速フーリエ変換（ＦＦＴ）であり、逆変換関数は逆ＦＦＴであってよい。あるシナリオにおいて、最大安定領域の周波数領域表現の一部を埋め込みデータ包含ビットマップで置き換えることは、最大安定領域の周波数領域表現の右下隅部を置き換えることを含んでよい。空のビットマップを生成することは、最大安定領域の画素の高さの半分の画素の高さを有し、最大安定領域の画素の長さの半分の画素の長さを有する空のビットマップを生成することを含んでよい。
【００１１】
１つ以上のシナリオにおいて、当該方法は、埋め込みデータ包含領域に識別子を組み込み、キャッシュにおいて、最大安定領域を埋め込みデータ包含領域に置き換えることを含んでよい。
【００１２】
いくつかのシナリオにおいて、表示フレームにおいて１つ以上の安定領域を特定することは、表示フレームを動画像に関連付けられた少なくとも１つの以前の表示フレームと比較することを含んでよい。
【図面の簡単な説明】
【００１３】
以下の図面を参照して実施形態を説明するが、図面全体を通して、同様の参照符号は同様の特徴を表す。
【００１４】
図１は、本願に記載された１つ以上の実施態様に従って用いられるコンピュータシステムアーキテクチャの例を示す。
【００１５】
図２は、本願に記載された１つ以上の実施態様に従って用いられるリモートアクセスシステムアーキテクチャの例を示す。
【００１６】
図３は、本願に記載された１つ以上の実施態様に係る、コンピューティングデバイスのアーキテクチャの例のブロック図を示す。
【００１７】
図４は、本願に記載された１つ以上の実施態様に係る、リモートセッション表示でデータを埋め込むシステムの例を示す。
【００１８】
図５は、本願に記載された１つ以上の実施態様に係る動画像の例を示す。
【００１９】
図６は、本願に記載された１つ以上の実施態様に係る、リモートセッション表示でデータを埋め込む方法の例を示すフローチャートである。
【００２０】
図７は、本願に記載された１つ以上の実施態様に係る、一定期間にわたるリモートセッション表示での画像に対応する表示フレームの例を示す。
【００２１】
図８は、本願に記載された１つ以上の実施態様に係る、フレームの最大安定領域にデータを埋め込む方法の例を示すフローチャートである。
【００２２】
図９は、本願に記載された１つ以上の実施態様に係る、フレームの最大安定領域にデータを埋め込む方法の例を示す模式図である。
【発明を実施するための形態】
【００２３】
本願で一般的に説明され、添付図面に示された実施形態の構成要素は、多種多様な異なる構成で配置及び設計され得ることが容易に理解されよう。したがって、図示されている様々な実施形態の以下のより詳細な説明は、本開示の範囲を限定するものではなく、様々な実施形態の単なる代表例である。実施形態の様々な態様が図示されているが、特に明示しない限り、図面は必ずしも縮尺通りに描かれていない。
【００２４】
本発明は、その趣旨又は本質的な特徴から逸脱することなく、他の特定の形態で具現化することができる。記載された実施形態は、あらゆる点で単なる例示にすぎず、限定的に解釈してはならない。したがって、本発明の範囲は、添付の特許請求の範囲によって示されるのであって、この詳細な説明にはなんら拘束されない。特許請求の範囲の均等物の意味及び範囲内における変更はすべて本発明の範囲内に包含されるべきである。
【００２５】
本明細書全体を通して、特徴、利点、又は類似の文言への言及は、本発明で実現され得る特徴及び利点のすべてが本発明の任意の単一の実施形態であるべきであることを意味しない。むしろ、特徴及び利点に言及する文言は、実施形態に関連して説明される特定の特徴、利点、又は特性が本発明の少なくとも１つの実施形態に含まれることを意味すると理解される。したがって、本明細書全体にわたる特徴及び利点、並びに類似の文言の議論は、必ずしもそうではないが、同じ実施形態を指す場合がある。
【００２６】
さらに、本発明の記載された特徴、利点、及び特性は、１つ以上の実施形態において任意の適切な方法で組み合わせることができる。当業者は、本願の説明に照らして、特定の実施形態の１つ以上の特定の特徴又は利点なしで本発明が実施可能であることを認識するであろう。他の例では、本発明のすべての実施形態で示されていないある実施形態において、追加の特徴及び利点が認識される場合がある。
【００２７】
本明細書全体を通して、「一実施形態」（one embodiment）、「実施形態」（an embodiment）、又は同様の文言への言及は、示された実施形態に関連して説明された特定の特徴、構造、又は特性が本発明の少なくとも１つの実施形態に含まれることを意味する。したがって、本明細書全体を通して、「一実施形態では」（in one embodiment）、「実施形態では」（in an embodiment）という用語、及び同様の文言は、必ずしもそうではないが、すべて同じ実施形態を指す場合がある。
【００２８】
本文書で用いられている単数形「a」、「an」、及び「the」は、文脈上特に明記されていない限り、複数形の言及を含む。別段に定義されていない限り、本願で用いられているすべての技術用語及び科学用語は、当業者によって一般に理解されるのと同じ意味を有する。本文書で用いられている「備える／有する」（comprising）という用語は、「含むが、それに限定されない」（including, but not limited to）ことを意味する。
【００２９】
本願で用いられている「動画像」は、ユーザ相互作用、アプリケーション実行など（これらに限定されない。）のパラメータによって時間とともに変化するグラフィック環境又は空間（例えば、ユーザインターフェイスに関連付けられたディスプレイ）に表示された画像を指す。動画像は、一連の「表示フレーム」（又は「フレーム」）を用いて生成され、各々の後続の表示フレーム（ＡＮ）は、前に作成された表示フレーム（ＡＮ−１）の領域とは異なるある領域（「過渡領域」）と、表示フレームＡＮ−１の領域と同一のある領域（「安定領域」）とを含む。
【００３０】
図１を参照すると、スタンドアロン環境及び／又はネットワーク化された環境で本願に記載された実施形態が実行されるシステムアーキテクチャの例を表す概略ブロック図が示されている。コンピュータソフトウェア、ハードウェア及びネットワークは、スタンドアロン環境、ネットワーク化された環境、リモートアクセス（リモートデスクトップとも呼ぶ。）環境、仮想環境、及び／又はクラウドベースの環境などを含む、種々の異なるシステム環境で用いられている。
【００３１】
図１に示すように、様々なネットワークノード（又はデバイス）１０３、１０５、１０７、及び１０９が、インターネットなどのワイドエリア・ネットワーク（ＷＡＮ）１０１を介して相互接続される。専用イントラネット、企業ネットワーク、ＬＡＮ、メトロポリタン・エリア・ネットワーク（ＭＡＮ）、無線ネットワーク、パーソナルネットワーク（ＰＡＮ）など、他のネットワークを追加で用いてもよいし、又は代わりに用いてもよい。ネットワーク１０１は、例示目的で示されており、より少ない又は追加のコンピュータネットワークで置き換えられる。ローカルエリア・ネットワーク（ＬＡＮ）は、任意の公知のＬＡＮトポロジーのうちの１つ以上を有しており、イーサネット（登録商標）など、種々の異なるプロトコルのうちの１つ以上を使用している。デバイス１０３、１０５、１０７、１０９及び他のデバイス（図示せず）は、ツイストペア線、同軸ケーブル、光ファイバ、電波又は他の通信媒体を介して、複数のネットワークのうちの１つ以上に接続されている。
【００３２】
本願で用いられ、図示された「ネットワーク」という用語は、複数のリモート記憶装置が１つ以上の通信路を介して互いに接続されるシステムだけでなく、記憶機能を有するそのようなシステムに時々接続されるスタンドアロンの装置をも指す。よって、「ネットワーク」という用語は、「物理ネットワーク」だけでなく、単一のエンティティに帰属するデータからなり、全ての物理ネットワークを通して存在する「コンテンツネットワーク」をも含んでいる。
【００３３】
構成要素として、データサーバ１０３、ウェブサーバ１０５、クライアントコンピュータ１０７及び１０９が挙げられる。データサーバ１０３は、データベースのアクセス、制御、及び管理を包括的に行い、本願に記載された１つ以上の実施態様を実行するソフトウェアを制御する。データサーバ１０３は、ユーザがやりとりして、要望通りのデータを取得するウェブサーバ１０５に接続されている。データサーバ１０３は、ネットワーク１０１を介してウェブサーバ１０５とクライアントコンピュータ１０７及び１０９とに接続されたモバイルデバイスである。あるいは、データサーバ１０３は、ウェブサーバ自体として機能してもよく、インターネットに直接接続される。データサーバ１０３は、ネットワーク１０１（例えば、インターネット）を経由して、直接的若しくは間接的な接続を介して、又は他のネットワークを介して、ウェブサーバ１０５に接続されてもよい。ユーザは、リモートコンピュータ１０７及び１０９を用い、例えば、ウェブサーバ１０５によってホストされ、外部に公開された１つ以上のウェブサイトを介してデータサーバ１０３に接続するウェブブラウザを使用して、データサーバ１０３とやりとりをする。クライアントコンピュータ１０７及び１０９を、データサーバ１０３と連動して用いることで、サーバに記憶されたデータにアクセスしてもよいし、又は他の目的で用いてもよい。例えば、ユーザは、クライアントデバイス１０７から、当技術分野で周知のようにインターネットブラウザを使用して、又は（インターネットなどの）コンピュータネットワーク上でウェブサーバ１０５及び／又はデータサーバ１０３と通信するソフトウェア・アプリケーションを実行することによって、ウェブサーバ１０５にアクセスする。
【００３４】
サーバ及びアプリケーションは、同一の物理マシン上で統合されて別個の仮想若しくは論理アドレスを保持するか、又は、別々の物理マシンに存在する。図１は、使用され得るネットワークアーキテクチャの一例を示しているにすぎず、さらに本願で説明されるように、当業者であれば、使用する特定のネットワークアーキテクチャ及びデータ処理装置は変化してもよく、それらが提供する機能に伴うものであることを理解するであろう。例えば、ウェブサーバ１０５及びデータサーバ１０３によって提供されるサービスは、単一のサーバ上に統合されてもよい。
【００３５】
各構成要素１０３、１０５、１０７、１０９は、図３を参照して後述するように、各種の公知のコンピュータ、サーバ、又はデータ処理装置である。
【００３６】
図２をさらに参照すると、本願に記載された１つ以上の態様は、リモートアクセス環境で実施される。図２は、安全な環境でマネージドアプリケーションへのリモートアクセスをそのユーザに提供する汎用コンピューティングデバイス（例えば、モバイルコンピューティングデバイス）２０１を備えるシステムアーキテクチャの例を示している。コンピューティングデバイス２０１は、端末２４０ａ、２４０ｂ、及び２４０ｎなど（クライアントデバイス、クライアント、又はクライアントマシンとも呼ぶ。）、１つ以上のリモートコンピュータへの接続をサポートするネットワーク化された環境で動作する。端末２４０ａ、２４０ｂ、及び２４０ｎは、図３で後述する構成要素の大部分又は全てを有するパーソナルコンピュータ、モバイルデバイス、ラップトップコンピュータ、タブレット、又はサーバである。図２に示すネットワーク接続は、ローカルエリア・ネットワーク（ＬＡＮ）２２５とワイドエリア・ネットワーク（ＷＡＮ）２２９とを備えているが、他のネットワークを備えてもよい。コンピューティングデバイス２０１は、ＬＡＮネットワーク環境下で使用されるとき、ネットワーク・インターフェイス又はアダプタを介してＬＡＮ２２５に接続される。コンピューティングデバイス２０１は、ＷＡＮネットワーク環境下で使用されるとき、コンピュータネットワーク２３０（例えば、インターネット）など、ＷＡＮ２２９上での通信を確立するためのモデム又は他のワイドエリア・ネットワーク・インターフェイスを備える。図示されたネットワーク接続は例示であり、コンピュータ間の通信リンクを確立する他の手段を用いてもよいことを理解されたい。コンピューティングデバイス２０１及び／又は端末２４０ａ、２４０ｂ、及び２４０ｎは、バッテリ、スピーカー、及びアンテナなど（図示せず）、他の様々な構成要素を備えるモバイル端末（例えば、携帯電話、スマートフォン、パーソナルデジタルアシスタント（ＰＤＡ）、ノート型パソコンなど）であってもよい。
【００３７】
本願に記載された態様は、多くの他の汎用若しくは専用コンピュータシステム、環境又は構成によっても動作可能である。本願に記載された態様での使用に適した他のコンピュータシステム、環境、及び／又は構成の例として、パーソナルコンピュータ、サーバコンピュータ、携帯又はラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル消費者エレクトロニクス、ネットワークパーソナルコンピュータ（ＰＣ）、ミニコンピュータ、メインフレームコンピュータ、上述のシステム又はデバイスのいずれかを備える分散コンピューティング環境などが挙げられるが、これらに限定されない。
【００３８】
図２に示すように、１つ以上のクライアントデバイス２４０ａ、２４０ｂ、及び２４０ｎは、１つ以上のサーバ２０６ａ−Ｎと通信可能である。一実施形態では、コンピューティング環境２００は、サーバ２０６ａ−Ｎとクライアントデバイス２４０ａ、２４０ｂ、及び２４０ｎとの間に設置されたネットワークアプライアンス（ここでは図示せず）を備えてもよい。ネットワークアプライアンスはクライアント／サーバ接続を管理しており、場合によっては、複数のバックエンドサーバ２０６ａ−Ｎ間でクライアント接続の負荷を分散することができる。いくつかの実施形態において、コンピューティングデバイス２０１は、他のクライアントデバイス２４０ａ、２４０ｂ、及び２４０ｎと通信可能なモバイルクライアントデバイスであってもよい。
【００３９】
いくつかの実施形態において、クライアントデバイス２４０ａ、２４０ｂ、及び２４０ｎは単一クライアントマシン、又は単一グループのクライアントマシンと称され、一方、サーバ２０６ａ−Ｎは、単一サーバ、又は単一グループのサーバと称される。一実施形態では、単一クライアントマシンは２つ以上のサーバと通信し、別の実施形態では、単一サーバは、２つ以上のクライアントマシンと通信する。さらに別の実施形態では、単一クライアントマシンは単一サーバと通信する。
【００４０】
いくつかの実施形態において、クライアントマシンは、以下に例示した用語のいずれか１つを指すものとしてよい：クライアントマシン；クライアント；クライアントコンピュータ；クライアントデバイス；クライアントコンピューティングデバイス；ローカルマシン；リモートマシン；クライアントノード；エンドポイント；又はエンドポイントノード。いくつかの実施形態において、サーバは、以下に例示した用語のいずれか１つを指すものとしてよい：サーバ；ローカルマシン；リモートマシン；サーバファーム；又はホストコンピューティングデバイス。
【００４１】
一実施形態では、クライアントマシンは仮想マシンであってもよい。仮想マシンを任意の仮想マシンとすることができ、いくつかの実施形態において、仮想マシンを、例えば、Citrix Systems、IBM、VMwareにより開発されたハイパーバイザ、又は他のハイパーバイザなど、Type 1又はType 2ハイパーバイザによって管理された任意の仮想マシンとすることができる。いくつかの態様では、仮想マシンはあるハイパーバイザによって管理されてもよく、別の態様では、仮想マシンは、サーバ上で実行するハイパーバイザ又はクライアント上で実行するハイパーバイザによって管理されてもよい。
【００４２】
いくつかの実施形態は、サーバ上又は他の遠隔配置されたマシン上で遠隔実行するアプリケーションによって生成されたアプリケーション出力を表示するクライアントデバイスを含む。これらの実施形態において、クライアントデバイスは、仮想マシン受信機プログラム又はアプリケーションを実行して、アプリケーションウィンドウ、ブラウザ、又は他の出力ウィンドウに出力を表示する。一例では、当該アプリケーションはデスクトップであり、他の例では、当該アプリケーションは、デスクトップを生成又は提示するアプリケーションである。本願で使用されるように、デスクトップとは、１つ以上のアプリケーションがホスト及び／又は実行され得るグラフィック環境又は空間のことをいう。デスクトップは、ローカル及び／又はリモートアプリケーションを統合することができるオペレーティングシステムのインスタンス用の動画像の方式でユーザインターフェイスを提供するグラフィカルシェルを含めてもよい。アプリケーションは、オペレーティングシステムのインスタンス（及び、任意選択でデスクトップも）がロードされた後に実行するプログラムを含めてもよい。オペレーティングシステムの各インスタンスは、物理的なもの（例えば、１デバイスにつき１つのオペレーティングシステム）でもよいし、又は仮想的なもの（例えば、単一デバイス上で動作するＯＳの多数のインスタンス）でもよい。各アプリケーションは、ローカルデバイス上で実行されてもよいし、又は遠隔配置されたデバイス（例えば、リモート）上で実行されてもよい。
【００４３】
いくつかの実施形態において、サーバは、リモートプレゼンテーションプロトコル又は他のプログラムを使用して、クライアント上で実行するシンクライアント又はリモート表示アプリケーションにデータを送信し、サーバ上で実行するアプリケーションによって生成された表示出力を提示する。シンクライアント又はリモート表示プロトコルは、以下に例示列挙したプロトコルのいずれか１つとすることができる：フロリダ州フォートローダーデールのCitrix Systems, Inc.によって開発されたIndependent Computing Architecture（ＩＣＡ）プロトコル；又は、ワシントン州レドモンドのMicrosoft Corporationによって製造されたRemote Desktop Protocol（ＲＤＰ）。
【００４４】
リモートコンピューティング環境は、例えば、クラウドコンピューティング環境で複数のサーバが論理的にグループ化されてサーバファームとなるように、２つ以上のサーバを備えてよい。サーバファームは、地理的に分散されて論理的にグループ化されたサーバを設けてもよいし、又は互いに近接して位置し、論理的にグループ化されたサーバを設けてもよい。サーバファーム内で地理的に分散したサーバは、いくつかの実施形態では、ＷＡＮ（ワイド）、ＭＡＮ（メトロポリタン）、又はＬＡＮ（ローカル）を用いて通信することができる。ここで、異なる地理的領域を以下のように特徴付けることができる：異なる大陸；一大陸での異なる地域；異なる国；異なる州；異なる都市；異なるキャンパス；異なる部屋；又は、前述の地理的位置の任意の組み合わせ。いくつかの実施形態において、サーバファームは単一のエンティティとして管理してよく、一方、他の実施形態において、サーバファームは複数のサーバファームを設けてもよい。
【００４５】
いくつかの実施形態において、サーバファームは、実質的に同様の種類のオペレーティングシステムプラットフォーム（例えば、WINDOWS（登録商標）、UNIX（登録商標）、LINUX（登録商標）、iOS、ANDROID（登録商標）、SYMBIANなど）を実行するサーバを設けてもよい。他の実施形態において、サーバファームは、第１タイプのオペレーティングシステムプラットフォームを実行する１つ以上のサーバからなる第１グループと、第２タイプのオペレーティングシステムプラットフォームを実行する１つ以上のサーバからなる第２グループと、を設けてもよい。
【００４６】
サーバは、必要に応じて、例えば、ファイルサーバ、アプリケーションサーバ、ウェブサーバ、プロキシサーバ、アプライアンス、ネットワークアプライアンス、ゲートウェイ、アプリケーションゲートウェイ、ゲートウェイサーバ、仮想化サーバ、デプロイメントサーバ、セキュア・ソケット・レイヤ（ＳＳＬ）ＶＰＮサーバ、ファイアウォール、ウェブサーバ、アプリケーションサーバなどの各種のサーバとして構成してもよいし、又は、ファイアウォール機能、アプリケーション機能、若しくは負荷分散機能を提供する、マスタアプリケーションサーバ、アクティブディレクトリを実行するサーバ、若しくはアプリケーション加速プログラムを実行するサーバとして構成してもよい。他のサーバ種も使用することができる。
【００４７】
いくつかの実施形態は、クライアントマシンからのリクエストを受信し、そのリクエストを第２サーバに転送し、第２サーバからの応答とともに、クライアントマシンによって生成されたリクエストに応答する第１サーバを含む。第１サーバは、クライアントマシンが利用可能なアプリケーションの一覧を取得することができる上に、アプリケーションの一覧内で特定されたアプリケーションをホストするアプリケーションサーバに関連するアドレス情報も取得することができる。そして、第１サーバは、ウェブインターフェイスを用いてクライアントのリクエストに対する応答を提示することができ、クライアントに直接通信して、特定されたアプリケーションへのアクセスをクライアントに提供することができる。１つ以上のクライアント及び／又は１つ以上のサーバは、ネットワーク２３０、例えばネットワーク１０１を介して、データを送信することができる。
【００４８】
図２に示すデスクトップ仮想化システムのアーキテクチャは、仮想デスクトップ及び／又は仮想アプリケーションを１つ以上のクライアントアクセスデバイスに提供するように構成された少なくとも１つの仮想化サーバを含む、単一サーバ若しくはマルチサーバシステム、又はクラウドシステムであってよい。
【００４９】
図３を参照すると、コンピューティングデバイス３００のアーキテクチャの例の詳細なブロック図が示されており、ここで、本発明が実施され、コンピューティングデバイス３００の任意の実施形態として配置及び／又は実行され得る。したがって、以下のコンピューティングデバイス３００の説明は、図１のアーキテクチャ１００及び図２の２００の実施を理解するのに十分である。コンピューティングデバイス３００は、好適な動作環境の１つの例にすぎず、本発明の実施の範囲又は機能についての限定を示唆するものではない。本発明の使用に適した他の周知のコンピューティングシステム、環境、及び／又は構成として、パーソナルコンピュータ、サーバコンピュータ、携帯又はラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラマブル消費者エレクトロニクス、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、仮想マシン、上述のシステム又はデバイスのいずれかを備える分散コンピューティング環境などが挙げられるが、これらに限定されない。
【００５０】
コンピューティングデバイス３００の構成要素は、図３に示された構成要素よりも多くても少なくてもよい。しかしながら、図示されている構成要素は、本解決手段を実施する例示的な実施形態を開示するのに十分である。図３のハードウェアアーキテクチャは、ソフトウェア・アプリケーションの検査、サポート、及び遠隔実行を促進するように構成された代表的なコンピューティングデバイスの一実施形態を表す。したがって、図３のコンピューティングデバイス３００は、後述のように、動的リモートセッション表示で機密データを埋め込む方法の少なくとも一部を実施する。
【００５１】
コンピューティングデバイス３００の一部又は全ての構成要素は、ハードウェア、ソフトウェア、及び／又はハードウェアとソフトウェアとの組み合わせとして実現することができる。ハードウェアとして、１つ以上の電子回路が挙げられるが、これに限定されない。電子回路として、受動素子（例えば、抵抗器及びコンデンサ）及び／又は能動素子（例えば、増幅器及び／又はマイクロプロセッサ）を挙げることができるが、これらに限定されない。受動素子及び／又は能動素子は、本願に記載された手法、手順、又は機能のうちの１つ以上を実行するように構成され、配置され、及び／又はプログラムされ得る。
【００５２】
図３に示すように、コンピューティングデバイス３００は、ユーザインターフェイス３０２と、中央処理装置（ＣＰＵ）３０６と、システムバス３１０と、システムバス３１０を介してコンピューティングデバイス３００の他の部分に接続され、且つ他の部分によってアクセス可能なメモリ３１２と、システムバス３１０に接続されたハードウェアエンティティ３１４と、を備える。ユーザインターフェイスには、入力デバイス（例えば、キーパッド３５０）及び出力デバイス（例えば、スピーカー３５２、ディスプレイ３５４、及び／又は発光ダイオード３５６）を設けることができ、コンピューティングデバイス３００の動作を制御するためのユーザ−ソフトウェア相互作用を促す。
【００５３】
ハードウェアエンティティ３１４の少なくとも一部は、メモリ３１２へのアクセス及び使用を伴うアクションを実行する。メモリ３１２として、ＲＡＭ、ディスクドライバ及び／又はCompact Disc Read Only Memory（ＣＤ−ＲＯＭ）が採用され得る。ハードウェアエンティティ３１４は、コンピュータ読み取り可能な記憶媒体３１８を有するディスクドライブユニット３１６を備えることができる。コンピュータ読み取り可能な記憶媒体３１８には、本願に記載された手法、手順、又は機能のうちの１つ以上を実行する一組以上の命令３２０（例えば、ソフトウェアコード）が記憶されている。命令３２０は、コンピューティングデバイス３００によるＣＰＵ３０６の実行中にＣＰＵ３０６内に及び／又はメモリ３１２内に、完全に又は少なくとも部分的に常駐することもできる。メモリ３１２及びＣＰＵ３０６は、機械読み取り可能な媒体を構成することもできる。ここで「機械読み取り可能な媒体」とは、一組以上の命令３２０を記憶する単一の媒体又は複数の媒体（例えば、集中型若しくは分散型データベース、及び／又は関連するキャッシュ及びサーバ）を指す。また、「機械読み取り可能な媒体」は、コンピューティングデバイス３００による実行のための命令の組を記憶、符号化、又は搬送することができ、且つ、コンピューティングデバイス３００に本願記載の手法のいずれか１つ以上を実行させる任意の媒体も指している。
【００５４】
いくつかのシナリオにおいて、ハードウェアエンティティ３１４は、後述のように、動的リモートセッション表示で機密データを埋め込む方法を促進するためにプログラムされた電子回路（例えば、プロセッサ）を備える。この点に関して、電子回路は、コンピューティングデバイス３００にインストールされたソフトウェア・アプリケーション３２４にアクセスして動作させることができることを理解されたい。ソフトウェア・アプリケーション３２４の機能は、説明が進むにつれて明らかになるであろう。
【００５５】
一実施形態では、コンピューティングデバイス３００は仮想マシンであってもよい。仮想マシンを任意の仮想マシンとすることができ、いくつかの実施形態では、仮想マシンを、Citrix Systems、IBM、VMwareにより開発されたハイパーバイザ、又は他のハイパーバイザによって管理された任意の仮想マシンとすることができる。別の実施形態では、仮想マシンは任意のハイパーバイザによって管理されもよく、さらに別の実施形態では、仮想マシンは、サーバ上で実行するハイパーバイザ又はクライアントマシン上で実行するハイパーバイザによって管理されてもよい。
【００５６】
図４には、リモートセッション表示でデータを埋め込むシステムの一実施形態が示されている。図４は、ホストマシン４００とリモートコンピューティングマシン４０１とに関連付けられ、安定領域検出器４４１及びデータ埋め込みモジュール４４２を備えたエンコーダ４０４を示す図である。この実施形態において、リモートコンピューティングマシン４０１は、例えば、リモートデスクトップセッションを介して、ホストマシン４００のクライアント（例えば、シンクライアント）として動作するように構成される。リモートコンピューティングマシン４０１を用いることで、ホストマシン４００で動作するアプリケーションと通信リンクを介して相互作用することができる。ホストマシン４００は、リモートデスクトップセッションの期間中、アプリケーションとのユーザ相互作用に対する応答を表すユーザインターフェイス（例えば、ディスプレイ４５５）上の動画像を生成する一連の表示フレームを、リモートコンピューティングマシン４０１に送信するよう構成することができる。
【００５７】
このシステムは、１つ以上のアプリケーション４２０を実行するホストマシン４００を備えることができ、各アプリケーションは、同様にホストマシン４００上で実行するフレームバッファ４０２に送出可能な表示出力（すなわち、表示フレーム）を生成することができる。フレームバッファ４０２は、受信した表示フレームを、ホストマシン４００上で実行するエンコーダ４０４に送出可能であり、エンコーダ４０４は、追加情報のためにキャッシュ４１４とさらに通信可能であり、エンコーダ４０４及びキャッシュ４１４の双方は、アプリケーション／デスクトップデリバリシステム４２２と通信可能である。実施形態では、エンコーダ４０４はまた埋め込みモジュール４４２を備える。アプリケーション／デスクトップデリバリシステム４２２は、リモートコンピューティングマシン４０１と通信し、特に、リモートコンピューティングマシン４０１上で実行するクライアントエージェント４２４と、プレゼンテーションレベルプロトコルを介して仮想チャネル４０６で通信する。クライアントエージェント４２４は、リモートコンピューティングマシン４０１上で実行するデコーダ４０８に表示フレームコンテンツを送信可能である。デコーダ４０８は、リモートコンピューティングマシン４０１上でフレームバッファ４１０及びキャッシュ４１６と通信可能であり、ディスプレイ４５５上に出力される表示フレームを提供可能である。
【００５８】
図４を参照すると、より詳細には、一実施形態において、ホストマシン４００及びリモートコンピューティングマシン４０１は、本願に記載されたコンピューティングマシンのいずれかであってよい。別の実施形態では、ホストマシン４００をサーバ又はサーバファームとし、リモートコンピューティングマシン４０１をクライアントとしてもよい。一方、他の実施形態において、ホストマシン４００をクライアントとし、リモートコンピューティングマシン４０１をサーバ、サーバファーム内のサーバ、又はサーバファームとしてもよい。さらに他の実施形態において、ホストマシン４００を第１コンピューティングマシンとし、リモートコンピューティングマシン４０１を第２コンピューティングマシンとしてもよく、他の実施形態において、ホストマシン４００を第２コンピューティングマシンとし、リモートコンピューティングマシン４０１を第１コンピューティングマシンとしてもよい。さらに、ホストマシン４００とリモートコンピューティングマシン４０１とは、本願に記載された任意のプレゼンテーションレベルプロトコルなどのプレゼンテーションレベルプロトコルを介して仮想チャネル４０６で通信可能である。ホストマシン４００とリモートコンピューティングマシン４０１との間の通信は、本願に記載されたネットワークのいずれかなどのネットワークを通じて行うことができる。
【００５９】
一実施形態において、ホストマシン４００は任意の数のアプリケーション４２０を実行可能である。第１アプリケーション、第２アプリケーション、第３アプリケーション、及び任意のｎ個のアプリケーションは、ホストマシン４００上で実行可能である。ここで、ｎは、１と、特定のコンピューティングマシンが実行可能なアプリケーションの任意の最大数との間の整数である。これらのアプリケーションを総称してアプリケーション４２０と呼ぶことができる。
【００６０】
フレームバッファ４０２は、ホストマシン４００上で実行し、エンコーダ４０４と通信し、ソース（例えば、アプリケーション）からのコンテンツ（例えば、表示フレーム）を画素の形で記憶する。いくつかの実施形態において、フレームバッファ４０２は、グラフィックス、グラフィックスコマンド、画像又はその他のグラフィカル若しくはメディアコンテンツを格納可能な任意のバッファとすることができる。いくつかの実施形態において、フレームバッファ４０２は、特定の画像又は画像の一部の画素カラーデータを画素ごとに記憶することができる。この画素カラーデータは、グラフィカル描画コマンドを入力して、ＪＰＥＧ、ビットマップ、ＴＩＦ、ＧＩＦ、ＰＮＧ、又は他のあらゆる種のメディアコンテンツなどの画像を出力する、レンダリング可能な画像から取得することができる。フレームバッファ４０２がアプリケーション４２０及びエンコーダ４０４のみと通信するものとして描画されているが、他の実施形態において、フレームバッファ４０２は、キャッシュ４１４及びアプリケーション／デスクトップデリバリシステム４２２など、ホストマシン４０２内の任意の数のシステム構成要素と通信可能である。
【００６１】
いくつかの実施形態において、フレームバッファ４０２は、少なくとも１つのアプリケーション４２０から、画像／フレームデータ又は表示グラフィックスを受信し、受信したデータ又はグラフィックスをエンコーダ４０４に送出する前にそれを記憶する。実施形態では、フレームバッファ４０２のコンテンツは、例えば、定期的に、又は変化が検出されたとき若しくは他の引き金となるイベントがあったときに、エンコーダ４０４に入力される。他の実施形態において、フレームバッファ４０２は、画像データ又は表示グラフィックスをエンコーダ４０４に送出する前に、画像／フレームデータ又は表示グラフィックスをキャッシュなどの保存場所に記憶する。
【００６２】
多くの実施形態において、エンコーダ４０４は、画像／フレームデータ又は表示グラフィックスを入力し、符号化又は圧縮アルゴリズムに従ってデータ又はグラフィックスを符号化又は圧縮する。一実施形態において、エンコーダ４０４は、入力されたデータ又はグラフィックスを符号化方法に従って符号化し、本願に記載されたように処理する。他の実施形態において、エンコーダ４０４は、データを符号化するとともに、以下の各種の圧縮に従って当該データを圧縮することができる：無損失のもの、損失を伴うもの、Lempel-Ziv、Huffman、Adaptive Huffman、Golomb、又は本願に記載された符号化方法と整合して動作する他のあらゆる圧縮。いくつかの実施形態において、エンコーダ４０４は、符号化及び／又は圧縮された表示フレームを、リモートコンピューティングマシン４０１への送信のためにアプリケーション／デスクトップデリバリシステム４２２に送信する。しかしながら、他の実施形態では、エンコーダ４０４は、符号化及び／又は圧縮された表示フレームをリモートコンピューティングマシン４０１に送信するが、当該符号化／圧縮されたデータをデリバリシステム４２２には送信しない。図４は、エンコーダ４０４がフレームバッファ４０２、キャッシュ４１４、埋め込みモジュール４５０、及びアプリケーション／デスクトップデリバリシステム４２２と通信するものとして描画しているが、エンコーダ４０４は、アプリケーション４２０など、ホストマシン４００上の任意の数の構成要素と通信可能である。いくつかの実施形態では、エンコーダ４０４をフレームバッファ４０２内に設けてもよい。
【００６３】
エンコーダ４０４は１つ以上のモジュールであり、他の構成要素とともに使用するために設計されたパッケージ化された機能的ハードウェアユニットでもよいし、又は、関連した機能のうち、特定のステップに対応する特定の機能を実行するプログラムの一部であってもよい。エンコーダ４０４の１つ以上のモジュールは、安定領域検出器４４１及び埋め込みモジュール４４２を備えることができる。いくつかの実施形態において、これらの構成要素は、エンコーダ４０４内に設けられておらず、エンコーダ４０４に通信可能に接続された別々のモジュールである。安定領域検出器４４１は、表示フレームをメモリ（例えば、システムメモリ、キャッシュ４１４、又はＣＰＵレジスタ）に記憶された以前の表示フレーム及びデータと比較することで、安定な動画像の領域を決定する１つ以上のモジュールであってよい。様々な特徴によって、領域が安定であることを示すことができる（後述）。実施形態において、以前の表示フレームの画素はキャッシュ４１４に記憶されており、安定領域検出器４４１は、現在のフレームが１つ以上の安定領域を含んでいるか否かを判断する。安定領域検出については、以下で図５及び図６を参照してより詳細に説明する。いくつかの実施形態において、安定領域検出器４４１は、以前に特定された安定領域がもはや安定ではないことを検出して埋め込みモジュールに通知する。安定領域検出器４４１が、画像の安定領域を特定した後、安定領域検出器は、それらの領域を埋め込みモジュール４４２に供給することができる。後述のように、埋め込みモジュール４４２は、安定領域にデータを埋め込むことができる。
【００６４】
埋め込みモジュール４４２は、画像の１つ以上の安定領域にデータを埋め込む１つ以上のモジュールであってよい。データとしては、特に限定されないが、画像のソース、画像の著者、画像を表示する表示画面など、デスクトップ上に表示された画像の基になるコンテンツの発信元及び／又は所有者を特定するために使用可能な情報が挙げられる。そのような情報として、ユーザ識別情報、企業情報、画像ソース情報、クライアントデバイス情報などが挙げられるが、これらに限定されない。データとして、さらに、デジタル著作権管理（ＤＲＭ）情報及び／又は条件付きアクセス（ＣＡ）情報（ＣＡＩ）など、エンドユーザ及び／又はエンドユーザデバイスに、関連画像へのアクセス及び／又は関連画像の制御を許可する（又は拒否する）任意の適切な情報も挙げられる。いくつかの実施形態では、埋め込みモジュール４４２として、画像の安定領域に埋め込まれる情報を暗号化する暗号化モジュールが挙げられる。暗号化とは、データを解釈された形から変換し、データを誰にも解釈できないようにするプロセスによって保護するが、暗号化されたデータを復号する方法を有する任意の手段を指すことができる。暗号化は、秘密鍵及び公開鍵暗号を含む、多種多様な暗号化基準及び手法を指してもよい。暗号化及び復号は、パスワード、鍵、又は両方の組み合わせを実行するシステムを介して達成することができる。暗号化方式として、データを暗号化しようとする側とデータを復号しようとする側の間で秘密鍵が交換される対称鍵暗号方式が挙げられる。このような方式は、「共有された秘密」又は「事前共有」暗号化方式とも呼ばれる。そのような暗号化方式として、Advanced Encryption Standard、Blowfish、Twofish、Serpent、CAST5（CAST-128としても知られている。）若しくは他のCASTバリアント（例えば、CAST 256）、Rivest Cipher 4（RC4）若しくは他のRCバリアント（例えば、ARC4）、Triple Data Encryption Standard（Triple DES若しくは3DES）、及びInternational Data Encryption Algorithm（IDEA）を挙げることができる。対称アルゴリズムの例として、AES-128、AES-192、及びAES-256が挙げられる。本開示全体にわたり、対称鍵暗号化が使用又は開示されているが、非対称暗号化その他の暗号化方式を含め、本願に開示されたシステム及び方法を無事に実行する他の暗号化方式を代替的に使用可能であると理解される。
【００６５】
表示フレームの１つ以上の領域にデータが埋め込まれた後、エンコーダ４０４は、表示フレームを符号化し、当該フレームをリモートデバイスに転送し、及び／又は、符号化されたフレームをコンピューティングシステム４００の他の構成要素に提供することができる。
【００６６】
コンピューティング環境内の他のシステム及び構成要素も、本開示に合致する実施形態を実行可能であることを理解されたい。したがって、専用のエンコーダ構成要素に関する本開示は例示である。以降の図、図形、及び説明は、エンコーダ４０４及びその構成要素を本開示に合致する実施形態を実行する例として言及しているが、エンコーダ４０４の構造の開示を限定するものではない。
【００６７】
キャッシュ４１４及び４１６は、本願に記載されたいかなる種の保存場所又はメモリを備えることができる。実施形態において、キャッシュ４１４及び４１６は表示フレームを記憶してよい。一実施形態において、一組の予め定義された画像がキャッシュ４１４及び４１６に記憶される。これらの予め定義された画像又は予め記憶された画像は、より大きな画像の画像部分であってよく、いくつかの実施形態では、インデックスを含んでよい。インデックスは、記憶された画像のＣＲＣを計算することによって、又は、ハッシュ若しくはチェックサムを計算することによって、生成することができる。他の実施形態において、インデックスは、特定の記憶された画像内の画素データを別の記憶された画像内の画素データと区別することができるいかなる識別要素であってよい。
【００６８】
アプリケーション／デスクトップデリバリシステム４２２は、本願に記載されたいかなるアプリケーション／デスクトップデリバリシステム４２２であってよく、いくつかの実施形態では、CITRIX XenAPP又はXen DESKTOPであってよい。アプリケーション／デスクトップデリバリシステム４２２は、通信チャネル４０６を通じて情報をクライアントエージェント４２４に送信する。クライアントエージェント４２４は、本願に記載されたプレゼンテーションレベルプロトコルのいずれかなどのプレゼンテーションレベルプロトコルを介してリモートコンピューティングマシン４０１上で実行する。いくつかの実施形態では、プレゼンテーションレベルプロトコルとして、CITRIX SYSTEMSによって開発されたＩＣＡプロトコル、MICROSOFTによって開発されたＲＤＰプロトコル、又は本願に記載された方法及びシステムで動作するその他のプレゼンテーションレベルプロトコルを挙げることができる。アプリケーション／デスクトップデリバリシステム４２２は、データ、すなわち、フレーム、画像又はグラフィカルデータを受信し、通信チャネル４０６を通じてリモートコンピューティングマシン４０１上のクライアントエージェント４２４にデータを送信することができる。そして、クライアントエージェント４２４は、データを処理し、それをリモートコンピューティングマシン４０１内の任意の数の構成要素に送信することができる。
【００６９】
一実施形態において、クライアントエージェント４２４は、受信したデータを、リモートコンピューティングマシン４０１上で実行するデコーダ４０８に送信する。デコーダ４０８は、エンコーダ４０４によって以前に符号化及び／又は圧縮されたデータを復号及び／又は解凍することができる。図４は、デコーダ４０８が、クライアントエージェント４２４、キャッシュ４１６及びフレームバッファ４１０と通信するものとして描画しているが、いくつかの実施形態において、デコーダ４０８は、リモートコンピューティングマシン４０１の任意の構成要素と通信可能である。
【００７０】
図５に、本開示の実施形態に合致するユーザインターフェイス（例えば、デスクトップ）上の動画像５０１の例を示す。動画像５０１は、コンピューティングシステム上で動作するアプリケーションの状態の視覚表示を提供することができる。動画像５０１は、ディスプレイ装置（例えば、リモートクライアントデバイス４０２に設けられたディスプレイ装置４５５）上に提示することができる。ユーザは、入力デバイスを介してシステムと相互作用することができ、動画像５０１を介した相互作用の結果は、ディスプレイ装置を介してユーザに提示される。
【００７１】
動画像５０１は、コンピューティングシステム上で動作するアプリケーション又はプロセスに対応するアプリケーションウィンドウ（例えば、ウィンドウ５１０、５２０及び５３０）を含めることができる。これらのアプリケーションウィンドウは、１つ以上の安定領域と１つ以上の過渡領域とを有する一連の画像を含む動的セッション表示の形でアプリケーションの視覚表示をユーザに提供することができる。アプリケーションウィンドウ５１０、５２０及び５３０は種々のアプリケーションを表すことができる。例えば、アプリケーションとして、ウェブブラウザ、ワードプロセッサ、スプレッドシートアプリケーション、画像エディタ、インスタントメッセージクライアント、動画プレーヤー、音楽プレーヤー、又はコンピューティングシステム上で実行する命令のグループ化が挙げられる。いくつかの実施形態において、アプリケーションは複数のアプリケーションウィンドウを提供する。
【００７２】
ユーザが動画像５０１と相互作用するとき、システムは動画像５０１を更新する。動画像５０１におけるアプリケーションウィンドウ（例えば、アプリケーションウィンドウ５１０、５２０、又は５３０）が変化したとき、アプリケーションウィンドウに対応するアプリケーションは、アプリケーションウィンドウの表示を更新するようオペレーティングシステムに指示する。オペレーティングシステムは、アプリケーションウィンドウを１つの統合画像に合成することで、全てのアプリケーションウィンドウからの更新を結合することができる。いくつかの実施形態において、システムは、動画像５０１の全ての更新を表す最終表示フレームの生成に必要な合成その他のグラフィック動作を行うグラフィックス・プロセッシング・ユニットを用いてよい。合成後、最終フレーム又は画像は、ディスプレイ装置（例えば、ディスプレイ装置４５５）上に出力されるまで、又は表示するためにリモートクライアント（例えば、リモートクライアントデバイス４０２）に転送されるまで、フレームバッファ（例えば、フレームバッファ４０２）に記憶することができる。実施形態では、フレーム又は画像を、表示の準備ができているビットマップ画像として記憶することができる。ベクトル画像などの他のファイル形式は本開示の範囲内である。このような種類の表示機構をコンポジット型ウィンドウマネージャと呼ぶことができる。コンポジット型ウィンドウマネージャの例として、Mac OS X のQuartz Compositor、Microsoft Windows 7及び後のバージョンのDesktop Window Manager、KWin、Compiz、及び5Dwmなどが挙げられる。アプリケーションに直接フレームバッファを更新させる代わりに、コンポジット型ウィンドウマネージャ内で画像を合成することで、オペレーティングシステムは、アプリケーション更新を最終合成画像でどのように表すかについて、一層管理することができる。本開示に合致する実施形態は、出力に画像が含まれるどのような表示システムにも対応しており、コンポジット型ウィンドウマネージャとして分類される表示システムに限定されないことを理解されたい。
【００７３】
リモートクライアント用の仮想コンピューティング環境を含むリモートコンピューティング環境では、フレームバッファのコンテンツをリモートクライアントに転送することができ、リモートクライアントは表示フレームをユーザに提示することができる。
【００７４】
図６を参照すると、コンピューティング環境でリモートセッション表示の動画像にデータを埋め込む方法６００の例が示されている。コンピューティング環境４００の例は図４に示されている。１つ以上の実施形態において、図６に示すプロセス６００及び／又はそのプロセスの１つ以上のステップは、コンピューティングデバイス（例えば、図１〜図３の任意のデバイス）によって実行することができる。他の実施形態において、図６に示すプロセス及び／又はそのプロセスの１つ以上のステップは、非一時的なコンピュータ読み取り可能なメモリなどのコンピュータ読み取り可能な媒体に記憶されたコンピュータ実行可能な命令で具現化することができる。方法６００は、便宜上記載され、本開示を一連の及び／又は多数のステップからなるものとして限定する意図はない一方で、プロセスを一連のステップとして実行する必要はなく、及び／又は、ステップを図６に記載され示された順番で実行する必要はないが、プロセスを統合してもよく、及び／又は、１つ以上のステップをまとめて実行してもよく、又は、ステップを開示された順番で実行してもよいし、別の順番で実行してもよいことを理解されたい。
【００７５】
方法６００は６０２で開始し、エンコーダは、リモートコンピューティングデバイスへの送信前の処理をするため、デスクトップの一部を表し、且つ動的セッション表示に対応する動画像に関連付けられた表示フレームを（例えば、アプリケーション又はフレームバッファから）受信する。実施形態において、表示フレームはビットマップ画像及び／又はその他の形式の画像である。上述のように、動画像の１つ以上の領域は、動画像用の新たな表示フレームを生成することによって連続的に更新される。したがって、動画像はある期間にわたって一連の表示フレームに関連付けられ、各表示フレームの１つ以上の領域は、以前の表示フレームの対応する領域とは異なる。実施形態において、エンコーダは、定期的に、又は変化が検出されたとき若しくは他の引き金となるイベントがあったときに、動画像に対応する新たな表示フレームを受信する。
【００７６】
エンコーダは、６０４で、表示フレームに埋め込まれる埋め込み対象データも表示前に受信する。当該データは、動画像の基になるコンテンツの発信元及び／又は所有者を示すものである。
【００７７】
６０６で、埋め込みモジュールは、例えば、対称鍵暗号化アルゴリズムを用いて、受信データを暗号化して機密データを生成する。埋め込みモジュールは、データの暗号化に用いた鍵を後で使用するために保存する。例えば、保存された鍵は、画像及び／又は当該画像のコピーから埋め込まれたデータを復元するために用いられる。埋め込みモジュールはまた、６０８で機密データの長さ（Ｌ）（例えば、ビット数）を決定する。なお、当業者であれば、暗号化を行わなくても表示フレームにデータを埋め込み可能であることは理解されるであろう。
【００７８】
６１０で、エンコーダの安定領域検出器は、ある期間にわたって動画像と関連付けられた表示フレーム内の様々な領域を比較することによって、表示フレームにおける安定領域を特定する。安定領域は、多くの異なる特性によって定義することができる。いくつかの実施形態において、領域が安定であることは、領域のサイズ、領域の安定性、基準数の以前の表示フレームにおいて変化しなかった領域、基準期間において変化しなかった領域、領域が以前キャッシュに格納された領域を含んでいるか否かなどを考慮して決定されるが、これらに限定されるものではない。例えば、いくつかの実施形態では、機密データの長さＬに関連する閾値サイズにわたる領域のみを安定であるとみなすことができる。他の実施形態では、基準数の画素にわたる領域のみを安定であるとみなすことができる。いくつかの実施形態では、サイズ及び／又は位置が安定している領域のみを安定であるとみなすことができる。いくつかの実施形態では、領域のサイズ及び／又は位置のわずかな変化を無視することができる。これらの実施形態における変化の許容量は、システムの要請に基づいて調整することができる。さらに、キャッシュに以前現れた領域は、領域が安定であることを示しているといえる。逆に、ビデオコンテンツを含む領域は、一般にビデオフレーム自体が繰り返されることがないため、キャッシュ・ヒット率が低くなる。いくつかの実施形態において、以前の表示フレームについてキャッシュに一定の割合を超える領域が見つかった場合、その領域は安定であるとみなすことができる。これらの実施形態で用いられる特性は、単なる例示である。領域が安定であることを示すことができるいかなる特性も、安定領域を決定するための根拠として用いることができる。
【００７９】
実施形態の例において、安定領域検出器４４１は、各表示フレームの領域を画像に関連付けられた先行フレーム内の対応する領域と比較することによって、フレームにおける安定領域を検出する。図７は、画像に対応し、且つ初期時刻「ｔ」秒と「ｔ＋３０」秒との間に５秒間隔でホストマシン４００からリモートクライアントデバイス４０２に送信された表示フレームＡ０、Ａ５、Ａ１０、Ａ１５、Ａ２０、Ａ２５、及びＡ３０の例を示している。実施形態において、フレームＡ１〜ＡＮ（図７のフレームＡ０、Ａ５、Ａ１０、Ａ１５、Ａ２０、Ａ２５、及びＡ３０）は、ワードプロセッシングアプリケーション、オペレーティングシステム、ウェブブラウジングアプリケーションなどのアプリケーションと関連付けることができる。例えば、フレームＡ１〜ＡＮは、アプリケーションに関連付けられたユーザインターフェイス（例えば、デスクトップ、グラフィカルユーザインターフェイス、対話型インターフェイス）の少なくとも一部であってもよいし、それを含んでもよい。いくつかの実施形態において、フレームＡ１〜ＡＮは、ホストマシンで動作する複数のアプリケーション（図示せず）と関連付けることができる。
【００８０】
本開示で用いられているように、フレームＡ１〜ＡＮ−１は、画像に対応するフレームＡＮに先行して生成されたフレームである。したがって、フレームＡ１〜ＡＮ−１を（フレームＡＮに対して）以前のフレーム又は先行フレームと呼ぶことができ、フレームＡＮを（フレームＡ１〜ＡＮに対して）後続フレーム又は現フレームと呼ぶことができる。本実施形態において、フレームＡＮ−１は、動的な一連の画像内のフレームＡＮの直前の（例えば、時間的に隣接する、連続する）フレームである。
【００８１】
各フレーム（ひいては画像）における安定領域は、現フレームＡＮの一部と先行フレームＡＮ−１（及び／又は任意の数のフレームＡ０〜ＡＮ−１）との比較に基づいて検出することができる。ある実施形態では、ブロックごとに、現フレームＡＮと先行フレームＡＮ−１とを比較して、どの部分が変化しているのか又は安定しているのかを決定することができる。例えば、現フレームにおけるブロック（又は、ブロックの色、明るさなどの特性）を先行フレームにおけるブロックと比較して、現フレームのブロックが変化している又は安定しているとして認定すべきか否かを判断することができる。現フレームにおけるブロックは、現フレーム内のある位置（ブロック位置とも呼ぶ。）に存在することができ、その位置は、先行フレームにおけるブロックのブロック位置に一致する。いくつかの実施形態において、１ブロックを一組の画素（例えば、ビットマップ画素）で規定することができる。例えば、１ブロックを、２×２画素の組、２×４画素の組、２×８画素の組、４×４画素の組、８×８画素の組、８×１６画素の組、１６×１６画素の組などにすることができる。いくつかの実施形態では、ブロックを正方形又は長方形とは異なる形にしてよい。例えば、ブロックは５つの辺を有するブロックであってよい。いくつかの実施形態において、ブロックのサイズは、あるフレーム（例えば、フレームＡ１）のサイズの小数倍（例えば、０．３倍、０．１倍、０．０１倍）であってよい。図７に示されていないが、いくつかの実施形態において、格子の1つ以上のブロックは、重複しないブロック（又は組）の画素ではなく、重複する画素を有してもよい。
【００８２】
図７を参照すると、フレーム７００における各ブロックには、初期時刻「ｔ」で値０が割り当てられている。ここで、初期時刻「ｔ」は任意の整数値（フレームＡ０）をとってよい。ｔ＋５秒で、フレームＡ５のブロックとフレームＡ０のブロックとが比較され、比較結果に基づいて各フレームにおける値が更新される。実施形態において、現フレームＡ５のブロックのうち、先行フレームＡ０の対応するブロック（例えば、対応するブロック位置にあるブロック）と同一のブロックにおける値が５だけ（すなわち、フレーム間の期間であり、ブロックが安定である時間を示す。）インクリメントされる。一方、現フレームＡ５のブロックのうち、先行フレームＡ０の対応するブロックと異なるブロックにおける値は０のままである。実施形態では、いったん、先行フレームに対してブロックにおける任意の画素が変化すると、現フレームにおける値は同じままである。ｔ＋１０秒で、フレームＡ１０のブロックとフレームＡ５のブロックとが比較され、比較結果に基づいて各フレームにおける値が更新される。実施形態において、現フレームＡ１０のブロックのうち、先行フレームＡ５の対応するブロックと同一のブロックにおける値が５だけインクリメントされ、現フレームＡ５のブロックのうち、先行フレームＡ０の対応するブロックと異なるブロックにおける値は同じまま（０又は５）である。
【００８３】
実施形態において、画像の新フレームを受信するたびに上述の比較を行って、受信フレームにおける安定領域を特定するようにしてよい。実施形態において、フレームにおける安定領域は、少なくとも基準期間に変化しなかったブロックを含む領域であってよい。基準期間として、５秒、１０秒、１５秒、２０秒、２５秒などが挙げられるが、これらに限定されない。好ましい実施形態において、基準期間は１０秒である。実施形態において、基準期間が１０秒で、安定領域の形状が長方形であると予め定義されている場合、フレームＡ０及びＡ５は安定領域を含まず、フレームＡ１０は安定領域７０１及び７０２の例を含み、フレームＡ１５は安定領域７１１、７１２及び７１３の例を含み、フレームＡ２０は安定領域７２１及び７２２の例を含み、フレームＡ２５は安定領域７３１、７３２、７３３及び７３４の例を含み、フレームＡ３０は安定領域７４１及び７４２の例を含む。ブロックが、少なくとも上述の基準期間安定した後に変化した場合、値「０」が再び割り当てられる。例えば、図７に示すように、少なくとも１０秒間（すなわち、安定領域を検出するための基準期間）安定した後に変化したブロックには、値０が割り当てられる。したがって、エンコーダによって受信されたフレームＡＮにおける安定領域は、当該フレームを以前に受信されたフレームＡＮ−１と比較することによって特定することができる。
【００８４】
いくつかの実施形態において、現フレームと先行フレーム部分とのブロック間の違いは、例えば、各ブロックに関連した画素ごとの比較に基づいて特定することができる。いくつかの実施形態において、各画素は、互いに比較可能なビット値（例えば、赤、緑、青（ＲＧＢ）ビット値）によって表すことができる。例えば、現フレームＡＮのブロックに含まれる各画素を、先行フレームＡＮ−１の対応するブロックに含まれる（対応するビット位置での）各画素と比較することで、ブロック間の違いがあるか否かを判断することができる。いくつかの実施形態では、現フレームＡＮのブロックについてハッシュ値を計算し、そのハッシュ値を、先行フレームＡＮ−１の（対応する又は同一のブロック位置での）対応するブロックのハッシュ値と比較することで、違いの有無を判断することができる。言い換えると、現フレームと先行フレームとのブロック間の違いは、それぞれのフレームのブロックごとに計算されたハッシュ値に基づいて特定することができる。いくつかの実施形態では、１つ以上のハッシュ値を、当業者に現在知られた又は今後知られる方法を用いて計算することができる。さらに別の実施形態では、当業者に知られているように、マッチポイントスコア及び比較に基づいて、現フレームと先行フレーム部分とのブロック間の違いを特定することができる。
【００８５】
図６に戻り、安定領域検出器は、６１２で、動画像に関連付けられ、且つエンコーダと通信しているキャッシュを更新する。実施形態において、安定領域検出器は、キャッシュ内の動画像の各フレームの特定された安定領域を、まだ保存されていなければ、保存する。安定領域検出器は、以前保存された安定領域のうち、もはや安定領域として特定されないものを除去するためにキャッシュを更新してもよい。例えば、安定領域の１つ以上のブロック値が「０」に変化する（すなわち、領域が変化する）たびに、その安定領域はキャッシュから除去され、キャッシュはリフレッシュされる。実施形態において、安定領域検出器は、定期的に、新たな表示フレームを受信したとき、新たな表示フレームをレンダリングしたとき、又は、新たなアプリケーションから表示フレームを受信したときなどに、キャッシュを更新又はリフレッシュしてもよい。
【００８６】
６１４で、エンコーダは、受信された表示フレームについて、更新されたキャッシュから（サイズ／画素数の点で）最大安定領域を特定して抽出する。例えば、図７において、フレームＡ１０の最大安定領域は７０２であり、フレームＡ１５の最大安定領域は７１２であり、フレームＡ２０の最大安定領域は７２１であり、フレームＡ２５の最大安定領域は７３３及び／又は７３４であり、フレームＡ３０の最大安定領域は７４２である。エンコーダは、キャッシュが更新されるたびに、新たな表示フレームを受信したときに、定期的に、又は他の引き金となるイベントが起きたときに、最大安定領域を特定して抽出するようにしてよい。
【００８７】
そして、エンコーダは、フレームの最大安定領域の全画素数（すなわち、安定領域の高さ×幅）が閾値以上であるか否かを判断する（６１６）。実施形態において、閾値は、２Ｌ、３Ｌ、４Ｌ、５Ｌ、又は６Ｌなどである。好ましい実施形態において、閾値は４Ｌである。最大安定領域の全画素数が閾値より小さい場合、埋め込みモジュールは、既知の方法又は今後知られる方法を用いて、全フレームに対して最下位ビット（ＬＳＢ）埋め込みアルゴリズムを実行することで、機密データをフレームに埋め込む（６３０）。実施形態において、エンコーダは、全フレームに対してＬＳＢアルゴリズムを実行することで、安定領域を含まないフレーム、及び／又は、安定領域が検出されなかったフレーム（例えば、時刻ｔ＝０とｔ＝基準期間との間に表示された初期フレーム）に機密データを埋め込むようにしてよい。
【００８８】
一方、特定された最大安定領域の全画素数が閾値以上である場合、６１８で、エンコーダは、抽出された最大安定領域に機密データが既に埋め込まれているか否かを判断する。例えば、同一の最大安定領域を含んだ以前のフレームの処理中に、機密データがその最大安定領域に既に埋め込まれることがあり、この場合、安定領域にデータを埋め込むステップを再度行う必要はない。実施形態において、機密データが埋め込まれた安定領域は、その領域に機密データが既に埋め込まれていることを示す識別子（例えば、フラグ）を有するようにしてよい。最大安定領域に機密データが既に埋め込まれていると判断された場合、その特定された最大安定領域に新たな機密データは埋め込まれず、プロセスはステップ６２４へ移行する。したがって、フレームにおける安定領域を特定することによって、リモートコンピューティングデバイスに送信される各新フレームに機密データを埋め込む必要がなく、処理電力と時間を節約することができる。
【００８９】
一方、最大安定領域に機密データが埋め込まれていないと判断された場合、６２０で、エンコーダの埋め込みモジュールは、抽出された最大安定領域に機密データを埋め込む。
【００９０】
図８及び図９は、最大安定領域に機密データを埋め込む方法を示している。実施形態では、最大安定領域に機密データを埋め込むため、埋め込みモジュールは、まず、最大安定領域に対して変換関数を作用させることで（８０２）、最大安定領域を空間領域（９０２）から周波数領域（９０６）へ変換する。例えば、埋め込みモジュールは、最大安定領域（例えば、ビットマップ形式）に対して２次元高速フーリエ変換（ＦＦＴ）を施し、周波数領域上のエネルギー分布のベクトルを取得する。特定された最大安定領域を変換する他の既知の方法又は今後知られる方法も、本開示の範囲内である。
【００９１】
８０４で、埋め込みモジュールは、最大安定領域よりもサイズの小さい新たな空のビットマップ（９０８）を生成する。例えば、空のビットマップ９０８は、最大安定領域の１／２倍、１／３倍、１／４倍、１／５倍などのサイズを有する。好ましい実施形態において、９０８は最大安定領域の１／４倍のサイズ（例えば、最大安定領域の画素サイズがＨ×Ｗであれば、Ｈ／２×Ｗ／２倍の画素サイズ）を有する。８０６で、埋め込みモジュールは、機密データ９０４を９０８に埋め込むことにより９０８を符号化することで９１０を生成する。実施形態において、埋め込みモジュールは、機密データ９０４を９０８に埋め込むことで、機密データのビットに関わる冗長を生成する。例えば、埋め込みモジュールは、９０８を多数の小区分に分割し、機密データ９０２の各ビットが少なくとも１つの小区分を満たすように、各小区分を機密データ９０２のビットの値で満たす。実施形態において、小区分の数は少なくとも機密データ９０２の長さ（Ｌ）に等しい。
【００９２】
８０８で、埋め込みモジュールは、９０６の一部をステップ８０６で生成されたビットマップ９１０で置き換えることで９１２を生成する。実施形態において、埋め込みモジュールは、表示フレームの視覚的な変形又はゆがみが最小となるように、置き換え用の９０６の一部を選択する。例えば、選択された部分は９０６の隅部である。好ましくは、選択された部分は９０６の右下隅部である。
【００９３】
８１０で、埋め込みモジュールは、９１２に対して逆変換（例えば、逆ＦＦＴ）を施すことで、埋め込まれた機密データを含む最大安定領域のビットマップ９１４を生成する。
【００９４】
図６に戻り、６２２で、エンコーダは、安定領域に機密データが埋め込まれていることを示すために、埋め込まれたデータを含む最大安定領域に識別子を付加し、キャッシュ内の最大安定領域を埋め込まれたデータを含む最大安定領域に置き換える。６２４で、エンコーダは、機密データが埋め込まれた最大安定領域と、受信した表示フレームの他の領域とを含む合成表示フレームを作成することで、全動画像を生成する。エンコーダはまた、リモートデバイスに送信するために、合成フレームを符号化する。実施形態において、エンコーダは、受信した表示フレームのうち最大安定領域に対応する領域を、ステップ６２０で機密データが埋め込まれた最大安定領域に置き換えることによって合成フレームを作成する。
【００９５】
実施形態において、画面画像が無許可で複製されると、まず、複製された画面画像からＬＳＢ情報を抽出することによって、複製された画面画像の発信元を決定し、機密データが画面画像のＬＳＢに埋め込まれているか否かを判断する。ＬＳＢ情報が機密データを含んでいない場合、まず、複写された画面画像全体に対して数学的変換（例えば、ＦＦＴ）を施すことで周波数分布を得る。そして、例えば、変換された画像の右下隅から機密データを取得し、保存された鍵を用いて機密データを復号する。
【００９６】
本発明は、システム、方法、及び／又はコンピュータプログラム製品であり得る。コンピュータプログラム製品として、本発明の態様をプロセッサに実行させるためのコンピュータ読み取り可能なプログラム命令が記憶されたコンピュータ読み取り可能な記憶媒体が挙げられる。
【００９７】
コンピュータ読み取り可能な記憶媒体は、命令実行デバイスが使用するための命令を保持し、記憶することが可能な実体のあるデバイスとすることができる。コンピュータ読み取り可能な記憶媒体として、例えば、電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置、又はこれらの好適な任意の組み合わせが挙げられるが、これらに限定されない。コンピュータ読み取り可能な記憶媒体のより具体的な例を例示列挙すると以下のようになる：ポータブル・コンピュータ・ディスケット、ハードディスク、Random Access Memory（ＲＡＭ）、Read-Only Memory（ＲＯＭ）、Erasable Programmable Read-Only Memory（ＥＰＲＯＭ若しくはフラッシュ・メモリ）、Static Random Access Memory（ＳＲＡＭ）、ポータブルCompact Disc Read-Only Memory（ＣＤ−ＲＯＭ）、Digital Versatile Disk（ＤＶＤ）、メモリスティック、フロッピーディスク、パンチカード若しくは命令が記録された溝に浮き彫りにした構造などの物理的に符号化されたデバイス、及びこれらの好適な任意の組み合わせ。コンピュータ読み取り可能な記憶媒体は、本願で使用されるように、電波若しくは自由に伝播する他の電磁波、導波管若しくは他の伝送媒体を通じて伝播する電磁波（例えば、光ファイバ・ケーブルを通過する光パルス）、又はワイヤを通じて伝送される電気信号など、それ自体で一時的な信号であるものと解釈されない。
【００９８】
本願に記載されたコンピュータ読み取り可能なプログラム命令は、ネットワークを介して、例えば、インターネット、ローカルエリア・ネットワーク、ワイドエリア・ネットワーク及び／又は無線ネットワークを介して、コンピュータ読み取り可能な記憶媒体からそれぞれのコンピューティング／処理デバイスに、又は外部コンピュータ若しくは外部記憶装置に、ダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ及び／又はエッジサーバを設けてよい。各コンピューティング／処理デバイスのネットワーク・アダプタ・カード又はネットワーク・インターフェイスは、ネットワークからコンピュータ読み取り可能なプログラム命令を受信し、コンピュータ読み取り可能なプログラム命令を各コンピューティング／処理デバイス内のコンピュータ読み取り可能な記憶媒体に記憶させるために転送する。
【００９９】
本発明の動作を実行するためのコンピュータ読み取り可能なプログラム命令は、アセンブラ命令、命令セットアーキテクチャ（ＩＳＡ）命令、機械語命令、機械依存命令、マイクロ・コード、ファームウェア命令、状態設定データ、又は１つ以上のプログラミング言語の任意の組合せで書かれたソフトウェア・アプリケーション若しくはオブジェクト・コードの何れか一方であってよい。そのようなプログラム言語としては、Smalltalk、Ｃ＋＋などのオブジェクト指向のプログラミング言語、及び“Ｃ”プログラミング言語や同様のプログラミング言語など、従来の手続き型プログラミング言語が挙げられる。コンピュータ読み取り可能なプログラム命令は、ユーザのコンピュータ上で全て、ユーザのコンピュータ上で部分的に、スタンドアローン・ソフトウェア・パッケージとして、ユーザのコンピュータ上で部分的に及びリモートコンピュータ上で部分的に、又はリモートコンピュータ若しくはサーバで全て、実行されてもよい。後者のシナリオにおいて、リモートコンピュータは、各種ネットワークを介してユーザのコンピュータに接続されてよく、そのようなネットワークとしては、ローカルエリア・ネットワーク（ＬＡＮ）又はワイドエリア・ネットワーク（ＷＡＮ）が挙げられる。あるいは、当該接続は、（例えば、インターネット・サービス・プロバイダを使用してインターネットを通じて）外部コンピュータに対して行ってもよい。いくつかの実施形態では、本発明の態様を実施するために、電子回路、例えば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）又はプログラマブル・ロジック・アレイ（ＰＬＡ）などが、コンピュータ読み取り可能なプログラム命令の状態情報を利用することによって、コンピュータ読み取り可能なプログラム命令を実行して、該電子回路を個別に設定してもよい。
【０１００】
本発明の態様は、本発明の実施形態に係る方法、装置（システム）、及びコンピュータプログラム製品のフローチャート図及び／又はブロック図を参照して本願に記載されている。フローチャート図及び／又はブロック図の各ブロック、並びにフローチャート図及び／又はブロック図におけるブロックの組合せは、コンピュータ読み取り可能なプログラム命令によって実現可能であることが理解されよう。
【０１０１】
これらのコンピュータ読み取り可能なプログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラマブルデータ処理装置のプロセッサに提供してマシンを生成し、コンピュータ又は他のプログラマブルデータ処理装置のプロセッサを介して実行される命令によって、フローチャート及び／又はブロック図の１つ若しくは複数のブロックに指定された機能／役割を実現する手段を作り出すようにしてよい。これらのコンピュータ読み取り可能なプログラム命令はまた、コンピュータ読み取り可能な記憶媒体に記憶されて、コンピュータ、プログラマブルデータ処理装置、及び／又は他のデバイスに特定の方法で機能するよう指示することができ、命令が記憶されたコンピュータ読み取り可能な記憶媒体は、フローチャート及び／又はブロック図の１つ若しくは複数のブロックに指定された機能／役割の態様を実現する命令を有する製品を含む。
【０１０２】
コンピュータ読み取り可能なプログラム命令はまた、コンピュータ、他のプログラマブルデータ処理装置、又は他のデバイスにロードされ、一連の動作ステップをコンピュータ、他のプログラマブル装置又は他のデバイス上で実行させることで、コンピュータで実現されたプロセスを生成してもよく、これにより、コンピュータ、他のプログラマブル装置、又は他のデバイス上で実行される命令は、フローチャート及び／又はブロック図の１つ若しくは複数のブロックに指定された機能／役割を実現する。
【０１０３】
図中のフローチャート及びブロック図は、本発明の様々な実施形態に係るシステム、方法及びコンピュータプログラム製品を実現する可能性のあるアーキテクチャ、機能及び動作を示している。これに関して、フローチャート又はブロック図における各ブロックは、モジュール、セグメント、又は命令の一部を表すことがあり、それらは、指定された論理機能を実現するための１つ以上の実行可能な命令を含む。いくつかの代替実施において、ブロックに記載された機能は、図に記載された順序で現れなくてもよい。例えば、連続して示された２つのブロックが、ほぼ同時に実行されてもよいし、ときには、関わる機能に応じて、逆の順番で実行されてもよい。ブロック図及び／又はフローチャート図の各ブロック、並びにブロック図及び／又はフローチャート図におけるブロックの組合せは、指定された機能若しくは動作を実行するか、又は専用のハードウェア及びコンピュータ命令の組合せを実行する専用のハードウェアベースのシステムによって実現可能であることも留意されたい。
【０１０４】
さらに、様々な実施形態に係るシステムは、プロセッサと、本願に記載された１つ以上のプロセスステップを実行する、当該プロセッサと一体化された論理回路及び／又は当該プロセッサによって実行可能な論理回路と、を備えてもよい。一体化されたとは、プロセッサに、特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）など、ハードウェア論理回路としての論理回路が組み込まれていることを意味する。プロセッサによって実行可能とは、論理回路が、ハードウェア論理回路であるか、ファームウェア、オペレーティングシステムの一部、アプリケーションプログラムの一部などのソフトウェア論理回路であるか、又はプロセッサによってアクセス可能で、且つプロセッサの実行時にある機能をプロセッサに実行させるハードウェア及びソフトウェア論理回路のいくつかの組み合わせであることを意味する。ソフトウェア論理回路は、周知のように、各種のローカルメモリ及び／又はリモートメモリに格納されてよい。周知のあらゆるプロセッサを用いてよく、このようなプロセッサとして、例えば、ソフトウェアプロセッサモジュール、及び／又は、ＡＳＩＣ、ＦＰＧＡ、中央処理装置（ＣＰＵ）、集積回路（ＩＣ）、グラフィックス・プロセッシング・ユニット（ＧＰＵ）などのハードウェアプロセッサなどが挙げられる。
【０１０５】
上述の説明から、上述のシステム及び／又は手法の様々な特徴を何らかの形で組み合わせて複数の組み合わせを生み出すことができるのは明らかであろう。
【０１０６】
本発明の実施形態を、顧客に代わって展開されたサービスの形で提供することで、注文に応じたサービスを提供することができることをさらに理解されたい。
【０１０７】
本発明の様々な実施形態の記述は、例示の目的のために提示されているのであって、網羅的であること、又は開示された実施形態に限定することを意図するものではない。多くの改変及び変形は、記載された実施形態の範囲及び趣旨を逸脱することなく、当業者にとって明らかであろう。本願で用いられた用語は、実施形態の原理、実用化、又は市場で見出されたテクノロジーを超える技術上の改良を最適に説明するために、又は本願に開示された実施形態を他の当業者が理解することを可能にするために、選択されたものである。
【０１０８】
本発明を１つ以上の実施に関して図示及び説明したが、本明細書及び添付図面を読んで理解すると、同等の変更及び変形例が当業者に想到されるであろう。さらに、本発明の特定の特徴は、いくつかの実施のうちの１つのみに関して開示されている可能性があるが、そのような特徴は、任意の又は特定の用途にとって望ましく有利であるように他の実施の１つ以上の他の特徴と組み合わせることができる。したがって、本発明の広さ及び範囲は、上述の実施形態のいずれによっても限定されるべきではない。むしろ、本発明の範囲は、以下の特許請求の範囲及びそれらの均等物に従って定義されるべきである。
【図１】
2021513260.tif 000003
【図２】
2021513260.tif 000004
【図３】
2021513260.tif 000005
【図４】
2021513260.tif 000006
【図５】
2021513260.tif 000007
【図６】
2021513260.tif 000008
【図７】
2021513260.tif 000009
【図８】
2021513260.tif 000010
【図９】
2021513260.tif 000011
【手続補正書】
【提出日】令和2年8月20日(2020.8.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
リモートセッション表示の動画像にデータを埋め込む方法であって、
プロセッサによって、
前記動画像に関連付けられた表示フレームを受信し、
前記表示フレームに埋め込まれる埋め込み対象データを受信し、
前記表示フレームにおいて１つ以上の安定領域を特定し、
前記１つ以上の安定領域を特定すると、前記動画像に関連付けられた１つ以上の表示フレームに対応する複数の安定領域を有するキャッシュを更新し、
前記キャッシュにおいて、前記表示フレームに対応する最大安定領域を特定し、
前記埋め込み対象データを前記最大安定領域に埋め込むことで埋め込みデータ包含領域を生成することを含む、方法。
【請求項２】
前記プロセッサによって、前記表示フレームにおける前記最大安定領域に対応する領域を前記埋め込みデータ包含領域に置き換えることで合成フレームを作成することをさらに含む、請求項１に記載の方法。
【請求項３】
前記埋め込みを実行する前に、前記プロセッサによって、前記埋め込み対象データを暗号化することをさらに含む、請求項１に記載の方法。
【請求項４】
前記最大安定領域に前記埋め込み対象データを埋め込む前に、前記プロセッサによって、
前記最大安定領域が既に前記埋め込み対象データを含んでいるか否かを判断し、
前記最大安定領域が前記埋め込み対象データを含んでいない場合にのみ前記埋め込みを行うこと、
をさらに含む、請求項１に記載の方法。
【請求項５】
前記最大安定領域に前記埋め込み対象データを埋め込む前に、前記プロセッサによって、
前記最大安定領域のサイズが閾値サイズより小さいか否かを判断し、
前記最大安定領域の前記サイズが前記閾値サイズ以上である場合にのみ前記最大安定領域への前記埋め込みを実行すること、
をさらに含む、請求項１に記載の方法。
【請求項６】
前記最大安定領域の前記サイズが前記閾値サイズより小さいという判断を受けて、最下位ビットアルゴリズムを用いて前記表示フレームに前記埋め込み対象データを埋め込むことをさらに含む、請求項５に記載の方法。
【請求項７】
前記閾値サイズは、前記埋め込み対象データの長さの少なくとも４倍に等しい、請求項５に記載の方法。
【請求項８】
前記最大安定領域に前記埋め込みを実行することは、
前記最大安定領域に変換関数を作用して、前記最大安定領域の周波数領域表現を生成し、
空のビットマップを生成し、
前記埋め込み対象データを前記空のビットマップに埋め込むことで埋め込みデータ包含ビットマップを生成し、
前記最大安定領域の前記周波数領域表現の一部を前記埋め込みデータ包含ビットマップで置き換えることで修正周波数領域表現を生成し、
前記修正周波数領域表現に逆変換関数を作用すること、
を含む、請求項５に記載の方法。
【請求項９】
前記変換関数は高速フーリエ変換（ＦＦＴ）であり、前記逆変換関数は逆ＦＦＴである、請求項８に記載の方法。
【請求項１０】
前記最大安定領域の前記周波数領域表現の一部を前記埋め込みデータ包含ビットマップで置き換えることは、前記最大安定領域の前記周波数領域表現の右下隅部を置き換えることを含む、請求項８に記載の方法。
【請求項１１】
前記空のビットマップを生成することは、前記最大安定領域の画素の高さの半分の画素の高さを有し、前記最大安定領域の画素の長さの半分の画素の長さを有する前記空のビットマップを生成することを含む、請求項８に記載の方法。
【請求項１２】
前記プロセッサによって、
前記埋め込みデータ包含領域に識別子を組み込み、
前記キャッシュにおいて、前記最大安定領域を前記埋め込みデータ包含領域に置き換えること、
をさらに含む、請求項１に記載の方法。
【請求項１３】
前記表示フレームにおいて前記１つ以上の安定領域を特定することは、前記表示フレームを前記動画像に関連付けられた少なくとも１つの以前の表示フレームと比較することを含む、請求項１に記載の方法。
【請求項１４】
リモートセッション表示の動画像にデータを埋め込むシステムであって、
プロセッサと、
プログラミング命令を有する非一時的なコンピュータ読み取り可能な記憶媒体と、
を備え、
前記プログラミング命令は前記プロセッサに、
前記動画像に関連付けられた表示フレームを受信し、
前記表示フレームに埋め込まれる埋め込み対象データを受信し、
前記表示フレームにおいて１つ以上の安定領域を特定し、
前記１つ以上の安定領域を特定すると、前記動画像に関連付けられた１つ以上の表示フレームに対応する複数の安定領域を有するキャッシュを更新し、
前記キャッシュにおいて、前記表示フレームに対応する最大安定領域を特定し、
前記埋め込み対象データを前記最大安定領域に埋め込むことで埋め込みデータ包含領域を生成すること、
を実行させるシステム。
【請求項１５】
前記プログラミング命令は前記プロセッサに、前記表示フレームにおける前記最大安定領域に対応する領域を前記埋め込みデータ包含領域に置き換えることで合成フレームを作成させるための命令をさらに含む、請求項１４に記載のシステム。
【請求項１６】
前記プログラミング命令は、前記埋め込みを実行する前に、前記プロセッサに、前記埋め込み対象データを暗号化させるための命令をさらに含む、請求項１４に記載のシステム。
【請求項１７】
前記プログラミング命令は、前記最大安定領域に前記埋め込み対象データを埋め込む前に、前記プロセッサに、
前記最大安定領域が既に前記埋め込み対象データを含んでいるか否かを判断し、
前記最大安定領域が前記埋め込み対象データを含んでいない場合にのみ前記埋め込みを行うこと、
を実行させるための命令をさらに含む、請求項１４に記載のシステム。
【請求項１８】
前記プログラミング命令は、前記最大安定領域に前記埋め込み対象データを埋め込む前に、前記プロセッサに、
前記最大安定領域のサイズが閾値サイズより小さいか否かを判断し、
前記最大安定領域の前記サイズが前記閾値サイズ以上である場合にのみ前記最大安定領域への前記埋め込みを行うこと、
を実行させるための命令をさらに含む、請求項１４に記載のシステム。
【請求項１９】
前記プログラミング命令は、前記最大安定領域の前記サイズが前記閾値サイズより小さいという判断を受けて、前記プロセッサに、最下位ビットアルゴリズムを用いて前記表示フレームに前記埋め込み対象データを埋め込ませるための命令をさらに含む、請求項１８に記載のシステム。
【請求項２０】
前記閾値サイズは、前記埋め込み対象データの長さの少なくとも４倍に等しい、請求項１８に記載のシステム。
【請求項２１】
前記プロセッサに前記最大安定領域への前記埋め込みを実行させる前記プログラミング命令は、
前記最大安定領域に変換関数を作用して、前記最大安定領域の周波数領域表現を生成し、
空のビットマップを生成し、
前記埋め込み対象データを前記空のビットマップに埋め込むことで埋め込みデータ包含ビットマップを生成し、
前記最大安定領域の前記周波数領域表現の一部を前記埋め込みデータ包含ビットマップで置き換えることで修正周波数領域表現を生成し、
前記修正周波数領域表現に逆変換関数を作用すること、
を実行させるための命令をさらに含む、請求項１８に記載のシステム。
【請求項２２】
前記変換関数は高速フーリエ変換（ＦＦＴ）であり、前記逆変換関数は逆ＦＦＴである、請求項２１に記載のシステム。
【請求項２３】
前記プロセッサに前記最大安定領域の前記周波数領域表現の一部を前記埋め込みデータ包含ビットマップで置き換えさせる前記プログラミング命令は、前記最大安定領域の前記周波数領域表現の右下隅部を置き換えさせるための命令をさらに含む、請求項２１に記載のシステム。
【請求項２４】
前記プロセッサに前記空のビットマップを生成させる前記プログラミング命令は、前記最大安定領域の画素の高さの半分の画素の高さを有し、前記最大安定領域の画素の長さの半分の画素の長さを有する前記空のビットマップを生成させるための命令を含む、請求項２１に記載のシステム。
【請求項２５】
前記プログラミング命令は前記プロセッサに、
前記埋め込みデータ包含領域に識別子を組み込み、
前記キャッシュにおいて、前記最大安定領域を前記埋め込みデータ包含領域に置き換えること、
を実行させるための命令をさらに含む、請求項１４に記載のシステム。
【請求項２６】
前記プロセッサに前記表示フレームにおいて前記１つ以上の安定領域を特定させる前記プログラミング命令は、前記表示フレームを前記動画像に関連付けられた少なくとも１つの以前の表示フレームと比較させるための命令を含む、請求項１４に記載のシステム。
【国際調査報告】
2021513260.tif 000012
2021513260.tif 000013
2021513260.tif 000014