(57)【特許請求の範囲】
【請求項１】
ホストコンピュータが、要求に応じて、セキュア入力モードをアクティブにすることと、
前記セキュア入力モードがアクティブである間にデータが入力装置から取得可能であることに応じて、前記ホストプロセッサをセキュア動作モードに移行させる割り込みを生成することと、
前記ホストプロセッサが前記セキュア動作モードである間に、入力ハンドラが、前記入力装置から前記データを受信することと、
前記入力ハンドラが、前記受信したデータに対応するコードワードを生成することと、
前記入力ハンドラが、前記受信したデータと、前記コードワードと、をセキュリティモジュールに送信することと、
前記セキュリティモジュールが、前記受信したデータが前記コードワードに対応することを検証することと、
を含む、方法。
【請求項２】
前記ホストコンピュータが、要求に応じて、セキュア動作モードをアクティブにすることは、ユーザから前記入力装置を介して所定の値を受信することを含む、請求項１の方法。
【請求項３】
前記ホストコンピュータが、要求に応じて、セキュア入力モードをアクティブにすることは、リモートサーバから受信した所定の値を受信することを含む、請求項１の方法。
【請求項４】
前記受信したデータと、前記コードワードと、をセキュリティモジュールに送信することは、前記受信したデータと、前記コードワードと、をセキュリティモジュールに送信する前に、前記入力ハンドラが、前記入力装置から受信したデータを暗号化することを含む、請求項１の方法。
【請求項５】
前記セキュリティモジュールはソフトウェアモジュールである、請求項１の方法。
【請求項６】
前記セキュリティモジュールが、前記受信したデータが前記コードワードに対応すると検証したことに応じて、前記検証されたデータを１つ以上の他のメモリ位置に記憶することと、
前記入力ハンドラが、前記セキュリティモジュールが前記検証されたデータを１つ以上の他のメモリ位置に記憶したことに応じて、前記受信したデータを所定の値に置き換えることと、
前記ホストプロセッサが、前記セキュリティモジュールが前記検証されたデータを記憶したことに応じて、通常動作モードに戻ることと、
を含む、請求項１の方法。
【請求項７】
入力装置からデータを受信し、前記入力装置からデータを受信した場合に信号をアサートするように構成されたインタフェースと、
ホストコンピュータと、
を備えるシステムであって、
前記ホストコンピュータは、
ホストプロセッサと、
第１入力ハンドラであって、前記ホストプロセッサが通常動作モードである間、前記インタフェースからの第1信号のアサートに応じて、前記インタフェースから第１データを受信し、前記受信した第１データを１つ以上のメモリ位置に記憶するように構成された第１入力ハンドラと、
第２の入力ハンドラと、を備え、
前記ホストコンピュータは、要求に応じて、セキュア入力モードをアクティブにするように構成されており、
前記ホストコンピュータが前記セキュア入力モードである間、前記ホストプロセッサは、前記インタフェースからの第２信号のアサートに応じて、前記通常動作モードからセキュア動作モードに移行するように構成されており、
前記第２入力ハンドラは、
前記ホストプロセッサが前記セキュア動作モードに移行したことに応じて、前記入力装置から第２データを受信し、
前記受信した第２データに対応するコードワードを生成し、
前記受信した第２データと、前記コードワードと、をセキュリティモジュールに送信するように構成されており、
前記ホストプロセッサは、前記セキュア動作モードで動作中に、前記受信した第２データが前記コードワードに対応することを検証するように構成されている、
システム。
【請求項８】
前記セキュリティモジュールは、
前記要求に応じてセッションキーワードを生成し、
前記セッションキーワードを前記第２入力ハンドラと共有する、ように構成されている、
請求項７のシステム。
【請求項９】
前記ホストプロセッサは、前記通常動作モードから前記セキュア動作モードに移行するために、割り込みのアサートに応じて前記セキュア動作モードに移行するように構成されており、前記割り込みのアサートは、前記インタフェースからの前記第２信号に応じたものである、請求項７のシステム。
【請求項１０】
前記ホストプロセッサは、前記セキュア動作モードに移行するために、専用のハードウェアをアクティブにするように構成されている、請求項７のシステム。
【請求項１１】
前記専用のハードウェアは、前記ホストプロセッサとは別のチップ上に存在する、請求項１０のシステム。
【請求項１２】
前記第２入力ハンドラは、
前記受信した第２データが前記コードワードに対応すると前記セキュリティモジュールが検証したという判別に応じて、前記検証されたデータを１つ以上の他のメモリ位置に記憶し、
前記受信した第２データを事前に選択した値に置き換える、ように構成されており、
前記ホストプロセッサは、前記第２入力ハンドラが前記検証されたデータを記憶したことに応じて、前記通常動作モードに戻るように構成されている、
請求項７のシステム。
【請求項１３】
前記第２入力ハンドラは、前記受信した第２のデータと、前記コードワードと、を前記コプロセッサに送信するために、前記受信した第２データを、前記セッションキーワードを用いて暗号化するように構成されている、請求項７のシステム。
【請求項１４】
ホストコンピュータが、電子署名の要求を受信したことに応じて、セキュア入力モードをアクティブにすることと、
前記ホストコンピュータの入力ハンドラが、前記電子署名の要求を受信したことに応じて、セッションキーワードを生成することと、
前記電子署名が入力装置から取得可能であることに応じて、前記ホストコンピュータのホストプロセッサを通常動作モードからセキュア動作モードに移行させることと、
前記入力ハンドラが、前記ホストプロセッサが前記セキュア動作モードである間、前記入力装置から前記電子署名を受信することと、
前記入力ハンドラが、前記受信した電子署名と前記セッションキーワードとに対応するコードワードを生成することと、
前記入力ハンドラが、前記コードワードをセキュリティモジュールに送信することと、
前記セキュリティモジュールが、前記コードワードが、前記受信した電子署名と前記セッションキーワードとに対応することを検証することと、
を含む、方法。
【請求項１５】
前記電子署名の要求は、前記入力装置を介して受信した所定の値である、請求項１４の方法。
【請求項１６】
前記電子署名の要求は、前記ホストコンピュータ上で実行するアプリケーションを介して受信される、請求項１４の方法。
【請求項１７】
前記セキュリティモジュールが、前記コードワードが、前記受信した電子署名と前記セッションキーワードとに対応することを検証したことに応じて、前記入力ハンドラが、前記検証されたデータを所定の値に置き換えることを含む、請求項１４の方法。
【請求項１８】
前記ホストコンピュータが、前記ホストコンピュータ上で実行する前記アプリケーションから確認を受信したことに応じて、前記セキュア入力モードを非アクティブにすることを含む、請求項１５の方法。
【請求項１９】
前記ホストプロセッサが前記通常動作モードに戻ることは、前記コードワードが、前記受信した電子署名と前記セッションキーワードとに対応することを前記セキュリティモジュールが検証したことに応じて、前記ホストプロセッサが前記通常動作モードに切り替えることを含む、請求項１４の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムの分野に関し、より具体的には、キーボードによるセキュアな入力の実現に関する。
【背景技術】
【０００２】
パーソナルコンピュータ（ＰＣ）、ラップトップコンピュータ及びモバイルデバイス（例えば、スマートフォン及びタブレット）等のコンピュータシステムは、様々な日常業務に広く用いられている。多くの業務では、ユーザの身元を確認するために、ユーザが、パスワード又は他の形態のセキュアなコードワードを入力して業務を行うことに頼っている。「アイデンティティ泥棒（Identity thieves）」（すなわち、多くの場合、悪意を持ってユーザに成りすまそうとする他人）は、ユーザのコンピュータにソフトウェアプログラムをインストールすることによって、当該ユーザのパスワードを取得しようとする可能性がある。このソフトウェアプログラムは、ユーザのキーボードからのキーストロークを記録し、情報をインターネット又は他の通信チャネルを介してアイデンティティ泥棒に送信することができる。ユーザ入力を記録するこれらのソフトウェアプログラムは、「キーロガー」と呼ばれ、悪意のあるソフトウェア（本明細書では「マルウェア」とも呼ばれる）の一形態である。アイデンティティ泥棒がユーザのコンピュータにキーロガーを配置する１つの方法は、ユーザがインストール可能なソフトウェアアプリケーションであって、他の点では無害に見えるソフトウェアアプリケーションにマルウェアを隠すことである。
【０００３】
キーロガーがコンピュータにインストールされると、全てのキーストロークが捕捉され、アイデンティティ泥棒に送信される。コンピュータにインストールされているアンチウイルスソフトウェアは、キーロガーを検出して削除することができる。しかしながら、キーロガーを検出するためには、アンチウイルスソフトウェアが、キーロガーを認識できなければならない。したがって、アンチウイルスプログラムは、ある程度の期間使用されている既知のキーロガーを検出することに優れている。アイデンティティ泥棒が公開していないキーロガーは、ユーザがキーロガーを検出して、アンチウイルスプログラマーが、その検出情報をアンチウイルスプログラムに追加するまでの間、アンチウイルスソフトウェアの影響を受けない可能性がある。キーロガーが検出されていないこの期間中に、知らない間にインストールされたキーロガーを使用したユーザは、自身の情報、特に、パスワードが盗まれ易くなり、自身の機密情報を危険にさらす可能性がある。
【０００４】
このようなキーロギングの試みを阻止するために、様々な技術が開発されている。かかる方法の１つは、セキュアキーボードを使用することである。セキュアキーボードは、通常使用されるデフォルトのキーボードに替わるハードウェアである。セキュアキーボードは、キーボードからコンピュータに送信されるデータを暗号化し、キーロガーがデータを読み取ることができるポイントをデータが通過した後にのみデータを復号化することができる。かかるシステムでは、ログデータを受信するアイデンティティ泥棒にとって役に立たない支離滅裂な言葉のように見えるものをキーロガーに受信させることができる。しかしながら、セキュアキーボードは高価であり、所定のユーザにとって望ましい機能では利用できない場合がある。
【０００５】
キーロギングソフトウェアが、アンセキュアなキーボード（アンセキュアキーボード）から送信されたデータにアクセスするのを防止する方法が望まれている。本明細書では、データを、キーボードからコンピュータシステムのホストプロセッサにセキュアに転送するためのシステム及び方法を提示する。
【発明の概要】
【課題を解決するための手段】
【０００６】
コンピュータシステムの様々な実施形態が開示される。概して、システムが、入力装置からデータを受信し、データを受信したときに信号をアサートするように構成されたインタフェースを備える、システム及び方法が考えられる。また、システムは、コプロセッサと、ホストコンピュータと、を備え、ホストコンピュータは、ホストプロセッサと、入力ハンドラと、を備える。入力ハンドラは、ホストプロセッサが通常動作モードで動作している間に、インタフェースからの第１信号に応じて当該インタフェースから第１データを受信し、受信した第１データを１つ以上のメモリ位置に記憶するように構成されてもよい。ホストコンピュータは、ユーザ要求に応じて、セキュアな入力モードを起動してもよい。ホストプロセッサは、インタフェースからの第２信号に応じて、通常動作モードから特権動作モードに移行してもよい。次に、入力ハンドラは、ホストプロセッサが特権動作モードに移行したことに応じて、インタフェースから第２データを受信してもよい。入力ハンドラは、受信した第２データに対応するコードワードを生成し、受信した第２データと、コードワードと、をコプロセッサに送信してもよい。コプロセッサは、受信した第２データがコードワードに対応することを検証してもよい。
【０００７】
一実施形態では、コプロセッサは、セッションキーワードを生成し、当該セッションキーワードを入力ハンドラと共有するように構成されてもよい。他の実施形態では、ホストプロセッサは、割り込みのアサートに応じて特権動作モードに移行するように構成されてもよく、割り込みのアサートは、インタフェースからの第２信号に対する応答であってもよい。さらなる実施形態では、この割り込みは、ホストプロセッサの他の割り込みよりも高い優先順位を有してもよい。
【０００８】
所定の実施形態では、入力ハンドラは、入力装置から受信したデータとコードワードとをコプロセッサに送信するために、受信したデータを、セッションキーワードを用いて暗号化するように構成されてもよい。他の実施形態では、入力ハンドラは、受信した第２データがコードワードに対応することをコプロセッサが検証したという判別に応じて、検証されたデータを１つ以上のメモリ位置に記憶するように構成されてよい。また、入力ハンドラは、受信した第２データを、予め選択した値に置き換えてもよい。さらなる実施形態では、ホストプロセッサは、検証されたデータを入力ハンドラが記憶したことに応じて、通常動作モードに戻るように構成されてもよい。
【図面の簡単な説明】
【０００９】
【図１】コンピュータシステムの様々な実施形態を示す図である。
【図２】コンピュータシステムの一実施形態を示すブロック図である。
【図３】ユニバーサルシリアルバス（ＵＳＢ）入力装置とのセキュア通信をサポートするコンピュータシステムの実施形態を示すブロック図である。
【図４】Ｐｅｒｓｏｎａｌ  Ｓｙｓｔｅｍ／２（ＰＳ／２）入力装置とのセキュア通信をサポートするコンピュータシステムの実施形態を示すブロック図である。
【図５】Ｂｌｕｅｔｏｏｔｈ（登録商標）入力装置とのセキュア通信をサポートするコンピュータシステムの実施形態を示すブロック図である。
【図６】入力装置からのデータを保護する方法の実施形態を示すフロー図である。
【図７】入力装置とのセキュア通信をサポートするコンピュータシステムの実施形態を示すブロック図である。
【図８】入力装置からのデータを保護する方法の他の実施形態を示すフロー図である。
【図９】セキュア認証をサポートするコンピュータシステムの実施形態を示すブロック図である。
【図１０】入力装置を用いて許可を生成する方法の実施形態を示すフロー図である。
【発明を実施するための形態】
【００１０】
本開示は、様々な変更及び代替の形態が可能であるが、その特定の実施形態が一例として図面に示され、本明細書にて詳細に説明される。しかしながら、図面及びその詳細な説明は、本開示を、例示した特定の形態に限定することを意図しておらず、むしろ、添付の請求項に規定される本発明の趣旨及び範囲に含まれる全ての変形物、均等物及び代替物を包含することを意図しているものと理解されたい。本明細書で使用する見出し（heading）は、組織的な目的のためであり、開示の範囲を制限するために使用しているのではない。本願を通して、「ｍａｙ」という言葉は、強制的な意味（すなわち、「しなければならない」という意味）ではなく、許可的な意味（すなわち、「可能性がある」という意味）で使用されている。同様に、「ｉｎｃｌｕｄｅ」、「ｉｎｃｌｕｄｉｎｇ」、「ｉｎｃｌｕｄｅｓ」という言葉は、含むことを意味しており、制限することを意味していない。
【００１１】
様々なユニット、回路又は他のコンポーネントは、１つ以上のタスクを実行する「ように構成される」と説明することができる。かかる文脈において、「ように構成される」とは、動作中に１つ以上のタスクを実行する「回路を有する」ことを一般的に意味する構造を幅広く記載したものである。したがって、ユニット／回路／コンポーネントは、ユニット／回路／コンポーネントが現在オンでなくても、タスクを実行するように構成することができる。一般に、「ように構成される」に対応する構造を形成する回路は、ハードウェア回路を含むことができる。同様に、説明の便宜上、様々なユニット／回路／コンポーネントは、１つ以上のタスクを実行するものとして説明することができる。かかる説明は、「ように構成される」というフレーズを含むものとして解釈されるべきである。１つ以上のタスクを実行するように構成されたユニット／回路／コンポーネントと記載することは、ユニット／回路／コンポーネントに関して、米国特許法第１１２条第６パラグラフの解釈を行使しないことを明示的に意図している。より一般的には、任意の要素の記載は、「する手段」又は「するステップ」という言葉を具体的に記載していない限り、当該要素に関して、米国特許法第１１２条第６パラグラフの解釈を行使しないことを明示的に意図している。
【００１２】
コンピュータシステムは、悪意のあるキーロギングソフトウェア（通常、「キーロガー」と呼ばれる）に弱い場合がある。キーロギングソフトウェアは、キーボード又は他の形態のヒューマンインタフェース装置（ＨＩＤ）で入力された機密情報を検出し、この情報を不正使用しようとする個人（すなわち、「ハッカー」又は「アイデンティティ泥棒」）に当該情報を転送しようとすることができる。キーロガーは、知らないうちにコンピュータシステムにインストールされている場合があり、コンピュータシステムにインストールされたアンチウイルスソフトウェアによって検出されない場合がある。ＨＩＤへのデータ入力を、システムにインストールされたキーロガーから保護することの可能なシステム及び方法が、本明細書で提示される。
【００１３】
コンピュータシステムの幾つかの実施形態を図１に示す。システム１０１は、デスクトップコンピュータを表し、システム１０２は、ラップトップコンピュータを表し、システム１０３は、無線キーボードを有するタブレット又はスマートフォンを表している。これらのコンピュータシステムは、何れもキーロガーの影響を受け易い可能性がある。
【００１４】
システム１０１は、キーボード、マウス、マイクロフォン、カメラ等の１つ以上のＨＩＤを備えてもよい。かかる装置は何れも、ユーザからの入力を受信可能であってもよく、そのデータを使用して機密処理の実行又は開始可能であってもよい。機密処理には、ユーザが公開したくない個人データ又は企業データにアクセスするのに使用されるパスワードを入力することや、ジェスチャを実行すること等が含まれてもよい。
【００１５】
システム１０２及びシステム１０３は、システム１０１と同様のＨＩＤを備えてもよく、これにより、これらのＨＩＤのうち１つ以上を介したキーロガーによる攻撃に対して影響を受け易い。スマートテレビやビデオゲーム機等の図示されていない他の装置は、キーロガー又は類似のタイプのマルウェアの攻撃を受け易い。ＨＩＤを介して入力された機密データを処理し、第三者が閲覧可能な通信チャネルを有するソフトウェアをインストール可能なコンピュータシステムは、アイデンティティ泥棒のターゲットとなり得る。
【００１６】
図１に示すコンピュータシステムは、単なる一例であることに留意されたい。ＨＩＤを有する他のタイプのコンピュータシステムも可能であり、考慮される。
【００１７】
図２を参照すると、コンピュータシステムのブロック図が示されている。システム２００は、ホストコンピュータ２２０を備え、ホストコンピュータ２２０は、メモリ２０２に接続されたホストプロセッサ２０１を含む。ホストコンピュータ２２０は、ユニバーサルシリアルバス（ＵＳＢ）２０４を介して入力装置２０３に接続される。ホストプロセッサ２０１は、入力ハンドラ２０５及びオペレーティングシステム（ＯＳ）２０６からのコードを実行してもよい。ホストプロセッサ２０１は、システム２００のユーザが気付いていないキーロガー２０７からのコードを実行することもできる。
【００１８】
ホストコンピュータ２２０は、ホストプロセッサ２０１及びメモリ２０２から構成されたシステム２００内のコンピューティングブロックであってよい。ある実施形態では、ホストコンピュータは、システム２００内のマザーボードとして実装されてもよい。例えば、ホストプロセッサ２０１及びメモリ２０２の両方の機能が１つのダイに含まれるシステムオンチップ（ＳｏＣ）に対応するホストコンピュータ２２０、又は、ホストプロセッサ２０１及びメモリ２０２が単一のパッケージに含まれる別個のダイとして実装されるシステムインパッケージ（ＳｉＰ）に対応するホストコンピュータ２２０等のように、他の実施形態も考えられる。ホストコンピュータは、入力ハンドラ２０５、オペレーティングシステム２０６及びキーロガー２０７等のソフトウェアアプリケーション用のコード命令を記憶、実行可能であってもよい。
【００１９】
ホストプロセッサ２０１は、いくつかの実施形態では、アプリケーションソフトウェアに関連する命令の実行に応じて演算を行う汎用プロセッサとして実装されてもよい。他の実施形態では、ホストプロセッサ２０１は、マイクロプロセッサ又はマイクロコントローラ等の中央処理装置（ＣＰＵ）であってもよく、複数のＣＰＵコアを含んでもよい。様々な実施形態では、ホストプロセッサ２０１は、例えば、ｘ８６、ＡＲＭ（商標）、ＭＩＰＳ又はＰｏｗｅｒＰＣ（商標）ＩＳＡ等の任意の適切な命令セットアーキテクチャ（ＩＳＡ）を実装してもよい。
【００２０】
ホストプロセッサ２０１は、通常モード及びセキュアモード（本明細書では、「特権モード」とも呼ばれる）等の複数の動作モードを含むことができる。ＯＳ２０６のコード命令の一部又は全ては通常動作モードでのみ実行され、入力ハンドラ２０５のコード命令は通常モード及びセキュアモードの両方で実行されてもよい。ＯＳ２０６等のオペレーティングシステムは、他のアプリケーションの動作を管理することができるので、ＯＳ２０６を介して起動される他のアプリケーションは、通常モードでのみ動作するようにされてもよい。様々な実施形態では、セキュア動作モードは、パワーアップブートシーケンス又は特定のタイプのセキュア割り込みを介して移行されてもよい。セキュア割り込みは、ホストプロセッサ２０１内で最も優先順位の高い割り込みであってもよい。最も優先順位の高い割り込みとして、セキュアモードで実行するコードは、ＯＳ２０６又はキーロガー２０７のコード等のようにホストコンピュータ２２０で実行される他のアプリケーションによって割り込まれないことが可能である。セキュアモードは、いくつかの実施形態では、ｘ８６アーキテクチャで使用されるシステム管理モード（ＳＭＭ）、又は、ＡＲＭアーキテクチャで使用されるＴｒｕｓｔＺｏｎｅセキュアモードに対応してもよい。ＯＳ２０６の動作を通常モードに制限することによって、ＯＳ２０６がアクティブになるまでキーロガー２０７が開始しないので、キーロガー２０７のコード命令がセキュアモードで実行されるのを防止することができる。セキュアモードは、例えば、制限されたメモリアクセス範囲やセキュアモードでのみアクセス可能な周辺機器等のように、追加のハードウェア制限を有してもよい。
【００２１】
メモリ２０２は、１つ以上のタイプのメモリを含んでもよい。例えば、様々な実施形態において、メモリ２０２は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、ＮＡＮＤフラッシュメモリ、ＮＯＲフラッシュメモリ、強誘電体ランダムアクセスメモリ（ＦｅＲＡＭ）又は任意の他の適切なデータ記憶媒体を含むことができる。メモリ２０２は、ホストプロセッサ２０１がコード命令を実行することの可能な１つ以上のキャッシュメモリを含んでもよい。
【００２２】
入力装置２０３は、キーボード、又は、ユーザがデータを入力する他のタイプのＨＩＤであってもよい。適切なＨＩＤの他の例は、マウス、トラックパッド（「タッチパッド」とも呼ばれる）、マイクロフォン、ジョイスティック、ウェブカメラ又はトラックボールを含んでもよい。いくつかの実施形態では、入力装置は、２つ以上のＨＩＤの組み合わせであってもよい。入力装置２０３は、ＵＳＢポートに接続されたコードを介してＵＳＢ２０４に取り付けられた別個の物理デバイスであってもよいし、ＵＳＢポートを介してＵＳＢ２０４に取り付けられた受信機を有する別個の無線デバイスであってもよい。他の実施形態では、入力装置２０３は、内部ＵＳＢチャネルを介してＵＳＢ２０４に取り付けられた同じ物理デバイス（例えば、ラップトップのキーボード）の一部であってもよい。入力装置２０３は、例えば、キーボードのキーの押下、又は、マウスの動き等のユーザからの入力に応じて、サポートされたＵＳＢプロトコルを用いてデジタル値を出力してよい。これらの例において、キーを押下することによって、例えばアスキー（ＡＳＣＩＩ）値等の対応する値が発生して、ＵＳＢ２０４に送信されてもよい。マウスの場合には、横方向及び上下方向の変化に対応する値が装置によって計算され、様々なボタンの押下に対応する値と共にＵＳＢ２０４に送信されてもよい。
【００２３】
ＵＳＢ２０４は、入力装置２０３からホストプロセッサ２０１へのインタフェースであってもよい。ＵＳＢ２０４は、ＵＳＢ１．１、ＵＳＢ２．０又はＵＳＢ３．０等の任意の適切なＵＳＢプロトコル規格を実装してもよい。ＵＳＢ２０４は、専用のＵＳＢホストコントローラであってもよい。他の実施形態では、一部のモバイルデバイスによって使用されるＵＳＢ  Ｏｎ‐Ｔｈｅ‐Ｇｏ（ＯＴＧ）プロトコルによって許可されるようなＵＳＢ装置又はホストとして構成可能であってもよい。ＵＳＢ２０４は、ホストプロセッサ２０１と同じチップ（本明細書では「ダイ」とも呼ばれる）上の機能ブロックとして組み込まれてもよいし、または、ホストプロセッサ２０１と同じ回路基板上の別個のパッケージの別個のダイであってもよい。他の実施形態では、ＵＳＢ２０４は、ホストプロセッサ２０１とは別の回路基板上に存在し、ホストプロセッサ２０１に電気的に接続されてもよい。
【００２４】
ＵＳＢ２０４は、実装されたＵＳＢプロトコルを用いて、入力アクティビティに関して入力装置２０３をモニタしてもよい。入力アクティビティに応じて、ＵＳＢ２０４は、入力装置２０３が送信した値を受信して、入力を受信してホストプロセッサ２０１に転送する準備ができていることをホストプロセッサ２０１に送信してもよい。ホストプロセッサ２０１では、ＵＳＢ２０４からの信号をポーリングして、信号がアサートされているか否かを判別してもよいし、信号状態の変化によってホストプロセッサ２０１に内部割り込みを引き起こすように、割り込みに接続されてもよい。
【００２５】
入力ハンドラ２０５のコード又はプログラム命令は、メモリ２０２に存在してもよい。いくつかの実施形態では、メモリ２０２が、例えばフラッシュメモリ又はＲＯＭ等の不揮発性メモリを含む場合に、入力ハンドラ２０５のコード命令は、メモリ２０２に常駐してもよい。他の実施形態では、入力ハンドラ２０５のコード命令は、長期記憶のために別個のメモリに存在し、システムブートプロセス中に、メモリ２０２にコピーされてもよい。入力ハンドラ２０５は、デバイスドライバ（すなわち、システム２００のハードウェアと直接インタフェースするためのプログラム命令）に対応してもよいし、入力装置２０３上のアクティビティに関してＵＳＢ２０４をモニタしてもよい。いくつかの実施形態では、モニタリングは、ＵＳＢ２０４からの１つ以上の信号のポーリングによって行われてもよい。また、他の実施形態では、モニタリングは、ＵＳＢ２０４からの１つ以上の信号への割り込みを有効にすることを含んでもよい。入力ハンドラ２０５は、ＵＳＢ２０４からの入力を検出すると、ＵＳＢ２０４からデータ値を受信し、これらの値を入力バッファに記憶してもよい。入力バッファは、入力装置２０３からのユーザ入力を記憶するために確保したメモリ２０２内の位置に対応してもよい。他の実施形態では、ＵＳＢ２０４は、ダイレクトメモリアクセスモジュール（図示せず）の使用を介して、データ値をメモリ２０２の入力バッファに記憶してもよい。次に、入力ハンドラ２０５は、入力装置２０３からのデータを受信し、入力バッファからデータにアクセス可能であることを、ＯＳ２０６又はホストプロセッサ２０１でアクティブな他のアプリケーションに送信してもよい。
【００２６】
ＯＳ２０６は、メモリ２０２からホストプロセッサ２０１によって実行されるコード又はプログラム命令を含んでもよい。ＯＳ２０６は、アクティブなアプリケーションとシステム２００のハードウェアとの間のインタフェースを提供してもよい。また、ＯＳ２０６は、様々なプログラムを起動（又は「開始」）するために、システム２００上のインタフェースをユーザに提供してもよい。いくつかの実施形態では、アクティブなアプリケーションは、ハードウェアドライバ（システム２００の特定のハードウェアを動作させるコード命令）へのアクセスを有してもよい。他の実施形態では、アプリケーションは、ＯＳ２０６を介してハードウェアへアクセスするように制限されてもよい。
【００２７】
キーロガー２０７は、ユーザによって無意識にメモリ２０２に配置されたコード命令から構成することができる。キーロガー２０７は、正当な機能を実行するものとして広告されたアプリケーションによってメモリ２０２内に配置され、ユーザによって故意にインストールされ得る悪意のあるソフトウェアの形態であってもよい。有用なアプリケーションでマルウェアを隠すプログラムは、トロイの木馬としても知られている。アンチウイルスソフトウェアがホストプロセッサ２０１上でアクティブな場合であっても、アンチウイルスソフトウェアのプロバイダがキーロガー２０７を事前に検出していなければ、又は、キーロガー２０７が、キーロギングマルウェアに関連する不審なアクティビティにアンチウイルスソフトウェアが気付く程度に十分長くシステム２００内でアクティブになっていなければ、キーロガー２０７が検出されない場合がある。
【００２８】
キーロガー２０７は、ＯＳ２０６又は入力ハンドラ２０５をモニタして、入力がいつ受信されたかを検出し、新たな入力を受信したことを入力ハンドラ２０５がＯＳ２０６に送信した場合に、入力バッファを読み出そうとすることができる。キーロガー２０７は、入力バッファを読み出して、読み出したデータを、一時的又は長期的に記憶するために他の場所に保存することができる。いくつかの実施形態では、キーロガー２０７は、記憶したデータを、インターネット接続又は他の通信チャネルを介して、定期的に所定の場所に送信することができる。他の実施形態では、キーロガー２０７は、設定された量のデータが収集されると、読み取りデータを送信することができる。アイデンティティ泥棒の可能性があるデータ受信者は、データを使用して、システム２００の使用中に入力された可能性があるユーザ名及びパスワード等の機密情報を判別してもよい。
【００２９】
入力ハンドラ２０５、ＯＳ２０６及びキーロガー２０７は、ホストプロセッサ２０１によって実行されるコード命令の集合（すなわち、プログラム、アプリケーション又はドライバ）から構成されてもよいことに留意されたい。従って、本開示においては、入力ハンドラ２０５、ＯＳ２０６又はキーロガー２０７がタスクを実行するものとして記載されている場合、ホストプロセッサ２０１は、対応するコード命令の実行によって生じるタスクを実行していることが理解される。
【００３０】
図２に示すシステムは、例示目的のための単なる一例である。したがって、本明細書では、概念を示す特徴のみが開示されている。他の実施形態は、例えば、ディスプレイ、オーディオ周辺機器及び通信周辺機器等のコンピュータシステムに関連する他の機能ブロックを含んでもよい。
【００３１】
図３を参照すると、コンピュータシステムの他の実施形態が示されている。システム３００は、ホストプロセッサ３０１及びメモリ３０２を含むホストコンピュータ３２０であって、ＵＳＢ３０４を介して入力装置３０３に接続されたホストコンピュータ３２０等のように、図２のシステム２００と同様の多くのコンポーネントを備える。システム３００は、ホストコンピュータ３２０に接続されたセキュリティモジュール３０９を含んでもよい。メモリ３０２は、入力ハンドラ３０５、ＯＳ３０６又はキーロガー３０７からのコードを含んでもよい。メモリ３０２は、信頼できるアプリケーション３０８及びセキュリティモジュールドライバ３１０を含んでもよい。ホストコンピュータ３２０、ホストプロセッサ３０１、メモリ３０２、入力装置３０３及びＵＳＢ３０４と、ＯＳ３０６及びキーロガー３０７に対応するコード命令とは、上述した図２のシステム２００に関して説明したように動作してもよい。
【００３２】
セキュリティモジュール３０９は、入力ハンドラ３０５を介してホストプロセッサ３０１に送信されるユーザ入力の認証をサポートしてもよい。セキュリティモジュール３０９は、プロセッサ、メモリ、割り込み、及び、システム３００の他の部分と通信するための入力／出力ポートを備えるマイクロコントローラから構成されてもよい。セキュリティモジュール３０９は、ホストプロセッサ３０１と同じダイ、ホストプロセッサ３０１と同じパッケージ内の異なるダイ、又は、ホストプロセッサ３０１と異なるパッケージに実装可能である等の様々な実施形態が考えられる。セキュリティモジュール３０９は、ハッシング及び／又は暗号化／復号化機能を含んでもよい。
【００３３】
入力ハンドラ３０５は、入力ハンドラ２０５に関して説明した機能に加えて、セキュリティモジュール３０９と同様のハッシング及び／又は暗号化／解読機能を含んでもよい。いくつかの実施形態では、入力ハンドラ３０５は、２セットのコード命令（すなわち、入力ハンドラ２０５に関して説明した機能に対応し得る標準の入力ハンドラと、ハッシング及び／又は暗号化／解読のための追加の機能を含むセキュアな入力ハンドラと）を含んでもよい。ここで、入力ハンドラ３０５は、組み合わされた機能に関するコード命令の両方のセットを参照する。入力ハンドラ３０５は、セキュリティモジュール３０９を用いてデータを認証してもよい。例えば、入力ハンドラ３０５は、セッションキーワードをセキュリティモジュール３０９と共有してもよい。セッションキーワードは、入力ハンドラが最初にシステム３００にインストールされたときに共有されてもよいし、他の実施形態では、ディフィー・ヘルマン鍵交換等の鍵共有プロトコルを用いて、システム起動時に決定されてもよい。セッションキーが共有された後のある時点で、入力ハンドラ３０５は、ＵＳＢ３０４からデータを受信し、受信したデータを入力バッファに記憶してもよい。図２を参照すると、入力ハンドラ２０５は、この時点で、データを受信したことをＯＳ２０６に通知してもよい。これに対し、入力ハンドラ３０５は、セッションキーワードを用いてデータのハッシュを計算し、次いで、データを、データのハッシュと共にセキュリティモジュール３０９に送信してもよい。セキュリティモジュール３０９は、データ及びデータのハッシュを受信し、共有セッションキーワードを用いてデータのハッシュを計算し、計算したハッシュ値を、入力ハンドラから受信したハッシュ値と比較してもよい。
【００３４】
本明細書において、データをハッシュすること又はデータハッシングとは、可変長のデータを関数で処理して、ハッシュ値と呼ばれる固定長の結果を生成する手順を指すことに留意されたい。ハッシュ関数は決定論的であるべきである。つまり、同じデータが同じ順序で提示されると、常に同じハッシュ値が生成されるはずである。データの順序又は１つ以上のデータの値の変更によって、異なるハッシュ値が生成されるはずである。ハッシュ関数は、同じデータが異なるキーを用いてハッシュされると異なるハッシュ値が生成されるように、キーワード又は「ハッシュキー」を用いてもよい。ハッシュ値は、入力データの可能な組み合わせよりも少ない一意の値を有し得るので、データ入力の異なる組み合わせによって同じハッシュ値が得られる場合がある。例えば、１６ビットのハッシュ値は６５５３６の一意の値を有するが、４バイトのデータは、４０億を超える一意の組み合わせを有し得る。したがって、ハッシュ関数を複雑過ぎない又は時間がかかり過ぎないようにしながら、結果が重複する可能性が最小になるハッシュ値の長さが選択されてもよい。
【００３５】
実施例に戻ると、２つのハッシュ値が一致する場合には、データは、入力装置３０３からのものとして検証され、セキュリティモジュール３０９は、このデータを、メモリ３０２内の信頼できるアプリケーション３０８に転送してもよい。信頼できるアプリケーションは、ユーザによってインストールされたソフトウェアアプリケーションであってもよく、ソフトウェアのインストール時にセキュリティモジュール３０９に登録された値を含む。登録に用いられる値は、信頼できるソフトウェアプロバイダに対応する一意の値であってもよいし、システム３００内の信頼できるソフトウェアアプリケーションを識別するためにユーザが生成したコードワードであってもよい。セキュリティモジュール３０９は、信頼できるアプリケーションとデータを共有するために、データを、セキュアな入力バッファに記憶してもよく、当該データの位置は、信頼できるアプリケーションとのみ共有されてもよい。入力装置からの検証されたデータが、信頼できるアプリケーション３０８と共有されると、入力ハンドラは、データを受信したことをＯＳ３０６に通知することなく、入力装置３０３からの次のユーザ入力についてＵＳＢ３０４のモニタリングに戻ることができる。データが、信頼できるアプリケーション３０８に直接渡されたので、この通知を必要としなくてもよい。入力ハンドラ３０５からＯＳ３０６への観察される信号がないので、キーロガー３０７は、入力装置３０３からデータを受信したという指標を有しないので、データは、キーロガー３０７によって記録されることなく、信頼できるアプリケーション３０８に転送される。
【００３６】
メモリ３０２は、セキュリティモジュールドライバ３１０用のコード命令を含んでもよい。セキュリティモジュールドライバ３１０は、信頼できるアプリケーションとデータを共有するためのセキュアな入力バッファと、セキュリティモジュール３０９の適切な動作に必要な他の命令と、を含んでもよい。他のタスクは、ホストプロセッサ３０１とセキュリティモジュール３０９との間のインタフェースを含むセキュリティモジュールドライバによって行われてもよい。
【００３７】
前述した例では、キーロガー３０７は、入力ハンドラ３０５からＯＳ３０６への信号を観察しなくても、入力バッファをモニタする命令を含む場合、又は、入力ハンドラ３０５から生じるアクティビティをキーロガーが観察することができる場合、依然として、入力バッファからデータを読み出し、データを記憶してアイデンティティ泥棒へ送信することができる。かかるシナリオを回避するために、入力ハンドラ３０５は、ＵＳＢ３０４からデータを受信する前にセキュリティモジュール３０９に通知して、セキュアなデータトランザクションの準備をしてもよい。セキュリティモジュール３０９は、ＵＳＢ３０４から入力ハンドラ３０５にデータが送信されようとしていることを、セキュリティモジュールドライバ３１０を介してホストプロセッサ３０１に示してもよい。ホストプロセッサ３０１は、ＵＳＢ３０４のアクティビティのモニタリングに使用される割り込みライン上で、セキュアモードオプションを有効にしてもよい。ＵＳＢ３０４が、ホストプロセッサ３０１に信号をアサートして、データが送信されようとしていることを示す場合には、ホストプロセッサ３０１は、通常動作モードからセキュア動作モードに切り替えられてもよい。セキュア動作モードでは、ＯＳ３０６と、ＯＳ３０６から起動されたアプリケーションとは、コードを実行することができない。このセキュアモードでは、入力ハンドラ３０５を含み得る一部のハードウェアドライバのみが、命令を実行することができる。いくつかの実施形態では、セキュリティモジュールドライバ３１０は、セキュアモードで実行することができる。ＯＳ３０６内で起動し得るキーロガー３０７は、セキュアモードが有効にされている場合には命令を実行することができず、これにより、入力バッファを読み出すことができない。ここで、入力ハンドラ３０５は、ＵＳＢ３０４からデータを受信し、ハッシュ値を生成し、ハッシュ値及びデータの両方をセキュリティモジュール３０９に送信して検証し、セキュアな入力バッファに記憶することができる。セキュアな入力バッファにおいて、信頼できるアプリケーション３０８と共有されてもよい。セキュアな入力バッファにデータが記憶されると、ホストプロセッサは、通常の動作モードに切り替わり、通常動作モードにおいて、信頼できるアプリケーションは、セキュアな入力バッファからデータを取り出してもよい。
【００３８】
入力ハンドラ３０５、ＯＳ３０６、キーロガー３０７、信頼できるアプリケーション３０８及びセキュリティモジュールドライバ３１０等のソフトウェアプログラム、アプリケーション及びドライバの各々は、ホストプロセッサ３０１によって実行されるコード命令の集合から構成されてもよいことに再度留意されたい。したがって、コード命令から構成されたこれらのブロックの何れかがタスク又は動作を実行するものとして説明されている場合、本明細書では、ホストプロセッサ３０１は、上記ブロックに対応するコード命令の実行に応じて、上記タスク又は動作を行ってもよいことが理解される。
【００３９】
図３のシステムは、入力装置からデータをセキュアに受信する方法をサポートするコンピュータシステムの一例に過ぎない。他の実施形態は、例えば、電源、又は、ＤＶＤ‐ＲＯＭドライブ等のリムーバブル記憶装置等のようにコンピュータシステムに関連する他の機能ブロックを含んでもよい。
【００４０】
図４を参照すると、入力装置からデータをセキュアに受信する方法をサポートするコンピュータシステムの他の例が示されている。システム４００は、図３のシステム３００の特徴と同様の多くの特徴を備える。したがって、図３に関する記載は、別段の記載がない限り、図４の対応するブロックに適用されてもよい。
【００４１】
ＰＳ／２  ４０４は、図３のＵＳＢ３０４と同様のタスクを行ってもよい。しかしながら、ＰＳ／２  ４０４は、入力装置４０３に対して異なるプロトコルを提供してもよい。ＰＳ／２  ４０４は、異なるハードウェアコネクタと、様々なＵＳＢプロトコルとは異なるデータ送信プロトコルと、を用いるＰＳ／２インタフェースを使用してもよい。よって、入力装置４０３は、ＰＳ／２規格対応のプロトコルを用いて、データをＰＳ／２  ４０４に送信してもよい。ＵＳＢ３０４とは異なり、ＰＳ／２  ４０４は、ＤＭＡを介しても、データをメモリ４０２に書き込むことができない場合がある。このような場合、入力ハンドラ４０５は、ＰＳ／２  ４０４からデータを読み出し、そのデータをメモリ４０２の入力バッファに記憶してもよい。ハードウェア又はプロトコルの相違にも関わらず、入力ハンドラ４０５は、それ以外は、入力ハンドラ３０５に関して前述したように動作してもよく、ＰＳ／２対応の入力装置は、同等のＵＳＢ対応の入力装置と同じセキュア性を有する。
【００４２】
ＵＳＢ接続とＰＳ／２接続との１つの相違は、ＰＳ／２接続が、入力装置のみ（特に、キーボードやマウス、又は、トラックボール等の他のポインティングデバイス）を対象としており、ＵＳＢ接続が、上記の入力装置と、大容量記憶フラッシュドライブ、カメラ、電話、タブレット、おもちゃ等と、を含む、増え続ける範囲の装置をサポートすることである。よって、ＰＳ／２  ４０４のアクティビティが入力装置４０３に制限されるので、ＰＳ／２  ４０４は、図３に関連して説明したセキュアな入力手順を実行する、より簡単な機構を提供してもよい。一方、ＵＳＢ３０４のアクティビティは、入力装置３０３に限定されず、ＵＳＢ３０４を介した非入力装置に関するアクティビティを、システム３００のセキュリティ要件を認識して管理することが必要となり得る。さらに、ＰＳ／２  ４０４は、所定のポートに対して１つの装置、すなわち、ポイントツーポイントプロトコルに限定されてもよい。ＵＳＢ３０４は、所定のポートに関して複数のタイプの複数の装置に拡張可能であってもよい。
【００４３】
図４のシステムは、入力装置からデータをセキュアに受信する方法をサポートするコンピュータシステムの一例に過ぎない。図４のシステムは、デモンストレーション目的として単純化されている。他の実施形態は、コンピュータシステムに関連する他の機能ブロックを含んでもよい。
【００４４】
次に、入力装置からデータをセキュアに受信する方法をサポートするコンピュータシステムの他の例が図５に示されている。システム５００は、図３のシステム３００の特徴と同様の多くの特徴を含み、別段の記載のない限り、図３に関する説明が、図５の対応するブロックに適用されてもよい。
【００４５】
Ｂｌｕｅｔｏｏｔｈ（登録商標）（ＢＴ）送信機５０３は、例えば、ワイヤレスキーボード及び／又はマウス等の無線入力装置の一部として含まれてもよい。いくつかの実施形態では、ＢＴ送信機は、図２の入力装置２０３に関して説明した他のタイプの入力装置に備えられてもよい。ＢＴ送信機５０３は、Ｂｌｕｅｔｏｏｔｈ（登録商標）無線規格又はＢｌｕｅｔｏｏｔｈ（登録商標）低エネルギー（ＢＴＬＥ）規格対応であってもよい。他の実施形態では、ＢＴ送信機は、電気電子技術者協会（ＩＥＥＥ）８０２．１１（Ｗｉ‐Ｆｉ（登録商標））規格の１つ以上に対応してもよいし、独自の無線プロトコルをサポートしてもよい。
【００４６】
ＢＴ送信機５０３は、データを、ＢＴ受信機５０４を介してホストプロセッサ５０１に送信してもよい。ＢＴ受信機５０４は、ＢＴ送信機５０３と同じ通信規格をサポートしてもよいし、ＢＴ送信機５０３が使用するプロトコルに加えて、追加の無線プロトコルをサポートしてもよい。ＢＴ受信機５０４は、図３のＵＳＢ３０４と同様のタスクを行ってもよい。ハードウェア又はプロトコルの相違に関わらず、入力ハンドラ５０５は、入力ハンドラ３０５に関して上述したように動作してもよく、ＢＴ受信機５０４は、ＢＴ送信機５０３に接続された入力装置からのデータをセキュアにすることに関して同等の機能を提供してもよい。よって、ＢＴ受信機５０４は、ホストプロセッサ５０１に信号をアサートしてもよく、信号は、割り込み信号に結合されて、ＢＴ受信機５０４から入力ハンドラ５０５にデータが転送されることを示してもよい。データが入力ハンドラ５０５によって受信されると、そのデータをセキュアにして検証する手順は、図３で説明した手順と同様であってもよい。 
【００４７】
図５に示すシステムは、無線入力装置からのデータをセキュアに受信する方法をサポートするコンピュータシステムの単なる一例である。図５のシステムは、デモンストレーションの目的で単純化されている。他の実施形態は、コンピュータシステムに関連する他の機能ブロックを含んでもよい。
【００４８】
図６を参照すると、入力装置からコンピュータシステムのアプリケーションにデータを送信する方法のフローチャートが示されている。図６の方法は、例えば、図３のシステム３００等のシステムに適用されてもよい。図３及び図６をまとめて参照する。方法は、ブロック６０１から開始することができる。
【００４９】
図３の入力装置３０３等の入力装置は、セキュア入力モードを開始することができる（ブロック６０２）。様々な他の実施形態では、信頼できるアプリケーション３０８等のアプリケーションがセキュア入力モードを開始してもよいし、例えばウェブブラウザ等のようにＯＳ３０６内で実行しているアプリケーションが、リモートサーバからロードしたウェブページからセキュア入力モードに移行する要求を受信してもよい。セキュア入力モードの一部として、セキュリティモジュール３０９等のセキュリティプロセッサ、又は、入力ハンドラ３０５等の入力ハンドラが、ＵＳＢ３０４等のＵＳＢ回路からの信号にセキュアモード割り込みを結合するようにホストプロセッサ３０１に命令してもよい。他の実施形態では、ホストプロセッサ３０１以外の論理回路が、ＵＳＢ３０４からの信号をセキュアモード割り込みに結合してもよい。ＵＳＢ３０４からの信号は、入力装置３０３からのデータをＵＳＢ３０４が受信する毎にアサートされてもよい。
【００５０】
セキュア入力モードは、システム３００が起動されるときに開始されてもよいし、システム３００のユーザによって有効、無効にされてもよい。セキュア入力モードがシステム起動時に有効にされる場合には、入力装置３０３からの全ての入力は、セキュアな方法を用いて送信されてもよい。これは、データをセキュアにして、信頼できる宛先に到達するのを確実にするために余分な処理時間が費やされることから、システム性能を低下させる場合がある。ユーザがセキュア入力モードを有効、無効にするオプションを含むことによって、入力されたデータが機密でないとみなされる場合には、システム性能を向上させることができる。ユーザ名やパスワードをウェブサイトに入力する場合等のように機密データを入力する必要がある場合、ユーザは、セキュア入力モードを開始してもよい。セキュア入力モードは、入力装置から送信された所定の値を使用して、開始されてもよい。例えば、キーボードを用いて、ユーザは、例えば、＜Ｃｔｒｌ＞＋＜Ａｌｔ＞＋＜Ｓ＞等のような特定のキーストロークをタイプしてもよい。あるいは、マウスを用いると、ユーザが、マウスを用いた素早い左右の動き等のように特定のジェスチャを行いながら、マウス上のあるボタンをクリックすることが必要になる。マイクロフォンを入力として使用すると、ユーザは、「Ｃｏｍｍａｎｄ、ｅｎｔｅｒ、ｓａｆｅ、ｍｏｄｅ」等のような特定の単語列、又は、単語若しくは数の他の組み合わせを発話する必要がある。使用する値は、セキュア入力モードに関連するソフトウェアによって予め決定されてもよいし、ユーザによってプログラム可能であってもよい。
【００５１】
セキュア入力モードが開始されると、セッションキーが、入力ハンドラ３０５及びセキュリティモジュール３０９によって使用されるために生成されてもよい（ブロック６０３）。他の実施形態では、セッションキーは、システム起動時に生成されてもよく、システムの電源が切られる、ユーザがログオフする、システムが一定時間アイドリング状態になる、又は、他の適切なイベントが発生するまで、全てのセキュア入力モードセッションに対して再使用されてもよい。セッションキーは、入力ハンドラ３０５及びセキュリティモジュール３０９のためのコード命令がインストールされたときに決定された値に基づいてもよい。他の実施形態では、ディフィー・ヘルマン鍵交換等の鍵交換プロトコルを用いて、セッションキーが生成されてもよい。鍵交換プロトコルにおいて、セッションキーは、様々な方法によって、入力ハンドラ３０５とセキュリティモジュール３０９との間で共有されてもよい。入力ハンドラ３０５及びセキュリティモジュール３０９の各々は、入力ハンドラ３０５がインストールされたときに生成された同じ開始値（一般的に「シード値」とも呼ばれる」）を有してもよい。他の実施形態では、セキュリティモジュール３０９又は入力ハンドラ３０５は、シード値を生成し、当該シード値を他のブロックに送信してもよい。入力ハンドラ３０５及びセキュリティモジュール３０９が同じシード値を共有すると、各ブロックは、秘密鍵を用いてシード値を暗号化してもよい。入力ハンドラ３０５及びセキュリティモジュール３０９の各々は、他のブロックに知られていない独自の秘密鍵を有してもよい。次に、入力ハンドラ３０５及びセキュリティモジュール３０９は、暗号化された各シード値を他のブロックに送信してもよく、各ブロックは、他のブロックによって暗号化されたシード値を受信して暗号化してもよい。結果として、入力ハンドラ３０５及びセキュリティモジュール３０９は、両方のブロックによって暗号化され、セッションキーとして使用し得る共通の暗号化シード値を共有してもよい。セッションキーを共有する様々な他の方法が知られており、開示の実施形態の代わりに用いられてもよい。
【００５２】
ＵＳＢ３０４は、入力装置３０３からデータを受信してもよい（ブロック６０４）。ＵＳＢ３０４は、データを受信すると、ホストプロセッサ３０１に信号をアサートして、データを入力ハンドラ３０５に送信する準備ができていることを示してもよい。アサートされた信号は、セキュアモードオプションを有効にして、ホストプロセッサ３０１にて割り込みに結合されてもよい。
【００５３】
割り込みは、ＵＳＢ３０４による信号のアサートに応じて、ホストプロセッサ３０１で生成されてもよい（ブロック６０５）。割り込みは、通常動作モードからセキュア動作モードに切り替わるようにホストプロセッサ３０１をトリガしてもよい。セキュア動作モードは、例えば、ｘ８６アーキテクチャを用いたプロセッサのＳＭＭモード、ＡＲＭアーキテクチャを用いたプロセッサのＴｒｕｓｔＺｏｎｅセキュアモード、又は、ホストプロセッサ３０１で利用可能な任意の他の適切な特権モードである。ホストプロセッサをセキュア動作モードに切り替えることによって、ＯＳ３０６等のオペレーティングシステムに関連する命令が、ＯＳ３０６内で開始された任意のアプリケーションに関する命令と共に実行されるのを防止してもよい。入力ハンドラ３０５と、例えばセキュリティモジュールドライバ３１０等のセキュリティモジュール３０９のソフトウェアドライバとは、セキュア動作モードでの命令実行を許可されてもよい。セキュア動作モードに移行すると、データは、ＵＳＢ３０４から入力ハンドラ３０５に転送されてもよい。
【００５４】
入力ハンドラ３０５は、ブロック６０３にて生成されたセッションキーに応じて、転送されたデータのハッシュを生成し、生成したハッシュ値とデータとをセキュリティモジュール３０９に送信してもよい（ブロック６０６）。ハッシュアルゴリズムは、例えばＭＤ５、ＳＨＡ−２又はＳＨＡ−３等の任意の適切なものを使用してもよい。セッションキーは、ハッシュアルゴリズムのキーとして使用されてもよい。データは、暗号化され又は暗号化されずに、セキュリティモジュール３０９に送信されてもよい。データが暗号化されて送信される場合には、データの復号化に成功すると当該データが入力装置３０３からのものであるという十分な証拠になるので、データハッシュをオプションにしてもよい。セッションキーは、データをハッシュするだけでなく、データの暗号化及び復号化に使用されてもよい。
【００５５】
次に、データの有効性に応じて判別が行われてもよい（ブロック６０７）。セキュリティモジュール３０９は、ハッシュ値及びデータを受信し、受信したデータと、ブロック６０３にて生成されたセッションキーとを用いて、第２ハッシュ値を生成してもよい。次いで、セキュリティモジュール３０９は、第２ハッシュ値と、入力ハンドラ３０５から受信したハッシュ値と、を比較してもよい。２つの値が同じ場合には、データは、入力装置３０３からのものであると検証されたとみなされることによって、有効であると判別される。２つのハッシュ値が異なる場合には、データは、入力装置３０３からのものではなく、信頼できないとみなされてもよい。いくつかの実施形態では、データは、ハッシュ値と共に暗号化データとして受信されてもよい。このような実施形態では、セキュリティモジュール３０９は、第２ハッシュ値を生成する前に、セッションキーを用いてデータを復号化してもよい。他の実施形態では、対応するハッシュ値なしに、暗号化データのみを受信してもよい。かかる場合、復号化されたデータは、特定の値の範囲内に含まれることが予測され得る。復号化されたデータが予測された値の範囲外である場合には、当該データは、信頼できないとみなされてもよい。さらなる実施形態では、復号化されたデータは、データの復号化に成功したか否かの判別に使用し得るパリティビット又は１つ以上のエラー訂正コード（ＥＣＣ）ビットを含んでもよく、復号化に成功した場合には、データが有効であるとみなされてもよい。データが有効であると判別された場合、方法は、ブロック６０９に進む。有効であると判別されない場合、方法は、ブロック６０８に進み、データがタグ付けされてもよい。
【００５６】
ハッシュ値が一致しない、又は、データの復号化に失敗した場合、データは、信頼できないものとしてとタグ付けされてもよい（ブロック６０８)。いくつかの実施形態では、信頼できないデータは、信頼できないデータのソースの決定を試みるために、アンチウイルスアプリケーションによって記憶、使用されてもよい。これは、例えば、キーロガー３０７等のマルウェアがシステム３００にインストールされているか否かを決定するのを助けることができる。信頼できないデータは、「検疫」場所に記憶されてもよい。「検疫」場所は、信頼できないデータが、気付かずに実行されると悪意の目的を有するコード命令を含む場合に、コードの実行を制限する。信頼できないデータは、記憶用に隔離されたメモリを使用する代わりに、又は、使用することに加えて、記憶前に暗号化されてもよい。ホストプロセッサ３０１は、暗号化された命令を実行可能であってはならず、信頼できないデータを暗号化することによって、意図せずに実行されないようにする。セキュリティモジュール３０９は、信頼できないデータを受信したことを、ＯＳ３０６を介して、アンチウイルスプログラム又はユーザに送信してもよい。
【００５７】
他の実施形態では、セキュリティモジュール３０９は、信頼できないデータを記憶しなくてもよい。代わりに、セキュリティモジュール３０９は、信頼できないデータを削除し、悪意の可能性のあるコード命令の実行を妨げる助けをしてもよい。データが記憶又は削除されると、セキュリティモジュール３０９は、セキュア動作モードを出るようにホストプロセッサ３０１に通知してもよい。様々な実施形態では、ホストプロセッサ３０１への信号は、セキュリティモジュールドライバ３１０又は入力ハンドラ３０５からであってもよい。方法は、ブロック６１０に進み、セキュア入力モードを終了してもよい。
【００５８】
ブロック６０７でデータが有効とみなされた場合、有効なデータは、信頼できるアプリケーション３０８等の信頼できるアプリケーションに送信されてもよい（ブロック６０９）。有効なデータを信頼できるアプリケーション３０８に転送するために、データは、信頼できるアプリケーションのみがアクセスするセキュア入力バッファに記憶されてもよい。他の実施形態では、有効なデータは、（セッションキーとは異なる）所定のキーワードを用いて暗号化されてもよく、任意のアプリケーションがアクセスし得る標準の入力バッファに記憶されてもよい。かかる場合、信頼できるアプリケーションのみが、データを復号化するための所定のキーワードを有してもよい。信頼できるアプリケーションとは、セキュリティモジュール３０９及び／又はセキュリティモジュールドライバ３１０を用いて登録されたアプリケーションを指してもよい。登録プロセスは、セキュア入力バッファの位置をアプリケーションと共有すること、又は、所定のキーワードをアプリケーションと共有すること、を含んでもよい。セキュリティモジュール３０９は、信頼できるアプリケーション３０８のためのデータを記憶すると、ホストプロセッサ３０１にセキュア動作モードを出るように通知してもよい。様々な実施形態では、ホストプロセッサ３０１への信号は、セキュリティモジュールドライバ３１０又は入力ハンドラ３０５からのものであってもよい。
【００５９】
データが、信頼できないとしてタグ付けされるか、信頼できるアプリケーションに送信された後、セキュア入力モードを終了してもよい（ブロック６１０）。セキュア入力モードは、ブロック６０５にて生成された割り込みの処理が完了すると、終了してもよい。割り込み処理の完了は、割り込みからの応答による指定、又は、ホストプロセッサ３０１に割り込み処理を完了させる同様の命令による指定等によるものであってもよい。ホストプロセッサ３０１は、この時点で通常動作モードに戻ってもよい。いくつかの実施形態では、ＵＳＢ３０４からの信号が、セキュアモード割り込みから分離されてもよい。セキュア入力モードに移行するのに使用したものと同じ値をユーザが入力することによって、又は、信頼できるアプリケーション３０８からの要求によって、セキュア入力モードを終了するような他の実施形態も考えられる。かかる実施形態では、入力ハンドラ３０５又はセキュリティモジュール３０９は、セキュア動作モードを終了してもよく、及び／又は、ＵＳＢ３０４に結合された割り込みのセキュアモードプションを無効にするようにホストプロセッサ３０１に命令してもよい。セキュア入力が終了し、ホストプロセッサ３０１が通常動作モードに切り替わると、方法は、ブロック６１１で終了してもよい。
【００６０】
セキュリティモジュール３０９は、本明細書の実施形態では、ハードウェアモジュールとして提示したことに留意されたい。しかしながら、いくつかの実施形態では、セキュリティモジュール３０９は、ソフトウェアモジュールとして実装されてもよい。このような実施形態では、セキュリティモジュール３０９は、ＳＭＭモード又はＴｒｕｓｔＺｏｎｅモード等のセキュアモードのみで動作してもよい。他の実施形態では、セキュリティモジュール３０９は、セキュアモードのサブモードとなり得るモードで動作してもよい。サブモードは、基本的なセキュアモードよりもアクセス制限が厳しくてもよい。例えば、ＳＭＭやＴｒｕｓｔＺｏｎｅ等のモードが基本的なモードに対応してもよく、セキュリティモジュール３０９の動作を有効にするために、これらのモードを通して、より高いレベルのセキュアモードに移行してもよい。セキュリティモジュール３０９がソフトウェアモジュールとして実装されている場合、いくつかの実施形態では、セキュリティモジュールドライバ３１０は、別のエンティティではなく、同じソフトウェアの一部であってもよい。
【００６１】
入力ハンドラ３０５、ＯＳ３０６、キーロガー３０７、信頼できるアプリケーション３０８及びセキュリティモジュールドライバ３１０等のソフトウェアプログラム、アプリケーション、ドライバは、ホストプロセッサ３０１によって実行される一連のコード命令から構成されてもよいことに再度留意されたい。したがって、コード命令から構成された任意のブロックが、本明細書において、タスク又は動作を行っていると説明される場合に、ホストプロセッサ３０１は、ブロックに対応するコード命令の実行に応じて、このタスク又は動作を行っているものと理解される。
【００６２】
図６のフローチャートに記載した方法は、単なる一例であることに留意されたい。他の実施形態では、異なる数の動作を使用してもよいし、１つ以上の動作を並行して又は別の順序で行ってもよい。
【００６３】
図７を参照すると、入力装置からデータをセキュアに受信する方法をサポートするコンピュータシステムの他の例が示されている。システム７００は、図３のシステム３００の特徴に類似した多くの特徴を含む。よって、図３に関する説明は、別段の記載のない限り、図７の対応するブロックに適用されてもよい。
【００６４】
図７の実施形態では、図６の方法に従ってセキュア割り込みを生成し、ホストコンピュータ７２０がセキュア動作モードに切り替わった後に、入力ハンドラ７０５は、図３に関して説明したのと同様に、ＵＳＢ７０４からデータを受信してもよく、当該データをセキュリティモジュール７０９に送信する前に入力バッファに記憶してもよい。入力ハンドラ７０５は、受信したデータのハッシュを生成し、データのコピーをセキュリティモジュール７０９に送信してもよい。セキュリティモジュール７０９は、図６の方法で説明したように、そのデータが入力装置７０３からであることを検証してもよく、これにより、データが有効であることを判別する。セキュリティモジュール７０９は、信頼できるアプリケーション７０８等のように登録されたアプリケーションのみがアクセスし得るセキュア入力バッファを用いて、有効なデータを、信頼できるアプリケーション７０８に送信してもよい。
【００６５】
また、セキュリティモジュール７０９は、入力ハンドラ７０５にデータを返信して、入力バッファの有効なデータを置き換えてもよい。返信されるデータは、有効なデータと同じサイズであるが、所定の値の繰り返しによって構成された特定のＡＳＣＩＩ文字に対応してもよい。例えば、有効なデータが、入力されたパスワードを表す「ｐａｓｓｗｏｒｄｌ２３」等のＡＳＣＩＩ文字列から構成されている場合には、セキュリティモジュール７０９は、例えば、パスワードの各文字を「＃」文字で置き換えた「＃＃＃＃＃＃＃＃＃＃＃」等のＡＳＣＩＩ文字列を返信してもよい。有効なデータを所定の値に置き換えるプロセスは、データを「編集する」と呼んでもよい。有効なデータがセキュア入力バッファに記憶され、編集済みのデータが入力バッファに記憶されると、セキュリティモジュール７０９は、通常動作モードに切り替えるようにホストプロセッサ７０１に通知してもよい。キーロガー７０７が入力バッファを読み出そうとすると、編集済みのデータ、例えば「＃＃＃＃＃＃＃＃＃＃＃」のみが読み出されてもよい。 
【００６６】
入力ハンドラ７０５、ＯＳ７０６、キーロガー７０７、信頼できるアプリケーション７０８及びセキュリティモジュールドライバ７１０は、ホストプロセッサ７０１で実行される一連のコード命令から構成されてもよいことに留意されたい。本明細書でタスク又は動作を行うとして説明されるコード命令から構成された任意のブロックは、ホストプロセッサ７０１が、ブロックに対応するコード命令の実行に応じて、このタスク又は動作を行うものとして解釈されるべきである。 
【００６７】
図７のシステムは、入力装置からデータをセキュアに受信する方法をサポートするコンピュータシステムの単なる一例である。図７のシステムは、デモンストレーションの目的で単純化されている。他の実施形態では、コンピュータシステムに関連する他の機能ブロックを含んでよい。
【００６８】
図８を参照すると、コンピュータシステムのデータを編集する方法の実施形態を示すフローチャートが示されている。図８の方法は、例えば、図７のシステム７００等のシステムに適用されてもよい。図７及び図８をまとめて参照すると、方法は、ブロック８０１で開始してもよい。
【００６９】
セキュリティモジュール７０９等のセキュリティモジュールは、受信したデータが有効であることを確認してもよい（ブロック８０２）。ホストプロセッサ７０１等のプロセッサがセキュア動作モードにある間、入力ハンドラ７０５等の入力ハンドラは、データを受信して、当該データを入力バッファに記憶してもよい。セキュリティモジュール７０９は、入力ハンドラ７０５からデータを受信してもよい。セキュリティモジュール７０９は、受信したハッシュ値を、セキュリティモジュール７０９が生成したハッシュ値と比較する等のように前述した何れか方法を用いて、データが有効であることを確認してもよい。
【００７０】
セキュリティモジュール７０９は、セキュリティモジュールドライバ７１０等のセキュリティモジュールドライバに有効なデータを送信してもよい（ブロック８０３）。セキュリティモジュール７０９は、有効なデータを、セキュリティモジュールドライバ７１０によって読み出されるセキュア入力バッファに記憶してもよい。いくつかの実施形態では、記憶された有効なデータは、セキュリティモジュール７０９及びセキュリティモジュールドライバ７１０に知られているキーワードを用いて暗号化されてもよい。他の実施形態では、有効なデータは、暗号化されなくてもよい。
【００７１】
セキュリティモジュール７０９は、有効なデータと同様のサイズの編集されたデータを生成してもよい（ブロック８０４）。編集されたデータは、有効なデータに含まれるものと等しい数のデータ値を含んでもよい。しかしながら、有効なデータ値は、所定の値に置き換えられてもよい。例えば、有効なデータは、「ｍｙｐａｓｓｗｏｒｄ」等のパスワードに対応してよく、編集されたデータは、「＊＊＊＊＊＊＊＊＊＊」、又は、任意の他の適切な文字の繰り返しであってもよい。他の実施形態では、入力ハンドラ７０５は、セキュリティモジュール７０９から編集済みのデータを受信するのではなく、有効なデータを直接編集してもよい。編集済みのデータは、入力バッファの有効なデータを置き換えてよい。有効なデータ及び編集済みのデータの両方が記憶された後、ホストプロセッサ７０１は、通常動作モードに切り替わってもよい。
【００７２】
セキュリティモジュールドライバ７１０は、信頼できるアプリケーション７０８等の信頼できるアプリケーションに有効なデータを送信してもよい（ブロック８０５）。ホストプロセッサ７０１が通常動作モードに戻ると、セキュリティモジュールドライバ７１０は、データの読み出し準備ができたことを、信頼できるアプリケーション７０８に送信してよい。信頼できるアプリケーションは、セキュア入力バッファから有効なデータを読み出してもよく、データが暗号化されている場合には当該データを復号化してもよい。他の方法では、信頼できるアプリケーション７０８は、必要に応じて、有効なデータを使用してもよい。方法は、ブロック８０７で終了してもよい。
【００７３】
入力ハンドラ７０５は、データが受信されて、読み出しの準備ができていることを、ＯＳ７０６等のオペレーティングシステムに送信してもよい（ブロック８０６）。ＯＳ７０６は、入力ハンドラ７０５からの入力を待っているアプリケーションに、入力バッファからのデータの読み出し準備ができたことを通知してもよい。データを入力ハンドラ７０５に送信するニーズを引き起こしたのは、信頼できるアプリケーション７０８であってもよいが、他のアプリケーションは、データが入力バッファに存在するときを知るために、入力ハンドラ７０５及び／又はＯＳ７０６をモニタし得る。例えば、キーロガー７０７等のマルウェアは、データが入力バッファに存在するという信号を待っている場合や、定期的にバッファを読み出して、バッファのコンテンツを記録する場合がある。編集済みのデータのみがバッファに存在し得るので、意味のないデータのみが収集されてもよい。方法は、ブロック８０７で終了してもよい。
【００７４】
図８に示すフローチャートに記載されたデータ編集方法は、単なる一例であって、ある動作が連続して行われ、他の動作が並行して行われ得ることに留意されたい。他の実施形態では、異なる順序の動作及び異なる数の動作が可能であり、考えられる。
【００７５】
図９を参照すると、入力装置から電子署名を受信する方法をサポートするコンピュータシステムの他の例が示されている。システム９００は、図３のシステム３００の特徴に類似した多くの特徴を含む。よって、図３に関する説明は、別段の記載のない限り、図９の対応するブロックに適用されてもよい。
【００７６】
入力装置を通してデータをセキュアに入力するコンピュータシステム及び方法を、ここまで開示してきた。同様のコンピュータシステムは、電子署名の生成に利用されてもよい。電子署名とは、動作を認証するために、システム９００等のコンピュータシステムのユーザが入力装置９０３を介して値を入力するプロセスを指してもよい。この場合、入力装置９０３に入力されようとしているデータは、重要でなくてもよい。むしろ、ユーザがデータ入力に関与しているのを確実にすることが、より重要であってもよい。例えば、ユーザは、ウェブサイトからダウンロードするファイルを選択してもよい。ウェブサイトのプロバイダは、本当のユーザがファイルを要求していることと、要求がユーザに気付かれずに実行しているマルウェアからのものでないことと、を確認することができる。ウェブサイトは、ファイルをダウンロードする前に、電子署名の入力を要求してもよい。
【００７７】
信頼できるアプリケーション９０８（例えば、ホストコンピュータ９２０上で実行しているウェブブラウザ）は、ユーザからの電子署名を要求するウェブサイトによって要求されてもよい。信頼できるアプリケーションは、ディスプレイ９５０を介して、電子署名が要求されていることをユーザに通知してもよい。入力装置９０３を用いて電子署名を入力してもよい。署名のデータは、ディスプレイ９５０に示されたランダムなワードであってもよいし、ユーザは、当該ワードを繰り返すことを要求される。以下に記載のプロセスを用いて、セキュリティモジュール９０９は、データを認証し、認証したデータを、信頼できるアプリケーション９０８に提供してもよい。次に、信頼できるアプリケーション９０８は、ウェブサイトに応じて、有効な電子署名が入力されたことを確認してもよい。次に、ウェブサイトは、ファイルのダウンロードを開始してもよい。
【００７８】
入力ハンドラ９０５、ＯＳ９０６、キーロガー９０７、信頼できるアプリケーション９０８及びセキュリティモジュールドライバ９１０は、ホストプロセッサ９０１によって実行される一連のコード命令から構成されてもよいことに留意されたい。本明細書でタスク又は動作を行うものとして説明されたコード命令で構成された任意のブロックは、ホストプロセッサ９０１が、ブロックに対応するコード命令の実行に応じて、タスク又は動作を行うものと解釈されるべきである。
【００７９】
図９のシステムは、入力装置から電子署名を受信する方法をサポートするコンピュータシステムの単なる一例である。他の実施形態では、１つ以上の追加の機能ブロックがコンピュータシステムに含まれてもよい。
【００８０】
図１０を参照すると、コンピュータシステムの電子署名を生成する方法のフローチャートが示されている。方法は、図９のシステム９００に適用されてもよい。図９及び図１０をまとめて参照する。方法は、ブロック１００１で開始されてもよい。
【００８１】
信頼できるアプリケーション９０８等の信頼できるアプリケーションは、システム９００のユーザからの電子署名を要求してもよい（ブロック１００２）。他の実施形態では、ウェブブラウザ等の他のアプリケーションは、リモートサーバからロードしたウェブページを介して、リモートサーバからの電子署名の要求を受信してもよい。信頼できるアプリケーション９０８は、ディスプレイ９５０を介して、電子署名が必要なことをユーザに通知してもよい。通知は、ユーザが繰り返す必要のある値を含んでもよいし、例えば、パスワード等のようにユーザが既知の特定の値を要求してもよい。
【００８２】
要求された値を入力する前に、ユーザは、入力装置９０３で所定の値を入力することによって、セキュア入力モードをアクティブにしてもよい（ブロック１００３）。他の実施形態では、信頼できるアプリケーション９０８は、セキュア入力モードに移行するように、ホストコンピュータ９２０に要求を送信してもよい。次に、ユーザは、要求された値を入力装置９０３上で入力してもよく、値は、ＵＳＢ９０４を介してホストプロセッサ９０１に送信されてもよい。ＵＳＢ９０４は、値をホストプロセッサ９０１に送信する準備ができたことをホストプロセッサ９０１に送信してよい。ＵＳＢ９０４からの信号に応じて、ホストプロセッサ９０１は、セキュア入力モードが有効にされたことによって、セキュア動作モードに移行してもよい。セキュア動作モードは、ＯＳ９０６に関連する何れの命令、又は、例えば信頼できるアプリケーション９０８及びキーロガー９０７等のようにＯＳ９０６から開始されるアプリケーションをホストプロセッサ９０１が実行することを制限してもよい。入力ハンドラ９０５及びセキュリティモジュールドライバ９１０等の装置ドライバに関連する命令は、なお実行されてもよい。よって、入力ハンドラ９０５は、要求された値をＵＳＢ９０４から受信し、当該値を入力バッファに記憶し、次に、要求されたデータとセッションキーワードとに基づいてハッシュ値を生成してもよい。要求されたデータ及びハッシュ値は、セキュリティモジュール９０９に送信されてもよい。いくつかの実施形態では、データは、暗号化されてもよい。
【００８３】
次に、方法は、要求されたデータの有効性に依存してもよい（ブロック１００４）。セキュリティモジュール９０９は、要求されたデータ及びハッシュ値を、入力ハンドラ９０５から受信してもよい。セキュリティモジュール９０９は、入力ハンドラ９０５によって使用された同じセッションキーワードを用いて、第２ハッシュ値を生成してもよい。データが暗号化されている場合には、セキュリティモジュール９０９は、第２ハッシュ値を生成する前に、データを復号化してもよい。２つのハッシュ値が一致する場合には、電子署名が有効とみなされてもよく、方法は、ブロック１００６に移行してもよい。そうでなければ、２つのハッシュ値が一致しない場合には、署名が無効であるとみなされてもよい。
【００８４】
署名が無効である場合、当該署名は、信頼できないとタグ付けされてもよい（ブロック１００５）。署名にタグ付けすることは、入力バッファのデータを他の値に置き換えることを含んでもよい。置き換えられる値は、セキュア入力バッファに記憶されてもよい。入力バッファ及びセキュア入力バッファの値は、同じであってもよいし、異なっていてもよい。新たな値が記憶されると、ホストプロセッサ９０１は、セキュア動作モードを終了するように通知されてもよい。セキュア入力モードを終了してもよい。セキュリティモジュールドライバ９１０は、セキュア入力バッファからデータを読み出す準備ができていることを、信頼できるアプリケーション９０８に送信してもよい。信頼できるアプリケーション９０８は、セキュア入力バッファからの値を読み出してもよく、予測した値と比較して不一致を検出してもよい。他の実施形態では、信頼できるアプリケーション９０８は、データを他のアプリケーションに転送してもよく、他のアプリケーションは、不一致を検出してもよい。方法は、ブロック１００７で終了してもよい。
【００８５】
要求されたデータは、ブロック１００４でデータが有効であるとみなされた場合（ブロック１００６）、信頼できるアプリケーション９０８に送信されてもよい。要求されたデータは、セキュア入力バッファに記憶されてもよい。様々な実施形態では、セキュア入力バッファのデータは、暗号化されてもよく、入力バッファのデータは、編集されてもよいし編集されなくてもよい。要求されたデータが記憶されると、ホストプロセッサ９０１は、セキュア動作モードを終了するように通知されてもよい。セキュア入力モードを終了してもよい。セキュリティモジュールドライバ９１０は、セキュア入力バッファからデータを読み出す準備ができていることを、信頼できるアプリケーション９０８に送信してもよい。信頼できるアプリケーション９０８は、セキュア入力バッファから値を読み出し、当該値を予測した値と比較して、電子署名の成功を示す一致を検出してもよい。他の実施形態では、信頼できるアプリケーション９０８は、データを他のアプリケーションに転送し、他のアプリケーションが、電子署名の成功を検出してもよい。方法は、ブロック１００７で終了してもよい。
【００８６】
図１０に示す方法は、電子署名を認証するプロセスを示す単なる一例である。他の実施形態では、異なる動作及び異なる動作順序が採用されてもよい。
【００８７】
特定の実施形態を説明してきたが、これらの実施形態は、特定の特徴に関して単一の実施形態が説明されている場合であっても、本開示の範囲を限定することを意図していない。本開示で提供される特徴の例は、別段の記載のない限り、限定的ではなく例示することを意図している。上述した説明は、本開示の利益を有する当業者には明らかなように、代替、修正及び均等物を包含することを意図している。
【００８８】
本開示の範囲は、本明細書で扱う問題の何れか又は全てを軽減するか否かにかかわらず、本明細書に（明示的又は暗黙的に）開示された任意の特徴若しくはその組み合わせ、又はそれらの任意の一般化を含む。したがって、本願の審査（又は、本願の優先権を主張する出願）中に、かかる特徴についての新たな請求項が作成されてもよい。特に、添付の請求項を参照して、従属請求項の特徴は、独立請求項の特徴と組み合わされてもよく、各独立請求項の特徴は、添付の請求項で列挙された特定の組み合わせだけでなく、任意に適切なように組み合わされてもよい。
【図１】
0006611797.tif 000002
【図２】
0006611797.tif 000003
【図３】
0006611797.tif 000004
【図４】
0006611797.tif 000005
【図５】
0006611797.tif 000006
【図６】
0006611797.tif 000007
【図７】
0006611797.tif 000008
【図８】
0006611797.tif 000009
【図９】
0006611797.tif 000010
【図１０】
0006611797.tif 000011