אימות דו-שלבי ב-SMS כבר לא מגן על כלום: במה להשתמש במקומו

NIST סיווג SMS כאמצעי אימות מוגבל. החלפת SIM, פרצת SS7, פישינג בזמן אמת, ובמה כדאי להחליף בפועל את הקודים שמגיעים במסרון.

|

זמן קריאה: 11 דקות

אימות דו-שלבי ב-SMS כבר לא מגן על כלום: במה להשתמש במקומו

ב-9 בינואר 2024 הודיע חשבון ה-X הרשמי של רשות ניירות ערך האמריקאית (SEC), הרגולטור של השווקים הפיננסיים, על אישור קרנות הסל על ביטקוין, החלטה שהשוק חיכה לה חודשים. תוך דקות ספורות עלה הביטקוין ביותר מ-1,000 דולר ליחידה. אחר כך הכחישה הרשות: החשבון נפרץ. השער ירד בחזרה ביותר מ-2,000 דולר.

מה שהופך את המקרה למלמד אינו עוצמת התנועה בשוק, אלא הפשטות של האמצעי. לפי ההודעה של משרד המשפטים האמריקאי, אריק קאונסיל ג’וניור, בן 26, הדפיס תעודת זהות מזויפת במדפסת כרטיסים ניידת, נכנס לחנות של AT&T ושכנע עובד להעביר את מספר הטלפון המשויך לחשבון לכרטיס SIM שבשליטתו. לאחר מכן קיבל ב-SMS את קודי איפוס הסיסמה והעביר אותם לשותפיו. ב-16 במאי 2025 הוא נידון ל-14 חודשי מאסר.

נדרשת הבהרה אחת, שמשנה את קריאת המקרה בלי להחליש את הלקח שבו. לפי ההודעה הרשמית של הרשות, האימות הרב-שלבי בחשבון הזה בוטל ביולי 2023, לבקשת הצוות עצמו. כלומר, בעת האירוע ה-SMS לא שימש כגורם שני אלא כערוץ שחזור. וזה בדיוק מה שהופך את הדוגמה למועילה: גורם שני או דלת אחורית, מספר הטלפון נשאר הנקודה שבה השרשרת נשברת.

מה הגורם השני אמור להבטיח

העיקרון נכנס למשפט אחד. סיסמה לבדה היא משהו שאתה יודע; אליה מתווסף משהו שברשותך (טלפון, מפתח פיזי) או משהו שאתה (טביעת אצבע). מי שגונב את הסיסמה שלך מדליפת נתונים לא מחזיק בכך גם בחפץ הפיזי שלך.

ההיגיון הזה נשען על הנחה שכמעט לעולם אינה נאמרת: שהגורם השני באמת קשור לחפץ שברשותך, ושהצגתו מוכיחה משהו על המקום שבו אתה מתחבר. ה-SMS נכשל בשתי הנקודות.

SMS אינו גורם החזקה

קבלת קוד ב-SMS אינה מוכיחה שברשותך מכשיר, אלא שמספר טלפון, שהוקצה בידי מפעיל ושאותו מפעיל יכול לשנות, מצביע על מכשיר כלשהו. זה לא אותו דבר. שלושה מסלולים מנצלים את הפער הזה, והם אינם נסגרים באותה דרך.

החלפת SIM

זו התקיפה שבמקרה של הרשות, והיא אינה נשענת על שום פרצה טכנית. התוקף אוסף מידע אישי על היעד, לרוב זמין ממילא בדליפות פומביות, ואז פונה למפעיל בהתחזות לאותו אדם: הטלפון אבד, אנא העבירו את המספר ל-SIM חדש. אם הוא משכנע, או אם עובד משתף פעולה, המספר עובר ידיים וכל המסרונים מגיעים אליו. הדוח השנתי של IC3 לשנת 2024, מרכז התלונות של ה-FBI, מונה באותה שנה בלבד 982 דיווחים על החלפת SIM וקרוב ל-26 מיליון דולר הפסדים מדווחים, וזאת בהתחשב רק בקורבנות שהגישו תלונה. שום עדכון תוכנה אינו סוגר את המסלול הזה: הוא אינו מכוון אל תוכנה אלא אל תהליך עסקי שמפעילים בני אדם.

יירוט דרך SS7

Signaling System 7 הוא הפרוטוקול שמאפשר לרשתות הטלפון בעולם לדבר זו עם זו: לנתב שיחה, לנהל נדידה, למסור מסרון ממפעיל אחד לאחר. הוא תוכנן ב-1975, כשמועדון המפעילים היה סגור ומצומצם וכל אחד ראה את האחרים כראויים לאמון מעצם המבנה. לכן אין בו שום אימות מובנה בין רשתות: בקשה שנראית לגיטימית מטופלת כלגיטימית.

זו אינה חולשה תיאורטית. בדצמבר 2014 הדגימו אותה החוקרים הגרמנים טוביאס אנגל וקרסטן נול בפומבי בכנס Chaos Communication Congress: איתור מנוי ויירוט המסרונים שלו על סמך מספר הטלפון בלבד. ב-2017 אושר ניצול ממשי: המפעיל הגרמני O2-Telefónica הודה שחשבונות בנק של לקוחות רוקנו, לאחר שהתוקפים השיגו גישה לרשת של מפעיל זר והגדירו הפניית מסרונים כדי ללכוד את קודי האישור הבנקאיים.

פישינג בזמן אמת

המסלול השלישי הוא החשוב ביותר, משום שאינו תלוי בשום פרצה בתחום התקשורת ושורד כל מה שאפשר היה לתקן בשני הקודמים.

אתר מזויף מחקה בצורה מושלמת את דף ההתחברות של שירות כלשהו. אתה מקליד בו שם משתמש וסיסמה, והאתר המזויף מעביר אותם מיד לאמיתי, שמפעיל שליחת מסרון לטלפון שלך. המסרון אכן מגיע אליך, והוא אותנטי. אתה מקליד את הקוד באתר המזויף, וזה מעביר אותו בתורו תוך שניות. הפגישה נפתחת, ומי שמחזיק בה הוא התוקף.

קוראים לזה תקיפת adversary-in-the-middle. היא מתועשת: כלים כמו Evilginx, שרת פרוקסי הפוך שהופיע ב-2017, או ערכות הנמכרות במנוי חודשי, הופכים אותה לנגישה בלי שום מיומנות מיוחדת. ואגב, מה שנגנב אינו רק הקוד אלא עוגיית הפגישה, שמאפשרת אחר כך להישאר מחובר בלי לעבור שוב שום אימות.

העניין הוא ארכיטקטוני. הקוד שנשלח ב-SMS אינו נושא שום מידע על האתר שביקש אותו. לכן הוא אינו יכול להבחין בין האמיתי למזויף: הוא תקף בכל מקום שבו יוקלד.

זו כבר לא דעה, זו עמדה רשמית

הטיעון החזק ביותר נגד ה-SMS אינו מגיע מספקי פתרונות אלא מהמוסדות שכותבים את התקנים.

ביולי 2025 פרסם ה-NIST האמריקאי את הגרסה הסופית של SP 800-63B-4, Digital Identity Guidelines: Authentication and Authenticator Management. המסמך יוצר קטגוריה מפורשת של אמצעי אימות מוגבלים, השמורה למנגנונים שיכולת העמידה שלהם נשחקה עם התפתחות האיומים. סעיף 3.1.3.3 משייך לשם את השימוש ברשת הטלפון הציבורית, כלומר קודים הנשלחים ב-SMS או בשיחה קולית: «Use of the PSTN for out-of-band verification is restricted as described in this section and SHALL satisfy the requirements of Sec. 3.2.9.» למעשה, שירות שעדיין נשען על כך חייב להציע חלופה לא מוגבלת, ליידע את משתמשיו בסיכון ולהחזיק בתוכנית מעבר.

בדצמבר 2024 פרסמה CISA, סוכנות הסייבר האמריקאית, את Mobile Communications Best Practice Guidance, בעקבות מבצע הריגול Salt Typhoon שבמסגרתו חדרו גורמים הקשורים למדינה הסינית לכמה מפעילי תקשורת אמריקאים. הניסוח אינו מותיר מקום לפרשנות: «Do not use SMS as a second factor for authentication. SMS messages are not encrypted», ובהמשך, בלי עקיפות: «Only FIDO authentication is phishing-resistant.» המסמך ממליץ במפורש על מפתחות חומרה מסוג FIDO, ומזכיר בשמם את Yubico ואת Google Titan, ומבהיר שלאחר הפעלת FIDO יש לבטל את ה-SMS, שאם לא כן הוא נותר כמסלול גיבוי הניתן לניצול.

אפליקציות אימות: התקדמות אמיתית, פתרון חלקי

אפליקציות TOTP, ראשי תיבות של Time-based One-Time Password, מייצרות קוד בן שש ספרות המתחלף כל שלושים שניות, ומחושב מקומית מתוך סוד משותף שנקבע בעת ההפעלה ומתוך השעה הנוכחית. שום דבר אינו עובר ברשת הטלפון.

הרווח מיידי: החלפת SIM מאבדת כל אפקט מפני שהמספר כבר אינו מעורב, וכך גם היירוט דרך SS7 מפני שאין שום הודעה שמועברת. המעבר לאפליקציית אימות שווה ביצוע בכל חשבון שאינו יכול להתקדם מעבר לכך.

אבל המסלול השלישי נשאר שלם. קוד TOTP שהוקלד באתר מזויף מועבר לאתר האמיתי בדיוק כמו קוד SMS. האפליקציה אינה יודעת היכן אתה מתחבר: היא מציגה מספר, והמספר הזה תקף אצל כל מי שיציג אותו בתוך חלון שלושים השניות שלו. CISA אומרת זאת באותן מילים: קודי אימות טובים יותר מ-SMS אך נותרים חשופים לפישינג.

TOTP הוא שלב ביניים כן, לא יעד.

מדוע מפתח FIDO2 משנה את טבע הבעיה

מפתח חומרה מסוג FIDO2/WebAuthn אינו מסתפק בהקשיית התקיפה, הוא שולל ממנה את האפשרות המכנית.

בעת הרישום לשירות מייצר המפתח זוג מפתחות הצפנה ייעודי לאותו שירות. החלק הציבורי עובר לשירות, החלק הפרטי אינו יוצא לעולם מן השבב ואינו ניתן לייצוא ולא לקריאה. אין סוד משותף שניתן להעתקה, ואין קוד בן שש ספרות שניתן ליירוט.

לאחר מכן מגיע המנגנון המכריע, הקשירה למקור. בעת ההתחברות מעביר הדפדפן למפתח את שם התחום האמיתי של הדף המוצג. המידע הזה נכלל בנתונים הנחתמים, והדפדפן כופה אותו: ה-JavaScript של הדף אינו יכול לשנותו ואינו יכול לזייפו.

מפתח FIDO2 אינו הופך את הפישינג לקשה יותר להצלחה. הוא הופך את תוצאת הפישינג לחסרת שימוש.

נשוב אל תקיפת adversary-in-the-middle, הפעם עם מפתח. האתר המזויף מושלם, הקורבן אינו מבחין בדבר ונוגע במפתח שלו. הדפדפן מעביר את התחום האמיתי של הדף, כלומר את זה של אתר ההונאה. המפתח מגלה שאין שום זוג עבור התחום הזה, או חותם עבורו ומייצר חתימה שהשירות האמיתי ידחה. בשני המקרים התוקף אינו מקבל דבר בר-ניצול.

כאן נמצא ההבדל המהותי. עם SMS או TOTP, האבטחה נשענת בסופו של דבר על ערנות המשתמש, על יכולתו לזהות תחום מזויף בשורת הכתובת, ברגע שבו הוא ממהר והדף נראה רגיל. עם FIDO2 את הבדיקה הזו עושה מכונה, בכל פעם, בלי להיות תלויה בתשומת לב של אף אחד. העברת האחריות הזו חשובה יותר מן החוזק ההצפנתי.

האפקט נמדד. גוגל חייבה את עובדיה במפתחות בתחילת 2017 והצהירה ב-2018 שלא נרשמה אף פריצה לחשבון בקרב יותר מ-85,000 איש.

המגבלות האמיתיות של מפתחות החומרה

להציג אותם כמושלמים יהיה לא כן, וגם חסר תועלת לקראת ההחלטות האמיתיות.

העלות קיימת. הביאו בחשבון 25 עד 60 יורו לפי הדגם, יותר בגרסאות הביומטריות, וכפלו בשניים.

אובדן מפתח הוא הסיכון האמיתי. מפתח יחיד בחשבון קריטי הוא שגיאת תכנון. דרושים שניים רשומים בכל חשבון חשוב, אחד מהם שמור במקום אחר, אצל אדם קרוב או בכספת. השני אינו נוחות, הוא מה שמאפשר להשתמש בראשון בלי חשש.

הכיסוי חלקי. שירותים רבים, ובעיקר בנקאיים באירופה, עדיין אינם תומכים ב-FIDO2, ומכאן סדר העדיפויות שלהלן.

מפתח עלול להיגנב. מכאן הצורך להגדיר קוד PIN על המפתח, או לבחור דגם עם טביעת אצבע: בלי זה, החפץ לבדו מספיק למי שמרים אותו.

מסלול הגיבוי נותר החוליה החלשה. הפעלת FIDO2 בלי לבטל את ה-SMS אינה מגנה על דבר: התוקף פשוט הולך בדרך שנשארה פתוחה. המעבר מסתיים רק כשהמנגנון הישן נמחק מן החשבון, כולל אפשרויות השחזור.

בכל הנוגע לחומרה, סדרת YubiKey מכסה את קשת הפרוטוקולים הרחבה ביותר, מפתחות Google Titan זולים יותר ומוגבלים ל-FIDO, Nitrokey ו-SoloKeys מציעים חלופות עם קושחה פתוחה הניתנת לביקורת, ו-Token2 מייצרת דגמים עם לוח ספרות מובנה שבהם ה-PIN מוקלד על המפתח עצמו ולא על המקלדת. אין בחירה גרועה בין המפתחות המאושרים ל-FIDO2: הפרוטוקול זהה, ורק השימושים הנלווים שונים.

מהיכן להתחיל כשאי אפשר לשנות הכול

סדר המעבר אינו עניין של העדפה, הוא נובע מן התלויות בין החשבונות שלך.

  1. תיבת הדואר הראשית קודם. היא מקבלת את קישורי האיפוס של כמעט כל השאר. תוקף ששולט בה משתלט על שאר החשבונות אחד אחד, בלי לתקוף אף אחד מהם ישירות. שום דבר אינו ראוי להיות מאובטח לפניה.
  2. מנהל הסיסמאות. הוא מרכז את הגורם הראשון של כל הגישות שלך, ולכן ההגנה עליו חייבת להשתוות לזו של החשבון המוגן ביותר שהוא מכיל. זה הרגע לבדוק את איכות הסיסמה הראשית, נושא שפירטנו במאמר על אנטרופיה והמדע שמאחורי האבטחה שלך.
  3. חשבונות פיננסיים ופלטפורמות קריפטו. מטרות בעלות ערך מיידי, שבהן פריצה הופכת תוך דקות להפסד בלתי הפיך.
  4. חשבונות רשת עם קהל. מקרה הרשות ממחיש כמה שווה מילה של חשבון שעוקבים אחריו, והנזק אינו תמיד נגרם לבעליו.
  5. השאר יכול לחכות, עם אפליקציית TOTP במקום SMS. פורום או שירות סטרימינג אינם מצדיקים את אותו מאמץ.

לחשבונות שעדיין אינם תומכים ב-FIDO2: לעבור ל-TOTP בכל מקום אפשרי, ולבקש מן המפעיל נעילת ניוד של המספר שלך, אפשרות חינמית אצל רובם.

מה זה אומר על הגישה של Arpokrat

הכתבה הזו מתארת בעיה שקיימת רק משום שמזהה מסוים הוצב במרכז המערכת. מספר הטלפון מעולם לא נועד לשמש הוכחת זהות: הוא הפך לעמוד השדרה של האימות המקוון מתוך הרגל, ושלוש התקיפות שתוארו לעיל מנצלות כולן את הסטת השימוש הזו.

זהו ההיגיון שהנחה את תכנון הפרוטוקול של Arpokrat Messenger: בלי מספר טלפון, בלי כתובת דוא"ל, בלי חשבון. המשתמש קיים כאוסף מפתחות הצפנה השמורים במכשירו שלו, והקשר נוצר באמצעות קישורי הזמנה לשימוש חד-פעמי. ההיגיון הוא זה של FIDO2, בדרגה אחת גבוהה יותר: מה שאינו מוחזק בידי צד שלישי אי אפשר להוציא ממנו, לא בהנדסה חברתית נגד מפעיל ולא בצו. את העקביות הזו עם ארכיטקטורת Zero-Knowledge אנו מפתחים במאמר על לאסוף עכשיו, לפענח אחר כך.

מפתח חומרה שחותם בלי לחשוף אף פעם את סודו הוא, אגב, גם אופן הפעולה של ארנק קריפטו לא מקוון, כפי שפירטנו במדריך המלא לארנק קר: לשמור את החלק הסודי בחפץ ייעודי, ולהוציא החוצה חתימה בלבד.

סיכום

אימות דו-שלבי ב-SMS לא תוכנן רע. כשהתפשט, בתחילת שנות ה-2010, הוא היווה התקדמות ניכרת ביחס לסיסמה לבדה, ולזכותו עמדה התכונה היחידה שחשובה בקנה מידה גדול: לכולם כבר היה טלפון.

הבעיה אינה בהמצאתו אלא בהישרדותו. ההדגמות של SS7 הן מ-2014, הניצול הבנקאי הממשי מ-2017, תיעוש הפישינג בזמן אמת מסוף אותו עשור. CISA כתבה שלא להשתמש בו עוד ב-2024, ה-NIST עיגן את ההגבלה ב-2025. כעשור מפריד בין הרגע שבו הפרצות הפכו לניתנות לניצול בקנה מידה רחב ובין הרגע שבו המוסדות העלו זאת על הכתב. וה-SMS נותר הגורם השני שברירת המחדל ברוב השירותים לקהל הרחב.

הפער הזה הוא המידע האמיתי שבכתבה. מנגנוני אבטחה אינם נעלמים כשהם מפסיקים לעבוד, אלא כשמשהו פשוט באותה מידה בא במקומם, וזה לוקח הרבה יותר זמן. השאלה, אפוא, אינה אם עליך לנטוש את ה-SMS, זה הוכרע לפני שנים. השאלה היא אילו הגנות אחרות שאתה רואה כמובנות מאליהן נמצאות כבר, בלי שאיש כתב זאת עדיין, באותו מצב בדיוק.

מקורות