6.5.2015

חוק, ממשל ואבטחת מידע.

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

תחילה, עבירות המחשב ("פשעי סייבר") מחולקות ל-3 קטגוריות:
  • עבירה שבוצעה בעזרת מחשב (Computer-Assisted crime)
    • תקיפה כנגד מוסד פיננסי ע"מ לגנוב כספים ומידע רגיש.
    • קבלה או הפקה של חומרים צבאיים ו\או חשאיים ע"י תקיפת מערכות צבאיות.
    • ביצוע ריגול (תעשייתי ופרטי) למטרות של איסוף מידע רגיש כנגד מתחרים ו\או גורמי צד-שני.
  • עבירה שבוצעה כנגד מחשב (Computer-Targeted crime)
    • התקפות Distributed Denial of Service - DDoS ע"מ "לשתק" שירותים שונים.
    • "לכידת" סיסמאות ו\או מידע רגיש.
    • התקנת נוזקות ו\או Rootkits למטרות זדון והרס.
  • עבירה שבוצעה כאשר שימוש במחשב הוא "מקרי" (Computer is incidental)
    • אחזקה ואחסון של חומרים אסורים כגון חומרים פדופילים וחומרים המשמשים כעדויות לעבירות פליליות אחרות.

התפלגות תקריות א"מ שהתגלו בסקטורים שונים בתעשייה. מקור: Computer crime and security survey 2014

המורכבות הקיימת בעבירות מחשב

אמנם, קיימים חוקים, הוראות ותקנים רבים בנושא זה – אך מי אוכף אותם? בארה"ב, השירות החשאי, ה-FBI ושירותי החוק המקומיים (כגון המשטרה) אחראים לאכיפת עבירות מסוג זה. בישראל, האוכפים הם יחידות שונות של המשטרה (הרשות האוכפת), כגון יחידת הסייבר ולהב 433. רוב התוקפים ("האקרים") אינם נתפסים. סיבה עיקרית היא המורכבות בטכנולוגיית המידע ופיגור לא קטן מצד הרשויות ליישר קו עם מורכבות זו. זיהוי התוקף במרחב האינטרנטי נעשה ע"י כתובת ה-IP שלו, אך לרוב הם משתמשים בכתובות מזויפות (Spoofed addresses), הצפנת תעבורה ועוד טכניקות שונות – דבר ההופך את תהליך האכיפה למורכב עוד יותר.
בנוסף, חברות רבות בעולם ובישראל (לא אנקוב בשמן), יעדיפו "לטאטא מתחת לשטיח" עבירות שנעשו כלפיהן, ולא לערב את הרשויות מסיבות שונות כגון; שמירת המוניטין, כדי לא להבהיל את לקוחותיהן וכדי להימנע מקנסות כבדים.
כיום, ע"מ לטפל בעבירות מחשב ביעילות, מדינות רבות מגדירות את ה-"נתונים" כקניין (Property) לכל דבר. בישראל הדבר נחשב כ-"קניין רוחני".

האבולוציה של עבירות המחשב

עד לפני יותר מ-10 שנים, האקרים היו אנשים שראו את פעולותיהם כהנאה לכל דבר. פריצה הייתה בד"כ נחשבת כ"אתגר" ומאחוריה לרוב, לא הייתה כוונת זדון. הפלת אתרים גדולים כגון Yahoo!, Geocities ו-Excite היו מזכים את הפורצים ב"תהילה" בקרב קהילת חבריהם ההאקרים. ווירוסים היו נכתבים למטרת יכולת שכפולם ולפעילויות לא מזיקות (בד"כ לבידור חבריהם והעברת מסרים).
כמו שאמא שלי אומרת, "היום זה לא כמו שהיה פעם" – וכמובן שהיא צודקת :) . היום, מטרות הפורצים הם יותר זדוניות, יותר הרסניות ויותר מאורגנות.
למרות שעדיין קיימים לא מעט "Script kiddies" ("האקרים" שבהכרח אין להם את המיומנות לביצוע התקפות ממוקדות – אופן פעילותם נעשה בעזרת כלים מוכנים וזמינים באינטרנט. הם בד"כ לא מבינים איך הפריצה באמת מתבצעת, ולכן לא מודעים לנזק שהם יכולים לגרום), ארגוני הפשיעה (או הפשע המאורגן) נכנסו ל"סצנה" לאחר שהבינו את הפוטנציאל הרווחי הטמון בפשעי המחשב. אם ה-Script Kiddies מבצעים סריקות של אלפי מערכות ע"מ לגלות חולשה ו\או פירצה, ארגונים אלה בד"כ מכווני-מטרה כנגד חברה או מערכת אחת. לרוב, הפשע המאורגן מצליח לגייס לתוכו אנשים מיומנים בהחלט, האקרים "על-אמת". בעולם המחשוב, סוג זה של מתקיפים מוגדרים כ-"איום מתקדם ומתמשך" או Advanced Persistent Threat - APT. מונח זה משמש את המערכות הצבאיות כבר דורות, אך כיום הוא נעשה יותר ויותר רלוונטי לסביבתנו.
ה-APT בד"כ מפתח את הקוד הזדוני בעצמו ומכוון למטרה הספציפית שלו. כאמור, הוא מיומן יותר, ממומן יותר ובעל מוטיבציה גבוהה יותר – דבר המקשה לחלוטין את הרשויות באיתורם ולכידתם.
רוב עבירות המחשב כיום מבוצעות במרחב האינטרנטי (להלן, "מרחב קיברנטי") ולהן סכמות נפוצות כגון:
  • עבירות מכרזים ומכירות פומביות.
  • זיוף צ'קים וכספים.
  • הונאות בעזרת שירותי שלשה (הפקדות בנאמנות וכו').
  • הונאות ה-"419" (מכתבי ה-"עוקץ ניגרי").
  • הונאת פונזי\פירמידה

בעיות וסוגיות בעידן הגלובליזציה

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

תמונת מסך המראה "טעימה" מנזקי ה-Stuxnet במחשבי ה-SCADA הפועלים בכור האיראני בבושהר. התמונה באדיבות warincontext


לגבי שאר הסוגיות – יש תשובות, או לפחות ניסיון לתת מענה לגביהן.
נעשו מאמצים רבים ליצירת סטנדרטיזציה בעזרת תקנים והוראות – וזאת ע"מ ליישר קו עם גישת כל מדינה לעבירות מחשב;
אמנת המועצה האירופאית (לפני האיחוד) לעבירות סייבר, או יותר נכון – Council of Europe (CoE) Convention on Cybercrime, הינה דוגמה לניסיון תקינה (מלשון תקן) כמענה לעבירות סייבר. כאשר עסקינן על שמירת נתונים, חברות גלובליות (העובדות ב\עם כמה מדינות) מחויבות לעמוד בדרישות ה-OECD לשמירה והעברה מאובטחת של נתונים רגישים ואישיים. בין העקרונות של ה-OECD לאבטחת המידע האישי שלנו, אפשר למנות:
  • ליקוט של מידע אישי צריך להיות מוגבל, נעשה באמצעים חוקיים ובידיעת הסובייקט (לא לשכוח לקרוא על מה אתם חותמים, הא?!).
  • מידע אישי יישמר במלואו, ובתנאי שיהיה רלוונטי למטרות שימושו.
  • יש ליידע את הסובייקט (אנחנו, למשל) על הסיבה לליקוט המידע אודותיו.
  • חשיפה ושימוש במידע האישי שלא למטרות הרלוונטיות שהוצגו, ייעשו באישור הסובייקט עצמו או באישור הרשות השופטת בלבד.
  • יש להחיל שיטות הגנה "סבירות" למניעת חשיפה, שימוש ושינוי לא מורשה של המידע האישי.
אי-עמידה בדרישות הנ"ל יגרור את החברה לקנסות כבדים, אחריות פלילית ואף לפירוקה.
בכלל, האיחוד האירופי לוקח ברצינות רבה את כל הקשור לפרטיות ואבטחת המידע האישי, לעומת מדינות אחרות בעולם. לאיחוד האירופי חוקים נוקשים בנושא הפרטיות בטכנולוגית המידע, ומבוססים על "עקרונות האיחוד האירופי לפרטיות" – "European Union Principles on Privacy". אלו עקרונות דומים לאלו של ה-OECD, ומנחים כיצד יש לנהוג עם מידע אישי בכל הקשור להעברתו, אחסונו ושימושו. מדינות החברות באיחוד חייבות לציית להם.
כדי להתאים דרישות אלה לחברות שבסיסן בארה"ב, ולאפשר שת"פ תקני בין שתי היבשות, פותחו עקרונות דומים גם אצל ה"דוד סם", ונקראים "The Safe Harbor Privacy Principles" או בקיצור "Safe Harbor". חברות שבסיסן בארה"ב המעוניינות לעבוד עם חברות שבסיסן באיחוד האירופי, חייבות לעמוד בדרישות הגנה על הפרטיות המעוגנות תחת עקרונות אלו.

שיטות והוראות הגנה על הפרטיות

הפרטיות שלנו נעשית יותר מאוימת ככל שהעולם נשען יותר ויותר על טכנולוגיות. נכון להיום, קיימות 2 גישות עיקריות המתייחסות לנושא; הגישה הגנרית – Generic Approach , אשר מהווה קיום של חקיקה היוצרת קו חוקים ברור בנושא הפרטיות בכל רבדי התעשייה. הגישה הרגולטורית - Regulation by industry , אשר מגדירה דרישות לסקטורים ספציפיים בתעשייה, כגון הסקטור הפיננסי והסקטור הבריאותי.
שתי הגישות מכוונות לשמירת ואבטחת מידע אישי בכלל ומידע מזהה בפרט.
מהו מידע מזהה?
מידע מזההPersonally Identifiable Information, PII הינם נתונים אשר משמשים ע"מ לזהות באופן ייחודי אדם. נתונים אלה צריכים להישמר מכל משמר שכן הם לרוב משמשים עבריינים המבצעים פשעים פיננסיים, גניבת זהויות וכו' .
רכיבי ה-PII הם כדלקמן:
  • שם מלא (אם לא נפוץ).
  • מספר זיהוי לאומי (ת.ז, SSN וכו').
  • כתובת IP (במקרים מסוימים).
  • מספר לוחית רכב או רישוי מסוים.
  • מספר רישיון נהיגה.
  • מידע גנטי.
    • לרבות תווי פנים, טביעות אצבע וכו' .
  • מספרי כרטיס אשראי.
  • תאריך ומקום הלידה.
  • כתב יד (במקרים מסוימים).
זכרו כי המידע הנ"ל מזהה אתכם באופן ייחודי. הימנעו ככל הניתן ממסירת הנתונים אם אין רלוונטיות לכך. הרי בסופו של דבר, האחריות לשמירת פרטיותכם – היא עליכם.
רגולציות בעולם המחשוב ואבטחת המידע מכסים סוגיות רבות – מסיבות רבות. אבטחת פרטיות, אבטחת נתונים ובקרה על קריפטוגרפיה הן רק חלק מסוגיות אלו. רגולציות מיושמות בכל סקטור בחיינו; בסקטור הממשלתי, הביטחוני, הפרטי ועוד.
כיום, הסקטור הפיננסי הוא המנוע העיקרי בכל הקשור ללקיטת נתונים אישיים. הרגולציות העיקריות החלות על סקטור זה לשמירת פרטיותנו הן:
  • רגולציות ממשלתיות
    • Sarbanes-Oxley Act או SOX – מציגה דרישות על אופן הטיפול במידע המוגדר "פיננסי" כגון; ניהול, מעקב ודיווח של מידע מסוג זה.
    • Gramm-Leach-Bliley Act of 1999 או GLBA - דרישות המכוונות אל המוסדות הפיננסיים בדבר העברת מידע פיננסי אישי של לקוחותיהם לגורמי צד-שלישי.
    • Basel II - רגולציה חשובה מאוד בעולם הקפיטליסטי שלנו. היא מגנה על הבנקים (ולכן גם על הכלכלה כולה) כך שהיא מגבילה אותם מלקיחת סיכונים משמעותיים העלולים לגרום לקריסתם.
  • רגולציות עצמאיות
    • Payment Card Industry - PCI - כחלק מתקן ה- PCI-DSS המורכב מ-12 דרישות עיקריות ומנחות, ומיועדות לכל מי ששומר, מעבד, מעביר או מקבל נתוני כרטיסי אשראי.
      • תוכלו למצוא את הדרישות כאן.
כמובן, קיימים עוד המון חוקים, הוראות ורגולציות המתייחסות לאבטחת מידע, אך הנ"ל מהווים אבני יסוד בכל הקשור לאבטחת הפרטיות שלנו - נושא חשוב הנוגע לכל אזרח ואזרח.

אחריות החברה או הארגון לאבטחת המידע

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

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

Statement on Auditing Standards No. 70: Service Organizations - SAS 70 – הינו סט של תקנים לשימוש תהליך הבידוק של בקרות שירות אירגוניות.  בדומה ל-WebTrust אשר משמש לבקרות של מסחר אלקטרוני ו-SysTrust המשמש לבקרות אופרציות אירגוניות.

התרחישים הבאים הם דמיוניים אך ממחישים את מחויבות החברה או הארגון לעמידה בחוק ובתקנים נדרשים, להלן ביצוע Due Care ו-Due Diligence;

תרחיש: הגנה על מידע אישי

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


תרחיש: חדירה ופריצה ע"י האקר

חברה פיננסית בשם "צ'יפופו בע"מ" רוכשת כלים והסכמים המאפשרים ללקוחותיה לבצע פעולות בנקאיות באופן מקוון. אותה חברה פיננסית איננה מוסיפה אמצעי הגנה נדרשים לביצוע עסקאות מסוג זה באינטרנט.
לאחר שבוע, כ-42 חשבונות של לקוחות – נפרצו. הנזק מסתכם בכ-750,000 ₪.

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

  • מחויבות משפטית (חוקתית) ואחריות אישית
    • חברת "צ'יפופו בע"מ" לא יישמה אמצעי הגנה סבירים לביצוע עסקאות מסוג זה. אמצעי הגנה סבירים בעסקאות מקוונות הם: יישום חומת אש, IDS והצפנה והקשחה של בסיס הנתונים המכיל מידע רגיש אודות לקוחותיה.
    • "צ'יפופו בע"מ" לא הגנה ביעילות על נכסי לקוחותיה.
  • אי עמידה או התאמה לתקן הנדרש
    • חוסר הנכונות של חברת "צ'יפופו בע"מ" להחיל וליישם נהלי ובקרות אבטחת מידע – מפרה את התחייבותה להוראות ולרגולציות שהיא כפופה אליהן בסקטור הפיננסי. בארה"ב למשל – היא מפרה מעל עשר רגולציות פדרליות של הסקטור הפיננסי.
  • נוכח הנסיבות – גרימת נזק ועוגמה
    • החברה הפיננסית נכשלה בביצוע Due Care וביישום דרישות בסיסיות למסחר אלקטרוני – מה שבאופן ישיר גרם ל-42 לקוחותיה לאבד 750,000 ₪.
לאחר מכן, התגלה כי רוב חשבונות הלקוחות נפרצו. חברת "צ'יפופו בע"מ" סבלה מקנסות כבדים וננקטו כנגדה אמצעים חריפים ע"פ החוק.
בסופו של דבר, רוב הלקוחות קיבלו את כספם חזרה וחברת "צ'יפופו בע"מ", שהייתה עד אז חברה פיננסית לכל דבר – מצאה עצמה מחוץ לתעשייה וכעת מוכרת פלאפל להמונים.

חוקי קניין רוחני כחלק מאבטחת מידע

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

סוד מסחרי (Trade secret) - במסחר, הינו מידע או משאב השייך לחברה ונחוץ לשרידותה ולרווחיה. הדוגמה הידועה הינה סוד המתכון של "קוקה-קולה". חשוב להדגיש כי משאב המוגדר "סוד מסחרי", חייב להיות מוגן ויש לנקוט בכל אמצעי האבטחה הנדרשים ע"מ להגנו. כיום, חברות וארגונים רבים מחתימים את עובדיהם על "הצהרה לשמירת סודיות" – "Non-Disclosure Agreement" או NDA, וזאת כדי למנוע מקרים כמו מקרה AMD-Intel בזמנו: מהנדס שעבד באינטל והחזיק סוד מסחרי בשווי מיליארד דולרים - עבר לחברה מתחרה – AMD. התגלה כי אותו מהנדס נשאר נגיש למידע המסווג ביותר של אינטל ואף עדיין החזיק במחשב הנייד שהחברה ציידה אותו. בעזרת מחשב זה והגישה לאותו מידע, הוריד 13 מסמכים קריטיים לגבי פיתוח המעבד החדש (דאז) של אינטל ומוצריה הנוספים.

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

סימן רשום (Trademark) - סימן רשום שונה במקצת מזכויות יוצרים בכך שהוא משמש להגן על מילה, שם, סמל, צורה, צבע או שילוב ביניהם –המייצגים חברה ומזוהים עמה בשאר העולם. חברות אינן יכולות לסמן מספרים ושמות נפוצים ולכן סביר שייצרו שמות חדשים (לדוגמא Intel's Pentium). לעומת זאת, שילוב של צבעים שונים יכולים להוות סימן רשום.
"קרב" מעניין בנושא הוא של פול ספט נגד "גוגל", כאשר הנ"ל הקים בשנת 2002 חברה בשם "Android Data" וקיבל אישור לסימן רשום. החברה פשטה רגל וספט חיפש קונים הן לחברה והן לסימן הרשום ,אך ללא הצלחה. כאשר גוגל הכריזה על טלפון חדש בשם Android, ספט מיהר והקים אתר אינטרנט וכלל בתוכו את לוגו החברה הישן בעל הסימן הרשום כדי להראות כי הוא עדיין משתמש באותו סימן רשום. הוא תבע את "גוגל" על "נזקים" בסכום של 94 מיליון דולרים – והפסיד.

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


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






1.5.2015

נספח: אבטחת מידע בסביבת הפיתוח

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

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

מודל ה-SDLC

נספח ב': פיתוח מאובטח

 

מודלים לפיתוח תוכנה


Build and Fix – פיתוח ללא תכנון מקדים. בעיות בתוכנה מטופלות לאחר שחרור התוכנה (בעזרת טלאים (Patches) ועדכונים.).

Waterfall – גישה הפועלת לפי שלבים, פאזות (Phases) הדורשת שכל שלב יושלם לפני המעבר לשלב הבא. נחשב למודל לא "גמיש" ובעל קושי להטמעת שינויים.

V-Shaped model (V-Model) – מודל השם דגש לתיקוף ולאימות ( Verification and Validation ) שלבי הפיתוח. בדיקות התוכנה נעשות במהלך הפיתוח ולא בסיומו.

Prototyping – כחלק ממודלי פיתוח תוכנה. יצירת דגם או מודל למטרת Proof-of-concept

Incremental model – שימוש בכמה מחזורי פיתוח לכל חלק, פיסה מהתוכנה – כחלק מתהליך הפיתוח הכולל.

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

Rapid Application Development – מודל המשלב את הגישה האיטרטיבית וגישת ה-Prototyping שמטרתו האצת קצב תהליך הפיתוח.

Agile model – תהליכי פיתוח מבוססים איטרטיביות והצטברות (Incremental) המעודדת עבודה בקבוצות. זהו מודל המעניק גמישות והסתגלות המחליף את צורת תהליכי הפיתוח שבד"כ מוקפדת ומחמירה. 

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

Joint Analysis Development (JAD) – שיטה המתמקדת בגישת עבודה בצוות בסביבות מכוונות סדנאות (Workshop-Oriented) .

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

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


מושגים כלליים




Statement of work (SOW) – מתאר את דרישות המוצר והלקוח. הצהרה מפורטת תעזור להבטיח כי דרישות אלו מובנות כראוי ושלא נלקחו הנחות "סתם".

Work breakdown structure (WBS) – כלי לניהול פרויקטים המשמש להגדרת תהליכי עבודה ומקבץ אותם לאלמנטים נפרדים בסביבת הארגון.

Privacy impact rating – מציג את רמת הרגישות של הנתונים אליהם ניגשים ו\או עובדים.

Attack surface – רכיבי מוצר הזמינים לשימוש התוקף לתקיפת המוצר עצמו.

Attack surface analysis – זיהוי וצמצום כמות קוד המוצר הנגיש למשתמש לא מורשה.

Threat modeling – גישה סיסטמתית המתארת כיצד סכנות מבוססות איומים שונים עלולות להתרחש.

Computer-aided software engineering (CASE) – מתייחס לסוג של תוכנה המאפשרת פיתוח באופן אוטומטי ובד"כ מגיעה בצורה של כליי עריכה, Debuggers, Version-control וכלים שונים לניתוח קוד.

Static analysis – טכניקת debugging המנתחת קוד ללא הרצת התוכנה ולכן גם מתבצעת לפני הידור (Compiling) התוכנה. 

Fuzzing – טכניקה המשמשת לזיהוי ולגילוי זליגה וחולשות בתוכנה.

Verification – קובע האם המוצר תואם ועומד בדרישות שנקבעו.

Validation – קובע האם ב"עולם האמיתי" המוצר מעניק את הפתרון הנדרש לשם פיתוחו.

Web application security consortium (WASC) – ארגון ללא מטרות רווח, המורכב מקבוצות של מומחים מכל העולם (וכן, נציגי חברות ופעילים בולטים) ששמה לה למטרה יצירה ופיתוח של תקני אבטחת מידע מוסכמים ברשת האינטרנט (ה- World Wide Web ).

Open web application security project (OWASP) – ארגון ללא מטרות רווח, המתמקד לשיפור רובד האבטחה באפליקציות מבוססות Web.

Build Security In (BSI) – סט של כלים, חוקים, הוראות ונהלים המפורסם ע"י המחלקה לביטחון המולדת של ארה"ב. מיועד למפתחי תוכנה, ארכיטקטים ומומחי אבטחת מידע.

ISO/IEC 27034 – תקן בינלאומי המיועד בעיקרו לארגונים, ומציג דרכים כיצד יש להטמיע תהליכי אבטחת-מידע כחלק מניהול התוכנות אשר בבעלותם (בעיקר בתוכנות אשר פותחו ע"י גורם צד שלישי, בעזרת מיקור חוץ וכו').

Capability Maturity Model Integration (CMMI) model – תהליכי השבחה המעניקים לארגונים אלמנטים נחוצים לניהול ופיתוח של תהליכים באופן יעיל ובכך לשפר ביצועיהם.

Change control – תהליכי שליטה ובקרה של שינויים שבוצעו כחלק מתהליך מחזור הפיתוח (SDLC). שינויים ופעולות יתועדו.

Software Configuration Management (SCM) – זיהוי של רכיבים ותכונות בתוכנה בנקודות זמן שונות, וכן יישום וביצוע שיטות בקרה של שינויים במטרה להבטיח תחזוקה נאותה בכל הקשור לשלמות (integrity) התוכנה ומעקב (traceability) יעיל כחלק מה-SDLC.

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

Programming language generations – 1) Machine language. 2) Assembly language.
3)
High-level language. 4) Very high-level language. 5) Natural language.

Machine language – אוסף הוראות בשפה הבינארית שמעבד המחשב מסוגל להבין ולעבוד איתן בצורה ישירה.

Assembly language – שפת תכנות ברמה הנמוכה (low-level programming language) ושייכת לשפת תכנות דור שני. מעניקה ייצוג, תיאור של אוסף ההוראות הכתובות בשפת מכונה.

Assemblers – כלים הממירים קוד הכתוב בשפת אסמבלי להוראות בשפת המכונה.

High-level language – ידועות גם כשפות תכנות דור שלישי (Third-generation PL, 3GL), זאת משום המבנה "המעודן" שלהם ושימוש בהצהרות מופשטות. Fortran ו- COBOL הינן השפות העתיקות יותר מסוג זה, וכיום שפות פופולריות כגון C, Java, C++ תופסות את מקומן.

Very high-level languages – ידועות גם כשפות תכנות דור רביעי (4GL) וייעודן לקרב ככל האפשר את השפה המדוברת להוראות מכונה. Perl, Python, PHP, Ruby ואף SQL נכנסות לקטגוריה זו של שפות תכנות.

Natural language (NLP) – ידועות גם כשפות מהדור החמישי שמטרתן ליצור תוכנות המסוגלות לפתור בעיות בעצמן. בד"כ משמשת מערכות בעלות יכולת של בינה-מלאכותית. דוגמאות ידועות הן Wolfram Alpha, Inform7 וכחלק מ-MATLAB.

Compilers – כלים אשר ממירים High-level language לפורמט ברמת-מכונה (exe,dll וכו') כך שמעבד הבנוי בארכיטקטורה מסוימת – יבין.

Interpreters – כלים להמרת קוד הכתוב ב"שפת תרגום" (PHP, Perl, Python...) לקוד מכונה.

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

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

Polymorphism – בתכנות, כאשר שני אובייקטים מסוגלים לקבל את אותו הקלט ולהפיק פלט שונה.

Cohesion – סוג של מדידה אשר מודד כמה משימות שונות מודול מסוים דורש ע"מ להתבצע.

Coupling – סוג של מדידה אשר מודד מהי כמות האינטראקציה הדרושה ע"מ שמודול מסוים יתבצע.

Data structure – ייצוג של קשרים לוגיים בין אלמנטים של נתונים.

Distributed Computing Environment (DCE) – מסגרת (framework) וסט של כלי פיתוח למטרת פיתוח תוכנות שרת\לקוח המאפשר מחשוב מבוזר (Distributed computing).

Common Object Request Broker Architecture (CORBA) – תקן ארכיטקטורה מונחית-עצמים אשר פותחה ע"י Object Management Group (OMG). תקן זה מאפשר לרכיבי תוכנה הכתובים בשפות תכנות שונות – לתקשר ולרוץ במערכות שונות.

Object Request Broker (ORB) – מנהל את כל התקשורת בין רכיבי התוכנה ומאפשר אינטראקציה בסביבות מחשוב מבודרות והטרוגניות. ה-ORB פועל כ-"ברוקר" בין בקשות לקוח לשירות בסביבות מרובות אובייקטים.

Component Object Model (COM) – מודל שפותח ע"י חברת מייקרוסופט המאפשר תקשורת בין תוכנות אשר נכתבו בשפות שונות – באותה המערכת.
 
Object Linking and Embedding (OLE) – מעניק לאובייקטים את האפשרות להיות משותפים (Shared) על אותו מחשב ולהשתמש ב-COM כבסיס תקשורת. זוהי טכנולוגיה אשר פותחה ע"י מייקרוסופט ומאפשרת הטמעה וקישור בין אובייקטים שונים.

Java Platform, Enterprise Edition (J2EE) – פלטפורמה בלתי-תלויה המבוססת שפת Java ומאפשרת גישה מודולרית לכתיבת קוד במטרה לפרשם (ולהבינם) ביתר קלות. J2EE מגדיר את מודל השרת\לקוח בצורה מונחית-עצמים ובלתי תלויה בסוג המערכת.

Service-oriented architecture (SOA) – מעניק לתוכנות שונות גישה תקנית ומגוונת לשירותים מסוימים – בו-זמנית. 

Simple Object Access Protocol (SOAP) – פרוטוקול מבוסס XML אשר מקודד הודעות בסביבת Web.

Mashup – השילוב של פונקציונליות, נתונים ואפשרויות תצוגה של שני מקורות או יותר – ע"מ ליצור פונקציונליות או שירותים שונים.

Software as a Service (SaaS) – מודל להעברת והנגשת תוכנה, המתאפיין באחסון מרכזי לנתונים ולאפליקציות אשר נגישים ללקוחות ולקליינטים מבוססי רשת. שיטת ההנגשה הפופולארית כיום היא ע"י מחשוב ענן ( Cloud computing). 

Cloud computing – שיטה מבוססת-אינטרנט המעניקה שירותים (לרוב, ע"פ דרישה – on-demand) באמצעות המחשב ללא מוצר מוחשי כלשהו.

Mobile code – קוד אשר מועבר באמצעות הרשת כאשר ביצוע\הפעלת הקוד נעשית ע"י המערכת בצד השני.

Java applets – רכיבים (applets) קטנים המעניקים פונקציונליות ומועברים באמצעות Java bytecodes . רכיבים אלה רצים בסביבת דפדפנים בעזרת ה-JVM. Java הינה שפה חוצה-פלטפורמות ולכן רכיבים אלו מסוגלים לרוץ במגוון רחב של דפדפנים.

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

ActiveX – טכנולוגיה מבית מייקרוסופט המורכבת מטכנולוגיות OOP שונות ומבוססת על COM ו-DCOM. זוהי מסגרת (framework) המגדירה רכיבי-תוכנה לשימוש חוזר ללא תלות בשפת התכנות.

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

Information gathering – בד"כ זהו השלב הראשון במתודולוגיה של התוקף, בו המידע המלוקט עשוי לשמש את התוקף לגילוי מידע נוסף בו ייעזר לפריצת המערכת.

Server Side Include (SSI) – זוהי שפת Scripting (סט פקודות) צד-שרת המיועדת לתקשורת מבוססת Web. בד"כ משמשת לסיפוח תכנים מ-קבצים שונים לתוך דפי אינטרנט. מאפשרת למפתחי Web שימוש חוזר בתוכן זהה אל תוך כמה דפי אינטרנט בו זמנית.

Client-side validation – אימות של הקלט הנעשה לפני שליחת הבקשה לשרת.

Cross-site scripting (XSS) – סוג התקפה אשר מנצלת חולשה באתרי אינטרנט המאפשרת הזרקה של קוד זדוני לתוך אפליקציית ה-Web.

Parameter validation – אלו הערכים המתקבלים לשרת אשר נבדקים ומאומתים עוד לפני עיבוד הבקשה בשרת.

Web proxy – חלק(רכיב) מתוכנה, אשר מותקן במערכת, ומיועד לניטור התעבורה בין הדפדפן לשרת ה-Web.

Replay attack – כאשר התוקף "לוכד" תעבורה כחלק משיחה (Session) לגיטימית במטרה להתחזות למשתמש מורשה.


בסיסי נתונים



Database – אוסף נתונים המאוחסנים באופן המאפשר למספר משתמשים ותוכנות לגשת, לשנות ולראות את אותם נתונים ע"פ דרישה.

Database management system (DBMS) DBMS כופה על שימוש בבקרות גישה ולכן מעניק הבטחה ואבטחה על שלמות הנתונים. בנוסף, מכיל פונקציות מגוונות לניהול הנתונים.

Relational database model – מודל העושה שימוש בתכונות (Attributes. מיוצגות ע"י העמודות) ו- Tuples (רשומה סופית ומסודרת של אלמנטים. מיוצגת ע"י השורות) המכילות לרוב מידע ארגוני.

Hierarchical data model – שילוב של רשומות ושדות הקשורים זה לזה – במבנה עץ-לוגי.

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

Object-relational database (ORD) – שימוש במערכת לניהול בסיסי נתונים, ומבוססת יחסי-עצמים (Object Relational Database Management System, ORDBMS), בנוסף, שימוש בבסיס נתונים מסוג Relational עם תוכנת Front-end הכתובה בשפה מונחית-עצמים.

Schema – מבנה מסד-נתונים המתואר בשפה הנתמכת ב-DBMS. משמש לתיאור אופן ארגון הנתונים.

Data dictionary – אוסף מרוכז של הגדרות, אובייקטים ומפתחות אודות הנתונים.

Primary key – מוגדר כמזהה של שורה ומשמש לאינדוקס בבסיסי נתונים מבוססי Relational.

Foreign key – תכונה המיושמת בטבלאות הנתונים המקשרת ל-Primary key בטבלה שונה.

Two-phase commit – טכניקה המאופיינת בשימוש של בקרה נוספת להבטחת שלמות המידע הנשמר (ושמור) בבסיס הנתונים.

Cell suppression – טכניקה המשמשת להסתרת תאים (Cells) מסוימים המכילים מידע רגיש.

Noise and perturbation – טכניקה העושה שימוש בהזנת מידע מוטעה במטרה (ובתקווה) לבלבל את התוקף, לעייף אותו ובזאת למנוע התקפות.

Data warehousing – שילוב נתונים ממספר בסיסי נתונים (או מקור נתונים) אל תוך בסיס נתונים אחד גדול ובכך להעניק יכולת לאנליזה של הנתונים.

Data mining – ידוע גם כ- Knowledge Discovery in Database (KDD), תהליך למיצוי הנתונים המאוחסנים ב- Data warehouse לכדי מידע שימושי.


Expert systems – ידוע גם כ- Knowledge-based systems. מערכות העושות שימוש בבינה מלאכותית כדי לפתור בעיות מורכבות. 

Artificial neural network (ANN) – מודל מתמטי\חישובי המבוסס על מבנה הנוירונים (תאי עצב) במוחנו.