avtkurd
29th September 2011, 09:15 AM
پروتکل HTTPS و خطرات شنود آناگه پیگیر اخبار اینترنت باشید میدونید که هفته پیش خبری (http://googleonlinesecurity.blogspot.com/2011/08/update-on-attempted-man-in-middle.html) مبنی بر جعل گواهی امنیتی گوگل منتشر شد که امنیت کاربران داخل ایران را به خطر انداخت. واسه همین تصمیم گرفتم توضیحاتی ساده در مورد پروتکل HTTPS (http://en.wikipedia.org/wiki/HTTP_Secure) و گواهی SSL (http://en.wikipedia.org/wiki/Secure_Sockets_Layer) بدم تا بفهمیم که استفاده از HTTPS آنقدرها هم که فکر میکنیم کاملاً امن نیست و احتمال نفوذ به اون وجود داره.
http://itline.ir/wp-content/uploads/2011/09/https.jpgاین HTTPS که میگن چجوری کار میکنه؟شما وقتی یک سایت با پیشوند https را باز میکنید کمی با روش معمول باز شدن سایتها فرق داره.
در مرحله اول مرورگر شما گواهینامه SSL سایت مقصد رو چک میکنه، یعنی اطلاعات رو به سایتی که از اون گواهی SSL خریداری شده میفرسته. سایت فروشنده SSL هم اعلان میکنه که این گواهی SSL معتبر است یا خیر. در صورتی که گواهی معتبر بود، مرورگر کار باز کردن سایت رو ادامه میده و در غیر اینصورت پیامی مبنی بر مشکلدار بودن گواهی و عدم اعتبار اون نشون میده.
مثلا در سایت بعضی از بانکهای ایرانی بدلیل عدم استفاده از گواهی معتبر با این مشکل مواجه میشوید و مرورگر به شما اخطار میده.حالا که مطمئن شدیم گواهی SSL صحیحه و واقعاً از همین سایته، مرورگر شما یک کد رندوم ایجاد میکنه (البته به مقادیری وابسته است و کاملاً رندوم نیست!). سپس ارسال و دریافت اطلاعات شروع میشه! اطلاعات در سرور اصلی با استفاده از اون کد ایجاد شده در مرورگر، رمز شده و دوباره به مرورگر فرستاده میشه، در آخر اطلاعات توسط مرورگر رمزگشایی شده و شما میتونید سایت رو ببینید.
این کد تقریبا مثل رمز فایلهای فشرده عمل میکنه تا کسی رمز رو نداشته باشه نمیتونه از محتویاتش مطلع بشه و تنها کسی که این رمز رو داره مرورگر اینترنتی شماست.کد ایجاد شده از دو بخش تشکیل شده، قسمت Public برای رمزنگاری و قسمت Private برای رمزگشایی اطلاعات استفاده میشه. برای رمزگشایی اطلاعات داشتن قسمت Private الزامیه که این بخش فقط در مرورگر اینترنتی قرار داره به همین خاطر سایت اصلی بعد از اینکه اطلاعات رو برای شما رمز کرد خودش هم نمیتونه اطلاعات رو بخونه چون قسمت Private رو در اختیار نداره.
بابا این که خیلی امنه! حرف درستیه، پروتکل HTTPS خیلی امنه ولی نه کاملاً امن! راههایی برای شنود اون وجود داره که چندتاشو توضیح میدم.
http://itline.ir/wp-content/uploads/2011/09/mitm1.jpg- ابزارهای رمزگشا: همانطور که برای فایلهای فشرده ابزار رمزگشایی هست برای SSL هم هست. این ابزارها به صورت نرمافزاری و سختافزاری وجود دارند که البته سه مشکل اساسی همراه اونهاست. اول اینکه خیلی گرونند، دوم برای اجرا نیاز به یک سیستم قوی دارند و سوم سرعت اینترنت رو به شدت کاهش میدهند.- دستکاری کردن اطلاعات: ابزارهای رمزگشایی هستند که اطلاعات رو دستکاری میکنند. نتیجه این که سریعتر به جواب میرسند پس هم سرعت بالاتر میره و هم منابع سیستم کمتری مصرف میشه. البته این کار را مرورگر میفهمه و از اون جلوگیری میکنه.- مردی در میانه (Man In The Middle): یک ارتباط کد شده رو مثل صحبت کردن فرض کنید. مثلاً وقتی ساسان با آرش صحبت میکنه به معنای یک ارتباط رمز شده موفق باشد. وقتی ساسان با آرش صحبت میکنه ناگهان علی (من) پدیدار میشه و در بین این دو نفر قرار میگیره و ساسان و آرش دیگه صدای هم رو نمیشنوند. حالا علی چه میکنه؟ علی با ساسان صحبت میکنه بعد پیش آرش میره و دقیقاً حرفهای ساسان رو منتقل میکنه.
مثل یک کانال ارتباطی هر دو طرف فکر میکنند یک ارتباط امن دارند ولی علی همه چیز رو شنود کرد. اتفاقی که برای گوگل افتاد دقیقاً همین بود. یک گواهی جعلی در بین راه قرار گرفته بود و کلیه اطلاعات رو بدون دستکاری منتقل میکرد. این گواهی جعلی ظاهرا معتبر نشان میداد برای همین مرورگر شما فکر میکرد ارتباط کاملاً امنه و گول میخورد.آیاسپی چه اطلاعاتی رو میتونه شنود کنه؟معمولاً آیاسپیها پروتکل HTTPS رو به خاطر هزینه بالا شنود نمیکنند ولی بقیه اطلاعات به طور کامل قابل شنوده. اینکه به چه سایتهایی رفتهاید و چه اطلاعاتی رد و بدل شده و حتی log کامل چتهای شما.
دقت کنید در کافی نتها این مورد بسیار معمول است. (این ابزارها در دسترس و نصب آنها ساده است).آیا Virtual Private Network مشکل رو حل میکنه؟نحوه عملکرد شبکه خصوصی مجازی (http://en.wikipedia.org/wiki/Virtual_private_network) تقریبا مشابه HTTPS است با این تفاوت که با HTTPS رمزنگاری روی اطلاعات یک سایت اعمال میشه ولی در Virtual Private Network اطلاعات کل پهنای باند رمزنگاری خواهد شد. خطر شنود اطلاعات تماماً برای شبکه خصوصی مجازی نیز برقراره و کسی که به شما این خدمات رو ارائه میده میتونه مثل یک ISP اطلاعات رو شنود کنه.
افزونه Certificate Patrol برای فایرفاکساین افزونه (https://addons.mozilla.org/en-US/firefox/addon/certificate-patrol/) پس از نصب اطلاعات گواهی SSL سایتهایی رو که از اونها بازدید میکنید جمع آوری میکنه و به رصد اونها میپردازه و هر وقت که اطلاعات گواهی سایتی دچار تغییر شد به شما اخطار میده که مثلاً اطلاعات شرکت، تاریخ یا اثر انگشت (Fingerprint) این گواهی تغییر کرده و با اطلاعات قبلی اختلاف داره و اگر گواهی SSL دستکاری و جعل شده باشه شما متوجه اون خواهید شد.
http://itline.ir/wp-content/uploads/2011/09/https.jpgاین HTTPS که میگن چجوری کار میکنه؟شما وقتی یک سایت با پیشوند https را باز میکنید کمی با روش معمول باز شدن سایتها فرق داره.
در مرحله اول مرورگر شما گواهینامه SSL سایت مقصد رو چک میکنه، یعنی اطلاعات رو به سایتی که از اون گواهی SSL خریداری شده میفرسته. سایت فروشنده SSL هم اعلان میکنه که این گواهی SSL معتبر است یا خیر. در صورتی که گواهی معتبر بود، مرورگر کار باز کردن سایت رو ادامه میده و در غیر اینصورت پیامی مبنی بر مشکلدار بودن گواهی و عدم اعتبار اون نشون میده.
مثلا در سایت بعضی از بانکهای ایرانی بدلیل عدم استفاده از گواهی معتبر با این مشکل مواجه میشوید و مرورگر به شما اخطار میده.حالا که مطمئن شدیم گواهی SSL صحیحه و واقعاً از همین سایته، مرورگر شما یک کد رندوم ایجاد میکنه (البته به مقادیری وابسته است و کاملاً رندوم نیست!). سپس ارسال و دریافت اطلاعات شروع میشه! اطلاعات در سرور اصلی با استفاده از اون کد ایجاد شده در مرورگر، رمز شده و دوباره به مرورگر فرستاده میشه، در آخر اطلاعات توسط مرورگر رمزگشایی شده و شما میتونید سایت رو ببینید.
این کد تقریبا مثل رمز فایلهای فشرده عمل میکنه تا کسی رمز رو نداشته باشه نمیتونه از محتویاتش مطلع بشه و تنها کسی که این رمز رو داره مرورگر اینترنتی شماست.کد ایجاد شده از دو بخش تشکیل شده، قسمت Public برای رمزنگاری و قسمت Private برای رمزگشایی اطلاعات استفاده میشه. برای رمزگشایی اطلاعات داشتن قسمت Private الزامیه که این بخش فقط در مرورگر اینترنتی قرار داره به همین خاطر سایت اصلی بعد از اینکه اطلاعات رو برای شما رمز کرد خودش هم نمیتونه اطلاعات رو بخونه چون قسمت Private رو در اختیار نداره.
بابا این که خیلی امنه! حرف درستیه، پروتکل HTTPS خیلی امنه ولی نه کاملاً امن! راههایی برای شنود اون وجود داره که چندتاشو توضیح میدم.
http://itline.ir/wp-content/uploads/2011/09/mitm1.jpg- ابزارهای رمزگشا: همانطور که برای فایلهای فشرده ابزار رمزگشایی هست برای SSL هم هست. این ابزارها به صورت نرمافزاری و سختافزاری وجود دارند که البته سه مشکل اساسی همراه اونهاست. اول اینکه خیلی گرونند، دوم برای اجرا نیاز به یک سیستم قوی دارند و سوم سرعت اینترنت رو به شدت کاهش میدهند.- دستکاری کردن اطلاعات: ابزارهای رمزگشایی هستند که اطلاعات رو دستکاری میکنند. نتیجه این که سریعتر به جواب میرسند پس هم سرعت بالاتر میره و هم منابع سیستم کمتری مصرف میشه. البته این کار را مرورگر میفهمه و از اون جلوگیری میکنه.- مردی در میانه (Man In The Middle): یک ارتباط کد شده رو مثل صحبت کردن فرض کنید. مثلاً وقتی ساسان با آرش صحبت میکنه به معنای یک ارتباط رمز شده موفق باشد. وقتی ساسان با آرش صحبت میکنه ناگهان علی (من) پدیدار میشه و در بین این دو نفر قرار میگیره و ساسان و آرش دیگه صدای هم رو نمیشنوند. حالا علی چه میکنه؟ علی با ساسان صحبت میکنه بعد پیش آرش میره و دقیقاً حرفهای ساسان رو منتقل میکنه.
مثل یک کانال ارتباطی هر دو طرف فکر میکنند یک ارتباط امن دارند ولی علی همه چیز رو شنود کرد. اتفاقی که برای گوگل افتاد دقیقاً همین بود. یک گواهی جعلی در بین راه قرار گرفته بود و کلیه اطلاعات رو بدون دستکاری منتقل میکرد. این گواهی جعلی ظاهرا معتبر نشان میداد برای همین مرورگر شما فکر میکرد ارتباط کاملاً امنه و گول میخورد.آیاسپی چه اطلاعاتی رو میتونه شنود کنه؟معمولاً آیاسپیها پروتکل HTTPS رو به خاطر هزینه بالا شنود نمیکنند ولی بقیه اطلاعات به طور کامل قابل شنوده. اینکه به چه سایتهایی رفتهاید و چه اطلاعاتی رد و بدل شده و حتی log کامل چتهای شما.
دقت کنید در کافی نتها این مورد بسیار معمول است. (این ابزارها در دسترس و نصب آنها ساده است).آیا Virtual Private Network مشکل رو حل میکنه؟نحوه عملکرد شبکه خصوصی مجازی (http://en.wikipedia.org/wiki/Virtual_private_network) تقریبا مشابه HTTPS است با این تفاوت که با HTTPS رمزنگاری روی اطلاعات یک سایت اعمال میشه ولی در Virtual Private Network اطلاعات کل پهنای باند رمزنگاری خواهد شد. خطر شنود اطلاعات تماماً برای شبکه خصوصی مجازی نیز برقراره و کسی که به شما این خدمات رو ارائه میده میتونه مثل یک ISP اطلاعات رو شنود کنه.
افزونه Certificate Patrol برای فایرفاکساین افزونه (https://addons.mozilla.org/en-US/firefox/addon/certificate-patrol/) پس از نصب اطلاعات گواهی SSL سایتهایی رو که از اونها بازدید میکنید جمع آوری میکنه و به رصد اونها میپردازه و هر وقت که اطلاعات گواهی سایتی دچار تغییر شد به شما اخطار میده که مثلاً اطلاعات شرکت، تاریخ یا اثر انگشت (Fingerprint) این گواهی تغییر کرده و با اطلاعات قبلی اختلاف داره و اگر گواهی SSL دستکاری و جعل شده باشه شما متوجه اون خواهید شد.