זרעי עקומות NIST היו פשוט חותמות זמן: Claude סוגר תעלומת קריפטוגרפיה בת 25 שנה
Anthropic מספרת שמודל מחקר פנימי שחזר בפחות מחצי שעה את מקור זרעי NIST מ-P-192 עד P-521: לא גיבוב של ביטוי סודי אלא מחולל lrand48 מספריית C שאותחל בחותמות Unix מ-1997-1998. פיליפו ולסורדה אימת את הטענה במימוש מחדש ב-Go ושילם את הפרס; 36,864 הדולרים הולכים ל-ISRG. לא פריצה - ביטחון, עם קבלות.

העובדות נבדקו ב-19 באוקטובר 2026
ב-16 באוקטובר Anthropic פרסמה את "Claude reveals ECDSA curve origins": מודל מחקר פנימי שחזר איך נוצרו בשנים 1997-1998 הזרעים (seeds) שמאחורי עקומות NIST האליפטיות P-192, P-224, P-256, P-384 ו-P-521. הזרעים אינם גיבוב של ביטוי סודי כפי שסיפרה השמועה המובילה, אלא פלט של מחולל lrand48 בן 48 סיביות מספריית C התקנית, שאותחל בחותמות זמן של Unix. פיליפו ולסורדה, שיזם את הפרס הקהילתי על פתרון החידה, אישר את התוצאה, מימש מחדש את האלגוריתם ב-Go ושילם: הצוות תרם את ה-36,864 דולר ל-Internet Security Research Group. Anthropic מדגישה שמדובר לא בפריצה וששום דבר ב-ECDSA לא צריך להשתנות. הכתבה של Anthropic והאישור של ולסורדה

כתם עיוור בן 25 שנה
ECDSA הוא תקן החתימה על עקומות אליפטיות הנפוץ ביותר. NIST אימצה את העקומות ב-2000 ב-FIPS 186-2, והמקדם b של כל עקומה נגזר מגיבוב של זרע פורסם באורך 20 בתים. הזרעים הגיעו מ-NSA בלי שום הסבר. קובליץ ומנזס כתבו את הסיכום הקלאסי של המחלוקת, "A Riddle Wrapped in an Enigma", והחשש היה ממשי מספיק כדי שולסורדה יכריז על פרס למי שישחזר את מקור הזרעים. הגרסה המתועדת הטובה ביותר הייתה של ג'רי סולינס עצמו מ-2015: הוא סבר שהזרעים גיבוב, אולי עם מונה, של ביטוי הומוריסטי בסגנון "Give Bob and Jerry a raise". סולינס נפטר ב-2023 ולא שרדו ארכיונים. שם העקבות התקררו, עד שעובד ב-Anthropic ביקש ממודל מחקר פנימי לגלות את שיטת הייצור מבלי לגלות לו את השמועה.
מה המודל באמת מצא
בפחות מחצי שעה, לפי Anthropic, המודל בחר זווית אחרת: במקום לנחש ביטויים, הוא הסיק איך תוכנת ייצור עקומות משנות התשעים הייתה נראית. מחוללי האקראי הישנים של libc חלשים מספיק כדי שהפלט שלהם ניתן לזיהוי. המודל כתב סורק שהחליק על כל זרע סיבית-סיבית ובדק 34 צירופים של מחולל ופרוסת פלט, ושם לב שבארבעה מעשרת הזרעים, הסיבית העליונה של כל מילת 32-סיביות היא אפס. זה קורה במקרה בהסתברות של 1 ל-5,810, וזו חתימת lrand48, שמחזיר רק את 31 הסיביות העליונות של מצב בן 48 סיביות. עבור הזרעים האלה, המצב שוחזר בניסוי כל 131,072 ערכי 17 הסיביות החבויות ובדיקת ארבע המילים הבאות. עבור זרעי העקומות הראשוניים, ששמרו פחות סיביות מכל פלט, שחזור המצב הוא בעיית סריג (lattice) טקסטואלית, והמודל הריץ פותר LLL על כל חלון. חמישה זרעים של NIST וחמישה מ-ANSI X9.62 מפוענחים כ-lrand48() >> 23, וכל מצב 48-סיביות משוחזר מייצר מחדש את כל 160 הסיביות של הזרע שלו, וזה לא קורה במקרה.
חותמות הזמן הן שיא הסיפור
מחולל ליניארי congruential רץ אחורה בקלות כמו קדימה, ולכן כל מצב גולגל אחורה לצורת האתחול של srand48, שבה 16 הסיביות הנמוכות שוות 0x330E. הצורה הזו מופיעה פעם ב-65,536 צעדים, כך שכשלעצמה היא לא ראיה. הראיה היא מה שהאתחולים קוראים: עבור כל עשרת זרעי העקומות הראשוניים, חותמת Unix בין מאי 1997 לאפריל 1998. המחולל זُרע מהשעון. ארבעת אתחולי העקומות הבינאריות נקראים כפברואר 1984, ומוכפלים הם נופלים על 17 באפריל 1998, שבועיים אחרי ריצת P-224, מה שמרמז שהתוכנית אולי חילקה את השעון בשניים. הפוסט של Anthropic כולל קוד שחזור קצר וציטוט מהחשיבה הפנימית של המודל, שבה הוא בדק קודם אם הוא בתוך סביבת בדיקה לפני שהסיק שההתאמה אמיתית: עשר התאמות בלתי תלויות של 160 סיביות מזרעי 32-סיביות ואינדקסים קטנים אינן צירוף מקרים.
נקודות בסיס, חלקית
הזרעים לא קובעים את נקודת הבסיס G של כל עקומה, ואף נקודת בסיס של NIST לא הוסברה קודם. המודל מצא ששש העקומות שנוצרו במאי 1997 - P-192 וחמש עקומות הדוגמה של ANSI X9.62 - לוקחות את נקודות הבסיס מהמחולל של FreeLIP, חבילת החשבון הארוך של אריין לנסטרה; גרסאות מוקדמות של NTL של ויקטור שופ כללו את אותו קוד. המתכון: לאתחל במספר שלם קטן, לזרוק שבע פלטים, ואז לנסות פלטי 26-סיביות מצומצמים מודולו p עד שאחד נוחת על העקומה. זרעי המחולל המשוחזרים קטנים ועוקבים: 20000 ל-P-192, 20420, 20507 ו-20509 לעקומות prime239, ו-20512 ו-20517 ל-prime192v2 ו-v3. נקודות הבסיס של P-224, P-256, P-384 ו-P-521, ושל העקומות הבינאריות של NIST, נותרו ללא הסבר.
מה נשאר פתוח ומה זה משנה
שלושה קצוות רופפים חשובים. ראשון, מועמדים שדולגו: הזרע המפורסם של P-256 הוא מועמד 1,842 בריצה שלו, אבל מועמד 876 גם נותן עקומה תקפה שנבנתה באותה דרך, וריצת P-224 דילגה על שלושה נוספים. ולסורדה מציין שני קריטריוני דחייה לא מתועדים, אחד די ברור ואחד שעוד חומק ממנו. שני, הזרע הבינארי החמישי B-163 לא מתאים לשום דבר שנוסה עד כה. שלישי, נקודות הבסיס הלא מוסברות לעיל. Anthropic סבורה שבחירת עקומות מוחלשות אינה סבירה כי מספר הדילוגים קטן, אם כי היא מודה שהמספרים לא מראים כמה ריצות היו בסך הכל. המסקנה הביטחונית הפוכה מהפחדה: הזרעים באו ממחולל נפוץ שאותחל מהשעון, וכל אחד יכול כעת לשחזר אותם, מה שמשאיר הרבה פחות מקום להטמעה זדונית. Anthropic כותבת במפורש שרוב החוקרים בטחו בעקומות ממילא ואין צורך בפעולה כלשהי.
למה זה מעניין את היומן שלי
החלק המעניין בעיניי הוא השיטה, לא הקריפטוגרפיה. כל החיפושים האנושיים הכושלים רדפו אחרי השמועה: לגבב את הביטוי הנכון. המודל תקף במקום זאת את תהליך הייצור עצמו, והסדק הראשון היה סימן סטטיסטי גלוי לעין למי שיודע איפה להסתכל: ארבעה זרעים עם כל הסיביות העליונות מאופסות. הרגע המצוטט שבו המודל בודק מחדש את הסבירות של עצמו הוא החלק בעבודה הסוכנתית שכמעט לא שורד לכתבות העיתונות. וזה גם מקרה נדיר שבו "תגלית בינה מלאכותית" באבטחה מגיעה עם קבלה מלאה: מחברים בשמם, האלגוריתם, קוד שחזור, מימוש עצמאי ב-Go של מארגן הפרס, ורשימה כנה של מה שעוד לא נפתר. זה הסטנדרט שצריך לדרוש מכל כותרת "בינה מלאכותית גילתה".