הצעה לשיפור כספא KIP5

הצעה לשיפור: KIP5
שכבה: אפליקציה.
תיאור: חתימת הודעות.
מחבר: coderofstuff.
סטטוס: פעיל.

מוטיבציה

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

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

מפרט טכני

חתימה על הודעה

חלק זה של התהליך רלוונטי ליישומים שיש להם גישה למפתח הפרטי ויחתמו על הודעה כלשהי.

נתון:

  • מחרוזת באורך שרירותי. נקרא לזה raw_message
  • מפתח_פרטי

פלט: חתימה המשויכת למחרוזת זו עם מפתח פרטי נתון

  1. גיבוב ההודעה באמצעות Blake2B. כדי ליצור הפרדת דומיינים מספקת עם sighash של קלט טרנזקציות, השתמש במפתח Blake2B אחר, PersonalMessageSigningHash (גיבובי טרנזקציות משתמשים ב-TransactionSigningHash כמפתח ל-blake2b) ובאורך תקציר של 32.
  2. שנור חתם על ההודעה המגובשת

לסיכום: schnorr_sign(blake2b(raw_message, digest_size=32, key='PersonalMessageSigningHash'), private_key)

למה לגיבב הודעה?

  1. מקטין את גודל ההודעה השרירותית ל-hash באורך קבוע
  2. מונע חתימה מקרית של sighashes – ההודעה הגולמית עוברת hashing עם מפתח blake2b שונה (PersonalMessageSigningHash) מזה המשמש ל-hashes של עסקאות (TransactionSigningHash), ויוצר הפרדת דומיינים מספקת.

אימות חתימת הודעה

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

נתון:

  • מחרוזת באורך שרירותי. נקרא לזה raw_message
  • מפתח ציבורי שהאפליקציה ביקשה כדי לחתום על ההודעה

פלט: true אם החתימה תקפה, false אחרת

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

לסיכום: schnorr_verify(blake2b(raw_message, digest_size=32, key='PersonalMessageSigningHash'), public_key)

יישום לדוגמה

הקוד מלא ב-/kip-0005/test-cases.py

וקטורי בדיקה

המפתחות נלקחו מהקישור הבא:
https://github.com/bitcoin/bips/blob/master/bip-0340/test-vectors.csv

indexsecret keypublic keyaux_randmessage_strsignature
00000000000000000000000000000000000000000000000000000000000000003F9308A019258C31049344F85F89D5229B531C845836F99B08601F113BCE036F90000000000000000000000000000000000000000000000000000000000000000Hello Kaspa!40B9BB2BE0AE02607279EDA64015A8D86E3763279170340B8243F7CE5344D77AFF1191598BAF2FD26149CAC3B4B12C2C433261C00834DB6098CB172AA48EF522
1B7E151628AED2A6ABF7158809CF4F3C762E7160F38B4DA56A784D9045190CFEFDFF1D77F2A671C5F36183726DB2341BE58FEAE1DA2DECED843240F7B502BA6590000000000000000000000000000000000000000000000000000000000000001Hello Kaspa!EB9E8A3C547EB91B6A7592644F328F0648BDD21ABA3CD44787D429D4D790AA8B962745691F3B472ED8D65F3B770ECB4F777BD17B1D309100919B53E0E206B4C6
2B7E151628AED2A6ABF7158809CF4F3C762E7160F38B4DA56A784D9045190CFEFDFF1D77F2A671C5F36183726DB2341BE58FEAE1DA2DECED843240F7B502BA6590000000000000000000000000000000000000000000000000000000000000001こんにちは世界810653D5F80206DB519672362ADD6C98DAD378844E5BA4D89A22C9F0C7092E8CECBA734FFF7922B656B4BE3F4B1F098899C95CB5C1023DCE3519208AFAFB59BC
3B7E151628AED2A6ABF7158809CF4F3C762E7160F38B4DA56A784D9045190CFEFDFF1D77F2A671C5F36183726DB2341BE58FEAE1DA2DECED843240F7B502BA6590000000000000000000000000000000000000000000000000000000000000001(See Test CAse 3 Full Text section)40CBBD3938867B10076BB14835557C062F5BF6A4682995FC8B0A1CD2ED986EEDAAA00CFE04F6C9E5A9546B860732E5B903CC82780228647D5375BEC3D2A4983A

נכתב במקור על ידי coderofstuff.

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

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

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

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *