キーストローク記録は、キーロギングまたはキーボードキャプチャとも呼ばれ、キーボードで押されたキーを記録(ログ記録)する行為です。 [ 1 ] [ 2 ]通常は秘密裏に行われるため、キーボードを使用している人は自分の操作が監視されていることに気づきません。その後、記録プログラムを操作する人がデータを取得できます。キーストローク記録装置またはキーロガーは、ソフトウェアまたはハードウェアのいずれかです。
これらのプログラム自体は合法であり、[ 3 ]多くは雇用主がコンピュータの使用状況を監視できるように設計されているが、キーロガーはパスワードやその他の機密情報を盗むために最もよく使用されている。[ 4 ] [ 5 ]キーストロークの記録は、学校や家庭での子供の活動を監視するため、また法執行機関が悪意のある使用を調査するためにも利用できる。[ 6 ]
キーロギングは、キーストロークダイナミクス[ 7 ]や人間とコンピュータのインタラクションの研究にも使用できます。ハードウェアやソフトウェアベースのアプローチから音響暗号解読まで、数多くのキーロギング方法があります。
1970年代半ば、ソビエト連邦は米国大使館の タイプライターを標的としたハードウェアキーロガーを開発し、展開した。 「セレクティックバグ」と呼ばれるこのキーロガーは、プリントヘッドの回転を引き起こす機構を磁気で検出することにより、IBMセレクティックタイプライターで入力された文字を送信した。 [ 8 ]初期のキーロガーはペリー・キボロウィッツによって作成され、1983年11月17日にUsenetニュースグループnet.unix-wizards、net.sourcesに投稿された。[ 9 ]この投稿は、 Unix/dev/kmemシステムへのアクセスを制限する動機付け要因となっているようだ。ユーザーモードプログラムは、Unixカーネルで組み立てられる文字リスト(クライアント)を見つけてダンプすることで動作した。
1970年代、スパイたちはモスクワの米国大使館と領事館の建物にキーストロークロガーを設置した。[ 10 ] [ 11 ]彼らはSelectric IIとSelectric IIIの電動タイプライター に盗聴器を仕掛けた。[ 12 ]
ソ連大使館は機密情報に電動タイプライターではなく手動タイプライターを使用していた。これは、手動タイプライターがそのようなバグに耐性があるからと思われる。[ 12 ] 2013年現在、ロシアの特殊機関は依然としてタイプライターを使用している。[ 11 ] [ 13 ] [ 14 ]


ソフトウェアベースのキーロガーは、キーボードからの入力を記録するように設計されたコンピュータ プログラムです。[ 15 ]キーロガーは、 IT組織でコンピュータやビジネス ネットワークの技術的な問題をトラブルシューティングするために使用されます。家族やビジネスパーソンは、ユーザーの直接の許可なしにネットワークの使用状況を監視するために、キーロガーを合法的に使用します。Microsoftは、 Windows 10の最終バージョンには「タイピングと書き込みサービスを改善するため」にキーロガーが組み込まれていると公言しました。 [ 16 ]しかし、悪意のある人物は、公共のコンピュータでキーロガーを使用してパスワードやクレジットカード情報を盗むことができます。ほとんどのキーロガーはHTTPS暗号化によって阻止されません。これは、HTTPS 暗号化がコンピュータ間で転送中のデータのみを保護するためです。ソフトウェアベースのキーロガーは、影響を受けるユーザーのコンピュータで実行され、ユーザーが入力するキーボード入力を直接読み取ります。
技術的な観点から見ると、いくつかのカテゴリーがあります。
onKeyUp()、またはリモート Web サイトの侵害など、さまざまな方法で挿入できます。 [ 20 ]2006年以来、キーストロークログは、執筆プロセスを研究するための確立された研究方法となっています。[ 23 ] [ 24 ]執筆活動のオンラインプロセスデータを収集するために、Inputlog、Scriptlog、Translog、GGXLog、TypeFlowなどのさまざまなプログラムが開発されています。 [ 25 ] [ 26 ] [ 27 ]
キーストローク記録は、いくつかの執筆コンテキストにおいて適切な研究ツールとして正当に使用されています。これには、認知的な執筆プロセスに関する研究が含まれます。
キーストローク記録は、特に文章作成の研究に利用できます。また、第二言語学習、プログラミングスキル、タイピングスキルといった教育分野にも応用可能です。
近年、キーストロークログデータの利用は、攻撃手段としてだけでなく、ユーザーの行動防御手段としても広く研究されている。2020年のAhmedとTraoreによる研究「パスフレーズとキーストロークダイナミクス認証」では、キーストロークダイナミクスモデルが継続的認証の戦略をサポートできるかどうかを評価した。継続的認証は、ユーザーの通常の行動を利用してベースラインを確立し、そのベースラインからの逸脱をチェックして敵対的活動を検出する予防戦略である。この研究では、ユーザーのタイピングパターン、遅延、タイミングを識別するために、いくつかの機械学習分類器のパフォーマンスを分析した。著者らは、タイピングパターンのわずかな逸脱でも、なりすましの強力な指標になり得ることを発見した。これは、キーストロークログデータが倫理的に、かつユーザーの許可を得て取得された場合、防御目的に役立つことを示唆している。[ 28 ]
この研究では、実際のタイピング行動に基づいて学習させた機械学習モデルが、ほとんどの場合において誤認率と誤拒否率が低く、継続的な認証システムを低エラー率で運用できることが示されたと報告されています。また、ほとんどの人のタイピングパターンには十分な識別信号が含まれているため、タイピング習慣だけで個人プロファイルを作成できることも判明しました。これは、悪意のある攻撃者が使用するのと同じコアエクスプロイトが、侵入やなりすましからユーザーを保護するために設計されたセキュリティシステムの基盤にもなり得ることを示しています。著者らは、キーストロークダイナミクス認証は有望であるものの、最適なユーザーエクスペリエンスを実現するためには、セキュリティ、ユーザビリティ、プライバシーに関する考慮事項を慎重にバランスよく考慮する必要があると結論付けています。
ソフトウェアキーロガーには、キーボードのキー入力のみに頼らずにユーザー情報を取得する機能が追加される場合があります。これらの機能には以下のようなものがあります。


ハードウェアベースのキーロガーは、コンピュータシステムのハードウェアレベルに存在するため、ソフトウェアのインストールを必要としません。
キーロギング用の単純なソフトウェアアプリケーションを作成するのは容易であり、他の悪質なコンピュータプログラムと同様に、トロイの木馬やウイルスの一部として配布される可能性があります。しかし、攻撃者にとって容易ではないのは、捕まることなく秘密裏にキーストロークロガーをインストールし、追跡されることなく記録されたデータをダウンロードすることです。ホストマシンに手動で接続して記録されたキーストロークをダウンロードする攻撃者は、追跡されるリスクがあります。キーロギングされたデータを固定の電子メールアドレスまたはIPアドレスに送信するトロイの木馬は、攻撃者の身元を暴露するリスクがあります。
研究者のアダム・ヤングとモティ・ヤングは、キーストローク・ロギングを送信するいくつかの方法について議論した。彼らは、ウイルスやワームを使用してキーストローク・ロギング・トロイの木馬をインストールする、否認可能なパスワード窃盗攻撃を紹介した。ウイルスやワームを持っているところを捕まった攻撃者は、被害者であると主張することができる。暗号化トロイの木馬は、盗まれたログイン/パスワードのペアをトロイの木馬作成者の公開鍵を使用して非対称暗号化し、結果として得られた暗号文を密かにブロードキャストする。彼らは、暗号文をステガノグラフィでエンコードして、 Usenetなどの公開掲示板に投稿できると述べた。[ 49 ] [ 50 ]
2000年、FBIはFlashCrest iSpyを使用して、マフィアのボス、ニコデモ・スカルフォの息子であるニコデモ・スカルフォ・ジュニアのPGPパスフレーズを入手した。[ 51 ] また、2000年には、FBIは巧妙な策略でロシアのサイバー犯罪容疑者2人を米国におびき寄せ、ロシアのコンピュータにアクセスするために使用していたマシンに密かにインストールされたキーロガーを使用して、彼らのユーザー名とパスワードをキャプチャした。FBIはその後、これらの認証情報を使用してロシアの容疑者のコンピュータにアクセスし、彼らを起訴するための証拠を入手した。[ 52 ]
キーロガーはさまざまな手法でデータをキャプチャするため、対策の効果は様々であり、対策は特定のデータキャプチャ手法に対して効果的である必要があります。Microsoft による Windows 10 のキーロギングの場合、特定のプライバシー設定を変更することで無効にできる可能性があります。[ 53 ]オンスクリーンキーボードはハードウェアキーロガーに対して効果的です。透明性は一部のスクリーンロガーを無効化しますが、すべてではありません。フックベースのキーロガーのみを無効化できるアンチスパイウェアアプリケーションは、カーネルベースのキーロガーに対しては効果がありません。
キーロガープログラムの開発者は、効果が実証されている対策に対応するために、プログラムのコードを更新できる可能性がある。
アンチキーロガーは、コンピュータ上のキーロガーを検出するために特別に設計されたソフトウェアであり、通常はコンピュータ内のすべてのファイルをキーロガーのデータベースと比較し、隠されたキーロガーの存在を示す可能性のある類似点を探します。アンチキーロガーはキーロガーを検出するために特別に設計されているため、従来のウイルス対策ソフトウェアよりも効果的である可能性があります。一部のウイルス対策ソフトウェアは、状況によってはキーロガーが正当なソフトウェアとみなされる場合があるため、キーロガーをマルウェアとはみなしていません。[ 54 ]
ライブCDまたは書き込み保護されたライブUSBを使用してコンピュータを再起動することは、ソフトウェアキーロガーに対する有効な対策となり得ます。ただし、CDにマルウェアが含まれておらず、収録されているオペレーティングシステムがセキュリティ対策が施され、起動直後に感染しないよう完全にパッチが適用されていることが前提となります。異なるオペレーティングシステムを起動しても、ハードウェアまたはBIOSベースのキーロガーの使用には影響しません。
多くのアンチスパイウェアアプリケーションは、ソフトウェアベースのキーロガーを検出して隔離、無効化、または削除することができます。しかし、多くのキーロギングプログラムは状況によっては正規のソフトウェアであるため、アンチスパイウェアはキーロギングプログラムをスパイウェアやウイルスとして分類しないことがよくあります。これらのアプリケーションは、実行可能コードのパターン、ヒューリスティック、キーロガーの動作(フックや特定のAPIの使用など)に基づいて、ソフトウェアベースのキーロガーを検出できます。
ソフトウェアベースのアンチスパイウェアアプリケーションは、すべてのキーロガーに対して100%有効であることはできません。[ 55 ]ソフトウェアベースのアンチスパイウェアは、非ソフトウェアのキーロガー(例えば、キーボードに接続されたハードウェアキーロガーは、ソフトウェアベースのアンチスパイウェアアプリケーションよりも先に必ずキーストロークを受信します)を阻止することはできません。
アンチスパイウェアアプリケーションが使用する具体的な技術は、ソフトウェアキーロガーに対する有効性に影響を与えます。一般的に、権限の高いアンチスパイウェアアプリケーションは、権限の低いキーロガーを無効化できます。例えば、フックベースのアンチスパイウェアアプリケーションは、カーネルベースのキーロガーを無効化することはできません(キーロガーはアンチスパイウェアアプリケーションよりも先にキーストロークメッセージを受信するため)が、フックベースおよびAPIベースのキーロガーは無効化できる可能性があります。
ネットワークモニター(リバースファイアウォールとも呼ばれる)を使用すると、アプリケーションがネットワーク接続を試みるたびにユーザーに警告を発することができます。これにより、ユーザーはキーロガーが入力した情報を外部に送信するのを防ぐことができます。
自動フォーム入力プログラムは、ユーザーがキーボードを使って個人情報やパスワードを入力する必要性をなくすことで、キーロギングを防ぐことができます。フォーム入力プログラムは主にWebブラウザ向けに設計されており、チェックアウトページへの入力やユーザーのアカウントへのログインに使用されます。ユーザーのアカウント情報やクレジットカード情報がプログラムに入力されると、キーボードやクリップボードを使用することなく自動的にフォームに入力されるため、個人情報が記録される可能性が低くなります。しかし、コンピュータに物理的にアクセスできる人物は、オペレーティングシステム内の別の場所やネットワーク上で転送中の情報を傍受できるソフトウェアをインストールできる可能性があります。(トランスポート層セキュリティ(TLS)は、転送中のデータがネットワークスニファやプロキシツールによって傍受されるリスクを軽減します。)
ワンタイムパスワードを使用すれば、キーロガーなどによってログイン情報が攻撃者に漏洩したアカウントへの不正アクセスを防ぐことができます。これは、パスワードが使用されるとすぐに無効になるためです。この方法は、公共のコンピュータを使用する人には有効かもしれません。しかし、そのようなコンピュータをリモートで制御できる攻撃者は、被害者が認証情報を入力するのを待ち、セッションがアクティブな間に被害者に代わって不正な取引を実行することが可能です。
キーロガーによるアクセスコードの盗難を防ぐもう1つの一般的な方法は、認証コードからランダムに選択された数文字をユーザーに入力してもらうことです。たとえば、2番目、5番目、8番目の文字を入力するように求められる場合があります。誰かがユーザーを監視していたり、キーロガーを使用していたとしても、位置がわからなければコードから数文字しか取得できません。[ 56 ]
スマートカードやその他のセキュリティトークンを使用すると、キーロギング攻撃が成功した場合でも、リプレイ攻撃に対するセキュリティが向上する可能性があります。これは、保護された情報にアクセスするには、(ハードウェア)セキュリティトークンと適切なパスワード/パスフレーズの両方が必要になるためです。あるコンピュータで使用されたキーストローク、マウス操作、ディスプレイ、クリップボードなどを知っていても、攻撃者が保護されたリソースにアクセスするのに役立ちません。一部のセキュリティトークンは、ハードウェア支援ワンタイムパスワードシステムの一種として機能し、他のセキュリティトークンは暗号化チャレンジレスポンス認証を実装しており、ワンタイムパスワードと概念的に似た方法でセキュリティを向上させることができます。スマートカードリーダーとPIN入力用の関連キーパッドは、いわゆるサプライチェーン攻撃[ 57 ]によるキーストロークロギングに対して脆弱になる可能性があります。この攻撃では、攻撃者がカードリーダー/PIN入力ハードウェアをユーザーのPINを記録するハードウェアに置き換えます。
ほとんどのオンスクリーンキーボード( Windows XPに付属のオンスクリーンキーボードなど)は、テキストを入力するために通常のキーボードイベントメッセージを外部ターゲットプログラムに送信します。ソフトウェアキーロガーは、あるプログラムから別のプログラムに送信されたこれらの入力文字をログに記録できます。[ 58 ]
キーストローク干渉ソフトウェアも利用可能です。[ 59 ] これらのプログラムは、ランダムなキーストロークを導入することでキーロガーを欺こうとしますが、これは単にキーロガーが必要以上に多くの情報を記録する結果となります。攻撃者は、目的のキーストロークを抽出するというタスクを負いますが、このメカニズムのセキュリティ、特に暗号解読に対してどの程度耐えられるかは不明です。
Windows Vista以降、DLLを注入するソフトウェアにはUAC管理者権限が必要となり[ 60 ] 、すべてのドライバーには有効なデジタル署名が必要です。Windows 11以降ではセキュアブートが必要となり、セキュアブートが有効になっている場合はWHQL検証済みのドライバーのみが許可されます[ 61 ] 。Windows 11バージョン24H2以降では、スクリーンショットと画面録画のアプリ権限制御が追加されました。
画面上のキーボードと同様に、音声認識ソフトウェアもキーロガー対策として利用できます。これは、タイピングやマウス操作が一切不要であるためです。音声認識ソフトウェアを使用する際の最大の弱点は、ユーザーの音声処理後に認識されたテキストをターゲットソフトウェアに送信する方法にあるかもしれません。
多くのPDAや最近ではタブレットPCは、タッチスクリーン上のペン(スタイラスとも呼ばれる)の動きをコンピュータが理解できるテキストに正常に変換できる。マウスジェスチャーはこの原理を利用し、スタイラスの代わりにマウスの動きを用いる。マウスジェスチャープログラムは、これらのストロークをテキスト入力などのユーザー定義可能なアクションに変換する。同様に、グラフィックタブレットやライトペンもこれらのジェスチャーの入力に使用できるが、これらはあまり一般的ではなくなってきている。
音声認識における潜在的な弱点は、この技術にも同様に当てはまる。
多くのプログラムの助けを借りて、一見意味のないテキストを意味のあるテキストに展開することができ、ほとんどの場合、文脈に応じて展開されます。たとえば、Web ブラウザのウィンドウにフォーカスがある場合、「en.wikipedia.org」は展開されます。この手法の最大の弱点は、これらのプログラムがキーストロークをターゲット プログラムに直接送信することです。しかし、これは、以下に説明する「交互」手法を使用することで克服できます。つまり、ターゲット プログラムの応答しない領域にマウス クリックを送信し、意味のないキーを送信し、ターゲット領域 (たとえばパスワード フィールド) に別のマウス クリックを送信して、交互に切り替えます。
ログイン資格情報の入力とフォーカスウィンドウ内の別の場所での文字入力を交互に行うことで[ 62 ]、キーロガーが必要以上に多くの情報を記録する可能性がありますが、これは攻撃者によって簡単にフィルタリングされる可能性があります。同様に、ユーザーは入力中にマウスを使用してカーソルを移動できるため、記録されるキーストロークの順序が間違っています。たとえば、最後の文字から始まるパスワードを入力し、その後マウスを使用してカーソルを移動して各文字を入力する場合などです。最後に、キーボードを使用せずにコンテキストメニューを使用して、入力したテキストの一部を削除、切り取り、コピー、貼り付けすることもできます。パスワードの一部しかキャプチャできない攻撃者は、ブルートフォース攻撃を実行することを選択した場合、攻撃できるキー空間が大きくなります。
もう一つ非常によく似た手法として、選択したテキスト部分が次に入力されたキーに置き換えられるという性質を利用するものがあります。例えば、パスワードが「secret」の場合、「s」と入力し、次にダミーキー「asdf」を入力します。これらのダミー文字はマウスで選択でき、パスワードの次の文字「e」を入力すると、ダミー文字「asdf」が置き換えられます。
これらの手法は、キーストローク記録ソフトウェアがクリップボードやフォームで選択されたテキストを直接監視したり、キーストロークやマウスクリックが発生するたびにスクリーンショットを撮ったりできないという誤った前提に基づいています。しかし、一部のハードウェアキーロガーに対しては有効な場合があります。
ウィキメディア・コモンズにあるキーストローク記録に関連するメディア