ソフトウェアキーボード
【課題】 画面キャプチャによるソフトウェアキーボードの入力の盗聴を防止する。
【解決手段】 個々のキーに割当てた表記文字を非表示にしたキーボード配列を記憶装置から取り出し、画面上に表示するソフトウェアキーボード表示手段と、ユーザによる物理キーボードの矢印キーの押下によってソフトウェアキーボードのキー選択を変更し、カーソルを所定時間だけ一時表示することによりキー選択が変更したことをユーザに通知するキー選択変更手段と、ユーザによる物理キーボードの矢印キー以外の押下によってキーの決定を処理し、決定された文字を所定のフォームに入力するキー入力手段とを備えることを特徴とする。
【解決手段】 個々のキーに割当てた表記文字を非表示にしたキーボード配列を記憶装置から取り出し、画面上に表示するソフトウェアキーボード表示手段と、ユーザによる物理キーボードの矢印キーの押下によってソフトウェアキーボードのキー選択を変更し、カーソルを所定時間だけ一時表示することによりキー選択が変更したことをユーザに通知するキー選択変更手段と、ユーザによる物理キーボードの矢印キー以外の押下によってキーの決定を処理し、決定された文字を所定のフォームに入力するキー入力手段とを備えることを特徴とする。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、キーロガーが画面をキャプチャによるソフトウェアキーボードの入力文字の盗聴を防止することができるソフトウェアキーボードに関する。
【背景技術】
【0002】
従来、安全なソフトウェアキーボードを実現する技術として、例えば下記特許文献1及び特許文献2に記載のものが知られている。
下記特許文献1に記載のものは、暗証番号入力画面を表示する際、暗証番号入力画面に表示されたテンキーの位置をランダムに変更することで、第三者による暗証番号の検知を防止する暗証番号の入力装置である。
また、下記特許文献2に記載のものは、パスワードを入力する際、複数の文字キーを含むキーボード画像を表示し、キー入力の毎に入力文字の判定と、次の文字入力を受け付けるためのキーボード画像を新規に表示するパスワード認証装置である。
【0003】
【特許文献1】特願2000−99801号公報
【特許文献2】特願2005−107678号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら、上記特許文献1、特許文献2に記載の技術は、画面をキャプチャするタイプのキーロガーによるソフトウェアキーボードの入力文字の盗聴を防止できない。
本来、キーロガーとは、ユーザのキーボード入力を監視し、パスワード入力文字列を検知するタイプのマルウェア(悪意のあるソフトウェア)である。近年は、キーロガー対策として、パスワードの入力画面中にソフトウェアによる仮想的なキーボードを表示し、マウスなどのポインティングデバイスによる入力を行うソフトウェアキーボードによる対策がなされている。
しかしながら、ソフトウェアキーボードの画面をキャプチャする攻撃方法を利用し、第三者は入力されたパスワードをキャプチャ画像から検知できる。
【0005】
本発明は、画面キャプチャによるソフトウェアキーボードからの入力の盗聴を防止することができるソフトウェアキーボードを提供することを目的とする。
【課題を解決するための手段】
【0006】
上記目的を達成するために、本発明は、個々のキーに割当てた表記文字を非表示にしたキーボード配列を記憶装置から取り出し、画面上に表示するソフトウェアキーボード表示手段と、ユーザによる物理キーボードの矢印キーの押下によってソフトウェアキーボードのキー選択を変更し、カーソルを所定時間だけ一時表示することによりキー選択が変更したことをユーザに通知するキー選択変更手段と、ユーザによる物理キーボードの矢印キー以外の押下によってキーの決定を処理し、決定された文字を所定のフォームに入力するキー入力手段とを備えることを特徴とする。
また、前記ソフトウェアキーボード表示手段は、ソフトウェアキーボードのキーのサイズ及び位置のいずれかまたは両方、あるいはソフトウェアキーボード全体の画面上の表示位置を時間的に変更することを特徴とする。
また、前記キー選択変更手段は、ソフトウェアキーボードのキー移動に必要な物理キーボードの矢印キーのストローク回数をランダムに変更することを特徴とする。
また、前記キー選択変更手段は、マウス入力を禁止することを特徴とする。
また、前記キー入力手段は、物理キーボードの矢印キー以外を押下することによって選択されたキーを入力し、ソフトウェアキーボードの選択キーを自動的に別のキーに移動することを特徴とする。
【発明の効果】
【0007】
本発明によれば、以下のような効果がある。
(1)ソフトウェアキーボードの個々のキーに対する表記文字が非表示になっているため、たとえキーロガーによってキーボード画像をキャプチャされた場合でも、入力文字は検知されない。
(2)ソフトウェアキーボードに表示するキーのサイズや位置、あるいはソフトウェアキーボード全体の表示位置を時間的に変更するため、キーロガーは個々のキーの座標から画面上のキーの相対位置を計算することが困難になり、結果的に、入力文字を特定することができなくなる。
(3)ソフトウェアキーボードへのマウス入力を禁止するため、キャプチャ画像にはマウスカーソルが表示されない。これにより、キーロガーはマウスカーソルを追跡する方法ではキーの相対位置から入力文字を特定することができなくなる。
(4)ソフトウェアキーボードのキー移動は、物理キーボードの矢印キーによって行うため、従来のキーロガーの手法である、「物理キーボードに入力されるキーコードを盗聴する」方法は利用できない。
(5)ソフトウェアキーボードのキー移動のための物理キーボードストローク回数をランダムに変更する。すなわち、例えば、t1時刻では物理キーボードの1回の押圧操作によってソフトウェアキーボードのキーを移動させるが、t2時刻では物理キーボードの3回の押圧操作によってソフトウェアキーボードのキーを移動させるようにするため、たとえキーロガーが矢印キーのストローク回数を計算してソフトウェアキーボード上のキーの相対位置を検知しようと試みた場合でも、実際の選択キーと一致しなくなり、結果的に、入力文字を特定することができなくなる。
(6)キー移動が正常終了したことを通知する際、カーソルを所定時間だけ一時的に一瞬表示するため、キー入力時はカーソルが消滅する。これにより、たとえキーロガーがキーボード画像をキャプチャした場合でも、カーソルがどのキーにあたっているか検知できなくなる。
(7)ソフトウェアキーボードのキー入力は物理キーボードの矢印キー以外の任意キーによって行うため、従来のキーロガーの手法である、「物理キーボードに入力されるキーコードを盗聴する」、方法ではキー入力を検知できない。
(8)キー入力時に、ソフトウェアキーボードの選択キーを自動的に他のキーに移動することで、キー移動とキー入力の遅延時間の差をなくす。これにより、たとえキーロガーが両者の遅延時間を比較した場合でも、有意な差が現れず、入力したキーを検知できなくなる。
【発明を実施するための最良の形態】
【0008】
以下、本発明を実施する場合の一形態を、図面を参照して具体的に説明する。
図1は、本発明に係るソフトウェアキーボードの一実施の形態を示すシステム構成図である。
端末TMには、入出力装置1、制御プログラム2、記憶装置3を備える。
入出力装置1は、ディスプレイ装置11、キーボード12、マウス13を備える。
ディスプレイ装置11は、本発明に係わる安全なソフトウェアキーボードや入力フォームを含む、端末TM上のあらゆる表示画面の出力デバイスである。
キーボード12は、任意の入力フォームに文字コードを入力するための入力デバイス、マウス13は、ディスプレイ装置11上の任意の位置をポインティングするための入力デバイスである。
【0009】
制御プログラム2は、本発明に係わる安全なソフトウェアキーボードの構成プログラムとして、ソフトウェアキーボード表示部21、入力フォーム表示部22、デバイス制御部23、入力判定部24を備えている。
ソフトウェアキーボード表示部21は、キーボード12をソフトウェアによって仮想的に実現するプログラムであり、図3に示す安全なソフトウェアキーボード301の画面表示を作成し、キー選択時にカーソルを表示する機能を備える。
【0010】
入力フォーム表示部22は、安全なソフトウェアキーボード301の入力キーに対応する文字コードを入力フォーム上に出力する機能を備える。
デバイス制御部23は、安全なソフトウェアキーボード301へのマウス13の入力を禁止し、キーボード12の入力だけ転送することを保証する機能を備える。
入力判定部24は、キーボード12の入力キーをソフトウェアキーボード表示部21に送信するか判定する機能、キーボード12の入力キーを文字コードに変換し、入力文字記憶部31に保存する機能、入力文字記憶部31に保存コードの入力フォーム表示部22への転送をスケジューリングする機能を備える。
記憶装置3は、入力文字記憶部31を備える。この入力文字記憶部31は、入力フォームのパスワード項目に入力するパスワード文字列を一時的に保存する記憶領域である。安全性を考慮して、入力文字記憶部31のデータを暗号化して保存することも想定する範囲内である。
【0011】
図2は、本発明に係わる通常のソフトウェアキーボード201の画面表示例を示す。通常時においては、ソフトウェアキーボード201の画面表示には複数の文字コードの仮想的なキーが割り当てられている。ユーザはソフトウェアキーボード201上の仮想的なキー表示にマウスカーソル202を移動し、マウスをクリックする方法でキー入力を行う。
【0012】
図3は、本発明に係わる安全なソフトウェアキーボード301の画面表示例を示す。安全なソフトウェアキーボード301の画面表示には、仮想的なキー表示上に文字コード(表記文字)が表示されていない点である。これにより、例えば、キーロガーが安全なソフトウェアキーボード301上の仮想的なキー表示の画像をキャプチャしたとしても、文字コードは表示されていないので、どのキーが選択されたかを監視するのが無意味なものとなる。
【0013】
図4は、本発明に係わる入力フォームの画面表示例を示す。
入力フォーム401は、一般的に利用される認証情報の入力フォームと同様のものを想定している。ユーザIDとパスワードを入力する項目、認証情報を認証プロバイダに送信するか、キャンセルするかを決定するためのボタンを備える。
ユーザIDは複数の半角英数字を組合せた文字列、パスワードは”*”などで伏せられた文字列を表示するのが一般的である。
【0014】
図5は、本発明に係わる安全なソフトウェアキーボード501のキー選択時の画面表示例を示す。
安全なソフトウェアキーボード501の画面表示上の仮想的なキーを選択するため、ユーザはキーボードの矢印キーを利用する。キーロガ−はソフトウェアキーボードの画像をキャプチャする方法で選択キーを検知できる。例えば、マウスカーソルが仮想的なキー表示の画像に割り当たっている場合、選択中の仮想的なキーを反転表示する場合である。本発明では、カーソル502を所定時間だけ一時的に(一瞬だけ)表示する機能を備える。次回のキー移動やキー入力が発生するまでの間にカーソル502は消滅する。ただし、一瞬はカーソルが表示されるので、ユーザは選択キーが何であるか確認することはできる。つまり、キーロガーがキー入力時にキーボード画像をキャプチャした場合でも、既にカーソルは消滅しているので、どのキーが入力されたか検知できない。
【0015】
以下、以上のように構成された安全なソフトウェアキーボードの動作を説明する。
図6は、ソフトウェアキーボード表示部21の処理を示すフローチャートである。
ソフトウェアキーボード表示部21は、入力判定部24から入力を待ち(ステップ601)、入力判定部24から入力を受信する(ステップ602)と、入力がソフトウェアキーボード301の起動イベントかチェックする(ステップ603)。
入力判定部24からの入力は、ソフトウェアキーボード301の起動イベント、終了イベント、キーコードのどれかである。ソフトウェアキーボード起動時は、ソフトウェアキーボード301の画面表示を初期化(ステップ604)し、ステップ601から繰り返す。
ソフトウェアキーボード301の画面表示を初期化するとは、文字コードを表示しない仮想的なキーボード配列の画像をソフトウェアキーボード内に表示する、ということである。
起動イベントは、物理キーボード12において、ソフトウェアキーボードの画面表示を開始するために割り当てた専用のキー、例えばInsertキーなどを操作することによって発生する。またはマウス13により、図4のパスワード入力ボックスを操作することによって発生する。
【0016】
入力が起動イベント以外の場合、入力がソフトウェアキーボード301の終了イベントかチェックする(ステップ605)。ソフトウェアキーボード終了時は、ソフトウェアキーボードの画面表示を終了(ステップ606)し、処理を終了する。
終了イベントは、物理キーボード12において、ソフトウェアキーボードの画面表示を終了するために割り当てた専用のキー、例えばEndキーなどを操作することによって発生する。またはマウス13により、図4の非入力エリア、例えばユーザID入力ボックス、パスワード入力ボックス、OKボタン、Cancelボタン以外の領域を操作することによって発生する。
入力が終了イベント以外の場合、キーコードの種別判定を順番に実行する。物理キーボード12における矢印キー“↑”かどうかのチェック(ステップ607)、“↓”かどうかのチェック(ステップ608)、“←”かどうかのチェック(ステップ609)、“→”かどうかのチェック(ステップ610)、を順に実行し、該当するキーコードの場合はソフトウェアキーボード301上の矢印キーの指定方向に移動する(ステップ612)。
また、上記のキーコード以外の場合は、キー入力を決定することに等しいので、ソフトウェアキーボード301上のキーを任意の方向に移動する(ステップ611)。ステップ611、またはステップ612終了後は、ユーザにキーの移動が正常終了したことを通知するため、図5の502に例示したように、該当するキーにカーソルを所定時間だけ一時的に表示し、その後カーソルを消去する(ステップ613)。ステップ613終了後はステップ601から繰り返す。
【0017】
図7は、入力フォーム表示部の処理のフローチャートである。
入力フォーム表示部22は、入力判定部24から入力を待ち(ステップ701)、入力判定部24から入力を受信する(ステップ702)と、入力がユーザID項目へのキーコード入力かどうかのチェック(ステップ703)、入力がパスワード項目へのキーコード入力かどうかのチェック(ステップ704)を順に実行する。入力判定部24からの入力は、ユーザID項目への文字コード入力、パスワード項目への文字コード入力のどれかである。入力がユーザID項目の場合は文字コードを表示(ステップ704)し、ステップ701から繰り返す。入力がパスワードの場合は文字コードをそのまま表示せず、“*”などの伏せ文字を利用して表示(ステップ706)し、ステップ701から繰り返す。
【0018】
図8は、デバイス制御部23のキーボードイベント処理のフローチャートである。
デバイス制御部23は、キーボード12からキー入力を待ち(ステップ801)、キーボード12からキーコード入力を受信する(ステップ802)と、入力がソフトウェアキーボード301の画面に対するキーコード入力かどうかのチェック(ステップ803)、入力が入力フォーム401の画面にあるユーザID項目に対するキーコード入力かどうかのチェック(ステップ804)を順に実行する。
キー入力がソフトウェアキーボード301の画面や入力フォーム401の画面にあるユーザID項目の場合は入力判定部24にキーコードを送信(ステップ806)し、ステップ801から繰り返す。それ以外のキー入力の場合はキーコードを廃棄(ステップ805)し、ステップ801から繰り返す。キーボード12からのキー入力は、ソフトウェアキーボードの画面、入力フォームの画面にあるパスワード項目だけを処理する。例えば、入力フォーム401の画面のパスワード項目はソフトウェアキーボード301で入力するため、入力判定部24にキーコードを送信しない。
【0019】
図9は、デバイス制御部23のマウスイベント処理のフローチャートである。
デバイス制御部23は、マウス13からイベント入力を待ち(ステップ901)、マウス13からイベント入力を受信する(ステップ902)と、入力が入力フォーム401の画面に対するマウス入力イベントかチェックする(ステップ903)。マウス入力イベントが入力フォーム401の画面の場合は入力判定部24にマウスイベントを送信(ステップ905)し、ステップ901から繰り返す。それ以外の場合はマウスイベントを廃棄(ステップ904)し、ステップ901から繰り返す。マウス13からのマウスイベント入力は、入力フォーム401の画面にある各項目だけを処理し、ソフトウェアキーボード301の表示画面にはマウスカーソルを表示しない。
【0020】
図10は、入力判定部24によるデバイス制御部23からの入力処理のフローチャートである。
入力判定部24は、デバイス制御部23から入力を待ち(ステップ1001)、デバイス制御部23から入力を受信する(ステップ1002)と、入力がソフトウェアキーボード301の画面に対するイベントかどうかのチェック(ステップ1003)、入力が入力フォーム401の画面に対するイベントかどうかのチェック(ステップ1004)を順に実行する。
イベント入力がソフトウェアキーボード301の画面に対応する場合は、ソフトウェアキーボード301の入力判定処理を実行(処理A)し、ステップ1001から繰り返す。イベント入力が入力フォーム401の画面に対応する場合は入力フォーム401の入力判定処理を実行(処理B)し、ステップ1001から繰り返す。
【0021】
図11は、入力判定部24によるソフトウェアキーボード301の入力判定処理のフローチャートである。
ソフトウェアキーボード301には物理キーボード12からのキーコード入力だけが送信される。入力判定部24は、キーコードの種別判定を順番に実行する。すなわち、物理キーボード12における矢印キー“↑”かどうかのチェック(ステップ1101)、“↓”かどうかのチェック(ステップ1102)、“←”かどうかのチェック(ステップ1103)、“→”かどうかのチェック(ステップ1104)を順に実行する。
該当するキーコード以外の場合は、現在ソフトウェアキーボード301上で選択されているキーの入力を意味するので、対応する文字コードを取り出し、入力文字記憶部31に保存(ステップ1105)し、処理を終了する。
【0022】
入力が上記のキーコード(“↑”、“↓”、“←”、“→”)の場合、ソフトウェアキーボード301にキーを送信するか判定する処理を開始する。
まず、ランダムな閾値を計算する(ステップ1106)。この時、キー移動が困難になる位に大きな値を計算しないように十分配慮する。次に、該当するキーのストローク回数が閾値を超えるかチェック(ステップ1107)し、超える場合はソフトウェアキーボード表示部21にキーコードを送信(ステップ1108)し、処理を終了する。
該当するキーのストローク回数が閾値を超えない場合は処理を終了する。例えば、“↑”のストローク回数が3回であり、ランダムな閾値が2の場合はソフトウェアキーボード表示部21にキーコードを送信するが、ランダムな閾値が4の場合はソフトウェアキーボード表示部21にキーコードを送信しない。
【0023】
図12は、入力判定部24による入力フォームの入力判定処理のフローチャートである。
入力フォーム401にはユーザID項目へのキーコード入力、パスワード項目へのマウスイベント入力、“OK”ボタンへのマウスイベント入力、“Cancel”ボタンへのマウスイベント入力だけが送信される。
入力判定部24は、ユーザID項目へのキーコード入力かどうかチェックする(ステップ1201)。ユーザID項目へのキーコード入力の場合は、対応する文字コードを取り出し、入力フォーム表示部22に送信(ステップ1202)し、処理を終了する。
【0024】
ユーザID項目へのキーコード入力以外の場合、パスワード項目へのマウスイベント入力かどうかチェックする(ステップ1203)。パスワード項目へのマウスイベント入力の場合は、ソフトウェアキーボード表示部21に“起動”を送信(ステップ1204)し、パスワード入力に備え、処理を終了する。パスワード項目へのマウスイベント入力以外の場合、“OK”ボタンへのマウスイベント入力かどうかチェックする(ステップ1205)。“OK”ボタンへのマウスイベント入力の場合、予め定めた認証プロバイダに認証情報を送信(ステップ1206)し、制御プログラム2全体を終了(ステップ1209)し、処理を終了する。
【0025】
“OK”ボタンへのマウスイベント入力以外の場合、“Cancel”ボタンへのマウスイベント入力かどうかチェックする(ステップ1207)。Cancel”ボタンへのマウスイベント入力の場合、制御プログラム2全体を終了(ステップ1209)し、処理を終了する。Cancel”ボタンへのマウスイベント入力以外の場合、ソフトウェアキーボード表示部21に“終了”を送信(ステップ1208)、処理を終了する。
【0026】
図13は、図4の入力フォーム401のパスワード入力欄に、ソフトウェアキーボード301により、例えば「pmw」を入力する場合におけるユーザの操作手順とソフトウェアキーボードの状態を示す図である。
(1)まず、パスワード「pmw」を入力するに際して、ソフトウェアキーボードのキー選択位置は1301から開始すると仮定する。ユーザは物理キーボード12の”→”キーと”↓”キーの押下を繰り返し、「p」キーを表す1302の位置に選択を移動させる。この位置で物理キーボードの矢印以外のキー、例えば、スペースキーを押下することで、「p」の入力を確定させる。この時、キーは任意の方向に移動する。図13はソフトウェアキーボードの一段下のキーに選択が移る例を示している。次に物理キーボードの”→”キーと”↑”キーの押下を繰り返し、「m」キーを表す1303の位置に選択を移動させる。スペースキーを押下することで、「m」の入力を確定させる。「w」キー1304に関しても同様である。
【0027】
ところで、ソフトウェアキーボード301上のキーのサイズや位置、あるいはソフトウェアキーボード全体の表示位置については、キーロガーによるキャプチャを困難にするために、時間的に変更するのが望ましい。
キーのサイズや位置を時間的に変更するに際しては、図14に示す処理を図6のステップ613の後に挿入することにより、容易に実現することができる。
すなわち、まず、予め設定されている時間を経過しているかチェックする(ステップ1401)。経過している場合は、ソフトウェアキーボードのキー表示を更新するため、まず経過時間を0で初期化し(ステップ1402)、未表示のキーがあるかチェックする(ステップ1403)。ステップ1401で時間が経過していない場合は処理を終了する。ステップ1403で、未表示のキーがある場合は、キーのサイズや位置のランダムな値を計算し、ソフトウェアキーボード上にキーを表示する(ステップ1404)。ステップ1403で未表示のキーがない場合は、処理を終了する。
この処理を行うことにより、図3のキー表示が例えば図15に示すようなものに時間的に変化し、キーの選択位置を追跡しただけでは、どの文字のキーが選択されたかを特定することが困難になる。
【0028】
また、ソフトウェアキーボード全体の表示位置を画面内で時間的に変更するに際しては、図16に示す処理を図6のステップ613の後に挿入することにより、容易に実現することができる。
すなわち、まず、ステップ1601において、予め設定されている時間を経過しているかチェックする(ステップ1601)。経過している場合は、ソフトウェアキーボード全体の表示位置を更新するため、まず経過時間を0で初期化する(ステップ1602)。ソフトウェアキーボードの表示位置のランダムな値を計算し、ソフトウェアキーボードを移動した後で処理を終了する。ステップ1601で時間が経過していない場合は処理を終了する。
この処理を行うことにより、図3のソフトウェアキーボード全体の表示が例えば図17に示すような位置に時間的に変化し、キーの選択位置を追跡しただけでは、どの文字のキーが選択されたかを特定することが困難になる。
【図面の簡単な説明】
【0029】
【図1】本発明の一実施の形態のソフトウェアキーボードのシステム構成を示す図である。
【図2】本発明における通常ソフトウェアキーボードの画面表示例を示す図である。
【図3】本発明における安全なソフトウェアキーボードの画面表示例を示す図である。
【図4】本発明における入力フォームの画面表示例を示す図である。
【図5】本発明における安全なソフトウェアキーボードのキー選択時の画面表示例を示す図である。
【図6】本発明におけるソフトウェアキーボード表示部の処理のフローチャートである。
【図7】本発明における入力フォーム表示部の処理のフローチャートである。
【図8】本発明におけるデバイス制御部のキーボードイベント処理のフローチャートである。
【図9】本発明におけるデバイス制御部のマウスイベント処理のフローチャートである。
【図10】本発明における入力判定部によるデバイス制御部からの入力処理のフローチャートである。
【図11】本発明における入力判定部によるソフトウェアキーボードの入力判定処理のフローチャートである。
【図12】本発明における入力判定部による入力フォームの入力判定処理のフローチャートである。
【図13】本発明におけるソフトウェアキーボードへの入力手順を示す図である。
【図14】本発明におけるソフトウェアキーボード表示部によるキーのサイズや位置を時間的に変更する処理のフローチャートである。
【図15】本発明に係わる安全なソフトウェアキーボードでキーのサイズや位置を時間的に変更する場合の画面表示例を示す図である。
【図16】本発明に記載のソフトウェアキーボード表示部によるソフトウェアキーボード全体の表示位置を画面内で時間的に変更する処理のフローチャートである。
【図17】本発明に係わる安全なソフトウェアキーボードで画面内の表示位置を時間的に変更する場合の画面表示例を示す図である。
【符号の説明】
【0030】
TM…端末、1…入出力装置、2…制御プログラム、3…記憶装置、11…ディスプレイ装置、12…キーボード、13…マウス、21…ソフトウェアキーボード表示部、22…入力フォーム表示部、23…デバイス制御部、24…入力判定部、31…入力文字記憶部。
【技術分野】
【0001】
本発明は、キーロガーが画面をキャプチャによるソフトウェアキーボードの入力文字の盗聴を防止することができるソフトウェアキーボードに関する。
【背景技術】
【0002】
従来、安全なソフトウェアキーボードを実現する技術として、例えば下記特許文献1及び特許文献2に記載のものが知られている。
下記特許文献1に記載のものは、暗証番号入力画面を表示する際、暗証番号入力画面に表示されたテンキーの位置をランダムに変更することで、第三者による暗証番号の検知を防止する暗証番号の入力装置である。
また、下記特許文献2に記載のものは、パスワードを入力する際、複数の文字キーを含むキーボード画像を表示し、キー入力の毎に入力文字の判定と、次の文字入力を受け付けるためのキーボード画像を新規に表示するパスワード認証装置である。
【0003】
【特許文献1】特願2000−99801号公報
【特許文献2】特願2005−107678号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら、上記特許文献1、特許文献2に記載の技術は、画面をキャプチャするタイプのキーロガーによるソフトウェアキーボードの入力文字の盗聴を防止できない。
本来、キーロガーとは、ユーザのキーボード入力を監視し、パスワード入力文字列を検知するタイプのマルウェア(悪意のあるソフトウェア)である。近年は、キーロガー対策として、パスワードの入力画面中にソフトウェアによる仮想的なキーボードを表示し、マウスなどのポインティングデバイスによる入力を行うソフトウェアキーボードによる対策がなされている。
しかしながら、ソフトウェアキーボードの画面をキャプチャする攻撃方法を利用し、第三者は入力されたパスワードをキャプチャ画像から検知できる。
【0005】
本発明は、画面キャプチャによるソフトウェアキーボードからの入力の盗聴を防止することができるソフトウェアキーボードを提供することを目的とする。
【課題を解決するための手段】
【0006】
上記目的を達成するために、本発明は、個々のキーに割当てた表記文字を非表示にしたキーボード配列を記憶装置から取り出し、画面上に表示するソフトウェアキーボード表示手段と、ユーザによる物理キーボードの矢印キーの押下によってソフトウェアキーボードのキー選択を変更し、カーソルを所定時間だけ一時表示することによりキー選択が変更したことをユーザに通知するキー選択変更手段と、ユーザによる物理キーボードの矢印キー以外の押下によってキーの決定を処理し、決定された文字を所定のフォームに入力するキー入力手段とを備えることを特徴とする。
また、前記ソフトウェアキーボード表示手段は、ソフトウェアキーボードのキーのサイズ及び位置のいずれかまたは両方、あるいはソフトウェアキーボード全体の画面上の表示位置を時間的に変更することを特徴とする。
また、前記キー選択変更手段は、ソフトウェアキーボードのキー移動に必要な物理キーボードの矢印キーのストローク回数をランダムに変更することを特徴とする。
また、前記キー選択変更手段は、マウス入力を禁止することを特徴とする。
また、前記キー入力手段は、物理キーボードの矢印キー以外を押下することによって選択されたキーを入力し、ソフトウェアキーボードの選択キーを自動的に別のキーに移動することを特徴とする。
【発明の効果】
【0007】
本発明によれば、以下のような効果がある。
(1)ソフトウェアキーボードの個々のキーに対する表記文字が非表示になっているため、たとえキーロガーによってキーボード画像をキャプチャされた場合でも、入力文字は検知されない。
(2)ソフトウェアキーボードに表示するキーのサイズや位置、あるいはソフトウェアキーボード全体の表示位置を時間的に変更するため、キーロガーは個々のキーの座標から画面上のキーの相対位置を計算することが困難になり、結果的に、入力文字を特定することができなくなる。
(3)ソフトウェアキーボードへのマウス入力を禁止するため、キャプチャ画像にはマウスカーソルが表示されない。これにより、キーロガーはマウスカーソルを追跡する方法ではキーの相対位置から入力文字を特定することができなくなる。
(4)ソフトウェアキーボードのキー移動は、物理キーボードの矢印キーによって行うため、従来のキーロガーの手法である、「物理キーボードに入力されるキーコードを盗聴する」方法は利用できない。
(5)ソフトウェアキーボードのキー移動のための物理キーボードストローク回数をランダムに変更する。すなわち、例えば、t1時刻では物理キーボードの1回の押圧操作によってソフトウェアキーボードのキーを移動させるが、t2時刻では物理キーボードの3回の押圧操作によってソフトウェアキーボードのキーを移動させるようにするため、たとえキーロガーが矢印キーのストローク回数を計算してソフトウェアキーボード上のキーの相対位置を検知しようと試みた場合でも、実際の選択キーと一致しなくなり、結果的に、入力文字を特定することができなくなる。
(6)キー移動が正常終了したことを通知する際、カーソルを所定時間だけ一時的に一瞬表示するため、キー入力時はカーソルが消滅する。これにより、たとえキーロガーがキーボード画像をキャプチャした場合でも、カーソルがどのキーにあたっているか検知できなくなる。
(7)ソフトウェアキーボードのキー入力は物理キーボードの矢印キー以外の任意キーによって行うため、従来のキーロガーの手法である、「物理キーボードに入力されるキーコードを盗聴する」、方法ではキー入力を検知できない。
(8)キー入力時に、ソフトウェアキーボードの選択キーを自動的に他のキーに移動することで、キー移動とキー入力の遅延時間の差をなくす。これにより、たとえキーロガーが両者の遅延時間を比較した場合でも、有意な差が現れず、入力したキーを検知できなくなる。
【発明を実施するための最良の形態】
【0008】
以下、本発明を実施する場合の一形態を、図面を参照して具体的に説明する。
図1は、本発明に係るソフトウェアキーボードの一実施の形態を示すシステム構成図である。
端末TMには、入出力装置1、制御プログラム2、記憶装置3を備える。
入出力装置1は、ディスプレイ装置11、キーボード12、マウス13を備える。
ディスプレイ装置11は、本発明に係わる安全なソフトウェアキーボードや入力フォームを含む、端末TM上のあらゆる表示画面の出力デバイスである。
キーボード12は、任意の入力フォームに文字コードを入力するための入力デバイス、マウス13は、ディスプレイ装置11上の任意の位置をポインティングするための入力デバイスである。
【0009】
制御プログラム2は、本発明に係わる安全なソフトウェアキーボードの構成プログラムとして、ソフトウェアキーボード表示部21、入力フォーム表示部22、デバイス制御部23、入力判定部24を備えている。
ソフトウェアキーボード表示部21は、キーボード12をソフトウェアによって仮想的に実現するプログラムであり、図3に示す安全なソフトウェアキーボード301の画面表示を作成し、キー選択時にカーソルを表示する機能を備える。
【0010】
入力フォーム表示部22は、安全なソフトウェアキーボード301の入力キーに対応する文字コードを入力フォーム上に出力する機能を備える。
デバイス制御部23は、安全なソフトウェアキーボード301へのマウス13の入力を禁止し、キーボード12の入力だけ転送することを保証する機能を備える。
入力判定部24は、キーボード12の入力キーをソフトウェアキーボード表示部21に送信するか判定する機能、キーボード12の入力キーを文字コードに変換し、入力文字記憶部31に保存する機能、入力文字記憶部31に保存コードの入力フォーム表示部22への転送をスケジューリングする機能を備える。
記憶装置3は、入力文字記憶部31を備える。この入力文字記憶部31は、入力フォームのパスワード項目に入力するパスワード文字列を一時的に保存する記憶領域である。安全性を考慮して、入力文字記憶部31のデータを暗号化して保存することも想定する範囲内である。
【0011】
図2は、本発明に係わる通常のソフトウェアキーボード201の画面表示例を示す。通常時においては、ソフトウェアキーボード201の画面表示には複数の文字コードの仮想的なキーが割り当てられている。ユーザはソフトウェアキーボード201上の仮想的なキー表示にマウスカーソル202を移動し、マウスをクリックする方法でキー入力を行う。
【0012】
図3は、本発明に係わる安全なソフトウェアキーボード301の画面表示例を示す。安全なソフトウェアキーボード301の画面表示には、仮想的なキー表示上に文字コード(表記文字)が表示されていない点である。これにより、例えば、キーロガーが安全なソフトウェアキーボード301上の仮想的なキー表示の画像をキャプチャしたとしても、文字コードは表示されていないので、どのキーが選択されたかを監視するのが無意味なものとなる。
【0013】
図4は、本発明に係わる入力フォームの画面表示例を示す。
入力フォーム401は、一般的に利用される認証情報の入力フォームと同様のものを想定している。ユーザIDとパスワードを入力する項目、認証情報を認証プロバイダに送信するか、キャンセルするかを決定するためのボタンを備える。
ユーザIDは複数の半角英数字を組合せた文字列、パスワードは”*”などで伏せられた文字列を表示するのが一般的である。
【0014】
図5は、本発明に係わる安全なソフトウェアキーボード501のキー選択時の画面表示例を示す。
安全なソフトウェアキーボード501の画面表示上の仮想的なキーを選択するため、ユーザはキーボードの矢印キーを利用する。キーロガ−はソフトウェアキーボードの画像をキャプチャする方法で選択キーを検知できる。例えば、マウスカーソルが仮想的なキー表示の画像に割り当たっている場合、選択中の仮想的なキーを反転表示する場合である。本発明では、カーソル502を所定時間だけ一時的に(一瞬だけ)表示する機能を備える。次回のキー移動やキー入力が発生するまでの間にカーソル502は消滅する。ただし、一瞬はカーソルが表示されるので、ユーザは選択キーが何であるか確認することはできる。つまり、キーロガーがキー入力時にキーボード画像をキャプチャした場合でも、既にカーソルは消滅しているので、どのキーが入力されたか検知できない。
【0015】
以下、以上のように構成された安全なソフトウェアキーボードの動作を説明する。
図6は、ソフトウェアキーボード表示部21の処理を示すフローチャートである。
ソフトウェアキーボード表示部21は、入力判定部24から入力を待ち(ステップ601)、入力判定部24から入力を受信する(ステップ602)と、入力がソフトウェアキーボード301の起動イベントかチェックする(ステップ603)。
入力判定部24からの入力は、ソフトウェアキーボード301の起動イベント、終了イベント、キーコードのどれかである。ソフトウェアキーボード起動時は、ソフトウェアキーボード301の画面表示を初期化(ステップ604)し、ステップ601から繰り返す。
ソフトウェアキーボード301の画面表示を初期化するとは、文字コードを表示しない仮想的なキーボード配列の画像をソフトウェアキーボード内に表示する、ということである。
起動イベントは、物理キーボード12において、ソフトウェアキーボードの画面表示を開始するために割り当てた専用のキー、例えばInsertキーなどを操作することによって発生する。またはマウス13により、図4のパスワード入力ボックスを操作することによって発生する。
【0016】
入力が起動イベント以外の場合、入力がソフトウェアキーボード301の終了イベントかチェックする(ステップ605)。ソフトウェアキーボード終了時は、ソフトウェアキーボードの画面表示を終了(ステップ606)し、処理を終了する。
終了イベントは、物理キーボード12において、ソフトウェアキーボードの画面表示を終了するために割り当てた専用のキー、例えばEndキーなどを操作することによって発生する。またはマウス13により、図4の非入力エリア、例えばユーザID入力ボックス、パスワード入力ボックス、OKボタン、Cancelボタン以外の領域を操作することによって発生する。
入力が終了イベント以外の場合、キーコードの種別判定を順番に実行する。物理キーボード12における矢印キー“↑”かどうかのチェック(ステップ607)、“↓”かどうかのチェック(ステップ608)、“←”かどうかのチェック(ステップ609)、“→”かどうかのチェック(ステップ610)、を順に実行し、該当するキーコードの場合はソフトウェアキーボード301上の矢印キーの指定方向に移動する(ステップ612)。
また、上記のキーコード以外の場合は、キー入力を決定することに等しいので、ソフトウェアキーボード301上のキーを任意の方向に移動する(ステップ611)。ステップ611、またはステップ612終了後は、ユーザにキーの移動が正常終了したことを通知するため、図5の502に例示したように、該当するキーにカーソルを所定時間だけ一時的に表示し、その後カーソルを消去する(ステップ613)。ステップ613終了後はステップ601から繰り返す。
【0017】
図7は、入力フォーム表示部の処理のフローチャートである。
入力フォーム表示部22は、入力判定部24から入力を待ち(ステップ701)、入力判定部24から入力を受信する(ステップ702)と、入力がユーザID項目へのキーコード入力かどうかのチェック(ステップ703)、入力がパスワード項目へのキーコード入力かどうかのチェック(ステップ704)を順に実行する。入力判定部24からの入力は、ユーザID項目への文字コード入力、パスワード項目への文字コード入力のどれかである。入力がユーザID項目の場合は文字コードを表示(ステップ704)し、ステップ701から繰り返す。入力がパスワードの場合は文字コードをそのまま表示せず、“*”などの伏せ文字を利用して表示(ステップ706)し、ステップ701から繰り返す。
【0018】
図8は、デバイス制御部23のキーボードイベント処理のフローチャートである。
デバイス制御部23は、キーボード12からキー入力を待ち(ステップ801)、キーボード12からキーコード入力を受信する(ステップ802)と、入力がソフトウェアキーボード301の画面に対するキーコード入力かどうかのチェック(ステップ803)、入力が入力フォーム401の画面にあるユーザID項目に対するキーコード入力かどうかのチェック(ステップ804)を順に実行する。
キー入力がソフトウェアキーボード301の画面や入力フォーム401の画面にあるユーザID項目の場合は入力判定部24にキーコードを送信(ステップ806)し、ステップ801から繰り返す。それ以外のキー入力の場合はキーコードを廃棄(ステップ805)し、ステップ801から繰り返す。キーボード12からのキー入力は、ソフトウェアキーボードの画面、入力フォームの画面にあるパスワード項目だけを処理する。例えば、入力フォーム401の画面のパスワード項目はソフトウェアキーボード301で入力するため、入力判定部24にキーコードを送信しない。
【0019】
図9は、デバイス制御部23のマウスイベント処理のフローチャートである。
デバイス制御部23は、マウス13からイベント入力を待ち(ステップ901)、マウス13からイベント入力を受信する(ステップ902)と、入力が入力フォーム401の画面に対するマウス入力イベントかチェックする(ステップ903)。マウス入力イベントが入力フォーム401の画面の場合は入力判定部24にマウスイベントを送信(ステップ905)し、ステップ901から繰り返す。それ以外の場合はマウスイベントを廃棄(ステップ904)し、ステップ901から繰り返す。マウス13からのマウスイベント入力は、入力フォーム401の画面にある各項目だけを処理し、ソフトウェアキーボード301の表示画面にはマウスカーソルを表示しない。
【0020】
図10は、入力判定部24によるデバイス制御部23からの入力処理のフローチャートである。
入力判定部24は、デバイス制御部23から入力を待ち(ステップ1001)、デバイス制御部23から入力を受信する(ステップ1002)と、入力がソフトウェアキーボード301の画面に対するイベントかどうかのチェック(ステップ1003)、入力が入力フォーム401の画面に対するイベントかどうかのチェック(ステップ1004)を順に実行する。
イベント入力がソフトウェアキーボード301の画面に対応する場合は、ソフトウェアキーボード301の入力判定処理を実行(処理A)し、ステップ1001から繰り返す。イベント入力が入力フォーム401の画面に対応する場合は入力フォーム401の入力判定処理を実行(処理B)し、ステップ1001から繰り返す。
【0021】
図11は、入力判定部24によるソフトウェアキーボード301の入力判定処理のフローチャートである。
ソフトウェアキーボード301には物理キーボード12からのキーコード入力だけが送信される。入力判定部24は、キーコードの種別判定を順番に実行する。すなわち、物理キーボード12における矢印キー“↑”かどうかのチェック(ステップ1101)、“↓”かどうかのチェック(ステップ1102)、“←”かどうかのチェック(ステップ1103)、“→”かどうかのチェック(ステップ1104)を順に実行する。
該当するキーコード以外の場合は、現在ソフトウェアキーボード301上で選択されているキーの入力を意味するので、対応する文字コードを取り出し、入力文字記憶部31に保存(ステップ1105)し、処理を終了する。
【0022】
入力が上記のキーコード(“↑”、“↓”、“←”、“→”)の場合、ソフトウェアキーボード301にキーを送信するか判定する処理を開始する。
まず、ランダムな閾値を計算する(ステップ1106)。この時、キー移動が困難になる位に大きな値を計算しないように十分配慮する。次に、該当するキーのストローク回数が閾値を超えるかチェック(ステップ1107)し、超える場合はソフトウェアキーボード表示部21にキーコードを送信(ステップ1108)し、処理を終了する。
該当するキーのストローク回数が閾値を超えない場合は処理を終了する。例えば、“↑”のストローク回数が3回であり、ランダムな閾値が2の場合はソフトウェアキーボード表示部21にキーコードを送信するが、ランダムな閾値が4の場合はソフトウェアキーボード表示部21にキーコードを送信しない。
【0023】
図12は、入力判定部24による入力フォームの入力判定処理のフローチャートである。
入力フォーム401にはユーザID項目へのキーコード入力、パスワード項目へのマウスイベント入力、“OK”ボタンへのマウスイベント入力、“Cancel”ボタンへのマウスイベント入力だけが送信される。
入力判定部24は、ユーザID項目へのキーコード入力かどうかチェックする(ステップ1201)。ユーザID項目へのキーコード入力の場合は、対応する文字コードを取り出し、入力フォーム表示部22に送信(ステップ1202)し、処理を終了する。
【0024】
ユーザID項目へのキーコード入力以外の場合、パスワード項目へのマウスイベント入力かどうかチェックする(ステップ1203)。パスワード項目へのマウスイベント入力の場合は、ソフトウェアキーボード表示部21に“起動”を送信(ステップ1204)し、パスワード入力に備え、処理を終了する。パスワード項目へのマウスイベント入力以外の場合、“OK”ボタンへのマウスイベント入力かどうかチェックする(ステップ1205)。“OK”ボタンへのマウスイベント入力の場合、予め定めた認証プロバイダに認証情報を送信(ステップ1206)し、制御プログラム2全体を終了(ステップ1209)し、処理を終了する。
【0025】
“OK”ボタンへのマウスイベント入力以外の場合、“Cancel”ボタンへのマウスイベント入力かどうかチェックする(ステップ1207)。Cancel”ボタンへのマウスイベント入力の場合、制御プログラム2全体を終了(ステップ1209)し、処理を終了する。Cancel”ボタンへのマウスイベント入力以外の場合、ソフトウェアキーボード表示部21に“終了”を送信(ステップ1208)、処理を終了する。
【0026】
図13は、図4の入力フォーム401のパスワード入力欄に、ソフトウェアキーボード301により、例えば「pmw」を入力する場合におけるユーザの操作手順とソフトウェアキーボードの状態を示す図である。
(1)まず、パスワード「pmw」を入力するに際して、ソフトウェアキーボードのキー選択位置は1301から開始すると仮定する。ユーザは物理キーボード12の”→”キーと”↓”キーの押下を繰り返し、「p」キーを表す1302の位置に選択を移動させる。この位置で物理キーボードの矢印以外のキー、例えば、スペースキーを押下することで、「p」の入力を確定させる。この時、キーは任意の方向に移動する。図13はソフトウェアキーボードの一段下のキーに選択が移る例を示している。次に物理キーボードの”→”キーと”↑”キーの押下を繰り返し、「m」キーを表す1303の位置に選択を移動させる。スペースキーを押下することで、「m」の入力を確定させる。「w」キー1304に関しても同様である。
【0027】
ところで、ソフトウェアキーボード301上のキーのサイズや位置、あるいはソフトウェアキーボード全体の表示位置については、キーロガーによるキャプチャを困難にするために、時間的に変更するのが望ましい。
キーのサイズや位置を時間的に変更するに際しては、図14に示す処理を図6のステップ613の後に挿入することにより、容易に実現することができる。
すなわち、まず、予め設定されている時間を経過しているかチェックする(ステップ1401)。経過している場合は、ソフトウェアキーボードのキー表示を更新するため、まず経過時間を0で初期化し(ステップ1402)、未表示のキーがあるかチェックする(ステップ1403)。ステップ1401で時間が経過していない場合は処理を終了する。ステップ1403で、未表示のキーがある場合は、キーのサイズや位置のランダムな値を計算し、ソフトウェアキーボード上にキーを表示する(ステップ1404)。ステップ1403で未表示のキーがない場合は、処理を終了する。
この処理を行うことにより、図3のキー表示が例えば図15に示すようなものに時間的に変化し、キーの選択位置を追跡しただけでは、どの文字のキーが選択されたかを特定することが困難になる。
【0028】
また、ソフトウェアキーボード全体の表示位置を画面内で時間的に変更するに際しては、図16に示す処理を図6のステップ613の後に挿入することにより、容易に実現することができる。
すなわち、まず、ステップ1601において、予め設定されている時間を経過しているかチェックする(ステップ1601)。経過している場合は、ソフトウェアキーボード全体の表示位置を更新するため、まず経過時間を0で初期化する(ステップ1602)。ソフトウェアキーボードの表示位置のランダムな値を計算し、ソフトウェアキーボードを移動した後で処理を終了する。ステップ1601で時間が経過していない場合は処理を終了する。
この処理を行うことにより、図3のソフトウェアキーボード全体の表示が例えば図17に示すような位置に時間的に変化し、キーの選択位置を追跡しただけでは、どの文字のキーが選択されたかを特定することが困難になる。
【図面の簡単な説明】
【0029】
【図1】本発明の一実施の形態のソフトウェアキーボードのシステム構成を示す図である。
【図2】本発明における通常ソフトウェアキーボードの画面表示例を示す図である。
【図3】本発明における安全なソフトウェアキーボードの画面表示例を示す図である。
【図4】本発明における入力フォームの画面表示例を示す図である。
【図5】本発明における安全なソフトウェアキーボードのキー選択時の画面表示例を示す図である。
【図6】本発明におけるソフトウェアキーボード表示部の処理のフローチャートである。
【図7】本発明における入力フォーム表示部の処理のフローチャートである。
【図8】本発明におけるデバイス制御部のキーボードイベント処理のフローチャートである。
【図9】本発明におけるデバイス制御部のマウスイベント処理のフローチャートである。
【図10】本発明における入力判定部によるデバイス制御部からの入力処理のフローチャートである。
【図11】本発明における入力判定部によるソフトウェアキーボードの入力判定処理のフローチャートである。
【図12】本発明における入力判定部による入力フォームの入力判定処理のフローチャートである。
【図13】本発明におけるソフトウェアキーボードへの入力手順を示す図である。
【図14】本発明におけるソフトウェアキーボード表示部によるキーのサイズや位置を時間的に変更する処理のフローチャートである。
【図15】本発明に係わる安全なソフトウェアキーボードでキーのサイズや位置を時間的に変更する場合の画面表示例を示す図である。
【図16】本発明に記載のソフトウェアキーボード表示部によるソフトウェアキーボード全体の表示位置を画面内で時間的に変更する処理のフローチャートである。
【図17】本発明に係わる安全なソフトウェアキーボードで画面内の表示位置を時間的に変更する場合の画面表示例を示す図である。
【符号の説明】
【0030】
TM…端末、1…入出力装置、2…制御プログラム、3…記憶装置、11…ディスプレイ装置、12…キーボード、13…マウス、21…ソフトウェアキーボード表示部、22…入力フォーム表示部、23…デバイス制御部、24…入力判定部、31…入力文字記憶部。
【特許請求の範囲】
【請求項1】
個々のキーに割当てた表記文字を非表示にしたキーボード配列を記憶装置から取り出し、画面上に表示するソフトウェアキーボード表示手段と、
ユーザによる物理キーボードの矢印キーの押下によってソフトウェアキーボードのキー選択を変更し、カーソルを所定時間だけ一時表示することによりキー選択が変更したことをユーザに通知するキー選択変更手段と、
ユーザによる物理キーボードの矢印キー以外の押下によってキーの決定を処理し、決定された文字を所定のフォームに入力するキー入力手段と、
を備えることを特徴とするソフトウェアキーボード。
【請求項2】
前記ソフトウェアキーボード表示手段は、ソフトウェアキーボードのキーのサイズ及び位置のいずれかまたは両方、あるいはソフトウェアキーボード全体の画面上の表示位置を時間的に変更することを特徴とする請求項1に記載のソフトウェアキーボード。
【請求項3】
前記キー選択変更手段は、ソフトウェアキーボードのキー移動に必要な物理キーボードの矢印キーのストローク回数をランダムに変更することを特徴とする請求項1または2に記載のソフトウェアキーボード。
【請求項4】
前記キー選択変更手段は、マウス入力を禁止することを特徴とする請求項1〜3のいずれか一項に記載のソフトウェアキーボード。
【請求項5】
前記キー入力手段は、物理キーボードの矢印キー以外を押下することによって選択されたキーを入力し、ソフトウェアキーボードの選択キーを自動的に別のキーに移動することを特徴とする請求項1〜4のいずれか一項に記載のソフトウェアキーボード。
【請求項1】
個々のキーに割当てた表記文字を非表示にしたキーボード配列を記憶装置から取り出し、画面上に表示するソフトウェアキーボード表示手段と、
ユーザによる物理キーボードの矢印キーの押下によってソフトウェアキーボードのキー選択を変更し、カーソルを所定時間だけ一時表示することによりキー選択が変更したことをユーザに通知するキー選択変更手段と、
ユーザによる物理キーボードの矢印キー以外の押下によってキーの決定を処理し、決定された文字を所定のフォームに入力するキー入力手段と、
を備えることを特徴とするソフトウェアキーボード。
【請求項2】
前記ソフトウェアキーボード表示手段は、ソフトウェアキーボードのキーのサイズ及び位置のいずれかまたは両方、あるいはソフトウェアキーボード全体の画面上の表示位置を時間的に変更することを特徴とする請求項1に記載のソフトウェアキーボード。
【請求項3】
前記キー選択変更手段は、ソフトウェアキーボードのキー移動に必要な物理キーボードの矢印キーのストローク回数をランダムに変更することを特徴とする請求項1または2に記載のソフトウェアキーボード。
【請求項4】
前記キー選択変更手段は、マウス入力を禁止することを特徴とする請求項1〜3のいずれか一項に記載のソフトウェアキーボード。
【請求項5】
前記キー入力手段は、物理キーボードの矢印キー以外を押下することによって選択されたキーを入力し、ソフトウェアキーボードの選択キーを自動的に別のキーに移動することを特徴とする請求項1〜4のいずれか一項に記載のソフトウェアキーボード。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【公開番号】特開2007−172071(P2007−172071A)
【公開日】平成19年7月5日(2007.7.5)
【国際特許分類】
【出願番号】特願2005−365285(P2005−365285)
【出願日】平成17年12月19日(2005.12.19)
【出願人】(000233055)日立ソフトウエアエンジニアリング株式会社 (1,610)
【Fターム(参考)】
【公開日】平成19年7月5日(2007.7.5)
【国際特許分類】
【出願日】平成17年12月19日(2005.12.19)
【出願人】(000233055)日立ソフトウエアエンジニアリング株式会社 (1,610)
【Fターム(参考)】
[ Back to top ]