Secure by design
سافٹ ویئر انجینئرنگ میں ڈیزائن کے لحاظ سے محفوظ ہونے کا مطلب یہ ہے کہ سافٹ ویئر کی مصنوعات اور صلاحیتوں کو بنیادی طور پر محفوظ ہونے کے لیے ڈیزائن کیا گیا ہے۔ سافٹ ویئر ڈیزائن کے آغاز میں متبادل حفاظتی حکمت عملیوں، حکمت عملیوں اور نمونوں پر غور کیا جاتا ہے، اور بہترین کو فن تعمیر کے ذریعے منتخب اور نافذ کیا جاتا ہے، اور انہیں ڈویلپرز کے لیے رہنما اصولوں کے طور پر استعمال کیا جاتا ہے۔ اسٹریٹجک ڈیزائن پیٹرن استعمال کرنے کی بھی حوصلہ افزائی کی جاتی ہے جو سیکیورٹی پر فائدہ مند اثرات رکھتے ہیں، حالانکہ وہ ڈیزائن پیٹرن اصل میں سیکیورٹی کو ذہن میں رکھتے ہوئے تیار نہیں کیے گئے تھے۔ سافٹ ویئر سسٹمز کی سیکیورٹی اور پرائیویسی کو یقینی بنانے کے لیے سیکیور بائی ڈیزائن تیزی سے مرکزی دھارے میں شامل ترقیاتی نقطہ نظر بنتا جا رہا ہے۔ اس نقطہ نظر میں، سیکیورٹی پر غور کیا جاتا ہے اور ہر پرت پر سسٹم میں بنایا جاتا ہے اور ایک مضبوط فن تعمیر کے ڈیزائن سے شروع ہوتا ہے۔ حفاظتی آرکیٹیکچرل ڈیزائن کے فیصلے معروف حفاظتی حکمت عملیوں، ہتھکنڈوں اور نمونوں پر مبنی ہوتے ہیں جن کی وضاحت مخصوص معیار کے خدشات کو حاصل کرنے کے لیے دوبارہ قابل استعمال تکنیکوں کے طور پر کی جاتی ہے۔ حفاظتی حربے/نمونے ضروری تصدیق، اجازت، رازداری، ڈیٹا کی سالمیت، رازداری، جوابدہی، دستیابی، حفاظت اور عدم تردید کی ضروریات کو نافذ کرنے کے لیے حل فراہم کرتے ہیں، یہاں تک کہ جب نظام پر حملہ ہو رہا ہو۔ سافٹ ویئر سسٹم کی سلامتی کو یقینی بنانے کے لیے، نہ صرف ایک مضبوط مطلوبہ حفاظتی فن تعمیر کو ڈیزائن کرنا ضروری ہے بلکہ حفاظتی استقامت کو برقرار رکھنے کے لیے سافٹ ویئر کی ترقی کے لیے تازہ ترین حفاظتی حکمت عملیوں، ہتھکنڈوں اور نمونوں کا نقشہ بنانا بھی ضروری ہے۔ سافٹ ویئر پر ممکنہ حملوں کو بدنیتی پر مبنی حملے ماننا چاہیے، اور اثرات کو کم سے کم کرنے کا خیال رکھا جاتا ہے۔ غلط صارف ان پٹ کے ساتھ حفاظتی خطرات کی توقع کی جاتی ہے۔ "اچھے" سافٹ ویئر ڈیزائن، جیسے ڈومین سے چلنے والے ڈیزائن یا کلاؤڈ نیٹو کو استعمال کرنے کا عمل قریب سے متعلق ہے، خطرے کو کھولنے والی غلطیوں کے خطرے کو کم کرکے سیکیورٹی کو بڑھانے کے طریقے کے طور پر-حالانکہ استعمال کیے گئے ڈیزائن کے اصولوں کا تصور اصل میں حفاظتی مقاصد کے لیے نہیں کیا گیا تھا۔ غیر واضح ہونے کے ذریعے سیکیورٹی سے بچیں عام طور پر، جو ڈیزائن اچھی طرح سے کام کرتے ہیں وہ خفیہ ہونے پر انحصار نہیں کرتے ہیں۔ اکثر، رازداری خطرے سے دوچار آبادی کے ذیلی حصے کو کمزور کر کے حملہ آوروں کی تعداد کو کم کر دیتی ہے۔ منطق یہ ہے کہ اگر حملہ آور کے لیے پیچیدگی میں اضافہ ہوتا ہے، تو ہدف سے سمجھوتہ کرنے کی حملہ آور کی بڑھتی ہوئی کوشش ان کی حوصلہ شکنی کرے گی۔ اگرچہ اس تکنیک کا مطلب موروثی خطرات کو کم کرنا ہے، لیکن وقت کے ساتھ استعمال ہونے والے خطرے کے اداکاروں اور تکنیکوں کا عملی طور پر لامحدود مجموعہ زیادہ تر رازداری کے طریقوں کو ناکام بنا دے گا۔ اگرچہ لازمی نہیں ہے، مناسب تحفظ کا عام طور پر مطلب یہ ہے کہ ہر کسی کو ڈیزائن کو جاننے اور سمجھنے کی اجازت ہے کیونکہ یہ محفوظ ہے۔ اس کا فائدہ یہ ہے کہ بہت سے لوگ کمپیوٹر کوڈ کو دیکھ رہے ہیں، جو اس امکان کو بہتر بناتا ہے کہ کوئی بھی خامیاں جلد مل جائیں گی (لینس کا قانون دیکھیں)۔ نقصان یہ ہے کہ حملہ آور کوڈ بھی حاصل کر سکتے ہیں، جس سے ان کے لیے استحصال کرنے کی کمزوریوں کو تلاش کرنا آسان ہو جاتا ہے۔ تاہم، عام طور پر یہ خیال کیا جاتا ہے کہ کھلے کمپیوٹر کوڈ کا فائدہ نقصان سے کہیں زیادہ ہے۔ سب سے کم مراعات بھی، یہ ضروری ہے کہ ہر چیز کم سے کم مراعات کے ساتھ کام کرے (کم سے کم مراعات کا اصول دیکھیں)۔ مثال کے طور پر، ایک ویب سرور جو انتظامی صارف ("روٹ" یا "ایڈمن") کے طور پر چلتا ہے اسے فائلوں اور صارفین کو ہٹانے کا استحقاق حاصل ہو سکتا ہے۔ اس طرح کے پروگرام میں ایک خامی پورے سسٹم کو خطرے میں ڈال سکتی ہے، جبکہ ایک ویب سرور جو ایک الگ تھلگ ماحول میں چلتا ہے، اور صرف مطلوبہ نیٹ ورک اور فائل سسٹم کے افعال کے لیے مراعات رکھتا ہے، اس نظام سے سمجھوتہ نہیں کر سکتا جب تک کہ اس کے ارد گرد کی سیکیورٹی خود بھی ناقص نہ ہو۔ طریقہ کار محفوظ ڈیزائن کو ترقیاتی لائف سائیکل کے تمام نکات پر غور کرنا چاہیے (جو بھی ترقیاتی طریقہ کار کا انتخاب کیا جائے)۔ کچھ پری بلٹ سیکیور بائی ڈیزائن ڈویلپمنٹ کے طریقے موجود ہیں (مثال کے طور پر۔ مائیکروسافٹ سیکیورٹی ڈویلپمنٹ لائف سائیکل)۔ مائیکروسافٹ سیکیورٹی ڈویلپمنٹ لائف سائیکل مائیکروسافٹ نے کلاسیکی سرپل ماڈل پر مبنی طریقہ کار اور رہنمائی جاری کی۔ "محفوظ" کی تعریف کو کنٹرول کرکے اور محفوظ نظاموں کی جانچ اور ان کو مربوط کرنے کے لیے ٹھوس اقدامات فراہم کرکے محفوظ ڈیزائن میں مدد کرنے کے لیے معیارات اور قانون سازی کے معیارات اور قانون سازی موجود ہیں۔ معیارات کی کچھ مثالیں جو سیکیور بائی ڈیزائن کے اصولوں کا احاطہ کرتی ہیں یا ان کو چھوتی ہیں: ای ٹی ایس آئی ٹی ایس 103 645 جو برطانیہ کی حکومت میں جزوی طور پر شامل ہے "کنزیومر سمارٹ پروڈکٹ سائبر سیکیورٹی کو منظم کرنے کی تجاویز" آئی ایس او/آئی ای سی 27000-سیریز محفوظ ڈیزائن کے بہت سے پہلوؤں کا احاطہ کرتی ہے۔ سرور/کلائنٹ آرکیٹیکچرز سرور/کلائنٹ آرکیٹیکچرز میں، دوسری طرف کا پروگرام مجاز کلائنٹ نہیں ہو سکتا ہے اور کلائنٹ کا سرور مجاز سرور نہیں ہو سکتا ہے۔ یہاں تک کہ جب وہ ہوتے ہیں، ایک درمیانی حملہ مواصلات کو خطرے میں ڈال سکتا ہے۔ اکثر کلائنٹ/سرور سسٹم کی سیکیورٹی کو توڑنے کا سب سے آسان طریقہ سیکیورٹی میکانزم کی طرف جانا نہیں ہے، بلکہ ان کے ارد گرد جانا ہے۔ درمیانی حملے میں ایک آدمی اس کی ایک سادہ سی مثال ہے، کیونکہ آپ اسے صارف کی نقالی کرنے کے لیے تفصیلات جمع کرنے کے لیے استعمال کر سکتے ہیں۔ یہی وجہ ہے کہ اپنے ڈیزائن میں خفیہ کاری، ہیشنگ اور دیگر حفاظتی طریقہ کار پر غور کرنا ضروری ہے تاکہ یہ یقینی بنایا جا سکے کہ ممکنہ حملہ آور سے جمع کی گئی معلومات تک رسائی کی اجازت نہیں ہوگی۔ کلائنٹ سرور سیکورٹی ڈیزائن کی ایک اور کلیدی خصوصیت اچھے کوڈنگ کے طریقے ہیں۔ مثال کے طور پر، ایک معروف سافٹ ویئر ڈیزائن ڈھانچے کی پیروی کرنا، جیسے کلائنٹ اور بروکر، ایک ٹھوس بنیاد کے ساتھ اچھی طرح سے تعمیر شدہ ڈھانچے کو ڈیزائن کرنے میں مدد کر سکتے ہیں۔ مزید برآں، اگر مستقبل میں سافٹ ویئر میں ترمیم کی جانی ہے، تو یہ اور بھی اہم ہے کہ یہ کلائنٹ اور سرور کے درمیان علیحدگی کی منطقی بنیاد پر عمل کرے۔ اس کی وجہ یہ ہے کہ اگر کوئی پروگرامر آتا ہے اور پروگرام کی حرکیات کو واضح طور پر نہیں سمجھ سکتا ہے، تو وہ کسی ایسی چیز کو شامل یا تبدیل کر سکتا ہے جو حفاظتی خامی کا اضافہ کر سکتی ہے۔ یہاں تک کہ بہترین ڈیزائن کے ساتھ بھی، یہ ہمیشہ ایک امکان ہوتا ہے، لیکن ڈیزائن کی معیاری کاری جتنی بہتر ہوگی، اس کے ہونے کا امکان اتنا ہی کم ہوگا۔ مزید دیکھیں کمپیوٹر سیکیورٹی سائبر سیکیورٹی کے معیارات متعدد آزاد سطحوں کو سخت کرنا غیر واضح سافٹ ویئر سیکیورٹی اشورینس کے ذریعے ڈیفالٹ سیکیورٹی سیکیور بیرونی لنکس لینکس اور یونیکس ہاؤٹو سیکیور یونکس پروگرامنگ کے لیے سیکیور پروگرامنگ سوالات ٹاپ 10 سیکیور کوڈنگ پریکٹس سیکیورٹی بائی ڈیزائن اصول سافٹ ویئر کے معیار کے مضامین مثال کے طور پر سی کوڈ سافٹ ویئر ڈویلپمنٹ فلسفے سافٹ ویئر ڈویلپمنٹ پروسیس کمپیوٹر سیکیورٹی کے طریقہ کار