מהו קוד פתוח?

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


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

מה המקור הסגור?

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

אז מה הבעיה?

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

מדוע קוד פתוח הוא הפיתרון הטוב ביותר?

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

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

לא פיתרון מושלם ...

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

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

אבל…

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

אמת תמיד תוכניות בקוד פתוח

אז קוד פתוח הוא נהדר לביטחון. יש! אבל איך אתה יכול לדעת בוודאות שתוכנית הקוד הפתוח שהורדת זה עתה לא טופלה בדרך כלשהי?

זה אולי נשמע כמו חשיבה על פנטזיית קשר פרנואידית whacko, אך בפברואר 2016 אתר האינטרנט של אחת הגרסאות הפופולריות ביותר של מערכת ההפעלה לינוקס עם קוד פתוח, Linux Mint, נפרץ, וגירסת הפעלה של מערכת ההפעלה זמינה להורדות,

"האקרים יצרו ISO Mint Linux שונה, עם דלת אחורית בתוכו, והצליחו לפרוץ את האתר שלנו כדי להצביע עליו."

תמונות ה- ISO הנגועות ב- Linux התקנו את מערכת ההפעלה השלמה באמצעות Tsunami, Door Relay Chat (IRC), שהעניקה לתוקפים גישה למערכת המשתמשים באמצעות שרתי IRC. אז האיום אמיתי מאוד.

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

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

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

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

קוד פתוח: מסקנה

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

Brayan Jackson
Brayan Jackson Administrator
Sorry! The Author has not filled his profile.
follow me