הטענה
תעודת Signet טוענת טענה אחת, צרה וחזקה: מחזיק המפתח הפרטי של כתובת מסוימת חתם על הודעת אתגר מסוימת במועד מסוים. לא יותר. זו הוכחה של שליטה במפתח, לא של זהות.
הוכח, ללא צורך באמון
- כתובת זו הפיקה חתימה זו על הודעת אתגר זו.
- החותם החזיק במפתח הפרטי בעת החתימה.
- גיבוב התעודה היה קיים עד מועד העיגון על השרשרת.
לא הוכח
- זהות החותם.
- שהשליטה בלעדית, או שהמפתח לא שותף ולא נמסר בכפייה.
- שהחותם הוא לקוח של הגורם המבקש. קישור לזהות הוא חלק מתהליך ה־KYC של הגורם המבקש.
איך היא מוכחת
הגורם המבקש מנפיק הודעת אתגר שמשולב בה ערך חד־פעמי (nonce) הקשור לבקשה אחת בלבד. הצד שכנגד חותם בארנק שלו על הבתים המדויקים של הודעת האתגר. אנחנו מאמתים את החתימה מול הכתובת בבלוקצ'יין הנכון, ואז מגבבים את התעודה שנוצרה ומעגנים את הגיבוב על השרשרת במנת Merkle, באמצעות אותו חוזה Stamper המשמש בכל משפחת המוצרים של BA, כך שכלי האימות הציבורי מאמת אותה ללא שינוי.
הערך החד־פעמי הופך שימוש חוזר לבלתי אפשרי: חתימה על הודעת האתגר של בקשה אחת אינה ניתנת להעברה לבקשה אחרת. אנחנו מאמתים את הודעת האתגר השמורה בית אחר בית, ולעולם לא עותק שעובד מחדש.
קריפטוגרפיה לפי שרשרת
לכל שרשרת תקן חתימה משלה. שכבת האימות תוכננה כך ששרשראות חדשות מתווספות בלי לשנות את הקיים.
| בלוקצ'יין | תקן | אופן האימות |
|---|---|---|
| Ethereum ו־EVM | EIP-191 personal_sign | שחזור החותם במצב לא מקוון |
| ארנקי חוזים חכמים | EIP-1271 | קריאה ל־isValidSignature על השרשרת |
| Bitcoin (SegWit / Taproot) | BIP-322 | לא מקוון |
| Bitcoin (P2PKH מדור קודם) | BIP-137 signmessage | לא מקוון |
| Litecoin, Dogecoin, Zcash (t1) | BIP-137 עם הקידומת של הרשת | לא מקוון |
| Solana | ed25519 | לא מקוון |
| Polkadot, Kusama | sr25519 / ed25519 | לא מקוון |
| TRON | TronWeb signMessageV2 (גם אפליקציית TRON של Ledger) | שחזור החותם במצב לא מקוון |
אימות עצמאי
מכל תעודה ניתן לייצא חבילת הוכחה עצמאית. כל אחד יכול לבדוק אותה מול שרשראות ציבוריות, ללא חשבון וללא צורך באמון ב־BA | Signet:
signatureהיא חתימה תקפה שלaddressעלchallengeבבלוקצ'יין המצוין. זה לבדו מוכיח שליטה במפתח.- חישוב מחדש של
SHA-256של ה־JSON הקנוני של התעודה; התוצאה חייבת להיות שווה ל־contentHash(עלה ה־Merkle). - קיפול העלה עם
merkleProof(keccak256, זוגות ממוינים); התוצאה חייבת להיות שווה ל־merkleRoot. - קריאה ל־
timestamps(merkleRoot)בחוזה Stamper ב־Polygon; ערך שאינו אפס הוא המועד שעד אליו התעודה הייתה קיימת. - אופציונלי: אימות הוכחת ה־OpenTimestamps מול בלוק Bitcoin.
מה אנחנו שומרים
הצד שכנגד אינו לקוח שלנו ואין לו חשבון. אנחנו אוספים את המינימום: הכתובת, הודעת האתגר, החתימה, חותמת הזמן והאסמכתא של הגורם המבקש. לעולם איננו מבקשים או מקבלים מפתח פרטי או ביטוי שחזור. אין פרופיילינג מבוסס IP מעבר למה שנדרש למניעת שימוש לרעה. הנתונים נשמרים כרשומת הציות של הגורם המבקש ונמחקים לפי בקשה.