התקפת איזון זמן/זיכרון
התקפת איזון זמן/זיכרון/דטה

בשל ההתנהגות השונה של צופן זרם לעומת צופן בלוקים, התקפת איזון זמן/זיכרון נגד צופן זרם שונה בהתאם. היא נקראת התקפת איזון זמן/זיכרון/דטה (time/memory/data tradeoff), כי נוסף אלמנט שלא קיים בהתקפה הבסיסית המתייחס לכמות המידע המושג און ליין הדרוש לצורך ההתקפה. בצופן זרם, המרחב  N מייצג את מספר המצבים הפנימיים של המחולל שיכול להיות שונה ממרחב המפתחות. "מצב פנימי" של המחולל הפסאודו אקראי המובנה בצופן זרם הוא בעצם תכולת הזיכרון הפנימי ברגע נתון בזמן הפעלת הצופן. כזכור צופן זרם הוא סוג של מכונת מצבים שמכילה זיכרון. הנתונים שהמתקיף מקבל בזמן ההתקפה הם  D הסיביות הראשונות של פלט המחולל שהן בעצם תחילתו של זרם המפתח איתו הוצפן הטקסט הקריא. ההנחה היא שהמתקיף הצליח להשיג אותן למשל על ידי XOR עם קטע טקסט קריא ידוע כמו כותר (במקרה זה אין הבדל בין מודל התקפת גלוי-ידוע לבין גלוי-נבחר). מטרת המתקיף או הקריפטואנליסט היא לגלות לפחות אחד מהמצבים הפנימיים של המחולל. משום שברגע שנמצא מצב פנימי אחד, ניתן לשחזר את כל הסיביות שהופקו מנקודת זמן זו ואילך על ידי הפעלת המחולל קדימה במספר הפעימות הדרוש עד לפענוח כל הטקסט המוצפן. כמובן שהמתקיף יכול להפעיל את המחולל לאחור ובכך להגיע למצב הפנימי הראשון או במילים אחרות לגלות את מפתח ההצפנה, אבל בצופן זרם פעולה זו לא נחוצה כלל כי בידי המתקיף מספיק מידע לפענח את כל הטקסט המוצפן מנקודה זו.
כדי להבין את ההבדל בין צופן זרם לצופן בלוקים בהקשר זה. אפשר לראות שבצופן בלוקים קיים בידי המתקיף בלוק אחד שאיתו הוא מבצע את ההתקפה, כלומר ישנם שני קלטים (מפתח ובלוק קריא) ופלט אחד (בלוק מוצפן). לא ניתן להפיק תועלת ממספר מרובה של בלוקים ידועים כי בלוקים שונים מצריכים טבלאות שונות. לעומת זאת בצופן זרם קיים רק קלט אחד (מצב פנימי) ופלט אחד (קטע מזרם המחולל), כאשר מנסים להפוך את הפונקציה במקרה זה אפשר לעשות שימוש באותן טבלאות כדי להפוך מספר פלטים שונים. למעשה בצופן בלוקים לא ברור איך אפשר בשיטת הלמן לשפר את ההתקפה אם בידי המתקיף יותר מבלוק אחד, לעומת זאת בצופן זרם מספר רב של סיביות פלט יכול לשפר את הסיכויים משמעותית.
התקפת איזון זמן זיכרון על צופן זרם תוארה לראשונה על ידי Steve Babbage ו-Jovan Dj. Golić. בהתקפה זו ממפים את  N המצבים הפנימיים האפשריים ל- \log(N) הסיביות הראשונות שנוצרו על ידי המחולל. במילים אחרות המיפוי  f(x)=y מהמצב הפנימי  x לפלט המחולל  y נחשב כפונקציה אקראית חד-כיוונית מעל  N נקודות שקל לחשב בכיוון אחד אך קשה להפוך. אם המתקיף מצליח להפוך את הפונקציה עבור מצב פנימי אחד כלומר למצוא את מצב פנימי כלשהו לפי פלט המחולל הרי שהוא הצליח לשבור את הצופן. שלב ההכנה המקודמת של ההתקפה מתחיל ב- M מצבים פנימיים אקראיים כלשהם וחישוב פלט המחולל לפי מצבים אילו עד טווח מסוים, אחסונם בטבלה ענקית לפי סדר עולה של הפלט. שורות הטבלה מכילות  (x_{i},y_{i}) כאשר  x_{i} הוא מצב פנימי כלשהו ו- y_{i} הוא פלט המחולל. בשלב ההתקפה המקוונת ניתנים למתקיף  D+\log(N)-1 סיביות מהם המתקיף מכין את כל החלונות (או רצפים) האפשריים  y_{1},y_{2},...,y_{D} של  \log(N) סיביות עוקבות (עם חפיפות). היות שהטבלה ממויינת אפשר למצוא בזמן לוגריתמי שורה בטבלה המכילה מצב פנימי ופלט שמתאימים לרצף הקיים  D אם קיימת. בשל פרדוקס יום ההולדת אפשר להעריך את האיזון בין זמן וזיכרון ולהגיע לסיבוכיות אופטימלית. כיוון שידוע שהתנגשות (התאמה) בין שתי תת-קבוצות מתוך  N נקודות תקרה בהסתברות גבוהה אם המכפלה שלהן גבוהה מ- N. אם מתעלמים מהלוגריתם מתקבל  DM=N כאשר זמן ההכנה הוא  P=M וזמן ההתקפה הוא  T=D. אפשר לצמצם את  T מ- D ל-1 ולהכליל את האיזון ל- TM=N כמו האיזון של הלמן לתמורה אקראית בניגוד לאיזון  TM^{2}=N^{2} לפונקציה אקראית (לכן כאשר  T=M מתקבל  T=M=N^{1/2} שזה פקטור של חצי במקום שליש). אף על פי שבאמת ההשוואה אינה מדויקת בגלל שצופן זרם מתנהג אחרת.
אלכס ביריוקוב ועדי שמיר הרחיבו ושיפרו את ההתקפה בסגנון איזון זמן/זיכרון/דאטה באופן כזה שניצול  D משפר את סיבוכיות ההתקפה על ידי שילוב שני הסוגים המתוארים. כלומר  P=N/D וכן  TM^{2}D^{2}=N^{2} עבור כל D^{2}\leq T\leq N. עם זה אפשר להשיג איזון של זמן עיבוד מוקדם  P=N^{2/3} וכן זמן התקפה  T=N^{2/3} וזיכרון  M=N^{1/3} עם  דטה זמינה און ליין בסדר גודל  D=N^{1/3}. למשל עבור  N=2^{100} הפרמטרים  P=T=2^{66} וכן  M=D=2^{33} הם כמעט פרקטיים.