به نقل از گزارش تحلیل ریسک و امنیت منبع باز 2023، نرم افزار منبع باز – نرم افزاری که آزادانه همراه با کد منبع آن توزیع می شود، به طوری که می توان نسخه ها، اضافات یا اصلاحات را به راحتی انجام داد. از برنامههای کامپیوتری مورد استفاده صنایع بزرگ، 96 درصد شامل نرمافزار متنباز و 76 درصد آن برنامهها را نرمافزار منبع باز تشکیل میدهند. اما در این گزارش هشدار داده شده است که درصد بستههای نرمافزاری «حاوی آسیبپذیریهای امنیتی بهطور نگرانکنندهای بالاست».
کلسی مریل، مهندس نرم افزاری که در اوایل سال جاری مدرک کارشناسی ارشد خود را از دپارتمان مهندسی برق و علوم کامپیوتر MIT دریافت کرده است، می گوید: یک نگرانی این است که “نرم افزاری که شما از چیزی که فکر می کنید توسعه دهنده قابل اعتمادی است به دست آورده اید، به نوعی در معرض خطر قرار گرفته است.” . فرض کنید در جایی از زنجیره تامین، نرم افزار توسط مهاجمی که قصد مخربی دارد، تغییر کرده است.
خطر نقض امنیتی از این نوع به هیچ وجه انتزاعی نیست. در سال 2020، برای مثال بدنام، شرکت تگزاسی SolarWinds یک به روز رسانی نرم افزاری برای برنامه پرکاربرد خود به نام Orion ایجاد کرد. هکرها قبل از اینکه SolarWinds آخرین نسخه Orion را به بیش از 18000 مشتری از جمله مایکروسافت، اینتل و تقریباً 100 شرکت دیگر و همچنین ده ها سازمان دولتی ایالات متحده از جمله وزارتخانه ها ارسال کند، به سیستم نفوذ کردند و کدهای مخرب را در نرم افزار وارد کردند. دولت، دفاع، خزانه داری، بازرگانی و امنیت داخلی.
مریل میگوید در این مورد، محصولی که خراب شده از یک شرکت تجاری بزرگ آمده است، اما ممکن است خطاها حتی در حوزه منبع باز اتفاق بیفتد، جایی که افراد با پیشینههای مختلف – که بسیاری از آنها بدون هیچ آموزش امنیتی سرگرمی هستند. — می تواند نرم افزارهایی را منتشر کند که در سراسر جهان مورد استفاده قرار می گیرد.”
او و سه همکارش- مشاور سابقش کارن سولینز، دانشمند اصلی در آزمایشگاه علوم کامپیوتر و هوش مصنوعی MIT. سانتیاگو تورس-آریاس، استادیار علوم کامپیوتر در دانشگاه پردو؛ و زاخاری نیومن، دانشجوی سابق کارشناسی ارشد MIT و دانشمند تحقیقاتی فعلی در Chainguard Labs، سیستم جدیدی به نام Speranza ایجاد کردهاند که هدف آن اطمینان دادن به مصرفکنندگان نرمافزار است که محصولی که دریافت میکنند دستکاری نشده است و مستقیماً از یک منبع میآید. آنها اعتماد می کنند. کاغذ است منتشر شده بر روی arXiv سرور پیش چاپ
سولینز توضیح میدهد: «کاری که ما انجام دادهایم، توسعه، اثبات درستی، و نشان دادن قابلیت دوام رویکردی است که اجازه میدهد [software] نگهدارنده ها ناشناس بمانند.” بدیهی است که حفظ ناشناس بودن مهم است، با توجه به اینکه تقریباً همه – از جمله توسعه دهندگان نرم افزار – برای محرمانگی خود ارزش قائل هستند. Sollins اضافه می کند که این رویکرد جدید “به طور همزمان اجازه می دهد [software] کاربران اطمینان داشته باشند که نگهدارنده ها در واقع نگهبانان قانونی هستند و علاوه بر این، کدی که دانلود می شود، در واقع کد صحیح آن نگهدارنده است.”
بنابراین، چگونه کاربران میتوانند اصالت یک بسته نرمافزاری را تأیید کنند تا به قول مریل تضمین کنند که «نگهدارکنندگان همانهایی هستند که میگویند؟» روش کلاسیک انجام این کار، که بیش از 40 سال پیش ابداع شد، با استفاده از امضای دیجیتالی است که مشابه امضای دستنویس است – البته با امنیت داخلی بسیار بالاتر از طریق استفاده از تکنیکهای رمزنگاری مختلف.
برای انجام یک امضای دیجیتال، دو “کلید” به طور همزمان تولید می شود که هر کدام یک عدد است که از صفر و یک تشکیل شده است که 256 رقم طول دارد. یک کلید “خصوصی” و دیگری “عمومی” تعیین شده است، اما آنها یک جفت را تشکیل می دهند که از نظر ریاضی به هم مرتبط هستند.
یک توسعهدهنده نرمافزار میتواند از کلید خصوصی خود، همراه با محتویات سند یا برنامه رایانهای، برای تولید امضای دیجیتالی که منحصراً به آن سند یا برنامه متصل است، استفاده کند. سپس یک کاربر نرم افزار می تواند از کلید عمومی – و همچنین امضای توسعه دهنده، به علاوه محتویات بسته ای که دانلود کرده است – برای تأیید صحت بسته استفاده کند.
اعتبارسنجی به صورت بله یا خیر، 1 یا صفر است. مریل توضیح می دهد: «دریافت 1 به این معنی است که اصالت آن تضمین شده است. “سند مانند زمانی است که امضا شد و از این رو بدون تغییر است. 0 به این معنی است که چیزی اشتباه است، و شما ممکن است نخواهید به آن سند اعتماد کنید.”
اگرچه این رویکرد دهها ساله به یک معنا آزموده و درست است، اما از کامل بودن فاصله زیادی دارد. مریل خاطرنشان می کند که یکی از مشکلات این است که افراد در مدیریت کلیدهای رمزنگاری که از اعداد بسیار طولانی تشکیل شده اند، بد هستند، به گونه ای که ایمن است و از گم شدن آنها جلوگیری می کند. مریل می گوید: مردم همیشه رمز عبور خود را گم می کنند. و اگر یک توسعهدهنده نرمافزار کلید خصوصی را گم کند و سپس با کاربر تماس بگیرد و بگوید: “هی، من یک کلید جدید دارم”، چگونه میدانی که واقعاً کیست؟
برای رفع این نگرانیها، Speranza در حال ساخت «Sigstore» است – سیستمی که سال گذشته برای افزایش امنیت زنجیره تامین نرمافزار معرفی شد. Sigstore توسط نیومن (که پروژه Speranza را برانگیخت) و Torres-Arias به همراه جان اسپید مایرز از Chainguard Labs توسعه دادند. Sigstore فرآیند امضای دیجیتال را خودکار و ساده می کند. کاربران دیگر مجبور نیستند کلیدهای رمزنگاری طولانی را مدیریت کنند، بلکه کلیدهای زودگذر (رویکردی به نام “امضای بدون کلید”) برای آنها صادر می شود که به سرعت منقضی می شوند – شاید در عرض چند دقیقه – و بنابراین نیازی به ذخیره سازی ندارند.
اشکال Sigstore از این واقعیت ناشی می شود که کلیدهای عمومی طولانی مدت را در اختیار نداشت، به طوری که نگهبانان نرم افزار در عوض باید خود را از طریق پروتکلی به نام OpenID Connect (OIDC) به گونه ای شناسایی کنند که بتوان به آدرس های ایمیل آنها پیوند داد. این ویژگی، به تنهایی، ممکن است از پذیرش گسترده Sigstore جلوگیری کند، و به عنوان عامل محرک پشت – و دلیل وجود – اسپرانزا عمل کرد. مریل توضیح میدهد: «ما زیرساختهای اولیه Sigstore را میگیریم و آن را برای ارائه تضمینهای حفظ حریم خصوصی تغییر میدهیم.
با Speranza، حریم خصوصی از طریق یک ایده اصلی که او و همکارانش آن را “تعهد مشترک هویت” می نامند به دست می آید. در اینجا، به زبان ساده، این ایده چگونه کار میکند: هویت یک توسعهدهنده نرمافزار، به شکل یک آدرس ایمیل، به یک به اصطلاح «تعهد» تبدیل میشود که از یک عدد شبه تصادفی بزرگ تشکیل شده است. (یک عدد شبه تصادفی با تعریف فنی “تصادفی” مطابقت ندارد، اما از نظر عملی، تقریباً به اندازه تصادفی است.) در همین حال، یک عدد شبه تصادفی بزرگ دیگر – تعهد (یا تعهد مشترک) – تولید می شود که با بسته نرمافزاری که این توسعهدهنده آن را ایجاد کرده یا اجازه اصلاح آن را به او داده است.
برای اینکه به کاربر بالقوه یک بسته نرم افزاری خاص نشان دهد که چه کسی این نسخه از بسته را ایجاد کرده و آن را امضا کرده است، توسعه دهنده مجاز مدرکی را منتشر می کند که ارتباطی بی چون و چرا بین تعهدی که نشان دهنده هویت آنها است و تعهدی که به آن ملحق شده است را ایجاد می کند. محصول نرم افزاری اثباتی که انجام می شود از نوع خاصی است که به آن اثبات دانش صفر می گویند، که برای مثال راهی برای نشان دادن این است که دو چیز مرز مشترکی دارند، بدون افشای جزئیات مربوط به آن چیزها – مانند موارد توسعه دهنده. آدرس ایمیل – در واقع هستند.
مارینا مور، دکترای دکترا، میگوید: «Speranza تضمین میکند که نرمافزار از منبع صحیح بدون نیاز به توسعهدهندگان برای فاش کردن اطلاعات شخصی مانند آدرسهای ایمیلشان باشد.» کاندیدای مرکز امنیت سایبری دانشگاه نیویورک. “این به تأیید کنندگان اجازه می دهد تا ببینند که همان برنامه نویس یک بسته را چندین بار امضا کرده است بدون اینکه نشان دهد سازنده کیست یا حتی بسته های دیگری که روی آنها کار می کنند. این باعث بهبود قابلیت استفاده نسبت به کلیدهای امضای بلند مدت و یک مزیت حفظ حریم خصوصی نسبت به سایر OIDC- می شود. راه حل های مبتنی بر Sigstore.”
مارسلا ملارا، دانشمند پژوهشگر در گروه تحقیقات امنیت و حریم خصوصی در آزمایشگاه های اینتل، با این موضوع موافق است. این رویکرد این مزیت را دارد که به مصرفکنندگان نرمافزار اجازه میدهد تا بهطور خودکار تأیید کنند که بستهای که از یک مخزن مجهز به Speranza دریافت میکنند از یک نگهدارنده مورد انتظار نشأت میگیرد و اطمینان پیدا کنند که نرمافزاری که استفاده میکنند معتبر است.
اطلاعات بیشتر:
کلسی مریل و همکاران، اسپرانزا: امضای نرم افزاری قابل استفاده و سازگار با حریم خصوصی، arXiv (2023). DOI: 10.48550/arxiv.2305.06463
نقل قول: تقویت ایمان به اصالت نرم افزار منبع باز (2023، 1 دسامبر) بازیابی شده در 1 دسامبر 2023 از
این برگه یا سند یا نوشته تحت پوشش قانون کپی رایت است. به غیر از هرگونه معامله منصفانه به منظور مطالعه یا تحقیق خصوصی، هیچ بخشی بدون اجازه کتبی قابل تکثیر نیست. محتوای مذکور فقط به هدف اطلاع رسانی ایجاد شده است.