מפתח (קריפטוגרפיה)



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

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

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

===עקרון קרקהופס===

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

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

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

==אורך מפתחות הצפנה==

למעט פנקס חד-פעמי, ממציא אלגוריתם הצפנה קובע את אורך המפתח בהתאם למספר פרמטרים חשובים, כמו הערכת היכולת הטכנולוגית הנוכחית, תנאי השימוש באלגוריתם ומגבלות כלשהן אם ישנן. מצד אחד השאיפה היא שהמפתח יהיה קצר ככל האפשר כדי שהאלגוריתם יהיה יעיל ומצד שני השאיפה היא שהאלגוריתם יהיה בטוח ביותר לשימוש. אילו אינטרסים מנוגדים לחלוטין והפתרון הוא תמיד היכן שהוא באמצע. מפתחי האלגוריתמים קריפטוגרפיים נאלצים לא פעם להתפשר מעט בביטחון האלגוריתם לטובת יעילותו. מקובל למדוד אורך מפתח הצפנה בסיביות. מפתח קצר מספק ביטחון חלש, לעומת זאת מפתח ארוך אינו בהכרח מעיד על ביטחון גבוה. אורך המפתח למעשה קובע את מרחב המפתח או מספר האפשרויות לבחירת מפתח. אם מפתח הוא באורך <math>n</math> סיביות המשמעות היא שטווח המפתח הוא <math>2^n</math> סיביות. ניחוש מפתח הצפנה מעל 40 סיביות (כחמש תווים) אינו בר ביצוע לבן אנוש, אך קל לביצוע במחשב. מחשבים מצטיינים בכוח גס, ניסוי כל האפשרויות עד למציאת הניחוש הנכון. מבחינה סטטיסטית, נדרשים בממוצע <math>2^{n-1}</math> ניסיונות לניחוש מפתח באורך <math>n</math> סיביות. אם מחשב מסוגל לבדוק כמיליארד מפתחות בשנייה ייקח לו 18 דקות בקירוב לנחש מפתח באורך 40 סיביות. בשנת 1999 פותח מחשב ייעודי הנקרא Deep Crack שהיה מסוגל לבדוק מעל 90 מיליארד מפתחות בשנייה ולקח לו 4.5 ימים לנחש מפתח של DES (באורך 56 סיביות). כדי להעריך מהו האורך המומלץ של מפתח הצפנה יש להתייחס לשני סוגי אלגוריתמים.
*הצפנה סימטרית. בהצפנה סימטרית שבה קיים רק מפתח סודי יחיד המשותף לכמה משתמשים, בהנחה שלא קיים קיצור דרך או טריק מתמטי כדי לפרוץ את אלגוריתם ההצפנה, ביטחונו מסתמך אך ורק על אורך המפתח והוא מעריכי. ככל שהמפתח ארוך יותר כך הניסיון לנחשו בכוח גס קשה פי כמה וכמה. רק להמחשה, עם מפתח באורך 16 סיביות יש בסך הכול 65,536 אפשרויות מתוכם אפשר לבחור. אפילו אם נבחר מפתח באופן אקראי לגמרי, בדיקה של כששים וחמש אלף מפתחות בזה אחר זה במחשב שולחני רגיל אורכת לא יותר ממספר דקות. אולם אם נכפיל את אורך המפתח פי שניים מספר האפשרויות שמתקבל הוא <math>2^{32}=4,294,967,296</math>. מצד אחד הכפלנו את המאמץ בשלב ההצפנה רק פי שניים, אולם המאמץ לניחוש המפתח גדל מאוד כי כעת יש לבדוק כארבעה מיליארד מפתחות בממוצע כדי למצוא את המפתח הנכון. אפילו מחשב על יזדקק לכמה שעות כדי לבצע ארבעה מיליארד הצפנות ניסיוניות. כעת ננסה לדמיין כמה זמן ייקח לנחש מפתח באורך 64 סיביות או יותר. בגלל פרדוקס יום ההולדת, עם אלגוריתם לאיזון זמן זיכרון אפשר לנחש מפתח בכוח גס בפקטור שהוא חצי מאורכו בסיביות. במילים אחרות מפתח הצפנה באורך 64 סיביות ניתן לניחוש בזמן כולל של <math>2^{32}</math> ניסיונות הצפנה עם כמות זיכרון של <math>2^{32}</math> בלוקים. לכן מפתח כזה נחשב בטכנולוגיה של ימינו כמפתח קצר מדי ואינו ראוי לשימוש. כיום התקן הבינלאומי מגדיר אורך מפתח הצפנה סימטרי 128 סיביות לשימוש רגיל ואילו למקרים קיצוניים 256 סיביות.
*הצפנה אסימטרית. בהצפנת מפתח ציבורי, הדברים שונים לגמרי. היות שהצפנה זו מסתמכת על השערות בתורת המספרים כמו בעיית פירוק לגורמים או בעיית הלוגריתם הבדיד וכן מתחומים מתמטיים אחרים, לכן קיים בפוטנציאל מגוון טריקים וקיצורי דרך מתמטיים רבים לפתרון הבעיות הללו בזמן כמעט פולינומי. מסיבה זו אורך המפתחות צריך להיות גדול בהרבה. לשם המחשה, הצפנת RSA מסתמכת על הקושי שבפירוק לגורמים של מספר שלם. נכון להיום לאחר מאמץ ניכר הצליחו חוקרים לפרק לגורמים מספר באורך 768 סיביות אך לא יותר מזה, כך שמספר באורך כזה אינו ראוי לשימוש. לפי הערכות, בהתאם ליכולת הטכנולוגית הנוכחית ארגונים רבי עוצמה כמו NSA מסוגלים לרכז מספיק משאבים על מנת לפרק לגורמים מספר באורך 1024 סיביות, כך שלהערכת רבים מספר זה הוא בגדר בר השגה מסיבה זו נכון להיום התקנים הבינלאומיים ממליצים לעבור למפתחות באורך 2048 סיביות ומעלה. נכון ל-2016 עד לשנת 2030 תקן NIST ממליץ להשתמש במפתח ציבורי באורך 3072 סיביות כדי לקבל רמת ביטחון המקבילה למפתח סימטרי 128 סיביות ואילו עבור רמת ביטחון המקבילה למפתח סימטרי באורך 256 סיביות 15,360 סיביות (1920 בתים). הצפנה אסימטרית המבוססת על עקום אליפטי, אינה סובלת מבעיה זו כי היא אינה מסתמכת על פירוק לגורמים ולא ידוע על אלגוריתם יעיל לפתרון בעיית הלוגריתם הבדיד בעקום אליפטי, לכן מסיבה זו עקום אליפטי יהיה בטוח לשימוש עם מפתח באורך 256 עד 512 סיביות בהתאמה. כל זה בהנחה שמחשב קוונטי סקלבילי גנרי עדיין אינו בנמצא, כי עם מחשב קוונטי הצפנת RSA ודומיה לא תהיינה יותר בטוחות לשימוש. אין דרך לדעת מתי מחשבים קוונטיים יהיו מעשיים, ההערכות מדברות על לפחות עשר שנים (אך הערכות דומות ניתנו בעבר כך שנדמה כאילו מחשוב קוונטי תמיד יהיה עשר שנים מאתנו).

==ראו גם==
*מפתח שיחה
*בעיית הפצת מפתחות
*פרוטוקול שיתוף מפתח

==קישורים חיצוניים==
* 

==הערות שוליים==

קטגוריה:קריפטוגרפיה
קטגוריה:הצפנה