הצפנה היא תהליך קריפטוגרפי של קידודמידע, שממיר את הייצוג המקורי של המידע, המכונה טקסט גלוי (באנגלית: plaintext), לצורה חלופית, המכונה טקסט מוצפן (באנגלית: ciphertext).[1] בדרך כלל, מערכות הצפנה משתמשות במפתח הצפנהפסאודו־אקראי שנוצר על ידי אלגוריתם. במצב אידיאלי, רק נמען שברשותו נמצא מפתח ההצפנה יכול לפענח את ההודעה המוצפנת.
היסטוריה
בעת העתיקה
אחת משיטות ההצפנה המוקדמות ביותר היא החלפת סמלים, שיטה שנצפתה לראשונה בקברו של חנומותפ השני, אצילמצרי שחי בשנת 1900 לפני הספירה.[2] ביוון העתיקהורומא העתיקה נעשה שימוש בשיטת הצפנה מוקדמת זו למטרות צבאיות.[2] אחד מהצפנים הצבאיים המפורסמים ביותר מהתקופה הוא צופן קיסר, צופן החלפה שבו כל אות בטקסט המקור מוחלפת באות המרוחקת ממנה במספר קבוע של מקומות בסדר האלפביתי, ונמען שיודע את מספר המקומות בו הוסטו האותיות יכול לפענח את ההודעה.[3]
צפני החלפה מופיעים גם בשפה העברית; דוגמאות לצפנים כאלה הן צופן אתב"ש וצופן אטב"ח, שבאו לידי ביטוי במספר מקומות במסורת היהודית.[4] בניגוד למרבית שיטות ההצפנה, אשר מטרתן העיקרית היא אבטחת מידע, צפני אתב"ש ואטב"ח ודומיהם שימשו על פי רוב ככלי בפירוש המקרא וכשיטת לימוד על פי רמזי האותיות, וכן כאקרוסטיכון בפיוטים.
בסביבות שנת 800 לספירה, המתמטיקאי הערבי אל־כנדי פיתח את טכניקת ניתוח התדירויות בניסיון לפתח שיטה לפיצוח צופן קיסר. טכניקה זו בחנה את תדירות הופעת האותיות בהודעה המוצפנת כדי לקבוע את מספר ההסטות.[3] בשנת 1465, הסופר האיטלקי ליאונה אלברטי פיתח את צופן אלברטי, שיטת הצפנה המבוססת על מכשיר הצפנה המורכב משני דיסקים משולבים שעל כל אחד מהם כתובים 24 תווים. צופן אלברטי היה אחד הצפנים הפוליאלפביתיים הראשונים, ולא היה ניתן לפצחו בשיטת ניתוח התדירויות.[5]
המאה ה־19–20
בסביבות שנת 1790, תומאס ג'פרסון פיתח צופן תאורטי שנועד לשימוש בהתכתבויות צבאיות, אך לעולם לא נבנה בפועל. הצופן, המכונה היום צופן הגלגל או דיסק ג'פרסון, תואר כסליל שניתן להשתמש בו בשביל להצפין הודעה באנגלית באורך עד 36 תווים, כך שאדם שנמצא ברשותו סליל תואם יכול לפענח את הטקסט המוצפן.[6]
מכשיר הצפנה זהה לדיסק ג'פרסון, ה־M-94, פותח בשנת 1917 באופן בלתי תלוי על ידי מייג'ור צבא ארצות הברית ג'וזף מאובורן. המכשיר שימש את צבא ארצות הברית לצורכי תקשורת עד שנת 1942.[7]
במלחמת העולם השנייה, מדינות הציר השתמשו בגרסה מתקדמת יותר של ה־M-94, הקרויה האניגמה. מכונת האניגמה הייתה יותר מורכבת, כיוון שבשונה מדיסק ג'פרסון וה־M-94, אופן גיבוב האותיות באניגמה הוחלף כל יום. הצירוף של היום הנוכחי היה ידוע רק למדינות הציר, ולכן, על מנת לפצח את הצופן בהתקפת כוח גס, היה על התוקפים לנסות מעל 1,000,000 צירופים אפשריים תוך 24 שעות.[8] בסופו של דבר פוצחה האניגמה על ידי צוות של מפצחים בריטים שבראשו עמד המתמטיקאי אלן טיורינג. שימוש במשאבי חישוב עוצמתיים לבדיקת מפתחות ההצפנה היה אחד הגורמים שתרמו לפיצוח האניגמה בסופו של דבר.
בעת המודרנית
כיום, הצפנה משמשת לאבטחת תקשורת באינטרנט, ובפרט לאבטחת מידע פרטי ומסחר אלקטרוני. באינטרנט, מידע רגיש כמו סיסמאות והתכתבות אישית עשוי להיחשף לגורמים חיצוניים. כדי להגן על מידע זה, אלגוריתמי הצפנה ממירים טקסט גלוי לטקסט מוצפן בלתי קריא, שמשמעותו נגישה רק לגורמים מורשים שיכולים לפענח את הנתונים חזרה לפורמט קריא.[1]
עמידות של הצפנה נמדדת, בין השאר, ברמת הקושי של החישוב שגורם חיצוני יצטרך לבצע כדי לפענח את הצופן אם אין ברשותו מפתח הצפנה מתאים. ככל שהכוח החישובי של מחשבים גדל, נוצר צורך בשיטות הצפנה חדשות, כיוון שפענוח של צפנים קיימים הופך לקל יותר, וכתוצאה מכך שיטות ההצפנה הללו מפסיקות להיות בטיחותיות.
מפתחות הצפנה
תהליך ההצפנה והפענוח של הודעות כולל שימוש במפתחות הצפנה. שני הסוגים העיקריים של מפתחות במערכות קריפטוגרפיות הם מפתח סימטרי ומפתח ציבורי, המכונה גם מפתח אסימטרי.[9]
אורכו של מפתח ההצפנה הוא מדד לחוזק שיטת ההצפנה: לדוגמה, מפתח ההצפנה המקורי, DES (Data Encryption Standard), הכיל 56 סיביות, ולכן היו מפתחות אפשריים בסך הכל. מאז פותחו מחשבים עם כוח חישוב מספיק כדי לפצח צופן עם מפתח בן 56 סיביות על ידי התקפת כוח גס, ולכן צופן זה אינו בטיחותי יותר. נכון לשנת 2020, תקן מפתחות ההצפנה המודרניים הוא עד 2048 ביט במערכת RSA, וכמות המפתחות האפשריים מבטיחה שהצופן כמעט בלתי ניתן לפיצוח על ידי מחשבים מודרניים. עם זאת, משוער שמחשב קוונטי יהיה מסוגל לפצח צופן מסוג זה.[10]
מפתח סימטרי
בשיטת המפתח הסימטרי (הקרוי גם מפתח פרטי או מפתח סודי), אותו מפתח משמש גם להצפנה וגם לפענוח, ולכן מפתח זה נמצא ברשות שני הצדדים שביניהם מתבצעת התקשורת. מכונת האניגמה השתמשה במפתח סימטרי חדש כל יום.
מפתח ציבורי
בהצפנת מפתח ציבורי נעשה שימוש במפתחות שונים להצפנה ולפענוח, כאשר מפתח ההצפנה מפורסם בפומבי כך שכל אחד יכול להשתמש בו להצפנת הודעות, אבל רק לנמען יש גישה למפתח הפענוח, המאפשר קריאת הודעות. הצפנת מפתח הציבורי תוארה לראשונה במסמך סודי בשנת 1973;[11][12] לפני כן, כל תוכניות ההצפנה השתמשו במפתח סימטרי. בשנת 1976, פרוטוקול דיפי־הלמן הוצג לראשונה במאמר בכתב עת עם קהל קוראים גדול.[13]
דוגמה נוספת למערכת הצפנה שמשתמשת במפתח ציבורי היא RSA. מערכת הצפנה זו נוצרה בשנת 1978, ונמצאת בשימוש גם כיום היום ביישומים הקשורים לחתימות דיגיטליות. אלגוריתם RSA מיישם עקרונות מתורת המספרים: האלגוריתם בוחר שני מספרים ראשוניים ויוצר את מפתחות ההצפנה והפענוח תוך כדי שימוש בחשבון מודולרי.[14]
בשנת 1991, תוכנת ההצפנה PGP, המשתמשת בהצפנת מפתח ציבורי, נכתבה והופצה לציבור ללא תשלום על ידי פיל צימרמן כחלק ממאבק נגד ניסיון חקיקה בארצות הברית שביקש למנוע שימוש בהצפנה חזקה בקרב הציבור. PGP נרכשה על ידי החברה סימנטק בשנת 2010 ומתעדכנת באופן שוטף.[15]
שימושים
הצפנה משמשת צבאותוממשלות לצורכי תקשורת חשאית, ובעידן המחשבים, שימוש בהצפנה לצורכי אבטחת מידע נפוץ גם במערכות אזרחיות רבות.
ניתן להשתמש בהצפנה להגנה על נתונים "במנוחה", כלומר, מידע המאוחסן במחשבים והתקני אחסון (למשל, על דיסק און קי).[16] הצפנת התקני אחסון נועדה למנוע חשיפה של מידע פרטי במקרה של אובדן או גניבת ההתקן. מערכות ניהול זכויות דיגיטלי, המונעות שימוש או העתקה בלתי מורשה של חומר המוגן בזכויות יוצרים ומגנות על תוכנה מפני הנדסה הפוכה, גם כן משתמשות בהצפנה להגנה על נתונים במנוחה.
שיטות מקובלות למחיקת נתונים לצמיתות ממכשיר אחסון כוללות דריסה של כל תוכן המכשיר על ידי אפסים, אחדות או תבניות בינאריות אחרות – תהליך שיכול לקחת זמן משמעותי, תלוי בקיבולת ובסוג אמצעי האחסון. בעזרת אמצעים קריפטוגרפיים, ניתן להפוך את המחיקה לכמעט מיידית: כאשר מידע השמור בהתקן אחסון מוצפן ומפתחות ההצפנה שמורים על אותו התקן, מספיק למחוק את מפתחות ההצפנה כדי להפוך את תוכן ההתקן לבלתי קריא.[18] עם זאת, כיוון שבשיטה זו מפתח הפענוח שמור בהתקן עצמו, השיטה לא מבטיחה הגנה מלאה במקרה שגורם בלתי מורשה מקבל גישה פיזית להתקן האחסון.
מחשבים קוונטיים
מחשב קוונטי משתמש בתכונות של מכניקת הקוונטים על מנת לעבד כמויות גדולות של נתונים בו זמנית, ומהירות החישוב שלו גדולה בהרבה מזו של מחשב רגיל.[19] נכון לשנת 2021, עוד לא קיים מימוש של מחשב קוונטי שיכול לבצע את כל הפעולות שמבצע מחשב רגיל, אבל, בהנחה שמחשב כזה אכן קיים, שיטות הצפנה רבות מאבדות מכוחן. לדוגמה, הצפנת RSA משתמשת במכפלת שני מספרים ראשוניים גדולים מאוד כדי לייצר את המפתח הציבורי שלה. פענוח מפתח זה ללא המפתח הפרטי שלו מצריך פירוק לגורמים של המכפלה, פעולה שיכולה לקחת זמן רב מאוד למחשבים מודרניים.
עם זאת, מחשב קוונטי יכול להשתמש באלגוריתמים קוונטיים כדי לפרק את המכפלה לגורמים באותו זמן שנדרש למחשבים רגילים כדי לייצר אותה, ולכן כל הנתונים המוצפנים בשיטת RSA פגיעים להתקפה של מחשב קוונטי. שיטות הצפנה נוספות, כמו הצפנה מבוססת עקום אליפטי והצפנת מפתח סימטרי, פגיעות גם הן להתקפה על ידי מחשב קוונטי.
בעוד שמחשב קוונטי עשוי להוות איום על אבטחת מידע בעתיד, המחשוב הקוונטי שקיים כיום עדיין מוגבל מאוד. נכון לשנת 2021, לא קיים מחשב קוונטי זמין מסחרית, והמחשבים הקוונטיים הקיימים הם מכשירי חישוב בסדר גודל קטן שאינם יכולים להתמודד עם כמויות גדולות של קוד.[20] עם זאת, נערך מחקר במטרה למצוא שיטות הצפנה בטוחות גם מפני התקפת מכשיר קוונטי.[21]
התקפות על מערכות הצפנה
רוב יישומי ההצפנה מגנים על מידע רק כאשר הוא נמצא במנוחה או בתנועה, בעוד מידע שנמצא בעיבוד, למשל על ידי שירות ענן, בדרך כלל אינו מוצפן ולכן חשוף לגורמים חיצוניים. טכניקות כמו הצפנה הומומורפית וחישוב רב משתתפים בטוח מאפשרות לבצע חישוב על נתונים מוצפנים מבלי לחשוף אותם להתקפות, אך כיוון שהן כרוכות בעלויות גבוהות מבחינת חישוב ותקשורת, טכניקות אלו פחות נפוצות משיטות הצפנה כמו RSA.[22]
עם זאת, קיימים גם סוגים רבים של התקפות על נתונים מוצפנים במנוחה. כמה דוגמאות להתקפות כאלו הן התקפות גניבת טקסט מוצפן,[23] התקפות על מפתחות הצפנה, התקפות פנים,[24] התקפות השחתת נתונים, התקפות השמדת נתונים ותוכנות כופר.[25]
במקרים מסוימים התוקף יכול להשיג מידע לא מוצפן בלי לפענח את הצופן ישירות, לדוגמה, באמצעות ניתוח תעבורה או התקפות כמו TEMPEST וסוס טרויאני.
אמיתות הטקסט המוצפן
בעוד הצפנה עוזרת להגן על סודיות ההודעה, במקרים מסוימים קיים צורך בשכבת הגנה נוספת שכוללת זיהוי של המשתמש ששולח את ההודעה. לשם כך נעשה שימוש בשיטות קריפטוגרפיות כמו קוד אימות מסרים, חתימה דיגיטלית והצפנה מאומתת, שמוודאות שההודעה המוצפנת מגיעה ממקור מהימן. מנגנוני ההגנה הללו מופעלים על הטקסט המוצפן כאשר הוא נוצר לראשונה, בדרך כלל על אותו התקן חומרה שיצר את ההודעה, כדי להגן על הודעה מקצה לקצה לאורך נתיב השידור המלא שלה.
הצפנת המפתח בעת יצירתו בהתקן בטיחותית רק אם למכשיר ההצפנה עצמו יש מפתחות הצפנה נכונים ולא חיבלו בו. אם התקן הוגדר לסמוך על תעודת שורש שתוקף שולט בה, למשל, אז התוקף יכול לקבל גישה לנתונים מוצפנים על ידי ההתקן באמצעות ביצוע התקפת אדם בתווך. יירוטTLS על ידי מפעילי רשת הוא צורה מבוקרת ומוסמכת של התקפה כזו.[26]
אורך הטקסט המוצפן וריפוד
גם כאשר תוכן של הודעה מוצפן, אורך ההודעה הוא סוג של מטא־דאטא שממנו ניתן להסיק מידע על ההודעה. לדוגמה, ההתקפות CRIME ו־BREACH נגד פרוטוקול HTTPS היו התקפות ערוץ צדדי שהתבססו על דליפות מידע שנובעות מאורך ההודעה המוצפנת.[27] טכניקות ניתוח תעבורה משתמשות לעיתים קרובות באורכי הודעות כדי להסיק מידע על הנתונים הזורמים במערכת.
ריפוד ההודעה לפני הצפנתה יכול לעזור להסתיר את אורכו האמיתי של הטקסט, אם כי פעולה זו מגדילה גם את אורך הטקסט המוצפן וגורמת לתקורה הקשורה לרוחב הפס. ניתן לרפד הודעה באופן אקראי או דטרמיניסטי. הודעה מרופדת ומוצפנת היטב לא נבדלת ממחרוזת ביטים אקראית באותו האורך, וכמות המידע על המחרוזת המקורית שדולף דרך אורך המחרוזת מוערכת אסימפטוטית כ־.[28]
M. K. Shukla, A. K. Dubey, D. Upadhyay and B. Novikov, "Group Key Management in Cloud for Shared Media Sanitization," 2020 Sixth International Conference on Parallel, Distributed and Grid Computing (PDGC), 2020, pp. 117-120, doi: 10.1109/PDGC50313.2020.9315325.