LLVM מוסיף intrinsic-ים בזמן קבוע כדי להגן על קוד קריפטוגרפי

Trail of Bits העביר תמיכה בזמן-קבוע ל-LLVM (הוצע ל-LLVM 22) על ידי הוספת intrinsic בשם __builtin_ct_select (llvm.ct.select.*) שאומר לקומפיילר לאלתר בחירה מותנית שתתורגם לקוד מכונה בזמן-קבוע. על x86-64 זה יורד ל-cmov, על AArch64 ל-CSEL, וביעדים אחרים יש החזרה לאריתמטיקה במסכה. מדדי ביצועים של ETH Zürich (חבילת Breaking Bad) ואינטגרציות מוקדמות (HACL*, Fiat-Crypto, BoringSSL, HACL*) מראים שה-intrinsics שומרים על תכונות זמן-קבוע ברמות אופטימיזציה שונות עם עלות ביצועים מינימלית. העבודה מתייחסת לסיכון ישן בקומפיילר שבו קוד מקור ללא פורקים (branchless) ובזמן-קבוע יכול להיות מומר לסניפים התלויים בנתונים, מה שמאפשר התקפות צד-ערוץ תזמוניות על סודות קריפטוגרפיים. Trail of Bits מתכננת intrinsic נוספים לאריתמטיקה בזמן-קבוע ולמחסומי ביטוי מלא והשינוי עורר עניין בקהילות Rust, Swift ו-WebAssembly, כלומר כל שפה שמיועדת ל-LLVM יכולה לאמץ זאת. עבור סוחרי קריפטו, השינוי מצמצם קטגוריה של פגיעויות ביישום בספריות קריפטו וכלי-שרשרת נפוצים, ומפחית את הסיכון התפעולי לשירותי נאמנות, בורסות ופרויקטי DeFi התלויים בקריפטוגרפיה בתוכנה.
Neutral
מדובר בראש ובראשונה בשיפור אבטחה וכלי פיתוח ולא באירוע שמזיז ישירות את מחירי הטוקנים. על ידי הפחתת קטגוריית פרצות יישום בספריות קריפטוגרפיות ובקומפילרים, השינוי מוריד את הסיכון התפעולי וסיכון הביצוע עבור שירותים שמנהלים נכסי קריפטו (צ׳אוסטודיאנים, בורסות, ארנקים, DeFi). זה מצמצם את סיכון הזנב עבור פרויקטים ספציפיים התלויים בספריות המושפעות, מה שתרומתו היא ליציבות שוק לטווח הארוך, אך לא צפוי ליצור לחץ קנייה מיידי או לשנות באופן מהותי שוויי טוקן בטווח הקצר. השפעה בטווח הקצר: מזערית — סוחרים סביר שלא יגיבו בשינויי פוזיציות גדולים רק בעקבות עדכון כלי זה. השפעה בטווח הארוך: חיובית במתינות — הבטחות קומפילר משופרות יכולות להפחית את האפשרות לניצול מפתחות פרטיים ומימושים בעתיד, ולהקטין סיכון מערכתי ופרמיית אבטחה נוספת לפרויקטים שמאמצים את toolchain. בסך הכול, העדכון חיובי מבחינת אבטחה אבל אינו מניע מחירי נכסים בפני עצמו.