חתימה דיגיטלית

//חתימה דיגיטלית

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

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

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

ממפתח פרטי לכתובת ביטקוין

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

ביצוע חתימה דיגטלית

סכמה המתארת את השלבים ליצירת חתימה דיגיטלית: כתובת הביטקוין/מפתח ציבורי+המידע הזקוק לחתימה + החותמת (מהשלב הקודם) מייצרים מידע חתום

מידע חתום דיגיטלית

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

סימון העברה כמשומשת

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

  • קלט (Input) : הפניה/סימוכין אל פלט (Output) מעסקה אחרת/קודמת לנוכחית. בדרך כלל נעשה שימוש ביותר מקלט אחד לעסקה. כל קלט בעסקה הנוכחית הוא סיכום כל אותם הפניות/סימוכין לפלט (Output) מהעסקה הקודמת.
  • פלט (Output) : מכיל הוראות שליחת מטבעות. יכול להיות יותר מפלט (Output) אחד אשר חולק את הערך הכולל של קלט (Input). כל פלט (Output) יוצר עסקה/העברה אחת בלבד הוא יכול לשמש כהפניה/סימוכין ע"י קלט (Input) פעם אחת בלבד בעסקה עוקבת. אם סה"כ הקלט (Input) שווה 50 מטבעות אבל המשתמש רוצה לשלוח 25 מטבעות, פרוטוקול המטבע ייצור פלט (Output) של 25 מטבעות שישלחו לנמען ועוד פלט של 25 שישלחו חזרה ("עודף") לארנק ממנו נעשית העסקה/העברה. בנוסף, אם קלט (Input) כלשהו לא "נפדה" (שימש כפלט) הוא יחשב כעמלה וכורה שייצר את הבלוק יקבל אותה.

ביצוע ושימוש בחתימה דיגיטלית ברשת ביטקוין צעד אחר צעד

  1. תהליך השליחה מייצר בעזרת המפתח הפרטי (Signing Key / Private Key) ו'עקום אליפטי'(ECDSA) כתובת ביטקוין, הכתובת היא המפתח ציבורי לאחר תמצות SHA-256 ו RIPEMD-160 ולבסוף המרה ל  Base-58.
  2. מפתח פרטי/כתובת הביטקוין (בעלות/זהות החותם) והמידע הזקוק לחתימה (פלט מעסקה קודמת) יוצרים את החותמת הספציפית.
  3. כתובת הביטקוין (בעלות/זהות החותם)+המידע הזקוק לחתימה (פלט מעסקה קודמת)+החותמת מייצרים מידע חתום.
  4. הליך האישור בצמתים(Node) נעשה מול המפתח הציבורי + החתימה ללא גישה למפתח הפרטי.

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

הערות

[1] ניתן לשייך עסקאות לכתובות באופן ציבורי ונגיש לכולם אך רק בעל ארנק יכול יכול לשייך ו/או לדעת כמה כתובות סה"כ ישנם בארנק.

2017-12-14T09:50:54+00:00

Leave A Comment

This Is A Custom Widget

This Sliding Bar can be switched on or off in theme options, and can take any widget you throw at it or even fill it with your custom HTML Code. Its perfect for grabbing the attention of your viewers. Choose between 1, 2, 3 or 4 columns, set the background color, widget divider color, activate transparency, a top border or fully disable it on desktop and mobile.

This Is A Custom Widget

This Sliding Bar can be switched on or off in theme options, and can take any widget you throw at it or even fill it with your custom HTML Code. Its perfect for grabbing the attention of your viewers. Choose between 1, 2, 3 or 4 columns, set the background color, widget divider color, activate transparency, a top border or fully disable it on desktop and mobile.