SSL چیست و چگونه میتوان یک گواهی امنیتی را جعل کرد؟
نوشته فرهاد عیدی • 24 مهر 1390
اگر در محیط اینترنت رفت و آمد داشته باشید حتما خبرهای متوالی جعل گواهی امنیتی سرویسهایی مانند Gmail را بارها شنیدهاید. هشدارهای پی در پی و اخبار متفاوت از جعل گواهی امنیتی وبسایتهایی مانند گوگل، مایکروسافت، یاهو و ... .

اما چگونه میتوان این گواهیهای امنیتی را جعل کرد؟ در این مقاله قصد دارم با زبانی ساده و روان به بررسی روند جعل این گواهیهای امنیتی پرداخته و شما را با نحوهی دستیابی به اطلاعاتتان آشنا کنم.
مقدمه
وقتی شما برای جستجو در اینترنت وارد سایتی مثل گوگل میشوید و عبارت مورد نظر را در فیلد جستجو وارد کرده و کلید جستجو را میزنید، این عبارت توسط کامپیوتر شما به سرور گوگل فرستاده شده و نتایج حاصل از جستجو برای شما نمایش داده خواهد شد. اما این کار چگونه انجام میشود؟
1. ابتدا شما وارد سایت گوگل میشوید.
2. عبارت مورد نظر را در کادر جستجو وارد کرده و دکمه جستجو را میزنید.
3. این عبارت ابتدا به سرور ISP یا مرکزی که شما از آن سرویس میگیرید فرستاده میشود.
4. سپس از آنجا به سرور مرکز اصلی که در بیشتر مواقع در مراکز استانها دایر است فرستاده میشود.
5. سپس از شبکه کل کشور خارج میشود و تازه به دست آن طرفیها میرسد که دیگر با مراحل آنجا کاری نداریم و تا همینجا برای توضیح کار بس است!
6. سپس سرور گوگل درخواست شما را پاسخ داده و از همین مسیر دوباره اطلاعات جدید به دست شما میرسد.
حالا تصور کنید یک نفر در این میان اطلاعات شما را رصد کند. یعنی شخص سومی در بین مسیر قرار گرفته و اطلاعات شما را قبل از رسیدن به سرور بعدی و در بین راه سرقت نماید. چه اتفاقی میافتد؟ قطعا عبارت مورد جستجو نمیتواند هیچگونه خطر امنیتی داشته باشد اما اگر این عبارت کلمهی عبور حساب بانکی شما باشد چطور؟ اگر کلمه عبور ایمیل شما باشد چطور؟ اینجاست که امنیت اطلاعات معنی پیدا میکند.
SSL یا Secure Sockets Layer چیست؟
SSL یک پروتکل امنیتی با الگوریتمهای رمزنگاری پیشرفته است که تبادل اطلاعات بین سیستم کاربر و سرور را کنترل کرده و با رمزنگاری دادهها کاری میکند که اطلاعات در بین مسیر برای شخص سومی قابل خواندن نباشند. یا به اصطلاح، اطلاعات را در یک تونل امنیتی رد و بدل میکند. این پروتکل برای اولین بار در مرورگر Netscape برای انتقال امن دادهها میان مرورگر و سرور ایجاد گردید و امروزه به یکی از اصلیترین راههای تامین امنیت وبسایتها تبدیل شده است که هماکنون میلیونها وبسایت از این پروتکل استفاده میکنند.
SSL چگونه کار میکند؟
به زبان ساده وقتی شما درخواست یک صفحهی ایمن (معمولا با https) میکنید، سرور یک کلید عمومی (Public Key) ساخته و به همراه یک درخواست گواهینامه SSL که تمامی اطلاعات شرکت درخواست کننده در آن قرار دارد به سرویسدهندهی خدمات SSL میفرستد. سرویس دهنده خدمات SSL با استفاده از الگوریتمهای پیشرفته اقدام به رمزگذاری کلید عمومی کرده و پس از رمزگذاری آن، کلید جدیدی ساخته و آن را به سرور بازمیگرداند (که به این کلید جدید، کلید خصوصی یا Private Key گفته میشود). در مبحث امنیت شبکه، مهمترین قسمت در سرویسدهی SSL حفظ و نگهداری همین کلید خصوصی است و در صورتی که بتوان به کلید خصوصی دسترسی پیدا کرد یعنی میتوان اطلاعات را خواند. کلید عمومی را هر کسی میتواند مشاهده کند اما کلید خصوصی را نه!
پس از دریافت کلید خصوصی، ارتباط امن شما با سرور برقرار شده و میتوانید با خیالی تقریبا راحت در وبسایت به گشت و گذار بپردازید!
SSL چگونه امنیت دادهها را تضمین میکند؟
پروتکل SSL اطلاعاتی که قرار است تبادل شود را با الگوریتمهای پیچیدهای رمزنگاری میکند تا اگر در بین راه شخص سومی این اطلاعات را به سرقت برد نتواند آن را بخواند. این اطلاعات فقط و فقط به وسیله کدهای Private Key قابل خواندن هستند و در صورتی که این کدها در دسترس دیگری قرار بگیرد به راحتی میتواند اطلاعات شما را شنود کند. یک شرکت سرویسدهندهی SSL نیز همیشه به دنبال این است که کسی نتواند به کلید خصوصی دسترسی داشته باشد.
آیا SSL قابل اعتماد است؟
وقتی شما فرمی را بدون پروتکل SSL در یک وبسایت تکمیل کرده و ارسال میکنید، این اطلاعات به صورت یک فایل متنی به مقصد فرستاده میشود. اما وقتی پای SSL به میان میآید، این کدها به صورت ایمن یا در اصطلاح داخل یک تونل امنیتی انتقال داده میشوند که افراد بیگانه نمیتوانند آنها را بخوانند. یعنی اگر سارق در میانه راه به این کدها دسترسی پیدا کند فقط کدهای نامفهومی را میبیند که با روشهای پیشرفتهای کدگذاری شدهاند و فقط در مرورگر کاربر و کامپیوتر سرور قابل رویت هستند اما اخیرا همین کدهای SSL نیز توسط دو پژوهشگر شکسته شدند.
اگر بخواهیم SSL را با شیوه متنی (Clear text) مقایسه کنیم بسیار بسیار ایمنتر و پایدارتر است و میلیونها وبسایت از این شیوه برای حفظ محرمانه بودن اطلاعات خود استفاده میکنند اما این روش هم میتواند دستخوش حملههای امنیتی قرار بگیرد.
جعل گواهی امنیتی به چه صورت انجام میپذیرد؟
وقتی هکر به سرور سرویسدهنده SSL نفوذ کرده و اختیار سرور را به دست میگیرد، به راحتی میتواند درخواستهای وارده از جانب وبسایتها را مشاهده کرده و کاربران آنها را به یک وبسایت جعلی با مقادیر جعلی منتقل نماید. کاری که در صفحه نخست Gmail شاهد آن بودیم. وقتی کاربران ایرانی وارد وبسایت gmail میشدند، پس از ارسال درخواست گواهی امنیتی از سوی وبسایت، به یک صفحه جعلی ساخته شده هدایت میشدند و وقتی نام کاربری و کلمه عبور خود را در صفحه جعلی وارد مینمودند، این اطلاعات به راحتی در اختیار شخص هکر قرار میگرفت حتی بدون اینکه خود وبسایت سرویسدهنده از این موضوع اطلاعی داشته باشد. به همین راحتی!
سخن پایانی
شاید دنیای امروز پیشرفت زیادی در بحث امنیت کرده باشد ولی در مقابل به موازات این امر، هکرها نیز پیشرفت کردهاند و همانطور که اخبار آن از گوشه و کنار به گوش میرسد، همه روزه شاهد هک شدن وبسایتهای زیادی در دنیای وب هستیم. به یاد داشته باشید اگر میخواهید در محیط وب در امان بمانید همیشه به دنبال یک بستر امن برای خودتان باشید. همیشه مسائل ایمنی را جدی بگیرید. همیشه از آخرین نسخه مرورگرها و بستههای امنیتی استفاده کنید تا درصد امنیت را به بالاترین حد ممکن برسانید.
این مقاله به طور خلاصه و با زبانی ساده نگاشته شده است و سعی نویسنده بر آن بوده که مطلبی مفید در عین سادگی منتشر شود. صحبت درباره مسائل امنیتی و SSL را میتوان تا صفحات متوالی ادامه داد و وارد جزئیات آن شد اما در اینجا فقط اشارهای کلی به نحوه عملکرد آن گشت تا برخی از سوالات کاربران پاسخ داده شود.

JMSBeta
ممنون بابت اطلاع رسانی
worldmohammad
مطلب شیوا و ساده ولیل در عین حال کاربردی بود کاربران به حرفهای شما بیشتر گوش میکنن تا تازه کارها و دوستانشان از این پستها بیشتر بدین
ای کاش میگفتین که از فایروال هم استفاده میکردن یا اینکه از مدیریت پسور هم استفاده کنند
ممنون و خسته نباشید
senaps
میگم چقد زود منتشر کردین خبر در این مورد!! یه وقت برا وبلاگتون مشکلی پیش نیاد؟!!
اخه پست های در این مورد تو وبلاگ من،مربوط به دقیقا یه ماه پیشه!!!!
اخه بحث در مورد بیش از 300 هزار ای پی ایرانی بود!!
کیوان
من یه سوالی برام پیش اومده. با این اوصاف Man in the middle میتونه کلید خصوصی رو هم شنود کنه دیگه. امنیت این کلدید خصوصی چه طوری تامین میشه؟
hamid
وقتی هکر به سرور سرویسدهنده SSL نفوذ کرده و اختیار سرور را به دست میگیرد، به راحتی میتواند درخواستهای وارده از جانب وبسایتها را مشاهده کرده و کاربران آنها را به یک وبسایت جعلی با مقادیر جعلی منتقل نماید. کاری که در صفحه نخست Gmail شاهد آن بودیم.
in ghesmat ghalate.
به راحتی میتواند درخواستهای وارده از جانب وبسایتها را مشاهده کرده
dar haghighat vaghti yek CA hack mishe va yek certificate motabar dige baraye website tolid mishe. ba komak in certificate mitoonim khoodemooono jaye gmail ja bezanim. toori ke karbar ha fek konan ma gmail hastim. dar halate addi chon dar SSL darkhaste certificate mishavad va hacker ha in certificate roo nadaran in hamalat shenasai mishavand vali dar in mored chon certificate valid dozdide shode browser nemitoone hamle ro shenasaiii kone.
فرهاد عیدی
با این شیوه حمله نمیشود به کلید خصوصی دسترسی پیدا کرد بلکه هکر فقط میتواند به اطلاعات کد شده دسترسی پیدا میکند که باز کردن کدها تقریبا غیر ممکن است.
امین
سلام
کاش به جای "SSL چیست و چگونه میتوان یک گواهی امنیتی را جعل کرد؟ " ، عنوان پست رو می زاشتید "SSL چیست ؟" چون هیچ توضیحی در مورد "چگونه میتوان یک گواهی امنیتی را جعل کرد؟" ندادید.
علی.ب
سلام همان طور که امین عزیز هم گفتند مطلب شما بیشتر در مورد SSL بود تا گواهی نامه های آن. همچنین اشکالاتی نیز در آن بود:
برخلاف تصور الگوریتم های کلید عمومی به خاطر زمان و هزینه بالا که در رمز کردن و رمزگشایی دارند فقط برای تبادل کلید الگوریتم های AES یا 3DES که برای رمز کردن محتوا استفاده می شود و خیلی سریع تر و ایمن تر از الگوریتم های کلید عمومی (مثل RSA) است , کاربرد دارد.
البته از این الگوریتم های کلید عمومی در امضا دیجیتالی در ایمیل ها هم استفاده می شود که موضوع آن جداست .
برای SSL نیاز به یک جفت کلید داریم : (متقارن - در مورد نامتقارن کلاینت هم همین جفت کلید را تولید می کند)
1 - کلید خصوصی برای رمز کردن
2- کلید عمومی برای رمزگشایی کردن
این کلید ها به هم وابسطه هستند. (این به خاطر الگوریتم آن هست که میتونید توی ویکی پدیا در موردش بخونید و وابستگی این الگوریتم به اعداد اول) کلید عمومی را سرور به سمت کاربر می فرستد تا کلید AES (یا الگوریتم هایی که دو طرف ساپورت می کنند) را رمزگشایی کند و داده ها با آن رمز شود.
این روش یک روش منطقی هست اما یک مشکل دارد .
شخص سومی را در نظر بگیریم که در بین این ارتباط هست.
کافیه یک کلید خصوصی و عمومی بسازد و به جای کلید عمومی سرور کلید عمومی خودشو به سمت کاربر بفرسته
با اینکه اینکار هزینه بر و زمان بر هست اما میتواند دیتاهای تبادل شده بین کاربر و سرور را دستکاری کند و یا شنود کند و هیچ کدام از دو طرف نفهمند .
اینجاست که لزوم گواهی نامه ها احساس میشه. گواهی نامه برای این به وجود آمدند که مشخص کنند کسی بین ارتباط کلاینت و سرور نیست و اگر باشد با خطای مرورگر مواجه میشویم چون کلید عمومی کاربر تغییر کرده و یا ...
مرکز های ارائه گواهی نامه SSL هم از همین الگوریتم کلید عمومی و کلید خصوصی استفاده می کنند . کلید عمومی سرور را به صورت هش شده با کلید عمومی خود رمز می کنند (به همراه اطلاعات گواهی نامه).
و کلید عمومی سرور + مشخصات گواهی نامه + رمز شده ی هش شده ی کلید عمومی سرور + مشخصات گواهی نامه را در قالب یک فایل به صاحب سرور میدهد تا در انتقال اطالاعات SSL از آن استفاده کند. کلید عمومی مراکز ارائه گواهی نامه (CA) بسته به مرورگرها در خود مرورگر ها هست.
مرورگر ها به محض اینکه ارتباط SSL با سروری بر قرار می کنند گواهی نامه آن را با کلید عمومی CA چک می کنند تا دستکاری نشده باشد اگر دستکاری شده بود مشخص هست که کسی بین ارتباط کلاینت و سرور هست همچنین مرورگر ها از طریق پروتکل OCSP گواهی نامه سرور را از نظر منقضی شدن از مرکز ارائه دهنده گواهی نامه SSL می پرسند.
البته جعل گواهی نامه SSL و قابلیت pinning در کروم و نقش DNSSEC در گواهی نامه های دیجیتال بحث مفصلی هست که اینجا نمی توان صحبت کرد.
امیدوارم توانسته باشم کمکی حتی اندک کرده باشم.
ممنون;)
M.Rahi
فردا صبح قراره یه کنفرانس در مورد امنیت شبکه بدم که این مبحث رو هم ارائه میدم.
بدردم خورد
ممنون
علی.ب
"کلید عمومی سرور را به صورت هش شده با کلید عمومی خود رمز می کنند (به همراه اطلاعات گواهی نامه)."
ببخشید این قسمت رو اشتباه نوشتم CA با کلید خصوصی رمز می کنه
حامد
سلام
مثل اینکه میشه از این پروتکل برای رد کردن فیلتر استفاده کرد. درسته؟
و نحوه استفاده از راحته؟
مچکرم
سید جلال
ممنونم
خیلی استفاده کردم
مرتضی
واقعا عالی بود
ممنون
مهران ا.
خیلی ممنون از پست عالی و ساده تان.
"صحبت درباره مسائل امنیتی و SSL را میتوان تا صفحات متوالی ادامه داد و وارد جزئیات آن شد..."
خواستم بدونید که خیلی مشتاقم تا این مطلب رو ادامه بدین و تا به بحث های تخصصی هم برسیم.
با تشکر.
علی
مرسی. عالی بود.
البته توی جریان هک شدن جیمیل توسط ایران ، فکر کنم کسایی که با فیلترشکن وارد جیمیلشون می شدن ، در امان موندن.
مانی
درود بر شما،
با سپاس از مطلبتان.
اگر امکانش هست لطف کنید یک مقاله تخصصی تر درباره این پروتوکل و همچنین کلید عمومی و خصوصی منتشر کنید.
شاد و موفق باشید!
maselo
سلام . یه سوال ؟
اگه کسی با وی پی ان به سرور وصل بشه چی ؟
بازم امکان حک شدن ایمیل یا ... وجود داره ؟
فرهاد عیدی
بله. همیشه امکان هک هست. ولی با وی پی ان کمی امنتر میشود که البته آن هم بستگی به نوع هک دارد.
امیررضا فروتن
سلام.کسی اس اس ال معتبر داره.
می خوام رو گوگل کروم نصب کنم.
کمممممممممممممممممممممممکک
:D
حميد
خسته نباشيد و عالي بود
جدا بايد به ايشان و کساني که سعي دارند به ديگران اطلاعات خودشون رو اينجور با کيفيت و صادقانه در اشتراک بگذارند آفرين گفت متاسفانه بسيارند کساني که حتي کوچکترين اطلاعات خودشون رو به سادگي در اختيار ديگران قرار نمي دهند
اميدوارم موفق باشيد و هميشه در راه ارتقاي سطح دانش عمومي کاربران فارسي زبان کوشا و موفق باشيد.