کشف قابلیت ‌‌‌‌های ویندوز در محافظت از پردازنده در مقابل کدهای مخرب

انسان ‌‌‌‌های عاقل پیش از این هم بر روی کامپیوترهای مبتنی بر ویندوزشان برنامه ‌‌‌‌های دفاعی در قالب برنامه ‌‌‌‌های ضد بدافزار پیشرفته نصب می ‌‌‌‌کردند. اما اکنون در حال ورود به عصر رایانش ابری (Cloud Computing) هستیم، دورانی که مملو از برنامه ‌‌‌‌های (Applet) قابل بارگزاری است. به ‌‌‌‌طور همزمان در میانه مبارزه با ارتشی بزرگ از بدافزارنویسان خلاق و هوشمند نیز می ‌‌‌‌باشیم. 
به همین دلیل برنامه ‌‌‌‌های تدافعی مجبورند با کدهایی با منابع متعدد دست ‌‌‌‌وپنجه نرم کنند و از شما در برابر تهدیدات بیرونی محافظت کنند. این کار چگونه امکان ‌‌‌‌پذیر است؟ تبهکاران چه راه ‌‌‌‌هایی برای متوقف کردن این تلاش ‌‌‌‌ها یافته ‌‌‌‌اند؟ از همه مهم ‌‌‌‌تر اینکه چگونه می-توانید اطمینان حاصل کنید که کامپیوترتان تنها برنامه ‌‌‌‌هایی را اجرا می ‌‌‌‌کند که فکر می ‌‌‌‌کنید؟ 

امضا
برخلاف نرم ‌‌‌‌افزارهایی که از فروشندگان قابل اطمینان می ‌‌‌‌خرید، در مورد برنامه ‌‌‌‌های رایگان (Freeware) و غیر رایگان ساخته شده توسط افراد، کاربران معمولی (و حتی متخصصین امنیت) راهی برای حصول اطمینان از اینکه نرم ‌‌‌‌افزاری که فکر می ‌‌‌‌کنند در حال اجرا است، برنامه ‌‌‌‌ای دیگر با هدفی کاملا متفاوت، نباشد وجود ندارد. با افزایش شدت جنگ میان برنامه ‌‌‌‌سازان و هکرها، مبارزه با آخرین بدافزارها تنها با نصب آخرین نرم ‌‌‌‌افزار ضدویروس امکان ‌‌‌‌پذیر نخواهد بود. خوشبختانه ویندوز برای محافظت از خود روشی مبتکرانه دارد. این روش سیستم کد اعتبارسنجی (Authenticode) نام دارد. احتمالا هنگام تلاش برای نصب برنامه ‌‌‌‌هایی که فرآیند امضا (Signing) را نگذارده ‌‌‌‌اند، با نشانه ‌‌‌‌هایی از حضور این سیستم مواجه شده ‌‌‌‌اید. در این شرایط یک پنجره هشدار باز می ‌‌‌‌شود که می ‌‌‌‌گوید ناشرِ برنامه ‌‌‌‌ای که نصب می ‌‌‌‌کنید، قابل تایید نیست و به ‌‌‌‌شما فرصتی برای توقف اجرای آن می ‌‌‌‌دهد. 

امضای منحصربه ‌‌‌‌فرد
برنامه ‌‌‌‌ها با استفاده از الگوریتم ‌‌‌‌های رمزنگاری مانند RSA امضا می ‌‌‌‌شوند. این الگوریتم با استفاده از یک کلید رمزنگاری در دسترس عموم، یک کد امضای منحصربه ‌‌‌‌فرد جهانی تولید می ‌‌‌‌کند که برنامه مورد تایید را توصیف می ‌‌‌‌کند. عمومی بودن به این معنا است که هر کسی می ‌‌‌‌تواند کلید مورد استفاده برای امضای کد را دریافت کند. سیستم عامل آن را دریافت می ‌‌‌‌کند، سپس نسخه خود از امضا را تولید  و آن را با کلید فراهم شده توسط برنامه مقایسه می ‌‌‌‌کند. اگر این دو با یکدیگر منطبق باشند، کد همان کاری را می ‌‌‌‌کند که تامین ‌‌‌‌کننده می ‌‌‌‌گوید، بنابراین می ‌‌‌‌توان به آن اجازه اجرا داد. این کلیدهای رمزنگاری توسط چند شرکت امنیتی بزرگ و معتبر(مراکز صدور گواهی دیجیتال (CA)) در قالب گواهی ‌‌‌‌های دیجیتال در دسترس عموم نگهداری می ‌‌‌‌شوند و شامل جزئیات اطلاعات مربوط به شرکت ناشر و امضای خود برنامه هستند. ایجاد یک گواهی دیجیتال برای اثبات قابل اعتماد بودن برنامه ‌‌‌‌ساز و کدهای برنامه معمولا فرآیندی پرهزینه و پیچیده است. به ‌‌‌‌دست آوردن یک گواهی تجاری (Commercial Certificate) برای شرکت مستلزم این است که بتوانید بدون هیچ شک و شبهه ‌‌‌‌ای اثبات کنید همان کسی هستید که ادعا می ‌‌‌‌کنید. به ‌‌‌‌گفته مایکروسافت ممکن است از شما خواسته شود تا به عنوان نماینده شرکت ‌‌‌‌تان با حضور فیزیکی و ارائه کارت شناسایی عکس ‌‌‌‌دار هویت ‌‌‌‌تان را اثبات کنید. خود شرکت نیز باید رتبه Dun and Bradstreet مناسبی داشته باشد. این رتبه ‌‌‌‌بندی شاخصی از ثبات مالی شرکت شما است و از جمله نشان می ‌‌‌‌دهد که شرکت شما هنوز مشغول فعالیت است. این کار از درخواست گواهی دیجیتال توسط هکرها و با استفاده از مشخصات شرکتی که بدون سروصدا از دنیای کسب ‌‌‌‌وکار خارج شده است، جلوگیری می ‌‌‌‌کند. در نهایت اینکه متقاضیان باید تعهد دهند که کدهای مخرب را توزیع نخواهند کرد. در مورد اینکه مورد آخر تنها یک ادعای فاقد عمل است یا خیر بحث وجود دارد. 
برنامه ‌‌‌‌سازان مستقل نیز می ‌‌‌‌توانند یک گواهی شخصی (Personal Certificate) دریافت کنند. در این مورد نیازی به رتبه ‌‌‌‌بندی Dun and Bradstreet نیست، اما مدارک هویت شما با پایگاه ‌‌‌‌های داده مصرف ‌‌‌‌کنندگان تطبیق داده می ‌‌‌‌شود تا از صحت هویت ادعایی شما اطمینان حاصل گردد. در هر دو حالت به ‌‌‌‌دست آوردن یک گواهی هزینه زیادی را برایتان در بر خواهد داشت. با توجه به تعدد صادرکنندگان گواهی دیجیتال، ارزشش را دارد که بگردید و بهترین پیشنهاد را پیدا کنید. به ‌‌‌‌عنوان مثال یک گواهی Authenticode مایکروسافت که توسط VeriSign صادر شده است، 499 دلار (معادل تقریبا 250 پوند) هزینه در بر دارد. اگر انتظار دارید که پس از یک سال هم مردم نرم ‌‌‌‌افزارتان را بارگذاری و نصب کنند، می ‌‌‌‌توانید گواهی ‌‌‌‌تان را تمدید کنید. در غیر این ‌‌‌‌صورت پس از پایان یک سال نرم ‌‌‌‌افزارتان مجددا بدون امضا می ‌‌‌‌شود. 

کلیدهای عمومی
کاربران تیزبین ‌‌‌‌تر متوجه این نکته شده ‌‌‌‌اند که به ‌‌‌‌کارگیری کلیدهای عمومی همان مکانیزمی است که در رمزنگاری ایمیل ‌‌‌‌ها و SSH نیز مورد استفاده قرار می ‌‌‌‌گیرد تا به سرور اثبات کند که شما واقعا قصد ایجاد ارتباطی ایمن و رمزنگاری شده دارید، و از آن به ‌‌‌‌صورت مصنوعی برای مشاهده نام کاربری و کلمات عبور سایر کاربران استفاده نمی ‌‌‌‌کنید. یکی از مشکلات کدهای امضا این است که وقتی ویندوز اعتبار ناشری را تایید نمی ‌‌‌‌کند، عموم کاربران تصوری از کارکرد این مکانیزم ندارند. در میان کاربران گرایشی وجود دارد که همه چیز را به نرم ‌‌‌‌افزار ضدویروس می ‌‌‌‌سپارند و از خطر آلوده شدن کامپیوترشان اجتناب نمی ‌‌‌‌کنند، اما اگر ضدویروس نتواند کد مخرب را شناسایی کند چطور؟

در ماسه ‌‌‌‌ها
یک راه ‌‌‌‌حل استفاده از مکانیزم محوطه ماسه ‌‌‌‌بازی (Sandbox) به ‌‌‌‌منظور قرنطینه کردن کدهای اجرایی است تا در صورتی که خواستند تغییری غیر مجاز در سیستم ایجاد کنند تشخیص داده و از آن جلوگیری شود. امروزه برخی از ضدویروس ‌‌‌‌ها (حتی ضدویروس ‌‌‌‌های رایگان)  اجرای خودکار کدهای مشکوک یا فاقد امضا در Sandbox را فراهم می ‌‌‌‌کنند. نکته ‌‌‌‌ای که شاید از آن مهم ‌‌‌‌تر باشد این است که مرورگرهای وب نیز به ‌‌‌‌سمت استفاده از مکانیزم Sandbox حرکت کرده ‌‌‌‌اند و این شاید دلیل خوبی برای کنار گذاشتن نسخه ‌‌‌‌های قدیمی مرورگر Internet Explorer باشد. با این مکانیزم به ‌‌‌‌شدت از توانایی سایت ‌‌‌‌های حاوی کد مخرب یا سایت ‌‌‌‌های به گروگان گرفته شده (Hijacked) در نصب بی‌سروصدای کد در صورت ورود به ‌‌‌‌سایت کاسته می ‌‌‌‌شود.