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

בקריפטוגרפיה מצב הפעלהאנגלית: Mode of operation) מתייחס לאלגוריתם שמגדיר כיצד להפעיל צופן בלוקים סימטרי דטרמיניסטי להצפנת טקסט-גלוי באורך שעולה על אורך הבלוק שהצופן מסוגל להצפין בבת אחת. צופן בלוקים כשלעצמו מסוגל רק להבטיח סודיות של 'בלוק' טקסט גלוי, שהוא מחרוזת סיביות באורך קבוע מוגדר מראש. מעצם ההגדרה, בהינתן צופן בלוקים דטרמיניסטי כמו AES ומפתח הצפנה זהה, הצופן ימיר תמיד בלוק קלט זהה לבלוק טקסט-מוצפן זהה. לכן ניתן לזהות הצפנה חוזרת של בלוקים זהים עם אותו מפתח. זהו מאפיין שעלול להוות חיסרון כי בהצפנה ישירה דולף בדרך אגב מידע ליריב פוטנציאלי שעלול להיות מנוצל להתקפה כנגד המערכת.

אם בלוק הצופן הוא באורך סיביות (ב-AES למשל אורך הבלוק 128 סיביות) והמסר הגלוי המיועד להצפנה באורך שרירותי כלשהו הגדול מ- שזהו המצב בדרך כלל, הדרך הפשוטה ביותר היא לחלק את המסר לבלוקים בגודל סיביות, להצפין בלוק אחר בלוק באופן איטרטיבי עד להשלמת כל הבלוקים. כמובן שאם מספר סיביות המסר אינו מתחלק ב- אפשר להוסיף אפסים לבלוק האחרון כמידת הצורך כדי להשלימו לגודל בלוק שלם. עם פענוח הטקסט המוצפן, מסירים את האפסים המיותרים מהבלוק האחרון ומחברים יחד את כל הבלוקים כדי לקבל את המסר המקורי. למעשה השיטה המתוארת נקראת Electronic codebook (ספר קוד) המסומנת בקיצור ECB והיא בעצם הצפנה ישירה ללא פעולה נוספת כלשהי. כאמור היא אינה בטוחה במרבית המקרים כיוון שקל לזהות בלוקים זהים כל עוד המפתח זהה.

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

וקטור אתחול

ערך מורחב – וקטור אתחול

וקטור אתחול הוא מספר אקראי ייחודי כלשהו שמשמש לאתחול תהליך ההצפנה במצבי הפעלה מסוימים של צופן בלוקים כפי שיבואר בהמשך. הוא יכול להיות קבוע ומוסכם מראש, משתנה אקראי, ערך חד-פעמי או מספר רץ, הכול בהתאם לאופי היישום. בין היתר מטרתו לאפשר הצפנה של בלוקים זהים עם אותו מפתח, כי קל יותר להחליף וקטור אתחול על ידי שינוי קל מאשר להחליף מפתח סודי ואפשר להבטיח שכל עוד וקטור האתחול שונה אפילו במעט הטקסט המוצפן שיתקבל משני בלוקים זהים יהיה שונה לגמרי בהסתברות גבוהה מאוד. וקטור האתחול אינו חייב להיות סודי ואין לראות בו כמפתח הצפנה נוסף, אך צריך להיות ידוע גם למקבל הצופן כדי שיוכל לפענח את הטקסט המוצפן ולכן במידה שאינו קבוע מראש יש צורך לצרפו לטקסט מוצפן. למרות שוקטור האתחול בדרך כלל גלוי, לפעמים יש צורך להגן על שלמותו כך שיהיה מובטח לשני הצדדים שלא שונה על ידי יריב פוטנציאלי כחלק מהתקפה נגד המערכת.

מצבי הפעלה בסיסיים

להלן תיאור חמשת מצבי ההפעלה הבסיסיים ביותר: ECB, CBC, CFB, OFB ו-CTR. יש לציין שהמצבים הללו אינם מספקים הבטחת שלמות ואימות המסר כמו בקוד אימות מסרים, ולכן ייתכן שלא יתאימו לשימוש במקרים מסוימים.

תהי פונקציית הצפנה של צופן בלוקים כלשהו עם מפתח הצפנה סודי . הביטוי פירושו הצפנה של המסר באמצעות הפונקציה עם מפתח והפלט הוא . פענוח מסומן בקיצור . היות שהמסר בדרך כלל ארוך, מתייחסים אליו כאל מערך של בלוקים בגודל או סיביות בהתאם למצב ההפעלה, כאשר ומסומן: . בשני המצבים הראשונים (ECB ו-CBC) יש צורך לחלק את הטקסט הגלוי לבלוקים שלמים בגודל סיביות, לכן במקרה שאורך המסר בסיביות אינו מתחלק ב- סיביות, מרפדים את הבלוק האחרון בשיטה מוסכמת באופן שיהיה קל להסיר את הריפוד מבלי לדעת מראש כמה סיביות נוספו. השיטה נפוצה היא הוספת הסיבית "1" בסוף המסר ולאחר מכן אפסים לפי הצורך עד להשלמת בלוק שלם. לאחר הפענוח מסירים את כל האפסים מסוף המסר עד שנתקלים בסיבית "1" ומסירים גם אותה. בשלושת המצבים האחרונים צופן הבלוקים מיושם כצופן זרם במצב שמאפשר הצפנה של בלוקים חלקיים בכל אורך רצוי, לכן אין צורך בריפוד. כמו כן במצבים אילו (CFB ,OFB ו-CTR) אין צורך בפונקציית פענוח אלא פונקציית הצפנה בלבד המשמשת גם להצפנה וגם לפענוח. זאת כיוון שהצופן מיושם כצופן זרם, ההצפנה היא בעצם XOR עם מפתח שהורחב כאורך המסר לכן הפענוח מתבצע באמצעות פונקציית ההצפנה בלבד ו-XOR שהוא הופכי של עצמו.

מצב ECB

במצב ECB מחלקים את המסר לבלוקים בגודל סיביות, מרפדים את הבלוק האחרון בשיטת ריפוד מוסכמת אם אורך המסר אינו מתחלק בדיוק ב- ומצפינים כל בלוק בנפרד כדלהלן:

הצפנה
עבור כל בלוק במסר , בצע:
.
פענוח
אופן הפענוח זהה לחלוטין כאשר פונקציית הפענוח היא , עבור כל בלוק כאשר בצע:
.

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

מצב זה נחשב לפחות בטוח אך יתרונו הוא שאין בו כשל מצטבר. כשל בקריאת או הצפנת סיבית אחת או יותר, עלול לקרות במקרה של ערוץ התקשורת לקוי או קובץ פגום. וכן מתאים להצפנה מקבילית, היות שאין תלות הדדית בין בלוקים.

תכונות ECB:

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

מצב CBC

מצב הפעלה Cipher-Block Chaining (שרשור בלוקים מוצפנים), משלב ווקטור אתחול IV באורך סיביות. במצב זה כל בלוק טקסט-קריא מחובר בחיבור בינארי המיוצג כאן על ידי עם תוצאת הצפנת הבלוק הקודם לפני הצפנתו. היות שהבלוקים תלויים אחד בשני מכאן השם. תיאור השיטה:

הצפנה
, עבור כל בלוק במסר כאשר בצע:
.
פענוח
עבור כל בלוק כאשר בצע:
. הפונקציה היא פונקציית הפענוח.

תכונות CBC:

  • שרשור; בהינתן בלוק טקסט-גלוי, מפתח הצפנה ווקטור אתחול זהים, יופק תמיד בלוק מוצפן זהה. לכן רצוי לשנות את וקטור האתחול, למשל על ידי מונה כך שבכל הצפנה הווקטור מקודם באחד (מצב שמדמה צופן זרם). או לשנות את המפתח.
  • תלות הדדית; מנגנון השרשור של CBC גורם לתלות של כל בלוק צופן בבלוק שלפניו. סידור מחדש של בלוקים עלול להשפיע ישירות על תוצאות הפענוח של אותם בלוקים ועל כן יתגלה.
  • כשל מצטבר. סיבית אחת או יותר שגויים בבלוק כלשהו, עשויים לגרום לתוצאות פענוח שגויות בבלוק הנוכחי ובבלוק הבא אחריו. יתרה מזו פענוח הבלוק הנוכחי יהיה אקראי (50% שגיאה) ובבלוק הבא אחריו תופיע השגיאה בדיוק באותן סיביות בהן ארעה בבלוק הקודם. לכן במחיר של איבוד בלוק אחד (הבלוק הראשון) היריב מסוגל לבצע שינויים זדוניים בסיביות מסוימות של הבלוק הבא אחריו מבלי שיתגלו.
  • התאוששות עצמית; שיטת CBC בעלת סנכרון עצמי, במובן שבמקרה שגיאה אפילו כגון אם בלוק שלם או יותר מתוך הצופן שגויים או נעדרים לגמרי, רק הבלוק הבא לאחריהם לא יפוענח כראוי, כל היתר לא יפגעו. אולם יש לשים לב שבמקרה של כשל בקריאה או חוסר של סיביות במספר שאינו גודל הבלוק עשוי לגרום לפריצת גבולות הבלוק ולכן התאוששות תהיה בלתי אפשרית בבלוקים הבאים.
  • מצב ההפעלה CBC אינו מתאים במקרה שדרושה גישה ישירה, כיוון ששגיאה בבלוק אחד בזמן הצפנה תגרור שגיאה בכל הבלוקים הבאים אחריו.
  • היות שכל בלוק תלוי בקודמו CBC אינו מתאים ליישום מקבילי. מאותה סיבה כאשר יש צורך לשנות רק חלק מהבלוקים צריך להצפין מחדש את כולם.

מצב CFB

מצב Cipher Feedback שימושי כאשר יש צורך להצפין ולשדר מיידית בלוקי צופן הקטנים מ- ללא תלות בבלוקים האחרים. השיטה משתמשת ברעיון אוגר זיזה המכיל פונקציה המשמשת להזנה חוזרת של בלוקי צופן והזזה של סיביות הבלוק כלפי מעלה, בכל שלב חלק מסוים מהאוגר משמש כבלוק הצופן הבא. השיטה מסומנת CFB-r כאשר מייצג את הכמות המינימלית של סיביות טקסט-קריא שהצופן מעבד ללא עיכוב. כדלהלן:

הצפנה
תחילה כאשר הנו אוגר זיזה.

עבור כל בלוק במסר בצע:

  1. יהי שווה הסיביות הנמוכות ביותר (הראשונות) של .
  2. (שדר סיביות צופן כבלוק .
  3. . (הזז את סיביות למעלה צעדים).
פענוח
תהליך הפענוח זהה:
  1. תחילה . לאחר מכן עבור כל בלוק מבצעים:
  2. ,

כאשר מחושבים בדיוק כמו בתהליך ההצפנה. במצב זה לא משתמשים בפונקציית פענוח.

תכונות CFB:

  • שרשור; כמו במצב CBC בהינתן בלוק טקסט-גלוי, מפתח הצפנה ווקטור אתחול זהים, יופק תמיד בלוק מוצפן זהה. לכן רצוי לשנות את וקטור האתחול.
  • תלות הדדית; כמו במצב CBC מנגנון השרשור גורם לכך שכל בלוק מוצפן תלוי בבלוק המסר המתאים וב- בלוקים מוצפנים קודמים. סידור מחדש של בלוקי צופן ישבש את הפענוח ולכן מתגלה מיד.
  • כשל מצטבר; סיבית אחת או יותר שגויים בבלוק מוצפן בגודל סיביות משבש את הפענוח הבלוק הנוכחי ו- הבלוקים הבאים. כלומר עד אשר סיביות צופן עובדו והבלוק השגוי הוזז לגמרי מתוך האוגר. יתרה מזו השגיאה תופיע בבלוק הנוכחי בדיוק בסיביות המקבילות בטקסט הגלוי וביתר הבלוקים באופן אקראי כך שבממוצע 50 אחוז יתקבל שגוי. התקפה אפשרית יכולה לנצל עובדה זו כדי לשנות סיביות ספציפיות מבלי שהשינוי יתגלה, אולם במחיר של שיבוש הבלוקים הבאים.
  • התאוששות עצמית; מצב CFB מכיל סנכרון עצמי חלקי. במקרה שגיאה פענוח יחזור להיות תקין לאחר בלוקי צופן משובשים.
  • הספק; במצב זה ההספק נמוך בהשוואה למצבים האחרים בפקטור של . במובן שכל הרצה של פונקציית ההצפנה, מניבה רק סיביות מוצפנות.
  • מצב CFB אינו יכול לשמש במקרה של צופן א-סימטרי כיוון שהשיטה מנצלת רק את פונקציית ההצפנה ופענוח נעשה באמצעות אותה פונקציה.

מצב OFB

מצב ההפעלה Output Feedback מדמה צופן זרם והוא שמיש במקרים בהם יש להימנע מכשל מצטבר לחלוטין. מצב זה דומה ל-CFB ומאפשר הצפנת בלוקים בכל גודל רצוי, אולם שונה בכך שפלט פונקציית ההצפנה עצמה משמש להזנה חוזרת, בשונה מהמצב הקודם שבו חלק מהטקסט המוצפן (לאחר XOR) משמש להזנה. תיאור המצב לפי תקן איזו 10116:

הצפנה
תחילה: , ועבור כל בלוק במסר בצע:
  1. . (חשב את המפתח הבא להצפנת הבלוק הבא).
  2. עבור כלשהו, , בצע: שווה הסיביות הראשונות של .
  3. (הצפן ושדר את הסיביות הנוכחיות).
  4. . (עדכן את הבלוק הבא).
פענוח
בדומה להצפנה,
  1. תחילה ועבור כל בלוק בצע:
  2. כאשר , , מחושבים בדיוק כמו בתהליך ההצפנה, ללא שימוש בפונקציית פענוח.

גרסה נוספת של OFB לפי תקן FIPS 81: גרסה זו זהה למצב הפעלה OFB המתואר למעט השורה האחרונה המוחלפת ב:

מצב זה מאפשר הזזה של סיביות ההזנה ימינה לסוף אוגר ההזזה כך שרק סיביות משמשות להזזה. כאשר ראה להלן ביטחון המצב הזה נמוך מהמצופה.

תכונות OFB :

  • שרשור; כמו במצבים הקודמים CBC ו-CFB וקטור האתחול אחראי לכך שבלוקי מסר זהים יוצפנו לבלוקי צופן שונים.
  • תלות הדדית; זרם המפתח עצמאי ואינו תלוי בטקסט הגלוי. משמעות הדבר שווקטור האתחול חייב להיות שונה, אם משתמשים באותו מפתח להצפנת טקסט אחר, אחרת כמו בפנקס חד-פעמי XOR של שני בלוקים מוצפנים עם מפתח זהה למעשה מסיר את המפתח ונשארים רק עם בלוקים של טקסט-גלוי כשהם מעורבב זה בזה.
  • כשל מצטבר; סיבית אחת או יותר שגויים בבלוק צופן נתון, ישפיעו אך ורק על אותם סיביות בבלוק הגלוי המתאים. כאשר סיביות אלו בבלוק המפוענח יהפכו למשלימים של סיביות המקוריות באותם המקומות.
  • התאוששות עצמית; מצב OFB מסוגל להתאושש ממצב של סיביות שגויות אך לא ממצב של חוסר סיביות. בשל כך, כשל בקריאת בלוק צופן אחד או יותר, משבש את התיאום בין הבלוקים לבין זרם המפתח ותוצאת הפענוח מנקודה זו ואילך תהיה שגויה.
  • הספק; אם הספק הפונקציה נמוך, בדיוק כמו ב-CFB. אולם מאחר שזרם המפתח אינו תלוי בבלוקי המסר או הצופן, ניתן לחשבו מראש (בהינתן וקטור אתחול כלשהו ומפתח K), מה שמאפשר ייעול תהליך ההצפנה.
  • אפשר לראות שבמצב OFB כאשר המפתח אקראי כך ש- הוא משתנה אקראי בטווח תמורות האפשריות, המחזוריות הצפויה של סיביות ההזנה לפני שהן חוזרות על עצמן היא . אולם במקרה שמספר סיביות ההזנה נמוך מ- (כמו במקרה של תקן FIPS 81) המחזוריות הצפויה תהיה לכן מומלץ להשתמש במלוא סיביות אוגר ההזזה.

מצב CTR

מצב מונה (Counter mode) בדומה למצב OFB משנה את התנהגות צופן הבלוקים לצופן זרם על ידי ייצור זרם מפתח מתוך המונה. בניגוד למצב OFB במצב זה מצפינים את המונה פעם אחר פעם, כאשר בכל שלב המונה משתנה ותוצאת כל הצפנה מהווה חלק מזרם המפתח איתו מצפינים את הבלוק הבא של המידע בחיבור XOR. בדרך זו אין מגבלה על גודל הבלוק וכן שינוי המונה יכול להתבצע בכל דרך נוחה כפונקציה כלשהי של המונה הקודם והוא אינו חייב להיות סודי, למשל: כמתואר בתרשים. לדוגמה:

עבור כל בלוק של המסר כאשר ו- הוא מונה המכיל ערך התחלתי כלשהו בדרך כלל וקטור אתחול הנקרא Nonce בהקשר זה. עם הפונקציה Increment שאחראית לעדכונו, בצע:

פענוח דומה. שים לב שמשתמשים בפונקציית ההצפנה בלבד כמו בצופן זרם, תחילה טוענים את הערך ההתחלתי של המונה ואז:

הפונקציה Increment יכולה להיות קידום המונה באחד או כל פונקציה אחרת, כל עוד מובטח שהמספר לא יחזור על עצמו בהצפנה של מסר נתון. אופן זה יעיל יותר ומספק רמת ביטחון טובה כ-OFB ובמיוחד התאוששות מהירה במקרה של כשל מכיוון ששיטה זו מאפשרת גישה אקראית, במילים אחרות אין צורך לחשב את הבלוק הקודם כדי לשחזר בלוק נוכחי. כמו כן מצב מונה נוח ליישום באופן מקבילי לשיפור ביצועים. זהו מצב יעיל ופופולרי מאוד כיום והומלץ על ידי מומחים רבים כמו נילס פרגוסון וברוס שנייר.

החיסרון של מצב מונה הוא ששינוי סיבית אחת של הצופן משפיע רק על הסיבית המקבילה בטקסט המקור. בתנאים מסוימים הדבר מאפשר התקפת הבחנה שבה התוקף מבצע Bit flipping (הפיכת סיביות) כדי להשיג מדע על הטקסט המוצפן.

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

מצב TBC

אם משתמשים בצופן בלוקים בר התאמה במקום בצופן בלוקים רגיל, אפשר לקבל מצבי הפעלה יעילים ובטוחים יותר מאילו המנויים, זאת משום שווקטור האתחול מובנה בתוך הצופן. הרעיון הוצע לראשונה על ידי מוזס ליסקוב, רונלד ריבסט ודייויד וגנר[1]. הם פיתחו את מצב ההפעלה Tweak Block Chaining המבוסס על CBC ומיישם צופן בלוקים בר התאמה, המקבל מלבד המסר ומפתח ההצפנה ערך נוסף ייחודי וחד פעמי (שאינו סודי) כך שתוצאת ההצפנה תלויה גם בו. ערך זה נקרא בהקשר של צופן בלוקים בר התאמה "tweak" והוא בעצם וקטור אתחול או Nonce.

מצב ההפעלה TBC פועל באופן הבא: ה-tweak הראשוני מתפקד כמו וקטור האתחול . הבלוק הראשון מוצפן עם מפתח ההצפנה הסודי ו-, כל בלוק הבא אחריו מוצפן באמצעות המפתח הסודי ו- כאשר , כלומר ה-tweak לבלוק הנוכחי הוא תוצאת ההצפנה של הבלוק הקודם.

מצבי הפעלה שמבוססים על צופן בלוקים בר התאמה פשוטים ובטוחים ולכן אטרקטיביים לצורך הצפנת דיסקים כיוון שלא קיימת כל התקורה של מצבי ההפעלה המתקדמים כמו EAX, OCB ודומיהם.

גניבת טקסט מוצפן

מבנה CBC-CS1. שים לב ש- אינו חלק מהטקסט המוצפן שנשלח למקבל. בפענוח הבלוק האחרון מתקבל: , משם המפענח נוטל את החלק החסר ומשלים את הבלוק הלפני אחרון ואז מפענחו עם היתר.

גניבת טקסט מוצפן (Ciphertext stealing) היא שיטה להצפנת מסר באורך שאינו מתחלק במספר הבלוקים שהצופן מקבל ללא צורך בריפוד המסר אך במחיר עליה קלה בסיבוכיות. השיטה יושמה בכמה מצבי הפעלה מתקדמים כמו XTS. במצבי ההפעלה ECB ו-CBC למשל יש צורך לרפד את המסר בדרך כלשהי כדי לקבל רצף של בלוקים שלמים, באופן שיהיה קל להסיר את הריפוד בזמן הפענוח. השיטה הנפוצה היא הוספת אחד בסוף המסר ואחריו אפסים במספר הנדרש עד לקבלת בלוק שלם. החיסרון בזה הוא שבעקבות הריפוד הטקסט המוצפן התרחב בהתאם למספר סיביות הריפוד. שיטת גניבת טקסט מוצפן מנסה להתגבר על הבעיה באופן הבא. אם הבלוק האחרון אינו שלם, פשוט מעבירים סיביות טקסט-מוצפן מהבלוק הקודם לבלוק האחרון לפי הצורך עד שמשלימים אותו לבלוק שלם, באופן זה מספר הסיביות הכולל של ההצפנה לא השתנה כלל. NIST פרסמו שלוש שיטות לגניבת טקסט-מוצפן בנספח לתקן SP800-38A[2] עבור מצב ההפעלה CBC. ההבדלים בין השיטות הם רק באופן סידור סיביות הטקסט המוצפן. להלן תיאור האלגוריתם המחולק לשלוש וריאציות CBC-CS1, CBC-CS2 והשלישית CBC-CS3 שהוצעה עבור קרברוס 5. הקלט הוא שהוא מחרוזת סיביות המסר להצפנה באורך כלשהו והפלט יהיה הטקסט המוצפן כאשר .

  1. יהי אורך הבלוק שהצופן מקבל (128 סיביות במקרה של AES). ויהי השלם הנמוך ביותר המקיים וכן . מחלקים את המסר לבלוקים כאשר כל הבלוקים למעט האחרון שלמים וכן כאשר . כלומר הבלוק האחרון עשוי להיות שלם או חלקי.
  2. מרפדים את הבלוק האחרון ב- אפסים כדי להשלימו לבלוק שלם . ייתכן שלא יהיה צורך בריפוד למשל אם .
  3. מצפינים את כל הבלוקים במצב ההפעלה CBC המתואר לעיל עם המפתח ווקטור האתחול כנדרש ומתקבלים הבלוקים של הטקסט המוצפן .
  4. חותכים את הבלוק כלומר . הפונקציה MSB מציינת שנוטלים את הסיביות החשובות ביותר בבלוק ואת יתר מוחקים.
  5. התוצאה הסופית משתנה בהתאם לגרסה:
    1. בשיטת CBC-CS1: מסדרים את הבלוקים המוצפנים כך: (הכוכבית מציינת שייתכן שהבלוק אינו שלם).
    2. בשיטת CBC-CS2: סידור הבלוקים תלוי. אם מחזירים . אם שני הבלוקים האחרונים מחליפים מקומות: .
    3. בשיטת CBC-CS3: ההחלפה בין שני הבלוקים האחרונים מתבצעת תמיד: .

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

הצפנה מאומתת

ערך מורחב – הצפנה מאומתת

מצבי ההפעלה נחקרו בעבר רק מהיבט של הבטחת סודיות ויכולת התאוששות במקרה של שגיאות שידור. מצבי הפעלה המשלבים סודיות עם הגנה על שלמות ואותנטיות המידע כיעד נוסף, נקראים הצפנה מאומתת. קיימים מצבי הפעלה רבים כאלה, בהם אפשר למנות את: XCBC, IACBC, IAPM, OCB, EAX, CWC mode, CCM ו-GCM. במצבים אילו לעיתים ההצפנה והאימות מושגים בריצה אחת או בשתי ריצות. כמו כן בין השיטות (למשל EAX) כאלו המספקות הגנה על שלמות המידע המוצפן כמו גם על שלמות מידע גלוי נלווה. הקבוצה הזו מסומנת בקיצור AEAD.

ארגון NIST מנהל רשימה של מצבי הפעלה בטוחים שהוצעו לצורך בחינה ותיקנון[3] המחולקים לשלוש קטגוריות עיקריות: מצבי הצפנה שהם מצבי הפעלה המספקים סודיות בלבד, מצבי אימות הנקראים גם קוד אימות מסרים שמספקים אימות בלבד (במקרים בהם רצוי שהטקסט המאומת יישאר גלוי) ומצבי הצפנה מאומתת המשלבים יחד אימות והצפנה.

ראו גם

הערות שוליים

This article is issued from Hamichlol. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.