דלג לתוכן

ניתוח מעמיק של קריפטוגרפיה

איך Nudge מגן על ההודעות שלך (ולמה זה חשוב)

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

הצפנה מקצה לקצה

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

סודיות קדימה

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

אבטחה לאחר פשרה

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

חבילות Swift וארכיטקטורה

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

📦

PostQuantumSolace

github.com/needletails/post-quantum-solace

ה‑SDK לניהול סשן ברמה גבוהה שמארגן את כל הפעולות הקריפטוגרפיות. PostQuantumSolace מספק את ה‑API PQSSession ליצירת סשנים, שליחת הודעות, ניהול מכשירים וטיפול ברוטציית מפתחות. הוא משלב ביצוע פרוטוקול Double Ratchet עם החלפת מפתחות פוסט‑קוונטית כדי לספק הודעות מוצפנות מקצה לקצה עם סודיות קדימה ואבטחה לאחר פשרה.

תלויות: DoubleRatchetKit, NeedleTailLogger, NeedleTailAlgorithms

🧷

DoubleRatchetKit

github.com/needletails/double-ratchet-kit

מממש את אלגוריתם Double Ratchet עם אינטגרציה Post-Quantum X3DH (PQXDH). החבילה הזו מספקת את הפרוטוקול הליבה לסודיות קדימה ואבטחה לאחר פשרה. היא מטפלת בהחלפת מפתחות היברידית (Curve25519 + MLKEM1024), גזירת מפתח הודעה, הצפנת כותרות וניהול מצב עבור סשני הודעות מאובטחים. השחקן DoubleRatchetStateManager מנהל את מצב הראצ'ט ומספק פעולות הצפנה/פענוח בטוחות לנושאים.

תלויות: NeedleTailCrypto, NeedleTailLogger, BinaryCodable

🔐

NeedleTailCrypto

github.com/needletails/needletail-crypto

עטיפה קריפטוגרפית מקיפה סביב Swift Crypto (swift-crypto) ו‑CryptoKit. NeedleTailCrypto מספק API ברמה גבוהה ליצירת מפתחות (Curve25519, P256, P384, P521, MLKEM1024), הצפנה/פענוח סימטרי (AES-GCM), הסכם מפתחות (ECDH), גזירת מפתחות (HKDF) ואחסון מפתחות מאובטח דרך Keychain ו‑Secure Enclave בפלטפורמות Apple. החבילה הזו מפשטת את הפעולות הקריפטוגרפיות ברמה נמוכה ומספקת ממשק עקבי ומוכן לייצור.

תלויות: swift-crypto (Apple), swift-collections

⚙️

NeedleTailAlgorithms

github.com/needletails/needletail-algorithms

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

📝

NeedleTailLogger

github.com/needletails/needletail-logger

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

🔢

BinaryCodable

github.com/needletails/binary-codable

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

🍎

swift-crypto

github.com/apple/swift-crypto

ספריית הקריפטוגרפיה חוצת הפלטפורמות של Apple שמספקת את הפרימיטיבים הקריפטוגרפיים הבסיסיים. החבילה הזו מממשת MLKEM1024 (Kyber), Curve25519, AES-GCM, SHA-256, SHA-512, HKDF, HMAC ואלגוריתמים סטנדרטיים אחרים. זה מנוע הקריפטוגרפיה ברמה נמוכה שמניע את NeedleTailCrypto ואת כל המחסנית.

פרימיטיבים קריפטוגרפיים

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

MLKEM-1024 (Kyber-1024)

מה זה: MLKEM-1024 הוא מנגנון כיסוי מפתחות פוסט‑קוונטי (KEM) מתוקנן NIST המבוסס על אלגוריתם Kyber. הוא תוכנן להתנגד להתקפות גם ממחשבים קלאסיים וגם קוונטיים.

מה זה עושה: MLKEM-1024 מאפשר לשני צדדים ליצור מפתח סודי משותף על פני ערוץ לא מאובטח. צד אחד יוצר זוג מפתחות ציבורי/פרטי, והצד השני משתמש במפתח הציבורי כדי לכסות סוד משותף. מחזיק המפתח הפרטי יכול אז לחשוף את הסוד. זה מספק אבטחה גם נגד אויבים עם מחשבים קוונטיים.

למה זה חשוב: אלגוריתמי החלפת מפתחות קלאסיים (כמו RSA, ECC) ייפרצו על ידי מחשבים קוונטיים בקנה מידה גדול. MLKEM-1024 מספק הגנה "אסוף עכשיו, פענח מאוחר יותר"—אפילו אם תוקף מקליט תעבורה מוצפנת היום, הוא לא יכול לפענח אותה בעתיד באמצעות מחשבים קוונטיים.

יישום: מסופק על ידי swift-crypto (Apple), משמש ב‑PQXDH handshake

Curve25519

מה זה: Curve25519 היא עקומה אליפטית ביצועים גבוהים שתוכננה להסכם מפתחות Elliptic Curve Diffie-Hellman (ECDH). היא מספקת 128 ביט אבטחה ומוצבת באופן נרחב במערכות קריפטוגרפיות מודרניות.

מה זה עושה: מאפשר לשני צדדים ליצור סוד משותף על ידי החלפת מפתחות ציבוריים. כל צד משלב את המפתח הפרטי שלו עם המפתח הציבורי של השני כדי לגזור את אותו הסוד המשותף. Curve25519 משמש גם להסכם מפתחות (ECDH) וגם לחתימות דיגיטליות (Ed25519) ב‑Nudge.

למה זה חשוב: למרות שהוא לא עמיד לקוונטום, Curve25519 מספק אבטחה מיידית נגד תוקפים קלאסיים והוא מאוד מהיר. בעיצוב PQXDH ההיברידי של Nudge, Curve25519 מספק אבטחה היום בעוד MLKEM-1024 מספק אבטחה נגד איומי קוונטום עתידיים. שניהם חייבים להיפרץ כדי שתוקף יפגע בסשן.

יישום: מסופק על ידי swift-crypto (Apple), משמש ב‑PQXDH handshake ובחתימת מפתח מכשיר

HKDF (פונקציית גזירת מפתחות מבוססת HMAC)

מה זה: HKDF היא פונקציית גזירת מפתחות שגוזרת בצורה מאובטחת מפתחות מרובים מסוד משותף יחיד או קלט אנטרופיה גבוהה. היא משתמשת ב‑HMAC (קוד אימות הודעה מבוסס hash) כפרימיטיב הבסיסי שלה.

מה זה עושה: לוקח סוד משותף (מהחלפת מפתחות) וגוזר מפתחות ספציפיים למטרה להצפנה, אימות ושימושים אחרים. HKDF משתמשת במלח (להפרדת תחום) ומידע הקשר אופציונלי כדי להבטיח שמפתחות שונים נגזרים למטרות שונות. Nudge משתמשת ב‑HKDF עם SHA-512 כדי לגזור מפתחות סשן מסודות משותפים PQXDH.

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

יישום: HKDF<SHA512> ו‑HKDF<SHA256> מ‑swift-crypto, משמש בכל הפרוטוקול

AES-GCM (תקן הצפנה מתקדם - מצב Galois/מונה)

מה זה: AES-GCM הוא אלגוריתם הצפנה מאומת שמספק גם סודיות (הצפנה) וגם שלמות (אימות) בפעולה אחת. הוא משתמש בצופן הבלוק AES במצב Galois/מונה.

מה זה עושה: מצפין תוכן הודעה ויוצר תג אימות שמוכיח שההודעה לא שונתה. AES-GCM משמש להצפנת כל מטעני ההודעות ב‑Nudge, מה שמבטיח שהודעות לא יכולות להיקרא או להשתנות על ידי תוקפים.

למה זה חשוב: הצפנה מאומתת מונעת גם האזנה וגם שינוי. אם תוקף משנה הודעה מוצפנת, תג האימות יהיה לא תקין והפענוח ייכשל. Nudge משתמשת ב‑AES-256-GCM, שמספק 256 ביט אבטחה.

יישום: מסופק על ידי swift-crypto (Apple), משמש לכל הצפנת הודעות דרך NeedleTailCrypto

SHA-256 ו‑SHA-512 (אלגוריתמי hash מאובטחים)

מה זה: SHA-256 ו‑SHA-512 הן פונקציות hash קריפטוגרפיות שמייצרות פלטים בגודל קבוע (256 ו‑512 ביט בהתאמה) מכניסות שרירותיות. הן פונקציות חד‑כיווניות—קלות לחישוב אבל חישובית בלתי אפשריות להפוך.

מה זה עושה: משמשות בכל מחסנית הקריפטוגרפיה למטרות שונות: SHA-256 משמש ב‑HMAC לגזירת מפתח שרשרת ב‑Double Ratchet, SHA-512 משמש ב‑HKDF לגזירת מפתח סשן מסודות משותפים PQXDH, ושניהם משמשים לאימות שלמות וגזירת מפתחות.

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

יישום: מסופק על ידי swift-crypto (Apple), משמש ב‑HKDF, HMAC וגזירת מפתחות

HMAC (קוד אימות הודעה מבוסס hash)

מה זה: HMAC הוא קוד אימות הודעה שמשתמש בפונקציית hash קריפטוגרפית (כמו SHA-256) משולבת עם מפתח סודי כדי לייצר תג שמאמת גם את האותנטיות וגם את השלמות של הודעה.

מה זה עושה: ב‑Nudge, HMAC-SHA256 משמש בפרוטוקול Double Ratchet כדי לגזור מפתחות שרשרת ומפתחות הודעה. כל שלב ראצ'ט משתמש ב‑HMAC כדי לקדם את שרשרת המפתחות, מה שמבטיח שמפתחות מתפתחים בצורה דטרמיניסטית ומאובטחת.

למה זה חשוב: HMAC מבטיח שגזירת מפתחות היא מאובטחת ודטרמיניסטית. הוא משמש באופן נרחב ב‑Double Ratchet כדי לספק סודיות קדימה—כל הודעה משתמשת במפתח ייחודי שנגזר מהמפתח הקודם, אז פשרה של מפתח אחד לא חושפת מפתחות עבר או עתיד.

יישום: HMAC<SHA256> מ‑swift-crypto, משמש בגזירת מפתחות Double Ratchet

איך הכל עובד יחד

1) handshake פוסט‑קוונטי (PQXDH)

כששני משתמשים מתחילים שיחה, Nudge מבצעת החלפת מפתחות היברידית:

  1. Curve25519 ECDH: שני הצדדים מחליפים מפתחות ציבוריים Curve25519 וגוזרים סוד משותף באמצעות Diffie-Hellman עקומה אליפטית
  2. כיסוי MLKEM-1024: צד אחד משתמש במפתח הציבורי MLKEM-1024 של השני כדי לכסות סוד משותף
  3. שילוב סודות: הסוד המשותף Curve25519 והסוד המשותף MLKEM-1024 מחוברים
  4. גזירת HKDF: HKDF-SHA512 גוזר את מפתח השורש ומפתחות השרשרת הראשוניים מהסודות המשולבים

הגישה ההיברידית הזו מבטיחה אבטחה גם נגד תוקפים קלאסיים (Curve25519) וגם קוונטיים (MLKEM-1024). שניהם חייבים להיפרץ כדי לפגוע בסשן.

2) התפתחות מפתחות מתמשכת (Double Ratchet)

לאחר ה‑handshake, פרוטוקול Double Ratchet מספק סודיות קדימה:

  1. ראצ'ט סימטרי: כל הודעה מקדמת מפתח שרשרת באמצעות HMAC-SHA256, גוזרת מפתח הודעה ייחודי
  2. הצפנת הודעה: מפתח ההודעה משמש עם AES-256-GCM כדי להצפין את מטען ההודעה
  3. ראצ'ט DH: באופן תקופתי, החלפות מפתחות Diffie-Hellman חדשות מעדכנות את מפתח השורש ויוצרות מפתחות שרשרת חדשים
  4. רוטציית מפתחות: מפתחות ישנים נזרקים, מה שמבטיח סודיות קדימה—פשרה של מפתחות נוכחיים לא חושפת הודעות עבר

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

מה מוצפן (ומה לא)

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

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

תכונות אבטחה

העיצוב הקריפטוגרפי של Nudge מספק שכבות אבטחה מרובות:

  • אבטחה פוסט‑קוונטית: MLKEM-1024 מגן מפני התקפות קוונטיות עתידיות
  • סודיות קדימה: הודעות עבר נשארות מאובטחות גם אם מפתחות נוכחיים נפגעים
  • אבטחה לאחר פשרה: סשנים יכולים להתאושש מפשרת מפתחות
  • הצפנה מאומתת: AES-GCM מונע גם האזנה וגם שינוי
  • הגנה על מטא‑נתונים: הצפנת כותרות מפחיתה ניתוח תעבורה

רוצה קהילת Nudge פרטית?

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

לִתְרוֹם