אינטרנט ישראל
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
ראשי » פיתוח אינטרנט » יסודות בתכנות » התקפת brute force מילונית

התקפת brute force מילונית

רן בר-זיק מאי 21, 2018 7:07 am 3 תגובות

כך מייעלים התקפת brute force – משתמשים במילון (או יותר נכון תזאורוס אבל אף אחד לא יודע מה זה)

כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.

במאמר קודם דיברנו על brute force ואיך מחשבים אנטרופיה. לא, לא צריך להכנס ללחץ – אפשר לקרוא את המאמר הקודם שכתבתי כדי להזכר.
בסוף המאמר היתה המלצה להשתמש בסיסמה ארוכה במיוחד אם אנו רוצים להגן עליה מהתקפות של brute force. למה? כיוון שאם אני משתמש באלגוריתם נאיבי במיוחד על מנת לפצח את הסיסמה – כזה שמתחיל ב-a עובר ל-b וכך הלאה (מגיע ל-aa ואז ab וכו' כפי שהסברתי במאמר הקודם) – פיצוח ססמה ארוכה במיוחד הופך לכמעט בלתי אפשרי.
ואז חטפתי מהמגיבים – למה? כי השתמשתי בגישה נאיבית מאוד לפיצוח. במאמר הזה אני מספר על גישה אחרת להתקפה שיכולה לצמצם דרמטית את הזמן הנדרש לססמאות ארוכות.
בואו ונדגים. נניח שיש לי ססמה מאוד ארוכה:

"this is a very long password"

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

log(26) * 25 = 117.51 

מספר הניסיונות המקסימלי שאדרש אליו הוא 2 בחזקת 117.51 שזה המון. האם יש דרך לצמצם את זה? ובכן. בוודאי שיש. אם אני יוצא מנקודת הנחה שאני משתמש במילים באנגלית… אני יכול לצמצם מאוד את כמות הניחושים. איך זה עובד?
ראשית, אצטייד בתזאורוס, בו יש את כל המילים בשפה האנגלית. האלגוריתם שלי יצטרך לעבור מילה מילה.
האם מדובר במילה apple? לא? מה עם banana? לא? מה עם cucumber? גם לא? ככה נעבור על כל המילים. יש 171,476 מילים בשפה האנגלית בסך הכל. לא הצליח? סימן שהמשתמש שלנו השתמש בסיסמה עם יותר ממילה אחת. ועכשיו ננסה: האם הסיסמה היא:

apple apple

או

apple banana

או

apple cucumber

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

Log2(26)

ואז להכפיל באורך הסיסמה, אני צריך לעשות

log2(171,476)

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

log2(171,476) * 5

וזה יוצא 86.93 וזה נמוך משמעותית ביותר מ-117.51, שזו רמת האנרופיה בביטים אם אני משתמש בגישה הנאיבית. להתקפה הזו קוראים התקפה מילונית. נכון, תזאורוס הוא לא מילון אבל אנחנו אנשים פשוטים.
אבל אפשר להוריד עוד את רמת האנטרופיה. יש 171,476 מילים לפי מילון אוקספורד, הכולל ברשימת המילים מילים מאוד איזוטריות שרוב האנשים לא מכירים. אם נצא מנקודת הנחה שרוב האנשים ישתמשו במילים פשוטות כמו password, long, the, a או very ולא במילים מעניינות כמו erinaceous למשל. אם ניקח רשימה של מילים פשוטות, נוכל להוריד את האנטרופיה עוד יותר. אם למשל שימוש בהתקפת מילון של 20,000 מילים לסיסמה על חמש אותיות:

log2(20000 ) * 5

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

happy unicorn day 11/03/1950

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

log2(20000 ) * 5

יהיה לנו

log2(20050 ) * 5

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

this is ahla bahla shel sisma

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

pedo mellon a minno speak friend and enter

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

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

Hey, @LeumiDigital, these sorts of password requirements are unacceptable in 2018! 6-12 characters, only a-z, A-Z and/or 0-9 and must include both types in the first 6 characters? How is this still a thing? pic.twitter.com/U7kCUdeZ4v

— Omer van Kloeten (@omervk) May 20, 2018

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

pedo mellon a minno speak friend and enter

או סיסמה נוסח:

AbCdE1

?

אתם מוזמנים לחשב את הביטים של האנטרופיה בשני המקרים ולראות מה יותר בטוח.

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

כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.
אבטחת מידע

3 תגובות

  1. אילן הגב מאי 21, 2018 בשעה 1:26 pm

    אפרופו במקום תעתיק לדוברי עברית יש אפשרות אפילו יותר רנדומלית להשתמש באותיות לועזיות כפי שמופיעות האותיות בעברית (קצת קשה המכשיר נייד).
    לדוגמה thki זה מיקום האותיות של השם שלי.

    • rugh הגב יוני 3, 2018 בשעה 8:38 am

      הרעיון של thki מצוין – אבל באמת קשה יותר במכשיר נייד

  2. אביאל הגב מאי 22, 2018 בשעה 12:34 pm

    תותח.

    כמו תמיד המאמרים שלך מאוד מעניינים ומרתקים

השארת תגובה

ביטול

ללמוד ג'אווהסקריפט בעברית

ללמוד לתכנת ג'אווהסקריפט בעברית שגייס יותר משלוש מאות אלף שקל ולמעלה מ-2000 תומכים - בואו ללמוד עכשיו איך לתכנת.

רשימת הנושאים
  • מדריכים
    • ריאקט
    • טייפסקריפט
    • ECMAScript 6
    • ES20XX
    • Node.js
    • Express
    • רספברי פיי
    • Babel
    • docker
    • MongoDB
    • Git
    • לימוד MySQL
    • SASS
    • jQuery
    • CSS3
    • HTML 5
    • SVN
    • LESS
  • פיתוח אינטרנט
    • פתרונות ומאמרים על פיתוח אינטרנט
    • jQuery Scripts
    • jQuery למתקדמים
    • יסודות בתכנות
    • נגישות אינטרנט
  • חדשות אינטרנט
  • מידע כללי על אינטרנט
    • רשת האינטרנט
    • בניית אתרי אינטרנט
  • rss logo

    לכל המאמרים

    לכל המאמרים שפורסמו באינטרנט ישראל משנת 2008 ועד עכשיו.
  • rss logo

    RSS Feed

    משתמשים בקורא RSS? אם כן, עקבו אחרי אינטרנט ישראל באמצעות פיד ה-RSS!
    מה זה RSS?
  • Twitter logo

    עקבו אחרי בטוויטר

    בחשבון הטוויטר שלי אני מפרסם עדכונים מהירים על חדשות בתחום התכנות והיזמות, התרעות על מצבי חירום ורכילות בוערת על תחום הווב.
    מה זה טוויטר?
  • facebook like image

    ערוץ הטלגרם של אינטרנט ישראל

    בערוץ הטלגרם של אינטרנט ישראל אני מפרסם את הפוסטים של באתר וכן עדכונים טכנולוגיים נוספים.
    מה זה טלגרם?
  • github logo

    הפרויקטים שלי בגיטהאב

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

כל הזכויות שמורות לרן בר-זיק ולאינטרנט ישראל | מדיניות הפרטיות של אתר אינטרנט ישראל | אתר אינטרנט ישראל נגיש לפי תקן WCAG 2.0 AA | הצהרת הנגישות של האתר | אבטחת מידע ודיווח על בעיית אבטחת מידע

גלילה לראש העמוד