نمایان
www.3manage.com
لایسنس آنتی ویروس

اصول امنیت برنامه های وب

اصول امنیت برنامه های وب ( بخش اول )
اینترنت و به دنبال آن وب ، دنیای نرم افزار را دستخوش تحولات فراوانی نموده است . ظهور نسل جدیدی از برنامه های کامپیوتری موسوم به “برنامه های وب ” از جمله این تحولات عظیم است . پس از ارائه سرویس وب در سال ۱۹۹۱، وب سایت های متعددی ایجاد گردید .  اینگونه سایت ها به منظور ارائه اطلاعات به مخاطبان خود از صفحات وب ایستا استفاده می کردند . در چنین وب سایت هائی ، امکان تعامل کاربر با برنامه وجود نداشت .
با توجه به این که رویکرد فوق با ماهیت و یا روح  نرم افزار چندان سازگار نمی باشد ، تلاش های گسترده ای در جهت ایجاد محتویات پویا انجام و متعاقب آن ، فن آوری های متعددی ایجاد گردید . به عنوان نمونه ، با پیاده سازی فن آوری CGI ( برگرفته از Common Gateway Interface  ) ، امکان استفاده از برنامه های خارجی به منظور تولید محتویات پویا فراهم گردید . بدین ترتیب ، کاربران قادر به درج اطلاعات و ارسال آنها برای یک برنامه خارجی و یا اسکریپت سمت سرویس دهنده شدند . برنامه موجود در سمت سرویس دهنده پس از دریافت اطلاعات و انجام پردازش های تعریف شده ، نتایج را تولید و آنها را برای کاربر ارسال می نمود .
رویکرد فوق ،‌ به عنوان نقطه عطفی در برنامه های وب تلقی می گردد چراکه برای اولین مرتبه امکان تولید محتویات پویا در وب سایت ها فراهم گردید . از آن زمان تاکنون فن آوری های متعددی به منظور تولید برنامه های وب ایجاد شده است . PHP و ASP.NET نمونه هائی در این زمینه می باشند .  صرفنظر از این که از کدام فن آوری به منظور ایجاد برنامه های وب استفاده می گردد ، ایمن سازی آنان از جمله اهداف مشترک تمامی پیاده کنندگان است .

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

امنیت برنامه های وب را می بایست با توجه به
نوع معماری و رفتار آنان بررسی نمود .

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

  • ما ایمن هستیم چون از یک فایروال استفاده می نمائیم . این تصور کاملا” اشتباه است و به نوع تهدید بستگی خواهد داشت . مثلا” یک فایروال قادر به تشخیص داده ورودی مخرب جهت ارسال به یک برنامه وب نمی باشد .  فایروال ها دارای عملکردی قابل قبول در رابطه با اعمال محدودیت بر روی پورت ها می باشند  و برخی از آنان می توانند همزمان با بررسی اطلاعات مبادله شده ،‌ امکانات برجسته حفاظتی را ارائه نمایند . فایروال ها جزء لاینفک در یک فریمورک امنیتی می باشند ولی نمی توان آنان را به عنوان یک راهکار جامع به منظور ایجاد و برپائی یک محیط ایمن در نظر گرفت .
  • ما ایمن هستیم چون از SSL ( برگرفته ازSecure Sokets Layer ) استفاده می نمائیم . SSL برای رمزنگاری ترافیک موجود بر روی شبکه یک گزینه ایده آل است ولی قادر به بررسی داده ورودی یک برنامه نمی باشد .
  • ما ایمن هستیم چون از سیستم عاملی استفاده می نمائیم که نسبت به سایر سیستم های عامل دارای امنیت بیشتری است . استدلال فوق با فرض درست بودن اصل قضیه ، نادرست و غیرمنطقی است چراکه امنیت یک فرآیند است نه یک محصول . بنابراین با بکارگیری یک محصول خاص ( به عنوان نمونه یک سیستم عامل ) نمی توان این ادعا را داشت که ما به یک محیط ایمن به منظور ایجاد برنامه های وب دست یافته ایم .
 با رد امنیت یک سیستم عامل نمی توان امنیت یک سیستم عامل دیگر را تائید نمود.
( من خوبم چون شما بد هستید ! )

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

  • Authentication،  فرآیندی است که به کمک آن به صورت منحصربفرد سرویس گیرندگان یک برنامه شناسائی می گردند . کاربران ،  سرویس ها ، فرآیندها و کامپیوترها ،  نمونه هائی از سرویس گیرندگان یک برنامه می باشند . در واقع ، authentication هویت استفاده کنندگان یک برنامه را بررسی می نماید .
  • Authorization ، فرآیندی است که به کمک آن دستیابی سرویس گیرندگان تائید شده به منابع و عملیاتی که قصد انجام آن را دارند بررسی و مجوز لازم صادر می گردد. فایل ها ، بانک های اطلاعاتی ، جداول ، سطرها ، منابع موجود در سطح سیستم نظیر کلیدهای ریجتسری و داده پیکربندی ، نمونه هائی از منابع مورد درخواست سرویس گیرندگان می باشند . انجام تراکنش هائی خاص نظیر خرید یک محصول ، واریز و انتقال پول از یک حساب به حساب دیگر و یا افزایش اعتبار یک کارت اعتباری از جمله عملیاتی می باشند که می بایست مجوز استفاده از آنان برای سرویس گیرندگان صادر گردد . در واقع ، authorization محدوده مجاز عملیاتی را که یک سرویس گیرنده می تواند انجام دهد را مشخص می نماید .
  • Auditing :  ممیزی موثر و ثبت عملیات انجام شده یکی از اصول مهم در جلوگیری از انجام اعمال خلاف قانون است . بدین ترتیب این اطمینان ایجاد خواهد شد که یک کاربر نمی تواند باعث عدم انحام یک کار و یا فعالیت در سیستم گردد و یا یک تراکنش را مقداردهی اولیه نماید . مثلا” در یک سیستم e-commerce  می بایست از مکانیزم هائی استفاده گردد تا این اطمینان حاصل گردد که یک مصرف کننده نمی تواند سفارش انجام شده برای خرید یکصد نسخه از یک کتاب را انکار نماید .
  • Confidentiality، که از آن با نام privacy نیز نام برده می شود ، فرآیندی است که به کمک آن این اطمینان ایجاد می گردد که حریم خصوصی داده رعایت و امکان مشاهده آن توسط کاربران غیرمجاز و یا سایر افرادی که  قادر به ردیابی ترافیک یک شبکه می باشند ، وجود نخواهد داشت .
  •  Integrity ، فرآیندی است که به کمک آن این اطمینان ایجاد می گردد که داده در مقابل تغییرات تصادفی و یا تعمدی حفاظت خواهد شد . همانند privacy ، یکپارچگی اطلاعات یک فاکتور اساسی در خصوص امنیت داده محسوب می گردد ، خصوصا” در مواردی که داده در طول شبکه مبادله خواهد شد . یکپارچگی داده در حال حمل ،‌عموما” با استفاده از روش هائی نظیر hashing و یا کدهای تائید پیام انجام می شود .
  • Availability، فرآیندی است که به کمک آن این اطمینان ایجاد خواهد شد که همواره داده برای کاربران مجاز در دسترس و قابل استفاده خواهد بود . در اغلب حملات از نوع DoS ، مهاجمان این هدف را دنبال می نمایند که بتوانند امکان استفاده و در دسترس بودن برنامه برای کاربران مجاز را غیرممکن و عملا” آن را از کار بیندازند .

تعاریف اولیه برخی از  اصطلاحات امنیتی : تهدیدات ، نقاط آسیب پذیر و حملات

  • تهدید ( threat ) : به هرگونه پتانسیل بروز یک رویداد مخرب و یا سایر موارد دیگر که می تواند به سرمایه های یک سازمان آسیب برساند ، تهدید  گفته می شود . به عبارت دیگر، هر رویدادی که بتواند به سرمایه های یک سازمان آسیب برساند ، در زمره تهدیدات محسوب می گردد .
  • نقاط آسیب پذیر (vulnerability) : ضعف های موجود در یک سیستم می باشند که پتانسیل اولیه بروز یک رویداد مخرب را فراهم می نمایند . ضعف در طراحی ، پیکربندی اشتباه ، استفاده از روش های کدینگ غیرایمن مهمترین دلایل ایجاد یک ضعف در سیستم می باشند . ضعف در بررسی صحت داده ورودی توسط کاربر ، نمونه ای از یک لایه آسیب پذیر در یک برنامه است که می تواند زمینه بروز یک تهاجم را فراهم نماید .
  • تهاجم (attack) : عملیاتی است که محوریت آن سوء استفاده از نقاط آسیب پذیر و پتانسیل های بروز یک رویداد مخرب می باشد .  ارسال ورودی مخرب به یک برنامه و یا flooding یک شبکه به منظور از کار انداختن یک سرویس ، نمونه هائی در این زمینه می باشد .
یک تهدید پتانسیل بروز یک رویداد مخرب را فراهم می نماید که می تواند به سرمایه های یک سازمان آسیب برساند
در حالی که در یک تهاجم موفقیت آمیز از نقاط آسیب پذیر موجود در سیستم استفاده می گردد .

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

ایمن سازی شبکه ، host و برنامه
به منظور  ایجاد برنامه های وب ایمن ، تبعیت از یک رویکرد جامع امری است الزامی . بنابراین ، می بایست امنیت برنامه های‌ وب را در سه لایه متفاوت بررسی و اقدامات لازم را در هر لایه با توجه به جایگاه آن انجام داد . شکل زیر سه لایه مهم به منظور ایجاد برنامه های وب ایمن را نشان می دهد .

 وجود یک نقطه آسیب پذیر در شبکه به یک مهاجم اجازه می دهد تا کنترل یک host و یا برنامه را بدست بگیرد .وجود یک نقطه آسیب پذیر در host به یک مهاجم اجازه می دهد تا بتواند کنترل یک شبکه و یا برنامه را بدست بگیرد .وجود یک نقطه آسیب پذیر در برنامه به یک مهاجم اجازه می دهد تا کنترل یک host و یا شبکه را بدست بگیرد .

در بخش دوم به بررسی هر یک از لایه های فوق خواهیم پرداخت .

اصول امنیت برنامه های وب ( بخش دوم )
در  بخش اول به این موضوع اشاره گردید که به منظور ایجاد برنامه های وب ایمن ، می بایست از یک رویکرد جامع تبعیت و بر روی سه لایه متفاوت شبکه ، host و برنامه متمرکز گردید. در این بخش به  بررسی ایمن سازی شبکه خواهیم پرداخت .

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

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

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

  • جمع آوری اطلاعات
  • sniffing
  • spoofing
  • session hijacking
  • DoS ( برگرفته از Denial of Service )

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

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

نقاط آسیب پذیر
متداولترین نقاط آسیب پذیری که شبکه را مستعد این نوع از حملات می نماید عبارتند از :

  • ماهیت غیرایمن ذاتی پروتکل TCP/IP
  • پیکربندی ضعیف دستگاه های شبکه ای
  • استفاده غیرایمن از سرویس هائی که به وجود آنها در یک شبکه نیاز نمی باشد .

حملات
متداولترین حملات مبتنی بر “جمع آوری اطلاعات”  عبارتند از :

  • استفاده از Tracert به منظور تشخیص توپولوژی شبکه
  • استفاده از Telnet به منظور باز نمودن پورت ها و جمع آوری اطلاعات اولیه
  • استفاده از پویشگرهای پورت به منظور تشخیص وضعیت پورت ها
  • استفاده از درخواست های broadcast برای شمارش تعداد host موجود بر روی یک subnet

پیشگیری و مقابله با تهدیدات 
به منظور پیشگیری و مقابله با این نوع حملات می توان از روش های زیر استفاده نمود :

  • استفاده از امکاناتی که اطلاعات اضافه ای را در خصوص پیکربندی نظیر نام و شماره نسخه نرم افزار ارائه نمی نماید .
  • استفاده از فایروال ها به منظور پوشش سرویس هائی که نمی بایست در معرض دید و استفاده عموم قرار داده شوند .

sniffing
sniffing که به آن “استراق سمع ”  نیز گفته می شود ، مانیتورینگ ترافیک شبکه برای داده هائی نظیر رمزهای عبور ( رمزنشده) و یا اطلاعات پیکربندی است . با استفاده از یک برنامه packetsniffer  ، می توان به سادگی تمامی ترافیک plaintext  ( رمز نشده ) را مشاهده نمود .

نقاط آسیب پذیر
متداولترین نقاط آسیب پذیری که شبکه را مستعد این نوع از حملات می نماید عبارتند از :

  • ضعف امنیت فیزیکی
  • ضعف رمزنگاری در زمان ارسال داده حساس  و مهم
  • وجود سرویس هائی که با یکدیگر به صورت متن معمولی ( رمز نشده ) ارتباط برقرار می نمایند .
  • استفاده از الگوریتم های ضعیف رمزنگاری

حملات
مهاجمان با قرار دادن یک packet sniffer  بر روی شبکه می توانند تمامی ترافیک را capture و  آنالیز نمایند .

پیشگیری و مقابله با تهدیدات 
به منظور پیشگیری و مقابله با این نوع حملات می توان از روش های زیر استفاده نمود :

  • استفاده از یک سیستم امنیت فیزیکی مناسب به منظور پیشگیری از نصب دستگاه های مخرب بر روی شبکه
  • رمزنگاری اطلاعات حساس و ترافیک برنامه بر روی شبکه

Spoofing
spoofing ، که به آن “هویت مبهم ”  نیز گفته می شود  ، به کتمان هویت واقعی بر روی شبکه اطلاق می گردد . در این رابطه از یک آدرس مبداء جعلی که بیانگر آدرس اولیه صادرکننده پیام نمی باشد ، استفاده می گردد . در بسیاری موارد از spoofing به منظور مخفی کردن منبع بروز یک تهاجم استفاده می شود. در برخی موارد که دستیابی به منابع موجود بر روی شبکه بر اساس آدرس متقاضیان انجام می شود ، مهاجمان با تغییر آدرس مبداء سعی می نمایند به اینگونه از منابع دستیابی پیدا نمایند .

نقاط آسیب پذیر
متداولترین نقاط آسیب پذیری که شبکه را مستعد این نوع از حملات می نماید عبارتند از :

  • ماهیت غیرایمن ذاتی پروتکل TCP/IP
  • ضعف در فیلترینگ بسته های اطلاعاتی ورودی و خروجی : ترافیک ورودی و خروجی شبکه به درستی کنترل و فیلتر نمی گردد (ingress & egress filtering )

حملات
یک مهاجم می تواند از ابزارهای متعددی به منظور تغییر آدرس بسته های خروجی استفاده نماید تا اینچنین وانمود نماید که آنها از یک host و یا شبکه دیگر ارسال شده اند .

پیشگیری و مقابله با تهدیدات 
به منظور پیشگیری و مقابله با این نوع حملات می توان از از فیلترینگ egress و ingress بر روی روتر های perimeter استفاده نمود .
session Hijacking
با استفاده از این نوع حملات که به آنها man in middle نیز گفته می شود ، مهاجمان می توانند از یک برنامه برای تغییر شکل ظاهری خود  به عنوان یک سرویس گیرنده و یا سرویس دهنده موجه استفاده نمایند . بدین ترتیب ، یک سرویس دهنده و یا سرویس گیرنده واقعی فریب خورده و فکر می کنند که با یک host معتبر و مجاز ارتباط برقرار نموده اند . در واقع ، این نوع کامپیوترهای میزبان متعلق به مهاجمان بوده که سعی می نمایند با دستکاری شبکه خود را به عنوان مقصد مورد نظر وانمود نمایند . از این نوع حملات به منظور آگاهی از اطلاعات logon و دستیابی به سیستم و سایر اطلاعات محرمانه استفاده می گردد .

نقاط آسیب پذیر
متداولترین نقاط آسیب پذیری که شبکه را مستعد این نوع از حملات می نماید عبارتند از :

  • ضعف در امنیت فیزیکی
  • ماهیت غیرایمن ذاتی پروتکل TCP/IP
  • مبادله اطلاعات به صورت رمزنشده

حملات
یک مهاجم می تواند از ابزارهای متعددی به منظور انجام عملیات spoofing ، تغییر روتینگ و دستکاری بسته های اطلاعاتی استفاده نماید.

پیشگیری و مقابله با تهدیدات 
به منظور پیشگیری و مقابله با این نوع حملات می توان از روش های زیر استفاده نمود :

  • رمزنگاری Session
  • استفاده از روش Stateful inspection در سطح فایروال

DoS
در این نوع از حملات ، امکان دستیابی کاربران مجاز به یک سرویس دهنده و یا سرویس خاص سلب می گردد .در حملات DoS لایه شبکه ، معمولا” مهاجمان با ارسال سیلابی از بسته های اطلاعاتی امکان استفاده از یک سرویس توسط سایر کاربران را سلب می نمایند . علاوه بر مشکل فوق ، در چنین مواردی از پهنای باند و منابع موجود بر روی شبکه استفاده بهینه نخواهد شد .

نقاط آسیب پذیر
متداولترین نقاط آسیب پذیری که شبکه را مستعد این نوع از حملات می نماید عبارتند از :

  • ماهیت غیرایمن ذاتی پروتکل TCP/IP
  • ضعف در پیکربندی روتر و سوئیچ
  • باگ در سرویسهای نرم افزاری

حملات
متداولترین حملات DoS عبارتند از :

  • ارسال سیلابی از بسته های اطلاعاتی نظیر حملات cascadingbroadcast
  • بسته های اطلاعاتی SYNflood
  • سوء استفاده از برخی سرویس ها

پیشگیری و مقابله با تهدیدات 
به منظور پیشگیری و مقابله با این نوع حملات می توان از روش های زیر استفاده نمود :

  • فیلترینگ درخواست های broadcast
  • فیلترینگ درخواست های ICMP ( برگرفته از Internet Control Message Protocol )
  • بهنگام سازی و نصب patches سرویس های نرم افزاری
بدون آنالیز صحیح تهدیدات ،
امکان ایجاد یک محیط و یا شبکه ایمن وجود نخواهد داشت .

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

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

عناصر موجود در زیرساخت شبکه
زیر ساخت شبکه را می توان به سه لایه متفاوت  دستیابی ، توزیع و هسته تقسیم نمود . این لایه ها شامل تمامی سخت افزارهای مورد نیاز به منظور کنترل دستیابی به منابع داخلی و خارجی است .  روتر ،‌سوئیچ و فایروال مهمترین عناصر موجود در زیر ساخت یک شبکه می باشند .

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

روتر و ملاحظات امنیتی آن
اولین خط دفاعی در یک شبکه را روتر تشکیل می دهد . روتر علاوه بر قابلیت روتینگ بسته های اطلاعاتی می تواند بگونه ای پیکربندی گردد تا بسته های اطلاعاتی را بر اساس نوع آنها شناسائی و آندسته از بسته های اطلاعاتی را که ممکن است زمینه بروز حملات و تهدیدات در یک شبکه را ایجاد نماید ، بلاک نماید .  نظیر ICMP  ( برگرفته از InternetControl Message Protocol  )  و یا SNMP ( برگرفته از Simple NetworkManagement Protocol ) .
برای پیکربندی روتر با رعایت ملاحظات امنیتی ، اقدامات متعددی را می بایست در هر یک از گروه های زیر انجام داد :

  • نصب آخرین نسخه های بهنگام شده و patch ارائه شده
  • پروتکل ها
  • دستیابی مدیریت
  • سرویس ها
  • تشخیص مزاحمین
  • ممیزی و لاگ نمودن

در ادامه به بررسی هر یک از موارد فوق خواهیم پرداخت .

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

پروتکل ها
برخی از حملات نظیر DoS به دلیل وجود ضعف امنیتی در پروتکل ها اتفاق می افتد . به عنوان نمونه  ، مهاجمان می توانند با ارسال سیلابی از بسته های اطلاعاتی سرویس و یا سرویس های ارائه شده توسط یک سرویس دهنده را غیرفعال نمایند. به منظور پیشگیری و پاسخ به موقع به این نوع از حملات می بایست اقدامات زیر را انجام داد :

  • استفاده از فیلترینگ ورودی و خروجی : بسته های اطلاعاتی مشکوک می تواند بیانگر کنکاش در شبکه ، تهاجم و یا یک کسب آگاهی لازم از وضعیت شبکه موجود توسط یک مهاجم باشد . بسته های اطلاعاتی دریافتی شامل یک آدرس داخلی می تواند نشاندهنده تلاش جهت نفوذ به شبکه و  آنالیز آن باشد . با این نوع بسته های اطلاعاتی می بایست در اولین محل ممکن برخورد نمود ( Perimeter network ) . همچنین ، می بایست پیکربندی روتر بگونه ای انجام شود که صرفا” اجازه خروج بسته های اطلاعاتی با آدرس های IP داخلی معتبر را بدهد . بررسی بسته های اطلاعاتی خروجی ، یک شبکه را در مقابل حملات از نوع DoS محافظت نخواهد کرد ولی این تضمین را ایجاد خواهد کرد که حمله ای با محوریت یکی از سرویس گیرندگان شبکه داخلی شکل نخواهد گرفت .
  • مشاهده ترافیک ICMP از شبکه داخلی : ICMP یک پروتکل stateless است که اجازه بررسی اطلاعات در دسترس هاست را از یک هاست به هاست دیگر فراهم می نماید . از پیام های مبتتی بر ICMP در موارد متداول زیر استفاده می گردد :
    Echo request : مشخص می نماید که یک گره IP ( یک هاست و یا روتر ) بر روی شبکه در دسترس است .
    Echo reply : پاسخ به یک درخواست ICMP echo
    Destination unreachable : به هاست اعلام می شود که دیتاگرام نمی تواند توزیع گردد .
    Source quench : به هاست اعلام می شود که دیتاگرام ارسالی را با نرخ پائین تری ارسال نماید ( به دلیل شلوغی )
    Redirect : به هاست یک مسیر روت بهتر اعلام می شود .
    Time Exceeded : نشاندهنده این موضوع است که عمر مفید (TTL : Time to live ) یک دیتاگرام به اتمام رسیده است .
    بلاک کردن ترافیک ICMP برروی روتر perimeter باعث حفاظت شبکه در مقابل حملاتی نظیر Cascading pingfloods می گردد . برای بلاک کردن این پروتکل دلایل قانع کننده متعددی وجود دارد . علیرغم دید انتقادی امنیتی نسبت به این پروتکل ،  از آن در موارد متعددی نظیر اشکال زدائی شبکه استفاده می گردد. بنابراین لازم است که استفاده از پروتکل ICMP کاملا” کنترل شده باشد .
  • پیشگیری از پیام های TTL که اعتبار آنها به اتمام رسیده است با مقادیر صفر و یک : برای شمارش تعداد hop بین یک سرویس گیرنده و یک سرویس دهنده ، tracerouting از مقادیر TTL صفر و یا یک استفاده می نماید . trace routing ، به مفهوم جمع آوری اطلاعات توپولوژی شبکه است . با بلاک کردن  اینچنین بسته های اطلاعاتی ، از ارائه اطلاعات تکمیلی که بیانگر جزئیات شبکه موجود است پیشگیری می گردد .
  • عدم دریافت و یا  فوروارد ترافیک directed broadcast : ترافیک هائی اینچنین قادر به شمارش تعداد هاست موجود بر روی‌ یک شبکه می باشند و از آن به عنوان ابزاری جهت آماده سازی و تدارک حملات DoS استفاده می گردد . بسته های اطلاعاتی که حاوی آدرس های مبداء زیر می باشند را می بایست بلاک نمود :
شرح آدرس مبداء
Historical broadcast 0.0.0.0/8
RFC 1918 Private network 10.0.0.0/8
Loopback 127.0.0.0/8
Link local networks 169.254.0.0/16
RFC 1918 private network 172.16.0.0/12
TEST-NET 192.0.20.0/24
RFC 1918 private network 192.168.0.0/16
Class D multicast 224.0.0.0/4
Class E reserved 240.0.0.0/5
Unallocated 248.0.0.0/5
Broadcast 255.255.255.255/32

دستیابی مدیریت
پیکربندی روتر از چه مکانی و به چه صورت انجام می شود  ؟ کدام پورت ها و اینترفیس ها فعال است و مدیران شبکه از چه شبکه و یا هاستی برای پیکربندی روتر استفاده می نمایند ؟ دستیابی به مکان پیکربندی روتر می‌بایست محدود  و  هرگز از اینترفیس های مدیریتی تحت وب بدون رمزنگاری و رعایت مسائل امنیتی نمی بایست استفاده گردد . علاوه بر این رعایت موارد زیر نیز توصیه می گردد :

  • غیرفعال کردن اینترفیس هائی که از آنان استفاده نمی گردد  : صرفا” می بایست اینترفیس های مورد نیاز بر روی روتر فعال گردند .
  • ایجاد رمزهای قوی : از رمزهای عبور مناسب و قدرتمند به منظور استفاده در هر mode روتر می بایست استفاده گردد .  استفاده ترکیبی از حروف الفبائی ، اعداد و حروف ویژه به منظور تعریف یک رمز عبور مناسب توصیه می گردد .
  • استفاده از روتینگ استاتیک  : روتینگ ایستا  از تغییر اطلاعات موجود در جدول روتینگ پیشگیری می نماید . یک مهاجم ممکن است بتواند با تغییر مسیرها حملات از نوع DoS را برنامه ریزی و یا درخواست ها را به یک سرویس دهنده مخرب هدایت نماید .
  • بازبینی اینترفیس های مدیریتی وب : حتی المقدور سعی گردد که اینترفیس های مدیریتی خارجی غیرفعال و از روش های دستیابی داخلی به همراه لیست های دستیابی استفاده گردد .

سرویس ها
بر روی یک روتر پیکربندی شده هر پورت فعال با یک سرویس خاص مرتبط می گردد . به منظور کاهش میدان عملیاتی مهاجمان ، سرویس های پیش فرض که به وجود آنان نیاز نمی باشد را می بایست غیرفعال نمود . به عنوان نمونه سرویس های bootps و finger که از آنان بندرت استفاده می گردد را می توان غیرفعال نمود . همچنین لازم است پورت های‌فعال بر روی روتر بررسی و پورت هائی را که به وجود آْنها نیاز نمی باشد را غیرفعال نمود.

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

تشخیص مزاحمین
به منظور پیشگیری از حملات مبتنی بر TCP/IP  ، روتر می بایست قادر به شناسائی زمان بروز یک تهاجم و اعلام آن به مدیر سیستم باشد . مهاجمان در ابتدا سعی می نمایند که با اولویت های امنیتی یک شبکه آشنا شده و در ادامه با تمرکز بر روی آنها حملات خود را برنامه ریزی می نمایند . با استفاده از سیستم های تشخیص دهنده مزاحمین ( IDS برگرفته شده از Intrusion Detection Systems ) ، می توان زمان و ماهیت وقوع یک تهاجم را بررسی نمود .

 خلاصه
در این مطلب ضمن بیان عناصر کلیدی موجود در زیرساخت یک شبکه به مسائل امنیتی مرتبط با روتر اشاره گردید . به منظور پیکربندی ایمن روتر ، اقدامات متعددی را می بایست انجام داد :

  • نصب آخرین patch و نسخه های بهنگام شده
  • عضویت در خبرنامه امنیتی تولید کنندگان (سخت افزار، نرم افزار )
  • بلاک کردن پورت های شناخته شده
  • کنترل و  نظارت بر ترافیک ورودی و خروجی شبکه
  • مانیتورینگ ترافیک ICMP
  • مدیریت و کنترل ایمن  اینترفیس ها
  • غیرفعال کردن امکان مدیریت از طریق وب
  • استفاده از روتینگ ایستا
  • غیرفعال کردن سرویس های استفاده نشده نظیر bootps و Finger
  • استفاده از از رمزهای عبور قدرتمند
  • لاگ کردن فعالیت ها به منظور تشخیص و بررسی ادواری ترافیک غیرطبیعی
  • مشاهده و کنترل ping بسته های اطلاعاتی با ظرفیت بالا
  • غیر فعال کردن بسته های اطللاعاتی RIP ( برگرفته از Routing Information Protocol  )  در صورت استفاده بر روی روتر مرزی

در بخش چهارم به بررسی فایروال و ملاحظات امنیتی در ارتباط با آن خواهیم پرداخت .

اصول امنیت برنامه های وب (بخش چهارم)

آنچه تاکنون گفته شده است :

  • بخش اول : تبعیت از یک رویکرد جامع به منظور ایجاد برنامه های وب ایمن و تمرکز بر روی سه لایه شبکه ، host و برنامه
  • بخش دوم  : بررسی انواع تهدیدات در شبکه های کامپیوتری ( لایه شبکه و جایگاه آن در ایمن سازی محیط های عملیاتی )
  • بخش سوم : بررسی ملاحظات امنیتی در خصوص بکارگیری روتر ( لایه شبکه و بررسی عناصر موجود در زیر ساخت شبکه )

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

  • بهنگام سازی و نصب patches
  • تعریف فیلترها متناسب با سیستم فیلترینگ انتخابی
  • ممیزی و لاگ حوادث امنیتی
  • استفاده مناسب و بهینه از شبکه های Perimeter
  • تشخیص مزاحمین

در ادامه به تشریح عملیات مرتبط با هر یک از گروه های فوق خواهیم پرداخت .

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

فیلترها
فیلترینگ پورت ها بر روی فایروال روشی موثر و کارآمد برای بلاک کردن بسته های اطلاعاتی مخرب و payload می باشد. امروزه از فناوری های متعددی به منظور فیلترینگ بسته های اطلاعاتی استفاده می گردد . عملکرد این فایروال ها می تواند ساده نظیر فایروال های packet filter باشد که با بررسی هدر IP در لایه شبکه قادر به فیلترینگ بسته های اطلاعاتی بر اساس آدرس مبداء ، آدرس مقصد و شماره پورت می باشند و یا فایروال های پیچیده نظیر فایروال هائی باشد که قادر به بررسی payload یک برنامه خاص می باشند . در استراتژی دفاع در عمق ، استفاده از فیلترهای لایه ای به عنوان یک روش موثر به منظور بلاک کردن حملات پیشنهاد می گردد .
فایروال ها برای  فیلترینگ از روش های متعددی استفاده می نمایند :

  •  Packet filters  : این نوع فیلترها قادر به فیلترینگ بسته های اطلاعاتی بر اساس پروتکل ، آدرس مبداء و مقصد ، شماره پورت مبداء و مقصد و یا نام کامپیوتر می باشند . فیلترینگ بسته های اطلاعاتی IP ایستا می باشد و مبادله داده از طریق یک پورت خاص بلاک و یا امکان پذیر می گردد . بسته های اطلاعاتی بلاک شده لاگ می گردد تا در آینده بتوان رفتار غیرطبیعی شبکه را در مقاطع زمانی خاص بررسی نمود . در لایه شبکه ، payload ناشناخته است و می تواند خطرناک باشد . بدین منظور لازم است  از نوع های خاصی از فیلترینگ هوشمند استفاده گردد تا امکان بررسی payload و اتخاذ تصمیم بر اساس قوانین کنترل دستیابی فراهم گردد .
  • Circuit-level filters :  در این نوع فیلترها در مقابل بررسی داده payload ، اطلاعات مربوط به session  بررسی می گردد . پس از ایجاد یک درخواست توسط  سرویس گیرنده و ارسال مستقیم آن برای فایروال ( و یا gateway ) ، در پاسخ gateway یک ارتباط به سرویس دهنده برای وی را مقداردهی اولیه کرده و خود به عنوان یک کارگزار بین دو نقطه ارتباطی ایفای وظیفه می نماید . این نوع فیلترها با آگاهی از قوانین اتصال سطح برنامه ها این اطمینان را ایجاد می نمایند که صرفا”  بین سرویس گیرنده و سرویس دهنده  ارتباطات معتبر برقرار می گردد . همانگونه که اشاره گردید فیلترهای فوق payload واقعی را بررسی نمی نمایند و در مقابل ، به منظور حصول اطمینان از یکپارچگی بسته های اطلاعاتی و پیشگیری از سرقت session ، اقدام به شمارش تعداد فریم ها می نمایند .
  • Application filters : فیلترهای هوشمند application قادر به آنالیز داده ارسالی برای یک برنامه بوده و می توانند پردازش های مختص برنامه شامل بررسی ، گزینش ، بلاک نمودن ، تغییر مسیر و حتی تغییر داده را در زمان ارسال از طریق فایروال انجام دهند .  این نوع فیلترها قادر به ارائه یک سیستم تدافعی مناسب در مقابل حملاتی نظیر دستورات غیرایمن SMTP ، تهاجم بر علیه سرویس دهندگان داخلی DNS ، حملات مبتنی بر HTTP ( نظیر Code Red و Nimda که از دانش در ارتباط با برنامه ها استفاده می کردند ) ، می باشند . به عنوان نمونه ، یک application filter قادر به بلاک نمودن یک دستور HTTP DELETE می باشد ولی امکان اجرای دستوری نظیر یک HTTP GET را فراهم می نماید . قابلیت گزینش محتویات شامل تشخیص ویروس و آنالیز واژه ای ، این نوع فایروال ها را به عنوان گزینه ای مطلوب در وب مطرح نموده است .
  • Stateful inspection : فیلترهای Application محدود به دانش Payload یک بسته اطلاعاتی می باشند و صرفا” سیستم تصمیم گیری آنها بر اساس payload انجام می شود . فیلترهای Stateful از payload و context آن به منظور تشخیص قوانین فیلترینگ استفاده می نمایند . استفاده از payload و محتویات بسته اطلاعاتی توسط فایروال های فوق، یکپارچگی session و communication را تضمین می نماید .
  • Custom application filters : این نوع فیلترها یکپارچگی مبادله اطلاعات بین سرویس دهنده و سرویس گیرنده را ایجاد می نمایند .

در صورت استفاده از فیلترینگ در چندین سطح شبکه ، امنیت محیط عملیاتی بیشتر می گردد . به عنوان نمونه ، از یک packet filter می توان به منظور بلاک نمودن ترافیک IP بر روی هر پورتی غیر از پورت ۸۰ استفاده نمود و از یک application filter به منظور اعمال محدودیت در ترافیک بر اساس ماهیت توابع HTTP  استفاده نمود ( به عنوان نمونه می توان HTTP DELETE را بلاک نمود ) .

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

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

شبکه های Perimeter
از یک فایروال می بایست در هر مکانی که سرویس دهندگان شما با یک شبکه تائید نشده تعامل دارند ، استفاده گردد . در صورتی که سرویس دهندگان وب شما به یک شبکه back-end متصل می شوند ( نظیر سرویس دهندگان بانک اطلاعاتی ) ، می بایست دو شبکه را از یکدیگر تفکیک نمود . محل استقرار سرویس دهندگان وب ( ناحیه وب ) در معرض دید عموم قرار دارد . بدیهی است که بروز خطر در ناحیه فوق نمی بایست شبکه های درونی سازمان را با مشکل مواجه نماید . به صورت پیش فرض ، شبکه Perimeter می بایست تمامی ارتباطات خروجی را بجز آنانی که انتظارشان را داریم ، بلاک نماید .

مزایای یک شبکه Perimeter 
شبکه های Perimeter دارای مزایای زیر می باشند :

  • هاست ها مستقیما” در معرض دید شبکه های تائید نشده نمی باشند .
  • سرویس های فعال تنها نقطه حملات خارجی می باشند .
  • از قوانین امنیتی می توان به منظور کنترل دستیابی بین شبکه ها استفاده نمود .

معایب یک شبکه Perimeter 
شبکه های Perimeter دارای معایب زیر می باشند :

  • پیچیدگی شبکه
  • مدیریت و اختصاص آدرس IP
  • ایجاد هماهنگی لازم بین  معماری برنامه و طراحی شبکه Perimeter

خلاصه
در این مطلب به مسائل امنیتی مرتبط با فایروال اشاره گردید . به منظور پیکربندی ایمن فایروال ، اقدامات متعددی را می بایست انجام داد :

  • نصب آخرین patch و نسخه های بهنگام شده : نرم افزار فایروال و سیستم عامل می بایست با استفاده از آخرین نسخه های امنیتی بهنگام گردند.
  • عضویت در خبرنامه امنیتی تولید کنندگان (سخت افزار، نرم افزار )
  • لاگ و ممیزی : تمامی ترافیک مجاز می بایست ثبت و در فواصل زمانی مشخص بررسی گردد .
  • یکسان نمودن زمان و تاریخ فایروال با سایر تجهیزات شبکه ای
  • استفاده از  یک سیستم فیلترینگ چند لایه
  • استفاده از شبکه های Perimeter ( در مواردی که لازم است چندین شبکه به سرویس دهندگان دستیابی داشته باشند ) .
  • استفاده از فایروال در نقاطی که شبکه شما با یک شبکه تائید نشده تعامل دارد .

در بخش پنجم به بررسی سوئیچ و ملاحظات امنیتی در ارتباط با آن و جمع بندی ایمن سازی شبکه خواهیم پرداخت .

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

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

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

ضرورت ایجاد یک ارتباط ایمن بین سرویس گیرنده  و سرویس دهنده
همانگونه که اشاره گردید ، برخی از برنامه های وب ، اطلاعات حساسی را از سرویس گیرنده اخذ و در ادامه ، اطلاعات دریافتی  بر اساس زیرساخت موجود برای سرویس دهنده ارسال می گردد. سرویس گیرنده نیز ممکن است اطلاعات حساسی را ( اغلب به منظور تائید دریافت ) برای سرویس گیرنده ارسال نماید . بنابراین  این نوع از برنامه ها نیازمند وجود یک کانال ارتباطی ایمن به منظور مبادله اطلاعات می باشند . به منظور آشنائی بیشتر با اهمیت و جایگاه یک ارتباط ایمن بین سرویس گیرنده و سرویس دهنده ، به بررسی تجارت الکترونیکی و از زاویه برنامه های وب و ارتباطات ایمن ، اشاره می گردد .
اینترنت فرصتی استثنائی و طلائی را برای سازمان ها و موسسات ارائه دهنده کالا و یا خدمات فراهم نموده است که بتوانند با استفاده از زیرساخت موجود ، خدمات و یا کالای خود را در اخیتار متقاضیان و در عرصه جهانی قرار دهند .حجم فروش online در سال ۲۰۰۲  ، نشاندهنده رشد چشمگیر تجارت الکترونیکی است : امریکا  ۴۷ / ۴۳ میلیارد دلار ، اروپا ۲۹ / ۲۸ میلیارد دلار ، آسیای جنوب شرقی ۱۵ میلیارد دلار ، امریکای لاتین ۳ / ۲ میلیارد دلار و افریقا ، ۴ میلیون دلار . بر اساس گزارش DoC)Department ofCommerce) امریکا ، فروش Online در سه ماهه چهارم سال ۲۰۰۲ بالغ بر ۳۳ / ۱۴ میلیارد دلار بوده که نسبت به مدت مشابه در سال ۲۰۰۱ ، بیش از ۲ / ۲۸ درصد رشد و نسبت به سه ماهه سوم سال ۲۰۰۲ ، بیش از ۳ / ۲۹ درصد را داشته است .
علیرغم وجود مزایا و فرصت های تجاری online ، در این رابطه چالش ها و مسائل خاصی وجود داشته  که می بایست به دقت بررسی و راهکار مناسب برای آنان انتخاب گردد. بر اساس مطالعه ای که توسط  موسسه YankelovichPartners  ، انجام شده است ، هشتاد و پنج درصد افراد شرکت کننده درنظر سنجی ، به این موضوع اشاره داشته اند که  آنان اطمینان لازم در خصوص ارسال شماره کارت اعتباری خود را در  اینترنت ندارند. خریداران صرفا” پس از حصول اطمینان از وجود امنیت لازم ، اقدام به ارسال اطلاعات و خرید کالا و یا خدمات از طریق وب سایت ها ی  مربوطه می نمایند. بدیهی است شرط اولیه موفقیت سایت های تجاری Online ، افزایش ضریب اعتماد کاربران می باشد .در این راستا، ایجاد یک زیرساخت ارتباطی ایمن ، جایگاه و اهمیت خاص خود را پیدا می کند . به منظور ایمن سازی تجارت الکترونیکی ، می بایست از یک زیرساخت قابل اعتماد و ایمن ، استفاده گردد.
با استفاده از رمزنگاری PKI) Public KeyInfrastructure ) و تکنولوژی امضای دیجیتالی از طریق گواهینامه های دیجتالی SSL) Secure Sockets Layer) ، امکان تائید کاربران ، پیوستگی و انسجام داده ها ، حصول اطمینان از عدم خواندن و یا دستکاری اطلاعات ارسالی و سایر ملزومات امنیتی لازم در خصوص تجارت الکترونیکی، فراهم می گردد .به منظور ایجاد یک زیرساخت ایمن برای فعالیت های تجاری ، به دو عنصر مهم زیر نیاز می باشد :

  • گواهینامه  های  دیجیتالی برای سرویس دهندگان وب تا امکان تائید ، پیوستگی و محرمانگی اطلاعات  در زمان رمزنگاری ، فراهم گردد .
  • یک سیستم مدیریت پرداخت online ایمن  که امکان فعالیت های تجاری online را برای وب سایت های مربوطه فراهم و بصورت اتوماتیک درخواست ها  را مدیریت نماید (دریافت ، پردازش ، پرداخت ) .

در ادامه با عناصر لازم  به منظور ایجاد یک ارتباط ایمن بین سرویس گیرنده و سرویس دهنده ، آشنا خواهیم شد .

رمزنگاری کلید عمومی و گواهینامه  دیچِیتالی 
رمزنگاری کلید عمومی و سیستم زیربنائی SSL  از جمله ملزومات مورد نیاز برای هر زیرساخت مطمئن در تجارت الکترونیکی می باشند. رمزنگاری ، فرآیندی است که در آن اطلاعات بگونه ای تبدیل می گردند که برای تمامی افراد ( به غیر از گیرندگان تائید شده )، نامفهوم و عملا” غیرقابل استفاده باشند . در فرآیند فوق ، از فرمول های ریاضی (الگوریتم های رمزنگاری )  و اعداد ( کلید ) ، به منظور رمزنگاری و رمزگشائی اطلاعات استفاده می گردد .

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

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

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

  • مرحله اول : وب سایت مورد نظر ، یک زوج کلید عمومی و خصوصی را ایجاد می نماید .
  • مرحله دوم : وب سایت موردنظر ، کلید عمومی را برای کاربر ارسال می نماید .
  • مرحله سوم : کاربر از کلید عمومی به منظور رمزنگاری داده مورد نظر خود استفاده می نماید ( مثلا” شماره کارت اعتباری)
  • مرحله چهارم : کاربر پیام رمز شده ( در این مثال عدد رمز شده ) را برای سرویس دهنده ارسال می نماید .
  • مرحله پنجم : سرویس دهنده با استفاده از کلید خصوصی ، پیام رمز شده دریافتی را رمزگشائی می نماید .

سیستم های مدرن رمزنگاری : یک رویکرد ترکیبی
در سیستم های جدید رمزنگاری از  ترکیب رمرنگاری مبتنی بر کلید عمومی و کلید خصوصی ، استفاده می گردد. هر یک از روش های فوق دارای مزایای خاص خود بوده که با استفاده و ترکیب مزایای موجود در هر یک می توان یک مدل جدید رمزنگاری را ایجاد نمود. حجم عملیات محاسباتی در مدل رمزنگاری کلید عمومی بالا می باشد ( در مقایسه با مدل رمزنگاری کلید خصوصی ) . با توجه به سرعت مناسب مدل رمزنگاری کلید خصوصی ( متقارن ) در رابطه با حجم گسترده ای از اطلاعات ، در سیستم های رمزنگاری پیشرفته ، عموما” از مدل رمزنگاری کلید عمومی به منظور عرضه کلید استفاده شده و در ادامه از مدل رمزنگاری خصوصی به منظور رمزنگاری حجم بالائی از اطلاعات استفاده می گردد . از سیستم های پیشرفته رمزنگاری در پروتکل SSL و به منظور ایمن سازی تراکنش های وب و یا ایمن سازی مدل نامه های الکترونیکی نظیر S/MIME که در محصولاتی نظیر مرورگر نت اسکیپ و IE پیش بینی شده است ، استفاده می گردد .

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

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

به منظور پاسخگوئی به این نوع از سوالات و رفع نگرانی های موجود ، می بایست فرآیند نسبت دهی یک کلید عمومی ( یک ارتباط ایمن با یک کلید عمومی ، آغاز می گردد) به یک entity ( یک شی دلخواه که در یک تراکنش فعالیت دارد ) بصورت ایمن و مطمئن انجام شود ( Secure Binding ) .

در بخش دوم این مقاله با  امضای دیجیتالی ، گواهینامه های دیجیتالی X.509  ، گواهینامه دیجیتالی سرویس دهنده SSL  و  پروتکل SSL  ، آشنا خواهیم شد.

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

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

ویژگی مدل رمزنگاری کلید خصوصی

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

ویژگی مدل رمزنگاری کلید عمومی

  • عدم استفاده از کلیدهای مشابه
  • هر کاربر دارای یک زوج کلید ( عمومی ، خصوصی ) می باشد . از کلید عمومی به منظور رمزنگاری داده و از کلید خصوصی به منظور رمزگشائی داده استفاده می گردد.
  • این مدل رمزنگاری تقریبا” ۵۰۰ مرتبه کندتر از رمزنگاری کلید خصوصی ( متقارن ) است .
  • از مدل رمزنگاری عمومی به منظور مبادله کلید خصوصی و امضای دیجیتال استفاده می شود .
  • شکل زیر ، فرآیند رمزنگاری مبتنی بر کلید عمومی بین دو کاربر را نشان می دهد :

Hash 
یک Hash  که به آن Checksum ، پیام Digest و یا اثرانگشت ، نیز گفته می شود ، فرآیندی است که بصورت ریاضی حجم یک جریان از داده را به یک طول ثابت کاهش می دهد ( معمولا” ۱۲۸ و یا ۱۶۰ بیت ) .  عملکرد hash ، مشابه اثرانگشت یک شخص می باشد. اثرانگشت ، پارامتری منحصربفرد به منظور تشخیص هویت افراد بوده و در ادامه با استفاده از آن امکان دستیابی به سایر مشخصات افراد نظیر : رنگ چشم ، قد ، جنسیت و سایر موارد دلخواه ، فراهم می گردد . اکثر توابع Hash از لحاظ رمزنگاری دارای عملکردی مشابه توابع رمزنگاری  می باشند . در حقیقت ، برخی توابع hash صرفا” تغییرات اندکی را در توابع رمزنگاری ایجاد نموده اند . اکثر عملیات با دریافت یک بلاک  از داده  شروع و در ادامه با استفاده از یک فرآیند تکرارشونده و بکارگیری یک الگوریتم رمزنگاری ، تغییرات لازم در ارتباط با بیت ها ، اعمال می شود. hash ، دارای ویژگی های مهم زیر می باشد :

  • امکان استنتاج ورودی از طریق خروجی وجود ندارد .
  • نمی توان دو ورودی را پیدا کرد که به ازای آنان خروجی یکسانی تولید گردد : احتمال تولید مقادیر Hash یکسان برای دو مجموعه متفاوت از داده ها کمتر از   ۰۰۱ . /  درصد است .

الگوریتم های hashing  ، از یک تابع ایمن رمزنگاری نظیر Message Digest 5)MD5)  و یا Secure Hash Algoritm)SHA) به منظور تولید یک مقدار Hash  مرتبط با  داده ورودی استفاده می نمایند . Hash ، یک نوع خاص از رمزنگاری یک طرفه است . برخی افراد ، hashing  را به عنوان یک مدل رمزنگاری تلقی می نمایند . Hashing عملا” یک مدل رمزنگاری نمی باشد چراکه Hash نمی تواند رمزگشائی گردد ( بدست آوردن مقدار ورودی با اسنتاد و آنالیز مقدار خروجی ) . شکل زیر ، نحوه عملکرد الگوریتم SHA-1 ( نسخه شماره یک ، پیاده سازی شده در سال  ۱۹۹۴ ) را  نشان می دهد :

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

فرآیند امضای داده توسط فرستنده پیام  :

  • دریافت پیام اولیه و محاسبه یک مقدار Hash با استفاده از یک الگوریتم hashing
  • رمزنگاری Hash توسط یک تابع رمزنگاری و اعمال کلید خصوصی توسط فرستنده پیام ( پیام اولیه به همراه مقدار Hash رمز شده ، یک پیام دیجیتالی امضاء شده را تشکیل می دهند ) .
  • ارسال پیام دیجیتالی امضاء شده برای گیرنده

فرآیند بررسی صحت امضاء ارسالی همراه داده  :

  • پس از دریافت پیام توسط گیرنده ، در ابتدا ، Hash رمز شده با استفاده از کلید عمومی فرستنده رمزگشائی می گردد ( Hash رمزگشائی شده ) .
  • محاسبه محلی مقدار Hash پیام ارسالی با استفاده از یک الگوریتم Hashing
  • مقایسه نتایج بدست آمده در مراحل قبل : Hash رمزگشائی شده با مقدارمحلی Hash مقایسه و در صورتیکه نتیجه یکسان باشد ، صحت و اعتبار پیام ارسال شده توسط فرستنده تائید می گردد .

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

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

  • شامل اطلاعات شخصی به منظور تسهیل در شناسائی و ردیابی صاحب کارت
  • شامل عکس و در صورت لزوم امضای مالک آن بوده تا امکان شناسائی موثرتر صاحب آن فراهم گردد .
  • شامل اطلاعات لازم و مورد نیاز در ارتباط با شناسائی و تماس با مرکز صادرکننده مجوز
  • مقاوم در مقابل دستکاری و جعل
  • صادر شده توسط یک مرکز مجاز تا در صورت بروز شرایطی خاص نظیر گم شدن و یا سرقت ، امکان باطل نمودن آن وجود داشته باشد.

گواهینامه های دیجیتال توسط مراکز مجاز و معتبر ( CA) صادر و از آنان به منظور حصول اطمینان از شناسائی online موجودیت های متفاوت نظیر افراد ، سایت ها و یا کامپیوترها ، استفاده می گردد . یک گواهینامه دیجیتال شامل اطلاعات متفاوتی در ارتباط با  تشخیص هویت مالک آن بوده تا بتواند وی را به عنوان یک موجودیت بر روی شبکه ، شناسائی نماید . گواهینامه دیجیتال یک ساختمان داده تعریف شده بر اساس استاندارد X.509 می باشد . در این ساختمان داده اطلاعات متنوعی ذخیره می گردد. یک CA ، از کلید خصوصی خود به منظور شناسائی و تائید گواهینامه های صادر شده توسط خود ، استفاده می نماید . یکی از اطلاعات مهمی که در ساختمان داده فوق ، قرار می گیرد ، امضای دیجیتال مربوط به CA می باشد . CA ، یک مقدار Hash را در ارتباط با گواهینامه صادر شده ، ایجاد و آن را با استفاده از کلید خصوصی خود رمز و در نهایت آن را  در گواهینامه صادر شده قرار می دهد . هر یک از کاربران می توانند به منظور اطمینان از معتبر بودن گواهینامه دیجیتالی صادر شده ، از تابع hash به همراه کلید عمومی CA استفاده نمایند. PKI ( زیرساخت کلید عمومی ) ، از فرمت X.509 نسخه شماره سه گواهینامه دیجیتال استفاده می نماید . شکل زیر ساختار اطلاعات موجود در گواهنیامه دیجیتال را با استفاده از فرمت X.509 نشان می دهد .

  • شماره نسخه : شماره نسخه فرمت گواهینامه را نشان می دهد ( مثلا” نسخه شمار ه سه )
  • شماره سریال گواهنیامه : یک شماره سریال منحصربفرد که توسط CA ، در نظر گرفته شده تا در ادامه امکان ردیابی آن و باطل نمودن آن وجود داشته باشد.
  • شناسه الگوریتم گواهینامه : الگوریتم های رمزنگاری کلید عمومی  و hashing که مراکز CA از آنان به منظور تائید دیجیتالی گواهینامه ها استفاده می نمایند .
  • مرکز صادر کننده : نام مرکز صادرکننده CA  را مشخص می نماید.
  • مدت اعتبار : تاریخ شروع و سررسید گواهینامه را مشخص می نماید .
  • Subject : نام مالک گواهینامه را مشخص می نماید.
  • اطلاعات کلید عمومی subject : کلید عمومی و لیستی از الگوریتم های رمزنگاری کلید عمومی را مشخص می نماید .
  • شناسه منحصربفرد صادرکننده : اطلاعات اختیاری که در صورت ضرورت بصورت منحصربفرد اطلاعات صادرکننده را مشخص می نماید .
  • شناسه منحصربفرد مالک گواهینامه : اطلاعات اختیاری که در صورت ضرورت بصورت منحصربفرد اطلاعات صاحب گواهینامه  را مشخص می نماید .
  • ضمائم : اطلاعات اضافه ای که زیر ساخت PKI درصورت ضرورت استفاده می نماید.
  • امضای دیجیتال مجاز گواهینامه : امضای دیجیتالی CA که در آخرین مرحله ایجاد گواهینامه ، تولید می گردد .

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

مراکز CA ، دارای ویژگی های زیر می باشند :

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

مشاهده گواهینامه های دیجیتال
برای مشاهده آخرین وضعیت گواهینامه های دیجیتال بر روی سیستم خود ، برنامه IE را فعال نموده و از طریق منوی Tools گزینه Internet Options را فعال  و درادامه با انتخاب Content Tab و فعال نمودن Certificate می توان از وضعیت گواهینامه های دیجیتال ، آگاهی یافت .
در بخش سوم این مقاله به بررسی پروتکل SSL ، خواهیم پرداخت .

ایجاد یک ارتباط ایمن در برنامه های وب (بخش سوم)

 آنچه تاکنون گفته شده است :
  • بخش اول ضرورت ها ی  وجود یک ارتباط ایمن بین سرویس گیرنده و سرویس دهنده
  • بخش دوم : بررسی امضای دیجیتال و گواهینامه های دیجیتالی

در بخش سوم این مقاله به بررسی موارد اشاره شده در دو مقاله قبل و از زاویه دیگر پرداخته و با پارامترهای لازم به منظور انتقال اطلاعات حساس در یک شبکه بیشتر آشنا خواهیم شد. انتقال اطلاعات حساس  بر روی یک شبکه مستلزم بکارگیری مکانیزمی است که سه ویژگی زیر را تضمین نماید:

  • امنیت : داده ارسالی نمی بایست  توسط افراد غیر مجاز، استفاده ( خواندن ) گردد  .
  • هویت : افراد شرکت کننده در ارتباط همان افرادی می باشند که ادعا می نمایند .
  • غیرجعلی بودن اطلاعات : داده دریافت شده در مقصد با داده ارسال شده در مبداء یکسان بوده و اطلاعات دستکاری نشده باشد.

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

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

رمزنگاری کلید عمومی و امنیت
روش رمزنگاری کلید عمومی ،  مبتنی بر رابطه ریاضی بین کلیدهای عمومی و خصوصی بوده و دارای قدرت مناسب و تضمین لازم در خصوص  ارائه امنیت بالا در مقابل تهاجمات اطلاعاتی است .ارتباط ریاضی بین کلید عمومی و خصوصی بسیار پیچیده می باشد . رابطه موجود مبتنی بر مضرب اعداد بزرگ است . مضرب استفاده شده یک عدد دویست رقمی می باشد که با توجه به امکانات سخت افزاری موجود به چهار میلیارد سال زمان به منظور تشخیص ارتباط موجود بین دو کلید ، نیاز می باشد( با این فرض که زمان اجرای هر دستورالعمل یک میکروثانیه در نظر گرفته شود) . همانگونه که ملاحظه می گردد امنیت روش رمزنگاری فوق ، بسیار بالا می باشد.رمزنگاری کیلد عمومی، زیرساخت اساسی و اولیه در یک ارتباط ایمن بر روی یک شبکه را فراهم نموده و از آن در  پروتکل های ارتباطی ایمن نظیر SSL)Secure Socket Layer) استفاده می گردد. پروتکل SSL ، یک مدل handshake امنیتی است  که از آن به منظور ارائه  یک ارتباط ایمن بین سرویس دهنده و سرویس گیرنده ، استفاده می گردد .

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

رمزنگاری کلید عمومی و غیرجعلی بودن اطلاعات
بررسی هویت افراد مستلزم فرآیند دیگری به منظور تشخیص اصالت داده  ارسالی ( غیرجعلی بودن )  نیز می باشد.در این رابطه هدف ، حصول اطمینان از این موضوع است که داده دریافتی ، همان داده ارسال شده توسط فرستنده است. با توجه به  ماهیت رمزنگاری کلید عمومی ، در صورتیکه یک پیام جعل گردد، دریافت کننده قادر به رمزگشائی آن با استفاده از کلید عمومی فرستنده ، نخواهد بود. علیرغم موضوع فوق ، در برخی حالات ، ممکن است قصد ارسال داده شفاف (Plain ) وجود داشته باشد. در چنین مواردی لازم است ، گیرنده امکان  تشخیص هویت ارسال کننده و غیر جعلی بودن پیام را دارا باشد. با استفاده از یک امضای دیجیتالی به افراد اجازه داده شود که بررسی لازم در خصوص جعلی نبودن یک داده شفاف (plain ) را انجام دهند.
یک امضای دیجیتالی ، مشابه یک امضای دستی و معمولی بوده و می توان از آن به منظور تائید هویت فرستده و اطمینان از عدم تغییر داده ( سند ؛ یک پیام ، یک عنصر نرم افزاری ) در زمان ارسال ، استفاده نمود.
امضای دیجیتال از رشته ای  که hash و یا Checksum نامیده می شود ، مشتق شده و پس از محاسبه با استفاده از داده ورودی ، با استفاده از کلید خصوصی فرستنده ، رمز می گردد. hash مشابه یک اثرانگشت بوده و با استفاده از الگوریتم های Hash که حجم بالائی از داده را دریافت و بخش بمراتب کوچکتری را برمی گردانند ( معمولا” یک طول ثابت ) ، ایجاد می شود.الگوریتم های Hash ، تضمین لازم در خصوص عدم محاسبه یک مقدار hash یکسان برای داده های ورودی متفاوت را ارائه می نمایند.
مکانیزم امضای دیجیتال ، به صورت منخصربفرد رشته hash را به سند و کلید خصوصی مالک سند ، نسبت می دهد . عدم جعلی بودن یک سند می تواند با رمزگشائی امضای دیجیتال با استفاده از کلید عمومی فرستنده (  شناسائی هویت فرستنده پیام ) ، محاسبه محلی hash و مقایسه آن با چیزی که دریافت شده است ، محقق گردد . شکل زیر نحوه ایجاد ، بررسی و تائید امضای دیجیتال  را نشان می دهد :

فرآیند تولید امضای دیجیتالی برای یک سند، signing نامیده می گردد .فرآیند فوق ، محتوی یک سند را تغییر نداده و صرفا” یک امضای دیجیتالی تولید که می توان آن را همراه سند و یا بصورت جداگانه ارسال نمود.

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

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

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

انواع گواهینامه ها
در اینترنت از چهار نوع گواهینامه دیجیتال استفاده می گردد که هر یک دارای  حوزه عملکردی خاص خود می باشند :

  • گواهینامه های سرویس دهنده ، که از آنان  با نام Server IDs نیز نام برده می شود،به سرویس دهندگان امکان استفاده از یک پروتکل ایمن ارتباطی نظیر SSL را خواهند داد . گواهینامه های فوق ، امکان شناسائی سرویس دهنده و یا وب سایت مربوطه را برای کاربران نیز فراهم می نماید( قبل از ارسال اطلاعات محرمانه توسط کاربران ) .
  • گواهینامه های شخصی ، مسولیت شناسائی افراد را برعهده داشته و ممکن است به منظور تائید کاربران در یک سرویس دهنده و یا فعال نمودن نامه الکترونیکی ایمن، مورد استفاده قرارگیرند.
  • گواهینامه های ناشر نرم افزار ، به منظور تائید نرم افزارهای توزیع شده بر روی اینترنت استفاده می گردند.
  • گواهینامه های مراکز CA ، باعث شناسائی یک CA می گردند. مراکز CA را می توان به دو گروه  عمده تقسیم نمود : مراکز CA  ریشه و مراکز CA میانی . تفاوت بین این دو گروه بشرح زیر است :
    یک مرکز CA ریشه ، قادر به صدور هر نوع گواهینامه بوده و شناسائی و تائید آنان توسط خود مرکز انجام می شود. یک مرکز CA میانی ، قادر به صدور هر نوع گواهینامه  بجزء یک گواهینامه برای خودش ، می باشد.گواهینامه صادر شده توسط یک مرکز CA ریشه ، تنها نوع گواهینامه ای است که صادرکننده و مالک گواهینامه متعلق به یک محل بوده و مشابه یکدیگر می باشند. اینچنین مراکز ، می توانند برای یک مرکز CA میانی دیگر ، گواهینامه صادر نمایند و یک مرکز CA میانی نیز می تواند یک گواهینامه برای یک مرکز CA میانی دیگر صادر نماید . نوع گواهینامه صادر شده توسط یک مرکز CA برای مرکز CA دیگر ، گواهینامه CA نامیده می شود . ماحصل فرآیند فوق ، ایجاد یک ساختار سلسله مراتبی CA است . یکی از مزایای مهم ساختار سلسله مراتبی فوق ، بررسی و تائید گواهینامه در تعدادی اندک از مراکز ریشه CA ، می باشد. به عبارت دیگر در صورتیکه یک مرکز CA تائید گردد ، تمامی مراکز زیرمجموعه ( مراکز میانی CA ) نیز تائید خواهند شد .

دریافت یک گواهینامه سرویس دهنده
در صورتیکه تصمیم به گرفتن یک گواهینامه وجود داشته باشد ، می بایست با یک مرکز  CA تماس گرفته شود. فرآیند دریافت یک گواهینامه که Enrollment ( ثبت نام )  نامیده می شود ، با توجه به نوع گواهینامه متفاوت می باشد . همانگونه که اشاره گردید ، یک گواهینامه سرویس دهنده ، مسئولیت شناسائی یک سرویس دهنده را با استفاده از پروتکل SSL برای یک ارتباط ایمن بر روی وب ، برعهده دارد. زمانیکه یک مرورگر ارتباط خود را با یک سرویس دهنده وب تائید شده از طریق پروتکل HTTPS  ( نسخه ایمن پروتکل HTTP ) برقرار می نماید ، کلید عمومی سرویس دهنده را از طریق گواهینامه مربوطه خود دریافت می نماید . بدین ترتیب مرورگر ، قادر به شناسائی ایمن  صاحب سرویس دهنده و استفاده از کلید عمومی وی به منظور رمزنگاری داده می باشد .به منظور فعال نمودن یک سرویس دهنده وب برای استفاده از SSL و گواهینامه ها ، می بایست یک رویه خاص با توجه به نوع سرویس دهنده وب و مرکز صادر کننده CA ، دنبال گردد. مراحل دریافت یک گواهینامه به شرح ذیل می باشد :

  • یک گواهینامه سرویس دهنده  به یک Domain اینترنت نسبت داده می شود ، بنابراین لازم است از ثبت  Domain وب سایت مربوطه ، اطمینان حاصل نمود ( قبل از اقدام به دریافت یک گواهینامه می بایست Domain ثبت گردد) .
  • با استفاده از ابزارهای ارائه شده همراه نرم افزار سرویس دهنده ، می بایست یک زوج کلید و یک  Certificate Signing Request )CSR) ، ایجاد گردد.  ماحصل عملیات فوق تولید کلید خصوصی و عمومی مرتبط با سرویس دهنده می باشد . فرآیند فوق بسیار مهم می باشد ، چراکه  CSR تولید شده شامل یک نسخه از کلید عمومی سرویس دهنده می باشد .در زمان  تولید CSR ، می بایست اطلاعات دیگری نظیر URL وب سایت ، نام شرکت و یا سازمان متقاضی و آدرس مربوطه ، نیز مشخص گردد. ماحصل عملیات فوق ، یک فایل ASCII بوده که شامل درخواست گواهینامه با استفاده از یک فرمت شناخته شده با نام PKCS#10 می باشد .
  •  در ادامه،می توان CSR را به مرکز CA انتخاب شده ، ارسال نمود.بدین منظور می توان از روش های متفاوتی نظیر ارسال توسط نامه الکترونیکی و یا استفاده از فرم های ثبت نام Online موجود بر روی وب سایت مرکز CA ، استفاده نمود.
  •  پس از ارسال CSR به مرکز CA ،بررسی لازم در خصوص اطلاعات انجام و در صورت لزوم درخواست اطلاعات تکمیلی می گردد. پس از اتمام مراحل بررسی ، CA یک گواهینامه را بهمراه اطلاعات ذیربط نظیر : کلید عمومی ، تاریخ سررسید و سایر موارد ، صادر و آن را با استفاده از کلید خصوصی خود ، Sign  و در ادامه آن را برای  متقاضی ارسال و یا بر روی یک وب سایت مستقر تا امکان دریافت آن فراهم گردد.گواهینامه دریافت شده یک فایل ASCII شامل داده با فرمت استاندارد PKCS#7 ، می باشد.
  •  در مرحله آخر، می بایست گواهینامه صادر شده بر روی سرویس دهننده وب ، نصب گردد. بدین منظور می توان از مستندات ارائه شده به همراه سرویس دهنده وب استفاده نمود.به منظور حفاظت از گواهینامه صادرشده ، لازم است یک نسخه Backup از آن تهیه گردد. در صورتیکه گواهینامه سرویس دهنده گم گردد ، می بایست یک CSR جدید ارسال و مراحل فوق مجددا” تکرار گردد.

در بخش چهارم  این مقاله با پروتکل SSL آشنا خواهیم شد .

ایجاد یک ارتباط ایمن در برنامه های وب (بخش چهارم)

 آنچه تاکنون گفته شده است :
  • بخش اول ضرورت  وجود یک ارتباط ایمن بین سرویس گیرنده و سرویس دهنده
  • بخش دوم : بررسی امضای دیجیتال و گواهینامه های دیجیتالی
  • بخش سوم : بررسی پارامترهای لازم به منظور انتقال اطلاعات حساس در یک شبکه

در بخش چهارم  این مقاله به بررسی پروتکل  SSL ، خواهیم پرداخت.
مبادله اطلاعات در اینترنت مبتنی بر پروتکل TCP/IP بوده که در آن از پروتکل های متعددی نظیر HTTP (Hypertext Transfer Protocol )،  Telnet و( FTP(File TransferProtocol ،  استفاده می گردد . پروتکل های فوق ، گزینه مناسبی برای ایجاد یک ارتباط ایمن نمی باشند ، چراکه مبادله اطلاعات به صورت Plaintext انجام می شود . اطلاعات محرمانه و یا حساسی که با استفاده از اینچنین پروتکل هائی منتقل می گردد ، بسادگی قابل ره گیری و خواندن بوده و در این رابطه لازم است ،اطلاعات ارسالی با استفاده از روش های متفاوت رمزنگاری ، رمز گردند. سرویس گیرندگان  وب ، درخواست های خود را با استفاده از پروتکل HTTP برای سرویس دهندگان وب ارسال می نماید . مبادله اطلاعات با استفاده از پروتکل فوق و با توجه به ماهیت آن ، چالش های امنیتی خاصی را برای سرویس دهندگان و سرویس گیرندگان به دنبال خواهد داشت . سرویس دهندگان  وبی که صرفا” از استاندارد HTTP به منظور ارتباط با سرویس گیرندگان استفاده می نمایند ، اهداف مناسبی برای حملاتی از نوع ( DoS (Denial-of-Service  و سایر حملاتی از این نوع می باشند. علاوه براین ، سرویس دهندگانی اینچنین، اهداف مناسبی برای سرویس دهندگان وب تائید نشده محسوب خواهند شد. . این نوع سرویس دهندگان ، وب سایت هائی می باشند که خود را به عنوان یک سایت مثبت وانمود کرده و نرم افزارهائی شامل ویروس های کامپیوتری و یا اسکریپت های مخرب را بر روی سایت مستقر تا کاربران با دریافت و نصب آنان ، دچار مشکلات امنیتی گردند.
پروتکل های ارتباطی ایمن وب ، روشی به منظور تائید سرویس گیرندگان و سرویس دهندگان بر روی وب وحفاظت لازم درخصوص محرمانگی ارتباط بین سرویس گیرندگان و سرویس دهندگان را ارائه می نمایند. تاکنون استانداردهای ارتباطی ایمن متعددی با استفاده از تکنولوژی رمزنگاری کلید عمومی ، پیاده سازی شده است. پروتکل های Secure Hypertext Transfer Protocol )  SHTTP  ، ( IP Security)  IPSec) و PPTP نمونه هائی در این زمینه می باشند . پروتکل ( SSL (  Secure Socket Layer  ، پیشگام تمامی پروتکل های ایمن ارتباطی بوده که در ابعاد گسترده ای به منظور ارائه کانال ایمن ارتباطی و مبادله اطلاعات حساس و محرمانه بر روی وب ، استفاده می گردد .
در پروتکل SSL از مدل رمزنگاری کلید عمومی به عنوان زیرساخت اولیه و در جهت ارائه یک ارتباط ایمن در شبکه استفاده می شود.گواهینامه های سرویس دهنده ، که از آنان  با نام Server IDs نیز نام برده می شود،به سرویس دهندگان امکان استفاده از یک پروتکل ایمن ارتباطی نظیر SSL را داده و همچنین ، امکان شناسائی سرویس دهنده و یا وب سایت مربوطه نیز برای کاربران و قبل از ارسال اطلاعات محرمانه ، فراهم می گردد . لازم است به این موضوع مجددا” اشاره  گردد که وجود یک کانال ارتباطی ایمن یکی از مهمترین عوامل در ارتباط با گسترش تجارت الکترونیکی محسوب می گردد. حصول اطمینان از وجود یک ارتباط ایمن بین خریداران ( سرویس گیرندگان ) و  ارائه دهندگان کالا و یا خدمات  (سرویس دهندگان )  از مهمترین عوامل موفقیت در برپاسازی یک سایت  تجارت الکترونیکی است . نقش و جایگاه پروتکل SSL در این نوع سایت ها بسیار حیاتی و تعیین کننده است . در ادامه با این پروتکل بیشتر آشنا می شویم .

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

  •  SSL ServerAuthentication ، گواهینامه های سرویس دهنده امکان شناسائی یک سرویس دهنده وب را برای کاربران فراهم می نمایند. مرورگرهای وب به صورت اتوماتیک ، بررسی لازم در خصوص اعتبار یک گواهینامه سرویس دهنده ، شناسه عمومی و صدور آن توسط یک مرکز صدور گواهینامه (CA ) معتبر را انجام می دهند.تائید سرویس دهنده SSL ، امری حیاتی برای ایمن سازی تراکنش های تجارت الکترونیکی بوده که در آن هر یک از کاربران شماره کارت اعتباری خود را بر روی وب ارسال و تمایل دارند در ابتدا بررسی لازم در خصوص هویت سرویس دهنده دریافت کننده را انجام دهند .
  • SSL Encryption  ، گواهینامه های سرویس دهنده  یک کانال ایمن به منظور مبادله اطلاعات بین مرورگر کاربر و یک سرویس دهنده وب را با استفاده از ارسال نرم افزار و رمزگشائی توسط نرم افزار دریافت کننده و حفاظت اطلاعات خصوصی در مقابل ره گیری اطلاعات برروی اینترنت را ارائه می نمایند. علاوه بر این ، تمامی داده ارسالی از طریق یک ارتباط رمز شده SSL  با استفاده از مکانیزم های لازم به منظور عدم دستکاری اطلاعات ، حفاظت می گردد. بدین ترتیب ، کاربران اطمینان لازم به منظور ارسال اطلاعات خصوصی و محرمانه خود را برای یک وب سایت پیدا می نمایند.

نحوه عملکرد گواهینامه های سرویس دهنده SSL
شناسه های سرویس دهنده (Server IDs) ، از مزایای SSL به منظور ارائه یک ارتباط ایمن بین وب سایت ها و مرورگرهای وب کاربران استفاده می نمایند. پروتکل SSL از ترکیب مدل رمزنگاری کلید عمومی و رمزنگاری سریع متقارن، استفاده می نماید .فرآیند ایجاد یک ارتباط ایمن با برقراری یک SSLHandshake ، آغاز می گردد.در این راستا ، سرویس دهنده خود را برای مرورگر کاربر تائید نموده و در ادامه به سرویس دهنده و سرویس گیرنده اجازه داده می شود که با همکاری یکدیگر کلیدهای خصوصی لازم به منظور استفاده در رمزنگاری ، رمزگشائی و تشخیص عدم دستکاری داده را ایجاد نمایند .

  • سرویس گیرنده با یک سایت و به منظور دستیابی به یک URL ایمن ( یک URL که با https در مقابل http شروع شده است) ، ارتباط برقرار می نماید . صفحه ایمن درخواستی ، می تواند یک فرم خرید Online باشد که در آن اطلاعات خصوصی کاربران، نظیر : آدرس ، شماره تلفن و  شماره کارت اعتباری اخذ می گردد.
  • مرورگر سرویس گیرنده بصورت اتوماتیک شماره نسخه SSL مرورگر ، تنظیمات رمز، داده تولید شده بصورت تصادفی و سایر اطلاعات مورد نیاز به منظور برقراری یک ارتباط ایمن را برای  سرویس دهنده ارسال می نماید.
  • سرویس دهنده بصورت اتوماتیک پاسخ لازم را در این رابطه داده و گواهیینامه دیجیتال ، شماره نسخه SSL سرویس دهنده ، تنظیمات رمز و سایر موارد مورد نیاز را برای مرورگر سرویس گیرنده ،ارسال می نماید .
  • مرورگر سرویس گیرنده بررسی لازم در خصوص اطلاعات موجود در گواهینامه سرویس دهنده را انجام  می دهد :
    – آیا گواهینامه سرویس دهنده و تاریخ آن معتبر می باشند ؟
    – آیا مرکزی که گواهینامه را صادر نموده است ، یکی از مراکز صدورمعتبری است  که گواهینامه آنان به همراه مرورگر ارائه شده است ؟
    – آیا کلید عمومی مرکز صادرکننده گواهینامه ( ایجاد شده درون مرورگر ) ، معتبر بودن امضای دیجیتالی صادر کننده را تائید می نماید ؟
    – آیا نام Domain مشخص شده توسط گواهینامه دیجیتال با نام واقعی Domain سرویس دهنده ، مطابقت می نماید ؟
    در صورتی که ، سرویس دهنده  تائید نگردد به کاربر اعلام می گردد که امکان برقراری یک ارتباط رمزشده و مطمئن وجود ندارد .
  • در صورتی که سرویس دهنده بصورت موفقیت آمیز تائید گردد ، مرورگر سرویس دهنده یک “session key ” منحصربفرد را به منظور رمزنگاری تمامی اطلاعات مبادله شده با سرویس دهنده  با استفاده از مدل رمزنگاری کلید عمومی ، ایجاد می نماید  .
  • مرورگر سرویس گیرنده  ، session key را با استفاده از کلید عمومی سرویس دهنده ( وب سایت مورد نظر ) ، رمز و آن را برای سرویس دهنده ارسال می نماید. بدین ترتیب ، صرفا” سرویس دهنده قادر به خواندن session key ، خواهد بود .
  • سرویس دهنده با استفاده از کلید خصوصی مربوط به خود ، اقدام به رمزگشائی  session key  می نماید .
  • مرورگر سرویس گیرنده در ادامه پیامی را برای سرویس دهنده ارسال و به وی اعلام می نماید که پیام های آتی خود را با استفاده از  session key  رمز و ارسال می نماید .
  • سرویس دهنده در ادامه ، پیامی را برای سرویس گیرنده ارسال و به وی اعلام می نماید که پیام های آتی خود را با استفاده از  session key  رمز و ارسال می نماید .
  •  با اتمام مراحل فوق ، یک ارتباط ایمن مبتنی بر SSL بین سرویس گیرنده و سرویس دهنده برقرار می گردد . در ادامه پروتکل SSL به منظور رمزنگاری و رمزگشائی پیام ها از مدل رمزنگاری متقارن که بمراتب سریعتر نسبت به رمزنگاری کلید عمومی می باشد ، استفاده می نماید .
  • پس از اتمام  ارتباط بین سرویس دهنده و سرویس گیرنده ،  session key حذف می گردد .

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

در صورتی که ، کاربران شماره کارت اعتباری و سایر اطلاعات خود را برای سایتی ارسال نمایند که دارای یک گواهینامه سرویس دهنده معتبر و یک ارتباط SSL می باشد ، پیام فوق نمایش داده نمی گردد . علیرغم اعتبار ارتباط ایمن ایجاد شده ، کاربران می توانند با  توجه به نکات زیر اطمینان لازم در خصوص ایمن بودن ارتباط برقرار شده با یک وب سایت را پیدا نمایند:

  • URL مشخص شده در پنجره مرورگر با https در مقابل http  آغاز می گردد .
  • درمرورگر  IE ، یک آیکون Podlock ، در قسمت پائین پنجره نمایش داده می شود .

در صورت کلیک بر روی آیکون فوق ، می توان اطلاعات جامعی را در ارتباط با گواهینامه مشاهده نمود .

انواع SSL (  چهل بیتی و یکصدوبیست و هشت بیتی )
پروتکل SSL به دو صورت ۴۰ و ۱۲۸ بیتی که به طول sessionkey تولید شده بستگی دارد ، ارائه شده است . هر اندازه طول کلید بیشتر باشد ، امکان شکستن رمز مشکل تر خواهد بود . رمزنگاری SSL  از نوع ۱۲۸ بیتی ، قویترین نوع رمزنگاری بوده که با استفاده از تکنولوژی های موجود به میلیاردها سال زمان برای شکستن رمز آن نیاز خواهد بود. قدرت رمزنگاری ۱۲۸ بیتی تقریبا”  ۲۶ ۱۰ * ۳ مرتبه قویتر از رمزنگاری ۴۰ بیتی SSL است. مرورگرهای IE و نت اسکیپ ، سطوح متفاوتی از رمزنگاری را بر اساس نوع گواهینامه سرویس دهنده SSL ارائه می نمایند (  گواهینامه های سرویس دهنده SSL از نوع ۴۰ بیتی ، گواهینامه های سرویس دهنده SSL  از نوع ۱۲۸ بیتی ) .
در رمان ایجاد یک مشخصه سرویس دهنده ( Server ID ) و به منظور استفاده از رمزنگاری ۱۲۸ بیتی می بایست کلید خصوصی به درستی ایجاد گردد. در صورتی که کلید خصوصوصی ۱۰۲۴ بیتی انتخاب گردد ، امکان رمزنگاری ۱۲۸ بیتی و در صورتیکه کلید خصوصی ۵۱۲ بیتی در نظر گرفته شود، صرفا” امکان رمزنگاری ۴۰ بیتی وجود خواهد داشت . نوع کلید خصوصی در زمان ایجاد یک  CSR) CertificateSigning Request ) به همراه سرویس دهنده وب ، مشخص می گردد .
در بخش پنجم این مقاله به بررسی مراحل لازم به منظور استفاده از SSL دربرنامه های وب دات نت ، خواهیم پرداخت .

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

  •  Windows Authentication
  •  Forms Authentication
  •  Passport Authentication

در مجموعه مقالاتی که ارائه خواهد شد به بررسی هر یک از روش های فوق در جهت پیاده سازی امنیت در برنامه های وب خواهیم پرداخت . در بخش اول این مقاله ، به بررسی نحوه برخورد ASP.NET با کاربران ناشناس ( Anonymous ) ، روش های متفاوت شناسائی کاربران و پارامترهای لازم در خصوص انتخاب یک استراتژی به منظور شناسائی کاربران با توجه به نوع برنامه ها ، خواهیم پرداخت .

شناسائی و تائید کاربران
Authentication ، فرآیندی است که بر اساس آن کاربران شناسائی می گردند . Authorization ، فرآیند اعطای دستیابی به کاربران با توجه به هویت آنان می باشد . با تلفیق Authentication و Authorization، امکان ایمن سازی برنامه های وب در مقابل افراد مزاحم و غیر مجاز ، فراهم می گردد .

دستیابی از طریق کاربران ناشناس ( Anonymous )
اغلب سایت های وب از روش دستیابی  “Anonymous” ، استفاده می نمایند . در چنین مواردی ،  اطلاعات موجود بر روی سایت جنبه عمومی داشته و امکان دستیابی تمامی کاربران به اطلاعات وجود خواهد داشت . این نوع سایت ها ، ضرورتی به  بررسی مجاز بودن کاربران برای استفاده از منابع موجود ، نخواهند داشت . برنامه های وب ASP.NET ، امکان دستیابی Anonymous را به منابع موجود بر روی سرویس دهنده توسط Impersonation ارائه می نمایند . Impersonation ، فرآیند نسبت دهی یک  Account به یک کاربر ناشناس است . Account دستیابی Anonymous بصورت پیش فرض ، IUSER_computername ، می باشد. با استفاده از Account فوق ، امکان کنترل کاربران ناشناس  که به منابع موجود بر سرویس دهنده دستیابی دارند ،  وجود خواهد داشت . به منظور مشاهده و تغییر مجوزهای دستیابی در نظر گرفته شده برای  Account فوق از  برنامه  Computer Management  استفاده می گردد :

  • ورود به شبکه ( Logon ) به عنوان مدیریت شبکه
  • اجرای  Computer Management  (  از طریق :  Start  |  Programs | Administrator Tools )
  • انتخاب فولدر Users  به منظور نمایش لیست کاربران
  • مشاهده گروههائی که Account فوق به عنوان عضوی از آنان می باشد( کلیک بر روی  Member of ) . کاربران Anonymous  ،  بصورت پیش فرض ، عضوی از  گروه Guests  بوده  که دارای مجوزهای اندکی می باشد. ASP.NET از ASP.NET Account ( با توجه به تنظیمات پیش فرض) ،  به منظور اجرای برنامه وب استفاده می نماید . بدین ترتیب ، در صورتیکه برنامه ای سعی در انجام عملیاتی نماید که در لیست مجوزهای ASP.NET Account وجود نداشته باشد ، یک  مورد خاص امنیتی بوجود آمده و امکان دستیابی آن تائید نخواهد شد.

به منظور اعمال محدودیت در دستیابی  کاربران ناشناس می توان از تنظیمات مربوط به مجوزهای فایل ویندوز استفاده نمود . برای ایمن سازی ، سرویس دهنده می بایست دارای سیستم فایل NTFS باشد . سیستم های فایل  FAT و یا FAT32 ، ایمن سازی در سطح فایل را ارائه نمی نمایند .

دستیابی از طریق کاربران تائید شده
دستیابی Anonymous  ، گزینه ای مناسب  برای دستیابی به اطلاعات عمومی و عام است . در صورتیکه برنامه های وب شامل اطلاعاتی  خاص و خصوصی باشند ، می بایست  در ابتدا کاربران شناسائی و در ادامه با توجه به مجوزهای تعریف شده ، امکان دستیابی  فراهم گردد. در برنامه های وب ASP.NET از سه روش عمده به منظور Authentication و Authorization کاربران استفاده می گردد :

  • Windowsintegrated authentication : در روش فوق ، شناسائی و تائید کاربران بر اساس لیست کاربران تعریف شده بر روی سرویس دهنده انجام خواهد شد. در ادامه با توجه به مجوزها و امتیازات نسبت داده شده به هر Account ، امکان دستیابی و یا عدم دستیابی  به منابع موجود بر روی سرویس دهنده ، فراهم می گردد.
  • Formsauthentication : در روش فوق ، کاربران به یک فرم وب Logon ، هدایت می گردند . در ادامه ، اطلاعات مربوط به نام و رمز عبور آنان اخذ و  فرآیند شناسائی و تائید  بر اساس یک لسیت کاربران و یا از طریق یک بانک اطلاعاتی که برنامه حمایت می نماید ، انجام خواهد شد.
  • Passportauthentication : در روش فوق ، کاربران جدید به یک سایت که توسط  مایکروسافت میزبان شده است ، هدایت می گردند .پس از ریجستر شدن کاربران ، امکان  دستیابی آنان به چندین سایت ، فراهم خواهد شد( تمرکز در شناسائی کاربران و استفاده از سایت های متعدد با توجه به تائید بعمل آمده ) .

هر یک از رویکردهای فوق ، به همراه روش دستیابی Anonymous ، دارای مزایای مختص به خود بوده و برای نوع خاصی از  برنامه های وب ، مناسب می باشند :

  • نوع برنامه : برنامه وب عمومی اینترنت
    روش تائید کاربران :   Anonymous
    توضیحات : روش عمومی دستیابی برای اغلب سایت های وب ، می باشد. در این روش ، ضرورتی به Logon وجود نداشته و با استفاده از مجوزهای سیستم فایل NTFS ، می توان ایمن سازی منابعی را که قصد اعمال محدودیت در رابطه با دستیابی به آنان وجود دارد را انجام داد .
  • نوع برنامه : برنامه وب اینترانت
    روش تائید کاربران :  Windows integrated
    توضیحات : در روش فوق ، سیستم معتبر سازی ویندوز ، کاربران شبکه را از طریق کنترل کننده Domain ، تائید می نماید. امکان دستیابی به منابع برنامه های وب بر اساس مجوزهای تعریف شده بر روی سرویس دهنده ، برای هر یک از کاربران فراهم می گردد .
  • نوع برنامه : برنامه های وب تجاری
    روش تائید کاربران : Forms
    توضیحات : برنامه هائی که نیازمند دریافت اطلاعات مالی می باشند ، می بایست از روش فوق  به منظور اخذ و ذخیره سازی اطلاعات ، استفاده نمایند .
  • نوع برنامه : برنامه های متعدد تجاری
    روش تائید کاربران : Passport
    توضیحات : در روش فوق ، کاربران یک مرتبه Sign in نموده ( از طریق یک مرکز تائید کاربران ) و امکان دستیابی و استفاده آنان از تمامی برنامه هائی که از Passport SDK استفاده می نمایند ، وجود خواهد داشت . اطلاعات کاربران در یک Passportprofile نگهداری خواهدشد ( در مقابل استفاده از یک بانک اطلاعاتی محلی ) .

استفاده از Authentication در فایل های HTM و یا HTML
سه روش تائید کاربران که  توسط ASP.NET ارائه شده است ، صرفا” در رابطه با فایل هائی که به عنوان بخشی از برنامه وب می باشند ، بکار گرفته می شود .فرم های وب ( فایل هائی با انشعاب aspx . ) ، ماژول ها ( فایل هائی با انشعاب asax . ) ، نمونه هائی در این زمینه می باشند. فرآیند فوق ، صفحات HTML ( فایل هائی با انشعاب HTM و یا HTML )را شامل نمی گردد و مسئولیت آن بصورت پیش فرض به IIS  ( در مقابل ASP.NET ) واگذار شده است. در صورتیکه فصد تائید کاربرانی ( استفاده از یکی از روش های Windows,Forms و Passport ) را داشته باشیم که به صفحات HTML از طریق برنامه وب  دستیابی دارند ،  می بایست این نوع فایل ها به ASP.NET executable ، مپ گردند .به منظور مپ نمودن فایل های html به ASP.NET executable ، پس از اجرای IIS مراحل زیر را دنبال می نمائیم :

  • انتخاب فولدر  شامل برنامه وب و   Properties از طریق Action Menu  . در ادامه برنامه IIS ، جعبه محاوره ای Properties را نمایش خواهد داد .
  • بر روی Directory Tab کلیک نموده و در ادامه گزینه Configuration را انتخاب می نمائیم . IIS در ادامه جعبه محاوره ای Application Configuration را نمایش خواهد داد :
  • بر روی دکمه Add کلیک نموده و در ادامه IIS جعبه محاوره ای Add/Edit Application Extension Mapping را نمایش خواهد داد .
  • بر دکمه Browse کلیک نموده و فایل aspnet_isapi.dll را انتخاب می نمائیم .فایل فوق در دایرکتوری Windows Microsoft .NetFramework قرار داشته و مسیر آن مشابه زیر است :
Path for aspnet_isapi.dll
C:\windows\Microsoft.NET\Framework\versionnumber\aspnet_isapi.dll
  • htm. را در فیلد File Extension تایپ می نمائیم .
  • مراحل فوق ، برای فایل های با انشعاب html  ، تکرار می گردد.

در ب

مطالب مرتبط

دانلود تحقیق بررسی اثر بخشی طرح ملی سباح دانش آموزان پسر پایه سوم ابتدایی
دانلود تحقیق امنیت و پاسخگویی در سیستم های بانک اطلاعاتی
دانلود تحقیق کارآموزی در یک شرکت فناوری اطلاعات
دانلود تحقیق بررسی میزان استرس شغلی در واحدهای کم حادثه و پرحادثه شرکت هواپیمایی هما از نظر کارکنان آن شرکت
دانلود تحقیق گزارش کارآموزی با موضوع PLC
دانلود تحقیق  بررسی اثر هزینه های بازاریابی بر فروش خالص شرکت ها در دوران بحران مالی
دانلود تحقیق کدگذاری ۱
دانلود تحقیق گزارش کار آزمایشگاه کنترل خطی

نظرات بسته است

دسته‌ها
اين سايت را حمايت مي کنم