חתימה עיוורת

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

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

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

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

מבוא

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

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

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

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

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

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

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

אם מתרגמים את המושגים הללו לשפה קריפטוגרפית אז שלוש הדרישות הראשונות מקבילות לתהליך אימות קריפטוגרפי עם חתימה דיגיטלית קונבנציונלית. חתימת אליס היא ופונקציית האימות הציבורית שלה היא כך שמתקיים . שתי הדרישות האחרונות אומרות שהבוחר בוב צריך להצפין את פתק ההצבעה שלו באמצעות פונקציית הצפנה כזו כך שפתק ההצבעה ניתן יהיה לאימות גם במצבו הגלוי (לאחר פענוח). לשם המחשה נניח שפתק ההצבעה של בוב מסומן באות , פונקציית ההצפנה שלו היא ופונקציית הפענוח שלו היא עיבוד הנוסחה נכשל (שגיאת המרה. השרת ("https://en.wikipedia.org/api/rest_") השיב: "Cannot get mml. Server problem."): {\displaystyle D_{b}} אז צריך שיתקיים . אפקטיבית, פעולת הפענוח של בוב מסירה את ההצפנה שלו על הפתק מבלי לפגוע בתקפות החתימה. קיימות מספר פונקציות הצפנה שמקיימות את הדרישה האמורה, אפשר למשל להשתמש ב-RSA אך יש להזהר ממלכודות, בדרך כלל משתמשים בהצפנת פליאיי. תהליך ההצבעה יבוצע כדלהן:

  1. בוב מצפין את פתק ההצבעה שלו עיבוד הנוסחה נכשל (שגיאת המרה. השרת ("https://en.wikipedia.org/api/rest_") השיב: "Cannot get mml. Server problem."): {\displaystyle E_{b}(B)} ושולח אותו מאומת לאליס (הם משתמשים בפרוטוקול אימות מוסכם).
  2. אליס מאמתת את זהותו של בוב וחותמת על פתק ההצבעה המוצפן ומחזירה אותו לבוב.
  3. בוב מפענח את המסר החתום שקיבל ומקבל את . כדי למנוע מרמאי מלהחליף את פתק ההצבעה שלו במהלך המשלוח הוא מוודא שמתקיים .
  4. בוב שולח את פתק ההצבעה שלו עיבוד הנוסחה נכשל (MathML עם גיבוי SVG או PNG (מומלץ לדפדפנים מודרניים ולכלי נגישות): תגובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle S_a(B)} לקלפי באופן אנונימי.

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

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

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

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

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

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

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

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

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

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

ערך מורחב – הוכחה באפס ידיעה

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

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

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

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

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

  1. היא שולחת את לסוחר.
  2. הסוחר שולח לאליס מחרוזת אתגר אקראית בינארית באורך סיביות. אם הסיבית ה- היא 1 אליס צריכה לשלוח לבוב את עיבוד הנוסחה נכשל (MathML עם גיבוי SVG או PNG (מומלץ לדפדפנים מודרניים ולכלי נגישות): תגובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle a_i,c_i,y_i} ואם הסיבית ה- היא 0 היא אמורה לשלוח את ואת עיבוד הנוסחה נכשל (MathML עם גיבוי SVG או PNG (מומלץ לדפדפנים מודרניים ולכלי נגישות): תגובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle d_i} . הסוחר בודק שהערכים שקיבל תואמים את הערך של . היות שההנחה היא שהפונקציות עיבוד הנוסחה נכשל (MathML עם גיבוי SVG או PNG (מומלץ לדפדפנים מודרניים ולכלי נגישות): תגובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle f} ו- בלתי הפיכות והחתימה של הבנק נחשבת אמינה, אם אליס מרמה בשלב זה היא תתפס בהסתברות גבוהה.
  3. הסוחר שולח תעתיק של השיחה שלו עם אליס לבנק שמזכה אותו בסכום המתאים ושומר את תעתיק השיחה בקובץ לצורך תיעוד.

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

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

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

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

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

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

או .

כדי להפוך את החתימה המתוארת לחתימה עיוורת (נניח אליס מעוניינת להחתים את הבנק על המטבע ), הם מבצעים את הפרוטוקול הבא:

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

ביטחון

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

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

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

  • נתון וכן המפתח הפרטי של אליס הוא עיבוד הנוסחה נכשל (שגיאת המרה. השרת ("https://en.wikipedia.org/api/rest_") השיב: "Cannot get mml. Server problem."): {\displaystyle x=81} והמפתח הציבורי הוא עיבוד הנוסחה נכשל (MathML עם גיבוי SVG או PNG (מומלץ לדפדפנים מודרניים ולכלי נגישות): תגובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle y=245} .
  • הבנק בוחר שלם אקראי ושולח לאליס את האתגר .
  • אליס בוחרת את עיבוד הנוסחה נכשל (MathML עם גיבוי SVG או PNG (מומלץ לדפדפנים מודרניים ולכלי נגישות): תגובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle a=64,b=120} ונניח שהמטבע הוא הערך עיבוד הנוסחה נכשל (MathML עם גיבוי SVG או PNG (מומלץ לדפדפנים מודרניים ולכלי נגישות): תגובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle c=12345678} . היא מחשבת את עיבוד הנוסחה נכשל (MathML עם גיבוי SVG או PNG (מומלץ לדפדפנים מודרניים ולכלי נגישות): תגובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle 120\cdot 164^{-64}\cdot 245^{-120}\equiv 158\text{ (mod }359)} . נניח לצורך הפשטות שתוצאת הגיבוב היא עיבוד הנוסחה נכשל (MathML עם גיבוי SVG או PNG (מומלץ לדפדפנים מודרניים ולכלי נגישות): תגובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle H(c\ \|\ 158)=54\text{ (mod }179)} .
  • הבנק מחזיר לאליס את כך שמתקיים עיבוד הנוסחה נכשל (MathML עם גיבוי SVG או PNG (מומלץ לדפדפנים מודרניים ולכלי נגישות): תגובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle 120\equiv (174^{177}\cdot 245^{174})\text{ (mod }359)}
  • אליס מחלצת את חתימת הבנק על המטבע כך: תחילה ואז הצמד הוא חתימה תקפה על כי מתקיים עיבוד הנוסחה נכשל (MathML עם גיבוי SVG או PNG (מומלץ לדפדפנים מודרניים ולכלי נגישות): תגובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://en.wikipedia.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

הערך באדיבות ויקיפדיה העברית, קרדיט,
רישיון cc-by-sa 3.0
This article is issued from Hamichlol. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.