説明

高性能コンテンツ変更アーキテクチャおよび技法

【課題】高性能でより安全性の高いHIPの取得を容易にする特有のシステムおよび方法を提供すること。
【解決手段】HIPは、部分的にはプリレンダリングされたキャラクタ及び/又はアークをバイナリ形態でビットマップとしてキャッシュし、任意の数のキャラクタおよび/またはアークを無作為に選択してHIPシーケンスを形成することで、生成される。ワープ・フィールドは、事前演算してバイナリ形態の複数の整数に変換し、これらをキャッシュ可能に収容する。一つの部分領域をキャッシュから取り出してHIPシーケンスにマッピングし、HIPをワーピングすることができる。即ち、事前演算済みワープ・フィールドを使用して、複数のHIPシーケンスのワーピングができる。ワーピングをバイナリ形態で高分解能で実施した後、ダウン・サンプリングしてリバース・エンジニアリングを軽減可能にし、さらに、テクスチャや色を追加してその外見を改善する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は一般的には人間対話証明(human interactive proofs)に関し、詳細には、人間対話証明の構成および生成速度を改善して、コンピュータ・ベース・アクションと人間アクションとを見分けることに関するその効率性の向上を促進することに関する。
【背景技術】
【0002】
インターネットなどのグローバル通信ネットワークの到来は、膨大な数の潜在的顧客と連絡する機会を提供している。この数年において、ユーザは、信頼性のあるニュース・ソース、研究資源、およびその他の多種多様なタイプの情報源として、インターネットに目を向けてきている。さらに、オンライン・ショッピング、ディナーの予約、コンサートおよび/または映画チケットの購入は、現在、インターネットを使用してコンピュータの前に座りながら行われる一般に普及した行動の内のわずかな例にすぎない。しかしながら、個人顧客と同様にビジネス顧客によるインターネットの広範囲な使用によって、不必要に、あるいは望ましくない露見をもたらし、様々な経済的リスクおよび/またはセキュリティ脆弱性を引き起こす可能性がある。
【0003】
オンライン・ビジネスについては、セキュリティや、オンライン・ショッピングまたは予約を行わせるバイヤーの信憑性(validity)が主要な関心事となっている。例えば、多くのレストランが、オンライン予約サービスを提供しており、その場合に客はインターネットを介してそのレストランのウエブ・サイトを使用して予約をすることができる。残念なことに、このシステムによって、レストラン・オーナーは、ディナー・サービス・アタック−これは自動スクリプト・アタックの1つにすぎない−に対していくぶん無防備になる。このようなアタックは、コンピュータが、それ以上でないにしても、数百回の、多数のレストランに悪影響を与える偽のオンライン予約を行うときに発生する。そのようなアタックの結果として、これらのビジネスは中断されるか、あるいは歳入損失、システム補修およびクリーンナップのコスト、ならびにネットワーク・セキュリティの改善に関連する費用によって被害を受けることさえある。
【0004】
別のタイプのアタックが、スパム(spam)アタックの形態で行われる場合がある。スパム・アタックは、特定のビジネスなどの1つの事業体(entity)をターゲットにしたり、電子メール・アドレスによって無作為に選択された数千のユーザをターゲットにしたりして行われる可能性がある。一般に、スパムは、電子メール使用の人気の高まりによって、急速に増大する問題となっている。周知のように、電子メッセージは、ネットワーク・ユーザに不要な広告やプロモーション(例えば、スパム)を流す手段として、ますます広がる傾向にある。数百または数千のユーザ、または単一の事業体に対しての、同時に広範囲のスパム流布は、コンピュータによって実行される自動アクションの使用に起因する可能性がある。例えば、スパマー(Spammer)は、コンピュータをプログラムして、一日単位または週単位などで、合法的なメッセージ・サービス・プロバイダからの多数の異なる電子メール・アカウントを生成するか、または開くことができる。これを行うことによって、スパマーは、1つまたは2つのアカウントが時々シャットダウンされていたとしても、自分たちのスパムができる限り多くの受信者に確実に配布されるようにすることができる。
【0005】
コンサルティングおよびマーケット・リサーチ会社であるRadicati Group,Inc.は、2002年8月時点において、毎日20億通のジャンク電子メール・メッセージが送付されていると推定しており、この数は2年毎に3倍になると予測されている。個人および事業体(例えば、ビジネス、政府機関)が迷惑に感じることが多くなり、スパム(ジャンク・メッセージ)によって障害を受けることが多くなっている。したがって、スパムは、現在において、または近い将来に、信頼できるコンピューティングに対する重大な脅威となるであろう。
【0006】
さらに、インターネットの急速な成長と発展は、不正な、破壊的な、および/または損害を与える活動が発生する新規な道を取り込んだ。スパムおよび自動スクリプト・アタックを阻止する一手段として、いくつかのオンライン・ビジネスならびにメッセージング・サービスでは、コンピューティング・チャレンジ(computational challenge)または人間対話証明(HIP:human Interactive Proofs)の使用を実行している。このような技法は、コンピュータが人間ユーザとコンピュータ・ユーザとを区別することを可能にする。
【0007】
コンピュータと人間との区別についての研究は、本来のチューリング・テスト(Turing Test)に遡り、これは、人間が、別の人間と機械とを、両者に質問することによって区別すること、を求める。最近の関心は、人間を目的とするサービスを自動化されたスクリプトが使用するのを防止する自動フィルタの構築を可能にするために、コンピュータに別のコンピュータと人間とを区別させることを可能にする、ためのシステムの開発に向いている。そのようなシステムは、人間対話証明(HIP)、またはコンピュータと人間とを区別するための完全自動化公共チューリング・テスト(CAPTCHAs:Completely Automated Public Turing Tests to Tell Computers and Humans Apart)と呼ばれている。例えば、HIPは、ノイズおよび/または背景とともに配置されるキャラクタ(character)の認識に依存することができ、この場合に、この質問は、すべての提示されたキャラクタを正しく識別することである。
【先行技術文献】
【非特許文献】
【0008】
【非特許文献1】LUIS VON AHN, et al., Telling Humans and Computers Apart (Automatically or How Lazy Cryptographers do Al, Communications of the ACM, February 2004, 11 pages.
【非特許文献2】PATRICE Y. SIMARD, et al., Using Character Recognition and Segmentation to Tell computers from Humans, ICDAR 2003, 2003, pp. 418-423.
【非特許文献3】First Workshop on Human Interactive Proofs, January 9-11, 2002, 5 page Palo Alto, California, USA.
【非特許文献4】H.S. BAIRD, et al., Human Interactive Proofs and Document Image Analysis Proc. IAPR 2002, 2002, 12 pages, Workshop on Document Analysis Systems, Princeton, New Jersey, USA.
【非特許文献5】LUIS VON AHN, et at., Telling Humans and Computers Apart(Automatically), The Captcha Project, 2000, 3 pages, http://www.captcha.net.
【非特許文献6】Paypal, an eBay Company, 1999, 1 page.
【非特許文献7】A.M. TURING, Computing Machinery and Intelligence, Mind, 1950, pp. 433-460, Vol. 59-No. 236.
【発明の概要】
【発明が解決しようとする課題】
【0009】
残念ながら、現行のHIPシステムは、ランダム・アークとともに配置されるキャラクタは、それらのアークが人間知覚と干渉する状態で配置されていることがあるという点で、不完全であり得る。すなわち、人間がこれらの文字を区別することは非常に困難である可能性がある。したがって、従来式のHIPは、コンピュータに対してアクセスを禁止して、人間に対してアクセスを許可することにおいてどちらかといえば効果的ではない。
【課題を解決するための手段】
【0010】
以下には、本発明のいくつかの態様についての基本的な理解を提供するために、本発明の簡略化した要約を示す。この要約は、本発明の広範な概要ではない。この要約は、本発明の主要/重要要素を識別することを意図するものではなく、また本発明の範囲を描写するものでもない。この要約の唯一の目的は、後に提示するさらに詳細な説明に対する序文として、本発明のいくつかの概念を簡略化した形態で提示することである。
【0011】
本発明は、部分的には人間対話証明(の質問(チャレンジ))の有効性とともにその生成速度を向上させることによって、コンピュータ・ユーザと人間ユーザとを区別することを容易にするシステムおよび方法に関する。従来型HIPとは異なり、本発明のシステムおよび方法は、アークおよび/またはクラッタをHIPシーケンスの回りに配置するか、またはそれと組み合わせる無作為性を低下させることによって、解くことのできない、または不可能な質問(チャレンジ)を生成する確率を、部分的に、低減することができる。さらに、多くの関連する量を事前計算できるように必要な計算を修正することによって、部分的には比較的大きな高速化ゲインを達成することができる。最後に、対象HIPの見栄え(visual appeal)を、高い分解能でHIPをワーピング(warp)すること、次いでダウン・サンプリング(down‐sampling)すること、などによって、さらに向上させることができる。このワーピングされたHIPシーケンスを、1つまたは複数のテクスチャおよび/または色と組み合わせて仕上がりHIPの外見をさらに良くすることもできる。
【0012】
本発明の一態様によれば、大きな2次元ワープ・フィールドを、事前演算するとともに、離散化する(discretize)か、または複数の整数に変換することが可能であり、それによってその上に表される各ピクセルが、それに付随する2つの整数、すなわちx次元およびy次元のそれぞれに1つ、を有することができる。ワープ・フィールドのサイズは、単一のHIP画像のサイズの数倍とすることが可能であり、複数の部分領域(sub-region)を含む。このワープ・フィールドの部分領域は、個々のHIPをワーピングするのに使用することができる。例えば、部分領域は、無作為に選択するか、または手作業で選択して、HIPの様々な部分を伸張、回転、および/または歪曲(distort)するのに使用することができる。したがって、複数のHIPをワーピングするのに、同一のワープ・フィールドを複数回使用することができる。これによって、より多数の固有のHIPを実質的に短い時間内に生成することが可能になる。
【0013】
本発明の別の態様によれば、HIP生成プロセスは、HIPに使用可能な任意の数のキャラクタ(例えば、文字(letter)および/または数字)をプリレンダリング(pre-rendering)してキャッシュすることによっても向上させることができる。例えば、英語アルファベットの26のキャラクタすべての回転および拡大縮小されたバージョンをキャッシュすることができる。HIP構成プロセスを開始する際、このキャラクタのキャッシュから任意の数のキャラクタを無作為に選択することができる。このキャラクタまたはフォント・キャッシュは、少なくとも部分的には、使用することを望むHIPの数に起因して、比較的大きくなる可能性がある。しかしながら、始動時にキャッシュに入れることは、非常に時間がかかることになる。したがって、時間と効率の観点から、構成されたHIPに示されるキャラクタを、そのHIPからパーズ(parse)してフォント・キャッシュに格納することによって、時間をかけてキャッシュを構築すること(例えば、レイジー・キャッシュ・ポピュレーション)を支援することができる。
【0014】
その他のランダム・クラッタ(random clutter)と同様にアークは、HIPを生成するときの迅速な検索を容易にするために、プリレンダリングしてキャッシュすることができる。このプリレンダリングされたアークは、別のキャッシュ(例えば、アーク・キャッシュ)に維持することが可能であり、このキャッシュは、キャラクタと同じ数のアークが、所望の数のHIPを生成するのに必要とされないので、開始時に構築することができる。アークおよび/またはクラッタは、無作為に選択して、無作為な方法でHIPのテキストに配置することができる。アークまたはその他のクラッタの無作為配置は、部分的には低ディスクレパシー擬似乱数(low discrepancy quasi-random numbers)を使用することによって、生成することができる。一般に、これによって、複数のクラッタ・オブジェクトが生成されるときに、生成されるテキストとの干渉を最大化することができる。結果的に、すべてではないにしろ、HIPのテキストと組み合わせたほとんどのアークまたはクラッタを、テキスト全体により均一に分散させることがきるので、HIPの外見、ならびにその人間による可読性を改善することができる。
【0015】
本発明のさらに別の態様においては、HIPの性能は、HIPをバイナリ形態で生成することによって改善することができる。すなわち、キャラクタ、アーク、および/またはその他のクラッタを、バイナリ形態(例えば、白黒)でプリレンダリングすることが可能であり、これは、HIP生成速度(例えば、ワーピング速度)にさらなる利得を提供する。さらに、HIPをバイナリで構成することによって、ハッカーおよびそのコンピュータによるHIPのリバース・エンジニアリング(の可能性)を軽減するさらなるセキュリティ保護を提供することができる。
【0016】
テクスチャおよび/色(例えば、背景色および/または前景色)も、HIPに追加して、その外見を改善し、かつ/またはユーザ嗜好に従ってHIPをカスタム化することができる。例えば、季節休暇、対象とする人間ユーザ、その他に応じて、様々な色を前景(例えば、テキスト、アーク、クラッタ)または背景に追加することができる。カスタム化処理は、サーバ・プロセッサ(サーバの中央処理ユニット)にどちらかといえば負担となる可能性がある。したがって、クライアント上に設けられた、MMX、SSE、およびSSE2技術に加えて、グラフィック処理ユニットを使用して、そのようなHIPのカスタム化を実行し、さらにHIP生成速度を最適化することができる。さらに、これらのタイプの技術は、プリレンダリングしたキャラクタ・ビットマップとプリレンダリングしたアーク・ビットマップとを結合するのに使用することができる。
【0017】
さらに、本発明の様々な態様は、一緒にまたは単独で、あるいは互いに組み合わされて機能して、生成して使用するHIPの品質および評価を向上させるとともに、さらに重要なこととして、概して、自動スクリプト・アタック、スパム・アタック、およびスパム配信を阻止する。
【0018】
前述の目的および関係する目的の達成のために、本発明のいくつかの説明のための態様を、以下の説明と添付の図面と関係して、本明細書に記述する。しかしながら、これらの態様は、本発明の原理を使用することのできる様々な方法の内のいくつかを示すものにすぎず、本発明には、そのような態様およびその均等物のすべてを含めることを意図するものである。本発明のその他の利点および新規な特徴は、図面と関連して考察すれば、以下に示す本発明の詳細な説明から明らかになるであろう。
【図面の簡単な説明】
【0019】
【図1】本発明の一態様による、HIP生成システムのブロック図である。
【図2】本発明の別の態様による、HIP生成の概略図である。
【図3】本発明のさらに別の態様により、様々なサブプロセスの実行後に結果として得られるそれぞれのHIPと連結された、例示的なHIP生成プロセスの概略フロー図である。
【図4】本発明のさらに別の態様によって形成された例示的なHIPを示す図である。
【図5】本発明の一態様による、例示的HIP生成プロセスのフロー図である。
【図6】本発明の一態様による未処理HIP(ワーピング前)を生成するための例示的方法を示すフロー図である。
【図7】本発明の様々な態様を実装するための例示的環境を示す図である。
【発明を実施するための形態】
【0020】
本発明は、図面を参照して説明され、この図面において、全図を通して、同一の要素を指すのに同一参照番号が使用される。以下の記述においては、説明の目的で、本発明の完全な理解をもたらすために、多数の具体的な詳細を記載する。しかしながら、本発明はこれらの具体的な詳細なしに実施できることは明らかである。別の例においては、周知の構造および装置は、本発明の説明を容易にするためにブロック図形態で示している。
【0021】
本出願における使用においては、「構成要素(component)」および「システム」という用語は、ハードウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかの、コンピュータ関連のエンティティを意味する、ことを意図している。例えば、構成要素は、それに限定はされないが、プロセッサ上で実行中のプロセス、プロセッサ、オブジェクト、実行ファイル、実行のスレッド(thread of execution)、プログラム、およびコンピュータである。実例として、サーバ上で実行中のアプリケーションおよびそのサーバは両方とも構成要素であることになる。1つまたは複数の構成要素が、プロセスおよび/または実行のスレッド内に常駐することができるとともに、構成要素は、1つのコンピュータに局所化することも、かつ/または2つ以上のコンピュータ間に分散化させることもできる。
【0022】
さらに、本出願で使用される、「コンピュータ・ユーザ」という用語は、受取人のネットワークまたはサービスにアタックして受取人のビジネスまたはサービスを混乱させる意図をもって、自動スクリプト・アタックを開始したり、様々な受取人ならびに特定の受取人に数百または数千のスパムを送付したりするアクションをとるようにコンピュータがプログラムされている場合のような、非人間ユーザを意味することを意図するものである。
【0023】
本発明には、機械学習スパム・フィルタリング(machine learned spam filtering)用のトレーニング・データの生成と関係して、様々な推論方式および/または技法を組み入れることができる。本明細書での使用においては、「推論(inference)」という用語は、一般に、事象(event)および/またはデータから収集される一組の観察から、システム、環境、および/またはユーザの状態を推察(reasoning about)または推論(inferring)するプロセスを意味する。推論は、特定のコンテクストまたはアクションを識別するのに使用することができ、また、例えば、いくつかの状態についての確率分布を生成することができる。推論は確率論的にすること、すなわち、データおよび事象の考察に基づく、対象とするいくつかの状態についての確率分布の計算とすること、ができる。推論は、一組の事象および/またはデータからより高レベルの事象を構成するのに使用される技法を意味することもある。そのような推論の結果、それらの事象同士が時間的に近接して相互関連していようとなかろうと、そして事象およびデータが1つまたはいくつかの事象およびデータ源から生じていようとなかろうと、一組の観察された事象および/または格納された事象データから、新規の事象またはアクションが構築される。
【0024】
本発明は、2つのまさに能力を必要とする視覚的問題(vision problem)、すなわち対象物のセグメンテーションおよび認識、に基づくことができる。セグメンテーションについては、人間は、通常、任意のシーンを、それを断片(piece)にセグメント化することによって評価することができる。例えば、家具を備えた部屋を示されると、人間は、その部屋のはっきりと識別できる部分またはコンテンツ、すなわち「テーブルがある」、「イスがある」、「ランプがテーブルの上にある」などを、確認または識別することができる。人間による(セグメント化された)対象物の認識は、常時存在し、それによって人間は、自分たちに提示される任意のシーンを統合し、再評価することができる。これに対して、コンピュータは、個々の断片をセグメント化して識別するのが比較的困難である。
【0025】
反対に、光学式文字認識(OCR)における認識、ならびに手書き認識技法などにおける認識は、例えば、椅子やテーブルが何で定義されるかを学習するためにレコグナイザ(recognizer)を訓練することを伴う。すなわち、コンピュータを、対象物をその特定されたサイズ、密度、その他によって認識するように訓練することができる。しかしながら、セグメンテーションはずっと主観的である。例えば、様々な形態の印刷テキストは、かなり高い正確率(accuracy rate)(例えば、90%以上)でコンピュータによって認識することができる。印刷テキストまたは文字にゆがみが与えられる場合には、正確率は、全く影響を受けないこともある。しかしながら、草書体で書かれたものは、各文字が始まる場所または終わる場所を判断することが困難である可能性があるので、コンピュータにとって認識することが、はるかに困難である。
【0026】
本発明において記述した高性能HIPは、コンピュータがHIPを「破る(break)」ことを非常に困難にする独特の方法で、アークまたはその他のランダム・クラッタをキャラクタの部分上に加えること(例えば、少なくとも1つの文字のある部分に接触させること)だけでなく、キャラクタを曖昧にするためのゆがみを加えることによって、少なくとも部分的に、このコンピュータ弱点を利用している。コンピュータ認識能力は進歩を続けるので、HIPの生成は進化を続ける。本発明においては、これらのHIPのセキュリティを促進し、それらをより高速で作り上げ、およびそれらの全体有効性(例えば、人間ユーザに対する見栄え)を向上させる、ためのいくつかの新規のアプローチを導入する。
【0027】
実際的な価値のあるHIPを構築することは、それを見て人間が機械よりもいくぶんよい成績をあげるチャレンジ(質問)を開発するだけでは十分ではないという理由で、困難である。この理由は、ほとんどの場合に失敗する(まれに成功する)自動アタッカーを有することに、ほとんどコストがかからないからである。実際に、自動化スクリプトを阻止しようと思えば、人間が99%合格し、機械が1%合格するチャレンジは、機械にとっての失敗および反復のコストが低い場合には、まだ十分ではないかもしれない。したがって、有用であるためには、HIPは、反復推測(repeated guessing)をやる気をなくさせるのに十分なほど、自動アタックのコストを高くしなくてはならない。極端な意味(strong sense)では、チャレンジに機械で答えるコストが、人間を勧誘して同じタスクを実行するコストよりも高い場合に、HIPは有効である。本発明は、適切に変更された画像は、コンピュータにとっては、高価な技法を適用することなく確実に読み取ることは困難であるが、人間は非常に容易に理解できるという事実を利用する。そのような画像を、チャレンジとしてウエブ・ページ(またはコンピュータ・ログオン/アクセス・スクリーン)に含めるとともに、チャレンジに正答することに依存してページの提出(またはログイン)をさせることによって、スクリプトが、ウエブ・ページに対して実行される(コンピュータにログインするか、またはアクセスする)ことを相当に防止することができる。
【0028】
さらに、本発明は、ほとんどすべての人間にとって読取りを容易にすると同時に、コンピュータが読み取ることを困難、高価、かつ予測不能にする状態で、画像(例えば、HIP画像)などのコンテンツを変更する技法、およびそれらの高性能実装のためのアーキテクチャについて記述する。
【0029】
ここで図1を参照すると、本発明の一態様によるHIP生成システム100のための例示的なアーキテクチャを示す全体ブロック図がある。システム100は、キャラクタ選択構成要素110を備え、これは、キャラクタ・キャッシュ120から複数のプリレンダリングされたキャラクタを無作為に選択することが可能であり、新規HIPの基礎(foundation;下書き)を形成する。プリレンダリングされたキャラクタは、構成中のHIPに全体的なセキュリティ保護を付加するために、バイナリ形態でキャッシュ120内に格納することができる。キャラクタ・キャッシュ120には、すべての許容されるキャラクタ(大文字I、数字0および1、文字OおよびQなどのいくつかのキャラクタは除外することができる)の回転および拡大縮小バージョンを、白黒ビットマップのコレクションとして含めることができる。
【0030】
さらに、キャッシュ120は、特定のxおよびyのスケーリングならびに回転を有するそれぞれの可能なキャラクタに対して固有の場所に、開始時に生成することができる。キャッシュ内のビットマップ数は、非常に大きく増加する可能性がある。例えば、xおよびyのスケーリングの両方に対して倍率が95%〜105%であり、回転が−5〜+5度の間である場合には、英語アルファベット(26の大文字のすべて)に対して、11×11×11×26=34,606個のビットマップがあることになる。開始時にキャラクタ・キャッシュ120に取り込む(ビットマップのすべてを埋める)ことは非常に時間がかかり、そのためにレイジー・キャッシュ・ポピュレーションを使用する(すなわち、HIPが生成された際に、これらのHIPに使用されたキャラクタがキャッシュに格納される)。時間経過とともに、キャッシュ120は、徐々に満杯になる。
【0031】
キャッシュ120内のキャラクタは、xスケーリングおよびyスケーリングおよび回転のすべての可能な組合せのメモリ・フットプリント(memory footprint;メモリ占有量)を低減するために、ランレングス符号化(RLE:run-length encoding)することもできる。ランレングス符号化(RLE)は、データ圧縮の簡単な形態であり、この場合にはいくつかのランのデータが、元のランとしてではなく、単一のデータ値および個数として格納される。例えば、一様な白の背景上の単色黒テキストを含むスクリーンを考える。ブランクスペース内には多数の白ピクセルの長いランと、テキスト内部には多数の黒ピクセルの短いランがある可能性がある。
【0032】
一代替手法では、キャッシュ内に格納される画像としてグレー・スケール画像を使用し、この場合には、(格納されている)各キャラクタ(画像)は、スムースなエッジを生成するために背景中へのエイリアスが除去されている。しかしながら、プロセスまたはシステムのこの段階でのエイリアス除去によって、HIPがコンピュータによるリバース・エンジニアリングに対して脆弱になるので、そのような手法は安全性が低くなる可能性がある。
【0033】
キャラクタ・キャッシュ120から一組のランダム・キャラクタが選択されると、それらを無作為順序で配列して、予備HIP画像を形成することができる。次いで、アーク選択構成要素130を使用して、任意の数のアーク(またはその他のタイプのクラッタ)をアーク・キャッシュ140(または、それぞれ、その他任意のクラッタ・キャッシュ)から無作為に選択することができる。選択されたアークは、低ディスクレパシー擬似乱数を使用することによるなど、無作為な方法でテキスト(キャラクタ)の回りに配置するか、またはそれと組み合わせて、対象テキストとの干渉を最大化することができる。例えば、第2のアークの配置は、少なくとも部分的には、第1のアークその他の配置に基づくことができる。このタイプの制御された無作為性によって、HIPの外見をよくするとともに、人間ユーザとコンピュータ・ユーザを区別することにおいて、HIPをより有効にする。
【0034】
アーク・キャッシュ130には、アーク幅の異なる複数の3次スプライン(cubic spline)を備える。この3次スプラインは、3つの制御ポイントに限定することができる。これらのアークの制御ポイントは、無作為に均一に選択される。さらに、アーク・キャッシュには、前景アークおよび背景アークを含めることができる。前景アークは、本質的にHIPに対してインクを付加するのに対して、背景アークはHIPからインクを実際上、除去することができる。さらに、前景アークは、前景色またはテクスチャと同一色またはテクスチャで現れるようにすることが可能であり、同様に、背景アークは、背景色またはテクスチャと同一色またはテクスチャで現れるようにすることができる。
【0035】
さらに、アークを、HIP上のテキスト・キャラクタから比較的遠く離れているHIPシーケンスまたは画像の領域に生成または追加することが可能である。HIP画像サイズ(幅および高さ)は、所定のフォントで所定数のキャラクタを表示するのに必要な必要スペースよりも大幅に大きくすることができる。このことは、自動システムをだまして画像内にその他のキャラクタがあると思わせる目的で、多くのアークを画像に追加することができるという理由で、有用である。この戦略は、これらの領域にいくつかのキャラクタの偽の存在(false positives)を生じさせることになる。キャラクタが配置されてしまうと、様々名な厚さの様々なアークを、キャラクタのある位置から離れて安全に追加することができる。厚いアークとは、その厚さが、そのキャラクタを生成するのに使用されるキャラクタ・フォントの平均厚さに近いか、またはそれよりも大きいアークを意味する。可読性の観点からは、厚いアークを均一に追加することは、厚いアークがキャラクタと重なるときに、それを読取り不能にする可能性が高いので危険である。可能な回避策としては、比較的薄いアークを均一に追加すること、および比較的厚いアークを、それらが、すでに配置されたキャラクタと重複しないという制約を除いて、均一に追加すること、である。このことは、配置キャラクタを判読可能(legible)にしておくのに役立つ。厚いアークは、キャラクタの平均厚さに近いので、それらを正規キャラクタと区別することは困難であり、したがって、アタックを拡散させる上で有効である偽の存在としての主要な候補である。キャラクタから離れて追加するアークの数または密度は、独立に調整することができる。
【0036】
キャラクタ・キャッシュ120と異なり、アーク・キャッシュ140は非常に大きくする必要がない。数千のアークで、多数のHIPを生成するのに十分である。したがって、これらのアークは、スタート時に生成することができる。キャラクタ・キャッシュ120と同様に、アークはバイナリ形態のビットマップとして保管することができる。キャラクタ・ビットマップと同様に、アーク・キャッシュ140におけるアーク・ビットマップは、ワーピング・プロセスを受ける前に、エイリアス除去なしとすることも、エイリアス除去を行うこともできる。しかしながら、HIPをワーピングする前にエイリアス除去すると、HIPがコンピュータによるリバース・エンジニアリングに対して脆弱になったり、それを受けやすくなったりする可能性がある。
【0037】
次いで、予備HIPシーケンスまたは画像(ワーピングなし)を、ワープ・フィールド適用構成要素150に伝達することができ、この構成要素はワープ部分領域選択構成要素160と連絡する。この選択構成要素160は、HIPをワーピングするために使用するワープ・フィールドの部分領域を無作為に、または手作業で選択することができる。続いて、ワープ・フィールド適用構成要素150は、HIPを(ワープ・フィールドの)選択された部分領域に応じてマッピングすることができる。このようにして、HIPは伸張させるか、ゆがませるか、またはその他の方法で曖昧にすることで、HIP画像中の特定のキャラクタを識別するのをより困難にすることができる。
【0038】
ワープ・フィールドの部分領域は、ワープ・フィールド・キャッシュ170から無作為に、または手作業で選ぶことができる。ワープ・フィールド170は、(複数の整数から成る行列として格納された大きな2次元画像で、各ピクセルが、それに関連する2つの整数を有して、x分散(x-dispersion)およびy分散を定義する)大きな2次元画像からなり、そのサイズは、単一HIP画像の数倍である。所与のHIPがワーピング処理を受ける際に、HIPのサイズのランダム連続部分行列がワープ・フィールド・キャッシュから抽出されて、HIPをワーピングするのに使用される。ワープ・フィールドのHIPへの適用は、HIPのピクセルを、選択されたワープ・フィールド部分行列内の複数の整数によって規定される量だけ移動させる。
【0039】
ワープ・フィールド・キャッシュ170は、2つのワープ・フィールドの集合体である。第1は、大域ワープ・フィールドであり、第2は局所ワープ・フィールドである。残念なことに、これらのワープ・フィールドの生成は、計算的に負荷が重い処理である。一つの例示となるプロセスでは、2次元ガウス・フィールドの生成を伴い、次いで、これが2次元指数フィルタを用いてローパス・フィルタリングされて量子化される(最近の整数値にまるめられる)。このフィールドの振幅は、ガウス・フィールドの絶対値によって決まり、フィールドの平滑度(大きな平滑な波を有するか、または小さな粗いリップルを有するか)は、指数関数的減衰の比によって決まる。
【0040】
大域ワープ・フィールドは、大きな絶対値と高い減衰率(decay factor)を有するのに対して、局所ワープ・フィールドは、小さな絶対値と小さい減衰率を有する。その結果として、大域ワープ・フィールドは、大きく平滑なゆがみを生成するのに対して、局所ワープ・フィールドは、小さく粗いゆがみを生成する。さらに、ワープ・フィールドを複数の整数に変換すると、内挿の必要がなくなり、結果的にHIP形成が高速化される。
【0041】
HIP画像が十分にワーピングされた後に、それを、様々な構成要素によるさらなる処理に供することができる。例えば、HIP画像は高い分解能でワーピングして、次に1よりも大きな係数によってダウン・サンプリングすることができる。これによって、HIP画像の外観が向上する。さらに、HIP画像にテクスチャおよび/または色を追加して、さらにその見栄えを向上させることができる。例えば、背景にテクスチャおよび少なくとも1つの色を追加し、同時に前景(例えば、少なくともテキスト)を1種または2種以上の異なる色で示すことができる。上述のようにして生成されたHIP180は、ウエブ・ベース・サービスを介してウエブ・サイト・オーナーに対して、および彼らのサイトまたはサービスへのアクセスを制御することを望むオペレータに対して、利用可能にすることができる。しかしながら、最終HIP画像180が、ウエブ・サービスまたはウエブ・サイトを介して、ユーザのブラウザに提供される前に、画像180をgif、jpeg、bmp、その他に符号化することができる。これによって、生成されたHIP180が、汎用インターネット・ブラウザまたは画像表示ツールによって、提示されて見ることが可能になる。さらに、テクスチャおよび/または色を追加することが、ユーザまたはウエブ・サービス毎にHIPの外見をカスタム化する手段として望ましい可能性がある。
【0042】
システム100には、任意選択のHIP検証システム190を含むことができ、これを使用して、(人間が認識するのに)失敗したHIPを監視するとともに、部分的にはシステム10によって生成されるHIPを無作為にサンプリングすることによって、様々なテキスト+アークの組合せの使用性の測定を容易化することもできる。特に、検証システム190は、ユーザに供給されるHIPの実サンプルまたはHIPシグネチャー(signatures;構成データ)とともに、人間がこれらのHIPに答えるときの成功または誤りを収集することができる。この情報は、使用性マップの構築において、使用するキャラクタに関するキャラクタ配置またはアーク配置に関する成功および誤り率を、測定するのに使用することができる。キャラクタまたはフォントに対応する利用性マップを使用することができる。この初期マップは、フォントに対するグリフ(glyphs)のレンダリングのし方、および関連する文字間/数字間の混同に基づいて、(プログラマーまたは設計者によって先験的な人間知識(apriori human knowledge)に基づいて)手作業で生成される。例えば、Times Romanフォントにおける大文字Eは、Eの水平アームのいずれかを消すことになる背景アークに対して敏感である。これによって、Eを読み取る能力が低下する。しかしながら、独立した評価によって、Eの下側水平アームは消えている場合には意図せずにEをFのように見せることをユーザに気付かせることができる。次いで、使用性マップを使用して、将来のHIPの生成を変更することができる。
【0043】
さらに、1つの手法では、HIPのオンライン・オペレーション中の人間の誤りをサンプリングすることが含まれる。人間を識別するためにHIPが生成された際に、成功および間違いが、各HIPシグネチャーとともにログ記録される、例えば、それぞれのサンプリングされたHIPが、人間がHIPを調べてそれを解決しようとしたトライアルに関連づけられる。HIPシグネチャーは、(ワープ・フィールドを除いて)HIPを構成するキャラクタおよびアークの場所およびパラメータを完全に同定する。成功および不成功のHIP解の両方がログ記録される。毎日、数百万件のHIPが供給されるので、無作為サンプリングを適用して、オンラインシステムに悪影響を与えることなくある期間にわたって、所望の数のサンプルを達成することもできる。これらのサンプルにおけるHIPシグネチャーは、ワーピング段階の前にHIPを再生成するのに使用することができる。
【0044】
次に、キャラクタのそれぞれを含む、再生成HIPの部分画像が抽出される。これらの部分画像は、HIP内のキャラクタの拡大バウンディング・ボックス(enlarged bounding boxes)である。次いで、このバウンディング・ボックス部分画像が、回転および拡大縮小されて、元のキャラクタのサイズおよびオリエンテーション(向き)が得られる。その結果として、このバウンディング・ボックス内に入るアーク/アーク・セグメントがあれば抽出される。各キャラクタについて、周囲のアークがそのキャラクタとどのように交差/影響するかが調べられる。アークとキャラクタの交差の影響の重要性は明確である。アークがキャラクタと交差しない場合でも、アークは、それ自体の(「拡大」バウンディング・ボックス内のその存在によってモデル化される)キャラクタへの近接度に基づいて、キャラクタの解釈に影響を与える可能性がある。ユーザの誤りおよび成功は、どのタイプの交差/影響が悪いのか、およびどのタイプがよいのかをそれぞれ分類するのに使用される。このことは、単に、各キャラクタの回りのバウンディング・ボックス内に入る前景および背景のアーク・ピクセルの数を計数することによって、達成される。これらの計数によって、キャラクタ毎の使用性マップが形成される。成功および失敗の両方の場合についての計数が収集される。干渉および/または良性ピクセルを計数するとともに、その場所も追跡することができる。例えば、これらの計数は、場所毎にキャラクタが配置される場所に関連して追跡することができる。その結果として、バウンディング・ボックス内の各可能な場所におけるこれらの計数の2次元表現を含むマップが得られる。
【0045】
ユーザ・データから使用性マップが構築されると、HIP生成プロセスに、これらの使用性マップを考慮に入れることが可能であり、キャラクタの解釈に悪影響を与える可能性のあるアーク場所を排除することができる。アークがHIPに追加される際に、それらを受容/拒絶するために、試行錯誤法を使用することができる。例えば、試行錯誤法は、アーク選択(130)中またはそれと同時に行うことができる。累積スコアを使用することによって、所与のアークを、その場所および形状/向きに基づいて、受容/拒否するかどうかを決定することができる。
【0046】
次に図2を参照すると、本発明の一態様によるHIP形成の例示的なパスウェイの概略図を示してある。最初に、キャラクタ・プリレンダリング構成要素210および/またはアーク・プリレンダリング構成要素220は、キャラクタ(例えば、文字、句読点、および数字)および/またはアークをプリレンダリングして、それらを適当なデータベース(例えば、キャラクタ・データベース230、アーク・データベース240)に格納することができる。特に、拡大縮小ならびに回転をされたキャラクタは、バイナリ形態でビットマップとして個別にレンダリングすることが可能であり、次いでキャッシュして、HIP画像またはキャラクタ・シーケンスを構成するときに、容易に取り出して利用できるようにすることができる。人間が解くには難しすぎると判定されたキャラクタは、必要に応じてデータベースから除去することができる。
【0047】
アークならびにその他の任意のクラッタは、バイナリ形態でビットマップとしてプリレンダリングして、次いでキャッシュすることもできる。アーク・キャッシュには、簡単アーク(スプライン)とともに、セグメンテーションおよびOCRプログラムに障害を生じさせるように設計されたその他のタイプのクラッタを含めることができる。そのようなクラッタの例としては、テキストとしての同一フォントからのキャラクタの断片、セリフ(serifs)を含むアーク、などが挙げられる。キャラクタ、アーク、およびその他任意のクラッタはプリレンダリングされ、次いでキャッシュされているので、HIP構成および形成は、従来型生成方式と比較して非常に迅速に行うことができる。
【0048】
構成されると、次いで、予備HIP(プリワープHIP)250は、ワープ・フィールド260(270)の選択された部分セクションによってワーピングすることができる。ワープ・フィールド260は、複数の部分領域265を含むか、またはそれに分割することができる。したがって、新規のHIPが構成される毎に、ワープ・フィールドの部分領域を、(ワープ・フィールド・キャッシュから)無作為に選択して、予備HIP250に適用することができる。その結果として、新規HIPを生成する毎に、新規ワープ・フィールドを新しく生成することは必要でなくなり、これによって、HIP生成時間が実質的に高速化して、貴重な資源の消費が少なくなる。
【0049】
ワープ・フィールド・キャッシュとともにアーク・キャッシュは、周期的にリフレッシュして、HIP生成アルゴリズムへのエントロピーの追加を促進したり、または確実にしたりすることができる。例えば、キャッシュ更新(update)の頻度は、カスタム化が可能であって、ワープ・フィールドに対しての50ミリ秒に1回から、フォント、色、およびテクスチャ更新に対しての2日に1回までの範囲とすることができる。キャラクタ・キャッシュは、アーク・キャッシュより低い頻度で更新することができるが、少なくともHIP変更に対するフォントと同じ頻度で更新しなくてはならないことを認識すべきである。
【0050】
先に述べたように、対象HIPはバイナリ形態で生成して、HIPのセキュリティを向上させるとともに、生成時間を高速化することができる。しかしながら、バイナリ形態で描かれたHIPは、エッジが波立つか、または粗い可能性があるので、見栄えがよくないことがある。この問題に対処するために、本発明はダウン・サンプリングを提供する。ダウン・小サンプリング構成要素280は、1よりも大きい任意の整数もしくは非整数(例えば、2などの係数)または(例えば、4つの内の3つがオンの場合、新規ピクセルがオン状態とするように、新規ピクセルを4つの方向のすべてで古いピクセルを平均化する)バイ・キュービック手法によって、生成されたHIPをダウン・小サンプリングすることができる。ダウン・サンプリングの結果として、完成HIP290は、より平滑なエッジを有して、より洗練され、かつ(その前回の黒白のカラー方式と異なり)グレー・スケール諧調で見せることができる。ここで理解すべきは、ダウン・サンプリングは、HIPがワーピングされる前に行うことができるが、これはHIPのセキュリティおよび完全性を損なう可能性があることである。
【0051】
さらに、このときに、HIPが完全に形成された(例えば、構成されてワーピングされた)後にエイリアス除去を実行することができる。この理由は、テキストおよびアークのすべては、すでに存在しており、相応に配置されているからである。したがって、エイリアス除去は、アーク/クラッタのレベルおよび/またはテキストのレベルではなく、HIPのレベルで行われることになる。このことをさらに実証するためには、プリレンダリングされたキャラクタが、1つまたは複数のエイリアス除去フィルタによって、エイリアス除去されて(背景中に平滑に混合されて)、そのサブセットがHIP用に無作為に選択されることを想定する。次に、エイリアス除去されていない(ぎざぎざのエッジ・アーティファクトが存在する−階段状外見の)アークのサンプリングがテキストに追加される。HIPをワーピングし、かつバイナリで符号化するのにもかかわらず、HIPはなおリバース・エンジニアリングが可能である。この理由は、アークのぎざぎざのエッジは、少なくとも部分的にエイリアス除去計算を用いているテキストの平滑エッジと区別することができるからである。すなわち、このアークは、少なくとも部分的に画像からセグメント化(分離)することも可能であり、それによってHIPの全体セキュリティおよび有効性が低下する。
【0052】
ここで、キャラクタおよびアークがエイリアス除去され、次いでキャッシュされていると仮定する。テキストのエイリアス除去結果は、両方に同じエイリアス除去アルゴリズムを使用したとしても、通常、アークのエイリアス除去結果とは異なる。キャッシュがエイリアス除去されたキャラクタおよびアークを有する場合には、これらのエイリアス除去されたキャラクタおよびアークを組み合わせることによって、(組合せプロセスの故に)それらの交差点において(アークがキャラクタの上に置かれるときに)アーティファクトが生成される。これらの交差点においては、エイリアス除去結果は、非交差点でのエイリアス除去結果の特性とは異なる特性を有する。この差異は、アーク/テキスト交差点を識別するのに利用することができる。次いで、これらの交差点に関する情報を、HIP内でのテキストとアークを分離するのに使用することができる。HIP上のアークのわずかな部分だけでも除去すると、セグメンテーション(区分け)が容易になるので、HIPによって提供されるセキュリティは低下する。
【0053】
しかしながら、HIPがエイリアス除去されていて、HIPレベルにおいてリバース・エンジニアリングされる場合、アークとテキストを見分けるために画像の任意の部分について実行されるいかなるアクションも、同様に全体画像に作用させる可能性がある。言い換えると、このアーク・ピクセルは、テキスト・ピクセルと区別することはできない。したがって、エイリアス除去結果をベースにした操作は、HIPをリバース・エンジニアリングすることにおいて有効ではない。
【0054】
HIPの目的および特性ならびにその生成方式のゆえに、ダウン・サンプリングされた白黒HIPを、セキュリティを維持しながら、非常に速いペースで生成するのに、サーバがより好適である可能性がある。この理由は、サーバそれ自身が、カラー画像に対してのピクセル当り32ビット動作というよりも、ピクセル当り8ビット表現またはピクセル当り1ビット表現、あるいはランレングス符号化表現および動作を使用できるので、非常に高速に動作するからである。今日のサーバは32ビットまたは64ビットプロセッサを有するので、これらの32ビットおよび64ビット・プロセッサによってサポートされるSIMD(単一命令多重データ)命令の使用によって、サーバ速度をさらに増大することができる。例えば、本明細書に記載するシステムおよび方法は、MMX(Multimedia Extensions)命令セットおよび/またはSSE(Streaming SIMD Extensions)命令セットおよび/または(MMX命令を128ビット・データ・ブロック上で動作することを可能にする)SSE2命令セットを介して提供される、32ビットIntel(登録商標)プロセッサ上の64ビットおよび128ビットSIMDオペレーションを使用することができる。
【0055】
さらに、ワーピング・プロセスならびにHIPにテクスチャを加えるなどのカスタム化を実行するのにGPUs(グラフィカル・プロセシング・ユニット)を使用することができる。GPUとは、主として3D関数の演算に使用されるシングル・チップ・プロセッサである。これには、ライティング効果、オブジェクト変換、および3Dモーションなどの動作が含まれる。これらのタイプの計算は、CPU(中央処理ユニット)に対して負荷が大きいので、GPUはコンピュータの実行をより効率的にするのに役立つ。したがって、図に示すように、HIP形成は、一般に、サーバ・クライアント・アーキテクチャにおけるサーバ側で行うことができる。
【0056】
さらにサーバ・ベースHIP生成の高速化を、個々のピクセルではなく、白黒HIPにおける1および0のランに直接作用させることによって、達成することができる。HIPサーバにおけるブリッティング(blitting)、キーイング(keying)、およびワーピングのためのピクセル動作は、ピクセルのランについての関連する動作によって表すことができる。ランベース(run-based)HIPサーバからの出力は、GIFまたはその他のランベース画像符号化方式への、迅速な符号化を可能にする。これによって、符号化オーバヘッドを大幅に低減し、サーバ性能をさらに向上させることができる。最後に、サーバによっては、特定のクライアントに対する特定のカスタム化(例えば、色)を実行するように、指定または割り当てすることができる。
【0057】
クライアント側HIP動作には、テクスチャの追加、ブレンディング(例えば、前景および背景)、またはHIPへの着色などの任意のカスタム化プロセスを含めることができる。例えば、クライアントのコンピュータからのブラウザ・ページ上でHIPを見ているときに、色を見ることができるのに対して、サーバ上ではHIPはグレー・スケールである。これは、HIPをクライアント・ユーザに対して可視化する前に、HIP上にクライアント修正が実行された結果である可能性がある。さらに、HIPはサーバ上でのそれの形成に基いてリバース・エンジニアリングに対して十分に安全であるので、HIPをクライアント上でエイリアス除去することもできる。
【0058】
図中には描かれていないが、サーバおよび/またはサーバ+クライアント組合せは、ウエブ・サービスとして実現して、HIP使用に対する位置独立性(location independence)を促進することができる。より具体的には、自分たちのネットワークを自動スクリプト・アタックから保護したり、その他の方法で自分たちのコンピュータへのアクセスを制御したりしたいと望む、ビジネスおよびウエブ・サイト・オーナーは、自分たちの私用または商用のために任意の数のHIPを購入することができる。このことは特に有利になる可能性があり、その理由は、高性能HIP生成の利点を、それらを生成するためにサーバを実行および維持するのに伴う費用またはオーバヘッド・コストなしに、獲得することができるからである。
【0059】
次に、本発明による様々な方法論を一連の行為(act)を介して記述するが、ここで理解かつ認識すべきことは、本発明は行為(act)の順序によって限定されないことであり、その理由は、いくつかの行為は、本発明によれば、本明細書に示して記述したものと異なる順序で実行し、かつ/またはその他の行為と同時に行うことができるからである。例えば、当業者であれば、方法論は一連の相互関連する状態または事象として、例えば状態図として、表すことができることを理解するであろう。さらに、図示したすべての行為が、本発明による方法を実現するために必要であるわけではない。
【0060】
次に図3を参照すると、本発明の一態様に従ってHIPの生成を容易にする、例示的な方法300の修飾したフロー図を示してある。方法300は、305においてブランクHIPを生成することで始めることができる。310において、M個のHIPキャラクタを、事前設定HIPレングスM315に基づいて無作為に選択することが可能であり、ここでMは1、または2以上の整数である。キャラクタの選択は、許容されるキャラクタのリスト320から選ぶことができる。結果として得られる、Y5BSADVRを含むHIPシーケンスまたは合成を、325に示してある。
【0061】
330において、独立したキャラクタの変換を行うことができる。例えば、xおよびy移動、xおよびy拡大縮小(スケーリング)、および/またはキャラクタ中心回りの回転を行い、キャラクタ・キャッシュ335に格納するか、またはそこから取り出すことができる。キャッシュ内のキャラクタは、バイナリ形態で維持して使用することができる。340において、変換されたキャラクタを、345に示すように、HIPに追加することができる。
【0062】
350において、前景アークを生成して、やはりバイナリ形態で維持されているキャッシュ355に格納するか、またはそこから取り出すことができる。次いで、360において任意の数の前景アークを、結果として得られるHIP365に示すように、HIPに追加することができる。同様に、370において、背景アークを生成し、次いで、前景アーク・キャッシュ355と類似のアーク・キャッシュ375から迅速に取り出すために格納される。380において、好適な数の背景アークを、結果として得られるHIP385に示すように、HIPに追加することができる。これらの背景アークは、HIP385に示すように、背景と同じ色で現れるようにすることができる。
【0063】
続いて、390において、ワープ・フィールドを選択して、HIP385に適用することができる。特に、ワープ・フィールドのランダム部分領域を、ワープ・キャッシュ395から選択することができる。結果として得られるHIP画像400が生成される。ワーピングは、比較的高分解能で実施して、次いで405において、2またはその他任意の整数あるいは1を超える非整数などの係数でダウン・サンプリングして、それによって結果として得られるHIP410を、例えば、その元のサイズの約半分とすることができる。さらに、結果として得られるHIPはグレー・スケールで表すことができる。最後に、415において、前景および/または背景色および/または背景色および/またはテクスチャを、図のようにHIP420に加えることができる。
【0064】
少なくとも部分的に本発明によって生成された例示的なHIPを、図4に示してある。特に、HIP450、460、および470は、前景とともに背景に様々な量のアーククラッタと組み合わせた6個の独立に変換されたキャラクタを含む、高性能HIPを示している。コントラスト色が、HIPをより見栄えよくするために、前景および背景に追加されている。HIP480および490については、テクスチャ、色、および混色(color blending)が、さらに外見を充実させるために追加されている。
【0065】
次に図5を参照すると、本発明の一態様による例示的なHIP生成方式500のフロー図を示してある。この方法は、510において、一組のキャラクタおよび/アークをバイナリ形態のビットマップとしてプリレンダリングすることを含む。520において、プリレンダリングされたキャラクタおよび/またはアークは、それぞれの記憶装置またはデータベース内にキャッシュすることができる。特に、特定の記憶装置にキャッシュされるキャラクタは、すべて同一のフォントとすることができる。さらに、ビットマップ・キャッシュは、ランレングス符号化するか、またはHIP生成プロセスに対する所望の速度に応じて、GIFまたはJPEGとして符号化することができる。
【0066】
特に、キャラクタをキャッシュすることは、比較的に時間のかかるプロセスであり、始動プロセスを妨げる可能性がある。その結果として、新規HIPを生成するときに、少なくともキャラクタのサブセットを、完成済みのHIPからパーズして、キャラクタ・データベースに移して、利用可能なキャラクタの数を増大させることができる。したがって、キャラクタ・データベースは、時間経過とともに構築することができる。逆に、アーク・データベースは、それほど多くのアーク、したがってそれほど多くの時間を、必要とせず、始動プロセス中に構築することができる。両方のデータベースともに、特定の頻度で、必要に応じて、リフレッシュして、またはHIPのセキュリティを向上させることができる。しかしながら、キャラクタ・データベースは、より低い頻度で更新すること、例えばキャラクタのフォントが変わるとき、または言語が変わるときのみに更新することができる。認識すべきことは、HIP生成方法500は、言語に無関係であり、任意のシンボル・セット、例えば等式記号、異なるタイプのロゴ・ブロック、動物および家庭用品などの任意の対象物、子供用玩具につけるもののような基本幾何学形状(例えば、HIPを、識別形状を必要とする学齢児童用に設計することができる)を含むように拡張することができることである。
【0067】
次に、530において、複数の部分領域を有するワープ・フィールドを、バイナリ形態で事前演算し、次いで、大規模ワープ・フィールド・キャッシュにキャッシュすることができる。従来式のHIP生成方式とは異なり、この場合のワープ・フィールドは、複数の整数に変換することが可能であり、これは、HIP生成を大幅に高速化することができる。540において、少なくとも第1のHIPシーケンスを、例えば、以下の図6に示す例示的なプロセスを使用することによって、生成することができる。
【0068】
次いで、550において、ワーピング・プロセスを受けるために、第1のHIPをワープ・フィールドの少なくとも第1の部分領域に応じてマッピングすることができる。この選択部分領域は、この特定のHIPシーケンスをワーピングするために、無作為に選んで、ワープ・フィールドから抽出すことができる。このHIPシーケンスは、ある直線が曲がって現れる可能性があることを意味する、バイナリ形態でワーピングすることが可能である。これらは、エイリアス除去されない状態のままに残すこのシーケンスの結果として、このHIPシーケンスにはぎざぎざのエッジを示すアーティファクトが存在する。このバイナリ・アーティファクトの影響を弱めるために、560において、ワーピングを高分解度で実施して、次いでダウン・サンプリングして、見栄えのよいHIPを得ることができる。
【0069】
570において、少なくとも第2のHIPシーケンスを生成し、次いで、580において、第1のHIPを生成するのに先に使用された、同一のワープ・フィールドの少なくとも第2の部分領域に応じてマッピングすることができる。この第2の部分領域も、無作為に選択して、次いで、ワープ・フィールドから抽出することができる。590において、完成HIPを得ることができる。そこから続いて、1つまたは複数のワーピングされたキャラクタを、そのHIPからパーズし、次いでキャラクタ・データベースに追加することができる。そうでない場合には、プロセス500は望みに応じて継続して、従来式HIPシステムよりも少なくとも100倍速い速度で、HIPを生成することができる。
【0070】
図6に移ると、本発明によるワーピング・プロセスに供することのできるHIPシーケンスの取得を容易にする例示的プロセス600のフロー図を示してある。プロセス600には、図5から継続されて、610においてキャラクタ・キャッシュから任意の数のプリレンダリングされたキャラクタを無作為に選択することを含めることができる。例えば、文字および/または数字を含む8つのキャラクタを、キャッシュから選択することができる。620において、任意の数の背景および/または前景アークを、それらのキャラクタと無作為に組み合わせるとともに、部分的には低ディスクレパシー乱数の使用に基づいて、キャラクタに対して配置することができる。すなわち、アークの配置または位置決めは、HIPのある領域または場所における、望ましくないアークのクランピングやクラスタリングを最少化するために、先に配置されたアークの位置に依存す。HIPは人間にとって解決可能であるが、機械にとっては解決可能であってはならないことを思い起こして頂きたい。すなわち、このような無作為性の低いアークの配置によって、HIPの全体効率性は低下するよりも、むしろ向上する。
【0071】
さらに、アークを、HIP上のテキスト・キャラクタから比較的遠いHIPシーケンスまたは画像の領域に生成したり、または追加したりすることができる。HIP画像サイズ(幅および高さ)は、所定のフォントで所定数のキャラクタを表示するのに必要な必要スペースよりも大幅に大きくすることができる。このことは、自動システムを騙してその画像内に他のキャラクタがあると思わせる目的で、多数のアークを画像に追加することができるという理由で、有用である。この戦略は、これらの領域において、いくつかのキャラクタの偽の存在を生じさせることになる。キャラクタが配置されてしまうと、様々な厚さの様々なアークを、キャラクタのある位置から離れて安全に追加することができる。厚いアークとは、その厚さが、キャラクタを生成するのに使用されるキャラクタ・フォントの平均厚さに近いか、またはそれよりも大きいアークを意味する。可読性の観点からは、厚いアークを均一に追加することは、厚いアークがキャラクタと重なるとき、それを読取り不能する可能性が高いので、危険である。可能な回避策としては、比較的薄いアークを均一に追加すること、および比較的厚いアークを、それらが、すでに配置されたキャラクタと重ならないという制約を除いて、均一に追加すること、である。このことは、配置キャラクタを判読可能(legible)にしておくのに役立つ。厚いアークは、キャラクタの平均厚さに近いので、これらを正規キャラクタと区別することは困難であり、したがって、アタックを拡散する上で有効な偽の存在としての主要な候補である。キャラクタから離れて追加するアークの数または密度は、独立に調整することができる。
【0072】
630において、ある量の任意のクラッタを無作為に選択して、アークの現在位置に応じて、HIP上に配置することもできる。このクラッタには、無作為にまたは制御された方法でキャラクタを切断することによって得られるキャラクタのビットまたは断片を含めることができる。最後に、640において、HIPシーケンスを得ることができる。例示的な8キャラクタ(eight-character)HIPの変形形態には、HIP画像サイズを維持したままキャラクタの数を低減すること、例えば、アークおよび/またはクラッタの量を増大させることによって、キャラクタの数を低減することを含めることができる。これによって、HIPは同じサイズに見えるが、解こうとするキャラクタの数は少ないので、HIPの性能をさらに向上させることができる。
【0073】
さらに、キャラクタ、アーク、クラッタ、およびワープ・フィールドの部分領域を選択する無作為性は、部分的には、複数のランダム・エントロピー源を使用する乱数発生器によって生成される複数の乱数によって決定することができる。この乱数発生器は、推論または予測またはリバース・エンジニアリングをすることのできない種々の情報に基づいて、常にそれ自体を更新することができる。例えば、このタイプの情報には、(例えば、サーバによって)現在使用されているメモリの量、ネットワークまたはサーバに入る、またはそこから出るデータのタイプ、などがある。乱数(例えば、暗号擬似乱数(cryptographic pseudo-random numbers))は性能向上のためにバッチで生成してバッファに入れることができる。
【0074】
本発明の様々な態様に対するさらなるコンテクストを提供するために、図7および以下の論述は、本発明の様々な態様を実現することのできる、好適な動作環境710の簡潔な全体説明を提供することを意図するものである。本発明を、1つまたは複数のコンピュータまたはその他のデバイスで実行される、プログラム・モジュールなどのコンピュータ実行可能命令の一般的なコンテクストにおいて説明するが、本発明は、その他のプログラム・モジュールと組み合わせて、および/またはハードウェアとソフトウェアの組合せとしても実現できることを、当業者は認識するであろう。
【0075】
しかしながら、一般的に、プログラム・モジュールには、特定のタスクを実行する、または特定のデータ型を実装する、ルーチン、プログラム、オブジェクト、構成要素、データ構造、その他が含まれる。動作環境710は、好適な動作環境の一例にすぎず、本発明の使用または機能の範囲についての限定を意味するものではない。本発明で使用するのに好適な、その他の周知のコンピュータ・システム、環境、および/または構成としては、それに限定はされないが、パーソナル・コンピュータ、ハンドヘルドまたはラップトップ・デバイス、マルチ・プロセッサ・システム、マイクロ・プロセッサ・ベース・システム、プログラマブル大衆消費電子製品、ネットワークPC、ミニ・コンピュータ、メインフレーム・コンピュータ、上記のシステムおよびデバイスを含む分散コンピューティング環境、その他がある。
【0076】
図7を参照すると、本発明の様々な態様を実装するための例示的な環境710は、コンピュータ712を含む。コンピュータ712は、処理ユニット714、システム・メモリ716、およびシステム・バス718を含む。システム・バス718は、それに限定はされないが、システム・メモリ716を含むシステム構成要素を処理ユニット714に結合する。処理ユニット714は、様々なプロセッサの任意のものとすることができる。2重マイクロ・プロセッサおよびその他のマルチ・プロセッサ・アーキテクチャも、処理ユニット714として使用することができる。
【0077】
システム・バス718は、メモリ・バスまたはメモリ・コントローラ、周辺バスまたは外部バス、および/またはそれに限定はされないが、11ビットバス、産業標準構成バス(ISA:industrial Standard Architecture)、マイクロ・チャネル・アーキテクチャ(MSA:Micro-channel Architecture)、拡張ISA(EISA:Extended ISA)、インテリジェント・ドライブ・エレクトロニクス(IDE:Intelligent Drive Electronics)、VESAローカル・バス(VLB)、周辺部品相互接続(PCI:Peripheral Component Interconnect)、ユニバーサル・シリアル・バス(USB:Univesal Serial Bus)、アドバンスト・グラフィックス・ポート(AGP:Advanced Graphics Port)、パーソナル・コンピュータ・メモリ・カード国際協会バス(PCMCIA)、および小型コンピュータ・システム・インターフェース(SCSI:Small Computer System Interface)を含む、任意多様な利用可能なバス・アーキテクチャを使用するローカル・バスを含む。
【0078】
システム・メモリ716は、揮発性メモリ720および不揮発性メモリ722を含む。例えば起動中にコンピュータ712内の要素間の情報を伝達する基本ルーチンを含む、基本入力出力システム(BIOS)が、不揮発性メモリ722に格納される。説明の目的であって、それに限定はされないが、不揮発性メモリ722には、読出し専用メモリ(ROM)、プログラマブルROM、電気的プログラム可能ROM(EPROM)、電気的消去可能ROM(EEPROM)、またはフラッシュ・メモリがある。揮発性メモリ720には、ランダム・アクセス・メモリ(RAM)があり、これは外部キャッシュ・メモリとして作用する。説明としてであって限定ではないが、RAMは多くの形態で利用可能であり、例えば、シンクロナスRAM(SRAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、2倍データ・レートSDRAM(DDR SDRAM)、エンハンストSDRAM(ESDRAM)、SynchlinkDRAM(SLDRAM)、およびダイレクトRambusRAM(DRRAM)などがある。
【0079】
コンピュータ712には、取り外し可能型/固定型、揮発性/不揮発性のコンピュータ記憶媒体を含めることもできる。図7は、例えばディスク記憶装置724を示す。ディスク記憶装置724としては、それに限定はされないが、磁気ディスクドライブ、フロッピー(登録商標)ディスクドライブ、テープ・ドライブ、Jazドライブ、Zipドライバ、LS−100ドライブ、フラッシュ・メモリ・カード、またはメモリ・スティックがある。さらに、ディスク記憶装置724には、それに限定はされないが、コンパクト・ディスクROMデバイス(CD−ROM)、CDレコーダブル・ドライブ(CD-R Drive)、CD書き換え可能ドライブ(CD-RW Drive)またはデジタル・ビデオ・ディスクROMドライブ(DVD−ROM)などの光ディスクドライブを含む、その他の記憶媒体と個別に、またはそれらと組み合わせた記録媒体を含めることができる。ディスク記録装置724のシステム・バス718への接続を容易にするために、通常、インターフェース726のような、移動型または固定型インターフェースを使用する。
【0080】
図7は、ユーザと適当な動作環境710に記述された基本コンピュータ・リソースとの間の媒介として作用するソフトウェアを記述することに留意すべきである。そのようなソフトウェアは、オペレーティング・システム728を含む。ディスク記憶装置724に記憶できるオペレーティング・システム728は、コンピュータ・システム712のリソースを制御して割り当てる作用をする。システム・アプリケーション730は、プログラム・モジュール732およびシステム・メモリ716またはディスク記憶装置724のいずれかに記憶されるプログラム・データ734を介して、オペレーティング・システム728によるリソースの管理を利用する。本発明は、様々なオペレーティング・システムまたはオペレーティング・システムの組合せを用いて実装できることを認識すべきである。
【0081】
ユーザは、入力デバイス(複数を含む)736を介してコンピュータ712にコマンドまたは情報を入力する。入力デバイス736には、それに限定はされないが、マウス、トラック・ボール、スタイラス、タッチ・パッド、キーボード、マイクロフォン、ジョイスティック、ゲーム・パッド、サテライト・ディッシュ、スキャナ、TVチューナー・カード、デジタル・カメラ、デジタル・ビデオ・カメラ、ウエブ・カメラ、およびその他がある。これらおよびその他の入力デバイスは、インターフェース・ポート(複数を含む)738を経由してシステム・バス718によって、処理ユニット714に接続する。インターフェース・ポート(複数を含む)738としては、例えば、シリアル・ポート、パラレル・ポート、ゲーム・ポート、およびユニバーサル・シリアル・バス(USB)がある。出力デバイス(複数を含む)740は、入力デバイス(複数を含む)738と同タイプのいくつかのポートを使用する。したがって、例えば、USBポートを使用して、コンピュータ712へ入力を供給するとともに、コンピュータ712からの情報を出力デバイス740に出力することができる。出力アダプタ742は、専用アダプタを必要とする他の出力デバイス740の中に、モニタ、スピーカ、およびプリンタのような出力デバイス740があることを示すために設けてある。出力アダプタ742としては、説明のためであって限定ではなく、出力デバイス740とシステム・バス718の間の接続手段を提供するビデオおよびサウンド・カードがある。リモート・コンピュータ(複数を含む)744などのその他のデバイスまたはデバイスのシステムは、入力および出力機能の両方を提供することに留意すべきである。
【0082】
コンピュータ712は、リモート・コンピュータ(複数を含む)744などの、1つまたは複数のリモート・コンピュータへの論理接続を使用して、ネットワーク化環境で動作可能である。リモート・コンピュータ(複数を含む)744は、パーソナル・コンピュータ、サーバ、ルータ、ネットワークPC、ワークステーション、マイクロ・プロセッサ・ベース機器、ピア・デバイス(peer device)またはその他の共通ネットワーク・ノードおよびその他とすることができるとともに、通常は、コンピュータ712に関して記述した要素の多数または全部を含む。簡略にするために、メモリ記憶装置746だけを、リモート・コンピュータ(複数を含む)744とともに示してある。リモート・コンピュータ(複数を含む)744は、ネットワーク・インターフェース748を介してコンピュータ712に論理的に接続され、次いで通信接続750を介して物理的に接続されている。ネットワーク・インターフェース748は、ローカル・エリア・ネットワーク(LAN)およびワイド・エリア・ネットワーク(WAN)などの通信ネットワークを包含する。LAN技術には、光ファイバ分散データ・インターフェース(FDDI:Fiber Distributed Data Interface)、銅線分散データ・インターフェース(CDDI:Copper Distributed Data Interface)、イーサネット(登録商標)/IEEE1102.3、TokenRing/IEEE1102.5、その他がある。WAN技術としては、それに限定はされないが、ポイント・ツー・ポイント・リンク、統合サービス・デジタル・ネットワーク(ISDN)のような回線交換ネットワークおよびそれの変形形態、パケット交換ネットワーク、およびデジタル加入者ライン(DSL)などがある。
【0083】
通信接続(複数を含む)750とは、ネットワーク・インターフェース748をバス718に接続するのに使用されるハードウェア/ソフトウェアを意味する。通信接続750は、説明を分かりやすくするためにコンピュータ712内部に示してあるが、コンピュータ712の外部に置くこともできる。ネットワーク・インターフェース748への接続に必要なハードウェア/ソフトウェアとしては、説明の目的だけとして、電話等級モデム、ケーブルモデムおよびDSLモデルを含むモデム類、ISDNアダプタ、およびイーサネット(登録商標)カードなどの、内部および外部技術が挙げられる。
【0084】
上記の内容は、本発明の実施例を含む。もちろんのこと、本発明を説明する目的で、すべての考えられる構成要素の組合せおよびそのための方法を記述することは不可能であるが、当業者であれば、本発明の多数のさらなる組合せおよび順列が可能であることを認識することができる。したがって、本発明は、添付のクレームの趣旨と範囲に入る、すべてのそのような変更、改変、および変形を包含することを意図するものである。さらに、「含む(include)」という言葉が、詳細な説明またはクレームのいずれかで使用される限りにおいて、この用語は、「(備える)comprising」が、クレームにおける遷移語として使用されるときに解釈されるときの、用語「(備える)comprising」と同様に、一切を含むことを意図するものである。
【符号の説明】
【0085】
100 HIP生成システム
110 キャラクタ選択構成要素
120 キャラクタ・キャッシュ
130 アーク選択構成要素
140 アーク・キャッシュ
150 ワープ・フィールド適用(ワーピング)構成要素
160 ワープ部分領域選択構成要素
170 ワープ・フィールド・キャッシュ
180 人間対話証明(HIP)
190 HIP検証システム(任意選択)
200 HIP形成の例示的なパスウェイ
210 キャラクタ・プリレンダリング構成要素
230 キャラクタ・データベース
250 「予備」HIP(バイナリ)
240 アーク・データベース
220 アーク・プリレンダリング構成要素
260 ワープ・フィールド(キャッシュ内)
265 ワープ・フィールドの部分領域
270 (高分解度において)ワーピングされたHIP
280 ダウン・サンプリング構成要素
290 完成HIP
295 HIPカスタム化構成要素
300 HIPの生成を容易にする、例示的な方法
305 ブランクHIPの生成
320 許容キャラクタのリスト
325 初期のHIP
335 キャラクタ・キャッシュ(バイナリ)
345 変換されたキャラクタ
355 アーク・キャッシュ(バイナリ)
365 前景アークが追加されたHIP
375 アーク・キャッシュ(バイナリ)
385 背景アークが追加されたHIP
395 ワープ・キャッシュ(整数)
400 ワープされたHIP
405 ダウン・サンプリングされたHIP
420 前景/背景色、テクスチャなどが追加されたHIP
450,460,470 例示的なHIP
480,480 テクスチャ、色、および混色(color blending)を加えたHIP
710 好適な動作環境
714 プロセシング・ユニット
716 システム・メモリ
718 バス
720 揮発性
722 不揮発性
726 インターフェース
724 ディスク記憶装置
728 オペレーティング・システム
730 アプリケーション
732 モジュール
734 データ
736 入力装置(複数を含む)
738 インターフェース・ポート(複数を含む)
740 出力装置(複数を含む)
742 出力アダプタ
744 リモート・コンピュータ(複数を含む)
746 メモリ記憶装置
738 インターフェース・ポート(複数を含む)
748 ネットワーク・インターフェース
750 通信接続(複数を含む)

【特許請求の範囲】
【請求項1】
いくつかの数のキャラクタと、そのキャラクタと組み合わせたある量のクラッタとを備えるHIPシーケンスを生成する、キャラクタ・シーケンス生成構成要素と、
前記HIPシーケンスを、高分解能でバイナリ形態でワーピングして、それによってワーピングされたHIPシーケンスが白黒で現れるようにする、ワーピング構成要素と
を備えることを特徴とする拡張型HIP生成システム。
【請求項2】
テクスチャ、前記HIPの前景と背景の混合、および色のうちの少なくとも1つを、前記HIPに追加するカスタム化構成要素をさらに備えることを特徴とする請求項1に記載のシステム。
【請求項3】
前記カスタム化構成要素は、前記HIP生成システムのクライアント側に常駐することを特徴とする請求項2に記載のシステム。
【請求項4】
前記HIPシーケンスを、それがワーピングされた後に1よりも大きい任意の係数でダウン・サンプリングする、ダウン・サンプリング構成要素をさらに備えることを特徴とする請求項1に記載のシステム。
【請求項5】
ダウン・サンプリングされたHIPシーケンスは、グレー・スケールの形式であるとともに、それがワーピングされた後の前記HIPよりもサイズが小さいことを特徴とする請求項4に記載のシステム。
【請求項6】
前記ダウン・サンプリングされたHIPシーケンスは、エイリアス除去されていることを特徴とする請求項5に記載のシステム。
【請求項7】
前記ダウン・サンプリングはバイ・キュービックであることを特徴とする請求項4に記載のシステム。
【請求項8】
前記ワーピング構成要素は、
グラフィック処理ユニット(GPU)と、
32ビットプロセッサ上の64ビットまたは128ビットの単一命令多重データ(SIMD)オペレーションの少なくとも1つと
のうちの少なくとも一方を備え、
前記オペレーションは、マルチメディア拡張(MMX)命令セット、ストリーミングSIMD拡張(SSE)命令セット、またはストリーミングSIMD拡張2(SSE2)命令セットの少なくとも1つを介して提供されることを特徴とする請求項1に記載のシステム。
【請求項9】
任意の量のクラッタと組み合わせた任意の数のキャラクタを備えるキャラクタ・シーケンスを生成すること、および
グラフィクス処理ユニット(GPU)と、
マルチメディア拡張(MMX)命令セット、ストリーミングSIMD拡張(SSE)命令セット、またはストリーミングSIMD2拡張(SSE2)命令セットの少なくとも1つを介して提供される、32ビット・プロセッサ上の64ビットまたは128ビットの単一命令多重データ(SIMD)動作の少なくとも1つと
のうちの少なくとも一方を使用して前記HIPをワーピングすること
を備えることを特徴とするアドバンスHIPの生成方法。
【請求項10】
任意の数のキャラクタおよび任意の数のアークを選択してHIPシーケンスを形成すること、
前記HIPシーケンスをワーピングして広範囲の配信と使用のためのHIP画像を生じさせること、および
前記HIP画像を、少なくとも部分的にはテクスチャおよび/または色の少なくとも一方を追加することによってカスタム化して、前記HIP画像の外見を充実させること
を備えることを特徴とするアドバンスHIP生成方法。
【請求項11】
部分的には低ディスクレパシー乱数(low discrepancy quasi-random numbers)の使用に基づいて、前記アークを前記キャラクタと無作為に組み合わせることをさらに備えることを特徴とする請求項10に記載の方法。
【請求項12】
前記HIP画像のカスタム化はクライアントによって実行されることを特徴とする請求項10に記載の方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2011−216114(P2011−216114A)
【公開日】平成23年10月27日(2011.10.27)
【国際特許分類】
【出願番号】特願2011−154058(P2011−154058)
【出願日】平成23年7月12日(2011.7.12)
【分割の表示】特願2005−91878(P2005−91878)の分割
【原出願日】平成17年3月28日(2005.3.28)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】