امنیت نرم‌افزار عبارت است از ساختن نرم‌افزار ایمن با دفاع ذاتی، به طوری که تحت حملات مخرب به کار خود ادامه دهد و رضایت کاربران و صاحبان نرم‌افزار را جلب کند. این مقاله تهدیدها و راه‌حل‌ها را از دیدگاه کلی توضیح می‌دهد.

واژگان استاندارد در امنیت اطلاعات نیز توضیح داده شده است. برای درک این مقاله باید سواد کامپیوتر و اینترنت داشته باشید. شما همچنین باید یک زبان کامپیوتر را مطالعه کرده باشید، به عنوان مثال، Perl، C، C++، PHP و غیره.

آنچه ایمن شده است، اطلاعات و بسته‌های نرم‌افزاری (برنامه‌ها و اسناد) است. اطلاعات هر پیامی است که برای هر کسی مفید باشد. “اطلاعات” کلمه‌ای مبهم است. زمینه‌ای که در آن استفاده می‌شود معنای خود را می‌دهد. این می‌تواند به معنای خبر، سخنرانی، آموزش (یا درس) یا راه‌حل باشد.

یک بسته نرم‌افزاری معمولاً راه‌حلی برای برخی مشکلات یا مسائل مرتبط است. در گذشته تمام اطلاعاتی که گفته نمی‌شد روی کاغذ نوشته می‌شد. امروزه نرم‌افزار را می‌توان به عنوان زیرمجموعه‌ای از اطلاعات در نظر گرفت.

این نرم‌افزار می‌تواند در یک کامپیوتر قرار داشته باشد یا از یک کامپیوتر به کامپیوتر دیگر در حال انتقال باشد. فایل‌ها، داده‌ها، ایمیل‌ها، صدای ضبط‌شده، فیلم‌های ضبط‌شده و برنامه‌ها در رایانه قرار دارند. در حالی که با رایانه کار می‌کنید، ممکن است خراب شود. در حین حمل و نقل، باز هم امکان دارد خراب شود.

هر دستگاهی که دارای پردازنده و حافظه باشد کامپیوتر است. بنابراین، در این مقاله، یک ماشین حساب، یک گوشی هوشمند، یا یک تبلت (به عنوان مثال، iPad) یک کامپیوتر است. هر یک از این دستگاه‌ها و رسانه‌های انتقال شبکه آن‌ها دارای نرم‌افزار یا نرم‌افزار در حال انتقال هستند که باید محافظت شوند.

امتیازات

ممکن است به یک کاربر این امتیاز داده شود که یک فایل را روی رایانه اجرا کند. همچنین به کاربر این امتیاز داده شود که کد یک فایل را در رایانه بخواند. و نیز به کاربر این امتیاز داده شود که کد یک فایل را در رایانه تغییر دهد (نوشتن). این امکان وجود دارد که به یک کاربر یک، دو یا هر سه امتیاز داده شود. امتیازات دیگری برای یک سیستم‌عامل یا پایگاه داده وجود دارد. کاربران مقادیر یا سطوح مختلفی از امتیازات در یک سیستم را دارند.

تهدیدها – مبانی تهدیدات نرم‌افزاری

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

کلاس‌های تهدید نرم‌افزاری

حمله جعل

این وضعیتی است که در آن یک شخص (یا برنامه) با موفقیت، شخص (یا برنامه) دیگری را در برخی از فعالیت‌های نرم‌افزاری نمایندگی می‌کند. این کار با استفاده از داده‌های نادرست برای به دست آوردن مزیت غیرقانونی انجام می‌شود.

انکار

این وضعیتی است که در آن شخصی کار اشتباهی انجام می‌دهد و نمی‌پذیرد که او آن کار را انجام نداده باشد. فرد می‌تواند از امضای شخص دیگری برای انجام کار اشتباه استفاده کند.

نقض داده‌ها

نقض داده زمانی است که اطلاعات امن یا خصوصی به طور عمدی یا ناخواسته در محیطی منتشر می‌شود که قابل اعتماد نیست.

حمله منع سرویس

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

افزایش امتیاز

کاربران مختلف یک سیستم‌عامل یا برنامه، دارای امتیازات متفاوتی هستند. بنابراین، برخی از کاربران در نهایت ارزش بیشتری نسبت به سایرین از سیستم دارند. سوءاستفاده از یک اشکال نرم‌افزاری یا نظارت بر پیکربندی برای دستیابی به دسترسی بالاتر به منابع یا اطلاعات غیرمجاز، افزایش امتیاز است.
طرح‌های طبقه‌بندی فوق را می‌توان برای ایجاد ویروس کامپیوتری و کرم‌ها استفاده کرد. یک یا چند طرح طبقه‌بندی فوق را می توان برای حملات نرم‌افزاری استفاده کرد که عبارتند از:
  • سرقت مالکیت معنوی
  • خرابی پایگاه داده
  • سرقت هویت
  • خرابکاری و اخاذی اطلاعات
اگر شخصی از یک یا چند طرح برای اصلاح مخرب استفاده کند، وب‌سایتی را بطوری که مشتریان سایت اعتمادشان را از دست بدهند، تخریب کرده است. اخاذی اطلاعات، سرقت رایانه یک شرکت یا به دست آوردن نادرست اطلاعات محرمانه درباره شرکت است. کامپیوتر دزدیده شده ممکن است اطلاعات سری داشته باشد. این می‌تواند منجر به باج افزار شود، جایی که دزد در ازای اموال یا اطلاعات دزدیده شده، درخواست پرداخت می‌کند.

حریم خصوصی

وقتی چیزی برای شما حساس یا ذاتاً خاص است، آن چیز برای شما خصوصی است. این در مورد گروهی از افراد نیز صدق می‌کند. یک فرد باید خود را انتخابی بیان کند. برای دستیابی به چنین گزینشی، فرد باید خود را برنامه‌ریزی کند یا اطلاعات مربوط به خود را برنامه‌ریزی کند. این حریم خصوصی است. گروهی از مردم نیاز دارند که خود را انتخابی بیان کنند. برای دستیابی به چنین گزینشی، گروه باید خود را برنامه‌ریزی کند یا اطلاعات مربوط به خود را برنامه‌ریزی کند. این حریم خصوصی است. یک فرد باید به طور انتخابی از خود محافظت کند. برای دستیابی به چنین حفاظت انتخابی، فرد باید از خود محافظت کند یا اطلاعات مربوط به خود را به روشی گزینشی محافظت کند. این یعنی حریم خصوصی. گروهی از مردم باید به طور انتخابی از خود محافظت کنند. برای دستیابی به چنین حفاظت انتخابی، گروه باید از خود محافظت کند یا از اطلاعات مربوط به خود به روشی گزینشی محافظت کند. معنای حریم خصوصی همین است.

شناسایی و احراز هویت

وقتی به یک کشور خارجی سفر می‌کنید، به بندری از آن کشور می‌رسید. در بندر، یک افسر پلیس از شما می‌خواهد که خود را شناسایی کنید. پاسپورت خود را ارائه می‌دهید. افسر پلیس سن شما (از تاریخ تولد)، جنسیت و حرفه شما را از روی پاسپورت می‌داند و به شما (صورت شما) نگاه می‌کند. شناسایی این است که افسر پلیس چهره واقعی شما و عکس داخل گذرنامه را مقایسه می‌کند. او همچنین سن شما را با آنچه در گذرنامه است تخمین می‌زند تا بداند آیا شما هستید یا خیر.
نگاه کردن به شما و ربط دادن سن، جنسیت و حرفه شما با شما، شناسایی است. تأیید اینکه آیا چهره واقعی و عکس شما یکسان است یا خیر و تخمین اینکه آیا ارائه شما با سن شما مطابقت دارد یا خیر، احراز هویت است. شناسایی عبارت است از تداعی یک شخص یا چیزی به صفات معین. نشان دادن هویت نیز شناسایی است. احراز هویت عملی برای اثبات درستی هویت (شناسایی) است. به عبارت دیگر، احراز هویت، عمل اثبات یک ادعا است.
در محاسبات، رایج‌ترین روش احراز هویت، استفاده از رمز عبور است. برای مثال یک سرور، کاربران زیادی دارد. در هنگام ورود، هویت خود را با نام کاربری خود نشان می‌دهید (خود را شناسایی کنید). شما هویت خود را با رمز عبور خود ثابت می‌کنید. رمز عبور شما قرار است فقط توسط شما شناخته شود. احراز هویت می‌تواند فراتر رود. با پرسیدن سوالی مانند “در کدام شهر زندگی می‌کنید یا شهری که به دنیا آمده‌اید کجاست؟”

اهداف امنیتی

اهداف امنیتی در اطلاعات عبارتند از: محرمانگی، صداقت و در دسترس بودن. این سه ویژگی به عنوان سه گانه سازمان سیا (CIA) شناخته میشوند: C برای محرمانگی، I برای صداقت و A برای در دسترس بودن.

محرمانه بودن

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

تمامیت

اطلاعات یا داده‌ها چرخه حیات دارند. به عبارت دیگر، اطلاعات یا داده‌ها دارای زمان شروع و زمان پایان هستند. در برخی موارد، پس از پایان چرخه حیات، اطلاعات (یا داده‌ها) باید (به صورت قانونی) پاک شوند. یکپارچگی شامل دو ویژگی است که عبارتند از:
  1. نگهداری و اطمینان از صحت اطلاعات (یا داده‌ها) در کل چرخه عمر
  2. کامل بودن اطلاعات (یا داده‌ها) در کل چرخه عمر
بنابراین، اطلاعات (یا داده‌ها) نباید به روشی غیرمجاز یا شناسایی نشده کاهش یا اصلاح شود.

دسترسی

برای اینکه هر سیستم کامپیوتری به هدف خود عمل کند، اطلاعات (یا داده‌ها) باید در صورت نیاز در دسترس باشد. این بدان معناست که سیستم کامپیوتری و رسانه انتقال آن باید به درستی کار کند. در دسترس بودن می‌تواند به دلیل ارتقاء سیستم، خرابی سخت‌افزار و قطع برق به خطر بیفتد. در دسترس بودن نیز می‌تواند توسط حملات منع سرویس به خطر بیفتد.

عدم انکار

برای درک اینکه چگونه عدم انکار در ارتباطات دیجیتال قابل اجرا است، ابتدا باید معنی کلید و معنای امضای دیجیتال را بدانید. یک کلید یک قطعه کد است. امضای دیجیتال الگوریتمی است که از کلیدی برای تولید کد دیگری استفاده می‌کند که به امضای مکتوب فرستنده تشبیه می‌شود.
وقتی شخصی از هویت و امضای شما برای امضای قراردادی استفاده می‌کند که هرگز آن را انجام نداده است، عدم انکار زمانی است که نمی‌توانید در دادگاه با موفقیت انکار کنید که این قرارداد را تنظیم نکرده‌اید. در پایان یک قرارداد، طرف ارائه‌دهنده خدمات باید خدمات را ارائه کرده باشد. طرف پرداخت‌کننده باید پرداخت را انجام داده باشد.
در امنیت دیجیتال، عدم انکار (الزاما تضمین نمی‌شود) توسط یک امضای دیجیتال ارائه می‌شود. در امنیت نرم‌افزار (یا امنیت اطلاعات)، عدم انکار به یکپارچگی داده‌ها مربوط می‌شود. رمزگذاری داده‌ها (که ممکن است شنیده باشید) همراه با امضای دیجیتال نیز به محرمانه بودن کمک می‌کند. اهداف امنیتی در اطلاعات عبارتند از: محرمانگی، صداقت و در دسترس بودن. با این حال، عدم انکار ویژگی دیگری است که باید هنگام برخورد با امنیت اطلاعات (یا امنیت نرم‌افزار) در نظر بگیرید.

پاسخ به تهدیدات

به تهدیدات می‌توان به یکی از سه روش زیر پاسخ داد:
  • کاهش/کاهش: اجرای پادمان‌ها و اقدامات متقابل برای از بین بردن آسیب‌پذیری‌ها یا مسدود کردن تهدیدها است.
  • واگذاری/انتقال: این امر بار تهدید را بر دوش نهاد دیگری مانند یک شرکت بیمه یا یک شرکت برون سپاری می‌گذارد.
  • پذیرش: ارزیابی می‌کند که آیا هزینه اقدام متقابل بر هزینه احتمالی ضرر ناشی از تهدید بیشتر است یا خیر؟

کنترل دسترسی

در امنیت اطلاعات که امنیت نرم‌افزار بخشی از آن است، کنترل دسترسی مکانیزمی است که تضمین می‌کند فقط کاربران واجد شرایط می‌توانند به منابع محافظت‌شده در یک سیستم معین، با امتیازات شایسته متفاوت خود دسترسی پیدا کنند.

راه‌حل فعلی برای امنیت اطلاعات

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

امنیت نرم‌افزار مناسب

برنامه‌ها، همانطور که امروزه نوشته می‌شوند، دارای آسیب‌پذیری‌های نرم‌افزاری زیادی هستند که برنامه‌نویسان در 20 سال گذشته بیشتر و بیشتر متوجه آن‌ها شده‌اند. بیشتر حملات با استفاده از این آسیب‌پذیری‌ها به جای غلبه یا کار بر روی کنترل دسترسی انجام می‌شوند.
بافر مانند یک آرایه است اما بدون طول تحمیلی. هنگامی که یک برنامه‌نویس در حال نوشتن در یک بافر است، امکان بازنویسی ناخودآگاه بیشتر از طول آن وجود دارد. این آسیب‌پذیری یک سرریز بافر است. امروزه نرم‌افزار با پیامدهای امنیتی از جمله اشکالات پیاده‌سازی مانند سرریز بافر و نقص‌های طراحی مانند مدیریت ناسازگار خطاها دچار نقص شده است. این‌ها آسیب‌پذیری هستند.
ممکن است در مورد تقلب‌های زبان کامپیوتری مانند تقلب‌های PHP، Perl و C++ شنیده باشید. این‌ها آسیب‌پذیری هستند. امنیت نرم‌افزار، برخلاف نرم‌افزار امنیتی، غلبه بر این آسیب‌پذیری‌ها با نوشتن کدهای دفاعی است که در آن از آسیب‌پذیری‌ها جلوگیری می‌شود. در حالی که برنامه در حال استفاده است، با کشف آسیب‌پذیری‌های بیشتری، توسعه‌دهندگان (برنامه‌نویسان) باید به دنبال راه‌هایی برای کدگذاری مجدد آسیب‌پذیری‌ها به صورت دفاعی باشند.
تهدید حمله منع سرویس را نمی‌توان با کنترل دسترسی متوقف کرد، زیرا برای اینکه فرد این کار را انجام دهد، باید از قبل به میزبان (سرور) دسترسی داشته باشد. می‌توان با افزودن برخی نرم‌افزارهای داخلی که بر کارهایی که کاربران در هاست انجام می‌دهند نظارت می‌کند، آن را متوقف کرد.
امنیت نرم‌افزار یک طراحی قدرتمند است که حملات نرم‌افزاری را دفع می‌کند. نرم‌افزار باید از خود محافظت کند و در حد مطلوب، هیچ آسیب‌پذیری نداشته باشد. به این ترتیب، اجرای یک شبکه امن، آسان‌تر و مقرون‌به‌صرفه‌تر می‌شود.
امنیت نرم‌افزار، طراحی کد دفاعی از داخل برنامه است، در حالی که نرم‌افزار امنیتی در حال اعمال (طراحی) کنترل دسترسی است. گاهی اوقات این دو موضوع با هم همپوشانی دارند، اما اغلب، اینطور نیست. امنیت نرم‌افزار در حال حاضر کاملاً توسعه‌یافته است. اگرچه هنوز در حال توسعه است، اما به اندازه نرم‌افزار امنیتی توسعه‌یافته نیست. هکرهای بد بیشتر با استفاده از آسیب‌پذیری‌های نرم‌افزار به اهداف خود می‌رسند تا با غلبه بر نرم‌افزارهای امنیتی یا کار بر روی آن‌ها. امید است در آینده امنیت اطلاعات بیشتر به امنیت نرم‌افزاری تبدیل شود تا نرم‌افزار امنیتی. در حال حاضر، هم نرم‌افزار امنیتی و هم نرم‌افزار امنیتی باید ادامه داشته باشد.
اگر تست دقیق در پایان توسعه نرم‌افزار انجام نشود، امنیت نرم‌افزار واقعا موثر نخواهد بود. برنامه‌نویسان باید در اجرای برنامه‌نویسی کد دفاعی آموزش ببینند. کاربران همچنین باید در مورد نحوه استفاده از برنامه‌ها به صورت دفاعی آموزش ببینند. در امنیت نرم‌افزار، توسعه‌دهنده باید اطمینان حاصل کند که کاربر امتیازات بیشتری از آنچه که استحقاقش را دارد دریافت نمی‌کند.

نتیجه‌گیری

امنیت نرم‌افزار، طراحی برنامه‌ای با کدگذاری دفاعی در برابر آسیب‌پذیری‌ها، برای دشوار کردن حملات نرم‌افزاری است. از طرف دیگر نرم‌افزار امنیتی، تولید نرم‌افزاری است که کنترل دسترسی را اعمال می‌کند. امنیت نرم‌افزار هنوز در حال توسعه است، اما برای امنیت اطلاعات امیدوارکننده‌تر از نرم‌افزار امنیتی است. از امنیت نرم‌افزار در حال حاضر استفاده می‌شود و محبوبیت آن در حال افزایش است. در آینده، هر دو گزینه موردنیاز خواهند بود، اما با نرم‌افزار، امنیت بیشتر موردنیاز است.