FedRAMP & FIPS מבוא למתחילים

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

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

הסיפור שלי עם FedRAMP מתחיל עם הגעתי לסייברארק לצוות של ארכיטקטים ב-Technology office והפגישה הראשונה שלי עם ארכיטקט מנוסה ומוכשר בשם גיל עדה. כיוון שאנחנו פלוס מינוס באותו גיל ועם ילדים באותו גיל ישר התחברנו והוא סיפר לי על הפרויקט שהוא מוביל וקשור ל-FedRAMP. זה היה אחד הדברים המעניינים שלא הכרתי, כיוון שבאתי מעולם ה-B2C ופחות מעולם ה-B2B שמוכר ישירות לממשלה הפדרלית האמריקאית. כמובן שישר התחלתי להציק לו שחייבים להפיץ את הבשורה ולשמחתי הוא פרסם פוסט טכני על FIPS עם Go. בעקבות הפוסט קיבלנו מבול של שאלות והחלטתי לכתוב את פוסט האינטרו, שאותו אתם קוראים כעת ולשמחתי בועז לביא מ״עושים תוכנה״ הרים את הכפפה וארגן לנו הקלטה של פרק מיוחד בפודקאסט על FedRAMP & FIPS. אני ממליץ להאזין לפרק ואחרי זה לחזור לפוסט. יצא באמת פרק מהמם.😇

הפרק בעושים תוכנה – זמין גם בפלטפורמות אחרות

כשאנו שומעים בדרך כלל על סטנדרט ותקינה, בתור ישראלים, העיניים שלנו נוטות להתגלגל. גם כמתכנתים לא יוצא לנו לעבוד המון עם סטנדרטים -מן הסתם אנחנו מכירים את הסטנדרט של ECMAScript או את זה של WCAG (תקן הנגישות). אבל בדרך כלל עולם הווב הוא עולם של חרבו-דרבו. מה שהולך הולך ומה שיוצא אני מרוצה. אבל במדינות מתוקנות, ובטח כמו מדינה כמו ארצות הברית – התקן הוא תקן מחייב. לא נעמוד בו? אין עסקים. חברות גדולות? חברות שרוצות להיות גדולות? כדאי להטמיע FedRAMP ו-FIPS מהיום הראשון וכן, כל מתכנת כדאי שיכיר ולו גם באופן שטחי. כי גם אם אתם עובדים מהיום הראשון עם FIPS במחשבה – אז זה יותר קל.

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

FedRAMP – רקע

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

כמה דוגמאות להמחשה:

1. האמריקאים האשימו את הסינים על גניבת מידע של מיליונים של עובדי המדינה מתוך מאגרי הממשל

2. הבריטים האשימו את ה GRU גוף הריגול הרוסי בתקיפה של חברות רוסיות אוקראיניות, המפלגה הדמוקרטית, רשת טלוויזיה ובנוסף חברה קטנה לאנרגיה אטומית בארה״ב (ווסטינגהאוס)

3. יותר מ 30,000 חברות אמריקאיות וגופים ממשלתיים נפגעו מתקיפת שרתי הדואר של מיקרוסופט. הרוסים לכאורהֿ, הצליחו לגשת להודעות הדואל של  אותן גופים ולאסוף מודיעין.

ובאמת לא חסרות דוגמאות נוספות.

אחרי שהבינו שהאקינג הפך להיות כלי לחימה מדינתי, ממשלת ארה״ב הקימה בשנת 2011 תוכנית ממשלתית הנקראת בשם FEDRAMP – ראשי תבות של  Federal Risk and Authorization Management Program . בינואר 2023 הפכה ההסמכה לחוק מחייב בחתימת נשיא ארצות הברית.

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

במסגרת FedRAMP יש רשימה של 421 בקרות לשיפור אבטחת המידע לשירות שאנו מקימים והתוכנה שלנו.  והרבה מעקרונות אלו רלוונטים לכל אחד שיוצר תוכנה בטוחה, ולקיים תהליך פיתוח מוצלח. למשל – שכל פול ריקווסט יהיה קשור לטיקט במערכת הטיקטים שלנו, שיהיה מאשר לכל פול ריקווסט, שיהיה פיירוול נפרד לכל סביבה, שיהיה לוג לפעילות. רוב הדברים האלו הם לא בשמים (הנה קישור למשל לצ׳קליסט לדוגמה) ואפשר לממש אותם ממש מיום אפס.

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

מה זה FIPS

מדובר בראשי תבות:  Federal Information Processing Standards. ראשי התבות קצת מפחידים וגם הפירוש לא אומר הרבה. מדובר בסטנדרט בטיחות מידע, זה סטנדרט טכני – כלומר המתכנתים אמורים לשלב אותו במוצר שלהם. לא תעמדו בתקן? לא תוכלו למכור לממשל הפדרלי ולקבלנים העובדים עבורו וזה שוק עצום. ולצערי רבים לא מכירים את זה בישראל.

כשאנו מדברים על FIPS יש לנו כמה סוגי תקנים עם כמה רמות. כשאני מכיר את 140.

זה תקן קריפטוגרפי – זאת אומרת שכל האלגוריתמים הקריפטוגרפיים שלנו אמורים להיות מאושרים על ידי ה-NIST. זהירות! עוד ראשי תבות, אבל רגע רגע רגע – לא להבהל. מדובר בראשי תבות של מוסד חשוב שנקרא National Institute of Standards and Technology והוא המוסד המגדיר תקינה קריפטוגרפית. כאשר רק אלגוריתמים שהוא מאשר להצפנה נחשבים כעומדים בתקן. 

השתמשתם באלגוריתם MD5, RC2, RC4   – לא תעמדו בתקן. השתמשתם באלגוריתם סימטרי AES עם מפתח הקטן מ 128 ביטים – נפסלתם. RSA שבשימוש נפוץ בתקשורת של TLS , מפתח הקטן מ 2048  – נפסלתם. 

ולא רק אלגוריתמים אלא ספריות

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

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

ועכשיו נוסיף עוד מנטוס קטן לקולה … פיתוח נאיבי ב PHP או ב node.js או ב GO  בסבירות גבוהה לא עובר ,תקן FIPS 140-2 ולכן ההסמכה תחכה. גם אם עשיתם עבודה מצויינת אבל השרת שלכם לא משתמש בספריות שעברו הסמכה.

למה?

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

יש עוד תקנים שאני לא נכנס אליהם

יש עוד תקנים, כמו תקן שנקרא FIPS 186 ועוסק בחתימה. למשל 

בגירסתו האחרונה FIPS 186-5 מאשר את שיטות חישוב החתימה הבאות וגם קובע מינימום של אורך מפתח

DSA – 2048 bits

ECDSA – 256 bies

אבל FIPS הוא לא רק הצפנה אלא גם תמצות קריפטוגרפי – פה זה מעט יותר פשוט כי יש הגדרה רק של האלגוריתמים עצמם בתקן FIPS 180.

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

לסיכום

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

תודה רבה לגיל על הסיוע שלו לפוסט ובכלל 🙂

פוסטים נוספים שכדאי לקרוא

ESP32 מאפס לילדים

מדריך ל-ESP32 לילדים ולהורים מאפס

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

פתרונות ומאמרים על פיתוח אינטרנט

עבודה עם GPT למתכנתים

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

צילום מסך של סוואגר
יסודות בתכנות

openAPI

שימוש בתשתית הפופולרית למיפוי ותיעוד של API וגם הסבר בסיסי על מה זה API

גלילה לראש העמוד