מה ש-Bitcoin נותן לנו הוא הבטחה חזקה: התוכנה תתבצע בדיוק כפי שצוין.
אנדראס מ. אנטונופולוס
קריפטוגרפיה עם מפתח ציבורי/פרטי
קריפטוגרפיה היא הפרקטיקה של הפיכת מידע לסוד שרק האנשים הנכונים יכולים לקרוא.
- הצפנה היא התהליך שבו מידע הופך לצורה מקודדת כך שרק מי שמחזיק במפתח הנכון יוכל לקרוא אותו.
- פענוח הוא התהליך שבו מחזירים את המידע המקודד לצורה קריאה.
בקריפטוגרפיה מסורתית, שני אנשים שרוצים לתקשר בפרטיות חייבים קודם לשתף ביניהם מפתח סודי, בדומה לסיסמה משותפת. אחד מהם משתמש במפתח הזה כדי להצפין את ההודעה לפני השליחה, והאחר משתמש באותו מפתח כדי לפענח ולקרוא אותה.
הבעיה במערכת הזו היא ששני האנשים חייבים כבר לשתף ביניהם את המפתח הסודי. אם מישהו אחר מקבל גישה למפתח הזה, הוא יכול לקרוא כל הודעה שתיורט.
Bitcoin פותר את הבעיה הזו באמצעות גישה שונה שנקראת קריפטוגרפיה עם מפתח ציבורי, שבה המשתמשים לא צריכים לשתף מפתחות סודיים מראש.
קריפטוגרפיה עם מפתח ציבורי/פרטי פותרת את בעיית שיתוף הסודות. במקום לשתף סיסמה, לכל אדם יש שני מפתחות: מפתח ציבורי ומפתח פרטי.
- המפתח הציבורי יכול להיות משותף עם כל אחד.
- המפתח הפרטי חייב תמיד להישמר בסוד.
אם יוסי רוצה לשלוח משהו לאריאל, הוא יכול להשתמש במפתח הציבורי של אריאל. רק אריאל יוכל לפתוח את זה בעזרת המפתח הפרטי שלו. גם אם מישהו יירט את ההודעה, הוא לא יוכל לקרוא או להשתמש בה בלי המפתח הפרטי.
ב-Bitcoin, המערכת הזו משמשת ליצירת חתימות דיגיטליות. חתימה דיגיטלית מוכיחה שבעל המפתח הפרטי אישר את העסקה, בדומה לחתימה על מסמך. זה מה שמאפשר לעסקאות Bitcoin להיות מאובטחות וניתנות לאימות בלי להסתמך על צד שלישי.
עסקאות Bitcoin כוללות העברת בעלות על ביטקוין מכתובת אחת לאחרת.
הצפנה משמשת כדי להבטיח שרק הבעלים האמיתי של הביטקוין מוסמך לשלוח את כספו למישהו אחר. זה מבטיח שהרכוש שלהם מוגן מפני גורמים זדוניים.
כצעד הגנה נוסף, כל עסקת Bitcoin מקבלת אוטומטית חתימה דיגיטלית ייחודית. החתימה הדיגיטלית הייחודית הזו מופעלת על ידי טכנולוגיה חסינת-שיבוש שעוזרת לרשת לוודא שהבעלים האמיתי של הביטקוין, ולא מישהו אחר, הוא זה ששלח אותם.
לכל משתמש יש שני מפתחות: מפתח פרטי, אשר נשמר בסוד, ומפתח ציבורי שיכול להיות משותף עם אחרים. המפתח הפרטי משמש כאמצעי זיהוי והוכחת בעלות, ומאשר: "הכתובת הזו שייכת לי ויש לי שליטה עליה."
איך עסקת Bitcoin עובדת
- יצירת העסקה: משתמש יוזם עסקת Bitcoin על ידי ציון פרטים כמו כתובת הנמען וכמות הביטקוין שיש לשלוח.
- יצירת חתימה דיגיטלית: השולח יוצר חתימה דיגיטלית ייחודית באמצעות המפתח הפרטי. חתימה זו היא קוד ייחודי שמאמת את אמיתות העסקה.
- שידור העסקה: העסקה החתומה משודרת לרשת Bitcoin, ומציינת את הכוונה להעביר בעלות על ביטקוין מהשולח לנמען.
- אימות ברשת: צמתים ברשת Bitcoin מקבלים את העסקה ומשתמשים במפתח הציבורי כדי לאמת את האותנטיות של החתימה של העסקה. במקביל, הם משתמשים במפתח הציבורי כדי לאמת את החתימה הדיגיטלית.
- אישור ברשת הביטקוין: אם האימות מצליח, העסקה תתווסף לפנקס, אשר משמש כרשומה מאובטחת ושקופה של כל העסקאות. לאחר האישור, הבעלות על הביטקוין מועברת באופן רשמי מהשולח למקבל.
חתימה דיגיטלית, שנוצרה עם המפתח הפרטי של השולח, מוכיחה כי העסקה אושרה על ידי בעל הביטקוין. רשת הביטקוין יכולה אז לאמת הוכחה זו ולרשום את העסקה.
הסבר על גיבוב (Hashing)
אנא אל תיבהלו מהמונחים הטכניים ומהמושגים המתמטיים בהמשך. אנחנו מבינים שלא כולם אוהבים מתמטיקה, אבל אולי תפתיעו את עצמכם ותגלו שגם את הרעיונות המורכבים ביותר אפשר להבין עם מעט מאמץ.
פונקציה היא כמו מכונה שלוקחת מידע והופכת אותו למשהו חדש. המידע שאתם נותנים לפונקציה הוא הקלט. המידע החדש שהפונקציה יוצרת הוא הפלט. פונקציות עוזרות למחשבים לבצע משימות ולפתור בעיות.
מהי פונקציה?
פונקציה היא סט של הוראות שלוקח קלט ומפיק פלט. אפשר לחשוב על זה כמו מתכון: אתם עוקבים אחרי השלבים עם מרכיבים מסוימים, ותמיד מקבלים תוצאה צפויה.
בביטקוין, פונקציות משמשות לעיבוד ואימות עסקאות. כאשר מישהו שולח ביטקוין, פונקציות קריפטוגרפיות עוזרות לבדוק שהעסקה תקפה, לאשר שלשולח יש מספיק יתרה, ולעדכן את היתרות בפנקס הביטקוין. לאחר האימות והוספתה לבלוק, העסקה הופכת לחלק מהרשומה הקבועה בבלוקצ'יין.
מהי פונקציה חד-כיוונית?
פונקציה חד-כיוונית היא סוג מיוחד של פונקציה שקל לחשב בכיוון אחד אך קשה מאוד להפוך. לדוגמה, לערבב מרכיבים לשייק זה קל, אבל אי אפשר להפריד את השייק חזרה למרכיבים המקוריים.
האבטחה של ביטקוין נשענת על פונקציות חד-כיווניות. הן משמשות בקריפטוגרפיה של מפתחות ציבוריים ופרטיים, ומאפשרות לאנשים לשתף מפתח ציבורי תוך שמירה על סודיות המפתח הפרטי. למרות שהמפתח הציבורי גלוי, אי אפשר להסיק ממנו את המפתח הפרטי. זה מה שמבטיח את ביטחון העסקאות בביטקוין.
מהי פונקציית גיבוב (Hash)?
פונקציית גיבוב היא כמו מכונת קודים סודית. היא לוקחת הודעה והופכת אותה לקוד.
איך גיבוב עובד בעסקאות ביטקוין
בביטקוין, כל עסקה מומרת לגיבוב (hash) לפני שהיא מתווספת לבלוקצ'יין. הגיבוב הוא טביעת אצבע דיגיטלית ייחודית של העסקה. אם מישהו ינסה לשנות אפילו פרט קטן בעסקה, הגיבוב ישתנה לחלוטין. זה מאפשר לרשת לזהות בקלות כל ניסיון לזיוף.
תפקיד הגיבוב באבטחת ביטקוין
הגיבוב עוזר להגן על רשת הביטקוין בכך שהוא הופך את העסקאות לקלות לאימות ובלתי אפשרי לשנות אותן בשקט. מכיוון שלכל עסקה יש גיבוב ייחודי, הרשת יכולה לזהות במהירות אם משהו שונה.
פונקציית גיבוב לוקחת נתונים וממירה אותם למחרוזת קבועה של מספרים ואותיות שנקראת גיבוב (hash). אותו קלט תמיד יניב את אותו הגיבוב, אבל אפילו שינוי קטן בקלט ייצור תוצאה שונה לחלוטין. תכונה זו מאפשרת למחשבים לבדוק שהנתונים לא שונו.
גיבוב הוא כמו יצירת טביעת אצבע לנתונים דיגיטליים. זהו תהליך של לקיחת הודעה דיגיטלית והפיכתה לקוד באורך קבוע, המשמש כמזהה ייחודי. כמו שטביעת אצבע מזהה אדם, כך גיבוב מזהה הודעה דיגיטלית.
פלט, או הגיבוב, הוא תמיד באותו אורך, לא משנה כמה ארוכה הייתה המידע המקורי. ביטקוין משתמש בכמה סוגים מסוימים של פונקציות גיבוב שנקראות SHA-256 וRIPEMD160.
כמה דוגמאות מופיעות למטה:
- הגיבוב SHA256 של המחרוזת שלום עולם
b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
- גיבוב SHA256 של המחרוזת שלום עולם.
7ddb227315f423250fc67f3be69c544628dffe41752af91c50ae0a9c49faeb87- שימו לב ששינוי קטן בקלט משנה לחלוטין את הפלט בהשוואה לראשון
- גיבוב SHA256 של קובץ ה-iso להורדה Ubuntu 18.10
7b9f670c749f797a0f7481d619ce8807edac052c97e1a0df3b130c95efae4765- הקלט הזה הוא קובץ ענק ובכל זאת הפלט הוא עדיין באורך קבוע
אפשר גם לחשוב על גיבוב כמו תווי נגינה שמייצגים את מהות היצירה המוזיקלית. כמו שתווים הם ייצוג ייחודי של מנגינה, ערך הגיבוב הוא ייצוג ייחודי של נתון.
על ידי השוואת התווים של יצירה מוזיקלית לביצוע בפועל, נגן יכול לבדוק אם הביצוע מדויק. באופן דומה, על ידי השוואת ערך הגיבוב של נתון שהתקבל לערך הגיבוב המקורי, ניתן לבדוק אם הנתון שונה במהלך ההעברה.
כמו שסטייה קטנה בביצוע מוזיקלי יכולה לגרום לו להישמע שונה, אפילו שינוי קטן בנתון המקורי יגרום לערך גיבוב שונה. זה הופך את הגיבוב לכלי חזק להבטחת שלמות ואותנטיות של עסקת ביטקוין.
תהליך קידוד המפתח הציבורי באמצעות גיבוב משמש לשיפור אבטחת המידע על ידי המרתו לפורמט באורך קבוע ובלתי קריא. ביטקוין משתמש באלגוריתמים SHA-256 ו-RIPEMD160 כדי ליצור כתובות ציבוריות. הפלט המתקבל משמש כמזהה ייחודי עבור המפתח הציבורי ועוזר להבטיח את שלמות ואבטחת העסקאות השמורות בפנקס. על ידי הצפנת המידע בדרך זו, קשה יותר לאנשים לא מורשים לגשת לנתונים ולשנות אותם.
מאפייני פונקציית גיבוב
- דטרמיניסטית: אותם מרכיבים תמיד ייצרו את אותו שייק. באותו אופן, אותם נתונים תמיד ייצרו את אותו גיבוב.
- עמידות בפני שחזור קלט: אם יש לך רק את השייק, לא תוכל לדעת בדיוק אילו פירות היו בו. באופן דומה, אם יש לך רק את הגיבוב, לא תוכל לדעת מהם הנתונים המקוריים.
- אפקט מפולת: שינוי אפילו קטן במרכיבים ייצור שייק שונה לחלוטין. בגיבוב, שינוי קטן מאוד בנתונים ייצור גיבוב שונה לחלוטין.
- עמידות בפני התנגשות: קשה מאוד למצוא שני סטים שונים של מרכיבים שייצרו בדיוק את אותו שייק. באותו אופן, מאוד לא סביר ששני נתונים שונים ייצרו את אותו גיבוב.
- מהיר לאימות: הכנת השייק מהירה, וקל לבדוק שהתוצאה היא שייק. פונקציות גיבוב מהירות לחישוב וקלות לאימות לכל אחד.
פעילות: צור גיבוב SHA 256
סקרנים איך גיבוב עובד? סרקו את קוד ה-QR כדי ליצור מיד גיבוב SHA256 מכל מילה, משפט או קלט שתבחרו. פונקציות גיבוב הן כמו טביעות אצבע דיגיטליות: הן חד-כיווניות, כלומר ברגע שמשהו גובב, אי אפשר להחזיר אותו אחורה. נסו בעצמכם ותראו!