אורך מפתח ההצפנה משפיע ישירות על סיבוכיות כל התקפה גנרית נגד אלגוריתם הצפנה, בהנחה שלא קיימת דרך מתוחכמת לשבירת האלגוריתם. באופן כללי כמעט כל אלגוריתם הצפנה ניתן לשבירה פשוט על ידי ניסוי כל המפתחות האפשריים עד שמוצאים את המפתח הנכון, שיטה זו נקראת כוח גס. מהיבט תאורטי ככל שמפתח ההצפנה גדול יותר סיבוכיות התקפת כוח גס עולה באופן מעריכי, אך בד בבד נפגעת יעילות האלגוריתם כי נדרש זמן ארוך יותר לביצוע ההצפנה. על כן חשוב למצוא את האיזון המושלם בין יעילות לבין ביטחון במונחים של אורך המפתח. לשאלה מה אורך המפתחות המומלץ אין תשובה חד משמעית כיוון שהדבר תלוי בגורמים רבים, ביניהם; בסיס תאורטי, פריצות דרך מתמטיות, איכות יישום האלגוריתם, יכולת טכנולוגית נוכחית או עוצמת המחשוב של היריב או האויב וכדומה. ככלל, נכון לשנת 2017 השאיפה היא להגיע לרמת ביטחון מינימלית של formula_25, כלומר שיכולת היריב לשבור את המערכת עם מיטב האלגוריתמים הקיימים תהיה בסיבוכיות של formula_25 פעולות בסיסיות בקרוב, או לחלופין, סיכוייו לשבור את האלגוריתם הם בהסתברות של formula_27. שזה נחשב בעיני רבים למרווח ביטחון מספק מהיבט מעשי בהתאם ליכולת הטכנולוגית הנוכחית. במקרה של הצפנת מפתח ציבורי כיוון שקיימים אלגוריתמים הטובים בהרבה מכוח גס הדברים שונים. עד שנת 2003 בערך, מקובל היה להשתמש במספרים באורך 1024 סיביות. מעבדות RSA פרסמו ב-2003 הצהרה לפיה מפתח אסימטרי בגודל 1024 סיביות מספק רמת הגנה מקבילה למפתח סימטרי בגודל 80 סיביות. 2048 סיביות מקבילות לאלגוריתם סימטרי עם מפתח 112 סיביות ו-3072 מקביל ל-128. המלצה שלהם להשתמש במפתח 2048 סיביות לשימוש רגיל ו-3072 סיביות לשימוש מיוחד במקרים קיצוניים, זאת עד לשנת 2030. ארגון התקינה האמריקאי נוקט בגישה מחמירה יותר, לפי תקן נכון ליולי 2012 מפתח אסימטרי בגודל 3072 סיביות מקביל למפתח סימטרי בגודל 128 סיביות (מהסוג הנפוץ כיום באלגוריתם AES) ואילו לרמת בטיחות גבוהה, מפתח בגודל 15,360 סיביות יתאים ברמתו למפתח סימטרי בגודל 256 סיביות.
הדברים אמורים לגבי כל סוגי ההצפנה האסימטרית כולל חתימה דיגיטלית כגון DSA המבוססת על בעיית הלוגריתם הבדיד, זאת בשל ההערכה כי בעיית לוגריתם בדיד דומה בקושיה לבעיית פירוק לגורמים. יוצא מן הכלל הוא מערכת ההצפנה בעקום אליפטי (ECC). תקן שנכלל ב-Suite B של NSA, ממליץ על מפתח בגודל 256–384 סיביות שמקביל ברמתו למפתח סימטרי 128 סיביות, להצפנת מסמכים עבור הממשל האמריקאי ברמה של SECRET. לרמה של TOP SECRET ממליץ על 512 סיביות ומעלה. באופן כללי ההנחיה של NIST היא שמפתח ECC יהיה בערך כפול בגודלו ממפתח סימטרי. הערכה זו מניחה כי לא ידועה פריצת דרך משמעותית לפתרון הבעיה המתמטית עליה מבוססת ECC זאת כיוון שהאלגוריתמים הידועים אינם ישימים במערכת כזו.
פרימיטיבים קריפטוגרפיים.
פרימיטיב קריפטוגרפי הוא הגדרה לאלגוריתם קריפטוגרפי שייעודו ספציפי למטרה או יעד מוגדר. אלגוריתם AES הוא פרימיטיב קריפטוגרפי שתפקידו להצפין מידע בשיטה סימטרית. פרימיטיבים אחרים הם RSA, פונקציית גיבוב SHA-1 וכן DSA. מהות הרעיון הוא שבהקמת מערכת אבטחת מידע שלמה, אין די באלגוריתם אחד דהיינו בפרימיטיב קריפטוגרפי אחד, אלא משלבים מספר אלגוריתמים שלכל אחד מהם תפקיד אחר. יחדיו הם משלימים זה את זה למערכת שלמה. על כן נודעת חשיבות רבה לבדיקת המאפיינים והיחסים שבין הפרימיטיבים השונים, על מנת לוודא כי השילוב ביניהם בטוח ואינו מכיל פרצות. לעיתים אי-הבנה באשר למהות פרימיטיב מסוים והניסיון לשלבו במערכת או להשתמש בו באופן שלא יועד לו, עשוי לפגוע בבטיחות המערכת כולה. לדוגמה פונקציית גיבוב טובה ליצירת ערכים ייחודיים, אולם אינה טובה כשלעצמה לצורך הצפנה. יתרונה הברור בא לידי ביטוי במערכת הצפנה דוגמת PGP בה יש צורך בערך חד-כיווני של המידע המשמש תווית לצורך החתימה על המסר באמצעות חתימה דיגיטלית.
פרוטוקולים ומנגנונים קריפטוגרפיים.
מערכת הצפנה שלמה היא מערכת קריפטוגרפית המשלבת מספר פרימיטיבים קריפטוגרפיים, המספקים כל אחד מהם תכונות יסודיות הקשורות באבטחת מידע כמו סודיות, אימות או הבטחת שלמות, יחד הם משלימים זה את זה למערכת שלמה שלה מספר יעד אבטחה מוגדר בהתאם לסביבה בה היא פועלת מחד ודרישות הלקוח מאידך. לעיתים מתייחסים בטעות לאלגוריתם כמערכת הצפנה אף על פי שאינו כזה. למשל RSA נקרא לפעמים מערכת הצפנה אף על פי שאסור להשתמש בו לבדו להצפנה כי ההצפנה לא תהיה בטחה כלל במקרה כזה. פרימיטיבם קריפטוגרפיים מיועדים לתת מענה ספציפי, במקרה זה יכולת א-סימטרית שטובה במיוחד להעברת מפתח הצפנה ומספקת ביטחון סמנטי נגד התקפת מוצפן-נבחר במסגרת מודל ביטחון כלשהו כמו מודל אורקל אקראי.
לפעמים המערכת אמורה לספק ביטחון לאורך זמן של שירותי גיבוי ואחסון מידע ולפעמים המערכת כוללת התקשרות דו כיוונית בין שרת ולקוח או בין מספר משתתפים במקרה זה היא תקרא פרוטוקול קריפטוגרפי. דוגמאות למערכת הצפנה הן RSA, אל-גמאל או חלוקת סוד ואפס ידיעה וכדומה. דוגמאות לפרוטוקול קריפטוגרפי הן: SSL, PGP, קרברוס, ארנק אלקטרוני ו-GSM.
ביטחון מערכת קריפטוגרפית או פרוטוקול קריפטוגרפי תלוי במאפייני הביטחון של הפרימיטיבים המרכיבים אותו. אך אין בזה הוכחה שהמערכת חזקה כמו סך כל המרכיבים אותה. בעבר מאפייני הביטחון של מערכת הצפנה נבדקו באופן אמפירי באמצעות שיטות אד הוק וללא בסיס תאורטי מוצק. כיום נעשים מאמצים לפתח טכניקות פורמליות לניתוח והערכת ביטחון של מערכת או פרוטוקול קריפטוגרפיים. גישה זו נקראת ביטחון מוכח, כלומר מנסים להוכיח שהמערכת בטוחה תחת מודל תאורטי כלשהו כמו מודל סיבוכיות חישובית או מודל אורקל אקראי.
קריפטוגרפיה ותורת הקוונטים.
במהלך המאה ה-20 החל להתפתח בקצב מהיר ענף החישוביות הקוונטית, שעלולות להיות לו השלכות קריטיות על הקריפטוגרפיה המודרנית. אם ניתן יהיה לבנות מחשב קוונטי בעל יכולת גידול (סקאלבילי), אזי למעשה מרבית האלגוריתמים האסימטריים כגון RSA ודומיו יצאו מכלל שימוש. יהיה צורך בשדרוג מקיף של כל מערכות ההצפנה. זאת בשל קיומם של אלגוריתמים קוונטיים שמאפשרים פיצוח צפנים אילו בזמן פולינומי, לאור היכולת לבצע חישובים בצורה מהירה יותר מאשר במחשב "רגיל".
הרעיון שבבסיס החישוביות הקוונטית הועלה לראשונה על ידי הפיזיקאי ריצ'רד פיינמן, שמסתמך על עקרון השזירה הקוונטית: אם מספר גדול מאוד של קיוביטים שזורים זה בזה, אזי חישובים על ביטים אלו מקבילים לביצוע חישובים רבים בו זמנית. רעיון זה קרם עור וגידים כאשר פותחו מספר אלגוריתמים קוונטיים שדורשים זמן ריצה קטן יותר מאשר מקבילם הקלסי.
שני האלגוריתמים הבולטים בנושא זה הם אלגוריתם שור לפירוק לגורמים של מספר שלם שעל מחשב קוונטי מתבצע בזמן פולינומי ולא מעריכי, ואלגוריתם גרובר לחיפוש במערך לא ממוין, המתבצע בסיבוכיות זמן שהיא שורש ריבועי של הזמן הנדרש בחישוב קלאסי. אלגוריתם שור פירושו שאם אכן ייבנה מחשב קוונטי אזי ביכולתו לפרוץ מערכות הצפנה פומביות (בהן הסוד הוא פירוק לגורמים של מספר גדול). משמעות אלגוריתם גרובר היא שניתן לקצר באופן משמעותי את זמן מציאת המפתח בשיטת כוח גס.
מכאן החל העיסוק בניסיון למצוא פרימיטיבים קריפטוגרפיים שנקראים פוסט קוונטיים כלומר שיהיו עמידים גם בפני מערכות חישוב קוונטיות, דוגמת הצפנה מבוססת סריג.
טרם נמצאה דרך מעשית לבניית מחשבים בעלי מספר רב מאוד של ביטים קוונטיים (מחשבים סקאלאבילים), ולכן שימוש במחשבים קוונטים לפריצת מערכות הצפנה מודרניות הוא בגדר בלתי אפשרי בטכנולוגיה הקוונטית הנוכחית.
הצפנה קוונטית.
על פי תורת הקוונטים, ובפרט על פי עקרון אי הוודאות של הייזנברג, לא ניתן לבצע 'מדידה' מבלי להשפיע על המצב של האובייקט הנמדד. המשמעות של עקרון זה היא שאדם המאזין לשיחה, בהכרח משפיע עליה, ומכאן שניתן לזהות את ההאזנה.
בעקרון זה נעשה שימוש להעברת מידע בצורה לגמרי מאובטחת - המזהה כל ניסיון להאזין למידע.
בשנת 1984 פותח פרוטוקול ראשון המיישם עקרון זה על-מנת לבצע החלפת מפתחות קוונטית (QKD) באופן בטוח, ולאחריו פותחו מספר פרוטוקולים נוספים אשר עושים שימוש בשיטות שונות, דוגמת שימוש במצבי EPR. ניתן לראות בפרוטוקולים אלו את המקביל הקוונטי של פרוטוקול דיפי-הלמן. בפרוטוקולים אלו הסודיות המתקבלת היא "מושלמת" במובן תורת האינפורמציה. כל ניסיון של גורם זר להתערב בפרוטוקול מסתיים בגילויה של התקיפה. אם לא נתגלתה תקיפה, מוכח כי כמות האינפורמציה שזלגה אל גורם שלישי היא זניחה.
חוקיות וזכויות שימוש.