רישום הקשות

רישום הקשות (באנגלית: Keystroke logging או פשוט keylogging) היא שיטה לזיהוי ורישום המקשים שנלחצו על ידי המשתמש, סדר ההקשה עליהם ורווחי הזמן שבין ההקשות. בעבר הכוונה הייתה אך ורק להקשות במקלדת, ומכאן שמה, אולם כיום הכוונה היא גם להקלקות בעכבר. שימוש לגיטימי ברישום מקשים ניתן לראות למשל במסגרת לימודי תקשורת אדם-מחשב, אך ניתן לנצל את רישום ההקשות למטרות זדוניות, למשל לשם ציתות או הקלטת סיסמאות.

==שימושים==
קיימים שימושים רבים לשיטה זו, ורובם נוגעים לצרכים הדורשים מעקב אחר שגרת המשתמש:
*הבנת אופן פעולתו של המשתמש בבואו לתפעל תוכנה מסוימת כדי להפיק תרחישי שימוש אפשריים בתוכנה.
*ניתוח מאוחר של תקלות במערכות ממוחשבות. 
*איסוף סטטיסטיקות על הפרודוקטיביות של העובדים במשרות פקידות מסוימות.
*אבחון פוטנציאל לפגיעה על ידי פציעות הקלדה וצורך במקלדת חליפית מונעת פציעה.
*איתור שימוש זדוני בשיטות רישום הקשות בקרב רוגלות וסוסים טרויאנים רבים, המשתמשים בנתונים אלו על מנת לחלץ שמות משתמשים וסיסמאות שהוקשו על המחשב עליו הם רצים. בנתונים הנאספים נעשה לרוב שימוש עברייני כמו פריצה לחשבונות בנק ושליחת דואר זבל אלקטרוני. נוזקה SpyEye ניצלה שיטה זו לגנבת סכומים משמעותיים מבנקים. יוצרי הנוזקה נשפטו לתקופות מאסר ממשושכות.

==מימושי רשם הקשות==
קיימות תוכנות רבות המממשות רישום הקשות, וחלקן אף זמינות ברשת לכל דורש. ניתן לסווג את השיטות הקיימות היום למימוש רישום הקשות לשתיים: מימושים באמצעות חומרה ייעודית ומימושים מבוססי תוכנה. יחד עם זאת, קיימים גם מימושים אזוטריים יותר דוגמת רשם הקשות אקוסטי המתבסס על ניתוח דגימות שמע כדי לזהות את מיקום המקשים שנלחצו. להלן השיטות העיקריות למימוש רשמים:
* רשם הקשות מקומי מבוסס תוכנה - אלו הן תוכנות המותקנות על המחשב ובאמצעים שונים מזהים ורושמים את ההקשות שנקלטו. תוכנות אלו מתבססות על מנגנונים שונים, בדרך כלל השייכים למערכת ההפעלה. ניתן לחלק את מנגנונים אלו למספר קטגוריות:
** רשמי הקשות הרצים בליבה של מערכת ההפעלה. רשמים אלו בדרך כלל קשים מאוד לכתיבה שכן הם דורשים התאמה צמודה למערכת ההפעלה ואיכות קוד גבוהה ביותר, אך מאידך גם קשים מאוד לאיתור, במיוחד עבור תהליכים ב-User mode. רשמים אלו מבוססים לרוב על Rootkit שחותר תחת הליבה של מערכת ההפעלה ומשם משיג גישה לחומרה עצמה (המקלדת והעכבר). 
** רשמי הקשות מבוססי Hook מתחברים לפונקציות של מערכת ההפעלה הנקראות בכל פעם שמקש נלחץ, ולכן הרשם מקבל גם הוא את המידע על ההקשה ושומר אותו. 
** שיטות פסיביות נוספות מתבססות על שימוש בפונקציות של מערכת ההפעלה כגון GetAsyncKeyState ו-GetForegroundWindow כדי לקבל במשיכה מידע על מצב המקלדת. על אף שרשמים המתבססים על שיטות אלו מפספסים מדי פעם מקש זה או אחר כתלות בתדירות הדגימה, הם גם הרשמים הפשוטים ביותר לפיתוח. יחד עם זאת, בשל תדירות הדגימה הנדרשת הם גם צרכני CPU כבדים.
* רשם הקשות מבוסס תוכנה בעל נגישות מרחוק - אלו הם רשמי הקשות מקומיים מבוססי תוכנה בעלי יכולת תקשורת עם מחשבים אחרים על מנת לרכז את הנתונים הנאספים להמשך הניתוח. רשמים אלו עושים שימוש בתקשורת FTP, HTTP או אפילו דואר אלקטרוני על מנת לשלוח את המידע הלאה.
* רשם הקשות מבוסס חומרה הוא רשם הכולל מקלדת ייעודית או רכיב המתחבר למקלדת ורושם את ההקשות שבוצעו בה. מדובר ברכיב החיצוני למחשב ויש להתקינו ידנית על מנת שיתחיל את פעולתו. קיימים גם רשמי הקשות מבוססי חומרה המשדרים את הנתונים שנאספו על ידם לרכיב מרכזי אחר באמצעות שידורים אלחוטיים.
* רשם הקשות אלחוטי הוא רשם הקשות המשמש לרישום הקשות שבוצעו במקלדת אלחוטית. הרשם מזהה את האות המשודר מהמקלדת האלחוטית ורושם את המקשים שנלחצו. 
* רשם הקשות אקוסטי הוא רשם הקשות המבסס את זיהוי המקשים שלו על ניתוח השמע בסביבת המקלדת. כדי שרשם כזה יעבוד, יש לאמנו זמן ממושך, עד שהוא מאפיין את החתימה האקוסטית של כל אחד מהמקשים.
* רשם הקשות אלקטרומגנטי זהה לרשם ההקשות האקוסטי, אלא שהוא מבסס את זיהוי המקשים על ניתוח החתימה האלקטרומגנטית של כל מקש.

==מניעת רישום הקשות==
כיום אין שיטה טובה למניעת רישום הקשות ומרבית השיטות הקיימות עוקפות את רשם ההקשות או מבלבלות אותו ולא מתמודדות איתו ישירות על ידי מיסוכו מהנתונים הרגישים. ניתן לבלבל את רשם ההקשות באמצעים שונים או לעקוף אותו על ידי ביטול הצורך בשימוש במקלדת או על ידי הסרת רשם ההקשות מהמחשב. 

===הסרת רשם ההקשות===
קיימות דרכים רבות לבצע זאת. החל מבקרה אישית של רשימת התהליכים הרצים על המחשב, דרך שימוש בתוכנה נגד-רוגלות (anti spyware) ובחומות אש וכלה בתוכנות לניטור הרשת והתעבורה היוצאת מהמחשב. 

===ביטול הצורך במקלדת===
ביטול הצורך במקלדת אינו אפשרי לחלוטין, ומהווה פתרון אלטרנטיבי רק בעת הקשת נתונים רגישים דוגמת שם משתמש וסיסמה. לצורך כך קיימות תוכנות למילוי אוטומטי של טפסים בדפדפן, המונעות מהמשתמש את הצורך להקיש שוב ושוב את סיסמתו. כמו כן ניתן להשתמש במקלדות מסך, שהן מקלדות המופיעות כחלון על המסך ויש להקליק עליהן עם העכבר במקום הקשה פיזית על המקלדת. לרשם ההקשות אין שום דרך לזהות את המקשים שהוקשו במצב זה. גם שימוש במערכת זיהוי קול מאפשרות עקיפה של המקלדת.

===דרכים נוספות===
שימוש בסיסמה חד פעמית הופך את הסיסמה לנתון לא רגיש שאין סכנה בהעברתו לגורם אחר. דרך נוספת היא להטעות את רשם ההקשות תוך שימוש במקלדת בעלת פריסה לא סטנדרטית של המקשים, זאת בהסתמך על כך שרשם ההקשות מניח שפריסת המקלדת היא הסטנדרטית. באופן זה גם אם רשם ההקשות פעיל, אין משמעות לנתונים אותם הוא אוסף. ניתן גם להתמודד עם הרשם בדרכים לא טכנולוגיות:
* במהלך כתיבת נתון רגיש, סיסמה למשל, הקשת אותיות אקראיות בחלון הפעיל מחוץ לתיבת הסיסמה, יטעו את רשם ההקשות. זאת מפני שלרשם ההקשות אין דרך לדעת מה הוקש בתוך תיבת הסיסמה ומה הוקש מחוץ לה.
* במהלך כתיבת הנתון הרגיש, נניח המילה סיסמה, ניתן להכניס בין האותיות מחרוזות אקראיות, לסמן אותן עם העכבר ולהמשיך את הכתיבה של הנתון. המחרוזת האקראית תימחק ולרשם ההקשות לא תהיה דרך לדעת מה הסיסמה הנכונה שהוקלדה.

==קישורים חיצוניים==

* [http://www.keylogger.org/monitoring-software-review/tableview.html תוכנות רישום ההקשות השוואה] עד תאריך השוואה של רוב תוכנות רישום ההקשות המסחרי הפופולרי.

==הערות שוליים==

קטגוריה:אבטחת מחשבים
קטגוריה:פשעי מחשב