כדי להגן על רזרבות הביטקוין של המוסד בלי ליצור נקודת פגיעה אחת, אפשר להפיץ את מפתחות החתימה בין מובלעות מבודדות ברמת החומרה באמצעות Google Cloud חישוב רב-משתתפים. במסמך הזה אנחנו משווים בין Cloud Key Management Service (Cloud KMS) ו-Cloud HSM לבין חישוב רב-משתתפים, בוחנים את שני מודלי האבטחה למשמורת על ביטקוין ומציגים טופולוגיית עזר.
כשמעבירים את משמורת הביטקוין לענן, צריך לבחור בין שתי ארכיטקטורות של ניהול מפתחות:
- מודולים של אבטחת חומרה (HSM) עם מפתח יחיד: Cloud KMS ו-Cloud HSM מנהלים מפתחות קריפטוגרפיים סטטיים בתוך גבולות פיזיים של HSM.
- חתימה מבוזרת עם סף: חישוב רב-משתתפים מפיץ את חלקי המפתח בסביבות מחשוב אמינות (TEE) מבודדות בחומרה, שמגובות במפתחות HSM של שורש האמון.
שירותי Cloud KMS ו-Cloud HSM תומכים בהצפנת מעטפה ארגונית ובתשתית של מפתח ציבורי באינטרנט. עם זאת, הם לא תוכננו לפרימיטיבים של משמורת ביטקוין, כמו גזירת מפתחות דטרמיניסטית היררכית (HD) במסגרת הצעת השיפור של ביטקוין 32 (BIP32), חתימת Schnorr של BIP340 וניהול מפורט של מספר גורמים.
האתגרים העיקריים בשמירה על ביטקוין בענן
בטבלה הבאה מפורטים שלושה אתגרים עיקריים שבהם נתקלים כשבוחנים שירותים סטנדרטיים לניהול מפתחות בענן לצורך משמורת על ביטקוין, ואיך חישוב רב-משתתפים נותן מענה לכל דרישה.
| דרישה | מגבלה ב-Cloud KMS וב-Cloud HSM | איך חישוב רב-משתתפים עונה על הדרישה הזו |
|---|---|---|
| הפקת מפתחות BIP32 |
מחיצות Cloud HSM עם כמה דיירים מיועדות לניהול מפתחות סטטי ושטוח, כמו הצפנת מעטפה ארגונית. כדי לשמור על אבטחה ברמת ה-hypervisor בסביבות ענן משותפות, ספקי שירותי ענן לא מאפשרים מודולים של קושחת HSM בהתאמה אישית, ולכן Cloud HSM לא יכול לחשב נתיבי גזירה של BIP32 באופן מקורי. בגלל המגבלה הזו, ב-Cloud KMS נדרשת ארכיטקטורה של מפתחות שטוחים. האפליקציות צריכות לעקוב אחרי משאבי מפתחות נפרדים או להפיק מפתחות צאצא בזיכרון מארח לא מוצפן. |
חישוב רב-משתתפים משתמש בהומומורפיזם הליניארי של תוכנית הטווח המונוטונית DKLS23 כדי לחשב באופן מקומי נתיבי נגזרת BIP32 לא מוקשחים. כל צומת מחשב באופן עצמאי את שינוי הסקלר הציבורי ( בארנקים עם מפתח יחיד, אם גם מפתח ציבורי מורחב של הורה ( |
| נקודת פריצה אחת |
המפתח הפרטי המלא נמצא בתוך גבול פיזי אחד של HSM. אם פרטי הכניסה נחשפים או שיש איום פנימי, כל הארנק נחשף. |
המפתח הפרטי המלא לא קיים כטקסט פשוט באף מיקום. החלקים של המפתח מופצים באופן מתמטי בין צומתי מחשוב עצמאיים. |
| גמישות אלגוריתמית (Schnorr ו-Taproot) |
מחזורי החומרה הפיזיים של HSM הם איטיים. כדי להוסיף תמיכה בעקומות אליפטיות או בסכימות חתימה כמו BIP340 Schnorr בעקומה |
פעולות קריפטוגרפיות פועלות בתוך מובלעות של Confidential VM שמבודדות ברמת החומרה, וכך אפשר להשתמש בחישוב רב-משתתפים כדי לעדכן פרוטוקולים בלי לשנות את הגבול הפיזי של ה-HSM. |
השוואה בין Cloud KMS לבין חישוב רב-משתתפים
כשאתם מתכננים תשתית לחתימה על נכסים דיגיטליים ב- Google Cloud, אתם יכולים להעריך את מודל ה-HSM עם מפתח יחיד בהשוואה למודל הסף המבוזר.
מודל Cloud KMS ו-Cloud HSM עם מפתח יחיד
בפריסה של Cloud KMS, Cloud HSM יוצר מפתח חתימה אסימטרי שמשתמש באלגוריתם EC_SIGN_SECP256K1_SHA256 ישירות בתוך HSM פיזי עם אישור FIPS 140-2 ברמה 3. באיור הבא אפשר לראות איך שכבת האפליקציה יוצרת אינטראקציה עם Cloud HSM כשמפיקים מפתחות צאצא:
הארכיטקטורה הזו מספקת אימות מנוהל של FIPS 140-2 ברמה 3, ומפיקה חתימות מנורמלות של secp256k1 אלגוריתם חתימה דיגיטלית של עקום אליפטי (ECDSA) עם S נמוך, שרשת הביטקוין מקבלת. עם זאת, יש שתי מגבלות ארכיטקטוניות למשמורת על ביטקוין:
- פרגמנטציה של ניהול מפתחות: מכיוון ש-Cloud HSM לא יכול לחשב נתיבי גזירה של BIP32, האפליקציה צריכה לעקוב אחרי מיליוני מזהי משאבים נפרדים של
CryptoKeyב-Cloud KMS, ולהסיר תהליכי עבודה של שחזור משורש יחיד. - סיכון לחשיפת הזיכרון: כדי לבצע גזירה מוקשחת, האפליקציה צריכה לייצא את ה-seed הבסיסי לזיכרון המארח, מה שפוגע בהיקף האבטחה של החומרה.
מודל סף של חישוב רב-משתתפים מבוזר
בחישוב רב-משתתפים מוטמעת גרסה מוקשחת של פרוטוקול ECDSA עם סף DKLS23. במקום ליצור מפתח אחד שלם, צמתים עצמאיים שפועלים בתוך Confidential Space במובלעות מוצפנות בחומרה של AMD SEV-SNP יוצרים ומחזיקים נתחי מפתחות מתמטיים. למידע נוסף על הפרוטוקול, ראו רקע קריפטוגרפי של DKLS23.
באיור הבא מוצג איך החתימה מופצת בחישוב רב-משתתפים בין צומתי TEE שמגובים במפתחות הצפנה של מפתחות HSM עצמאיים:
למודל הסף המבוזר הזה יש שלושה יתרונות אבטחה עיקריים:
- אין מפתח פרטי מלא: אין מכשיר פיזי, מובלעת או מפעיל שמחזיקים במפתח הפרטי המלא.
- שורש אמון (root of trust) מעוגן בחומרה: חלקי המפתחות מוצפנים במנוחה באמצעות מפתחות להצפנת מפתחות (KEK) שמוגנים על ידי מחיצות Cloud HSM עם אישור FIPS 140-2 ברמה 3, או על ידי מודולי אבטחה לחומרה (HSM) מקומיים חיצוניים שמחוברים באמצעות Cloud External Key Manager.
- פענוח באמצעות אימות: Cloud KMS פותח את המפתחות ששותפו בזיכרון של המובלעת רק כשציטוט של אימות חומרה מאשר שהצומת מריץ קובצי אימג' מאומתים של קונטיינר Multi-party Compute שלא בוצעו בהם שינויים.
מנגנונים קריפטוגרפיים ל-BIP32 ול-Taproot
כשאתם בודקים חתימה על סף למשמורת על ביטקוין, ודאו שהפרוטוקול תומך בהפקת כתובות היררכיות ובשינוי Taproot בלי להוסיף סבבי רשת בין צמתים.
גזירה אדיטיבית לא מוקשחת של BIP32
ב-BIP32, הנגזרת של מפתח פרטי צאצא לא מוקשח מוגדרת כתוספת סקלרית מודולרית:
\[ k_{\text{child} } = (k_{\text{par} } + \text{parse}_{256}(I_L)) \bmod n \]
מכיוון שחישוב רב-משתתפים משתמש בתוכנית לינארית של שיתוף סודות שמבוססת על תוכניות מונוטוניות של טווחים, צומתי המשתתפים מפיקים שיתופי מפתחות צאצאים באופן מקומי עם אפס סבבים של תקשורת ברשת. התרשים הבא ממחיש את תהליך ההסקה המקומי הזה, שמתבצע ללא סבבים:
שינוי מפתח Taproot לפי BIP341
המאפיין הליניארי הזה תומך גם בשינוי מפתח Taproot של BIP341 בלי לשנות את ההפצה של שיתוף המפתחות הבסיסי:
\[ Q = P + t \cdot G \quad \text{where} \quad t = H_{\text{TapTweak} }(P \parallel \text{MerkleRoot}) \]
לפני ההשתתפות בטקס החתימה על הסף, צומת משתתף מחיל את השינוי הסקלרי (t) ישירות על שיתוף המפתח המקומי שלו. היכולת הזו מאפשרת לכם לבצע פעולות בעצי סקריפטים של Taproot, ב-Ordinals וב-Discreet Log Contracts בלי ליצור מחדש או לשתף מחדש מפתחות.
השוואה בין ארכיטקטורות
בטבלה הבאה מוצגת השוואה בין Cloud KMS ו-Cloud HSM לבין חישוב רב-משתתפים, לפי מאפייני המשמורת העיקריים.
| מאפיין ארכיטקטוני | Cloud KMS ו-Cloud HSM | חישוב רב-משתתפים |
|---|---|---|
| פרימיטיבים קריפטוגרפיים | ECDSA עם חתימה אחת בעקומת secp256k1 |
Threshold ECDSA (DKLS23) ו-Threshold Edwards-curve Digital Signature Algorithm (EdDSA) בעקומת Ed25519, עם אפשרות הרחבה ל-Threshold Schnorr בעקומת secp256k1 |
| גבולות החומרה | כרטיס PCIe HSM פיזי | מובלעות AMD SEV-SNP Confidential Space שעוגנו ב-Cloud HSM root of trust |
| תמיכה בארנק BIP32 HD | ניהול ידני של מפתחות Cloud KMS נפרדים | שינוי מקומי של שיתוף מפתחות אדיטיביים ללא סבבים |
| הגנה על מפתח פיזי | FIPS 140-2 ברמה 3 | FIPS 140-2 ברמה 3 למפתחות KEK ששמורים ב-HSM ועוטפים את חלקי המפתחות |
| זמן אחזור של חתימה (p95) | 20-50 אלפיות השנייה | פחות מ-1,000 אלפיות השנייה (פחות משנייה) באזורים מבוזרים |
| היקף ההשפעה של פריצה לפרטי כניסה | חשיפה מלאה של המפתח אם פרטי הכניסה של מבצע הקריאה או כללי המדיניות של ניהול זהויות והרשאות גישה (IAM) נחשפים | אין חתימה לא מורשית, אלא אם תוקף פורץ למספר מסוים של מובלעות ו-KEK בו-זמנית |
| יכולת ביקורת | יומני ביקורת של Cloud | יומני ביקורת של Cloud ויומני אימות חומרה של הצדקות גישה למפתחות (KAJ) |
ההתפתחות מ-BIP32 לניהול מפתחות סף
כשאתם מתכננים פלטפורמה פנימית לשמירה על נכסים דיגיטליים, חשוב להבחין בין תקני גזירה שנוצרו לארנקי חומרה נפרדים לבין ניהול מפתחות מבוזר שמיועד לניהול מוסדי. למרות ש-BIP32 נמצא בשימוש נרחב למעקב אחרי כתובות, הסתמכות על עצי גזירה של BIP32 לצורך אבטחה בתוך ארכיטקטורת חישוב רב-משתתפים (MPC) היא מיותרת ויכולה להוסיף מורכבות תפעולית.
ההקשר ההיסטורי של ארנקי BIP32 עם גרעין יחיד
פרוטוקול BIP32 תוכנן בהתאם למגבלות של משמורת עצמית של אדם פרטי, לפני שקריפטוגרפיית סף ומובלעות חומרה הפכו לזמינות באופן נרחב:
- תלות ב-Root seed: בתחילת הדרך, משמורת על ביטקוין התבססה על אבטחה פיזית של ביטוי תזכורת יחיד שקריא לאנשים, באורך של 12 או 24 מילים.
- שחזור מגיבוי יחיד: ארנקי BIP32 HD מאפשרים לאדם פרטי לגבות ביטוי סיד אחד ולהפיק כתובות באופן דטרמיניסטי בכמה חשבונות.
- נקודת כשל בודדת: ביטוי ה-seed המנמוני הבסיסי מייצג נקודת כשל בודדת. אם תוקף מצליח לפרוץ לביטוי או לגיבוי הפיזי, כל המפתחות הפרטיים המשניים שנגזרו ממנו בכל החשבונות נחשפים.
האיור הבא ממחיש איך פריצה ל-seed בודד של שורש חושפת כל חשבון צאצא שנגזר ממנו:
הסרת ה-root seed באמצעות חתימה עם סף
בארכיטקטורת ענן מוסדית של אפס אמון, לא נדרש ביטוי סיד בסיסי קריא לאנשים. חישוב רב-משתתפים מבטל לחלוטין את המפתח הפרטי המרכזי ברמה הבסיסית (root). אין מפתח פרטי מלא שקיים כטקסט פשוט במכונה אחת או במדיה אחת לגיבוי, ולכן לא צריך שחזור כתובת באמצעות ביטוי אחד. במקום להפיק עץ מפתחות מסוד אחד, בחישוב רב-משתתפים מפיצים מפתחות משותפים עצמאיים בין מובלעות מבודדות מבחינה קריפטוגרפית.
השוואה בין נתיבי גזירה של BIP32 בחישוב רב-משתתפים
אם השילוב שלכם דורש תאימות ל-BIP32 בשביל מעקבי כתובות חיצוניים או תהליכי עבודה של הנהלת חשבונות, השוו בין שני נתיבי ההטמעה הטכניים בטבלה הבאה.
| שיטת הטמעה | מנגנון קריפטוגרפי | פרופיל אבטחה וחשיפה | זמן אחזור וביצועי חתימה |
|---|---|---|---|
| BIP32 לא מוקשח עם חישוב רב-משתתפים |
כוונון מקומי של תוספים:
כל צומת מחשב את היסט הסקלר הציבורי ( |
|
|
| BIP32 מוקשח עם חישוב רב-משתתפים |
גיבוב (hash) אינטראקטיבי של |
|
|
המלצות למשמורת מוסדית
כדי לאפשר תאימות למערכות קיימות ולכלי מעקב חיצוניים אחרי כתובות, בחישוב רב-משתתפים יש תמיכה בגזירה אדיטיבית של BIP32 לא מוקשח. למשמורת מוסדית ייעודית, כדאי לשקול מעבר למפתחות סף עצמאיים שמנוהלים ישירות בחישוב רב-משתתפים:
- ביטול התלות ב-root יחיד: יצירה, החלפה וגיבוי של שיתופי מפתחות עצמאיים בתוך מובלעות מבודדות, במקום להפיק מפתחות כהיסטים מתמטיים ממפתח root יחיד.
- הגברת הגמישות של האלגוריתם: הפרדת שכבת התזמור מנתיבי הנגזרת של BIP32 הספציפיים לביטקוין, כדי שתוכלו לאמץ סכימות חתימה שאינן ECDSA, כמו סכימת החתימה
Ed25519לרשתות של חוזים חכמים, במסגרת מודל ניהול אחד. - הפחתת המורכבות של החתימה: ניהול מפתחות סף נפרדים כדי לפשט את החיפושים במסד הנתונים, לשמור על תמציתיות של בקשות העסקאות ולצמצם את זמן האחזור של החתימה.