איך יודעים שלא ערכנו את ההיסטוריה?
כל החלטת גישה מייצרת הוכחה קריפטוגרפית הניתנת לאימות עצמאי. גם אם NoData תיעלם מחר · ההוכחה נשארת תקפה.
- חתום דיגיטלית
- נעול לשרשרת שאי אפשר לשכתב בשקט
- מעוגן לשעון ציבורי חיצוני
Every access decision produces a proof.
Not a log. Not a promise. A proof.
האם אנחנו יכולים לזייף את ההיסטוריה של עצמנו?
לא מפני שהבטחנו — אלא מפני שההוכחה אינה תלויה בנו. היא נבדקת מול מפתח ציבורי, נעולה לשרשרת, ומעוגנת לשעון חיצוני שאיננו שולטים בו.
שש שכבות · בשפה פשוטה
ארבע הראשונות הן מה שהופך קבלה לעדות ראייתית חזקה. שתי האחרונות הן מה שהיא מוכיחה בפועל · מה נחשף למי · והאם הקובץ שבידיכם הוא בדיוק זה שעבר.
- 01
מי חתם · אותנטיות
authenticityלכל קבלה (receipt) שאנחנו מוציאים יש חתימה דיגיטלית. החתימה נוצרת עם מפתח פרטי שמוחזק בכספת מאובטחת אצלנו · ולכל מפתח יש מפתח-ציבורי תואם שמתפרסם בכתובת קבועה. מי שיש בידיו את ה-receipt + המפתח-הציבורי שלנו יכול לבדוק את החתימה לבדו · בלי לסמוך עלינו.
למהנדסים · technical details
Ed25519 over canonical JSON payload · public key at /api/chain/pubkey · apps/web/src/lib/operator/chain-keys.ts · signChainData + verifyChainSignature.
- 02
לא שונה · שלמות
integrityכל קבלה קושרת חזרה לקבלה הקודמת בשרשרת. אם מישהו ינסה לשנות קבלה אחת · כל ה-hash-im של הקבלות שאחריה יהיו לא נכונים. אי-אפשר לשנות באמצע · רק להוסיף בסוף.
למהנדסים · technical details
HMAC-SHA256 chain · chain_hmac = HMAC(secret, event_hash + prev_receipt_id + created_at) · apps/web/src/lib/operator/audit.ts · monotonic chain_index per tenant.
- 03
מי המפתח · אי-הכחשה
non-repudiationהמפתח-הפרטי שלנו מוחזק תחת שליטה בלעדית. אסור לאף עובד לחתום ידנית · רק המערכת. הכספת מתעדת כל גישה למפתח · אם נצטרך להוכיח שמישהו חתם · יש לנו את כל שרשרת המקור.
למהנדסים · technical details
Key in vault · access logs · KMS-enforced policy · rotation policy documented · service-role hard-segregation.
- 04
מתי קרה · עוגן זמן חיצוני
time anchorה-timestamp שאנחנו שמים על קבלה לא מספיק · יכל לטעון שזייפנו אותו אחורה (backdated). לכן ה-hash של הקבלה נשלח גם ל-Bitcoin (דרך OpenTimestamps) · שם הוא נחתם כחלק מ-block שכל העולם רואה. כל מי שמסתכל על blockchain חיצוני יכול לוודא שה-hash הזה היה קיים בדיוק ב-תאריך הזה · ולשכתב את ה-Bitcoin נדרש רוב כוח החישוב של הרשת · מה שאינו מעשי מבחינה חישובית וכלכלית.
למהנדסים · technical details
OpenTimestamps · apps/web/src/lib/protect/opentimestamps.ts. Measured 2026-08-02: 1,720 of 1,727 epoch roots carry a Bitcoin anchor, and 1,727 of 1,727 were published to an external witness feed (github.com/proofbydefault/witness-feed, one commit per hourly epoch) — the anchor and the feed are two different witnesses and both are real. A THIRD, Sigstore Rekor, is now written by /api/cron/seal-epoch-rekor but stamps nothing until an OIDC signing identity is provisioned: measured 2026-08-02, 0 of 1,727 epochs carry a Rekor index, and the promise registry lists that row as broken rather than hiding it. The drand tlock column is still written by nothing. A capability the code can read but never produces is not a capability, and saying so here is cheaper than being caught saying otherwise in a deck.
- 05
מי נגע במידע · חשיפה
exposureקבלה לא מוכיחה רק שמשהו קרה · היא מוכיחה מה נמסר ולמי. כל בקשת גישה נרשמת עם הרמות שהותרו ואלה שנשארו נעולות · ולכן אפשר להוכיח בדיעבד שסוכן AI קיבל שדה אחד ולשאר לא הייתה לו דרך גישה. המונח המדויק הוא "לא נמסר" ולא "הוסתר" — שדה שלא הותר לא עבר את הגבול מלכתחילה. וגם ההפך · אם משהו כן נמסר · זה כתוב ואי-אפשר למחוק בשקט. הזהות שאנחנו שומרים בעותק שלנו היא מספר סידורי אטום · לא שם ולא כתובת מייל · כך שהקבלה מוכיחה חשיפה בלי להיות עצמה מסמך שחושף.
למהנדסים · technical details
nd_decision_receipts · surface + decision + subject + allowed tiers · apps/web/src/lib/proof/decision-receipt.ts · identity opaqued at the write boundary (lib/proof/opaque-identity.ts · HMAC-keyed serial, deterministic so the same actor correlates without being named). Since 2026-08-02 that boundary catches phone numbers, national IDs, card numbers and IBANs, not only e-mail addresses, and the audit that measures the promise imports the same lexicon the guard enforces — measured and enforced at one width, or the gap comes back. 58 receipts written between 2026-05-03 and 2026-07-13, before the guard existed, still contain a readable address. They are not edited: a chain whose past can be rewritten to look better is not evidence.
- 06
זה אותו קובץ · מקוריות
originalityמה שנחתם הוא ה-hash של הצופן · כלומר של הקובץ עצמו · ולכן שינוי של בייט אחד הופך את החתימה ללא-תקפה. זה מה שמאפשר לומר "זה בדיוק הקובץ שנשלח באותו רגע" ולא רק "נשלח קובץ". חשוב מה שאין כאן · אנחנו לא מחזיקים את התוכן הפתוח ולכן לא יכולים להראות אותו · אבל אנחנו כן יכולים להוכיח שהעותק שבידיכם זהה לזה שעבר · או שונה ממנו. בדף האימות יש כפתור שמשנה בייט בכוונה · כדי שתראו את הבדיקה נכשלת מול העיניים.
למהנדסים · technical details
ciphertext_sha256 on every container · receipt signs the ciphertext digest, never the plaintext · /verify-pack recomputes in the browser with crypto.subtle.verify and no server call · tamper button flips a byte.
מהחלטה ועד אימות בידי מישהו אחר
כל שלב מוסיף משהו שהשלב שלפניו לא יכול היה לתת. שני השלבים האחרונים כבר לא בשליטתנו — וזו הנקודה.
- החלטת גישהAccess Decision
מישהו ביקש · המערכת הכריעה. עד כאן זו פעולה, לא ראיה.
- קבלהReceipt
ההחלטה מקבלת גוף חתום · מה נמסר, מה נשאר נעול, ומתי.
- שרשרת קבלותReceipt Chain
הקבלה נעולה לקודמת. מחיקה שקטה של אחת מפילה את כל מה שאחריה.
- שורש MerkleMerkle Root
כל שעה, כל הקבלות נחתמות יחד בשורש אחד — קצר מספיק כדי לפרסם.
- חותמת זמן חיצוניתExternal Timestampלא בשליטתנו
השורש נכנס לשעון ציבורי. מכאן והלאה גם אנחנו לא יכולים להזיז את הזמן.
- אימות עצמאיIndependent Verificationלא בשליטתנו
צד שלישי בודק לבד · בלי חשבון, בלי מפתח, ובלי לשאול אותנו.
רוב המערכות מוכיחות שמשהו קרה.
כאן מוכיחים מה נחשף.
לוג רגיל אומר שסוכן קרא מסמך.
קבלה אומרת איזה שדה נמסר לו, וחמישה שנשארו נעולים — לא הוסתרו ממנו, פשוט לא היה אליהם מעבר.
זה ההבדל בין ביקורת לבין ראיה.
אנטומיה של קבלה אחת
זו קבלה אמיתית מהמערכת · המבנה · הסדר · האלגוריתמים ואורכי הבייטים הם בדיוק מה שנשמר.
הערכים מוצגים חתוכים — מספיק כדי לזהות את הפורמט, לא מספיק כדי להפוך צילום מסך לאישור, ולא מספיק כדי לנחש מזהה שכן.
receipt_idזה מה שנותנים לרגולטור, ללקוח או לחוקר. הוא לבדו לא פותח כלום ולא מעיד על תוכן — הוא רק מאפשר לשאול את השאלה ולקבל תשובה.
surfaceשם המשטח שבו ההחלטה נעשתה. לא מי, לא מה — איזה סוג של פעולה.
decisionאושר · נדחה · הוענק · בוטל. השרשרת מתקדמת על כל אחת מהן — גם על דחייה. שרשרת שרושמת רק הצלחות אינה יומן, היא פרסום.
event_hashSHA-256 על ייצוג קנוני של האירוע — מפתחות ממוינים בכל עומק, כדי שמאמת חיצוני יגיע לאותו גיבוב בדיוק ולא לגיבוב דומה. זה השדה שכל אדם יכול לחשב מחדש בעצמו.
prev_receipt_idהמצביע לקבלה הקודמת. זה השדה שהופך אוסף רשומות לשרשרת: שינוי של קבלה אחת באמצע מפיל את כל מה שאחריה.
chain_indexמספר רץ. חור ברצף נראה מיד, ולכן מחיקה שקטה אינה אפשרות.
signature_hexחתומה על בדיוק אותם בייטים שמרכיבים את החוליה. יש גם HMAC פנימי — הוא מוכיח לנו שהקבלה שלנו. החתימה מוכיחה לכל אחד אחר, בלי לסמוך עלינו ובלי שנהיה בחדר.
signing_pubkeyמתפרסם ב-/api/chain/pubkey. מי שמאמת לא מקבל אותו מאיתנו בזמן הבדיקה — הוא לוקח אותו מכתובת ציבורית קבועה, וזה ההבדל בין אימות לבין הבטחה.
created_atהזמן שאנחנו רשמנו. בפני עצמו הוא חסר ערך ראייתי — כל אחד יכול לכתוב תאריך. שתי השורות הבאות הן מה שהופך אותו לעדות.
epoch_merkle_rootכל שעה כל הקבלות נאספות לעץ Merkle אחד ושורשו נחתם. עלה מגובב עם קידומת 0x00 וצומת פנימי עם 0x01 — ההפרדה הזאת מונעת להציג צומת פנימי כאילו היה עלה.
ots_anchored_atשורש האפוק נכנס לבלוק בביטקוין. זו השכבה היחידה שאיש — כולל אנחנו — לא יכול לדחוף אחורה. עד שהיא נוחתת, השורה הזאת ריקה ומוצגת ריקה.
ומה שאין בקבלה — וזו הנקודה
עברתם עכשיו על אחת עשרה שורות של מנגנון קריפטוגרפי. אף אחת מהן אינה התוכן.
- התוכן עצמו · בשום צורה
- הטקסט הגלוי · אין לנו אותו כדי לרשום אותו
- שם · כתובת מייל · מזהה אישי — הזהות בעותק שלנו היא מספר סידורי אטום
- מפתח כלשהו · לא פרטי ולא עטוף
הקבלה חזקה מפני שהיא ריקה מהדבר שעליו היא מעידה. היא מוכיחה שפעולה קרתה · מתי · ושלא שונתה מאז — ואי אפשר להסיק ממנה מה נכתב, כי זה פשוט לא שם.
אל תאמינו לנו. תשברו את זה.
המאמת רץ בדפדפן שלכם ולא פונה לשרת שלנו אפילו פעם אחת. יש בו כפתור שמשנה בייט אחד בכוונה — ואז אפשר לראות את הבדיקה נכשלת, במקום לקרוא עליה.
- 01החתימה על כל קבלה, מול המפתח הציבורי
- 02גיבוב ה-SHA-256 של כל קבלה, מחושב מחדש מהתוכן שלה
- 03ההתאמה בין הגיבוב שנחתם לבין הגיבוב שחושב
- 04הליכה על השרשרת לפי chain_index ו-prev_receipt_id
- 05אישור שאין במה שנשמר אצלנו תוכן לפענוח
מה זה נותן לארגון
ההוכחות אינן תוספת משפטית בסוף · הן מה שמאפשר לתת גישה בביטחון. ארגון שיכול להוכיח מה קרה יכול להרשות לעצמו לשתף.
אחריות ברורה
לכל פעולה יש בעל ומועד. אם מישהו ישאל בעוד שנה מי שלח מה ומתי · יש תשובה חתומה ולא שחזור מהזיכרון. זה מה שהופך "אני חושב שכן" ל"הנה הקבלה".
אי-אפשר להתכחש
החתימה נעשית במפתח שהמערכת מחזיקה תחת שליטה בלעדית · והמועד נעול לשעון חיצוני. לכן אף צד · כולל אנחנו · לא יכול לטעון בדיעבד שמשהו קרה בזמן אחר או לא קרה.
הרשאה שנגמרת מעצמה
גישה נפתחת במפורש · לזמן מוגדר · ולמספר שימושים מוגדר. מה שלא הותר · חסום · וזו ברירת המחדל ולא הגדרה שצריך לזכור להפעיל.
ניתוק מיידי
שלילת הרשאה היא לחיצה אחת · והיא נכנסת לתוקף בגישה הבאה. ההיסטוריה נשמרת במלואה · כי היסטוריה שנמחקת מפסיקה להיות ראיה.
הנמען הוא שותף
האדם שקיבל תוכן הוא היחיד שרואה אותו · ולכן הוא היחיד שיכול לשפוט אותו. יש לו כפתור לומר "זה לא היה צריך להישלח" · במסך שבו הוא פתח · והדיווח מקבל סימוכין שגם צד שלישי יכול לאמת.
שקוף לרגולטור, סגור לכל השאר
אפשר להוכיח לרשות שאובייקט מסוים יצא מחשבון מסוים במועד מסוים · בלי למסור את התוכן · ובלי שנוכל למסור אותו גם אם נרצה. הפרדה בין "מה קרה" ל"מה נכתב" היא לא פשרה · היא מה שמאפשר לענות לשניהם.
למה חלק מההוכחה מוצג חתוך
בכל מקום שבו מוצג מזהה של הוכחה · הוא מוצג חלקית. גם בדף הזה · גם בדף האימות · וגם באישור שמקבל מי שמדווח. זו לא הסתרה של מידע · זו הגנה על הראיה עצמה · ומשתי סיבות:
- צילום מסך אינו הוכחה. מזהה שלם שמוצג בדף אימות מזמין להעתיק אותו לצילום ולהציג אותו כאישור למשהו אחר. מזהה חתוך מחייב את מי שבודק לאמת בעצמו במקום להאמין לתמונה.
- סדרה שלמה מספרת יותר ממה שצריך. מזהים עולים בסדר · ולכן חשיפה של מזהים שלמים מאפשרת להסיק היקפים · לנחש מזהים שכנים ולנסות אותם. הצגה חלקית שומרת את היכולת לאמת ומבטלת את היכולת למפות.
מה שלא נפגע מזה: מי שמחזיק את המזהה המלא · הצדדים לפעולה עצמה · מאמת בשלמות ומקבל תשובה מלאה. האימות אינו חלקי · רק התצוגה הפומבית.
תבדקו בעצמכם · בלי חשבון ובלי מפתח
ארבע הכתובות האלה פתוחות לכל אדם. אף אחת מהן לא דורשת התחברות · ואף אחת מהן לא חושפת תוכן של אף אחד.
- /verify
קבלה בודדת · מדביקים מזהה בפורמט nd-rcpt-… ומקבלים תשובה על החתימה והשרשרת
- /verify-pack
חבילת הוכחה שלמה · רצה במלואה בדפדפן שלכם · "no NoData server contacted" · כולל כפתור שמשנה בייט ומראה את הכשל
- /api/clock
שלוש השכבות כמספרים · בלי אימות · אותו מקור שממנו נקרא הפס שבראש הדף
- /verify-report
דיווח שהתקבל · מאמתים סימוכין בפורמט AR-XXXXXX בלי לראות את התוכן שדווח
הגנת ה-Photoshop · why an external anchor matters
כל מערכת שיש לה שליטה על ה-DB שלה · המפתח הפרטי שלה · ושעון הזמן שלה · תיאורטית יכולה לזייף הכל. בית משפט מבין את זה. לכן הוא לא יסמוך על שרשרת פנימית בלבד · גם אם היא נראית קריפטוגרפית.
הפתרון · עוגן חיצוני שאיננו בשליטתנו. הקבלה שלנו נשלחת ל-Bitcoin (דרך OpenTimestamps · חינם · אוטומטי). שם ה-hash שלה נכלל ב-block יחד עם אלפי hashים אחרים מכל רחבי העולם. אחרי שעה אחת · כל הרשת מסכימה שה-block קיים בזמן הזה · ולשנות אותו בדיעבד נדרש רוב כוח החישוב של Bitcoin · מה שאינו מעשי מבחינה חישובית וכלכלית.
מי שמקבל את הקבלה ממך · יכול לבדוק לבדו · בלי לסמוך על NoData · בלי לבקש הרשאה · בלי חשבון. רק לוקח את ה-hash · שולח ל-block explorer חיצוני · ומקבל אישור.
השוואה · מה עושות מערכות אחרות
רוב המוצרים בשוק כותבים "blockchain-secured" אבל בפועל אין להם עוגן חיצוני. הם מסתמכים על עדות מומחה שלהם בלבד · מה שמכריח את בית המשפט לבחור בין שני הצדדים.
רוצה לאמת בעצמך · try it yourself
יש לך receipt id מאיתנו? פתח את העמוד · הזן את ה-id · ונראה לך את ה-4 בדיקות חיות. הקבלה תוצג עם החתימה · השרשרת · ועוגן ה-Bitcoin (כשקיים). אם תרצה גם להריץ את ה-verification מקומי · יש לך verifyChainSignature() ב-open source · open spec.
שאלות נפוצות · FAQ
האם זה קביל בבית משפט?
הקבלה תוכננה כדי לתמוך בדרישות של "חתימה אלקטרונית מאובטחת" (AdES) כפי שהן מנוסחות בחוק חתימה אלקטרונית התשס"א-2001 · מזהה ייחודית את החותם · תחת שליטה בלעדית · מאפשרת לזהות שינוי. אנחנו לא אומרים "עומד בדרישות" · זו קביעה משפטית שדורשת חוות דעת על המימוש הספציפי · ואין לנו כזו. מה שאנחנו כן אומרים הוא מה שאפשר לבדוק: החתימה מאומתת בלי עדות שלנו · לרמה גבוהה יותר ("חתימה אלקטרונית מאושרת" QES) נדרשת תעודה מ-CA ישראלי מורשה · ואין לנו.
איך אני יודע שלא photoshopped את הקבלה?
בגלל ה-Bitcoin anchor. ה-hash של הקבלה נכלל ב-block של Bitcoin · שם אי-אפשר לשנות retroactively · הרשת נשמרת על אלפי שרתים בכל העולם שאין לנו עליהם שליטה. אם תיקח את הקבלה ותחפש את ה-hash שלה ב-block explorer חיצוני · תראה שהיא קיימת מהתאריך הנטען.
מה אם NoData ייעלם · אובד הכל?
לא. הקבלה עצמה היא עצמאית · החתימה ניתנת לאימות עם המפתח הציבורי בלבד · וה-Bitcoin proof קיים בלי קשר אלינו. הקבלה תישאר קבילה גם אם השרת שלנו ייסגר · בכפוף לכך שהמפתח הציבורי נשמר בעותק אצלך או אצל גורם חיצוני (recommend · GitHub release + Software Heritage Archive).
כמה זה עולה לבית משפט להוכיח את הסיפור?
בית משפט לא צריך לסמוך עלינו. אם מישהו טוען שהזייפנו · עד מומחה (forensic cryptographer) רץ את verifyChainSignature() · מסתכל ב-Bitcoin · ובודק. סדר גודל: שעת עבודה אחת. זה היתרון הגדול של חתימה דיגיטלית פתוחה לעומת "אמנת אישור" של ספק.
האם NoData רואה את התוכן?
לא. אנחנו רואים את ה-metadata · מה קרה (event_type) · מתי · מי. לא רואים את התוכן עצמו. התוכן (קובץ · message · פעולה) מוצפן צד-לקוח עם מפתח שאנחנו לא מחזיקים. אנחנו חותמים על העובדה שמשהו קרה · לא על מה שהיה בתוכן.
מה ההבדל מ-Blockchain "מסורתי"?
אנחנו לא בלוקצ'יין עצמאי · אלא משתמשים ב-Bitcoin כ-anchor חיצוני. זה זול יותר · מהיר יותר · ולא דורש מהלקוח להבין בלוקצ'יין. הוא רק צריך לדעת שיש "עוגן" אחד שלא בשליטתנו. בלוקצ'יין עצמאי (Ethereum L2 · Solana · וכו) הוא רעיון יפה אבל מוסיף תלות ב-validator שלא בשליטה של הלקוח · בלי הקצנת הסיכון.