מה זה HPKP?

HPKP היא כותרת תגובת אבטחת אינטרנט שהוצאה משימוש, ראשי התיבות מייצגים HTTP Public Key Pins. זה נועד למנוע מרשות אישורים שנפגעה או נוכלת להנפיק אישור HTTPS מהימן ציבורי, אך נשלט על ידי האקרים, עבור אתר אינטרנט. בתרחיש זה, ההאקרים יוכלו לפענח כל תעבורת HTTPS שיירטו לאתר המושפע.

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

תשתית אישורי HTTPS

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

טיפ: ל-CA יכולים להיות גם תעודות ביניים חתומות על ידי אישור הבסיס. ניתן להשתמש בתעודות ביניים אלה גם כדי לחתום על אישורי HTTPS עבור אתרי אינטרנט.

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

מה HPP עשה?

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

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

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

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

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

מבנה HPP

לכותרת HPKP יש שלושה חלקים חובה ושניים אופציונליים. הכותרת חייבת להיות בשם "Public-Key-Pins", שני האישורים הבאים או יותר צריכים להיות עם hash SHA256 מקודד ב-base64 בפורמט 'pin-sha256="".”’. החלק החובה האחרון הוא ה-"max-age", שהוא ספירה בשניות למשך הזמן שהדפדפן צריך להחיל את ההגבלות.

טיפ: SHA256 הוא אלגוריתם הגיבוב המשמש את HPKP. Base64 הוא ערכת תווים עם 64 תווים: 0-9, a-z, A-Z, והתווים המיוחדים "+" ו-"/". ה-"=" משמש כדי לרפד עד שני התווים האחרונים במידת הצורך.

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

יש גרסה שנייה של הכותרת שכותרתה "Public-Key-Pins-Report-Only". הכל זהה, עם זאת, אם נמצאה שגיאה לא ננקטת פעולה מעבר להחזרת הודעת שגיאה לדפדפן ול-"report-uri" אם הוגדרה כזו. הגרסה היחידה של הדוח תוכננה כדי לאפשר בדיקה בקנה מידה מלא של הכותרת לפני הפריסה, שבה שגיאות לא יגרמו לבעיות למשתמשים.

בעיות ב-HPKP

HPKP הוצא משימוש משתי סיבות עיקריות. היו שתי דרכים שבהן הכותרת עלולה לגרום לבעיות רציניות באתר המשתמש בה, אלה נקראו HPKP Suicide ו-Ransom PKP.

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

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

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

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