" crossorigin/>
More

    Hashing מתייחס לתהליך הפקת פלט בגודל קבוע מקלט בגודל משתנה.
    זה נעשה באמצעות נוסחאות מתמטיות המכונות פונקציות hash (מיושמות כאלגוריתמי hashing).

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

    פונקציות Hash קונבנציונאליות וקריפטוגרפיות הן דטרמיניסטיות.

    (דֵּטֶרְמִינִיזְם היא השקפה פילוסופית לפיה כל מאורע בעולם, פעולות, החלטות או מחשבות אנושיות נקבעים באופן בלעדי על ידי אירועים קודמים)

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

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

    כיצד Hashing עובד ?

    כיצד פועלת פונקציית Hashing ?

    פונקציות hash שונות ייצרו תפוקות בגדלים שונים, אך גדלי הפלט האפשריים עבור כל אלגוריתם hashing תמיד קבועים.

    לדוגמא, אלגוריתם SHA-256 יכול לייצר פלט של 256 ביט בלבד, בעוד שה- SHA-1 תמיד ייצור עיכול של 160 ביט.
    לשם המחשה, בואו נפעיל את המילים "Binance" ו- "binance" דרך אלגוריתם הגיבוב של SHA-256 (זה המשמש בביטקוין).

    SHA-256

    Output (256 bits)

    Input

    f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191

    Binance

    59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2

    binance

    שים לב ששינוי קל (מעטפת האות הראשונה) הביא לערך hash שונה לחלוטין.
    אך מכיוון שאנו משתמשים ב- SHA-256, לפלטים תמיד יהיה גודל קבוע של 256 סיביות (או 64 תווים) – ללא קשר לגודל הקלט. כמו כן, לא משנה כמה פעמים נעביר את שתי המילים דרך האלגוריתם, שתי הפלטות יישארו קבועות.

    לעומת זאת, אם נפעיל את אותן תשומות דרך אלגוריתם הגיבוב של SHA-1, יהיו לנו התוצאות הבאות:

    SHA-1

    Output (160 bits)

    Input

    7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1

    Binance

    e58605c14a76ff98679322cca0eae7b3c4e08936

    binance

    יש לציין כי ראשי התיבות SHA מייצגים אלגוריתמים של Hash. הכוונה היא לקבוצת פונקציות Hash קריפטוגרפיות הכוללות את האלגוריתמים SHA-0 ו- SHA-1 יחד עם קבוצות SHA-2 ו- SHA-3. ה- SHA-256 הוא חלק מקבוצת SHA-2, יחד עם SHA-512 וריאציות אחרות. נכון לעכשיו, רק קבוצות SHA-2 ו- SHA-3 נחשבות מאובטחות.

    למה הם חשובים?

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

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

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

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

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

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

    פונקציות hash קריפטוגרפיות

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

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

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

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

    • עמידות בפני התנגשות (Collision resistance) : בלתי אפשרי למצוא שתי כניסות נפרדות המייצרות את אותו חשיש כמו הפלט.
    • עמידות לפני תמונה (Preimage resistance): בלתי אפשרי "להחזיר" את פונקציית הHash (מציאת הקלט מפלט נתון).
    • עמידות לפני תמונה שנייה (Second-preimage resistance) : בלתי אפשרי למצוא כל קלט שני שמתנגש בקלט שצוין.
    עמידות בפני התנגשות - Collision resistance

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

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

    בין האלגוריתמים השונים של SHA, קבוצות SHA-0 ו- SHA-1 כבר אינן מאובטחות מכיוון שנמצאו התנגשויות.
    נכון לעכשיו, קבוצות SHA-2 ו- SHA-3 נחשבות עמידות בפני התנגשויות.

    עמידות לפני תמונה - Preimage resistance

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

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

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

    עמידות לפני תמונה שנייה - Second-preimage resistance

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

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

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

    Mining

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

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

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

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

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

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

    לסיכום

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

    הישאר איתנו בלופ

    המדריכים האחרונים שלנו

    - Advertisement - spot_img

    אולי תאהב גם