דלג לתוכן
חזרה ל-Nymchat

בסיס ידע מדבר עם אנשים

הצפנה עמידה קוונטית

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

הבעיה שזה פותר

הצפנת Nostr רגילה - NIP-44, שזה מה הודעות פרטיות ו צ'אטים קבוצתיים בנויים על - יש שני חצאים. החצי ש למעשה מערבל את הטקסט (ChaCha20, HMAC-SHA256, HKDF) מחזיק היטב מול קוונטי מחשב. החצי שמסכים על המפתח לא.

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

קציר עכשיו, פענוח מאוחר יותר

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

איך זה עובד

Nymchat משאיר את פורמט ההודעות NIP-44 לבדו לחלוטין.הסכם המפתח שהוא כבר משתמש בו אינו מושפע; אחד שני, עצמאי נוסף סביב זה.

  • התקן secp256k1 ECDH, בדיוק כמו קודם;
  • ML-KEM-768, האלגוריתם הפוסט-קוונטי NIST מתוקנן כ FIPS 203. האבטחה שלו נשענת על בעיות סריג, שהאלגוריתם של שור לא נוגע בהן.

השניים הם מעורב, לא מעורבההודעה מוצפנת עם NIP-44 בדיוק כפי שהיא תמיד הייתה, והטקסט הצפיר המושלם מאוחר יותר נסגר בפעם השנייה בתוך שכבת הפוסט-קוונטית – ChaCha20-Poly1305, המוחק מהסוד המשותף של ML-KEM.

שילוב כמו X-Wing או Signal's PQXDH מערבבים את שני הסודות לתוך מפתח אחד במקום. Nymchat לא, והסיבה היא מעשית ולא קריפטוגרפית: שילוב צריך את היציאה האקזוטית ECDH, והרחבת דפדפן או חתימה מרחוק לעולם לא יעביר את זה בחזרה - זה מחזיר טקסט הצפנה גמור, שהוא כל הנקודה של מחזיק את המפתח שבו האפליקציה לא יכולה להגיע אליו.

התוצאה היא זהה: התוצאה היא לפחות חזק כמו החצי החזק ביותרקריאת ההודעה פירושה לעבור דרך שני שכבות.אם הצפנת הרשת מתברר להיות חלשה יותר ממה שציפינו, שבור ML-KEM רק מנותק את שכבת החיצונית ומשאיר את NIP-44 של היום מתחת.

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

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

אין מה להדליק

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

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

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

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

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

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

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

המכשירים האחרים שלך

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

עם מי אתה מקבל את זה

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

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

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

כל השאר ממשיכים לעבוד בדיוק כמו קודם. Bitchat משתמשים וכל לקוח שלנו מקבלים סטנדרטים NIP-17שום דבר לא נשבר כאשר אתה שולח הודעה למישהו מחוץ Nymchat.

מסר פוסט-קוונטי מחליף הסטנדרטי במקום להישלח לצדו. שליחת שניהם תהיה חסרת טעם: תוקף פשוט ישבור את העותק החלש יותר.

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

שמירה על קריא על ידי Bitchat

Bitchat לא יכול לקרוא את פורמט ההודעה של Nymchat, אז היסטורית Nymchat שלח עותק שני של כל הודעה בפורמט של Bitchat לכל מי שעשוי להשתמש בה - עבור מישהו מעולם לא שמעת ממנו, התכוונת לכולם.

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

כמו ההצפנה עצמה, זה אוטומטי ואין לו הגדרה.

למה לא רק לנחש מפעילות ציבורית

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

בצ'אטים קבוצתיים

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

בגלל זה, הודעה קבוצתית מסומנת כעמידה לקוונטית רק כאשר כֹּל חבר קיבל את זה כך. אם אפילו עותק אחד השתמש בהחלפה הרגילה, עותק זה נושא את אותו הדבר הודעה, כך שההודעה בכללותה מוגנת רק כמו העותק החלש שלה. האפליקציה אומרת "עמיד בקוונטים ל-8 מתוך 10 חברים" במקום לעגל כלפי מעלה.

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

קורא את התג

כל הודעה פרטית או קבוצתית נושאת הודעה קטנה. מָגֵן קופץ על כל סימן מסביר מה הוא מראה.

סִימָןמַשְׁמָעוּת
מַנְעוּלמי שלח את זה - האם החתימה תואמת את המחבר הנטען.
מָגֵןלשני הצדדים היה קוד פוסט קוונטי משלהם, והחלפת היברידית שימשה עבור כל עותק של הודעה זו.
מגן מקווקומסר בקוונטי חלקי – מסר קבוצתי שרק חלק מהחברים קיבלו עותק מוגן, ומכיוון שאחרים נושאים את אותו הטקסט, לטפל בהודעה כקובעת באופן קונבנציונלי.
מגן דרך מגןההצפנה הסטנדרטית של NIP-44 – עדיין מוצפנת כלפי כל, ועדיין בלתי ניתנת לקריאה על ידי אף אחד מלבד המשתתפים היום.
אין מגןהודעות ערוץ ציבוריות ניתן לקרוא על הקלטת על פי העיצוב, כך שאין סימן הצפנה חל.

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

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

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

מה זה לא עושה

זה מגן על תוֹכֶן מההודעות שלך. זה לא עושה כל חלק Nostr חסין קוונטים, וכדאי לדייק לגבי ההבדל.

  • החתימות עדיין הן secp256k1. שלט זהויות Nostr עם שנור על אותה עקומה. יריב שכבר היה לו מחשב קוונטי עובד יכול לזייף א לחתום ולהתחזות למישהו בזמן אמת. מה שהבורסה ההיברידית מפסיקה זה לקרוא תנועה מוקלטת - סודיות, לא אימות.
  • אין סוד קדימה. שני המפתחות נמשכות זמן רב: NIP-44 מקבל את המפתח שלו מהמחשב שלך. nsec, ואת שכבת הפוסט קוונטית מעוטרת למפתח ML-KEM מאחורי nympq1… כל הודעה מקבלת קפסולציה חדשה, כך המפתח של הודעה אחת לא פותח את ההודעה הבאה - אבל מי שמסתיים להחזיק את המפתחות האלה לטווח הארוך יכול לקרוא את כל מה שהם הקלטו אי פעם, לא רק את מה שהגיע אחר כך. הודעות נופלות זו הסיבה שהפונקציה הזו מיועדת לקציר-עכשיו-להכחיש מאוחר יותר, ולא למפתח שנלקח.
  • המטא נתונים ללא שינוי. ממסר עדיין רואה שאירוע הופנה אליו מפתח, ובערך מתי. זה מטופל על ידי אריזת מתנה ומפתחות חד פעמיים, לא על ידי זה.
  • רשת ה-Bluetooth אינה מכוסה. מסר שנשלח על ידי • Mesh הוא נוסע בתוך הפגישה של רעש XX, אשר הוא חזק, הצפנה הנוכחית אבל חילופי מפתח קלאסי - אז זה לא נושאת את שכבת הפוסט קוונטי, אפילו בין שני משתמשים Nymchat. התווית משקפת את זה: הודעה מסופקת מעל רשת אינה מסומנת כנגד קוונטי. הוספתו שם פירושה לשנות את היד עצמה, אשר שני עמיתים היו צריכים לעשות באותו רגע, ללא רלייד לחזור דרך תוך כדי להישאר קריא על ידי Bitchat.
  • קוד ההחזרה שלך הוא דבר שני לשמור. זה מתחיל עם nympq1 ואתה תמצא את זה ב הפרטים של Nymבאותו פאנל כמו שלך nsec - הקש על nym שלך, ולאחר מכן “חשוף את המפתח הפרטי של nym זה ואת קוד ההחלמה”. nsec זה בעצמו לא בונה מחדש את המפתח הפוסט-קוונטי שלך - וזה בדיוק למה זה עובד - אז אם שום מכשיר לא מחזיק את הקוד הזה ואין לך עותק ממנו, מה שהיה סגור אליו לא ניתן לפתוח שוב. nsec.
  • זה לא יכול להגן על מה שהצד השני עושה. נמען עדיין יכול לצלם מסך, להעתיק או לשמור הודעה.

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

בודקים את העבודה

יישום ML-KEM נבדק נגד הרשמי מבחן ויקטורים NIST Publishes עבור FIPS 203האפליקציה האינטרנט והאפליקציה הניידת נשמרות בנוסף למגוון משותף של ויקטורים בדיקה, מה שמבטיח שהודעה שנכתבה על ידי אחד יכולה להיקרא על ידי השני.

שניהם הם מקור פתוח תחת ה- AGPL-3.0, והמבנים של היישום האינטרנט ניתן לשחזר – ראה אימות מבנה.

ללכת עמוק יותר: הסכם מפתח פוסט קוונטי ב-Nymchat - ספר לבן טכני על האופן שבו מפתח ML-KEM מופץ ללא תיקיה, המבנה המדויק המשלב את שני חילופי המפתח, ואת העיצובים שנכחדו.