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

הגנה יכולה להתבצע בזמן התקנת התוכנה או בזמן הריצה שלה.

בין השיטות הנפוצות ביותר
------------------------

### הגנה בזמן התקנה

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

### הגנה באמצעות מפתח רישוי

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

### הגנה מקוונת

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

### הגנה באמצעות פלג הגנה

בהגנה זו התוכנה מתקשרת עם רכיב חומרתי (מספר סידורי אלקטרוני). בעבר פלג הגנה שהתחבר אל יציאת המדפסת, וכיום דונגל המתחבר ליציאת USB. במידה והתוכנה איננה מוצאת את הרכיב, היא לא מאפשרת למשתמש להפעיל את ההרצה. שיטה זו נועדה להגן על תוכנות קצה יקרות. חסרונותיה של שיטה זו שקיים רכיב שמעמיס עלות נוספת על התוכנה. יש לשלוח למשתמש רכיב פיסי, ולכן היא אינה מתאימה כל כך לקניית תוכנה באינטרנט. כמו כן, משתמשים אינם אוהבים שיטה זו מכיוון שהיא מעמיסה על החיבורים של המחשב, ולכן היא מיועדת רק לתוכנות הכרחיות. יש לציין כי גם הגנה באמצעות פלג הגנה, איננה הרמטית וניתן לפרוץ אותה. הגנה חזקה יותר היא הכללת חלק מקוד התוכנה בתוך פלג ההגנה, אבל שיטה זו איננה נפוצה. קיימות בעולם מספר חברות המתמחות ביצירת דונגלים להגנת תוכנה בהן SafeNet, אלאדין, Matrix Software License Protection וCopy Protection.

### הגנה באמצעות תקליטור

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

### הגנה באמצעות דיסקט

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

### הגנה באמצעות ערפול קוד

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

פריצת הגנות
-----------

כיום ניתן לפרוץ את רוב ההגנות. בשוק השחור של תוכנות המחשבים ניתן למצוא גונבות של רוב התוכנות המוגנות. ישנם מספר כלים תכנותיים שעוזרים לפרוץ את ההגנות כמו דיבגרים וכלים להנדוס לאחור לשפת אסמבלר. בדרך כלל הקראקרים מנסים למצוא את נקודות הבדיקה בתוכנה ולעקוף אותן או להחזיר ערכי אמת בבדיקות אלו, והמגינים מנסים לטשטש את נקודות הבדיקה ואף לפזר אותן במספר רב של מקומות בתוכנה. כמו כן ניתן לחסום באופן חלקי תוכנות אלו, למשל לנסות למנוע מהתוכנה לרוץ במוד של דיבג. כמו כן, ניתן (בקומפליירים מסוימים) לשמור את חותמת קובץ ההרצה (hash code) בתוך קוד ההרצה עצמו, ולהוסיף תנאי שבמידה שהקובץ עבר שינוי לא להריץ את התוכנה.

ביקורת על הגנות
---------------

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

ראו גם
------

* פיראטיות תוכנה