בקריפטואנליזה, **התקפת קורלציה** (correlation attack) היא התקפה קריפטוגרפית נגד צופן זרם שהוצעה לראשונה על ידי תומאס זיגנתאלר (Thomas Siegenthaler) ב-1985. היא המתאימה לכל צופן שהמחולל הפנימי שלו מורכב מאוגרי זיזה ממושבים (LFSR). זוהי התקפת כוח גס סטטיסטית בסגנון הפרד ומשול המתמקדת בשחזור המצב הראשוני (initial state) של האוגרים. ההתקפה בדרך כלל מתבצעת לפי מודל התקפת גלוי-ידוע, אם קיים בידי התוקף מידע מוקדם לגבי חלק מסיביות זרם המפתח. אך אפשרית גם אם לא קיים כל מידע מוקדם, בתנאי שקיימת יתירות כלשהי במסר הגלוי שהוצפן.

ההתקפה המקורית כפי שהוצגה על ידי זיגנתאלר ישימה בעיקר כנגד צופן זרם בסגנון 'מחולל משולב' הפועל באופן כזה שהסיבית הבאה של זרם המפתח היא תוצאה של פונקציית שילוב (combining function) המקבלת כקלט מספר סיביות מתוך פוזיציות מסוימות של {\displaystyle n} אוגרי LFSR שאורכיהם שונים {\displaystyle L\_{1},L\_{2},...L\_{n}} בהתאמה, משלבת אותן באופן לא ליניארי כלשהו ומחזירה סיבית אחת. אם מצליחה, ההתקפה מאפשרת שחזור מלא של שלב האתחול של המחולל בסיבוכיות של {\displaystyle \textstyle \sum \_{i=1}^{n}(2^{L\_{i}}-1)} ניסיונות בניגוד לסיבוכיות {\displaystyle \textstyle \prod \_{i=1}^{n}(2^{L\_{i}}-1)} הצפויה בחיפוש ממצה.

באופן כללי התקפת קורלציה אפשרית ברגע שמוצאים מתאם כלשהו בין זרם המפתח {\displaystyle s} והרצף {\displaystyle u} של אוטומט סופי שהמצב ההתחלתי שלו תלוי בחלק מסיביות זרם המפתח. את סיביות המפתח אפשר לחשוף על ידי שחזור המצב ההתחלתי של {\displaystyle u}, כל עוד אפשר לזהות 'תלות סטטיסטית' אשר יכולה לשמש **סימן** שהרצף עשוי להיות חלק מפלט המחולל. חיפוש ממצה בר ביצוע על ידי שבוחרים שוב ושוב רצפים אפשריים כלשהם ובודקים אם מידת הקורלציה בין הרצף {\displaystyle u} לבין {\displaystyle s} גבוהה מערך סף מסוים שהוא פונקציה של טווח השגיאה האפשרי. אם נמצא רצף מתאים אפשר לשחזר את המצב ההתחלתי של המחולל ומכאן לשחזר כל קטע מזרם המפתח. בהתאמות קלות ההתקפה ישימה כנגד סוגים רבים של צופן זרם כמו צופן זרם שבנוי בסגנון 'מסנן' (filter generator).

רמת מתאם
--------

התקפת קורלציה מנצלת את העובדה שקיימת תלות סטטיסטית כלשהי בין זרם המפתח הנוצר מהמחולל לבין פלט אוגר יחיד כלשהו הכלול במחולל. ברמה של סיביות תלות כזו מתרחשת רק אם יש מתאם בין פלט פונקציית השילוב {\displaystyle f} של המחולל לאחד מהקלטים {\displaystyle x\_{i}} שלה, שהוא פלט אחד האוגרים. כלומר עבור כל {\displaystyle x\_{i}} ההסתברות


p

i

=
Pr
[
f
(

x

1

,
.
.
.
,

x

n

)
≠

x

i

]
≠
1

/

2

{\displaystyle p\_{i}=\Pr[f(x\_{1},...x\_{n})\neq x\_{i}]\neq 1/2}

{\displaystyle p_{i}=\Pr[f(x_{1},...x_{n})\neq x_{i}]\neq 1/2}
עבור {\displaystyle 1\leq i\leq n} (כל האוגרים הכלולים במחולל). או לחלופין אם זרם המפתח נקרא {\displaystyle s} אזי אומרים שקיים מתאם בין רצף חלקי באורך {\displaystyle t} של זרם המפתח המסומן {\displaystyle (s\_{t})\_{t\geq 0}} לבין רצף חלקי {\displaystyle (u\_{t})\_{t\geq 0}} הנוצר מאחד האוגרים שבמחולל. רמת המתאם בין שני הרצפים {\displaystyle s,u} נמדדת על ידי פונקציה המחושבת על {\displaystyle N} סיביות


∑

t
=
0

N
−
1

(
−
1

)

s

t

+

u

t

 mod 

2

{\displaystyle \sum \_{t=0}^{N-1}(-1)^{s\_{t}+u\_{t}{\text{ mod }}2}}

{\displaystyle \sum _{t=0}^{N-1}(-1)^{s_{t}+u_{t}{\text{ mod }}2}}
והיא משתנה מקרי ממשי בעל התפלגות בינומית עם תוחלת {\displaystyle N(1-2p\_{i})} ושונות {\displaystyle 4Np\_{i}(1-p\_{i})} (כאשר {\displaystyle N} גדול). אפשר להשוות את ההתפלגות לרמת המתאם הצפויה בין הרצף {\displaystyle s} לבין רצף אקראי {\displaystyle (r\_{t})\_{t\geq 0}} בלתי תלוי. כאשר הרצף הוא אקראי בלתי תלוי ב-{\displaystyle s} ההתפלגות בינומית עם תוחלת צפויה אפס ועם שונות {\displaystyle N}. רמת המתאם היא כלי יעיל המאפשר לתוקף להפעיל התקפת כוח גס ישירה בחיפוש אחר המצב הראשוני הנכון של אוגר נתון. ניתן להבחין בין מצב התחלתי נכון למצב התחלתי שגוי, משום שמצפים מערך התחלתי שגוי שיהיה בלתי תלוי סטטיסטית בזרם המפתח, כל תלות סטטיסטית שתמצא תאשש שהמצב ההתחלתי אכן נכון. בפועל ערך כלשהו יתקבל כמצב התחלתי נכון אם רמת המתאם עולה על סף מסוים המחושב בהתבסס על ההסתברות של שתי שגיאות אפשריות, האחת נקראת false alarm והיא מסומנת {\displaystyle P\_{f}=2^{L\_{i}}} והשנייה נקראת הסתברות לאי-הבחנה {\displaystyle P\_{n}=1.3\times 10^{-3}}. האורך {\displaystyle N} שהוא כמות הסיביות המינימלית הדרושה להתקפה, נקבע לפי ההסתברות {\displaystyle p\_{i}} לעיל והאורכים של האוגרים {\displaystyle L\_{i}} בהתאמה. ההתקפה דורשת בערך:



N
≃

(



ln

(

2

L

i

−
1

)

+
3

2

p

i

(
1
−

p

i

)



2

(

p

i

−
0.5
)

)

2

{\displaystyle N\simeq \left({\frac {{\sqrt {{\text{ln}}(2^{L\_{i}-1})}}+3{\sqrt {2p\_{i}(1-p\_{i})}}}{{\sqrt {2}}(p\_{i}-0.5)}}\right)^{2}}

{\displaystyle N\simeq \left({\frac {{\sqrt {{\text{ln}}(2^{L_{i}-1})}}+3{\sqrt {2p_{i}(1-p_{i})}}}{{\sqrt {2}}(p_{i}-0.5)}}\right)^{2}}
סיביות מפתח. כך שבממוצע מתבצעים {\displaystyle 2^{L\_{i}-1}} ניסיונות. בכל מקרה ההתקפה אפשרית רק אם ההסתברות {\displaystyle p\_{i}} שונה מחצי. לסיכום ההתקפה מתוארת בפסאודו קוד הבא:

### פסאודו קוד

**קלט**: קטע מזרם המפתח {\displaystyle s\_{0},s\_{1},...s\_{N-1}} באורך {\displaystyle N} סיביות. כאשר ההסתברות {\displaystyle p\_{i}} לעיל עבור מחרוזת זו לא שווה לחצי. 

**פלט**: המחרוזת {\displaystyle u\_{0},u\_{1},...u\_{L\_{i}-1}} המייצגת את המצב ההתחלתי של האוגר {\displaystyle i}.

1. עבור כל מצב התחלתי אפשרי {\displaystyle u}, מפעילים את המחולל ומייצרים את {\displaystyle N} הסיביות הבאות של האוגר {\displaystyle i} ומחשבים את רמת המתאם בין התוצאה לבין מחרוזת הקלט {\displaystyle s}:

α
=

∑

i
=
0

N
−
1

(
−
1

)

s

t

+

u

t

 mod 

2

{\displaystyle \alpha =\sum \_{i=0}^{N-1}(-1)^{s\_{t}+u\_{t}{\text{ mod }}2}}

{\displaystyle \alpha =\sum _{i=0}^{N-1}(-1)^{s_{t}+u_{t}{\text{ mod }}2}}
2. אם {\displaystyle \alpha } קרוב לתוחלת {\displaystyle N(1-2p\_{i})} המחרוזת {\displaystyle u} מתקבלת כמצב התחלתי אפשרי, אם לא ממשיכים לנסות עם מחרוזת אחרת.

חסינות מתאם
-----------

כדי למנוע התקפת קורלציה צריך לבחור פונקציית שילוב עם תכונה שנקראת 'חסינת-מתאם' (correlation immunity) מ'סדר ראשון' (להלן), כלומר שאין מתאם כלשהו בין פלט הפונקציה לאף אחד מהקלטים שלה. כך שהמפתח בלתי תלוי סטטיסטית בפלט של אוגר כלשהו מהאוגרים הכלולים במחולל וכן כל קלט יכול להיות אפשרי במידה שווה. באופן כללי יותר, התקפת קורלציה סימולטנית על {\displaystyle k} אוגרים מתוך {\displaystyle n} צריכה לבדוק את רמת המתאם בין זרם המפתח {\displaystyle s} לבין הרצף {\displaystyle u} שהוא קומבינציה של {\displaystyle k} האוגרים באמצעות פונקציה בוליאנית {\displaystyle g} של {\displaystyle k} משתנים. היות שמתקיים



Pr
[

s

t

≠

u

t

]
=
Pr
[
f
(

x

1

,
.
.
.
,

x

n

)
≠
g
(

x

i

1

,
.
.
.
,

x

i

k

)
]
=

p

g

{\displaystyle \Pr[s\_{t}\neq u\_{t}]=\Pr[f(x\_{1},...x\_{n})\neq g(x\_{i\_{1}},...x\_{i\_{k}})]=p\_{g}}

{\displaystyle \Pr[s_{t}\neq u_{t}]=\Pr[f(x_{1},...x_{n})\neq g(x_{i_{1}},...x_{i_{k}})]=p_{g}}
כאשר {\displaystyle f} מייצגת את כל האוגרים ואילו {\displaystyle g} את {\displaystyle k} האוגרים הנבדקים לעומתם. ההתקפה יכולה להצליח רק אם {\displaystyle p\_{g}\neq 1/2}. מספר האוגרים המינימלי הדרוש כדי שהתקפה סימולטנית כזו תיתכן היא {\displaystyle m+1} כאשר {\displaystyle m} הוא הסדר הגבוה ביותר של חסינות המתאם של הפונקציה הבוליאנית. פונקציה בוליאנית של {\displaystyle m+1} משתנים המספקת את הקירוב הטוב ביותר של {\displaystyle f} היא פונקציה אפינית {\displaystyle \textstyle \sum \_{j=1}^{m+1}x\_{i\_{j}}+\epsilon }. התקפת קורלציה היעילה ביותר היא כזו שמוצאת קורלציה בין {\displaystyle s} לבין המחרוזת {\displaystyle u} אותה מחשבים על ידי חיבור הפלט של תת-קבוצה {\displaystyle i} של אוגרים {\displaystyle i\_{1},i\_{2},...i\_{m+1}} והיא מתאימה להסתברות:



Pr
[

s

t

≠

u

t

]
=

1
2

−

1

2

n
+
1


|

f
^

(
t
)

|

{\displaystyle \Pr[s\_{t}\neq u\_{t}]={\frac {1}{2}}-{\frac {1}{2^{n+1}}}|{\hat {f}}(t)|}

{\displaystyle \Pr[s_{t}\neq u_{t}]={\frac {1}{2}}-{\frac {1}{2^{n+1}}}|{\hat {f}}(t)|}
כאשר {\displaystyle n} הוא מספר המשתנים של פונקציית השילוב, {\displaystyle t} הוא וקטור של {\displaystyle n} סיביות שמרכיב ה-{\displaystyle i} שלו הוא '1' רק אם {\displaystyle i\in \{i\_{1},i\_{2},...i\_{m+1}\}} והפונקציה {\displaystyle {\hat {f}}} מייצגת טרנספורמציית וואלש של {\displaystyle f} (נקראת גם התמרת פורייה בדידה) אותה מחשבים על ידי {\displaystyle \textstyle \sum \_{x\in f}(-1)^{f(x)\oplus x\cdot u}}. המסקנה שכדי להעלות את סיבוכיות התקפת הקורלציה רצוי שפונקציית השילוב של המחולל תהיה מסדר גבוה של 'חסינות-מתאם' וכן אי-ליניאריות גבוהה. או במילים אחרות שהפונקציה {\displaystyle {\hat {f}}} תהיה נמוכה מעל כל הווקטורים {\displaystyle t} עם משקל בינארי נמוך.

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

סדר {\displaystyle m} של חסינות מתאם פירושו 'מקסימום קורלציה' בין פלט פונקציה בוליאנית {\displaystyle f} עם {\displaystyle n} משתנים לבין תת-קבוצה שלה {\displaystyle i} של {\displaystyle m} משתנים. מקסימום קורלציה מחושבת על ידי {\displaystyle \textstyle C\_{f}(i)=2^{-n}{\text{max}}\_{g\in {\mathcal {F}}\_{i}}\sum \_{x\in F\_{2}^{n}}(-1)^{f(x)\oplus g(x)}} כאשר {\displaystyle {\mathcal {F}}\_{i}} היא פונקציה בוליאנית של {\displaystyle n} המשתנים {\displaystyle x\_{j}} כאשר {\displaystyle j\in i}. הסימן {\displaystyle F\_{2}^{n}} פירושו קבוצת כל הווקטורים הבינאריים {\displaystyle (x\_{1},...x\_{n})} באורך {\displaystyle n} מעל השדה {\displaystyle F\_{2}}.

לקריאה נוספת
------------

* Bruce Schneier. *Applied Cryptography: Protocols, Algorithms and Source Code in C*, Second Edition. John Wiley & Sons, Inc. 1996. ISBN 0-471-12845-7. Page 382 of section 16.4: Stream Ciphers Using LFSRs.

* אנציקלופדיה לקריפטוגרפיה ואבטחת מידע

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

1. ↑  T. Siegenthaler (September 1984). "Correlation-Immunity of Nonlinear Combining Functions for Cryptographic Applications". IEEE Transactions on Information Theory

| קריפטוגרפיה |
| --- |
| 

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

 |
| 

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

 |
| 

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

 |
| 

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

 |
| 

| צופן זרם |
| --- |
| RC4 • Salsa20 • SOSEMANUK • גריין • 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 • סיסמה חד-פעמית |

 |
| 

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

 |