סיסמה

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש

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

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

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

מספר זיהוי אישי (PIN)[עריכת קוד מקור | עריכה]

לוח מקשים של כספומט משמש להקשת מספר זיהוי אישי

Personal Identification Number הוא מספר זיהוי אישי קצר (בדרך כלל בן ארבע ספרות), המשמש בעיקר במסופי משיכת מזומנים באמצעות כרטיס משיכה או כרטיס אשראי. מספר PIN, בדרך כלל מהווה רק חלק מההגנה, כאשר אמצעי ההגנה הנוסף הנו הכרטיס עצמו, שמכיל פס מגנטי או מעגל משולב, שבו צרוב מידע נוסף. מידע זה יחד עם מספר הזיהוי האישי מאפשרים למערכת לאמת את הכרטיס ואת זהות בעליו. היות שהמספר האישי קצר, בעיקר כדי לאפשר את זכירתו, דרוש אמצעי הגנה נוסף משום שניחוש המספר קל מדי. די לנסות במקרה הגרוע 10,000 ניסיונות בלבד לפני שמוצאים את המספר הסודי. על כן המערכות מגבילות את מספר האפשרויות להקלדת מספר שגוי. אם המשתמש הקיש מספר שגוי שלוש פעמים, הכרטיס נבלע.

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

סיסמת גישה למשאבי מחשב[עריכת קוד מקור | עריכה]

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

סיסמה קונבנציונלית[עריכת קוד מקור | עריכה]

מסך "כניסה לחשבון" באתר ויקיפדיה העברית, שבו יש להקיש זיהוי משתמש וסיסמה

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

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

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

כללי סיסמה[עריכת קוד מקור | עריכה]

Postscript-viewer-shaded.png ערך מורחב – חוזק סיסמאות

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

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

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

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

ניפוח סיסמה (Salting)[עריכת קוד מקור | עריכה]

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

משפט-סיסמה (Pass-phrase) ומפתח-סיסמה (Passkey)[עריכת קוד מקור | עריכה]

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

מפתח-סיסמה הוא סיסמה שמומרת בעזרת פונקציה מוגדרת למפתח הצפנה סודי, מאחר שהסיסמה כשלעצמה קטנה מדי מכדי לשמש כמפתח הצפנה. מפתח הצפנה סימטרי טיפוסי צריך להיות בגודל של 64 סיביות לפחות (מפתח AES המינימלי הוא בגודל 128 סיביות). לבן אנוש קשה לזכור רצף ספרות באורך כזה, לצורך המחשה מפתח של 64 סיביות יכול להגיע לרצף של 20 ספרות עשרוניות. הרעיון הוא להפיק מפתח הצפנה באורך הדרוש מתוך סיסמה קצרה, בעזרת פונקציה בטוחה כלשהי, בדרך כלל פונקציית גיבוב בטוחה כמו SHA.

בטיחות[עריכת קוד מקור | עריכה]

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

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

סיסמה חד-פעמית (One time password)[עריכת קוד מקור | עריכה]

הרעיון של סיסמה חד פעמית (OTP) הוא להתמודד עם האיומים האמורים, ציתות או ניחוש הסיסמה ושימוש חוזר (Reply attack) בה, על ידי שימוש בסיסמה חד-פעמית בכל תהליך אימות. לאחר השימוש בה הופכת הסיסמה לחסרת תועלת לתוקף פוטנציאלי. ישנם כמה דרכים ליישום סיסמה חד פעמית:

  1. רשימה משותפת. המשתמש והמערכת מחזיקים ברשימת סיסמאות משותפת, כל סיסמה מתאימה להתקשרות אחת בלבד. בכל פעם שהמשתמש נדרש לזהות את עצמו, הוא חושף את הסיסמה הבאה ברשימה. לשם כך מנהלים מונה למעקב אחר סיסמאות שכבר השתמשו בהן. חסרונה בכך שיש צורך לנהל רשימה גדולה של סיסמאות בשני הצדדים. וכן יש צורך להגן על הסיסמאות באמצעים כלשהם מפני חשיפה.
  2. סיסמה חד-פעמית מבוססת פונקציית הצפנה. שיטה שבה המשתמש והמערכת משתפים ביניהם גרעין התחלתי (seed) סודי. כאשר עם כל תהליך אימות המשתמש מייצר ומשדר סיסמה חדשה מתוך הסיסמה האחרונה שהשתמש בה באמצעות פונקציית הצפנה כלשהי, כאשר המפתח להצפנה הינו הסיסמה הקודמת. חסרונה בכך שהיא דורשת תהליך הצפנה יקר, מלבד העובדה ששימוש בהצפנה מגביל את המערכת מבחינה חוקית.
  3. סיסמה חד-פעמית מבוססת פונקציה חד-כיוונית. שיטת למפורט לסיסמה חד-פעמית: המשתמש מתחיל בסוד ראשוני \ s המשותף לו ולמערכת. עם כל תהליך אימות, המשתמש מייצר סיסמה חדשה מתוך הסיסמה הקודמת, באמצעות פונקציית גיבוב בטוחה: \ H(s), H(H(s)), H(H(H(s))),... וכן הלאה. המשתמש משדר את הסיסמה החדשה יחד עם מספר סידורי למעקב. תהליך זה מבוצע מספר מוגבל של פעמים שלאחריהם מתחילים עם \ s חדש. בשיטה זו יש צורך "לזכור" רק את הסיסמה האחרונה שהייתה בשימוש. שיטה זו עדיפה על פני האחרות בכך שהיא מספקת רמת בטיחות גבוהה מבלי צורך בתחזוקת רשימת סיסמאות גדולה וכן ללא צורך בתהליך הצפנה כלשהו.

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

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

האם תם עידן הסיסמאות?[עריכת קוד מקור | עריכה]

מחקרים שנעשו לאחרונה על ידי חברת RSA וגורמים נוספים, מעידים כי שיטות האימות המבוססות על סיסמה הגיעו לקיצן. גופים רבים ביניהם מיקרוסופט, הגיעו למסקנה כי סכמות סיסמה מספקות הגנה חלשה ביותר ולעתים אף בלתי מספקת. בתקופה אחרונה החל מעבר לטכנולוגיה של "אימות חזק" המבוסס על פרוטוקול אתגר-מענה (Challenge response) וכן על כרטיסי שבב ייעודיים כגון SecureID של RSA. פיתוח טכנולוגי חדש של רכיב מוגן מפני מגע ומאפשר אימות יעיל ובטוח באמצעות שיטת סיסמה חד פעמית (OTP) האמורה. הממשל האמריקאי יש תקן CAC הדורש אימות שלא רק על ידי סיסמא. כיום רבים סבורים כי המעבר לאימות חזק בלתי נמנע וכי השימוש בסיסמאות ילך ויפחת עם הזמן, כאשר במקומן יבואו שיטות חדשות, חכמות יותר.

סיסמה להעברת מסר סודי באמצעי תקשורת גלויים[עריכת קוד מקור | עריכה]

Postscript-viewer-shaded.png ערך מורחב – מילת קוד

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

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

קישורים חיצוניים[עריכת קוד מקור | עריכה]