پاسخ به:آموزش های تخصصی شبکه و امنیت و ضد امنیت
شنبه 28 مرداد 1391 1:22 AM
ايجاد يک ارتباط ايمن در برنامه های وب (بخش سوم)
در بخش سوم اين مقاله به بررسی موارد اشاره شده در دو مقاله قبل و از زاويه ديگر پرداخته و با پارامترهای لازم به منظور انتقال اطلاعات حساس در يک شبکه بيشتر آشنا خواهيم شد. انتقال اطلاعات حساس بر روی يک شبکه مستلزم بکارگيری مکانيزمی است که سه ويژگی زير را تضمين نمايد:
تکنولوژی هائی که يک ارتباط ايمن را ارائه می نمايند ، می بايست مبتنی بر مکانيزمی باشند که سه ويژگی فوق را تضمين نمايند . اينگونه تکنولوژی ها ، عموما" از الگوريتم های رمزنگاری استفاده نموده و با رمز نمودن اطلاعات ، عملا" امکان رمزگشائی و دستيتابی به داده اوليه توسط افراد غير مجاز را سلب می نمايند. يکی از بهترين الگوريتم های رمزنگاری در حال حاضر ، " رمزنگاری کليد نامتقارن ( کليد عمومی ) " است . نحوه عملکرد اين مدل رمزنگاری ساده بوده ولی در آن از الگوريتم های پيچيده رياضی استفاده شده است .مدل رمزنگاری فوق ، قادر به تامين سه ويژگی اشاره شده می باشد . در ادامه با اين مدل رمزنگاری بيشتر آشنا شده و نحوه برخورد آن در جهت تامين هر يک از ويژگی های فوق را بررسی می نمائيم .
رمزنگاری کليد عمومی ( نامتقارن )
فرض کنيد دو کاربر قصد مبادله اطلاعات بر روی يک شبکه را با استفاده از يک روش ايمن داشته باشند . گيرنده دارای دو کليد است که از لحاط رياضی به نوعی با يکديگر مرتبط شده اند. کليد ، نوع خاصی از داده است که امکان رمزنگاری و يا رمزگشائی داده را فراهم می نمايد. دوکليد فوق دارای يک ارتباط و وابستگی خاص با يکديگر می باشند . در صورتيکه داده با استفاده از يکی از آنان رمز گردد ، صرفا" با استفاده از کليد دوم ، امکان رمزگشائی داده رمز شده و بازيابی اطلاعات اوليه ، وجود خواهد داشت ( و بالعکس ) . کليدی که معمولا" بين کاربران مبادله می گردد ، " کليد عمومی" و کليدی که نزد افراد نگهداری می گردد ، " کليد خصوصی" ، ناميده می شود.
دريافت کننده ،کليد خصوصی خود را هرگز آشکار ( فاش کردن ) نمی نمايد ولی می تواند در صورت تمايل کليد عمومی خود را در اختيار افراد ديگر قرار دهد . در صورتيکه شخصی (فرستنده ) قصد ارسال داده محرمانه برای شخص ديگری (گيرنده) را داشته باشد ، وی در ابتدا اطلاعات را با استفاده از کليدعمومی گيرنده، رمز و در ادامه اطلاعات رمز شده را برای گيرنده ارسال می نمايد. صرفا" فردی ( يک گيرنده ) که دارای کليد خصوصی مرتبط با کليد عمومی استفاده شده در مبداء به منظور رمزنگاری می باشد ، قادر به رمزگشائی اطلاعات خواهد بود . شکل زير مراحل لازم به منظور مبادله داده به صورت ايمن با استفاده از مدل رمزنگاری نامتقارن ( کليد عمومی ) را نشان می دهد :
رمزنگاری کليد عمومی و امنيت
روش رمزنگاری کليد عمومی ، مبتنی بر رابطه رياضی بين کليدهای عمومی و خصوصی بوده و دارای قدرت مناسب و تضمين لازم در خصوص ارائه امنيت بالا در مقابل تهاجمات اطلاعاتی است .ارتباط رياضی بين کليد عمومی و خصوصی بسيار پيچيده می باشد . رابطه موجود مبتنی بر مضرب اعداد بزرگ است . مضرب استفاده شده يک عدد دويست رقمی می باشد که با توجه به امکانات سخت افزاری موجود به چهار ميليارد سال زمان به منظور تشخيص ارتباط موجود بين دو کليد ، نياز می باشد( با اين فرض که زمان اجرای هر دستورالعمل يک ميکروثانيه در نظر گرفته شود) . همانگونه که ملاحظه می گردد امنيت روش رمزنگاری فوق ، بسيار بالا می باشد.رمزنگاری کيلد عمومی، زيرساخت اساسی و اوليه در يک ارتباط ايمن بر روی يک شبکه را فراهم نموده و از آن در پروتکل های ارتباطی ايمن نظير 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 به همراه مرورگرها ، برنامه های پست الکترونيکی و ساير پکيج های نرم افراری توزيع می گردد .
انواع گواهينامه ها
در اينترنت از چهار نوع گواهينامه ديجيتال استفاده می گردد که هر يک دارای حوزه عملکردی خاص خود می باشند :
دريافت يک گواهينامه سرويس دهنده
در صورتيکه تصميم به گرفتن يک گواهينامه وجود داشته باشد ، می بايست با يک مرکز CA تماس گرفته شود. فرآيند دريافت يک گواهينامه که Enrollment ( ثبت نام ) ناميده می شود ، با توجه به نوع گواهينامه متفاوت می باشد . همانگونه که اشاره گرديد ، يک گواهينامه سرويس دهنده ، مسئوليت شناسائی يک سرويس دهنده را با استفاده از پروتکل SSL برای يک ارتباط ايمن بر روی وب ، برعهده دارد. زمانيکه يک مرورگر ارتباط خود را با يک سرويس دهنده وب تائيد شده از طريق پروتکل HTTPS ( نسخه ايمن پروتکل HTTP ) برقرار می نمايد ، کليد عمومی سرويس دهنده را از طريق گواهينامه مربوطه خود دريافت می نمايد . بدين ترتيب مرورگر ، قادر به شناسائی ايمن صاحب سرويس دهنده و استفاده از کليد عمومی وی به منظور رمزنگاری داده می باشد .به منظور فعال نمودن يک سرويس دهنده وب برای استفاده از SSL و گواهينامه ها ، می بايست يک رويه خاص با توجه به نوع سرويس دهنده وب و مرکز صادر کننده CA ، دنبال گردد. مراحل دريافت يک گواهينامه به شرح ذيل می باشد :
در بخش چهارم اين مقاله با پروتکل SSL آشنا خواهيم شد .
** دارالولایه **