בקריפטוגרפיה, **Carter-Wegman Counter** הוא מצב הפעלה של צופן בלוקים, המספק הצפנה מאומתת, פועל לפי פרדיגמה "הצפנה ולאחריה אימות" ושייך לקטגוריה AEAD (הצפנה מאומתת עם מידע נלווה). בניגוד לצופן בלוקים כשלעצמו המספק רק סודיות של בלוק בגודל קבוע, CWC מספק סודיות והגנה על שלמות ואימות המסרים המוצפנים בכל אורך רצוי, על ידי הצפנה עם צופן בלוקים סימטרי בעדיפות לאלגוריתם חופשי כמו AES במצב מונה ולאחר מכן ייצור תג אימות באמצעות בפונקציית גיבוב 'אוניברסלית' מקבילית בסגנון **קרטר-ווגמן** לאימות המידע המוצפן ולאימות טקסט נוסף המשויך אליו אם קיים, שצריך להבטיח את שלמותו אך עליו להישאר גלוי כמו קובץ כותר המכיל הגדרות או כתובות.

CWC פותח ב-2004 על ידי טאדיושי קונו מאוניברסיטת קליפורניה, ג'ון ויאגה מ-Virginia Tech ודאג ווייטינג מ-Hifn כיום חלק מ-exar. אלגוריתם CWC נכלל ברשימת האלגוריתמים המובילים שמנהל NIST לצורך תקן הצפנה מאומתת ולו חמש תכונות חשובות שמציבות אותו כמועמד מועדף לתקן; ביטחון מוכח, מקביליות, ביצועים גבוהים בחומרה ובתוכנה והעדר זכויות יוצרים. במימוש אופטימלי בחומרה אמור להגיע לתפוקה של 10Gbps. הוא מהיר יותר ממצבי ההפעלה CCM ו-EAX אך פחות מהיר בהשוואה לOCB שמוגן בפטנט. מועמדותו של OCB לתקן IEEE 802.11 נדחתה בגלל נושא זכויות יוצרים.

תיאור כללי
----------

אם המסר המיועד להצפנה הוא M המכיל מחרוזת סיביות באורך כלשהו והמידע הנלווה הוא A המכיל מחרוזת באורך כלשהו של נתונים לא סודיים. האלגוריתם מצפין את M באמצעות מפתח הצפנה אקראי K ומפיק טקסט מוצפן \sigma  ולאחר מכן מאמת את \sigma  ואת A באמצעות מפתח האימות שנגזר ממפתח ההצפנה, על ידי ייצור **תג אימות** \tau באורך הרצוי שנשלח יחד עם הטקסט המוצפן לצד המקבל ושמאפשר לו להבטיח שהמסר המוצפן לא שונה או הוחלף במהלך ההעברה. תג האימות מבטיח מעצם ההגדרה שתוקף פוטנציאלי לא יוכל לזייפו. כלומר ליצור תג אימות תקף עבור מסר מוצפן כלשהו שלא הגיע מהשולח האותנטי ללא ידיעת מפתח ההצפנה הסודי שהשולח והמקבל משתפים ביניהם. ההעדפה היא שגודל בלוק של צופן הבלוקים יהיה 128 סיביות ומספר הקריאות לצופן הבלוקים הוא {\displaystyle \left\lceil |M|/128\right\rceil +2}. פונקציית הגיבוב המשמשת לאימות מבוססת על חישוב פולינומים מודולו הראשוני {\displaystyle 2^{127}-1}. המעלה של פולינום האימות היא {\displaystyle d=\left\lceil |A|/96\right\rceil +\left\lceil |M|/96\right\rceil }. החישובים ניתנים להאצה באמצעות טבלאות. למשל אם מספר פעולות הכפל בחישוב פולינום אחד הוא d כשכל אחד מהם צורך {\displaystyle 127\times 127} פעולות בסיביות, הרי בשימוש בטבלת חזקות בגודל n אפשר לקצר את מספר הפעולות ל-{\displaystyle d-m} פעולות כפל בגודל {\displaystyle 96\times 127} ועוד m פעולות של כפל מלא, כאשר {\displaystyle m=\left\lceil (d+1)/n\right\rceil -1}.

### סימנים מוסכמים

בתיאור האלגוריתם יופיעו הסימנים הבאים: אם N ו-l שלמים חיוביים כך שמתקיים {\displaystyle N<2^{l}} אזי הפונקציה {\displaystyle {\text{tostr}}(N,l)} פירושה הקידוד של N כמחרוזת של l סיביות לפי סדר בתים גדול (big-endian). בסדר בתים גדול הסיבית המשמעותית ביותר לא נחשבת כסיבית הסימן. לדוגמה המספר 30 בבסיס בינארי הוא המחרוזת "11110". אם x ו-y הן מחרוזות סיביות אזי {\displaystyle |x|} הוא אורך המחרוזת והביטוי {\displaystyle x\oplus y} הוא XOR של x עם y. הפונקציה {\displaystyle {\text{toint}}(x)} מייצגת את השלם המקביל למחרוזת x לפי סדר בתים גדול. לדוגמה {\displaystyle {\text{toint}}({\text{''10000010''}})=2^{7}+2=130}. אם נתונה הסיבית b הביטוי {\displaystyle b^{n}} מתייחס לסיבית b כשהיא משוכפלת n פעמים למשל {\displaystyle 0^{7}=0000000}. הביטוי {\displaystyle y{\stackrel {\$}{\longleftarrow }}f(x)} פירושו הפלט y של הפונקציה f עם הקלט x ומחרוזת פסאודו-אקראית כלשהי שנבחרה באופן אחיד מתוך מרחב המחרוזות האפשריות, כך ש-f היא PRF.

אלגוריתם ההצפנה הסימטרי המסומן בקיצור {\displaystyle {\mathcal {SE}}} שבשימוש CWC, מיוצג על ידי אוסף של שלושה אלגוריתמים {\displaystyle {\mathcal {SE}}=({\mathcal {K}}\_{e},{\mathcal {E}},{\mathcal {D}})} מעל מרחב מפתח כלשהו {\displaystyle {\text{KeySp}}\_{se}}, מרחב Nonce (וקטור אתחול) המסומן {\displaystyle {\text{NonceSp}}\_{se}\subseteq \{0,1\}^{n}}, מרחב המידע {\displaystyle {\text{MsgSp}}\_{se}\subseteq \{0,1\}^{\*}} ומרחב המידע הנלווה {\displaystyle {\text{AdSp}}\_{se}\subseteq \{0,1\}^{\*}} באורך שרירותי כלשהו. הסימון **CWC-BC-tl** מתייחס למצב ההפעלה CWC עם צופן בלוקים ספציפי המכונה כאן בקיצור BC ועם אורך תג רצוי {\displaystyle tl} למשל במקרה של AES עם תג באורך 96 סיביות אפשר להחליפו בסימון **CWC-AES-96**. המפתח K מופק על ידי {\displaystyle K{\stackrel {\$}{\longleftarrow }}{\mathcal {K}}\_{e}} יהיה באורך שנקבע לפי האלגוריתם ולפי העדפה (לפחות 128 סיביות). ה-Nonce צריך להיות באורך {\displaystyle n=88} סיביות. המסר M והמידע הנלווה A, מחרוזות בינאריות באורך שאינו עולה על {\displaystyle 2^{32}-1} בלוקים של 128 סיביות. הביטוי {\displaystyle \sigma =BC\_{K}(M)} מתייחס להפעלה של צופן הבלוקים עם המפתח K על המסר M והפלט הוא \sigma .

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

CWC מורכב משישה מודולים המתוארים בפסאודו קוד הבא:

#### אלגוריתם הכנת מפתח

{\displaystyle {\mathcal {K}}}
{\displaystyle K{\stackrel {\$}{\longleftarrow }}\{0,1\}^{kl}}
{\displaystyle {\text{Return }}K}

האלגוריתם בוחר מפתח אקראי כלשהו מתוך מרחב המפתחות, המשמש להצפנה ולהכנת מפתח האימות.

#### אלגוריתם ההצפנה

{\displaystyle \mathbf {CWC} {\text{-}}\mathbf {ENC} \_{K}(N,A,M)}
1. {\displaystyle \sigma ={\text{CWC-CTR}}\_{K}(N,M)}
2. {\displaystyle \tau ={\text{CWC-MAC}}\_{K}(N,A,\sigma )}
3. {\displaystyle {\text{Return }}\sigma \ \|\ \tau }

הפונקציה מנצלת את הפונקציות CWC-CTR ו-CWC-MAC המתוארות להלן, כדי להצפין ולאמת את המידע. הפלט הוא {\displaystyle \sigma ,\tau } המשורשרים יחד. \sigma  הוא הטקסט המוצפן והוא באורך טקסט המקור ו-\tau הוא תג האימות והוא באורך המוגדר על ידי הפרמטר {\displaystyle tl}. כך שהתנפחות הטקסט המוצפן אינה משמעותית.

#### אלגוריתם פענוח

{\displaystyle \mathbf {CWC} {\text{-}}\mathbf {DEC} \_{K}(N,A,C)}
1. {\displaystyle {\text{If }}|C|<{\text{ tl then return INVALID}}}
2. {\displaystyle {\text{Parse }}C{\text{ as }}\sigma \ \|\ \tau {\text{ where }}|\tau |=tl}
3. {\displaystyle {\text{If }}A\notin {\text{AdSp}}\_{\text{CWC-BC-tl}}{\text{ or }}\sigma \notin {\text{MsgSp}}\_{\text{CWC-BC-tl}}{\text{ then Return INVALID}}}
4. {\displaystyle {\text{If }}\tau \neq {\text{CWC-MAC}}\_{K}(N,A,\sigma ){\text{ then return INVALID}}}
5. {\displaystyle M={\text{CWC-CTR}}\_{K}(N,\sigma )}
6. {\displaystyle {\text{Return }}M}

יש לשים לב שכדי למנוע התקפת תיזמון, במקרה שגיאה כשהאלגוריתם מחזיר INVALID רצוי שלא יהיה ניתן להבחין באיזה שלב ארעה השגיאה (שורות 3, 4).

#### אלגוריתם הפעלת מצב מונה

{\displaystyle \mathbf {CWC} {\text{-}}\mathbf {CTR} \_{K}(N,M)}
1. {\displaystyle \alpha =\left\lceil |M|/128\right\rceil }
2. {\displaystyle {\text{For }}i=1{\text{ to }}\alpha {\text{ do: }}s\_{i}={\text{BC}}\_{K}(10^{7}\ \|\ N\ \|\ {\text{tostr}}(i,32))}
3. {\displaystyle x={\text{first }}|M|{\text{ bits of }}s\_{1}\|s\_{2}\|\cdots \|s\_{\alpha }}
4. {\displaystyle \sigma =x\oplus M}
5. {\displaystyle {\text{Return }}\sigma }

הפונקציה מיישמת הצפנה במצב 'מונה', המונה מורכב מוקטור אתחול ואינדקס i, שמוצפנים יחד באמצעות צופן הבלוקים BC, ממנו מייצרים באופן איטרטיבי זרם-מפתח באורך הרצוי המשמש להצפנת המסר M ב-XOR כמו בצופן זרם.

#### אלגוריתם גיבוב

{\displaystyle {\textbf {CWC-HASH}}\_{K}(A,\sigma )}
1. {\displaystyle Z={\text{ last }}127{\text{ bits of BC}}\_{K}(110^{126})}
2. {\displaystyle K\_{h}={\text{toint}}(Z)}
3. {\displaystyle l={\text{ min integer such that }}96{\text{ divides }}|A||0^{l}|}
4. {\displaystyle l'={\text{ min integer such that }}96{\text{ divides }}|\sigma ||0^{l}|}
5. {\displaystyle X=A\ \|\ 0^{l}\ \|\ \sigma \ \|\ 0^{l'}}
6. {\displaystyle \beta =|X|/96}
7. {\displaystyle X=X\_{1},X\_{2},...X\_{\beta }}
8. {\displaystyle {\text{For }}i=1{\text{ to }}\beta {\text{ do: }}Y\_{i}={\text{toint}}(X\_{i})}
9. {\displaystyle l\_{\sigma }=|\sigma |/8}
10. {\displaystyle l\_{A}=|A|/8}
11. {\displaystyle Y\_{\beta +1}=2^{64}\cdot l\_{A}+l\_{\sigma }}
12. {\displaystyle R=Y\_{1}K\_{h}^{\beta }+\cdots +Y\_{\beta }K\_{h}+Y\_{\beta +1}{\text{ mod }}(2^{127}-1)}
13. {\displaystyle {\text{Return tostr}}(R,128)}

הפונקציה מייצרת ערך גיבוב (hash) מהטקסט המוצפן \sigma  ומהמידע הנלווה A כשהם מרופדים באפסים כנדרש כדי שיהיו כפולות של 96 סיביות ומשורשרים למחרוזת אחת ארוכה שאליה מתייחסים כאל פולינום כשהמקדמים שלו הם שלמים בגודל 96 סיביות כל אחד. תוצאת הפונקציה R היא חישוב הפולינום המתואר, מודולו המספר הראשוני {\displaystyle 2^{127}-1}.

#### אלגוריתם MAC

{\displaystyle \mathbf {CWC} {\text{-}}\mathbf {MAC} \_{K}(N,A,\sigma )}
1. {\displaystyle R={\text{BC}}\_{K}({\text{CWC-HASH}}\_{K}(A,\sigma ))}
2. {\displaystyle \tau ={\text{BC}}\_{K}(10^{7}\ \|\ N\ \|\ 0^{32})\oplus R}
3. {\displaystyle {\text{Return first }}tl{\text{ bits of }}\tau }

קוד האימות מוכן באמצעות חיבור ב-XOR של תוצאת פונקציית הגיבוב המתוארת לעיל והצפנה של וקטור האתחול באמצעות צופן הבלוקים {\displaystyle {\text{BC}}} עם מפתח ההצפנה K. התוצאה היא {\displaystyle tl} הסיביות הראשונות של \tau.

### תמורה פסאודו-אקראית

 ערך מורחב – **תמורה פסאודו-אקראית**  

הגדרת הביטחון של CWC מבוססת על הרעיון של לובי וראקוף לגבי תמורה פסאודו-אקראית (PRP). אם {\displaystyle E:\{0,1\}^{k}\times \{0,1\}^{L}\rightarrow \{0,1\}^{L}} הוא צופן בלוקים כלשהו והביטוי {\displaystyle {\text{Perm}}(L)} מייצג את קבוצת כל התמורות האפשריות מעל {\displaystyle \{0,1\}^{L}}. אם נתון יריב המנסה לתקוף את המערכת, המסומן בקיצור A ויש לו גישה לאורקל המחזיר סיבית אחת (אמת או שקר). אזי אומרים ש:

{\displaystyle {\text{Adv}}\_{F}^{prp}(A)=\Pr[f{\stackrel {\$}{\longleftarrow }}E:A^{f(\cdot )}=1]-\Pr[g{\stackrel {\$}{\longleftarrow }}{\text{Perm}}(L):A^{g(\cdot )}=1]}
ופירושו שכדי שהצופן E יהיה בטוח, ה"יתרון" שבידי יריב בעל יכולת סבירה, המריץ את PRP, המאפשר לו להבחין (distinguish) בין תוצאות של מימוש אקראי כלשהו של E לבין תמורה אקראית Perm "זניח". צופן מודרני כמו AES נחשב כ-PRP בטוח לפי הגדרה זו (אם כי זה לא הוכח).

### מקביליות

בהצפנה במצב מונה אפשר לחלק את העבודה בין כמה יחידות עיבוד. כל יחידה יכולה לחשב בנפרד את הקטע המתאים מזרם המפתח לפי אינדקס הבלוק i, המפתח K וה-Nonce. הליבה של מנגנון האימות בסגנון קרטר-ווגמן ניתנת גם היא לביצוע מקבילי בשל העובדה שמנגנון האימות ממיר את זוג הערכים ({\displaystyle A,\sigma }) לפולינום

{\displaystyle Y\_{1}x^{n}+Y\_{2}x^{n-1}+Y\_{3}x^{n-2}+\cdots +Y\_{n}x+Y\_{n+1}{\text{ mod }}(2^{127}-1)}
שימו לב שהמקדמים {\displaystyle Y\_{i}} הם שלמים בגודל 96 סיביות ו-x הוא שלם מודולו {\displaystyle 2^{127}-1}. אפשר לראות שחישוב פולינום זה יכול להתבצע באופן מקבילי כיוון שאפשר לכתוב את הפולינום המתואר כך

{\displaystyle (Y\_{1}y^{m}+Y\_{3}y^{m-1}+\cdots +Y\_{n})+(Y\_{2}y^{m}+Y\_{4}y^{m-1}+\cdots +Y\_{n+1}){\text{ mod }}(2^{127}-1)}
כאשר {\displaystyle y=x^{2}{\text{ mod }}(2^{127}-1)} ו-{\displaystyle m=(n-1)/2}. לצורך ההדגמה נניח ש-n אי-זוגי. כעת אפשר לחשב את שני צידי המשוואה במקביל ולחברם לאחר מכן. בדרך זו אפשר להשיג מקביליות נוספת על ידי חלוקה ל-j פולינומים ב-{\displaystyle y'=x^{j}{\text{ mod }}(2^{127}-1)}.

### יתרונות וחסרונות

* ביטחון מוכח; CWC נחשב לאלגוריתם AEAD בטוח בהנחה שצופן הבלוקים שביסודו בטוח. הנחה זו סבירה כי לדעת הרוב אלגוריתם כמו AES נחשב PRP (פרמוטציה פסאודו-אקראית). CWC מבטיח סודיות, אימות והבטחת שלמות המידע M ומידע נלווה A בהינתן וקטור אתחול כלשהו N ומפתח אקראי כלשהו K.
* כשל מצטבר; לאור האמור בהנחה שצופן הבלוקים שבשימוש בטוח, אפשר להוכיח שכל ניסיון זיוף מצד יריב בעל עוצמת חישוב סבירה יתגלה בסבירות גבוהה מאוד.
* מקביליות; CWC ניתן ליישום באופן מקבילי במיוחד בחומרה להשגת תפוקה גבוהה יותר. מידת המקביליות ניתנת לשליטה בידי המיישם. ביישום ממוטב בחומרה אפשר להגיע לתפוקה של 50 גיגה לשנייה.
* מפתח הצפנה; CWC מוגדר כאלגוריתם עם מפתח הצפנה יחיד אם כי פנימית האלגוריתם משתמש בשני מפתחות שונים להצפנה ואימות. מפתח הגיבוב המשמש לאימות נגזר ממפתח ההצפנה הראשי.
* וקטור אתחול; ב-CWC נקבע וקטור האתחול בקיצור IV לגודל 11 בתים. האלגוריתם בטוח בתנאי שלא נעשה שימוש חוזר ב-IV להצפנת שני מסרים שונים, עם אותו מפתח. וקטור האתחול יכול להיות כל מספר ייחודי כמו מונה ואינו חייב להיות סודי.
* דרישות זיכרון; CWC ניתן ליישום בכמה אופנים, בעיקרון דרישות הזיכרון המינימליות הן בעצם דרישות הזיכרון של צופן הבלוקים שביסוד האלגוריתם. למשל אפשר ליישם את AES ללא צריכת זיכרון, אך קיימים יישומים ממוטבים שצורכים 4K בתים. כאשר מיישמים את אלגוריתם האימות של CWC באמצעות טבלאות, דרישת הזיכרון עולה בהתאם.
* הכנה מוקדמת; במצב מונה אפשר להכין מראש את זרם מפתח ההצפנה ללא תלות בטקסט הקריא. אך לא ניתן לחשב מראש את פלט CWC-HASH המשמש לאימות. הכנה מוקדמת, אם ערכים מסוימים קבועים או משתנים לעיתים רחוקות, מאפשרת שיפור בביצועים על חשבון צריכת זיכרון.
* אורך מקסימלי; המסר הארוך ביותר שניתן להצפנה באמצעות CWC הוא {\displaystyle 128\cdot (2^{32}-1)} סיביות. CWC לא הוגדר לטפל בכל אורך רצוי אלא רק בכפולות של 128 סיביות.
* התנפחות; תוצאת האלגוריתם היא המינימלית האפשרית במונחים של צופן בלוקים, שהוא אורך הטקסט המוצפן \sigma  פלוס אורך התג {\displaystyle tl}.
* יעילות; מספר הקריאות לצופן הבלוקים הפנימי הוא לכל היותר {\displaystyle \left\lceil |M|/128\right\rceil +3} בשל הצורך בקריאה אחת נוספת להכנת מפתח האימות.
* און ליין; אפשר להצפין או לפענח מיידית חלק מהמידע שנעשה זמין ללא תלות בחלקים אחרים. לעובדה זו יתרון בהזרמת מדיה, אולם יש לזכור שהמקבל אינו יכול לוודא את שלמות המידע שהתקבל עד שיגיעו כל החלקים. הוא יכול לאחסן את המידע בחוצץ זמני ולהמתין להגעת יתר החלקים.
* זכויות יוצרים; לפי הצהרת המפתחים CWC חופשי לשימוש ואינו מוגן בפטנט או זכויות יוצרים.
* פשטות; לטענת המפתחים CWC פשוט וקל ליישום ולהטמעה בתוכנה או בחומרה.

ראו גם
------

* מצב הפעלה של צופן בלוקים
* OCB
* GCM

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

1. ↑  CWC: A high-performance conventional authenticated encryption mode
2. ↑  MODES DEVELOPMENT
3. ↑  Submission to NIST: Cipher-State (CS) Mode of Operation for AES
4. ↑  Comments on CWC and GCM Modes for Authenticated Encryption

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

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

 |

 |
| 

| הצפנה קלאסית |
| --- |
| 
* מכונת הצפנה
* צופן החלפה
* צופן אתב"ש
* צופן קיסר
* צופן ויז'נר
* צופן ורנם
* צופן פלייפייר
* צופן היל
* אולטרה
* אניגמה
* ציקלומטר
* קולוסוס
* 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
* סיסמה חד-פעמית

 |

 |
| 

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

 |

 |