חתימה עיוורת

מתוך המכלול, האנציקלופדיה היהודית
קפיצה לניווט קפיצה לחיפוש

בקריפטוגרפיה ואבטחת מידע, חֲתִימָה עִוֶּרֶת (באנגלית: Blind Signature) היא צורת חתימה דיגיטלית שבה תוכן המסר החתום מוסתר מפני החותם בזמן החתימה עליו. החתימה העיוורת ניתנת לאימות באופן פומבי מול המסר הגלוי באותו אופן שבו מבוצע אימות חתימה דיגיטלית רגילה למרות שהחותם לא היה מודע לתוכן המסר בעת החתימה. חתימה עיוורת שימושית במגוון תחומים בהם דרושה אנונימיות כמו הצבעה ממוחשבת או מסחר במטבע דיגיטלי.

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

קובץ:Digital voting-01.png
סכמת הצבעה דיגיטלית בסיסית

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

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

מבוא

Postscript-viewer-blue.svg ערך מורחב – חתימה דיגיטלית

חתימה דיגיטלית היא תוצר של הצפנת מפתח ציבורי או הצפנה א-סימטרית שבה המערכת מפוצלת לשני חלקים נפרדים, שלב ההצפנה המקביל לשלב החתימה ושלב הפענוח המקביל לשלב אימות החתימה. כל אחד יכול לאמת חתימה המצורפת למסמך כלשהו באמצעות המפתח הציבורי של החותם אך רק החותם שמחזיק במפתח הפרטי יכול לחתום חתימה תקפה בשמו ובהגדרה אין אפשרות (או קשה מאוד) לנחש מהו מפתח החתימה הפרטי בידיעת מפתח האימות הציבורי. חתימה דיגיטלית כוללת פונקצית חתימה ופונקצית אימות כך שהתוצאה של הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle V(S(m))} על המסר הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle m} היא הוכחה לתקפותה. השיטה המפורסמת ביותר לחתימה דיגיטלית היא שיטת RSA המבוססת על העובדה שמצד אחד קל לבצע העלאה בחזקה ומצד שני קשה לפרק לגורמים מספרים שלמים. אליס בוחרת שני מספרים ראשוניים גדולים הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle p} ו-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle q} ומחשבת את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle n=pq} . כמו כן היא מגרילה מספר שלם שהוא זר ל-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \phi(n)} , מחשבת את המפתח הסודי הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle d} כך שמתקיים הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle ed\equiv 1\text{ (mod }\phi(n))} . כאשר הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \phi(n)} הוא פונקציית אוילר של שהיא במקרה זה הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle (p-1)(q-1)} . את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle e} ואת הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle n} היא מפרסמת לכל דורש ואילו את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle d} ואת הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle p} ו- היא שומרת בסוד. כדי לחתום על המסר הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle m} היא מחשבת את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle s=m^d\text{ (mod }n)} אותו היא שולחת לבוב יחד עם המסר הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle m} . כדי לאמת את החתימה בוב מחשב את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle m'=s^e\text{ (mod }n)} ורק אם מתקיים הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle m=m'} הוא מקבל את החתימה. זה נכון בשל הזהות הבאה:

כי לפי אויילר הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle m^{\phi(n)}\equiv 1\text{ (mod }n)} עבור כל הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle m} ולכן גם הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle m^{1+\phi(n)}\equiv m\text{ (mod }n)} . היות שאף אחד חוץ מאליס אינו יודע מהם הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle d} או הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \phi(n)} כיוון שהם מעולם לא פורסמו ולא ניתן לחשב אותם מתוך ו-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle n} מבלי לדעת מהם הגורמים הראשוניים, זהו מאפיין יסודי של הצפנה אסימטרית, לכן בוב יכול לקבל את החתימה כאותנטית. אפשר לבסס חתימה דיגיטלית על מערכות הצפנת מפתח ציבורי אחרות כמו חתימה דיגיטלית של רבין המבוססת על הצפנת רבין או DSA המבוססת על הצפנת אל-גמאל.

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

הצבעה דיגיטלית עם חתימה עיוורת

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

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

אם מתרגמים את המושגים הללו לשפה קריפטוגרפית אז שלוש הדרישות הראשונות מקבילות לתהליך אימות קריפטוגרפי עם חתימה דיגיטלית קונבנציונלית. חתימת אליס היא הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle S_a} ופונקציית האימות הציבורית שלה היא הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle V_a} כך שמתקיים הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle V_a(S_a(M))=M} . שתי הדרישות האחרונות אומרות שהבוחר בוב צריך להצפין את פתק ההצבעה שלו באמצעות פונקציית הצפנה כזו כך שפתק ההצבעה ניתן יהיה לאימות גם במצבו הגלוי (לאחר פענוח). לשם המחשה נניח שפתק ההצבעה של בוב מסומן באות הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle B} , פונקציית ההצפנה שלו היא הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle E_b} ופונקציית הפענוח שלו היא הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle D_b} אז צריך שיתקיים הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle D_b(S_a(E_b(B)))=S_a(B)} . אפקטיבית, פעולת הפענוח של בוב מסירה את ההצפנה שלו על הפתק מבלי לפגוע בתקפות החתימה. קיימות מספר פונקציות הצפנה שמקיימות את הדרישה האמורה, אפשר למשל להשתמש ב-RSA אך יש להזהר ממלכודות, בדרך כלל משתמשים בהצפנת פליאיי. תהליך ההצבעה יבוצע כדלהן:

  1. בוב מצפין את פתק ההצבעה שלו הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle E_b(B)} ושולח אותו מאומת לאליס (הם משתמשים בפרוטוקול אימות מוסכם).
  2. אליס מאמתת את זהותו של בוב וחותמת על פתק ההצבעה המוצפן הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle S_a(E_b(B))} ומחזירה אותו לבוב.
  3. בוב מפענח את המסר החתום שקיבל הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle D_b(S_a(E_b(B)))} ומקבל את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle S_A(B)} . כדי למנוע מרמאי מלהחליף את פתק ההצבעה שלו במהלך המשלוח הוא מוודא שמתקיים הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle V_a(S_a(B))=B} .
  4. בוב שולח את פתק ההצבעה שלו הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle S_a(B)} לקלפי באופן אנונימי.

היות שפונקציית האימות של אליס ציבורית כל אחד יכול לחשב את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle V_a(S_a(B))} ולוודא את אמינותו של פתק ההצבעה אך אף אחד לא יידע לשייך אותו לבוב כיוון שבוב שלח את הפתק באופן אנונימי. כדי למנוע הצבעה כפולה, חברי ועדת הקלפי צריכים לוודא שפתקי ההצבעה מכילים מרכיב אקראי שאליו מוצמדת ההצבעה כך שכל הצבעה עם הפענוח נכשל (שגיאת המרה. השרת ("https://wikimedia.org/api/rest_") השיב: "Cannot get mml. Server problem."): {\displaystyle S_{a}(B)} תהיה שונה. בדרך זו אפשר להבטיח ספירה אמינה של הקולות ולזהות כפילויות. התרשים מצד שמאל ממחיש מערכת הצבעה דיגיטלית טיפוסית.

מטבע דיגיטלי עם חתימה עיוורת

בניגוד לרכישה באמצעות כרטיס אשראי או המחאה בנקאית, המאפיין המרכזי בכסף מזומן הוא שכאשר הלקוח מושך מזומנים מהבנק, הבנק אינו יודע איפה הלקוח מתכוון לבזבז אותם וכן כאשר הלקוח מבצע רכישה, הסוחר אינו יודע מי הוא הקונה. כך הכסף החליף ידיים מבלי שניתן יהיה להתחקות אחר הרוכש. אפשר לדמות מאפיין זה של רכישה במזומן גם בכסף דיגיטלי. לצורך המחשה נניח שאליס מייצרת מטבע דיגיטלי הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle C} . היא מחשבת את פונקציית הגיבוב של המטבע הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle f(C)} ואז מצפינה אותה באמצעות פונקציית ההצפנה שלה הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle E_a} עם המפתח הסודי הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle a} . את התוצאה הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle E_a(\ f(C)\ )} היא שולחת לבנק ומבקשת את אישורו. הבנק מזהה את הלקוחה באמצעי זיהוי רגילים ואז חותם על הגיבוב של המטבע באמצעות פונקציית החתימה שלו הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle S_b} , מחזיר לה את החתימה הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle S_b(\ E_a(\ f(C)\ )\ )} ומנכה את הסכום המתאים מחשבונה. כעת אליס מסירה את ההצפנה שלה מהמטבע על ידי חישוב הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle D_a(\ S_b(\ f(C)\ )\ )} ומתקבל הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle S_b(\ f(C)\ )} , כמו כן היא מוודא שמתקיים הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle V_b(\ S_b(\ f(C)\ )\ )=f(C)} כדי למנוע רמאות מצד גורם שלישי. כעת כדי לבזבז את המטבע היא משלמת עבור סחורה כלשהי עם הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle C} ועם הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle S_b(\ f(C)\ )} . הסוחר מוודא שהמטבע אותנטי ואושר על ידי הבנק על ידי בדיקה שמתקיים הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle V_b(\ S_b(\ f(C)\ )\ )=f(C)} כנדרש. פונקציית הגיבוב נחוצה כאן כדי למנוע מאליס מלרמות את הסוחר, כי ללא פונקציית הגיבוב אליס יכולה לבחור ערך אקראי כלשהו הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle X} ולמסור לו את (הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle X,V_b(X)} ) כמטבע לגיטימי. כעת הסוחר שולח את המטבע הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle C} ואת החתימה הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle S_b(\ f(C)\ )} לבנק שמוודא שהמטבע תקף ואם כן הבנק מזכה את חשבונו של הסוחר בהתאם. כמו כן הבנק צריך לאחסן את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle C} במקום כלשהו כמטבע שבוזבז כך שאליס לא תבזבז אותו שוב.

אפשר להדגים מטבע דיגיטלי עם פונקציית ההצפנה RSA. המטבע הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle C} בשווי דולר אחד יהיה מהצורה הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle C=(x,f(x)^{1/3}\text{ (mod }n))} כאשר הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle n} הוא מודולוס RSA של הבנק, הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle f} היא פונקציית גיבוב ו-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle x} הוא ערך אקראי שנבחר על ידה. ביתר פירוט, פרוטוקול להנפקה ובזבוז של מטבע אחד מתנהל כלדהלן:

  1. אליס מגרילה שני שלמים אקראיים הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle x} ו-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle r} ושולחת לבנק את המטבע המוסתר הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle B=(r^3\cdot f(x))\text{ (mod }n)} .
  2. הבנק מחזיר לה את השורש ממעלה שלישית של הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle B} מודולו הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle n} שהוא הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle (r\cdot f(x)^{1/3})\text{ (mod }n)} ומנכה מחשבונה דולר אחד.
  3. אליס מחלצת מתוך הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle B} את החתימה על המטבע הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle C} שהיא הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle f(x)^{1/3}\text{ (mod }n)} .
  4. אליס מבזבזת את המטבע, היא שולחת לבוב את הזוג הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle (x,f(x)^{1/3}\text{ (mod }n))} .
  5. בוב מתקשר לבנק מייד ומוודא שהמטבע לא בוזבז כבר. אם לא הוא בודק את חתימת הבנק ואת פונקציית הגיבוב.
  6. אם הבדיקות הצליחו הוא מקבל את המטבע ומספק את הסחורה או השרות תמורתו לאליס.
  7. הבנק מזכה את חשבונו של בוב בדולר אחד ורושם את המטבע כמי שכבר בוזבז, כדי למנוע בזבוז כפול.

דוגמה במספרים קטנים

יהיו הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle p=353, q=449} ו-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle n=pq=158497} . מפתח האימות הציבורי של חתימת הבנק יהיה הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle 3} ואילו מפתח החתימה הפרטי הוא הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle 105131} . להכנת המטבע הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle C}

  • אליס בוחרת את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle x=330} ואת הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle r=502} מחשבת את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle f(330)=37} (במקרה זה הוגרל מספר כלשהו רק לצורך הדוגמה) ושולחת לבנק את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle (25402\cdot 37)\equiv 147389\text{ (mod }158497)} .
  • הבנק מחזיר את חתימתו הפענוח נכשל (שגיאת המרה. השרת ("https://wikimedia.org/api/rest_") השיב: "Cannot get mml. Server problem."): {\displaystyle 147389^{105131}\equiv 67047{\text{ (mod }}158497)} .
  • אליס מפענחת את חתימת הבנק על ידי חילוק ב-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle r} (ליתר דיוק הכפלה בהופכי הכפלי שלו מודולו הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle n} ) ומתקבלת החתימה הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle (67047\cdot 37572)\equiv 97063\text{ (mod }158497)} . המטבע של אליס הוא הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle x=330} וחתימת הבנק על המטבע הגלוי היא הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle 97063} .
  • את הזוג הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle C=(330,97063)} היא שולחת לסוחר בוב.
  • הסוחר מצידו תחילה מוודא את תוקף המטבע על ידי בדיקת החתימה של הבנק (העלאה בחזקת 3) קל לראות שבמקרה זה מתקבל הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle 97063^3\equiv 37\text{ (mod }158497)=f(x)} . כמו כן כדי למנוע רמאות מצד אליס הוא בודק שאכן מתקבל הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle f(330)=37} . אם שתי הבדיקות עלו בהצלחה הוא מספק את הסחורה או השרות לאליס ומפקיד את המטבע בבנק.

כאשר הבנק חתם על הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle f(x)=37} הוא לא ראה אותו כיוון שהיה מוסתר בכפל ב-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle r^3} לכן כאשר הסוחר מפקיד את המטבע, הבנק לא יודע שהמטבע התקבל מאליס.

מטבע דיגיטלי עם הוכחה באפס ידיעה

Postscript-viewer-blue.svg ערך מורחב – הוכחה באפס ידיעה

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

כמו בשיטה המתוארת לעיל הבנק בוחר תחילה מודולוס הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle n} ופרמטר ביטחון הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle k} שמגדיר את ההסתברות לתפוס מבזבז כפול. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle k} גדול פירושו שקשה יותר לרמות וההסתברות שהרמאי יתגלה מתקרבת ל-1 די מהר ככל ש-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle k} גדל. נניח שמספר החשבון של אליס הוא הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle u} עם מונה כלשהו הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle v} , כך שהבנק ואליס יודעים מהם. נניח שנתונות שתי פונקציות חד-כיווניות חסינות התנגשויות הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle f} ו-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle g} שמפיקות פלט באורך קבוע (אפשר להשתמש ב-SHA-2 למשל). המטבע של אליס יהיה אחד מ-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle k} הרביעיות הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle (a_i,c_i,d_i,r_i)} של מספרים שלמים מודולו הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle n} שהיא בוחרת באופן אקראי. רביעיות אלה נקראות "מועמדים". כדי להחתים את הבנק על המטבע היא מבצעת כדלהלן:

  1. היא מסתירה את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle k} המועמדים באמצעות פונקציית ההצפנה שלה: הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle B_i=E_{r_i}(\ f(x_i,y_i)\ )} כאשר הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle x_i=g(a_i,c_i)} וכן הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle y_i=g(\ a_i\oplus (u\ \| \ (v+i)\ ),d_i)} ושולחת אותם לבנק. הסימן הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \oplus} מייצג XOR והסימן הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \|} מייצג שרשור מחרוזות.
  2. הבנק בוחר קבוצת אתגר אקראית הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle R} באורך הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle k/2} מועמדים מתוך הרשימה שקיבל ושולח אותה לאליס. אליס חושפת בפני הבנק את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle (a_i,c_i,d_i,r_i)} עבור כל הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle i\in R} . הבנק בודק עבור כל רביעייה שמתקבל הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle B_i} כיוון שהוא יודע מהם הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle u} ו-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle v} . לכן אם אליס מנסה לרמותו הסיכויים שהוא יגלה את הרמאות מאד גבוהים.
  3. לאחר שנחה שדעתו של הבנק והוא משוכנע שאליס אינה רמאית הוא חותם על המטבע הממוסך הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle S_b(\Pi_{i\not\in R}B_i)} ומנכה את הסכום המתאים מחשבונה. הרעיון כאן הוא שהבנק צריך להחסיר מהחתימה את כל הערכים שאליס חשפה בשלב ההוכחה, כי הם אינם יכולים יותר לשמש כמטבע לגיטימי. הסימן הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \Pi} היא פעולה כלשהי שהתכונה שלה היא שהיא נשמרת גם לאחר תהליך הפענוח של אליס. במאמר המקורי הפעולה הייתה כפל בגלל שסכמת החתימה הייתה חישוב שורש ממעלה שלישית וההצפנה של אליס הייתה כפל ב-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle r^3_i} . כעת מפעילה אליס את פונקציית הפענוח שלה כדי לחשוף את הערך הפענוח נכשל (שגיאת המרה. השרת ("https://wikimedia.org/api/rest_") השיב: "Cannot get mml. Server problem."): {\displaystyle C=S_{b}(\Pi _{i\not \in R}f(x_{i},y_{i}))} , בודקת שהתוצאה נכונה על ידי הפעלת פונקציית האימות ומקדמת את המונה הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle v=v+k} .

עבור הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \epsilon} קבוע כלשהו, אם פחות מ-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle (1-\epsilon)} מתוך הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle k} המועמדים המוסתרים הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle B_i} אינו במבנה הנכון הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle (\ E_{r_i}(f(g(a_i,c_i),g(a_i\oplus(u\| (v+i)),d_i)))\ )} (יש לזכור שהבנק יודע מהו הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle u\| (v+i)} ), אז אליס תתפס כמי שנסתה לרמות בהסתברות של הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle 1-\exp(-c\epsilon k)} .

כעת בידי אליס מטבע דיגיטלי אותו היא יכולה לבזבז כדלהלן:

  1. היא שולחת את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle C} לסוחר.
  2. הסוחר שולח לאליס מחרוזת אתגר אקראית בינארית באורך הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle k/2} סיביות. אם הסיבית ה-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle i} היא 1 אליס צריכה לשלוח לבוב את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle a_i,c_i,y_i} ואם הסיבית ה-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle i} היא 0 היא אמורה לשלוח את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle x_i,a_i\oplus (u\ \| \ (v+i))} ואת הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle d_i} . הסוחר בודק שהערכים שקיבל תואמים את הערך של הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle C} . היות שההנחה היא שהפונקציות הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle f} ו-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle g} בלתי הפיכות והחתימה של הבנק נחשבת אמינה, אם אליס מרמה בשלב זה היא תתפס בהסתברות גבוהה.
  3. הסוחר שולח תעתיק של השיחה שלו עם אליס לבנק שמזכה אותו בסכום המתאים ושומר את תעתיק השיחה בקובץ לצורך תיעוד.

האנונימיות של אליס באינטראקציה שלה עם הסוחר נשמרת. המידע המזהה היחידי שהיא מסרה הוא מספר החשבון שלה כשהוא ממוסך עם ערך אקראי הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle a_i} לכן הסוחר אינו יכול לעשות בו כל שימוש. הערכים הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle c_i,d_i} נחוצים כך שגם אם יתגלה שהחד-כיווניות של הפונקציה חלשה מהצפוי ומישהו הצליח לפצח אותה הוא ישאר עם מספר עצום של זוגות אפשריים הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle (a_i,c_i)} וכן הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle (a_i\oplus (u\ \|\ (v+i)),d_i)} שהפונקציה הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle g} ממפה לערכים הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle x_i,y_i} . כך שגם אם הסוחר מצליח להפוך את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle g} הוא לא יצליח לחלץ מידע מועיל לגבי זהות אליס. אם אליס תנסה לבזבז את המטבע הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle C} שוב, יקרה דבר מעניין, הבנק ישווה את תעתיק השיחה מהרכישה החדשה עם התעתיק השמור מהרכישה הקודמת ובגלל שהאתגר אקראי יש סבירות גבוהה שיכול להיות אינדקס הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle i} כלשהו כך שסיבית האתגר ה-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle i} הייתה 1 בעותק הראשון ו-0 בעותק השני כי שניהם אקראיים. לכן לא רק שהבנק יודע כעת שנעשה ניסיון לבזבוז כפול, אם הוא יבצע XOR של שני תעתיקי השיחות שבידו הוא יקבל את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle u\ \|\ (v+i)} , שבעצם חושף את מספר חשבונה של אליס ואת זהותה.

הבעיה בשיטה זו היא שבעוד שהבנק מסוגל לגלות אם אליס ניסתה להונות אותו, הוא עצמו יכול להמציא תעתיק שיחה בדוי כדי להפליל אותה, לכן מעצם טענה זו הבנק לא יוכל לשכנע אף אחד אחר שאליס אכן רמאית (זוהי תכונה מהותית בהוכחה באפס ידיעה). אפשר לתקן את הבעיה על ידי הוספת חתימה דיגיטלית של אליס כדי להגן עליה מפני רמאות מצד הבנק. כאשר אליס בוחרת את המועמדים היא מגרילה הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle k} זוגות נוספים של ערכים הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle (p_i,q_i)} משרשרת אותם ביחד הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle g(p_1,q_1)\ \|\ \cdots\ \|\ g(p_k,q_k)} , חותמת על התוצאה ושולחת הכול לבנק. בנוסף כאשר היא מחשבת אתהפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle f(x_i,y_i)} היא מחליפה את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle u} בביטוי הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle u\ \|\ p_i\ \|\ q_i} . ואז אם הבנק יכול לספק הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle k/2+1} זוגות נכונים הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle (p_i,q_i)} בידו ההוכחה שאליס ניסתה לרמות. אך התועלת כאן היא שהבנק אינו יכול לשנות את הערכים הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle g(p_i,q_i)} בגלל החתימה של אליס עליהם. גם אם נניח שהבנק מסוגל לפצח את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle g} כל מה שאליס צריכה לעשות זה לחשוף את הזוג המתאים הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle (p_i,q_i)} שברשותה כדי להוכיח שנעשה ניסיון לרמותה.

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

חתימה עיוורת מבוססת DSA

חתימה דיגיטלית DSA וכן חתימה דיגיטלית של שנור מבוססים על הצפנת אל-גמאל שהיא מערכת מפתח ציבורי המבוססת על בעיית הלוגריתם הבדיד. פונקציית החתימה של שנור בגרסה הלא עיוורת פשוטה יותר מ-DSA והיא פועלת באופן כללי כדלהלן: בהינתן המפתח הציבורי הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle (p,q,g,y)} כאשר הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle (p,q,g)} הם פרמטרים ציבוריים המשותפים לכל המשתמשים. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle p} ו-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle q} הם מספרים ראשוניים מתארים תת-חבורה הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \mathbb{Z}^*_q} של הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \mathbb{Z}^*_p} מסדר הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle q} עם היוצר הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle g} כאשר הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle q|(p-1)} . המפתח הציבורי הוא הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle y=g^{-x}\text{ mod }p } ואילו המפתח הפרטי הוא הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle x} . אם הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle H} היא פונקציית גיבוב מוסכמת המפיקה פלט בטווח הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle [1,q-1]} , אז תהליך החתימה על המסר הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle m} מתבצע כך. החותם מגריל שלם אקראי הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle k} בטווח הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle [1,q-1]} ומחשב את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle (r,e,s)} כדלהלן:

הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle r=g^k\text{ mod }p}
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle e=H(m\ \|\ r)\text{ mod }q}
הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle s=(k+xe)\text{ mod }q}

הסמל "הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \|} " מייצג שרשור. לאימות החתימה באמצעות המפתח הציבורי של החותם בודקים שמתקיים:

הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle r\equiv (g^s\cdot y^e)\text{ mod }p} או הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle e=H(m,(g^s\cdot y^e)\text{ mod }p)} .

כדי להפוך את החתימה המתוארת לחתימה עיוורת (נניח אליס מעוניינת להחתים את הבנק על המטבע הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle C} ), הם מבצעים את הפרוטוקול הבא:

  1. הבנק בוחר את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle k} כמו קודם ומייצר את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle r=g^k\text{ mod }p} ושולח את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle r} לאליס.
  2. אליס מגרילה שלמים אקראיים הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle a} ו-הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle b} בטווח הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle [1,q-1]} ומחשבת את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle (r',e',e)} כדלהלן:
    1. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle r'=(r\cdot g^{-a}\cdot y^{-b})\text{ mod }p}
    2. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle e'=H(C\ \|\ r')\text{ mod }q}
    3. הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle e=(e'+b)\text{ mod }q}
    4. את הערכים הללו שולחת אליס לבנק.
  3. הבנק מחשב את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle s=(k+ex)\text{ mod }q} ושולח לאליס את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle s} .
  4. אליס מחשבת את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle s'=(s-a)\text{ mod }q} והזוג הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle (e',s')} הם חתימה תקפה על הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle C} . כי מתקיים: הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle e'=H(m,(g^{s'}\cdot y^{e'})\text{ mod }p)}

ביטחון

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

הביטחון של חתימת שנור ניתן להוכחה במסגרת מודל אורקל אקראי תחת ההשערה שבעיית הלוגריתם הבדיד קשה. ב-2012 בוצע מחקר[6] באשר לביטחון המדוייק של חתימת שנור והטענה היא שלפי למת הפיצול קיים איבוד זמן בפקטור של הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle O(q_h)} כאשר הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle q_h} הוא מספר השאילתות לאורקל האקראי. במילים אחרות אם קיים זייפן שיכול לזייף חתימת שנור בהסתברות הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \epsilon_F} אז אפשר יהיה לחשב את הלוגריתם הבדיד בהסתברות קבועה על ידי חזרה לאחור הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle O(q_h/\epsilon_F)} פעמים, תחת הנחות נופסות אפשר להגיע לרדוקציה של הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle q_h^{2/3}} לכל היותר בשיעור ההצלחה-זמן.

דוגמה במספרים קטנים

  • נתון הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle q=179,p=359,g=164} וכן המפתח הפרטי של אליס הוא הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle x=81} והמפתח הציבורי הוא הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle y=245} .
  • הבנק בוחר שלם אקראי הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle k=45} ושולח לאליס את האתגר הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle r=164^{45}\equiv 120\text{ (mod }359)} .
  • אליס בוחרת את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle a=64,b=120} ונניח שהמטבע הוא הערך הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle c=12345678} . היא מחשבת את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle 120\cdot 164^{-64}\cdot 245^{-120}\equiv 158\text{ (mod }359)} . נניח לצורך הפשטות שתוצאת הגיבוב היא הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle H(c\ \|\ 158)=54\text{ (mod }179)} .
  • הבנק מחזיר לאליס את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle s=(45+174\cdot 81)\text{ mod }179=177} כך שמתקיים הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle 120\equiv (174^{177}\cdot 245^{174})\text{ (mod }359)}
  • אליס מחלצת את חתימת הבנק על המטבע כך: תחילה הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle s'=177-64=113} ואז הצמד הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle (113,54)} הוא חתימה תקפה על הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle c} כי מתקיים הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle H(c\ \|\ ((164^{113}\cdot 245^{54}) =64\text{ mod }359))=54}

שיטות חדשות

קיימות מספר שיטות חתימה עיוורת חדשות יעילות ובטוחות יותר, ביניהן אפשר לציין את Camenisch-Lysyanskaya[7] שייחודה בכך שניתן לחלץ חתימה על קבוצה של מסרים בבת אחת, ולהוכיח תקפות על כל אחד מהם בנפרד. הרעיון שימושי גם למטבע דיגטלי תוך שמירה על אנוניומיות המשתמש. כמו כן קיימת שיטת חתימה עיוורת המסתמכת על תחום חדש בקריפטוגרפיה הקרוי מיפוי בילינארי[8]. בנוסף קיימת מחלקה של חתימה עיוורת שכאמור מענישה את הלקוח שמנסה לבזבז פעמיים בחשיפת זהותו. שיטה אחת כזו היא חתימה עיוורת של סטפן ברנדס[9] שהוטמעה בטכנולוגיית אימות חדשה מבית מיקרוסופט הנקראת U-Prove. הרעיון של ברנד בעצם לוקח את החיסרון הידוע של חתימת DSA שבה אסור להשתמש במפתח הארעי יותר מפעם אחת לחתימה על שני מסמכים שונים והופך אותו ליתרון, בזה שהוא משתמש בו כדי לחשוף את זהות המשתמש במקרה של בזבוז כפול.

ראו גם

הערות שוליים

  1. ^ Chaum, David (1983). "Blind signatures for untraceable payments" (PDF). Advances in Cryptology Proceedings of Crypto. 82 (3): 199-203
  2. ^ "Untraceable Electronic Cash", David Chaum, Amos Fiat & Moni Naor, CRYPTO 1988: Advances in Cryptology — CRYPTO’ 88 pp 319-327
  3. ^ Provably Secure and Practical Identification Schemes and Corresponding Signature Schemes, Tatsuaki Okamoto, Crypto’92, LNCS 740, Springer-Verlag, pp. 31–53, 1992
  4. ^ Fiat; Shamir (1986). "How To Prove Yourself: Practical Solutions to Identification and Signature Problems" (PDF). Proceedings of CRYPTO '86.
  5. ^ Hash function requirements for Schnorr signatures
  6. ^ Seurin, Yannick (2012-01-12). "On the Exact Security of Schnorr-Type Signatures in the Random Oracle Model" (PDF). Cryptology ePrint Archive. International Association for Cryptologic Research. Retrieved 2014-08-11.
  7. ^ Jan Camenisch, Anna Lysyanskaya, A Signature Scheme with Efficient Protocols, Lecture Notes in Computer Science (LNCS, volume 2576)
  8. ^ Jan Camenisch, Anna Lysyanskaya, Signature Schemes and Anonymous Credentials from Bilinear Maps Lecture Notes in Computer Science book series (LNCS, volume 3152)
  9. ^ Stefan Brands, Untraceable Off-line Cash in Wallets with Observers, Proceeding CRYPTO '93 Proceedings of the 13th annual international cryptology conference on Advances in cryptology Pages 302-318
Logo hamichlol 3.png
הערך באדיבות ויקיפדיה העברית, קרדיט,
רשימת התורמים
רישיון cc-by-sa 3.0