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

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

SSL (Secure Sockets Layer), Digital Signature

And CA (Certificate Authority)

Fundamentals

١تعريف

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

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

توسعه يافته است 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 هاي

٢مفاهيم رمز نگاري متقارن و نا متقارن

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

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

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

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

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

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

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

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

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

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

کليد عمومي

کليد خصوصي

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

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

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

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

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

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

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

خواست داده ها را ببيند ، نمي تواند ، چراکه اين داده ها با کليد عمومي باز نمي شوند!. در طرف مقابل سرور با کليد

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

باشند)

٣ ساختار و روند آغازين پايه گذاري يک ارتباط امن

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

. [ گردد[ ٢

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

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

رمز گذاري خود[ ٤] را براي مشتري ارسال مي کند. سپس مشتري يک کليد اصلي[ ٥] که با کليد عمومي[ ٦] سرور رمز

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

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

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

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

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

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

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

. MD و ٥ triple-DES ، DES ، IDEA ، RC٤ ، RC استفاده مي شوند. از جمله : ٢

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

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

٤پروتکل هاي مشابه

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

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

SSL ٥مفهوم گواهينامه در پروتکل

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

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

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

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

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

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

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

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

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

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

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

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

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

٦مراکز صدور گواهينامه

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

شود.

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

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

خير؟

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

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

: ( ٦ و ٧ ، ٥ ، ببينيد(قدم هاي ٤

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

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

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

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

٢‐ وب سرور کليد عمومي[ ٦] خود را به همراه گواهينامه خود براي کاربر ارسال مي کند.

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

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

[ ٤‐ سپس مرورگر از اين کليد عمومي [ ٦] دريافت شده از طرف سرور استفاده مي کند سپس يک کليد متقارن[ ١٤

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

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

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

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

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

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

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

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

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

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

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

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

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

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

٨نکاتي در مورد گواهينامه ها

معتبر (حداقل نزد شما) 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 : [١٨]

١٠ فهرست منابع

١- http://www.webopedia.com/TERM/S/SSL.html

٢- http://www.rsasecurity.com/rsalabs/node.asp?id=٢٢٩٣

٣- http://www.webopedia.com/TERM/S/S_HTTP.htm

٤- http://www.tldp.org/HOWTO/SSL-Certificates-HOWTO/x٦٤.html

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

center/faq/index.html