GOST (צופן)
תיאור כללי

GOST הוא צופן בלוקים איטרטיבי בסגנון רשת פייסטל עם 32 סבבים. הוא מקבל בלוק טקסט קריא באורך 64 סיביות (8 בתים) ומפתח הצפנה באורך 256 סיביות (32 בתים) ומחזיר בלוק מוצפן באורך 64 סיביות. תחילה בלוק הקלט מחולק לשני חצאים  L_{0} ו- R_{0} בהתאמה, המפתח עבור הסבב ה- i הוא  K_{i} באורך 32 סיביות (תיאור הכנת תת-המפתחות בהמשך) ובכל סבב מבצעים:
בכל סבב הפונקציה הפנימית  f משפיעה רק על המחצית  R_{i} והיא מבצעת שלוש פעולות פשוטות:
מחברת את  R_{i} עם המפתח הסודי  K_{i} מודולו  2^{32}.
מחלקת את התוצאה לשמונה מקטעים באורך 4 סיביות, כל אחד מהם הופך לקלט לתיבת החלפה אחרת לפי סדר.
את הפלט מתיבות ההחלפה מאחדת למילה באורך 32 סיביות ומבצעת הזזה מעגלית 11 סיביות שמאלה.
המפתחות עבור כל סבבי הצופן נבחרים בדרך הבאה: מחלקים את המפתח הסודי של המשתמש לשמונה תת-מפתחות באורך 32 סיביות כל אחד וכל אחד מהם משמש ארבע פעמים במהלך ההצפנה, כאשר ב-24 הסבבים הראשונים משתמשים במפתחות לפי סדר ואילו בשמונה הסבבים האחרונים משתמשים במפתחות בסדר הפוך.
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| סבב: | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| תת-מפתח: | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| סבב: | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 |
| תת-מפתח: | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
ב-GOST דרושות שמונה תיבות ההחלפה בגודל  4\times 4, כל אחת מקבלת קלט באורך 4 סיביות ומחזירה פלט באורך 4 סיביות, בסך הכול 16 ערכים אפשריים בכל תיבה. תיבות ההחלפה מכילות בסך הכול 354 סיביות ( \log _{2}(16!^{8})) של נתונים ויכולות להיות סודיות. אם כוללים את סיביות תיבות ההחלפה הסודיות, אפקטיבית מגדילים את המפתח הסודי ל-610 סיביות. אולם הוכח אפשר לנחש את תכולת תיבות ההחלפה באמצעות  2^{32} הצפנות בקירוב. ערכי תיבות ההחלפה נקבעות בנפרד מהצופן ונתונות לשינוי, למעשה התקן המקורי לא סיפק תיבות החלפה כלל ולא הסבר כיצד להכין אותן, מה שהוליד שמועות על כך שהממשל הרוסי מחזיק בשני סטים של תיבות החלפה, תיבות החלפה "טובות" לשימוש רגיל ותיבות החלפה "מוחלשות" לארגונים שהוא מעוניין לרגל אחריהם. ברוס שנייר מציין בספרו שייתכן אמנם שזה נכון, אבל ישנה שמועה אחרת שגורסת כי יצרני שבבים ברוסיה השתמשו במחולל פסאודו אקראי כדי להכין את תיבות ההחלפה בעצמם. להלן תיבות החלפה שהיו בשימוש הבנק המרכזי של הפדרציה הרוסית בגרסה של הצופן הנקראת GOST-FB. אותם ערכים שימשו גם בפונקציית הגיבוב GOST.
| # | GOST-FB S-Box | GOST-FB S-Box | GOST-FB S-Box | GOST-FB S-Box | GOST-FB S-Box | GOST-FB S-Box | GOST-FB S-Box | GOST-FB S-Box | GOST-FB S-Box | GOST-FB S-Box | GOST-FB S-Box | GOST-FB S-Box | GOST-FB S-Box | GOST-FB S-Box | GOST-FB S-Box | GOST-FB S-Box |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 1 | 4 | A | 9 | 2 | D | 8 | 0 | E | 6 | B | 1 | C | 7 | F | 5 | 3 |
| 2 | E | B | 4 | C | 6 | D | F | A | 2 | 3 | 8 | 1 | 0 | 7 | 5 | 9 |
| 3 | 5 | 8 | 1 | D | A | 3 | 4 | 2 | E | F | C | 7 | 6 | 0 | 9 | B |
| 4 | 7 | D | A | 1 | 0 | 8 | 9 | F | E | 4 | 6 | C | B | 2 | 5 | 3 |
| 5 | 6 | C | 7 | 1 | 5 | F | D | 8 | 4 | A | 9 | E | 0 | 3 | B | 2 |
| 6 | 4 | B | A | 0 | 7 | 2 | 1 | D | 3 | 6 | 8 | 5 | 9 | C | F | E |
| 7 | D | B | 4 | 1 | 3 | F | 5 | 9 | 0 | A | E | 7 | 6 | 8 | 2 | C |
| 8 | 1 | F | D | 0 | 5 | 7 | A | 4 | 9 | 2 | 3 | E | 6 | B | 8 | C |
בשנת 2015 הוסר הלוט מעל תיבות ההחלפה האלמוניות והן נכללות כעת בתקן בגרסה האחרונה ביותר:
| # | GOST R 34> 12-2015 S-Box | GOST R 34> 12-2015 S-Box | GOST R 34> 12-2015 S-Box | GOST R 34> 12-2015 S-Box | GOST R 34> 12-2015 S-Box | GOST R 34> 12-2015 S-Box | GOST R 34> 12-2015 S-Box | GOST R 34> 12-2015 S-Box | GOST R 34> 12-2015 S-Box | GOST R 34> 12-2015 S-Box | GOST R 34> 12-2015 S-Box | GOST R 34> 12-2015 S-Box | GOST R 34> 12-2015 S-Box | GOST R 34> 12-2015 S-Box | GOST R 34> 12-2015 S-Box | GOST R 34> 12-2015 S-Box |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 1 | C | 4 | 6 | 2 | A | 5 | B | 9 | E | 8 | D | 7 | 0 | 3 | F | 1 |
| 2 | 6 | 8 | 2 | 3 | 9 | A | 5 | C | 1 | E | 4 | 7 | B | D | 0 | F |
| 3 | B | 3 | 5 | 8 | 2 | F | A | D | E | 1 | 7 | 4 | C | 9 | 6 | 0 |
| 4 | C | 8 | 2 | 1 | D | 4 | F | 6 | 7 | 0 | A | 5 | 3 | E | 9 | B |
| 5 | 7 | F | 5 | A | 8 | 1 | 6 | D | 0 | 9 | 3 | E | B | 4 | 2 | C |
| 6 | 5 | D | F | 6 | 9 | 2 | C | A | B | 7 | 8 | 1 | 4 | 3 | E | 0 |
| 7 | 8 | E | 2 | 5 | 6 | 9 | 1 | C | F | 4 | B | 0 | D | A | 3 | 7 |
| 8 | 1 | 7 | E | D | 0 | 5 | 8 | 3 | 4 | F | A | 6 | 9 | C | B | 2 |
קיימת גרסה נוספת של הצופן הנקראת GOST-PS שמשתמשת בתיבות ההחלפה מצופן PRESENT והיא נחשבת לגרסה קלת משקל המתאימה לשימוש בחומרה מוגבלת משאבים.