עבור formula_131 קבוע כלשהו, אם פחות מ-formula_132 מתוך formula_102 המועמדים המוסתרים formula_122 אינו במבנה הנכון formula_135 (יש לזכור שהבנק יודע מהו formula_136), אז אליס תיתפס כמי שנסתה לרמות בהסתברות של formula_137.
כעת בידי אליס מטבע דיגיטלי אותו היא יכולה לבזבז כדלהלן:
האנונימיות של אליס באינטראקציה שלה עם הסוחר נשמרת. המידע המזהה היחידי שהיא מסרה הוא מספר החשבון שלה כשהוא ממוסך עם ערך אקראי formula_148 לכן הסוחר אינו יכול לעשות בו כל שימוש. הערכים formula_149 נחוצים כך שגם אם יתגלה שהחד-כיווניות של הפונקציה formula_108 חלשה מהצפוי ומישהו הצליח לפצח אותה הוא ישאר עם מספר עצום של זוגות אפשריים formula_151 וכן formula_152 שהפונקציה formula_108 ממפה לערכים formula_154. כך שגם אם הסוחר מצליח להפוך את formula_108 הוא לא יצליח לחלץ מידע מועיל לגבי זהות אליס. אם אליס תנסה לבזבז את המטבע formula_48 שוב, יקרה דבר מעניין, הבנק ישווה את תעתיק השיחה מהרכישה החדשה עם התעתיק השמור מהרכישה הקודמת ובגלל שהאתגר אקראי יש סבירות גבוהה שיכול להיות אינדקס formula_140 כלשהו כך שסיבית האתגר ה-formula_140 הייתה 1 בעותק הראשון ו-0 בעותק השני כי שניהם אקראיים. לכן לא רק שהבנק יודע כעת שנעשה ניסיון לבזבוז כפול, אם הוא יבצע XOR של שני תעתיקי השיחות שבידו הוא יקבל את formula_159, שבעצם חושף את מספר חשבונה של אליס ואת זהותה.
הבעיה בשיטה זו היא שבעוד שהבנק מסוגל לגלות אם אליס ניסתה להונות אותו, הוא עצמו יכול להמציא תעתיק שיחה בדוי כדי להפליל אותה, לכן מעצם טענה זו הבנק לא יוכל לשכנע אף אחד אחר שאליס אכן רמאית (זוהי תכונה מהותית בהוכחה באפס ידיעה). אפשר לתקן את הבעיה על ידי הוספת חתימה דיגיטלית של אליס כדי להגן עליה מפני רמאות מצד הבנק. כאשר אליס בוחרת את המועמדים היא מגרילה formula_102 זוגות נוספים של ערכים formula_161 משרשרת אותם ביחד formula_162, חותמת על התוצאה ושולחת הכול לבנק. בנוסף כאשר היא מחשבת אתformula_163 היא מחליפה את formula_105 בביטוי formula_165. ואז אם הבנק יכול לספק formula_166 זוגות נכונים formula_161 בידו ההוכחה שאליס ניסתה לרמות. אך התועלת כאן היא שהבנק אינו יכול לשנות את הערכים formula_168 בגלל החתימה של אליס עליהם. גם אם נניח שהבנק מסוגל לפצח את formula_108 כל מה שאליס צריכה לעשות זה לחשוף את הזוג המתאים formula_161 שברשותה כדי להוכיח שנעשה ניסיון לרמותה.
אפשר להרחיב את השיטה להמחאה בנקאית דיגיטלית שאינה ניתנת למעקב או התחקות אחר הרוכש. אליס יכולה לבקש מהבנק "פנקס" המחאות שבכל אחד מהם היא יכולה לבזבז עד הסכום הנקוב בו והבנק ינכה מחשבונה בהתאם את הסכום שבזבזה, אך הבנק לא יידע היכן היא השתמשה בהמחאה או באיזה סכום. השיטה המתוארת עובדת מבחינה תאורטית אך אינה פרקטית בגלל המחיר הכבד שהצדדים צריכים לשלם מבחינה חישובית כדי להגיע לתוצאה המיוחלת. בשיטות חדשות מנסים להגיע לרמת ביטחון דומה ללא הצורך בתקורה הגבוהה של פרוטוקול Cut-and-Choose.
חתימה עיוורת מבוססת DSA.
חתימה דיגיטלית DSA וכן חתימה דיגיטלית של שנור מבוססים על הצפנת אל-גמאל שהיא מערכת מפתח ציבורי המבוססת על בעיית הלוגריתם הבדיד. פונקציית החתימה של שנור בגרסה הלא עיוורת פשוטה יותר מ-DSA והיא פועלת באופן כללי כדלהלן: בהינתן המפתח הציבורי formula_171 כאשר formula_172 הם פרמטרים ציבוריים המשותפים לכל המשתמשים. formula_5 ו-formula_6 הם מספרים ראשוניים מתארים תת-חבורה formula_175 של formula_176 מסדר formula_6 עם היוצר formula_108 כאשר formula_179. המפתח הציבורי הוא formula_180 ואילו המפתח הפרטי הוא formula_70. אם formula_69 היא פונקציית גיבוב מוסכמת המפיקה פלט בטווח formula_183, אז תהליך החתימה על המסר formula_4 מתבצע כך. החותם מגריל שלם אקראי formula_102 בטווח formula_183 ומחשב את formula_187 כדלהלן:
הסמל "formula_117" מייצג שרשור. לאימות החתימה באמצעות המפתח הציבורי של החותם בודקים שמתקיים:
כדי להפוך את החתימה המתוארת לחתימה עיוורת (נניח אליס מעוניינת להחתים את הבנק על המטבע formula_48), מבצעים את הפרוטוקול של אוקמוטו המבוסס על שנור כדלהן:
ביטחון.
חתימת שנור היא שילוב של פרוטוקול אימות של שנור יחד עם רעיון של עמוס פיאט ועדי שמיר. פונקציית הגיבוב לצורך חתימת שנור לא חייבת להיות חסינת התנגשויות, מחקרים מראים שבניגוד ל-DSA אפשר להסתפק בחתימת שנור בפונקציית גיבוב חלשה כמו SHA-1 וכן אפשר להסתפק בערך גיבוב קצר יותר בכעשרים וחמש אחוז.
הביטחון של חתימת שנור ניתן להוכחה במסגרת מודל אורקל אקראי תחת ההשערה שבעיית הלוגריתם הבדיד קשה. ב-2012 בוצע מחקר באשר לביטחון המדויק של חתימת שנור והטענה היא שלפי למת הפיצול קיים איבוד זמן בפקטור של formula_211 כאשר formula_212 הוא מספר השאילתות לאורקל האקראי. במילים אחרות אם קיים זייפן שיכול לזייף חתימת שנור בהסתברות formula_213 אז אפשר יהיה לחשב את הלוגריתם הבדיד בהסתברות קבועה על ידי חזרה לאחור formula_214 פעמים, תחת הנחות נוספות אפשר להגיע לרדוקציה של formula_215 לכל היותר בשיעור ההצלחה-זמן.
שיטות חדשות.
קיימות מספר שיטות חתימה עיוורת חדשות יעילות ובטוחות יותר, ביניהן אפשר לציין את Camenisch-Lysyanskaya שייחודה בכך שניתן לחלץ חתימה על קבוצה של מסרים בבת אחת, ולהוכיח תקפות על כל אחד מהם בנפרד. הרעיון שימושי גם למטבע דיגיטלי תוך שמירה על אנונימיות המשתמש. כמו כן קיימת שיטת חתימה עיוורת המסתמכת על תחום חדש בקריפטוגרפיה הקרוי מיפוי ביליניארי. בנוסף קיימת מחלקה של חתימה עיוורת שכאמור מענישה את הלקוח שמנסה לבזבז פעמיים בחשיפת זהותו. שיטה אחת כזו היא חתימה עיוורת של סטפן ברנדס שהוטמעה בטכנולוגיית אימות חדשה מבית מיקרוסופט הנקראת U-Prove. הרעיון של ברנד בעצם לוקח את החיסרון הידוע של חתימת DSA שבה אסור להשתמש במפתח הארעי יותר מפעם אחת לחתימה על שני מסמכים שונים והופך אותו ליתרון, בזה שהוא משתמש בו כדי לחשוף את זהות המשתמש במקרה של בזבוז כפול.
פרוטוקול מטבע דיגיטלי עם חתימה עיוורת של ברנדס.
פרוטוקול הכנה.
הבנק formula_231 בוחר באקראי שלושה יוצרים formula_232 של החבורה formula_233 מסדר formula_6 ראשוני, שלם אקראי formula_235 וכן שתי פונקציות גיבוב formula_236 כאשר formula_69 משמשת ליצירה ואימות חתימת הבנק ואילו formula_238 משמשת לצורך האתגר בפרוטוקול התשלום. הערכים הציבוריים המשותפים לכל הלקוחות הם formula_233 וכן הראשוניים formula_5 ו-formula_6 כאשר formula_233 היא תת-קבוצה של formula_243 וכן היוצרים ופונקציות הגיבוב. המפתח הסודי של הבנק הוא formula_70. כרגיל ההנחה היא שהבנק מנהל מסד נתונים המכיל פרטים מזהים של כל הלקוחות וכל הסוחרים ובנפרד מסד נתונים המכיל מעקב אחרי כל המשיכות וההפקדות. מטבע דיגיטלי יכיל זוג הערכים formula_245 שבהמשך יוסבר איך מחשבים אותם והחתימה של הבנק עליהם formula_246 כך שמתקיים
ההוכחה שהמטבע שייך ללקוח היא אם הוא יכול להוכיח שידוע לו הייצוג הלוגריתמי של formula_249 ו-formula_36 ביחס ליוצרים formula_251 ו-formula_252. בתהליך פתיחת חשבון הלקוח מזהה עצמו מול הבנק באמצעי זיהוי רגילים, מייצר ערך אקראי formula_253 ומחשב את formula_254 אם formula_255 הוא משדר את formula_256 לבנק ושומר בסוד את formula_253. הבנק מחשב ומחזיר ללקוח את formula_258.
פרוטוקול משיכה.
המשיכה מתבצעת בשלושה מהלכים, לאחר שהלקוח זיהה עצמו מול הבנק בדרכים רגילות:
הלקוח formula_274 מקבל את חתימת הבנק רק אם מתקיים formula_275 וכן formula_276. אם כן הוא מחשב את formula_277 מודולו formula_6.
בפרוטוקול זה מספר המטבעות לעולם לא יעבור את מספר המשיכות לכן הלקוח לא יכול לייצר לעצמו מטבעות במיוחד לאור העובדה שכדי להצליח בכך הוא חייב לדעת את הייצוג של המטבע ביחס ליוצרים שזו בעיה קשה הנגזרת מבעיית הלוגריתם הבדיד. וההוכחה דומה להוכחה של פרוטוקול האימות של שנור. תכונה מעניינת נוספת היא שהפרוטוקול נחשב לחתימה עיוורת חלקית כי הלקוח יכול להסתיר את המעטפת החיצונית של המטבע אבל לא את המבנה הפנימי שלו.
פרוטוקול בזבוז.
כאשר formula_274 רוצה לבזבז את המטבע אצל formula_280 הוא מבצע כדלהן:
הסוחר מקבל את המטבע כלגיטימי רק אם שני הדברים הבאים מתקיימים: החתימה של הבנק תקפה וכן שמתקיים formula_288.
אם הלקוח יודע את פרטי הסוחר מראש אפשר לצמצם את פרוטוקול התשלום למהלך אחד שכן הוא יכול לחשב את formula_10 לבדו. ברור שנכונות formula_10 חשובה לסוחר ולא ללקוח כי תקפותו תקבע אם הבנק יכבד את העסקה ויזכה את הסוחר בהתאם.
פרוטוקול הפקדה.