פרוטוקול איתות
פרוטוקול האותות הוא מנוע ההצפנה מאחורי Signal, WhatsApp, השרשורים המוצפנים של Facebook Messenger והודעות ה-RCS של גוגל. זה הדבר הקרוב ביותר לסטנדרט קבוע עבור העברת הודעות אסינכרוניות מאובטחות - נבדק על ידי עמיתים, פרוס בקנה מידה של מיליארדי משתמשים, ואין שני לו בשילוב של סודיות קדימה, סודיות עתידית ואימות.
גוף המאמר המלא מסופק באנגלית להלן.
Signal Protocol פותח על ידי Open Whisper Systems (כיום Signal Foundation) החל משנת 2013. הוא התפתח מפרוטוקולי העברת הודעות מאובטחות קודמים (OTR, SCIMP) ושילב את הרעיונות שלהם עם מבנה מחמיר חדש. החידוש העיקרי: כל הודעה משתמשת במפתח הצפנה חדש, כך שפשרה של מפתח אחד חושפת רק הודעה אחת - והפרוטוקול מרפא את עצמו לאחר פשרה על ידי הכללת חומר מפתח חדש בהודעות הבאות. בלוקים:
- X25519 (Curve25519 Diffie-Hellman) עבור הסכם מפתח
- HKDF (KDF מבוסס HMAC) להפקת מפתחות מסודות משותפיםXPLZXXZPL5A16PLZ5XX16PLZ5XX16PLZ5XX16PLZ5XXX16PLZ5XX17 במצב CBC עם HMAC-SHA256 להצפנת הודעות ("הצפין-אז-MAC")
- Ed25519 חתימות עבור מפתחות זהות
The X3DHZ8 הודעה ראשונית בובXPLZ לחיצת יד ראשונה - Al7When לחיצת יד ראשונית להיות במצב לא מקוון - Signal צריך דרך ליצור מפתח משותף ללא החלפה אינטראקטיבית. התשובה היא X3DH (Extended Triple Diffie-Hellman). האפליקציה של בוב מעלה שלושה מפתחות לשרת של סיגנל:- מפתח ה-זהות לטווח ארוך שלו
- A לטווח בינוני מפתח קדם חתום (מתרענן מעת לעת)XPLZ40AXXPLZ4 מאגר של פעם אחת-XAXXPLZ4 prekeys (נצרך פעם אחת בכל הפעלה חדשה) האפליקציה של
Alice מביאה את שלושתם. הוא מבצע ארבעה חישובים של דיפי-הלמן המשלבים את מפתחות הארעיים והזהות שלה עם שלושת המקשים המקדימים של בוב, ואז HKDF מערבב את התוצאות לסוד משותף. ההודעה הראשונה כוללת את המפתח הציבורי הארעי של אליס ואת מזהי המפתח המוקדמים שבהם השתמשה; האפליקציה של בוב משחזרת את אותו סוד משותף מהצד שלו.
המתמטיקה היא א-סימטרית: אליס לא צריכה את בוב מקוון, אבל החוזק ההצפנה שווה ערך ללחיצת יד אינטראקטיבית.
The Double Ratchet
פעם אחת מכניסים את הפרוטוקול אליס ובובי חולקים את הפרוטוקול שלו. שני מחגרות מפתח מתקדמים עבור כל הודעה:
- מחגר מפתח סימטרי: עבור כל הודעה בשורה מאותו השולח, הפק מפתח שרשרת חדש על ידי גיבוב של מפתח השרשרת הקודם. מפתח השרשרת מעורבב עם HKDF כדי לייצר מפתח הודעה ייחודי.
- Diffie-Hellman ratchet: בכל פעם שכיוון השיחה מתהפך (בוב משיב לאליס), בוב מייצר זוג מפתחות ארעיים טרי, מבצע DH עם המפתח האחרון של אליס, שיתוף המפתח הסודי והתוצאה הסודית הוא שיתוף המפתח הסודי. מנקודה זו פועל ראצ'ט סימטרי חדש.
שילוב זה מעניק גם forward סודיות (הודעות קודמות נשארות חסויות אם מפתח נוכחי דולף) וגם סודיות עתידית / אבטחה לאחר פשרהforward הודעה פרטית לאחר פשרה עתידית ( שוב).
What Signal does well
- Forward secretion at message granularity. רוב הפרוטוקולים המוצפנים נותנים סודיות קדימה בפירוט הפגישה. אות עושה את זה לכל הודעה.
- משלוח מחוץ להזמנה. אם הודעות 5, 6, 7 מגיעות לפי הסדר 7, 5, 6, המקלט עדיין יכול לפענח את כולן על ידי שמירת מפתחות הודעה שדילוגו מאפשרת לזמן קצר.XPLZ80Synchronous communication XXLZ81XXLZ81. שיחה בלי שהנמען יהיה מקוון.
- תמיכה במכשירים רבים. פרוטוקול שומשום המרוכב מלמעלה מטפל במספר התקנים לכל משתמש.
- מטא נתונים מינימליים. עיצוב השרתים הפרטיים של אותות יותר מאשר העיצוב הפרטי של אותות מתחרים.
מה קשה
הפרוטוקול הוא דו-צדדי. Group messaging דורש מכונות נוספות - הפתרון של Signal הוא "מפתחות שולח" כאשר כל שולח שואב מפתח לכל קבוצה ומפיץ אותו בזוגיות לכל חבר באמצעות הפרוטוקול הרגיל. ערבויות הסודיות קדימה בקבוצות חלשות יותר מאשר בצ'אטים 1:1; ניתן להוסיף חברים חדשים אך העלות של פעולות קריפטוגרפיות גדלה עם גודל הקבוצה. תקן MLS (Messaging Layer Security) IETF מתייחס לכך בקנה מידה ומאומץ בהדרגה.
אימות זהות עדיין תלוי בהשוואה מחוץ לתחום של מספרי בטיחות. אם לא תאמת, אתה סומך על השרת של Signal שלא יחליף מפתחות בשקט. רוב המשתמשים לעולם אינם מאמתים; אבטחת הפרוטוקול מותנית אז בכנות המפעיל בתוספת הקושי של החלפה המונית שלא מזוהה.
היכן אתה נתקל בפרוטוקול האות
- Signal עצמו (מימוש הייחוס)
- WhatsApp (2.5 מיליארד משתמשים - שירות ההודעות המוצפן הגדול ביותר מקצה לקצה אי פעם) (השקת ברירת המחדל של E2E הושלמה ב-2024)
- Google Messages / RCS (צ'אטים 1:1 כברירת מחדל; צ'אטים קבוצתיים נוספו מאוחר יותר)
- Skype's privates (מורשת) clients
ספריית הפרוטוקול, libsignal, היא קוד פתוח ומבוקרת. העיצוב הקריפטוגרפי החזיק מעמד תחת יותר מעשור של בדיקה.
שאלות נפוצות
- האם Signal באמת מוצפן מקצה לקצה, או שצריך לסמוך על השרת?
- מבחינה מתמטית מקצה לקצה - השרת לא יכול לפענח הודעות כי אין לו את המפתחות. אתה כן סומך על השרת של Signal שלא יחליף מפתחות זהות בשקט במהלך הגדרת החשבון. תכונת אימות מספר הבטיחות מאפשרת לך לאשר מחוץ לתחום שלא התרחשה החלפה.
- האם WhatsApp באמת משתמש באותו פרוטוקול?
- כן, פרוטוקול האותות הבסיסי זהה. ההבדל הוא במטא נתונים: וואטסאפ מאחסנת מספרי טלפון ו(עד לאחרונה) כמה מטא נתונים על מי שולח הודעות למי ומתי. אות מסתיר יותר מטא נתונים לפי עיצוב. ההצפנה של תוכן ההודעה זהה.
- מה ההבדל בין פרוטוקול איתות ל-MLS?
- Signal Protocol הוא דו-צדדי עם הרחבות לקבוצות; MLS (Messaging Layer Security, RFC 9420) הוא תקן IETF חדש יותר שתוכנן באופן מקורי עבור קבוצות, עם פעולות יעילות כקנה מידה של גודל קבוצה. MLS משתמש בגזירת מפתח מבוססת עץ המטפלת ביעילות באלפי קבוצות חברים. חלק מהשירותים העיקריים עוברים ל-MLS לצ'אטים קבוצתיים; פרוטוקול האותות נשאר המוביל ל-1:1.
- האם פרוטוקול האותות יכול להישבר על ידי מחשבים קוונטיים?
- X25519 ו-Ed25519 פגיעים למחשבים קוונטיים בקנה מידה גדול. Signal הוסיף PQXDH (היברידית פוסט-קוונטית) בשנת 2023, תוך ערבוב של CRYSTALS-Kyber לצורך סודיות קדימה נגד תוקפים קוונטיים עתידיים. הראצ'ט הכפול עצמו נשאר מאובטח באופן קלאסי; PQXDH כתובות "קציר-עכשיו-פענח-מאוחר יותר."
- מדוע לא כל אפליקציות העברת ההודעות משתמשות בפרוטוקול האותות?
- רוב הגדולים עכשיו עושים או עוברים. ל-holdouts יש סיבות עסקיות: טלגרם מוגדר כברירת מחדל ללא E2E עבור צ'אטים בענן, כך שהיא יכולה לשרת אותם במכשירים שונים; iMessage משתמש בפרוטוקול של אפל עצמה; חלק מהשירותים המוסדרים בתאימות זקוקים לגישה מצד השרת לתוכן ההודעות לצורך בדיקה משפטית. הפרוטוקול ניצח מבחינה טכנית; אימוץ הוא עכשיו פוליטיקה.