דברים לדעת: |
- Miniscript מאפשר לבנות ארנקי תוכנת ביטקוין שהופכים דלת אחורית לבלתי אפשרית לניצול. אנו שמחים לומר שלדג'ר היא יצרנית ארנקי החומרה המסחרית הראשונה שתומכת ב-miniscript.
- ניתן ליישם את התכונות הנוספות מבלי לפגוע בחוויית המשתמש. |
התקני חתימת חומרה מתוכננים כדי להגן על המשתמש מפני וקטורי התקפה נפוצים שונים, כגון:
- גישה בלתי מורשית וחילוץ של הזרע
- תוכנה זדונית מדביקה את ארנק התוכנה המשויך שלך
- פרצות תוכנה במכשיר עצמו
כמו כל עסק, זה האינטרס של היצרן לייצר מכשירים כמו אינו ניתן לשבירה כפי שהם יכולים. ההצלחה במשימה זו היא חשיבות עליונה, וחברות אבטחה כמו לדג'ר מסתמכות על מוניטין שנבנה על רקע הרקורד שלהן.
עם זאת, לחלק מהמשתמשים עדיין יש חששות. מה מונע מהחברה עצמה להסתיר א דלת אחורית במכשירים?
במשמורת עצמית, אנחנו אל תסמוך, אנו מוודאים.
אבל המשתמש יכול בֶּאֱמֶת לוודא שלמכשיר אין דלת אחורית?
זו שאלת המפתח בה מאמר זה מתעמק. ליתר דיוק, מאמר זה עוסק בנושאים הבאים:
- מהי דלת אחורית, ומדוע קשה, אם לא בלתי אפשרי, להוכיח שאין כזו;
- מדוע רק משתמשים יכולים להגן על עצמם מפני הסיכון הזה;
- כיצד מיניסקריפט מאפשר פתרונות מעשיים לאתגר הזה עבור ארנקי ביטקוין.
בכך שהוא ארנק החומרה הראשון שתומך בו מיניסקריפט, אנו מקווים לתת השראה למפתחים לבנות פתרונות מאובטחים ולשדרג את כל התעשייה שלנו, ולמנוע את הסיכוי שסיכון מערכתי כזה לא יתממש.
כיצד לבנות את בלתי ניתן לדלת אחורית מכשיר חתימה
בוא נגיד את זה בצורה ברורה: אתה לא יכול.
כדי להגן על עצמך מפני דלת אחורית פוטנציאלית, אתה צריך מודל התקפה שונה מזה שתארנו לעיל: בתרחיש זה, היריב יכול להיות הספק עצמו, או איש פנים מושחת.
הפתרון המוצג לעתים קרובות לבעיה זו הוא קוד פתוח: אחרי הכל, אם אתה יכול לבדוק את הקוד, מה יכול להשתבש?
עם זאת, האמת מורכבת יותר. מכיוון שהספק מרכיב את החומרה, דלת אחורית יכולה להיות כלולה בתוכה. החומרה יכולה להיות מתוכננת כדי להתעלם מהתוכנה בנקודות מסוימות ולהפעיל קוד זדוני במקום זאת.
בניגוד לתוכנה הפועלת על התקני מחשוב למטרות כלליות (כמו המחשב הנייד או הטלפון), בדיקה קפדנית של החומרה היא כמעט בלתי אפשרית עם הטכנולוגיה של היום. גם אם מפרטי החומרה היו לגמרי קוד פתוח, עם הפרטים של כל שער בודד במעגל, עדיין היית צריך ציוד בעלויות גבוהות כדי לוודא ששבב ספציפי נבנה בהתאם אליהם.
כיצד להכניס ארנק חומרה בדלת אחורית
הנה כמה מהשיטות הפשוטות ביותר שספק חומרה זדוני יכול להשתמש כדי להציג דלת אחורית, יחד עם כמה דרכים שמשתמשים חזקים יכולים להגן על עצמם היום.
יצירת זרעים
מכשירים רבים מציעים לך את היכולת ליצור זרע (נקרא גם משפט שחזור סודי) ישירות על המכשיר, באמצעות א מחולל מספרים אקראיים אמיתיים.
😈 המכשיר המרושע עלול ליצור זרעים שנראים אקראיים אך למעשה צפויים לתוקף.
🛡️ משתמשים חזקים יכולים לעקוף את הבעיה הזו על ידי יצירת זכרון זיכרון במצב לא מקוון. בנוסף, שילוב חזק ביטוי סיסמה יכול גם ליצור סיד עצמאי לחלוטין שספק החומרה לא יכול לחזות. הפשרה היא שמשתמשים חייבים להבטיח שהם מגבים כראוי את ביטוי הסיסמה בנוסף למילות המנמוניות.
גזירת מפתח ציבורי
ארנקי חומרה מפיקים ומייצאים את מפתחות ציבוריים (המכונה גם xpubs, קיצור ל מפתח ציבורי מורחב כפי שמוגדר ב BIP-32. ה xpubs משמשים ליצירת הכתובות האפשריות לקבלת מטבעות.
😈 המכשיר המרושע יכול להחזיר מפתחות ציבוריים שנשלטים על ידי התוקף במקום הנכונים שנגזרו מהזרע.
🛡️ משתמשים יכולים לאמת את הנגזר xpub במכשיר אחר, לא מקוון. עם זאת, כניסה לזרע במכשירים אחרים טומנת בחובה סיכונים משלה. משתמשים מודעים לאבטחה עלולים להחשיב כל מכשיר שניגש לזרע כמסוכן, שעלול להרוס אותם. המשתמש הטיפוסי עשוי להתקשה לבצע את ההליך הזה בצורה נכונה תוך ניהול הסיכונים הנוספים.
מידע דולף
An כיס אוויר מוצע לעתים קרובות כפתרון למניעת מכשיר זדוני או נפוץ לחדור מפתחות פרטיים. אחרי הכל, אם מכשיר לא יכול לתקשר עם העולם החיצון, הוא לא יכול לעשות שום דבר מזיק, נכון?
לא בדיוק!
המכשיר תמיד יכול לתקשר כאשר הוא בשימוש: הוא מייצר חתימות. החתימות הללו מסתיימות בתוך עסקאות המשודרות ומאוחסנות לנצח בבלוקצ'יין.
חתימה היא מחרוזת בתים בעלת מראה אקראי של לפחות 64 בתים. עם זאת, מכיוון שיותר מחתימה חוקית אחת יכולה להתאים לאותה הודעה, מכשיר זדוני יכול לתקשר כמה פיסות מידע בכל פעם שחתימה מופקת, על ידי יצירת חתימות מרובות ובחירה סלקטיבית אילו לפרסם.
😈 מכשיר נוכל עשוי לייצר חתימות לא אקראיות שבמשך עסקאות רבות, חושפות את הזרע לתוקף!
תוקף שיצליח להתקין דלת אחורית כזו יצטרך רק לחכות לחתימות זדוניות שיופיעו על הבלוקצ'יין עד שיהיה לו מספיק מידע כדי לשחזר את כל הזרע.
🛡️ עבור חתימות ECDSA, באמצעות שיטה סטנדרטית של גזירת ה-nonce באופן דטרמיניסטי (כמו RFC6979) מסכל את ההתקפה הזו, בתנאי שמאשר שהחתימה שהופקה תואמת את החתימה הצפויה. עם זאת, כדי לוודא שזה המצב מחייב טעינת מכשיר שני באותו זרע, מה שמוביל לאותן בעיות מעשיות שהוזכרו בסעיף הקודם.
🛡️ גישה מעניינת היא להשתמש בדרך חכמה כּוֹחַ המכשיר יבחר למעשה נון אקראי. פרוטוקול למטרה זו, המכונה אנטי-אקספיל or אנטי קלפטו, מיושם כעת בארנקי החומרה של Blockstream Jade ו- ShiftCrypto BitBox02. קרא עוד על הבלוג של ShiftCrypto, הכולל גם תיאור טכני של האופן שבו מתקפה כזו עשויה להתבצע.
טוב אז, אין תקווה?
רוב ההגנות🛡️ המפורטות לעיל לרוב דורשות מהמשתמש לבצע פעולות מפורשות וחודרניות על מנת להגן על עצמו: או על ידי יצירת הזרע בעצמו (בעצם, שימוש במוח שלו כדי להחליף את הפונקציונליות מארנק החומרה), או שימוש ב מכשיר נוסף כדי לוודא שהחישובים מבוצעים כהלכה.
עם זאת, פרוטוקול האנטי-exfil בולט: בהתחשב בכך שתמיד יש מכונה המתווכת בין חותם החומרה לעולם החיצון, מכונה זו יכולה לסייע. באמצעות פרוטוקול אינטראקטיבי עם חותם החומרה, זה יכול לאכוף השימוש ב-nonce אקראי באמת, ובכך להקטין או לבטל את הסיכוי למניפולציה משמעותית של החתימה הסופית.
בפוסט זה בבלוג, אנו מתעניינים בעיקר בסוגים אלה של אמצעים: בעוד שאסטרטגיות שמחמירות באופן משמעותי את ה-UX עשויות להיות מושכות למשתמשים חזקים, סביר להניח שהן יצליחו לעשות דברים גרוע יותר בפועל למשתמשים הפחות מיומנים מבחינה טכנית - שזה הרוב המכריע.
מודל האבטחה
דגם סטנדרטי לחותמי חומרה
יצרני חותמי חומרה שואפים להגן על המשתמשים מפני מגוון איומים פוטנציאליים (לפרטים נוספים, ראה מודל איומים). במאמר זה, אנו מתמקדים בנכס אחד, חשוב מאוד, שניתן לסכם כך:
לא ניתן לרמות משתמשים לפעולה שתוביל לאובדן כספים, בתנאי שהם מבינים ומאמתים את המידע שעל המסך לפני האישור.
יש צורך באישור לכל פעולה רגישה, במיוחד חתימות. הגנה על הזרע תהיה חסרת תועלת אם תוכנות זדוניות יכולות לייצר חתימות להודעות שרירותיות, כגון עסקה שגורסת את כל הכספים!
חשוב להדגיש שהנכס לעיל חייב להתקיים גם אם ארנק התוכנה נפגע לחלוטין. לא ניתן לסמוך על מה שמוצג על מסך המחשב הנייד/טלפון שלך: תוכנות זדוניות עלולות להחליף כתובות, להונות אותך לגבי הכתובות שלך, להציג עסקה אך לאחר מכן להעביר אחת אחרת למכשיר לצורך חתימה וכו'.
לכן, הקושחה והיישומים הפועלים על התקן חתימת חומרה מתייחסים לארנק התוכנה באופן מובנה לא מהימן ולא אמין.
דגם אבטחה נגד דלת אחורית עבור ארנקי תוכנה
בחלק זה, אנו הופכים את התפקידים לחלוטין. כעת אנו רוצים לעצב א ארנק תוכנה שמונע מיצרן החומרה לגנוב או לגרום לאובדן כספים, גם אם המכשיר זדוני לחלוטין.
לפיכך, זה לא יכול להיות נכס של מכשיר: במקום זאת, זה מאפיין של ארנק תוכנה להכין. נוכל לסכם את זה כך:
בתנאי שארנק התוכנה אינו נפגע, יצרן החומרה אינו יכול לגרום למשתמש להפסיד כספים.
זה עשוי להיראות מנוגד לאינטואיציה, מכיוון שהוא סותר ישירות את מודל האבטחה הסטנדרטי המפורט לעיל. עם זאת, "אין דלת אחורית" פירושו "לעשות בדיוק מה שהם אמורים לעשות". מכיוון שארנק התוכנה הוא ה בלעדי הממשק בין מכשיר החתימה לעולם החיצוני, זה המקום היחיד שבו ניתן לאכוף הגנה מפני התנהגות לא נכונה - בין אם בגלל באג, ובין אם בגלל פגיעה מפורשת במכשיר.
שימו לב שהדגם הזה מתרחב משמעותית מעבר לכשל במכשיר, כמו באג שניתן לנצל. במקרה זה, אנו פועלים בתרחיש שבו המכשיר מבקש באופן פעיל לגרום לאובדן כספים.
כמובן, אין הגנה אפשרית אם היצרן התפשר בהצלחה שניהם המכשיר וגם המכשיר שלך שמפעיל את ארנק התוכנה. לכן, זה חיוני לחלוטין להבטיח שארנק התוכנה שלך הוא קוד פתוח וניתן לביקורת, במיוחד אם נבנה על ידי אותו ספק שמייצר את החומרה.
תפקיד המיניסקר
Miniscript מצייד מפתחי ארנקים עם היכולת לנצל באופן מלא את התכונות המתקדמות של bitcoin Script. לסקירה כללית של האפשרויות המדהימות ש-miniscript פותח, עיין הפוסט הקודם שלנו בבלוג. אולי תרצה גם להקשיב פרק 452 בפודקאסט סטפן ליברה לדיון על מה מיניסקריפט מביא לנוף הביטקוין.
אפליקציית לדג'ר ביטקוין תומכת במיני-סקריפט מאז שחרורו 2.1.0, שנפרס בפברואר 2023. בכנס Bitcoin 2023 במיאמי, Wizardsardine הכריז על שחרור 1.0 של ארנק ליאנה, הארנק הפרוס הראשון המבוסס על מיני-סקריפט.
הרעיון הבסיסי של פוסט זה הוא שניתן להגן על חשבון ארנק ביטקוין לא רק באמצעות אחד, אלא גם באמצעותו מספר מפתחות. זה מאפשר מסגרות אבטחה גמישות שבהן אפילו כשל מוחלט או פגיעה במפתח אינם קטסטרופליים.
הרהורי מולטיסיג
מולטיסיג מהווה שדרוג משמעותי בחוזקו של פתרון משמורת עצמית. על ידי מינוף יכולת התכנות של Bitcoin Script, הוא מאפשר יצירת ארנקים המצריכים מספר מפתחות במקום רק אחד. א k-n ארנק multisig דורש שילוב של k חתימות תקפות, מתוך סך של n אפשריים.
עם זאת, multisig גם מטילה עומס UX על המשתמש, ומציגה הזדמנויות חדשות לשגיאות. מערך מולטי-sig של 3 מ-3, הכולל שלושה מפתחות שונים המגובים בצורה מאובטחת במקומות נפרדים, מציע אבטחה חזקה... אבל זה גם אומר שאם אפילו יחיד המפתח אבד, המטבעות הופכים בלתי נגישים לצמיתות!
לכן, הגדרות המציעות יתירות רבה יותר (כמו 2 מ-3 או 3 מ-5) נוטות להיות פופולריות יותר: אם מפתח בודד יאבד, המפתחות האחרים עדיין יכולים להקל על ההתאוששות. אבל זה מציג פשרה: אם מפתח אחד נפגע ללא ידיעתך, האבטחה הכוללת מופחתת משמעותית!
חברות כמו בית ו הון לא משוחזר מתמחים בפתרונות משמורת עצמית כאשר הם מחזיקים במיעוט מהמפתחות עבור לקוחותיהם. הם גם מסייעים למשתמשים שלהם בכך שהם מדריכים אותם בתהליך ההטמעה ופישוט השימוש במערכות משמורת, מה שעלול להיות מרתיע עבור רוב המשתמשים הלא טכניים.
מיני-סקריפט ונתיבי שחזור נעולים בזמן
ליאנה משתמשת במיני סקריפט כדי ליצור ארנקים שיש להם מספר דרכים להוצאות:
- תנאי הוצאה ראשוני, הזמין באופן מיידי;
- תנאי הוצאה נוספים אחד או יותר שמתאפשרים לאחר תקופה מסוימת (מה שנקרא נעילת זמן).
זה מאפשר מקרי שימוש מעניינים רבים:
- התאוששות: ארנק סטנדרטי עם חתימה יחידה או מולטי סיג כנתיב ההוצאה הראשי; אבל מנגנון התאוששות נפרד (מפתח עם זרע אחר, מולטיסיג, חבר בעל ידע טכנולוגי, אפוטרופוס) הופך לזמין לאחר 6 חודשים.
- ממשל: חברה עם שני דירקטורים תוכל להקים 2 מ-2 לאוצר החברה; במקרה של אי הסכמה, עורך דין מהימן יוכל לגשת לכספים לאחר 6 חודשים.
- מולטיסיג מתכלה: ארנק מתחיל כ-3 מ-3, עובר ל-2 מ-3 לאחר 6 חודשים, והופך ל-1 מ-3 לאחר 9 חודשים.
- ירושה אוטומטית: מסלול ההחלמה לאחר 6 חודשים כולל 2 מתוך 3 משלושת ילדיך; אולי נתיב החלמה שני לאחר שנה כרוך בנוטריון, למקרה שהיורשים לא יכולים להגיע להסכמה.
הֶעָרָה: כל הדוגמאות לעיל משתמשות ב-a מנעול זמן יחסי, המתייחס לגיל המטבעות (כלומר: בפעם האחרונה שהכספים הועברו). הפשרה היא שהמשתמש חייב לזכור לבזבז את המטבעות (על ידי שליחתם לעצמו) אם נעילת הזמן מתקרבת לפוג.
אלו הן רק כמה דוגמאות, אבל הן צריכות להספיק כדי לשכנע את הקורא שמיני-סקריפט הוא צעד משמעותי קדימה לקראת מימוש הפוטנציאל של ביטקוין כמו כסף לתכנות.
רישום פוליסת ארנק
עבור חשבונות ארנק ביטקוין המשתמשים במספר מפתחות (בין אם זה multisig, או פתרונות מבוססי מיני-סקריפטים מתוחכמים יותר), חיוני לאמן את המכשיר לזהות את הכתובות השייכות לחשבון זה. זו הדרך היחידה שבה המכשיר יכול לסייע למשתמש להבטיח שהוא מקבל או מוציא מהכתובות הנכונות...
אימות הפוליסה וה xpubs של המעצב נגד גיבוי מהימן הוא חיוני, אך זמן רב יחסית.
החדשות הטובות הן שצריך לעשות את זה רק פעם אחת:
ברגע שפוליסה נרשמה בשם (בדוגמה "Decaying 3of3"), המכשיר שלך יוכל לזהות אותה בכל פעם שתופעל פוליסה כזו.
המעוניינים בפרטים טכניים יכולים למצוא מידע נוסף ב- הצעת BIP.
גיבוי מדיניות
היבט קריטי אחד שיש לציין הוא שבעוד שמדיניות מרובת מפתחות מאפשרת תת-קבוצה של מפתחות פרטיים לאשר עסקאות, הידיעה של את כל המפתחות הציבוריים (ואת מְדוּיָק מדיניות) נדרשים.
עם זאת, בניגוד ל-seed, גיבוי של הפוליסה והמפתחות הציבוריים הוא הרבה פחות מסוכן: אם מישהו היה מגלה אותו, הוא יוכל לאתר את כל העסקאות המקושרות לפוליסה הזו. למרות שזה לא אידיאלי - הפרטיות חשובה! - זה לא אסון כמו לאבד את המטבעות שלך ופחות מפתה עבור תוקפים פוטנציאליים. כתוצאה מכך, אחסון עותקים מרובים של הפוליסה בארנקים חמים, הדפסתה ואחסנה במקומות שונים, הצפנתה ואחסוןה באחסון ענן וכן הלאה, הן כולן אסטרטגיות ברות קיימא.
הארנק בעל חתימה יחידה שלא ניתן לדלת אחורית
בואו ניקח צעד אחורה. דיברנו על ארנקים מרובי חתימות, אבל כעת נחזור ליסודות כדי ליצור ארנק בעל חתימה אחת. ליתר דיוק, אנחנו רוצים ארנק כזה מרגיש ו נראה כמו ארנק עם חתימה אחת, לאחר שלב התקנה ראשוני. עם זאת, אנו שואפים ליצור ארנק שממנו היצרן לא יכול לגנוב את הכספים שלך גם אם הם זדוניים 😈, ומכשיר החתימה על החומרה מתנהג בדרכים בלתי צפויות.
ניתן להכליל את הגישה בקלות עבור ארנקים מרובי חתימות.
הדוגמאות שלהלן ייכתבו בשפה הנקראת מדיניות, במקום מיניסקריפ. מדיניות קלה יותר לבני אדם לקרוא ולחשוב עליה, וניתן להרכיב אותה למיני-סקריפטים עם כלים אוטומטיים. קרא עוד על מיניסקר ומדיניות.
ארנק החומרה יכול להגן עליך בדגם האבטחה הסטנדרטי. Miniscript יכול להגן עליך במודל האבטחה נגד דלת אחורית (והרבה יותר!).
שלב אפס: המצב הקיים
זוהי המדיניות שרוב המשתמשים משתמשים בהם כיום: מפתח בודד שמקורו מזרע המיוצר בארנק החומרה.
pk(key_ledger)
כמובן, אין דרך להוכיח את היעדר דלת אחורית.
שלב ראשון: הכפל את המפתחות האלה
הצעד הראשון פשוט:
and(pk(key_ledger), pk(key_client))
כאן, key_client
נוצר על המחשב של המשתמש, ומכאן א מקש חם. בעיקרו של דבר, מדובר בהגדרת מולטי-סיג של 2 מ-2. ההיבט המרכזי הוא שהמשתמש אינו מקיים אינטראקציה רבה עם key_client
: ארנק התוכנה מייצר את המפתח הזה, כולל אותו בגיבוי של הארנק, וחותם בכל עת שצריך (לדוגמה, בזמן שהמשתמש עסוק בחתימה עם חותם החומרה שלו).
זה כבר נראה די מעניין: אי אפשר לבזבז את הכספים בלי key_client
, שאינו זמין לספק החומרה; גם אם לספק הרשע היה ידע מלא על המפתח במכשיר, הם עדיין לא יוכלו להעביר את הכספים מבלי לכוון במפורש למשתמש, למשל על ידי פגיעה במכונה שמפעילה את ארנק התוכנה שלו.
עם זאת, ישנה בעיה: במהלך הכניסה לארנק, חותם החומרה הוא הישות היחידה שמסוגלת ליצור את המפתח הציבורי (xpub) key_ledger
בשימוש בארנק. לפיכך, המכשיר יכול ליצור בכוונה א לא נכון xpub נשלט על ידי התוקף, ומאוחר יותר לסרב (או לא להיות מסוגל) לחתום. אפשר לטעון שזהו תרחיש התקפה קיצוני למדי: יוצר הדלת האחורית לא יכול לגנוב את הכספים, והמרב שהם יכולים לעשות הוא למקד את המשתמש באופן פרטני ולדרוש כופר ("אני יכול לעזור לך להחזיר את הכסף שלך אם אתה משלם לי חצי ”).
באופן ריאלי יותר, זה מגדיל את הסיכוי לטעויות של טעויות: כעת יש לך שני זרעים / מפתחות פרטיים, ואתה צריך שניהם כדי להיות מסוגל לבזבז. הפסד גם, ומטבעות ננעלים לנצח.
שלב שני: התאוששות חסומה בזמן
אנו מציגים מפתח שחזור נפרד, נגיש רק לאחר נעילת זמן מסוימת: and(older(25920)
, pk(key_recovery))
, כאשר 25920 הוא המספר המשוער של בלוקים ב-6 חודשים. המדיניות המלאה הופכת:
or(
and(pk(key_ledger), pk(key_client)), and(after(25920), pk(key_recovery))
)
זה דומה לתרחיש הקודם, אבל עם טוויסט: אם key_ledger
or key_client
הופך ללא זמין מכל סיבה שהיא (בדרך כלל, איבוד גיבוי ה-Seed!), א נתיב התאוששות הופך לנגיש לאחר 6 חודשים.
ישנן מספר אפשרויות עבור key_recovery
, כל אחד עם פשרות משלו:
a. השתמש באחר מקש חם. זהו פתרון מעשי כל עוד המשתמש זוכר לאפס את נעילת הזמן. עם זאת, אם המקשים החמים נפגעים (תרחיש שבאופן כללי יש לראות בו די סביר!), התוקף יכול לנסות לגשת לכספים ברגע שפג תוקפו של נעילת הזמן, וליזום מרוץ עם הבעלים הלגיטימי.
b. השתמש בהתקן חתימת חומרה נפרד. זהו פתרון חזק וניתן להשתמש בו בשילוב עם ספק אחר אם תרצה בכך; עם זאת, זה מגדיל את מורכבות ההגדרה והעלות עבור המשתמש במונחים של חווית משתמש.
c. השתמש בשירות חיצוני מהימן. ארנק התוכנה יכול לייבא xpub משירות חיצוני, להשתמש בו בתור key_recovery
. ניתן לסמוך על צד שלישי זה רק אם פג תוקפו של נעילת הזמן, מה שעשוי להיות פשרה מושכת עבור משתמשים מסוימים.
כאמור, בדומה לכל פוליסה עם נעילת זמן, חשוב שהמשתמש יזכור לרענן את המטבעות לפני פקיעת המנעול.
שלב שלישי: הצד השלישי הלא מהימן
בואו נמזג את שני הרעיונות (א) ו-(ג): עבור נתיב השחזור, אנו דורשים מקש חם מקומי key_recovery_local
ו key_recovery_remote
שמתארח בשירות מהימן למחצה; אנחנו גם שומרים על מנעול הזמן.
or(
and(pk(key_ledger), pk(key_client)),
and(older(25920),
and(pk(key_recovery_local), pk(key_recovery_remote))
)
)
זה מקטין את רמת האמון הדרושה משירות השחזור. עם זאת, עלינו לנקוט משנה זהירות: השירות עצמו יכול לנטר את הבלוקצ'יין ולזהות את ה-UTXOs שלנו - אחרי הכל, הם סיפקו לנו את key_recovery_remote
xpub, כך שהם יכולים לסרוק אחר UTXOs המכילים מפתחות פאב שמקורם key_recovery_remote
. הם יוכלו ללמוד על ההיסטוריה הפיננסית שלנו, עוד לפני שהנעילת הזמן פג, וגם אם מעולם לא השתמשנו בשירות שלהם.
הֶעָרָה: עצי שורש יכולים לבטל את בעיית הפרטיות הזו עבור מדיניות מסויימת, אבל זה לא תמיד המקרה ודורש הערכה קפדנית על סמך המדיניות הספציפית.
שלב רביעי: עיוור את הצד השלישי 🙈
על מנת למנוע משירות ההחלמה ללמוד על ההיסטוריה הפיננסית שלנו, במקום להשתמש במפתח הפאב שהם מתקשרים אלינו, אנחנו יכולים להשתמש ב- עיוור xpub טכניקה מוסבר על ידי mflaxman בפירוט כאן. בקיצור, במקום להשתמש key_recovery_remote
במדיניות שלנו, אנו בוחרים ארבעה מספרים אקראיים של 31 סיביות a
, b
, c
, d
( גורמים מסנוורים), ואנחנו משתמשים בדברים הבאים BIP-32 פאב מפתח נגזר:
key_recovery_remote_blind = key_recovery_remote_blind/a/b/c/d
חשוב שנוסיף גם key_recovery_remote
, והגורמים המסנוורים a
, b
, c
ו d
לגיבוי שלנו, לעיון עתידי.
אם אי פעם נצטרך להשתמש בשירות השחזור, אז נגלה a
, b
, c
, d
להם. עד אז, אין להם דרך לגלות שהמפתחות נובעים מהם key_recovery_remote
מתפרסמים בבלוקצ'יין: מספר השילובים האפשריים עבור 4 הגורמים המסנוורים הוא 2^(31*4) = 2^124
, מה שלא מאפשר להפעיל את כולם.
שלב חמישי: יותר מדי מקשים חמים יכולים לשרוף אותך 🔥
הצלחנו להפוך את ארנק התוכנה שלנו לבלתי ניתן לדלת אחורית. עם זאת, הצגנו בעיה אחרת: שני תנאי ההוצאה משתמשים במכשיר שנוצר באופן מקומי, חם מפתח שאינו מאומת על ידי ארנק החומרה. לכן, אם המחשב המארח נפרץ, זה עלול להערים עליך לרשום את המדיניות באמצעות מפתחות הפאב key_client
ו key_recovery_local
, אבל הכנס מפתחות פרטיים אקראיים, לא קשורים בגיבוי שלנו (זכור, ה חם מפתחות הם חלק מהגיבוי שלנו!).
זה בעצם יגרום לכל כספים שנשלחים לארנק בלתי ניתן לבזבז, מכיוון שאף אחד לא שולט במפתחות הפרטיים הדרושים לחתימה.
יש כמה פתרונות לפתרון בעיה זו:
- במהלך הכניסה, לאחר הדפסת הגיבוי שלנו על נייר, נוכל להשתמש במכשיר נפרד כדי לוודא שהמקשים החמים הפרטיים והציבוריים בגיבוי אכן תואמים. גישה זו תבטל את הבעיה, מכיוון שנהיה בטוחים שיש לנו את כל המפתחות הנדרשים לבנייה מחדש ולחתימה.
- אנו יכולים להוסיף עוד תנאי הוצאה עם מנעול זמן ארוך עוד יותר (9 חודשים, 38880 בלוקים) הדורש רק
key_ledger_failsafe
מהתקן החומרה. בדרך זו, בתרחיש הגרוע ביותר שבו כל השאר נכשל, אנו חוזרים לאבטחה של מכשיר חתימה יחיד. בפעולות רגילות, לעולם לא היינו נותנים לנעילת הזמן הראשונה לפוג, ולכן גם המנעול השני לא יפוג!
בגישה השנייה, המדיניות הסופית תיראה כך
or(
and(pk(key_ledger), pk(key_client)),
or(
and(older(25920),
and(pk(key_recovery_local), pk(key_recovery_remote_blind))
),
and(older(38880), pk(key_ledger_failsafe))
),
)
תצורת ארנק התוכנה הזו מספקת את כל מאפייני האבטחה עליהם טענו בהתחלה. יתר על כן, הוא מציע נתיב התאוששות במקרה של מפתחות ההוצאות העיקריים key_ledger
אבודים. תכונה נחמדה שיש!
כניסה לארנק התוכנה הבלתי ניתן לדלת אחורית
איך תיראה חווית המשתמש של ארנק המשתמש במדיניות כל כך מורכבת? להלן סקירה קצרה:
- המשתמש פותח את ארנק התוכנה ומתחיל ליצור חשבון חדש.
- ארנק התוכנה מבקש מהמשתמש לחבר את מכשיר החתימה שלו ומחזיר את ה-xpub עבור
key_ledger
וkey_ledger_failsafe
. - ארנק התוכנה מייצר באופן אוטונומי את המפתח החם key_client.
- ארנק התוכנה מקבל
key_recovery_remote
משירות חתימה משותפת או מאפשרת למשתמש לציין מפתח בצורה אחרת. לחלופין, הוא מחשב את הkey_recovery_remote_blind
תוך שימוש בטכניקת הסנוור שהוזכרה קודם לכן. - ארנק התוכנה מייצר גיבוי מדיניות המכיל את מדיניות המיני-סקריפטים המדויקת, את כל ה-xpubs ואת המפתח הפרטי המורחב עבור
key_client
מקש חם. גיבוי זה מאוחסן בצורה מאובטחת (לדוגמה, מודפס על נייר או נשמר במכשיר נפרד). - לבסוף, ארנק התוכנה מורה למשתמש לרשום את המדיניות במכשיר. המשתמש צולב את הגיבוי (על הנייר או כל אמצעי אחר מלבד המסך שנשלט על ידי ארנק התוכנה).
ארנק התוכנה מנהל את רוב השלבים הנ"ל, מה שהופך את מעורבותו של המשתמש לא מכבידה יותר מהמאמץ הצפוי הדרוש היום להקמת ארנק מרובה חתימות.
ההטמעה אמורה לדרוש רק כמה דקות לאחר שנבנה עבורה UX טוב. לאחר השלמתו, ארנק התוכנה יכול לספק חווית משתמש דומה מאוד לזו של ארנק טיפוסי עם חתימה אחת. כך מיניסקריפט ישנה הכל: על ידי היעלמות מעיני המשתמש!
שיפורים בשורשים
Ledger תומך במיני-סקריפט מאז גרסה 2.1.0 של אפליקציית הביטקוין, שפורסמה במרץ. אמנם תמיכה בקבלת כתובות והוצאות מכתובות שורשיות הופעלה מאז סופטפורק שורש שורש בנובמבר 2021, אנו שמים כעת את הגימור בשלב הבא של מפת הדרכים: תמיכה במיני-סקריפטים בשורש שורש.
לשורשים תהיה השפעה עצומה על השימושיות של הגישות המוצגות במאמר זה. אם נתיב ההוצאה העיקרי הוא תנאי הוצאה מפתח יחיד, קיומם של נתיבי הוצאות התאוששות לא יהיה ניתן לזיהוי בבלוקצ'יין אלא אם כן הם ינוצלו. זה ישפר מאוד את הפרטיות על ידי ביטול מוחלט של טביעת אצבע עבור נתיב ההוצאה הסטנדרטי. יתר על כן, זה משפר את יכולת ההרחבה, מכיוון שמסלול ההוצאה הסטנדרטי הופך לחסכוני ביותר להוצאות. המשמעות היא שלא תיגרם עלות נוספת עקב נוכחותם של נתיבי התאוששות, אלא אם כן נעשה בהם שימוש. מדובר בשדרוג משמעותי מעסקאות SegWit, הדורשות פרסום של כל הסקריפט, כולל כל תנאי ההוצאה, במהלך כל הוצאה.
לבסוף, פרוטוקולים מתקדמים יותר כמו MuSig2 (תוקנן לאחרונה) ו כפור יגביר את נתיב המקשים של שורשי השורש. בנויים על חתימות Schnorr, פרוטוקולים אלה מאפשרים ליצור סינגל פאב מפתח מצטבר שניתן להשתמש בו כדי לייצג את א n-n multisignature או א k-n ערכת סף. זה יאפשר שימוש ב-Taproot keypath גם במקרים שהיום מיוצגים בדרך כלל יותר עם סקריפטים מולטי-סיג ספציפיים.
מסקנות
מאמר זה בוחן נישה קטנה (אך חשובה) של מרחב העיצוב העצום שמיניסקריפט משחרר עבור ארנקי תוכנה.
הראינו כיצד ניתן להשתמש במיני סקריפט ליצירת ארנק תוכנה "בלתי ניתן לדלת אחורית", תוך הוספת נתיב שחזור נוסף המאפשר למנוע אובדן מפתח הרות אסון. בעוד שהתקני חתימת חומרה אינם יכולים לאכוף את מודל האבטחה נגד דלת אחורית, על ידי תמיכה במיני-סקריפטים הם מאפשרים ארנקי תוכנה שעושים בדיוק את זה!
על ידי שימוש חכם בשילוב של סכימות ריבוי חתימות, נעילות זמן, xpubs עיוורים ומקשים חמים, הדגמנו תצורת ארנק מאובטח שמאזנת בין אבטחה, פרטיות וחוסן.
יתרה מכך, טענו שזה אפשרי מבלי להשפיע לרעה על חווית המשתמש, מכיוון שמורכבות ההגדרה אינה מתורגמת לעומס UX נוסף.
אנו נרגשים לקראת האפשרויות ש-miniscript יפתח עבור הדור הבא של משמורת עצמית של ביטקוין.
- הפצת תוכן ויחסי ציבור מופעל על ידי SEO. קבל הגברה היום.
- PlatoData.Network Vertical Generative Ai. העצים את עצמך. גישה כאן.
- PlatoAiStream. Web3 Intelligence. הידע מוגבר. גישה כאן.
- PlatoESG. רכב / רכבים חשמליים, פחמן, קלינטק, אנרגיה, סביבה, שמש, ניהול פסולת. גישה כאן.
- BlockOffsets. מודרניזציה של בעלות על קיזוז סביבתי. גישה כאן.
- מקור: https://www.ledger.com/blog/towards-a-trustless-bitcoin-wallet-with-miniscript
- :יש ל
- :הוא
- :לֹא
- :איפה
- $ למעלה
- 1
- 2021
- 2023
- 30
- 7
- 9
- a
- יכולת
- יכול
- אודות
- מֵעַל
- מוּחלָט
- בהחלט
- גישה
- נצפה
- נגיש
- בהתאם
- חֶשְׁבּוֹן
- חשבונות
- פעולה
- פעולות
- באופן פעיל
- למעשה
- להוסיף
- מוסיף
- תוספת
- נוסף
- בנוסף
- כתובות
- מתקדם
- לאחר
- נגד
- גיל
- סיוע
- המטרה
- תעשיות
- להתיר
- מאפשר
- לאורך
- כְּבָר
- גם
- למרות
- תמיד
- an
- ו
- הודיע
- אחר
- כל
- דבר
- האפליקציה
- מושך
- לְהוֹפִיעַ
- יישומים
- גישה
- גישות
- הסכמה
- לְהִתְקַרֵב
- ARE
- ניתן לטעון
- טען
- מאמר
- AS
- אספקט
- לעזור
- המשויך
- At
- לתקוף
- ניתן לבדיקה
- לאשר
- אוטומטי
- באופן אוטונומי
- זמין
- בחזרה
- דלת אחורית
- מגובה
- גיבוי
- גיבוי
- יתרות
- מבוסס
- בסיסי
- בעיקרון
- יסודות
- BE
- כי
- להיות
- הופך להיות
- לפני
- ההתחלה
- להיות
- להלן
- הטוב ביותר
- בֵּין
- מעבר
- ביטקוין
- ארנק ביטקוין
- ארנקי ביטקוין
- להתמזג
- blockchain
- אבני
- בלוקסטרים
- בלוג
- שניהם
- מוֹחַ
- מביא
- מִשׁדָר
- חרק
- לִבנוֹת
- נבנה
- ניטל
- לשרוף
- עסקים
- עסוק
- אבל
- by
- נקרא
- CAN
- לא יכול
- מסוגל
- זהיר
- מקרה
- מקרים
- קטסטרופלי
- לגרום
- גורם
- זהירות
- מסוים
- לאתגר
- סיכוי
- שינוי
- ילדים
- שבב
- בחרו
- בחירה
- נתבע
- בבירור
- ענן
- אחסון ענן
- קוד
- מטבעות
- שילוב
- שילובים
- מסחרי
- Common
- בדרך כלל
- להעביר
- חברות
- חברה
- של החברה
- להשלים
- לחלוטין
- מורכב
- מורכבות
- התפשר
- מתפשר
- חישובים
- מחשוב
- דאגות
- מצב
- תנאים
- כנס
- תְצוּרָה
- לְחַבֵּר
- קונסנסוס
- כתוצאה מכך
- לשקול
- נחשב
- הכלול
- נשלט
- בקרות
- לְשַׁכְנֵעַ
- לתקן
- פגום
- עלות
- יכול
- קורס
- לִיצוֹר
- יוצרים
- יצירה
- יוצר
- קריטי
- היבט קריטי
- מכריע
- כיום
- אַפּוֹטרוֹפּוֹס
- משמורת
- לקוחות
- מסוכן
- ירידה
- ירידות
- לִסְבּוֹר
- מוגדר
- דרישה
- מופגן
- פרס
- נגזר
- תיאור
- עיצוב
- מעוצב
- רצוי
- פרט
- מְפוֹרָט
- פרטים
- לאתר
- מפתחים
- מכשיר
- התקנים
- אחר
- קשה
- פוחתת
- ישירות
- דירקטורים
- נעלם
- אסון
- לגלות
- מגלה
- נָדוֹן
- דיון
- מוצג
- do
- עושה
- לא
- עשה
- לְהַכפִּיל
- ראוי
- בְּמַהֲלָך
- כל אחד
- קל יותר
- בקלות
- מאמץ
- או
- בוטל
- חיסול
- אחר
- להדגיש
- מוּעֳסָק
- לאפשר
- מופעל
- מאפשר
- סוף
- לאכוף
- מספיק
- לְהַבטִיחַ
- הבטחתי
- הזנת
- מפתה
- שלם
- לַחֲלוּטִין
- ישות
- ציוד
- שגיאות
- במיוחד
- חיוני
- למעשה
- להקים
- וכו '
- הערכה
- אֲפִילוּ
- אי פעם
- כל
- הכל
- בדיוק
- דוגמה
- דוגמאות
- נרגש
- לבצע
- יצא לפועל
- תרגיל
- קיום
- צפוי
- ניסיון
- תפוגה
- לנצל
- חוקר
- יצוא
- משתרע
- חיצוני
- קיצוני
- לְהַקֵל
- גורמים
- נכשל
- כשלון
- למדי
- ליפול
- רחוק
- מאפיין
- תכונות
- פבואר
- מעטים
- סופי
- כספי
- היסטוריה פיננסית
- ראשון
- גמיש
- Flip
- להתמקד
- הבא
- כדלקמן
- בעד
- לנצח
- קדימה
- ארבע
- מסגרות
- בתדירות גבוהה
- חבר
- החל מ-
- מלא
- לגמרי
- פונקציונלי
- קרן
- כספים
- יתר על כן
- חסר תוחלת
- עתיד
- מטרה כללית
- בדרך כלל
- ליצור
- נוצר
- מייצר
- יצירת
- דור
- נתן
- Go
- הולך
- טוב
- גדול
- מאוד
- היה
- חצי
- חומרה
- מכשיר חומרה
- ארנק חומרה
- יצרן ארנק חומרה
- ארנקים חומרה
- מזיק
- יש
- יש
- לעזור
- ומכאן
- היסטוריה
- להחזיק
- לקוות
- המארח
- אירח
- חַם
- איך
- אולם
- http
- HTTPS
- עצום
- בני אדם
- רעיון
- אידאל
- רעיונות
- לזהות
- if
- מיד
- פְּגִיעָה
- השפעה
- יושם
- לייבא
- חשוב
- בלתי אפשרי
- לשפר
- in
- כולל
- כולל
- שילוב
- עליות
- מדהים
- אכן
- עצמאי
- בנפרד
- תעשייה
- מידע
- מטבע הדברים
- בתחילה
- בתוך
- Insider
- לעורר
- התקנה
- למשל
- במקום
- בכוונה
- אינטראקציה
- אינטראקטיבי
- אינטרס
- מעוניין
- מעניין
- מִמְשָׁק
- אל תוך
- מבוא
- הציג
- מציג
- פולשני
- מעורבות
- מעורב
- סוגיה
- IT
- שֶׁלָה
- עצמו
- רק
- רק אחד
- מפתח
- מפתחות
- לדעת
- ידע
- ידוע
- נוף
- שפה
- מחשב נייד
- אחרון
- מאוחר יותר
- עורך דין
- מוביל
- לִלמוֹד
- למידה
- הכי פחות
- פנקס
- עזבו
- לגיטימי
- פחות
- לתת
- רמה
- מינוף
- כמו
- סביר
- צמוד
- ברשימה
- טוען
- מקומי
- מקומות
- נעול
- ארוך
- עוד
- נראה
- נראה כמו
- להפסיד
- לאבד
- את
- אבדות
- אבוד
- מכונה
- ראשי
- הרוב
- לעשות
- עושה
- עשייה
- תוכנות זדוניות
- מצליח
- ניהול
- מניפולציה
- דרך
- יַצרָן
- התעשיינים
- רב
- צעדה
- להתאים
- מאי..
- אומר
- אמצעים
- מנגנון
- בינוני
- מוּזְכָּר
- רק
- הודעה
- הודעות
- שיטה
- שיטות
- מיאמי
- יכול
- מיניסקריפט
- מיעוט
- דקות
- משימה
- טעויות
- מודל
- כסף
- ניטור
- חודשים
- יותר
- יתר על כן
- רוב
- בעיקר
- המהלך
- נִרגָשׁ
- הרבה
- מספר
- מולטי-סיג
- צריך
- שם
- מתקרב
- הכרחי
- צורך
- נחוץ
- צרכי
- באופן שלילי
- רשתות
- לעולם לא
- חדש
- חדשות
- הבא
- נחמד
- לא
- לא טכני
- נוֹרמָלִי
- נוֹבֶמבֶּר
- נובמבר 2021
- עַכשָׁיו
- מספר
- מספרים
- משיג
- of
- הַצָעָה
- הצעה
- המיוחדות שלנו
- לא מחובר
- on
- Onboarding
- פעם
- ONE
- יחידות
- רק
- לפתוח
- קוד פתוח
- נפתח
- פועל
- תפעול
- הזדמנויות
- אפשרויות
- or
- להזמין
- אחר
- אַחֶרֶת
- שלנו
- הַחוּצָה
- המתואר
- בחוץ
- יותר
- מקיף
- סקירה
- שֶׁלוֹ
- בעלים
- מאמר
- הגדול ביותר
- חלק
- במיוחד
- צד
- נתיב
- תשלום
- לְבַצֵעַ
- אוּלַי
- תקופה
- לצמיתות
- שלב
- טלפון
- מקום
- מקומות
- אפלטון
- מודיעין אפלטון
- אפלטון נתונים
- נקודה
- נקודות
- מדיניות
- מדיניות
- פופולרי
- אפשרויות
- אפשרי
- יִתָכֵן
- הודעה
- פוטנציאל
- פוטנציאל
- כּוֹחַ
- מעשי
- לְמַעֲשֶׂה
- תרגול
- צורך
- בדיוק
- לחזות
- צפוי
- נוכחות
- להציג
- מוצג
- למנוע
- מונע
- קודם
- קוֹדֶם
- בראש ובראשונה
- יְסוֹדִי
- הדפסה
- קודם
- פְּרָטִיוּת
- פְּרָטִי
- מפתח פרטי
- מפתחות פרטיים
- בעיה
- בעיות
- הליך
- תהליך
- לייצר
- מיוצר
- ייצור
- כמו שצריך
- נכסים
- רכוש
- מוּצָע
- להגן
- מוּגָן
- אבטחה
- .
- פרוטוקול
- פרוטוקולים
- להוכיח
- לספק
- ובלבד
- ציבורי
- מפתח ציבורי
- מפתחות ציבוריים
- לפרסם
- לאור
- הוצאה לאור
- מטרה
- גם
- מכניס
- שאלה
- גזע
- אקראי
- כופר
- במקום
- לְהַגִיעַ
- חומר עיוני
- קורא
- מימוש
- טעם
- קבלה
- לאחרונה
- להכיר
- שיא
- התאוששות
- מתייחס
- הירשם
- רשום
- רישום
- יחסית
- לשחרר
- שוחרר
- לסמוך
- לזכור
- להחליף
- לייצג
- מיוצג
- מוניטין
- לדרוש
- נדרש
- דורש
- וכתוצאה מכך
- לִשְׁמוֹר
- לַחֲזוֹר
- לגלות
- תקין
- הסיכון
- סיכונים
- מְסוּכָּן
- מפת דרכים
- חָסוֹן
- איתנות
- תפקיד
- תפקידים
- ריצה
- פועל
- אותו
- לומר
- בקרת מערכות ותקשורת
- סריקה
- תרחיש
- תכנית
- תוכניות
- שנור
- מסך
- סקריפטים
- שְׁנִיָה
- סעיף
- לבטח
- מאובטח
- אבטחה
- לִרְאוֹת
- זרע
- זרעים
- מחפשים
- נראה
- נראה
- SegWit
- משמורת עצמית
- שליחה
- רגיש
- נשלח
- נפרד
- שרות
- סט
- התקנה
- כמה
- קצר
- צריך
- הראה
- סִימָן
- חתימות
- משמעותי
- באופן משמעותי
- חתימה
- שלטים
- דומה
- פָּשׁוּט
- מפשט
- since
- יחיד
- קטן
- חכם
- So
- תוכנה
- פִּתָרוֹן
- פתרונות
- לפתור
- כמה
- מישהו
- בקרוב
- מתוחכם
- מָקוֹר
- מֶרחָב
- מתמחים
- ספציפי
- מפרטים
- לבלות
- הוצאה
- תֶקֶן
- עומד
- התחלות
- מצב
- שלב
- צעדים
- עוד
- אחסון
- מאוחסן
- אחסון
- אסטרטגיות
- כוח
- מחרוזת
- חזק
- מַאֲבָק
- מוצלח
- בהצלחה
- כזה
- לסכם
- לְגַדֵשׁ
- תמיכה
- מסייע
- תומך
- אמור
- מערכתי
- סיכון מערכתי
- מערכות
- ציוד
- לקחת
- טמפרוט
- יעד
- מיקוד
- טכני
- מבחינה טכנית
- טכנולוגיה
- מונחים
- מֵאֲשֶׁר
- זֶה
- השמיים
- המטבעות
- שֶׁלָהֶם
- אותם
- עצמם
- אז
- שם.
- בכך
- לכן
- אלה
- הֵם
- דברים
- לחשוב
- שְׁלִישִׁי
- זֶה
- אלה
- איומים
- שְׁלוֹשָׁה
- סף
- דרך
- כָּך
- זמן
- דורש זמן רב
- ל
- היום
- של היום
- גַם
- כלים
- נושאים
- סה"כ
- לקראת
- עקבות
- לעקוב
- לעקוב אחר
- רכבת
- עסקה
- עסקות
- מעברים
- לתרגם
- האוצר
- עצים
- נָכוֹן
- סומך
- מהימן
- חסר אמון
- אמת
- לפתול
- שתיים
- סוגים
- טיפוסי
- לא מסוגל
- להבין
- משחרר
- בניגוד
- לפתוח
- פותח
- בלתי צפוי
- עד
- שדרוג
- us
- שמישות
- להשתמש
- מְשׁוּמָשׁ
- משתמש
- חוויית משתמש
- משתמשים
- שימושים
- באמצעות
- לנצל
- מנוצל
- ניצול
- ux
- לְאַמֵת
- מגוון
- שונים
- Vast
- מוכר
- מְאוּמָת
- לאמת
- גרסה
- מאוד
- בַּר חַיִים
- חיוני
- פגיעויות
- לחכות
- ארנק
- ארנקים
- רוצה
- היה
- דֶרֶך..
- דרכים
- we
- היו
- מה
- מתי
- בכל פעם
- אם
- אשר
- בזמן
- כל
- למה
- ויקיפדיה
- יצטרך
- עם
- בתוך
- לְלֹא
- מילים
- עוֹלָם
- היה
- כתוב
- טעות
- שנה
- עוד
- אתה
- עצמך
- זפירנט
- אפס