ایران سرفراز- نرم افزار وپروژهای دانشجویی


نرم افزار وپروژهای دانشجویی

امضای دیجیتالی ، مفاهیم SSL

<!-- /* Font Definitions */ @font-face {font-family:"MS Gothic"; panose-1:2 11 6 9 7 2 5 8 2 4; mso-font-alt:"MS ゴシック"; mso-font-charset:128; mso-generic-font-family:modern; mso-font-pitch:fixed; mso-font-signature:1 134676480 16 0 131072 0;} @font-face {font-family:"\@MS Gothic"; panose-1:2 11 6 9 7 2 5 8 2 4; mso-font-charset:128; mso-generic-font-family:modern; mso-font-pitch:fixed; mso-font-signature:1 134676480 16 0 131072 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:35.4pt; mso-footer-margin:35.4pt; mso-paper-source:0;} div.Section1 {page:Section1;} -->

امضای دیجیتالی ، SSL مفاهیم

و مراکز صدور گواهینامه

SSL (Secure Sockets Layer), Digital Signature

And CA (Certificate Authority)

Fundamentals

Mohsen_mahyar@yahoo.com

تعریف  ١

آمده است مطلب را آغاز می کنیم : webopedia که در سایت SSL برای شروع ، با تعریفی کلی از

و برای رد و بدل کردن سند های خصوصی از طریق اینترنت Netscape پروتکل ای است که توسط شرکت SSL "

منتقل می SSL از یک کلید خصوصی برای به رمز در آوردن اطلاعاتی که بر روی یک ارتباط SSL. توسعه یافته است

و امروزه تمام مرورگر ] Netscape Navigator و Internet Explorer شوند استفاده می نماید. هر دو مرورگر

های مدرن] از این پروتکل پشتیبانی می نمایند. همچنین بسیاری از وب سایت ها برای فراهم کردن بستری مناسب

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

شروع می http: به جای https: دارند با SSL هایی که نیاز به یک ارتباط از نوع URL ، در استاندارد آمده است

شوند.

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

ایجاد می کند تا هر Server و Client یک ارتباط امن میان SSL در حالیکه . S-HTTP یا Secure HTTP

برای این طراحی شده است تا طبق آن پیام های S-HTTP ، اطلاعاتی که بر روی آن منتقل می شود امن باشد

منفرد[ ١] به طور امن منتقل شوند.بنابراین این دو تکنولوژی قبل از آنکه دو تکنولوژی رقیب باشند ، دو تکنولوژی مکمل

پذیرفته شده اند.” IETF هستند. هر دو ی این پروتکل ها به عنوان استاندارد از سوی

. (Application Independent) یک پروتکل مستقل از لایه برنامه است SSL توجه داشته باشید که

بروی پروتکل SSL قابلیت استفاده از آن را دارند. با این وجود Telnet و FTP ، HTTP بنابراین پروتکل هایی مانند

بهینه شده است. IPSec و FTP ، HTTP های

مفاهیم رمز نگاری متقارن و نا متقارن-2

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

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

که برای قفل و باز کردن اطلاعات استفاده می شود یکسان می باشد. بدین معنی که هر دو طرف از یک کلید یکسان

بهره می برند که باید نزد خودشان امن باشد.

توجه کنید که مفهوم کلید در مباحث مرتبط ، عموما یک آرایه از بایت ها می باشد که بر اساس نوع امنیت طول

متفاوتی دارد.مثلا ٠١١٠١١٠٠١١٠٠١٠١١١٠٠١ می تواند یک کلید باشد.البته عموما کلید ها در مبنای ١۶ نمایش

داده می شوند. به هر حال وظیفه محافظت از کلید بر عهده دارنده آن است!

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

نیز می باشد.در این رمز گذاری که رمز گذاری نا متقارن یا رمز SSL اما نوعی دیگر از رمزگذاری وجود دارد که اساس

گذاری کلید عمومی نامیده می شود ، دو نوع کلید وجود دارد :

[ کلید عمومی[ ۶

[ کلید خصوصی[ ١۵

در این رمز گذاری گفته می شود که اگر داده ای با یک کلید قفل شد ، با همان کلید باز نمی شود و فقط امکان باز شدن

آن با کلید متناظر آن وجود دارد. این کلید متناظر نزد طرف مقابل است و امکان بدست آوردن آن از کلید دیگر وجود

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

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

خود را درون در نیز جا بگذارید ، مساله ای نیست!

حال به بحث باز می گردیم : شما درخواست داده ای را از یک سرور امن می کنید ، سرور کلید عمومی را برای شما

ارسال می کند. شما داده های خود را با این کلید قفل می کنید و برای سرور ارسال می کنید. حال اگر این وسط کسی

خواست داده ها را ببیند[ ١٨ ] ، نمی تواند ، چراکه این داده ها با کلید عمومی باز نمی شوند!. در طرف مقابل سرور با کلید

خصوص خود داده ها را رمز گشایی می کند و از آن استفاده می کند.

شکل زیر روند ذکر شده را می رساند :

توجه : در امضای دیجیتالی روند برعکس است.(به عبارت دیگر امضای دیجیتالی چیزی جز رمز گذاری داده ها با کلید

خصوصی فرستنده نیست). ما در امضای دیجیتالی می خواهیم ببینیم که آیا داده های ارسال شده واقعًا از طرف شخصی

است که ادعا می کند یا خیر؟

به طور ساده کاربر نام خود را با کلید خصوصی خود رمز گذاری می کند. در این حالت همه با کلید عمومی وی می

توانند نام وی را رمز گشایی کنند و این صحیح است! چراکه هیچ کس دیگر قادر نیست داده ای تولید کند که نتیجه باز

شدن آن با کلید عمومی شخص امضا کننده برابر باشد!.

استفاده می شود. چراکه در حالت فوق ، اولا نام کاربر را باید فقط کاربر و سرور Hash البته در عمل بهتر است از توابع

بدانند و دیگر آنکه از کجا معلوم که داده ارسالی همانی است که امضای دیجیتالی کاربر با آن بوده است(به عبارت دیگر

شاید در میان راه متن اطلاعات تغییر کرد)

که یک طرفه هستند استفاده می شود.بدین معنی که اگر داده ای Hash همانطور که ذکر شد ، در این مورد از توابع

شد ، دیگر به هیچ عنوان (و توسط هیچ کلیدی) قابل برگشت نیست. hash

می __________گردد و سپس توسط کلید خصوصی امضا می شود. hash بدین منظور متن نامه ابتدا

شده بدست می آید. متن ارسالی hash سپس امضا و متن نامه ارسال می شود. در طرف سرور هم با کلید عمومی داده

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

آن هم متفاوت و مقایسه نتیجه یکسانی را بر نمی گرداند. hash است. چرا که اگر متن نامه عوض شود ، نتیجه

شدن متن نامه می Hash در نمودار زیر ، روند کار را مشاهده می کنید (قطعه های خاکستری رنگ نشان دهنده

باشند)

ساختار و روند آغازین پایه گذاری یک ارتباط امن-3

در این پروتکل قبل از آنکه اطلاعاتی مابین درخواست دهنده و سرور رد و بدل شود ، می بایست ابتدا سرور تصدیق

. [ گردد[ ٢

به طور کلی مرحله آغازین شروع ایجاد ارتباط امن [ ٣] از دو فاز تشکیل شده است : تصدیق هویت سرور و مرحله

اختیاری تصدیق هویت مشتری. در فاز تصدیق هویت سرور ، سرور در جواب درخواست مشتری گواهینامه خود و فرمول

رمز گذاری خود[ ۴] را برای مشتری ارسال می کند. سپس مشتری یک کلید اصلی[ ۵] که با کلید عمومی[ ۶] سرور رمز

گذاری شده است را تولید می کند و سپس این کلید رمز گذاری شده را به سرور ارسال می کند. سرور کلید اصلی را

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

کلید اصلی مشتق شده اند رمز گذاری و تصدیق می شوند.

در فاز دوم که اختیاری بود ، سرور یک چالش[ ٧] را برای مشتری ایجاد می کند [ارسال می کند]. مشتری نیز خودش را

برای سرور با ارسال امضای دیجیتالی و گواهینامه کلید عمومی خود [ ٨] نسبت به تصدیق خود اقدام می نماید.

استفاده می شوند. در مرحله آغازین شروع ایجاد ارتباط امن از الگوریتم SSL الگوریتم های زیادی جهت پنهان سازی در

استفاده می شود. بعد از رد و بدل شدن کلید ها نیز الگوریتم های متفاوتی RSA public-key cryptosystem

. MD و ۵ triple-DES ، DES ، IDEA ، RC۴ ، RC استفاده می شوند. از جمله : ٢

ها و امضای گواهینامه ها که در CA پیروی می کنند.(ساختار درختی X. گواهینامه های کلید عمومی هم از قوانین ۵٠٩

ادامه ذکر خواهد شد ، همگی بر اساس این استاندارد است)

پروتکل های مشابه-4

می باشد. SSL هم پروتکل ای است که بسیار مشابه ٣,٠ TLS[٩]

استفاده می گردد. WAP [ که مخصوص شبکه های بیسیم است و در [ ١١ WTLS[ همچنین پروتکل [ ١٠

SSL ۵مفهوم گواهینامه در پروتکل

در اینجا نیاز است که یک بحث کلی در مورد گواهینامه[ ١٢ ] مورد نیاز این پروتکل صورت گیرد.به طور عموم (غیر از بحث

گواهینامه ها جنبه اعتبار سنجی دارند. بدین معنی که اگر شما در یک بحث خاص دارای گواهینامه باشید ، به (SSL

شما اعتماد بیشتری می کنند.اما ممکن است گواهینامه نداشته باشید ولی کار خود را هم به نحو احسنت انجام دهید.به

طور مثال شما قهرمان مسابقات فرمول ١ جهان هستید ، اما در صورتی که گواهینامه نداشته باشید ، هرگز اجازه

نخواهید داشت که در شهر تردد کنید!

هم تقریبا بحث به همین گونه است با این تفاوت که ذات این پروتکل با توجه به بحث گواهینامه ها SSL در مورد

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

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

به رانندگی هم نیستید! این تشابه از جهاتی صحیح و از جهاتی غلط است . شاید برداشت صحیح تر به این صورت باشد

که اگرچه قادر نخواهید بود بدون گواهینامه رانندگی کنید ، اما قادر هستید که خود برای خود یک گواهینامه صادر کرده

و سپس به رانندگی بپردازید!(هرچند این گواهینامه از نظر دیگران کاملا بی ارزش است!).

را راه اندازی و استفاده SSL طبق بحث فوق ، شما قادر خواهید بود بدون پرداخت هیچ هزینه ای یک پروتکل

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

مراکز صدور گواهینامه–۶

گفته می CA به مراکزی که اقدام به صدور گواهینامه می کنند ، "مرکز صدور گواهینامه " [ ١٣ ] یا به اختصار SSL در

شود.

می باشد) برای تشخیص هویت طرفین یک تراکنش استفاده می CA این پروتکل از یک شخص ثالث [ ١۴ ] ( که همان

کند. در واقع یک گواهینامه معین می کند که آیا شخصی که دارنده آن است ، واقعًا همانی است که ادعا می کند یا

خیر؟

٢ و ٣) و در ، در شکل زیر می توانید یک روند درخواست صدور گواهینامه توسط یک سرویس دهنده ( قدم های ١

ادامه آن درخواست کاربر برای یک سرور دارای گواهینامه و چگونگی مطمئن شدن وی از معتبر بودن آن سرور را

: ( ۶ و ٧ ، ۵ ، ببینید(قدم های ۴

مراحل کلی برقراری و ایجاد ارتباط امن در وب–  ٧

طی می شود ، به صورت زیر می باشد : http در SSL به طور ساده مراحلی که در ایجاد یک ارتباط امن

١ کاربر درخواست خود را از طریق مرورگر به یک صفحه امن ارسال می کند(آدرس این صفحه معمولا با

شروع می شود) https://

٢ وب سرور کلید عمومی[ ۶] خود را به همراه گواهینامه خود برای کاربر ارسال می کند.

٣ مرورگر چک می کند که آیا این گواهینامه توسط یک مرکز مورد اطمینان صادر شده است و اینکه آیا این

گواهینامه هنوز اعتبار دارد ؟ و همچنین آیا این گواهینامه مرتبط با سایت درخواستی می باشد؟

[ ۴ سپس مرورگر از این کلید عمومی [ ۶] دریافت شده از طرف سرور استفاده می کند سپس یک کلید متقارن[ ١۴

را رمز گذاری می کند. در نهایت هم داده های رمز URL تصادفی را تولید می کند و توسط آن تمام داده ها و

گذاری شده را به همراه خود کلید متقارن تولیدی ، مجددا توسط کلید عمومی سرور رمز گذاری کرده و

نتیجه را به سرور ارسال می کند.

۵ وب سرور توسط کلید خصوصی[ ١۵ ] خود، کلید متقارن رمز گذاری شده را رمزگشایی و با استفاده از آن سایر

را نیز رمزگشایی می نماید. URL داده ها و

درخواستی را با کمک کلید متقارن رمز گذاری و به کاربر باز می گرداند. html ، ۶ وب سرور

٧ مرورگر نیز داده های دریافتی را با کمک کلید متقارن خود بازگشایی کرده و به کاربر نمایش می دهد.

به CA مشخص می شود. در صورتی که این CA همانطور که از مرحله ٣ پیداست ، در این مرحله است که میزان اعتبار

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

ارایه می دهد. توجه کنید که در این مورد تنها به هشدار بسنده می شود ، اطمینان به آن به شما و شرایط شما بستگی

در اینترنت CA دارد. ضمن آنکه این هشدار هرگز نمی تواند به معنای قطعی عدم وجود امنیت باشد.حال اگر شما یک

راه اندازی کردید ، مسلما هیچ کدام از مرورگر ها شما را نمی شناسند و بنابراین گواهی های صادر شده از طرف شما را

نا امن می پندارند.از آنجا که کاربران عادی اینترنت نیز این هشدار ها را جدی در نظر می گیرند ، از ادامه تراکنش با

سایت شما صرف نظر خواهند کرد.

نکاتی در مورد گواهینامه ها -8

معتبر (حداقل نزد شما) CA شما در صورتی به یک سایت با یک گواهینامه معین اعتماد می کنید که آنرا یک

امضا کرده باشد.در واقع این اعتماد شما ضمنی است. به این روند ، درخت اعتبار گواهینامه[ ١۶ ] یا مسیر

ها ی معروف را برای خود در نظر می گیرد. CA گواهینامه[ ١٧ ] گفته می شود. معمولا مرورگرها تعدادی از

باشد.به هر حال قرار نیست شما verisign های متفاوتی در اینترنت وجود دارد که شاید مشهورترین آن CA 

ها (یا به عبارت بهتر به انواع گواهینامه آنها) اعتماد کنید. یک CA همیشه ، با توجه به تراکنش خود، به تمام

راه مناسب برای تشخیص این موضوع میزان مبلغی است که گواهینامه مورد نظر تراکنش شما را بیمه می

تراکنش شما را بیمه می کند ١٠،٠٠٠ دلار می باشد. اما iranSSL کند.به طور مثال حداکثر مبلغی که

گواهینامه ای دارد که تا ٢۵٠،٠٠٠ دلار تراکنش شما را بیمه می نماید.(بسیار مشابه با وضعیت Verisign

شرکت های بیمه)

های bit بر اساس میزان امن بودن دسته بندی می شوند. این دسته بندی بر اساس مقدار SSL پروتکل

های تولیدی bit تولیدی به ازاء هر بخش از داده ای است که رمز گذاری می شود.مسلما هرچه تعداد این

بیشتر باشد ، رمزگشایی آن بدون کلید ، بسیار سخت تر و با استفاده از کلید نیز زمان برتر خواهد بود. به

با ۴٠ یا ۵۶ بیت (که یک رمز گذاری ضعیف می باشد) می تواند توسط یک هکر با ابزار SSL عنوان نمونه یک

١٢٨ بیتی ، نیاز به ٢٨٨ بار زمان SSL کافی ، در عرض چند دقیقه شکسته شود. اما همین هکر برای مقابله با

١٢٨ بیتی نسبت به حالت ۴٠ یا ۵۶ بیتی ترلیون ترلیون بار امن SSL بیشتر دارد! و این بدین معنی است که

تر و غیر قابل نفوذ تر است!

یک بحث دیگر اینجا مطرح می شود و آن اینکه اگر یک هکر در میان راه کلید عمومی خود را جایگزین کلید

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

ها کلید عمومی CA مطرح می شود.در واقع SSL ها در پروتکل CA دقیقا همان جایی است که لزوم وجود

های قابل اعتماد را می شناسد(کلید عمومی آنها CA سرور را با کلید خصوصی خود امضا می کنند.مرورگر هم

رمز گذاری شده است همان گواهینامه می CA را دارد).این کلید عمومی سرور که توسط کلید خصوصی

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

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

عمومی سرور یکسان بود در واقع گواهینامه قابل اعتماد است.در این صورت امکان استفاده از گواهینامه دیگران

هم وجود ندارد.(دقیقا همان بحث امضای دیجیتالی است)

می دهد که می توانید از طریق لینک زیر از SSL یک دوره آزمایشی مجانی برای کار با Verisign شرکت

آن بهره گیرید :

http://www.verisign.com/products-services/security-services/ssl/ssl-informationcenter/

ssl-features-description/index.html

٩واژه نامه

Individual Messages : [١]

Authenticate : [٢]

Handshaking : [٣]

Cipher Preferences : [۴]

Master Key : [۵]

Public Key : [۶]

Challenge : [٧]

Public-Key Certificate : [٨]

Transport Layer Security : [٩]

Wireless TLS : [١٠]

Wireless Application Protocol : [١١]

Certificate : [١٢]

Certificate Authority (CA) : [١٣]

symmetric key : [١۴]

private key : [١۵]

certificate trust tree : [١۶]

certificate path : [١٧]

Sniffing : [١٨]

 

   + MOHSEN GHASEMI - ٩:٥۸ ‎ق.ظ ; ۱۳۸٩/۳/٢٦