במקרה של מפתח באורך 128 סיביות המפתח המסופק על ידי המשתמש מחולק לארבע מילים formula_37, במקרה של מפתח באורך 256 סיביות הוא מחולק לשמונה מילים בהתאמה. וקטור האתחול באורך 64 סיביות מחולק לשתי מילים. את מפתח ההצפנה המסופק על ידי המשתמש יחד עם וקטור האתחול אם ישנו, טוענים לתוך האוגר LFSR כדלהלן:
כאשר formula_42 מייצג וקטור שכולו אחדים (32 סיביות). חיבור XOR עם וקטור כזה שקול לאופרטור השלילה. אם המפתח הנבחר באורך 256 סיביות טוענים את המפתח ווקטור האתחול כך:
אם משתמשים עם הצופן במצב ללא וקטור אתחול ההנחה היא ש-formula_47. בשלב זה מפעילים את הצופן בדיוק formula_48 פעמים ללא שימוש בפלט, במקום זאת הפלט מוזן בחזרה ללולאת ההיזון של ה-LFSR. במצב ההפעלה הרגיל ללא IV המשתנה formula_49, במקרה של הפעלה עם formula_50 הוא formula_51. בכל פעימה כל כניסות ה-LFSR מוזזות צעד אחד לימין, כלומר הכניסה השנייה מקבלת את הערך של הכניסה הראשונה, השלישית של השנייה וכן הלאה. בשלב האתחול הערך החדש של הכניסה הראשונה הוא חיבור של הכניסות ה-16, 13 ו-7 יחד עם תוצאת מכונת המצבים:
לאחר מכן הצופן עובר למצב שימוש רגיל כשאז עדכון הכניסה הראשונה מתבצע ללא פלט מכונת המצבים:
הצפנה.
לאחר שלב האתחול, הצופן מופעל פעם אחת ללא שימוש בפלט, ולאחר מכן הוא מוכן לשימוש, 32 הסיביות הבאות של המחולל הן:
ההצפנה מבוצעת על ידי חיבור פלט המחולל עם המסר מילה אחר מילה, עד להשלמת כל המסר. הפענוח מתבצע על ידי הפעולה ההפוכה. בדרך כלל משתמשים בפעולה XOR שהיא הופכית של עצמה ולכן פענוח והצפנה זהים.
ביטחון.
בפיתוח SNOW הושם דגש על עמידות נגד התקפת קורלציה שהיא התקפה גנרית אפקטיבית נגד כל צופן זרם שעושה שימוש ב-LFSR והיא מסתמכת על רמת מתאם מסוימת בין פלט המחולל למצב הפנימי בזמן נתון. למיטב ידיעת המפתחים כמות הזיכרון לצורך התקפה מעין זו נגד SNOW היא מעבר ליכולת הטכנולוגית הקיימת. התקפה נוספת שהצליחה במיוחד נגד A5/1 היא התקפת איזון זמן/זיכרון והיא אינה אפשרית נגד SNOW בשל העובדה שהמצב הפנימי גדול מדי. התקפה אפשרית אחרת היא מסוג Guess and Determine שאיתה הצליחו לפרוץ בין היתר את A5/1. היא פועלת בעיקרון כך; מנחשים חלק מהערכים הפנימיים ומנסים למצוא קשר או יחס כלשהו עם ערכים פנימיים אחרים בעיקר בפונקציית ההיזון. ההתקפה מצליחה אם מצליחים לנחש נכונה את כל המצב הפנימי. בפברואר 2002 פרסמו Hawkes ו-Rose התקפת ניחוש קריפטוגרפית כזו נגד SNOW בסיבוכיות מקום של formula_55 מילים ובסיבוכיות זמן של formula_56 פעולות. אף על פי שההתקפה תאורטית היא מצביעה על חולשה מסוימת כיוון שהוכח שניתן לפרוץ את הצופן בזמן נמוך מכוח גס כפי שנטען על ידי המפתחים. בין היתר ההתקפה ניצלה את העובדה שמכונת המצבים מקבלת קלט יחיד. התקפה אחרת מ-2002 של Coppersmith, Halevi, Jutla שהיא סוג של התקפת הבחנה גנרית נגד צופן זרם הכולל מיסוך אי-ליניארי מצליחה לשבור את הצופן בזמן של formula_57 פעולות ועם formula_55 מילות פלט של הצופן. ההתקפה מבוססת על ההבחנה שקיימת קורלציה בפולינום ההזנה וגם היא כמובן תאורטית. בגרסה השנייה המפתחים ניסו לפתור את הבעיות הללו.
SNOW 2.0.
מבחינה סכמתית ההבדל בין גרסה 1 לגרסה 2 מינורי (כמתואר בתרשים משמאל). כקודמו ה-LFSR מכיל 16 כניסות באורך 32 סיביות, אך פולינום ההזנה (feedback polynomial) השתנה. כמו כן מכונת המצבים FSM מקבלת שתי מילות קלט במקום אחת. וכמו בקודם, הפלט הוא XOR של פלט ה-FSM עם הכניסה האחרונה של ה-LFSR. פולינום ההזנה כולל כעת שני אלמנטים שונים, formula_9 ו-formula_60, כאשר הראשון הוא שורש של פולינום פרימיטיבי ממעלה 4 מעל formula_30, ביתר פירוט:
המצב הפנימי בזמן formula_70 מיוצג על ידי formula_71 כאשר formula_72. האלמנט formula_73 הימני ביותר הוא האלמנט הראשון והוא פלט ה-LFSR בכל פעימה. הזמן formula_74 פירושו הפעימה הראשונה מיד לאחר אתחול המצב הפנימי עם המפתח. הצופן מופעל פעם אחת על ריק לפני שמתחילים לייצר את זרם המפתח, כלומר בזמן formula_75. פלט הצופן הוא formula_76 מכונת המצבים FSM מכילה שני אוגרים המסומנים formula_77 ו-formula_78 כל אחד מהם בעל קיבולת של 32 סיביות. תכולת האוגרים בזמן formula_79 מסומנת formula_80, formula_81 בהתאמה. הקלט ל-FSM נלקח משתי הכניסות formula_82 ב-LFSR ופלט מכונת המצבים בזמן formula_70 המיוצג על ידי formula_84 מחושב כדלהלן:
פלט הצופן בזמן זה הוא
פונקציית העדכון של מכונת המצבים פועלת כך:
S-box.
תיבות ההחלפה של SNOW 2.0 המסומנות formula_90 הן בעצם פרמוטציה המבוססת על פונקציית הסבב של צופן ריינדל כדלהלן; אם formula_91 הוא מילת קלט באורך 32 סיביות המחולקת לארבעה בתים כאשר formula_92 הוא הבית החשוב, אפשר להתייחס אליה כאל וקטור (עמודה). תחילה מיישמים החלפה לפי תיבות ההחלפה של ריינדל ולאחר מכן מבצעים את הפונקציה MixColumn של ריינדל. כלומר מתייחסים למילת הקלט כאל פולינום formula_93 ממעלה לכל היותר 3 מעל השדה formula_30 המיוצג על ידי פולינום אי-פריק formula_95 מעל formula_96 ומכפילים בפולינום קבוע formula_97 מעל formula_98. הכפל האחרון יכול להתבצע כמו בריינדל על ידי חשבון מטריצות:
התוצאה היא הבתים formula_100. שתי הפעולות יחד ניתנות לביצוע במשולב כמו בפסאודו קוד הבא:
כאשר formula_105 מייצגת את תיבות ההחלפה של ריינדל והפונקציה formula_106 היא פעולת הכפלה של אלמנט בשדה עם אלמנט פרימיטיבי (formula_107) שהיא דומה לכפל ב-2, במילים אחרות; פעולת Shift לשמאל סיבית אחת במידה שאין גלישה, או פעולת Shift ו-XOR אחד עם ערך קבוע (formula_108) אם הייתה גלישה. דהיינו אם הסיבית המשמעותית ביותר הייתה '1' לפני הכפל (הפונקציה מתוארת ביתר פירוט ב-SNOW 3G להלן).
אתחול מפתח.
תחילה, אם מפתח ההצפנה באורך 128 סיביות או ארבע מילים formula_109 באורך 32 סיביות כל אחת, טוענים אותו יחד עם וקטור האתחול formula_50 באורך ארבע מילים formula_111 אם ישנו, לתוך ה-LFSR לפי:
כאשר 1 מייצג וקטור שכולו אחדים (formula_116). אם המפתח הוא 256 סיביות כלומר שמונה מילים formula_117 אזי הטעינה מתבצעת לפי:
לאחר מכן מאפסים את R1 ו-R2 ומפעילים את הצופן 32 פעימות (Clocks) מבלי לייצר כל פלט, אלא במקום זאת מזינים את התוצאה בחזרה לפונקציית ההזנה (כמתואר בתרשים), לכן במהלך האתחול האלמנט הבא שמוזן לתוך ה-LFSR הוא:
בתום 32 הפעימות מבצעים פעימה נוספת ללא פלט ולאחר מכן הצופן עובר למצב הפעלה נורמלי. שבו הכניסה האחרונה ב-LFSR לאחר כל פעימה מעודכנת כך:
מכאן ואילך בכל פעימה נוצרת מילה פסאודו אקראית שהיא חלק מזרם המפתח שהצופן מייצר, עד formula_1 מילים כאלה שאז יש צורך להחליף מפתח.
ההבדלים העיקריים בין גרסה 1 לגרסה 2 הם:
ביטחון.
ביטחון SNOW 2.0 טוב יותר מהגרסה המקורית אם כי גם בו התגלו חולשות לא מעטות. התקפות קירוב ליניארי והתקפות הבחנה שהתפרסמו מוכיחים שהצופן פחות בטוח ממה שהצהירו המפתחים.
SNOW 3G.
SNOW 3G מבוסס על SNOW 2.0 והוא שוכן בליבה המבצעת הצפנה מאומתת של תקשורת סלולרית באלגוריתמים UEA2 להצפנה ו-UIA2 לאימות בדור השלישי ובדור הרביעי של GSM. הצופן פועל ברמה של מילים באורך 32 סיביות, מקבל מפתח סודי באורך 128 סיביות וכן וקטור אתחול באורך 128 סיביות. הפלט מחובר עם השיחה או הנתונים מילה אחר מילה ב-XOR והתוצאה משודרת לצד השני. בפענוח הצד המקבל פועל באופן דומה, מפעיל את הצופן עם המפתח הסודי המשותף לקבלת זרם מפתח תואם ואז מחבר שוב עם השיחה המוצפנת כדי להחזירה למצב הגלוי.
SNOW 3G כולל אוגר LFSR אחד בעל 16 כניסות (Taps) באורך 32 סיביות כל אחת, מכונת מצבים אחת הכוללת שלושה אוגרים באורך 32 סיביות ופונקציות עדכון מתאימות לפי הפירוט בהמשך. בתחילת כל שיחה טוענים את המפתח ואת וקטור האתחול לתוך המצב הפנימי והצופן מופעל 32 פעימות ללא שימוש בפלט במקום זאת הפלט מוזן בחזרה לאוגר ולאחר מכן עוברים למצב הפעלה רגיל ומייצרים בכל פעימה 32 סיביות מפתח. בשני מצבי ההפעלה של הצופן (Clocking), מצב האתחול ומצב העבודה משתמשים בשתי הפונקציות הבאות:
הפונקציה MULx.
פונקציה להכפלת אלמנטים בשדה formula_30 ב-2 (או הפולינום formula_107), הנקראת formula_126 מקבלת שני בתים formula_127 ומחזירה בית אחד:
הזזה שמאלה (sift left) שהיא פעולה המובנית בכל המעבדים שקולה לכפל בפולינום formula_107 (או ב-'02') שהוא אלמנט פרימיטיבי בשדה formula_30. אם הסיבית המשמעותית ביותר של formula_128 היא '1' תתרחש גלישה לאחר הזזה, במצב זה מתקבל אלמנט שאינו בשדה formula_30 ולכן יש צורך לבצע צימצום מודולרי עם הקבוע formula_135 ולקחת את השארית. כיוון שהגלישה מאוד קטנה אין צורך בביצוע פעולת חילוק ארוכה, לכל היותר יידרש חיסור אחד כדי לקבל את השארית. בהרחבה של שדה בינארי פעולת החיסור זהה לחיבור והיא XOR.
הפונקציה MULxPOW.
הפונקציה formula_137 משתמשת ב-formula_106 באופן רקורסיבי כדי לבצע העלאה בחזקה מודולרית של אלמנטים בשדה. היא מקבלת שני בתים formula_127 ומעריך formula_140 ומחזירה בית אחד כך:
הפונקציה MULx מקבילה למעשה להכפלה באיבר פרימיטיבי של ההרחבה ממעלה 8 מעל formula_144. יהי formula_67 שורש של פולינום אי פריק ממעלה 8 מעל formula_146 אז עבור כל אלמנט formula_147 התוצאה של MULx מקבילה ל-formula_148. כמו כן הפונקציה MULxPOW מקבילה להכפלה בחזקה formula_140 של האיבר הפרימיטיבי: formula_150.
LFSR ו-FSM.