חתימה דיגיטלית של שנור

בקריפטוגרפיה, חתימה דיגיטלית של שנור היא שיטת חתימה דיגיטלית שפותחה ב-1989 על ידי קלאוס שנור המבוססת על הצפנת אל-גמאל והיא יעילה יותר מ-DSA. חתימת שנור ידועה בפשטותה והביטחון שלה מבוסס על הקושי המשוער של בעיית הלוגריתם הבדיד. היא מייצרת חתימה קצרה והחישובים שהצדדים צריכים לעשות יעילים ביחס לחתימת DSA. החתימה נרשמה בארצות הברית כפטנט שתוקפו פג ב-2008. החתימה הדיגיטלית של שנור מבוססת על אלגוריתם אמות הזהויות שלו בשילוב עם רעיון של פיאט ושמיר של הוכחת אפס ידיעה לא-אינטראקטיבית וניתן להוכיח את ביטחונו במסגרת מודל אורקל אקראי בהנחה שפונקציית הגיבוב בטוחה. החתימה משתמשת במספר ראשוני p {\displaystyle p} כך של- p − 1 {\displaystyle p-1} יש גורם ראשוני גדול q {\displaystyle q} (לפחות 140 סיביות) וכן α {\displaystyle \alpha } שהוא בסיס הלוגריתם הדיסקרטי (מודולו q {\displaystyle q} ) כך שמתקיים α q ≡ 1  (mod  p ) {\displaystyle \alpha ^{q}\equiv 1{\text{ (mod }}p)} . אורך החתימה קצר בהרבה מחתימת RSA או DSA (במאמר המקורי זה היה בערך 212 סיביות, אך מן הסתם לאור ההתקדמות הטכנולוגית נדרשים מספרים יותר גדולים). ביטחון החתימה מסתמך על החד-כיווניות של ההעלאה בחזקה y = α x  (mod  p ) {\displaystyle y=\alpha ^{x}{\text{ (mod }}p)} . בהנחה שלוגריתם בדיד בסדר גודל כזה קשה מאוד לחישוב. החתימה על המסר נוצרת באופן כזה שכדי לזייפה יש צורך לחשב את הלוגריתם הבדיד. לאלגוריתם החתימה הדיגיטלית קשר ישיר לאלגוריתם אימות זהויות. למשל במקרה של כרטיס חכם החתימה יכולה לשמש לאימות זהות בעל הכרטיס. מסיבה זו יש עדיפות לאלגוריתם יעיל בגלל האופי המוגבל של כרטיס חכם מהיבט של צריכת זיכרון ועוצמת מחשוב. תחילה לצורך אתחול, מכינים את הראשוניים p {\displaystyle p} ו- q {\displaystyle q} כך שמתקיים p | ( q − 1 ) {\displaystyle p|(q-1)} , כאשר p ≥ 2 512 {\displaystyle p\geq 2^{512}} וכן q ≥ 2 140 {\displaystyle q\geq 2^{140}} . במקרה זה p {\displaystyle p} נקרא ראשוני חזק. חשוב לזכור שהמספרים הללו נכונים רק לעת כתיבת המאמר המקורי של שנור. יש צורך לעדכן אותם בהתאם. בוחרים יוצר α ∈ Z p {\displaystyle \alpha \in \mathbb {Z} _{p}} מסדר q {\displaystyle q} כך שמתקיים α q ≡ 1  (mod  p ) {\displaystyle \alpha ^{q}\equiv 1{\text{ (mod }}p)} בתנאי ש- α ≠ 1 {\displaystyle \alpha \neq 1} . כמו כן בוחרים פונקציית גיבוב מתאימה h : Z q × Z → { 0 , . . . , 2 t − 1 } {\displaystyle h:\mathbb {Z} _{q}\times \mathbb {Z} \rightarrow \{0,...,2^{t}-1\}} (פונקציית גיבוב שמפיקה פלט באורך t {\displaystyle t} סיביות) כאשר t {\displaystyle t} הוא פרמטר ביטחון (נניח t = 80 {\displaystyle t=80} ). הפרמטרים הציבוריים המשותפים לכל המשתמשים במערכת יהיו ( p , q , α , h ) {\displaystyle (p,q,\alpha ,h)} . אותם אפשר להכין על ידי צד שלישי נאמן. אותו צד שלישי יצטרך כנראה גם הוא לחתום בחתימה נפרדת על הערכים הללו כדי להבטיח את שלמותם. כל משתמש צריך להכין מפתח פרטי ומפתח ציבורי כאשר המפתח הפרטי משמש לחתימה והמפתח הציבורי לאימות. הוא מגריל שלם אקראי s {\displaystyle s} ומחשב את המפתח הציבורי v ≡ α − s  (mod  p ) {\displaystyle v\equiv \alpha ^{-s}{\text{ (mod }}p)} (כלומר s = − log α ⁡ v {\displaystyle s=-\log _{\alpha }v} ). את s {\displaystyle s} הוא שומר בסוד ואת v {\displaystyle v} הוא מפרסם בדרך כלשהי. הפרוטוקול הבא מתאר את תהליך החתימה של אליס על מסמך כלשהו m {\displaystyle m} ותהליך האימות של בוב. לצורך החתימה אליס מחשבת את הערכים הבאים: מגרילה שלם אקראי r {\displaystyle r} ומחשבת את x ≡ α r  (mod  p ) {\displaystyle x\equiv \alpha ^{r}{\text{ (mod }}p)} . מחשבת את e = h ( x , m ) {\displaystyle e=h(x,m)} (ערך הגיבוב באורך t {\displaystyle t} סיביות של המסר יחד עם המפתח הארעי). מחשבת את y = r + s e  (mod  q ) {\displaystyle y=r+se{\text{ (mod }}q)} . החתימה על המסר m {\displaystyle m} היא זוג הערכים ( e , y ) {\displaystyle (e,y)} . לצורך אימות החתימה בוב משתמש במפתח האימות הציבורי של אליס v {\displaystyle v} כדי לבדוק את הערכים ( e , y ) {\displaystyle (e,y)} שקיבל כך: מחשב את x ′ = α y v e  (mod  p ) {\displaystyle x'=\alpha ^{y}v^{e}{\text{ (mod }}p)} בודק שמתקיים e = h ( x ′ , m ) {\displaystyle e=h(x',m)} ורק אם השוויון מתקיים הוא מקבל את החתימה. אם החתימה נוצרה לפי הפרוטוקול אז זה נכון ש- x ≡ α r ≡ α r + s e v e ≡ α y v e  (mod  p ) {\displaystyle {\boldsymbol {x\equiv \alpha ^{r}\equiv \alpha ^{r+se}v^{e}\equiv \alpha ^{y}v^{e}{\text{ (mod }}p)}}} . לצורך החתימה צריך להעלות בחזקה אחת ולבצע כפל מודולרי אחד וחיבור אחד, חלק מהם ניתנים לחישוב מראש. לצורך האימות נדרשות שתי העלאות בחזקה מודולרית. את שתיהן אפשר לבצע בסיבוכיות של 1.5 ℓ + 0.25 t {\displaystyle 1.5\ell +0.25t} פעולות כפל מודולרי כאשר ℓ = ⌈ log 2 ⁡ q ⌉ {\displaystyle \ell =\lceil \log _{2}q\rceil } (האורך של q {\displaystyle q} בסיביות). הטריק הוא לחשב את ההעלאה בחזקה כדלהלן: תחילה מחשבים את α v {\displaystyle \alpha v} ואז מקבלים את x ′ {\displaystyle x'} על ידי הפעולות הבאות. מציבים i = ℓ , z = 1 {\displaystyle i=\ell ,z=1} כל עוד i ≥ 0 {\displaystyle i\geq 0} מבצעים i = i − 1 , z = z 2 α y i v e i  (mod  p ) {\displaystyle i=i-1,z=z^{2}\alpha ^{y_{i}}v^{e_{i}}{\text{ (mod }}p)} . כאשר y i {\displaystyle y_{i}} ו- v i {\displaystyle v_{i}} הן הסיבית ה- i {\displaystyle i} החל מימין לשמאל לפי y = ∑ i = 0 ℓ − 1 y i 2 i {\displaystyle \textstyle y=\sum _{i=0}^{\ell -1}y_{i}2^{i}} וכן e = ∑ i = 0 ℓ − 1 e i 2 i {\displaystyle \textstyle e=\sum _{i=0}^{\ell -1}e_{i}2^{i}} . הערך האקראי r {\displaystyle r} נקרא מפתח ארעי. כלומר זהו מספר חד-פעמי שהוגרל לטובת חתימה על מסר אחד. בגלל התכונות של הלוגריתם הבדיד, כמו בהצפנת אל-גמאל, אסור לחתום על יותר ממסמך אחד עם אותו r {\displaystyle r} כי אז אפשר לגלות את מפתח החתימה. כי אם נניח שבידי המתקיף שתי חתימות ( e , y {\displaystyle e,y} ) וכן ( e ′ , y ′ {\displaystyle e',y'} ) אז תמיד מתקיים: y ′ − y = ( r ′ − r ) − s ( e ′ − e ) {\displaystyle y'-y=(r'-r)-s(e'-e)} לכן אם r ′ = r {\displaystyle r'=r} אבל e ′ ≠ e {\displaystyle e'\neq e} המתקיף יכול לבודד את s {\displaystyle s} על ידי חילוק ב- ( e ′ − e ) {\displaystyle (e'-e)} . נניח שהפרמטרים של המערכת הם ( p = 467 , q = 233 , α = 153 {\displaystyle p=467,q=233,\alpha =153} ) מפתח החתימה הפרטי של אליס הוא s = 202 {\displaystyle s=202} מפתח האימות הציבורי הוא v = 153 − 202 ≡ 198  (mod  467 ) {\displaystyle v=153^{-202}\equiv 198{\text{ (mod }}467)} . כעת לצורך החתימה על המסר m {\displaystyle m} היא בוחרת את r = 94 {\displaystyle r=94} ומחשבת את x = 153 94 ≡ 38  (mod  467 ) {\displaystyle x=153^{94}\equiv 38{\text{ (mod }}467)} . נניח שערך הגיבוב על המסר עם המפתח הארעי הוא e = h ( m , 38 ) = 120 {\displaystyle e=h(m,38)=120} החתימה על המסר היא אם כן הזוג ( 120 , 102 {\displaystyle 120,102} ) כי מתקיים: 38 ≡ 153 94 ≡ 153 94 + 202 ⋅ 120 ⋅ 198 120 ≡ 153 102 ⋅ 198 120  (mod  467 ) {\displaystyle 38\equiv 153^{94}\equiv 153^{94+202\cdot 120}\cdot 198^{120}\equiv 153^{102}\cdot 198^{120}{\text{ (mod }}467)} אם אליס תשתמש באותו r = 94 {\displaystyle r=94} כדי לחתום על מסר אחר, נניח שהחתימה השנייה שהתקבלה היא ( 50 , 175 {\displaystyle 50,175} ) תוצאה זו התקבלה אם כל הערכים למעט המסר זהים. אז מתוך שתי החתימות אפשר לחשב את: ( y ′ − y ) = ( 175 − 102 ) = 73  (mod  233 ) {\displaystyle (y'-y)=(175-102)=73{\text{ (mod }}233)} , ואת ( e ′ − e ) = ( 50 − 120 ) ≡ 163  (mod  233 ) {\displaystyle (e'-e)=(50-120)\equiv 163{\text{ (mod }}233)} להכפיל בהופכי הכפלי של 163 (מודולו 233) שהוא 223 ומתקבל ( 73 ⋅ 223 )  mod  233 = 202 {\displaystyle (73\cdot 223){\text{ mod }}233=202} וזהו מפתח החתימה. ערך מורחב – חתימה עיוורת אפשר להפוך את חתימת שנור לחתימה דיגיטלית עיוורת, כך שהחותם אינו יודע מהו התוכן של המסר שעליו חתם ולמרות זאת יהיה ניתן לאשר את חתימתו עליו בדיוק כמו בחתימה דיגיטלית רגילה. מאפיין זה חשוב בשמירה על אנונימיות במקרים כמו הצבעה דיגיטלית או מסחר במטבע דיגיטלי. חתימת שנור היא שילוב של פרוטוקול אימות של שנור יחד עם רעיון רב ההשפעה של עמוס פיאט ועדי שמיר. פונקציית הגיבוב לצורך חתימת שנור לא חייבת להיות חסינת התנגשויות, מחקרים מראים שבניגוד ל-DSA אפשר להסתפק בחתימת שנור בפונקציית גיבוב חלשה כמו SHA-1 וכן אפשר להסתפק בערך גיבוב קצר יותר בכעשרים וחמש אחוז. הביטחון של חתימת שנור ניתן להוכחה במסגרת מודל אורקל אקראי תחת ההשערה שבעיית הלוגריתם הבדיד קשה. ב-2012 בוצע מחקר באשר לביטחון המדויק של חתימת שנור והטענה היא שלפי למת הפיצול (Forking Lemma) קיים איבוד זמן בפקטור של O ( q h ) {\displaystyle O(q_{h})} כאשר q h {\displaystyle q_{h}} הוא מספר השאילתות לאורקל האקראי. במילים אחרות אם קיים זייפן שיכול לזייף חתימת שנור בהסתברות ϵ F {\displaystyle \epsilon _{F}} אז אפשר יהיה לחשב את הלוגריתם הבדיד בהסתברות קבועה על ידי חזרה לאחור O ( q h / ϵ F ) {\displaystyle O(q_{h}/\epsilon _{F})} פעמים, תחת הנחות נוספות אפשר להגיע לרדוקציה של q h 2 / 3 {\displaystyle q_{h}^{2/3}} לכל היותר בשיעור ההצלחה/זמן. חתימה דיגיטלית צופן אל-גמאל C. P. Schnorr, “Efficient Identification and Signatures for Smart Cards,” In: G. Brassard, Ed., Advances in Cryptology—Crypto’89, Lecture Notes in Computer Science No 435, Springer-Verlag, 1990. pp. 239-252. Fiat; Shamir (1986). "How To Prove Yourself: Practical Solutions to Identification and Signature Problems" (PDF). Proceedings of CRYPTO '86. Hash function requirements for Schnorr signatures 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.