שיטת פוליג הלמן
בתורת החבורות ובקריפטוגרפיה **אלגוריתם פוליג-הלמן** (באנגלית: Pohlig–Hellman algorithm) הוא אלגוריתם לפתרון בעיית הלוגריתם הבדיד במקרה הפרטי כאשר סדר החבורה הוא מספר חלק (שגורמיו הראשוניים קטנים). האלגוריתם הומצא ב-1978 על ידי סטיבן פוליג ומרטין הלמן.

בעיית הלוגריתם הבדיד
--------------------

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

בעיית הלוגריתם הבדיד הכללית היא: בהינתן חבורה ציקלית {\displaystyle \mathbb {G} } מסדר q ויוצר g ויהי {\displaystyle h\in \mathbb {G} } איבר כלשהו. מצא x המקיים {\displaystyle h=g^{x}}. הוא נקרא הלוגריתם הבדיד של h בבסיס g בקיצור {\displaystyle \log \_{g}h}. אם q ראשוני, אלגוריתם צעד-קטן צעד-גדול פותר את הבעיה בסיבוכיות זמן של {\displaystyle {\sqrt {q}}} צעדים ובסיבוכיות מקום זהה. אלגוריתם רו של פולרד פותר את הבעיה בזמן דומה אך ללא צריכת זיכרון משמעותית.

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

רקע מתמטי
---------

אלגוריתם פוליג הלמן מנסה להאיץ את חישוב הלוגריתם הבדיד במקרה שסדר החבורה q אינו ראשוני וידועים גורמים לא טריוויאליים שלו. ידוע שהסדר של האיבר g הוא השלם i הקטן ביותר המקיים {\displaystyle g^{i}=1}. יהי q הסדר של g ונניח שקיים שלם p שהוא מחלק שלו ({\displaystyle p|q}) אז הסדר של {\displaystyle g^{p}} הוא {\displaystyle q/p}. הכללה של משפט השאריות הסיני אומרת שאם ידוע הפירוק: {\displaystyle \textstyle q=\Pi \_{i=1}^{k}q\_{i}} כאשר כל q\_{i} זר יחסית לגורמים האחרים (כלומר {\displaystyle {\text{gcd}}(q\_{i},q\_{j})=1} עבור כל {\displaystyle i\neq j}) כאשר gcd היא מחלק משותף מקסימלי, אז קיימת התאמה או איזומורפיזם בין החבורות {\displaystyle \mathbb {Z} \_{q\_{i}}} למכפלה הקרטזית שלהם {\displaystyle \mathbb {Z} \_{q\_{1}}\times \mathbb {Z} \_{q\_{2}}\times \cdots \times \mathbb {Z} \_{q\_{k}}} וקיימת דרך יעילה לעבור בין הייצוגים השונים. 

בהינתן היוצר g ואיבר כלשהו נניח h ואנחנו מעוניינים למצוא את x כך שמתקיים {\displaystyle g^{x}=h}, נניח שהסדר של g הוא q וידועים לנו הגורמים שלו: {\displaystyle \textstyle q=\Pi \_{i=1}^{k}q\_{i}} (הגורמים לא חייבים להיות ראשונים כל עוד הם זרים זה לזה), אז ידוע שמתקיים:

{\displaystyle (g^{q/q\_{i}})^{x}=(g^{x})^{q/q\_{i}}=h^{q/q\_{i}}} עבור כל i=1,...k.
אם {\displaystyle g\_{i}=g^{q/q\_{i}}} עבור כל i אז מתקבלות k בעיות של לוגריתם בדידי ב-k חבורות, כל אחת מסדר q\_{i} שהסדר שלהן קטן משמעותית מ-q. אם נפתור את k המופעים הללו בעזרת כל אלגוריתם כוח גס לפתרון בעיית לוגריתם בדיד, נוכל לפתור את הבעיה בחבורה הגדולה (נובע ממשפט השאריות הסיני). כלומר הלוגריתמים הבדידיים x\_{i} מ-1 עד k מקיימים: {\displaystyle g\_{i}^{x\_{i}}=h^{q/q\_{i}}=g\_{i}^{x}}. היות ש-x שקול ל-x\_{i} מודולו q\_{i} עבור כל i לפי משפט השאריות הסיני למערכת המשוואות הבאה:

|  |
| --- |
| {\displaystyle x\equiv x\_{1}{\text{ mod }}q\_{1}}
{\displaystyle \ \ \ \ \ \ \ \ \ \ \ \ \vdots }
{\displaystyle x\equiv x\_{k}{\text{ mod }}q\_{k}} |

יש פתרון יחיד x מודולו q. כך שאפשר לחשב אותו מתוך {\displaystyle x\_{1},...x\_{k}} עם אלגוריתם כמו אלגוריתם גאוס או אלגוריתם של גרנר (מתואר בהמשך).

תיאור האלגוריתם
---------------

תיאור אלגוריתם פוליג-הלמן מתוך הספר "מבוא למתמטיקה של ההצפנה". תהי {\displaystyle \mathbb {G} } חבורה ונניח שיש לנו אלגוריתם לפתרון בעיית הלוגריתם הבדיד ב-{\displaystyle \mathbb {G} } עבור כל איבר מסדר שהוא חזקה ראשונית (מתואר בהמשך). למשל אם {\displaystyle g\in \mathbb {G} } הוא מסדר {\displaystyle q^{e}} ונניח שיש לנו אלגוריתם שפותר את הבעיה {\displaystyle g^{x}=h} בסיבוכיות של {\displaystyle q^{e/2}}. אם הסדר של {\displaystyle g\in \mathbb {G} } הוא N שניתן לפירוק מהצורה {\displaystyle N=q\_{1}^{e\_{1}}\cdot q\_{2}^{e\_{2}}\cdots q\_{k}^{e\_{k}}} אז אפשר לפתור את בעיית הלוגריתם הבדיד {\displaystyle g^{x}=h} בסיבוכיות של 

{\displaystyle O(\sum \_{i=1}^{k}q\_{i}^{e\_{i}/2}+\log N)} צעדים.
השיטה היא כדלהלן:

1. עבור {\displaystyle i=1} עד k בצעו:
	1. {\displaystyle g\_{i}=g^{N/q\_{i}^{e\_{i}}}} וכן {\displaystyle h\_{i}=h^{N/q\_{i}^{e\_{i}}}}
	2. היות שכל {\displaystyle g\_{i}} הוא מסדר חזקה ראשונית, אפשר להשתמש באלגוריתם לפתרון בעיית הלוגריתם הבדיד עם סדר מחזקה ראשונית שמתואר להלן, כתת-שגרה שלו, כדי לפתור את הבעיה {\displaystyle g\_{i}^{y}=h\_{i}}.
	3. יהי {\displaystyle y=y\_{i}} הפתרון למשוואה זו.
2. פותרים את מערכת המשוואות המודולרית בעזרת משפט השאריות הסיני:

|  |  |
| --- | --- |
| 

|  |
| --- |
| {\displaystyle \ \ \ \ \ \ \ \ \ \ \ \ x\equiv y\_{1}{\text{ (mod }}q\_{1}^{e\_{1}})},
{\displaystyle \ \ \ \ \ \ \ \ \ \ \ \ x\equiv y\_{2}{\text{ (mod }}q\_{2}^{e\_{2}})},
{\displaystyle \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \vdots }
{\displaystyle \ \ \ \ \ \ \ \ \ \ \ \ x\equiv y\_{k}{\text{ (mod }}q\_{k}^{e\_{k}})}. |

 |

אלגוריתם פוליג-הלמן בעצם מצמצם את בעיית הלוגריתם הבדיד של איבר מסדר כלשהו לבעיית הלוגריתם הבדיד של איבר מסדר שהוא חזקה של ראשוני. לכן בעיית הלוגריתם הבדיד בחבורה {\displaystyle \mathbb {G} } קלה לפתרון אם הסדר של החבורה הוא כפולה של ראשוניים קטנים. למשל במקרה של השדה {\displaystyle \mathbb {F} \_{p}} אם p-1 מתפרק לגורמים קטנים אז לא מומלץ להשתמש בשדה הזה אם רוצים חבורה שבה הבעיה נחשבת קשה. מה שאפשר לעשות זה למצוא שדה כזה כך שהראשוני p שווה {\displaystyle 2q+1} כאשר q ראשוני וכן לבחור יוצר מסדר q ואז עובדים בתת-חבורה מסדר q של {\displaystyle \mathbb {F} \_{p}} וסיבוכיות פתרון בעיית הלוגריתם הבדיד בתת-חבורה זו יהיה מסדר {\displaystyle O({\sqrt {q}})}. בגלל שאלגוריתם תחשיב אינדקסים הוא תת-מעריכי q צריך להיות גדול.

יתרה מזו אפשר לצמצם את בעיית הלוגריתם הבדיד של איבר מסדר חזקה ראשונית לסדר ראשוני בסיבוכיות {\displaystyle O(e{\sqrt {q}})} (להיפטר מהחזקה). בגלל הטריק הבא: אם g הוא מסדר {\displaystyle q^{e}} אז {\displaystyle g^{q^{e-1}}} הוא מסדר q. אם חוזרים על פעולה זו מספר פעמים אפשר להגיע לפתרון הלוגריתם הבדיד. הרעיון הוא לכתוב את המעריך x בצורה:

{\displaystyle x=x\_{0}+x\_{1}q+x\_{2}q^{2}+\cdots x\_{e-1}q^{e-1}} כאשר {\displaystyle 0\leq x\_{i}<q}.
ואז לחשב רקורסיבית את {\displaystyle x\_{0},x\_{1},x\_{2},...}. היות ש-{\displaystyle g^{q^{e-1}}} הוא מסדר q מזה נובע ש:

|  |
| --- |
| {\displaystyle h^{q^{e-1}}=\left(g^{x}\right)^{q^{e-1}}}
{\displaystyle \ \ \ \ \ \ \ \ =\left(g^{{x\_{0}}+x\_{1}q+x\_{2}q^{2}+\cdots +x\_{e-1}q^{e-1}}\right)^{q^{e-1}}}
{\displaystyle \ \ \ \ \ \ \ \ =g^{x\_{0}q^{e-1}}\cdot \left(g^{q^{e}}\right)^{x\_{1}+x\_{2}q+\cdots +x\_{e-1}q^{e-2}}}
{\displaystyle \ \ \ \ \ \ \ \ =\left(g^{q^{e-1}}\right)^{x\_{0}}} |

הראשון נובע מהעלאת שני האגפים של {\displaystyle g^{x}=h} בחזקת {\displaystyle q^{e-1}}. השני נובע מההצגה המורחבת של x השלישי נובע מהעובדה ש-{\displaystyle g^{q^{e}}=1}. לכן המשוואה: 

{\displaystyle \left(g^{q^{e-1}}\right)^{x\_{0}}=h^{q^{e-1}}}
הוא לוגריתם בדיד שהבסיס שלו הוא איבר מסדר q. ההנחה היא שאפשר לפתור בעיה זו ב-{\displaystyle {\sqrt {q}}} צעדים. אם פתרנו את המשווה הזו נוכל למצוא את x\_0 עם המאפיין:

{\displaystyle g^{x\_{0}q^{e-1}}=h^{q^{e-1}}} בחבורה {\displaystyle \mathbb {G} }.
בשלב הבא מבצעים חישוב דומה והפעם מעלים את שני האגפים של {\displaystyle g^{x}=h} בחזקת {\displaystyle q^{e-2}} ומקבלים את:

|  |
| --- |
| {\displaystyle h^{q^{e-2}}=\left(g^{x}\right)^{q^{e-2}}}
{\displaystyle =\left(g^{{x\_{0}}+x\_{1}q+x\_{2}q^{2}+\cdots +x\_{e-1}q^{e-1}}\right)^{q^{e-2}}}
{\displaystyle =g^{x\_{0}q^{e-2}}\cdot g^{x\_{1}q^{e-1}}\cdot (g^{q^{e}})^{x\_{2}+x\_{3}q+\cdots +x\_{e-1}q^{e-3}}}
{\displaystyle =g^{x\_{0}q^{e-2}}\cdot g^{x\_{1}q^{e-1}}}. |

היות שאנחנו כבר יודעים את ערכו של x\_0, כדי למצוא את x\_1 אנחנו צריכים לחשב את הלוגריתם הבדיד

{\displaystyle \left(g^{q^{e-1}}\right)^{x\_{1}}=\left(h\cdot g^{-x\_{0}}\right)^{q^{e-2}}}.
עבור הנעלם x\_1. שוב אפשר עם האלגוריתם לפתרון לוגריתם בדיד מסדר ראשוני ב-{\displaystyle {\sqrt {q}}} צעדים למצוא את x\_1 ואז קיבלנו את x\_0 ו-x\_1 המקיימים:

{\displaystyle g^{(x\_{0}+x\_{1}q)q^{e-2}}=h^{q^{e-2}}} ב-{\displaystyle \mathbb {G} }.
באותה דרך אפשר למצוא את x\_2, באופן כללי אחרי שאנחנו יודעים מהם הערכים של {\displaystyle x\_{0},...x\_{i-1}} אז אפשר לחשב את x\_{i} על ידי פתרון:

{\displaystyle (g^{q^{e-1}})^{x\_{i}}=(h\cdot g^{-x\_{0}-x\_{1}q-\cdots -x\_{i-1}q^{i-1}})^{q^{e-i-1}}} בחבורה {\displaystyle \mathbb {G} }. כל לוגריתם כזה ניתן לפתרון בזמן שורש q צעדים. לכן אחרי {\displaystyle e{\sqrt {q}}} צעדים אפשר לקבל את המעריך {\displaystyle x=x\_{0}+x\_{1}q+\cdots +x\_{e-1}q^{e-1}} המקיים {\displaystyle g^{x}=h}.
### דוגמאות להמחשה

נתונים הערכים: 

{\displaystyle p=11251,g=23,h=9689}.
{\displaystyle N=(p-1)=q\_{1}^{e\_{1}}q\_{2}^{e\_{2}}q\_{3}^{e\_{3}}=2\cdot 3^{2}\cdot 5^{4}}
והבעיה היא לפתור את המשוואה {\displaystyle g^{x}=9689} בשדה {\displaystyle \mathbb {F} \_{11251}^{\*}} שהוא מסדר 11250. במקרה זה פותרים את הלוגריתם הבדיד של תת-בעיות מסדר נמוך לפי הגורמים הראשוניים של N. שני הגורמים הראשונים קטנים לכן הפתרון שלהם טריוויאלי. להלן דוגמה לפתרון בעיית הלוגריתם הבדיד בסדר של הגורם השלישי. אנחנו מנסים לפתור את המשוואה {\displaystyle 5448^{x}=6909} בשדה {\displaystyle \mathbb {F} \_{11251}^{\*}}. היות שהראשוני {\displaystyle p=11251} נבחר בצורה כזו ש-p-1 מתחלק ב-{\displaystyle 5^{4}} ולכן {\displaystyle 5448} הוא מסדר {\displaystyle 5^{4}} בשדה {\displaystyle \mathbb {F} \_{11251}^{\*}}. פותרים אותו בהדרגה כדי לקבל את x כדלהלן:

1. הצעד הראשון הוא לפתור את המשוואה {\displaystyle (5448^{5^{3}})^{x\_{0}}=6909^{5^{3}}}, שמצטמצמת למשוואה {\displaystyle 11089^{x\_{0}}=11089} זה קל כי {\displaystyle x\_{0}=1} הוא הפתרון היחיד ובשלב זה ערכו של x הוא {\displaystyle x=x\_{0}=1}.

2. בצעד השני מנסים לפתור את: 

{\displaystyle \left(5448^{5^{3}}\right)^{x\_{1}}=\left(6909\cdot 5448^{-x\_{0}}\right)^{5^{2}}=\left(6909\cdot 5448^{-1}\right)^{5^{2}}},
שמצטמצמת למשוואה {\displaystyle 11089^{x\_{1}}=3742}.
כל מה שצריך לבדוק עבור x\_1 זה ערכים בטווח 1 עד 4. כך שאפשר לפתור את זה בכוח גס די בקלות. במקרה זה הפתרון הוא {\displaystyle x\_{1}=2}, לכן בשלב זה ערכו של x הוא {\displaystyle x=11=1+2\cdot 5}.

3. ממשיכים לצעד הבא ומנסים לפתור את: 

{\displaystyle \left(5448^{5^{3}}\right)^{x\_{2}}=\left(6909\cdot 5448^{-x\_{0}-x\_{1}\cdot 5}\right)^{5}=\left(6909\cdot 5448^{-11}\right)^{5}},
שמצטמצמת למשוואה {\displaystyle 11089^{x\_{2}}=1} לכן {\displaystyle x\_{2}=0} והמשמעות במקרה זה היא שערכו של x נשאר 11 בשלב זה.

4. הצעד הבא והאחרון הוא לפתור את:

{\displaystyle \left(5448^{5^{3}}\right)^{x\_{3}}=6909\cdot 5448^{-x\_{0}-x\_{1}\cdot 5-x\_{2}\cdot 5^{2}}=6909\cdot 5448^{-11}}.
5. התוצאה האחרונה היא {\displaystyle 11089^{x\_{3}}=6320}, שהפתרון שלה הוא {\displaystyle x\_{3}=4} לכן התשובה הסופית היא:

{\displaystyle x=511=1+2\cdot 5+4\cdot 5^{3}}.
אפשר לראות שמתקיים {\displaystyle 5448^{511}=6909} בשדה {\displaystyle \mathbb {F} \_{11251}^{\*}}.
להלן דוגמה לאלגוריתם פוליג הלמן המשתמש במשפט השאריות הסיני כדי לחבר ביחד את כל הפתרונות לפתרון השלם. בטבלה הבאה מוצגים פתרונות שלוש תת-הבעיות:

| q | e | {\displaystyle g^{N/q^{e}}} | {\displaystyle h^{N/q^{e}}} | {\displaystyle (g^{N/q^{e}})^{x}=h^{N/q^{e}}} |
| --- | --- | --- | --- | --- |
| 2 | 1 | 11250 | 11250 | 1 |
| 3 | 2 | 5029 | 10724 | 4 |
| 5 | 4 | 5448 | 6909 | 511 |

  

הבעיה המופיעה בשורה השלישית היא הבעיה מהדוגמה הקודמת.

בשלב זה מנצלים את משפט השאריות הסיני כדי לפתור את מערכת המשוואות המודולרית:

|  |
| --- |
| {\displaystyle x\equiv 1{\text{ (mod }}2)}
{\displaystyle x\equiv 4{\text{ (mod }}3^{2})}
{\displaystyle x\equiv 511{\text{ (mod }}5^{4})} |

והפתרון הוא {\displaystyle 23^{4261}=9689} מודולו {\displaystyle 11251}.

### אלגוריתם גרנר לפתרון CRT

אלגוריתם גרנר לפתרון מערכת משוואות מודלרית לפי משפט השאריות הסיני. 

**קלט:** שלם חיובי m שהוא כפולה של t שלמים חיוביים זרים זה לזה {\displaystyle m\_{1}\cdot m\_{2}\cdots m\_{t}} וייצוג מודולרי {\displaystyle v(x)=(v\_{1},v\_{2},...v\_{t})} (השאריות) של x מודולו {\displaystyle m\_{i}} בהתאמה.

**פלט:** שלם x המקיים את משוואת CRT.

1. עבור {\displaystyle i=2} עד t מצבעים:
	1. {\displaystyle C\_{i}=1}
	2. עבור {\displaystyle j=1} עד {\displaystyle (i-1)} מבצעים:
		1. {\displaystyle u=m\_{j}^{-1}{\text{ mod }}m\_{i}}
		2. {\displaystyle C\_{i}=u\cdot C\_{i}{\text{ mod }}m\_{i}}
2. {\displaystyle u=v\_{1},x=u}
3. עבור {\displaystyle i=2} עד t מחשבים את: {\displaystyle u=(v\_{i}-x)C\_{i}{\text{ mod }}m\_{i},x=x+u\Pi \_{j=1}^{i-1}m\_{j}}.
4. מחזירים את x.

הערות שוליים
------------

1. ↑  S. Pohlig and M. Hellman, "An improved algorithm for computing logarithms over GF(p) and its cryptographic significance (Corresp.)," Information Theory, IEEE Transactions on 24, no. 1 (1978): 106-110.
2. ↑  An Introduction to Mathematical Cryptography Hoffstein, Jeffrey, Pipher, Jill, Silverman, J.H. Springer 2014, Chapter 2: The Pohlig-Hellman algorithm, Page 86
3. ↑  Handbook of Applied Cryptography Number-Theoretic Reference Problems, Paul van Oorschot, Alfred J. Menezes, Scott A. Vanstone, CRC Press 1997

| * צ
* ש
* ע
קריפטוגרפיה |
| --- |
| 

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

 |

 |
| 

| הצפנה קלאסית |
| --- |
| 
* מכונת הצפנה
* צופן החלפה
* צופן אתב"ש
* צופן קיסר
* צופן ויז'נר
* צופן ורנם
* צופן פלייפייר
* צופן היל
* אולטרה
* אניגמה
* ציקלומטר
* קולוסוס
* PURPLE
* ג'ייד
* מג'יק
* צופן שחלוף

 |

 |
| 

| צופן בלוקים |
| --- |
| 
* לוציפר
* AES
* 3DES
* DES
* Threefish
* Twofish
* Blowfish
* FEAL
* SEED
* CAST
* IDEA
* RC2
* RC6
* MARS
* RC5
* GOST
* Serpent
* MISTY
* KASUMI
* קמליה
* ARIA
* SAFER
* TEA
* LEA
* CLEFIA
* SEA
* Hummingbird
* PRESENT
* KATAN
* KeeLoq
* Simon & Speck
* אנוביס

 |

 |
| 

| אופני הפעלה |
| --- |
| 
* אופן הפעלה של צופן בלוקים
* EAX
* OCB
* IAPM
* CWC mode
* GCM
* CCM

 |

 |
| 

| צופן זרם |
| --- |
| 
* RC4
* Salsa20
* SOSEMANUK
* Grain
* E0
* A5/1
* A5/2
* A5/3
* A5/4
* MICKEY
* HC-128
* SNOW
* Trivium
* Rabbit
* ZUC
* ChaCha

 |

 |
| 

| הצפנה אסימטרית |
| --- |
| 
* פרוטוקול דיפי-הלמן
* חידות מרקל
* חתימת למפורט
* הצפנת תרמיל
* RSA
* הצפנת רבין
* חתימה דיגיטלית רבין
* צופן אל-גמאל
* חתימה דיגיטלית אל-גמאל
* DSA
* הצפנת בלום-גולדווסר
* ECC
* הצפנת קריימר-שופ
* הצפנת פאיי
* הצפנת מקאליס
* GGH
* NTRU
* עקום 25519
* חתימה דיגיטלית של שנור
* הצפנת אוקמוטו-אושיאמה

 |

 |
| 

| פרוטוקולים |
| --- |
| 
* עץ מרקל
* פרוטוקול אתגר-מענה
* פרוטוקול נידהאם-שרודר
* פרוטוקול קרברוס
* הוכחה באפס ידע
* פרוטוקול פייגה-פיאט-שמיר
* העברה עלומה
* חלוקת סוד
* TLS (SSL)
* Secure Shell
* MQV
* X.509
* פרוטוקול שיתוף מפתח
* מיסור שלא לפרסום
* פרוטוקול סיגנל

 |

 |
| 

| פרימיטיבים תאורטיים |
| --- |
| 
* מחולל פסבדו-אקראי קריפטוגרפי
* פונקציה חד-כיוונית
* תמורה חד-כיוונית
* סיבית קשה
* פונקציה פסבדו-אקראית קריפטוגרפית
* תמורה פסאודו-אקראית
* פונקציית גיבוב קריפטוגרפית
* וקטור אתחול
* פונקציית ספוג
* הצפנה מבוססת סריג

 |

 |
| 

| קריפטואנליזה |
| --- |
| 
* ניתוח תדירויות
* כוח גס
* התקפת איזון זמן/זיכרון
* תקיפת היפגשות באמצע
* קריפטואנליזה ליניארית
* קריפטואנליזה דיפרנציאלית
* התקפת גלוי-ידוע
* התקפת גלוי-נבחר
* התקפת מוצפן-נבחר
* פירוק לגורמים של מספר שלם
* התקפת ערוץ צדדי
* התקפת קורלציה
* התקפת שיבוש
* מודל אורקל אקראי
* התקפת התנגשויות

 |

 |
| 

| בעיות מתמטיות ואלגוריתמים |
| --- |
| 
* בעיית לוגריתם דיסקרטי
* תחשיב אינדקסים
* נפה ריבועית
* אלגוריתם rho של פולרד
* נפת שדה מספרים
* אלגוריתם רו של פולרד ללוגריתמים
* אלגוריתם פוליג-הלמן

 |

 |
| 

| פונקציות גיבוב קריפטוגרפיות |
| --- |
| 
* SHA
* MD5
* MD4
* SHA-1
* SHA-2
* SHA-3
* RIPEMD
* Skein
* BLAKE
* Grøstl
* SipHash

 |

 |
| 

| אימות וזיהוי |
| --- |
| 
* אימות זהות
* סיסמה
* קוד אימות מסרים
* Poly1305
* סיסמה חד-פעמית

 |

 |
| 

| נושאים נלווים |
| --- |
| 
* מספר אקראי
* מספר ראשוני
* יתירות
* מפתח שיחה
* סטגנוגרפיה
* הצפנה קוונטית
* הצפנה פוסט-קוונטית
* עקרון קרקהופס
* אבטחת מידע
* קריפטוגרפיה ויזואלית
* אליס ובוב
* מסיבת חתימה על מפתחות ציבוריים
* שידור מוצפן
* הצפנת דיסקים
* הצפנת סף
* חתימה דיגיטלית מבוססת פונקציית גיבוב
* פונקציה זניחה
* רשת פייסטל
* רשת החלפה-תמורה
* הלבנה
* אימות מסרים
* חתימה עיוורת
* חישוב רב משתתפים בטוח

 |

 |