◆ מפעל ההוכחות
יש לך משהו ביד.
הדף הזה אומר לאן לוקחים אותו.
רוב האנשים מכירים דגם אחד של אימות: מעלים קובץ לאתר ומקבלים תשובה. הדגם הזה מאמת אובייקט — יש לו גיבוב קבוע, מריצים שוב, משווים.
חשיפה היא לא אובייקט אלא אירוע: מי פתח, מתי, ושאנחנו לא ראינו. אירוע אי אפשר להעלות שוב — הוא קרה פעם אחת. לכן לא מאמתים את הקובץ אלא את הקבלה, ועושים את זה בארבעה שלבים שאינם תלויים זה בזה.
בדוק מספר הוכחה
קיבלת מספר על העברת מסמך, על קובץ או על החלטה? הדבק אותו כאן.
המספר שלך מופיע בדף השידור אחרי כל העברה, ועל כל קבלה במערכת.
מה נבדק, לפי הסדר
שהקובץ הוא אותו קובץ
לכל העברה נשמר גיבוב sha256 של התוכן המקורי, שחושב בדפדפן של השולח לפני ההצפנה. אתה מריץ sha256 על הקובץ שבידך ומשווה. אנחנו לא ראינו את התוכן ולכן לא יכולנו להמציא את המספר הזה — וזה בדיוק מה שהופך את ההשוואה לשווה משהו.
לא תלוי בנו
שאנחנו הוצאנו את הקבלה, ושהיא לא שונתה
כל קבלה חתומה ב-Ed25519, וחלקן גם ב-ML-DSA-65 (עמידה קוונטית). המפתח הציבורי נוסע בתוך הקבלה וגם מתפרסם בנפרד. חתימה תקינה סוגרת עריכה בדיעבד — היא לא הופכת אותנו לעד ניטרלי, וזה הבדל שחשוב לומר בקול.
תלוי במפתח שפורסם
שהזמן לא נקבע אצלנו
הקבלות מקובצות לחותמת עידן, ושורש ה-Merkle שלה מעוגן בשרשרת הביטקוין דרך OpenTimestamps. אחרי שבלוק נסגר, אף אחד — גם לא אנחנו — לא יכול להזיז את הזמן אחורה.
לא תלוי בנו
שלא הוסר אירוע מהאמצע
כל קבלה מצביעה על קודמתה. בחבילה של שידור אחד המספור רץ מ-0 ברצף, כך שחור בשרשרת נראה מיד. זה שונה מייצוא רחב, שבו חור פירושו רק שהחלון היה צר.
נבדק בתוך החבילה
מה יש לך ביד?
כל שורה: מה אתה מחזיק, לאן לוקחים אותו, ומה בדיוק נבדק שם. העמודה האחרונה היא זו שחשוב להסתכל עליה — האם הבדיקה עובדת גם אם NoData מנותקת, עוינת, או לא קיימת יותר.
קובץ שקיבלת בערוץ מאובטח
הסרטון, המסמך, ה-ZIP — הדבר עצמו
לאן
הורד «חבילת ראיות» מדף השידור, ואז /verify-packמריצים sha256 על הקובץ שבידך ומשווים ל-plaintext_sha256 שבחבילה. הגיבוב חושב בדפדפן של הצד השני לפני ההצפנה — אנחנו מעולם לא החזקנו את התוכן ולא יכולנו לחשב אותו.
זו הרגל היחידה שאתה מחזיק לבד לגמרי. תתחיל ממנה: אם היא נכשלת, כל השאר לא רלוונטי.
חבילת ראיות · קובץ JSON
nodata-delivery-xxxxxxxx.json
לאן
/verify-packהדף מריץ הכל בדפדפן: מחשב מחדש כל event_hash, בודק כל חתימת Ed25519 מול המפתח הציבורי שנוסע בתוך הקובץ, והולך על השרשרת לפי chain_index כדי לראות שלא הוסר אירוע.
אפס בקשות רשת. נתק את האינטרנט ותריץ — זו הבדיקה החזקה ביותר שיש כאן.
שורת פקודה, בלי דפדפן
רואה חשבון שרוצה להריץ בעצמו
לאן
docs/security/verify-decision-receipt.mjs · public/kit/gifts/verify-offline.shאותה מתמטיקה בדיוק כמו /verify-pack, בלי ממשק. Node או bash, בלי תלות ברשת.
המפתח הציבורי לאימות
צריך אותו כדי לבדוק כל חתימה
לאן
/api/chain/pubkeyמפרסם את המפתח הפעיל ואת ההיסטוריה, כולל מפתחות שהוצאו משימוש. כל קבלה נושאת גם את המפתח שלה בתוכה — השווה ביניהם.
אם השוואת מפתחות היא הבדיקה שלך, שמור עותק שלו אצלך היום. מפתח שנשלף מאיתנו ברגע האימות בודק אותנו מול עצמנו.
מספר הוכחה · ND-2026-XXXXXX
המספר שקיבלת על העברה, על מסמך או על החלטה
לאן
התיבה בראש הדף הזהמדביקים ומקבלים תשובה מיד: תקפה או לא, מה קרה, מתי, ואילו מהבדיקות עברו. אותם מוודאים בדיוק שמריצים הדפים הישנים — רק שסוף סוף יש איפה להקליד.
⚠️ התיבה שואלת את השרת שלנו. היא נוחה והיא נכונה — אבל היא אינה אימות בלעדינו. להוכחה שאינה תלויה בנו, הורד חבילת ראיות.
קובץ + חתימה נפרדת
קובץ עם .nodatasig לצידו
קובץ שחזור · .ndc.html
nodata-master-recovery.ndc.html
לאן
פותחים את הקובץ עצמו בדפדפןהקובץ נפתח לבד, בלי חשבון ובלי חיבור. כלי שחזור שדורש התחברות אינו כלי שחזור.
השעון · מתי זה קרה באמת
ots_anchored_at, ots_proof_url בחבילה
לאן
OpenTimestamps · שרשרת הביטקויןהחותמת מעגנת שורש Merkle של הקבלות בבלוק ביטקוין. הזמן מגיע משם, לא מהשעון שלנו.
נמדד 19.08.2026: 2,231 מתוך 2,235 חותמות מעוגנות, 2,233 פורסמו לעד חיצוני.
מה ההוכחה הזאת לא אומרת
אם נכתוב רק את מה שכן, מישהו יקרא את זה בתום לב ויסיק יותר מדי. אז במפורש:
- שהקובץ הוא זה שהתכוונו לשלוח. גיבוב קושר בייטים לקבלה. הוא לא יודע אם נבחר הקובץ הנכון.
- שהנמען לא העתיק את הקובץ אחרי שפתח אותו. ברגע שבייטים על המכשיר שלו הם שלו. הרישום מתעד את השחרור, לא את מה שקרה אחריו.
- שאנחנו עד ניטרלי ליומן של עצמנו. החתימה מוכיחה שקבלה לא שונתה אחרי שהונפקה. היא לא מוכיחה שהנפקנו קבלה לכל אירוע. שתי הרגליים שאינן תלויות בנו הן גיבוב התוכן (לא יכולנו לחשב אותו) והעיגון בביטקוין (השעון אינו שלנו).
- שהקוד נשמר בסוד. קישור וקוד בן שש ספרות הם כל האישור. מי שמחזיק בשניהם נראה ברישום הזה בדיוק כמו הצד המיועד.
◆ לקוראים מצד האבטחה
למה זה נחשב הוכחה, ואיך מסתכלים על זה בשלוש דקות
המבנה כאן אינו חדש ואינו אמור להיות. זו שרשרת גיבובים מקושרת (append-only hash chain) עם חתימות Ed25519, מקובצת לחותמות עידן שהשורש שלהן מעוגן ב-OpenTimestamps. אותו דגם שמאחורי Certificate Transparency — שם הוא משמש כדי שאף רשות אישורים לא תוכל להנפיק תעודה בשקט, וכאן כדי שאף שחרור קובץ לא יוכל להיעלם בשקט. אם כבר בדקת פעם לוג CT, אתה יודע לקרוא את זה.
השאלה שכדאי לשאול על כל מערכת כזאת היא לא «האם יש חתימה» אלא מה קורה אם הספק משקר. חתימה על יומן שלנו לא עונה על זה — היא מונעת עריכה בדיעבד, ותו לא. שתי הרגליים שכן עונות הן: גיבוב שחושב אצל הצד השני לפני שהתוכן הוצפן (לא יכולנו לייצר אותו), ועיגון בשרשרת שאיננו מפעילים. שתיהן מסומנות «עובד בלעדינו» בטבלה למעלה. שאר השורות נוחות, ואנחנו אומרים עליהן במפורש שהן שואלות אותנו.
הבדיקה המעשית: בקש מהצד שמחזיק את השידור את חבילת הראיות (JSON), פתח את /verify-pack, נתק את הרשת, וגרור את הקובץ פנימה. הכל רץ ב-WebCrypto בדפדפן. אם אתה מעדיף לא לסמוך גם על הדף שלנו — אותה בדיקה קיימת כסקריפט Node וכסקריפט bash, והמתמטיקה מתועדת בתוך החבילה עצמה תחת verification_recipe.
מה שיעיד על כנות: חבילה יכולה לחזור עם שדות ריקים. קבלה שנוצרה לפני שהמנגנון שלה עלה תחזיר signature_hex: null, וההעברות שנעשו לפני 19.08.2026 אינן נושאות גיבוב תוכן כלל. הכלים שלנו מסמנים את המקרים האלה כ«לא ניתן לבדוק» ולא כ«נכשל», ולא ממלאים אותם רטרואקטיבית — בייטים נחתמו אז או שלא נחתמו. אם תראה מערכת שממלאת חורים כאלה למפרע, זה הסימן שכדאי לשאול עליו.
המספרים בדף נמדדו ב-19.08.2026 ונכונים לתאריך הזה. אם משהו כאן לא מסתדר לך מול מה שראית במערכת — זו שאלה טובה, ואנחנו מעדיפים לקבל אותה מאשר שתישאר.