ه‍.ش. ۱۳۹۲ اردیبهشت ۱, یکشنبه

امنیت در اینترنت به زبان ساده (قسمت اول)


مقدمه

امروزه استفاده از اینترنت جزء ضروری زندگی خیلی از ما شده. جستجوی پاسخ سوالی یا تحقیق در مورد موضوعی، ارتباط با دوستان، اطلاع از اخبار، انجام کارهای اداری و بانکی، حتی تفریح‌های سابقا رادیوتلویزیونی، و خیلی کارهای دیگر همگی از طریق اینترنت قابل انجام است. در این بین تصور کنید که کسی همه‌ی کنش‌های شما بر روی شبکه را ببیند، از شماره‌ی حساب بانکی شما و رمز ورود به آن گرفته تا آدرس ومحتوای ایمیل‌های شما، همه‌ی وب‌سایت‌هایی که به آن سر می‌زنید و غیره. طبیعی است که از چنین اطلاعاتی به راحتی می‌توان سوء استفاده کرد. به خصوص اگر در کشوری زندگی می‌کنید که مفاهیمی مانند احترام به حریم خصوصی و قوانین سخت‌گیرانه برای مبارزه با جرایم اینترنتی چندان پیش‌رفته نیست یا اصلا وجود ندارد. یا حتی بدتر از آن، خود دولتی که باید مدافع این حریم باشد به دلایل امنیتی بزرگ‌ترین مشتری این اطلاعات شخصی باشد.

سفارش پیتزا در دنیایی بدون احترام به حریم خصوصی!

دلایل بالا احتمالا کافیست تا حداقل آشنایی با امنیت برروی شبکه را برای همه‌ی کابران این شبکه ضروری کند و هدف این مجموعه از نوشته‌ها هم همین است. تلاش بر این است که مفاهیم به شکل خیلی ساده مطرح شود و در عین حال ارتباط مثال‌های ساده با دنیای واقعی شبکه‌ها مشخص شود. به‌طور مشخص در پایان آخرین قسمت این نوشته‌ها شما، مستفل از پیش‌زمینه‌ی تحصیلی‌تان (تنها با فرض دانش ریاضی در سطح دبیرستان)، احتمالا می‌توانید نحوه‌ی کار پروتکل https را درک کنید و مثلا بدانید حمله‌هایی که در سال‌ گذشته از ایران به اکانت ایمیل بعضی از کاربران جی‌میل صورت گرفت، چگونه انجام شد. این حمله در تابستان ۱۳۹۰ (۲۰۱۱) صورت گرفت و این گزارش اولیه‌ی گوگل از ماجراست. برای گزارش‌های خبری به فارسی می‌توانید این خبر بی‌بی‌سی یا این گزارش دویچه‌وله را ببینید. درپایان این مقدمه لازم است تاکید کنم که امنیت شبکه، حتی برای شهروندان کشورهای به اصطلاح پیش‌رفته، کاملا مهم است، چه از بعد جرایم مالی و چه از بعد حریم خصوصی، برای کوتاه کردن سخن شاید دیدن این فیلم طنز کوتاه مناسب باشد.


نحوه‌ی برقراری ارتباط در اینترنت

تمام رایانه‌های متصل به شبکه‌ی اینترنت، یک آدرس اینترنتی دارند، چیزی شبیه شماره تلفن یک نفر که هر کس برای تماس گرفتن با آن شخص باید آن را بداند. ممکن است چند رایانه در یک شبکه‌ی محلی، مثلا داخل یک خانه یا سازمان، یک آدرس اینترنتی مشترک داشته باشند به‌علاوه‌ی آدرس‌های داخلی که فقط در آن خانه یا سازمان معنا دارد، چیزی مانند شماره‌ تلفن‌های داخلی اگر بخواهیم از مثال تلفن استفاده کنیم. در این‌جا و جاهای دیگر از این جزییات به قصد ساده‌سازی چشم‌پوشی می‌کنیم، برای اطلاعات بیشتر نگاه کنید به NAT در ویکی‌پدیای انگلیسی. این آدرس که اصطلاحا به آن آدرس آی‌پی (IP برگرفته از Internet Protocol) گفته می‌شود، معمولا از چهار شماره بین صفر و ۲۵۵ تشکیل می‌شود، مثلا ۱۹۲.۲۲۵.۱۰۰.۳۴ این آدرس‌ عملا یک عدد ۳۲ بیتی در مبنای دو است که به شکل چهار عدد ۸ بیتی نمایش داده می‌شود. به همین دلیل هریک از این چهار عدد حداکثر ۲۵۵ است معادل ۸ بیت یک در مبنای دو. این آدرس‌ها مربوط به رایج‌ترین پروتکل اینترنت (Internet Protocol) یا همان IPv4 است. باز هم برای سادگی از جزییات مربوط به آدرس‌های جدید ۱۲۸ بیتی یا همان IPv6 صرف‌نظر می‌کنیم. وقتی رایانه‌ی شما با رایانه‌ی دیگری بر روی شبکه ارتباط برقرار می‌کند، از همین آدرس استفاده می‌کند، البته ارتباط به شکل مستقیم برقرار نمی‌شود بلکه در بین راه از تعدادی «مسیر‌یاب» (router) می‌گذرد. مسیر‌یاب رایانه‌ای است که اطلاعات مربوط به محل و نحوه‌ی اتصال رایانه‌های مختلف روی شبکه در آن نگه‌داری می‌شود. به‌عنوان مثال، فرض کنید شما برای جستجوی وب با یکی از رایانه‌های شرکت گوگل با آدرس ۷۴.۱۲۵.۲۲۶.۷۱ ارتباط برقرار کنید، مراحل برقراری این ارتباط به شکل خیلی خلاصه چنین است:
  1. رایانه‌ی شما آدرس مقصد را به نزدیک‌ترین مسیریاب اعلام می‌کند. این مسیریاب معمولا متعلق به شرکتی‌ است که خدمات اینترنت را از آن خریداری کرده‌اید ( «رساننده خدمات اینترنت» یا همان آی‌اس‌پی یا ISP ).
  2. این مسیریاب اگر مستقیما به رایانه‌ی مقصد هم متصل باشد (که در مثال بالا بعید است)، درخواست شما را به آن می‌فرستد. اگر نه، از روی آدرس مقصد (معمولا با استفاده از شماره‌ی اول، یعنی ۷۴ در این مثال) مسیریاب اول می‌داند که درخواست شما را به کدام‌یک از مسیریاب‌های دیگری که به آن متصل است ارسال کند.
  3. دو مرحله‌ی قبلی در مسیریاب یا مسیریاب‌های بعدی هم تکرار می‌شود تا نهایتا درخواست شما به رایانه‌ی گوگل برسد.
  4. بر روی «بسته»‌ی درخواستی شما، آدرس مبدا یعنی همان رایانه‌ی شما هم نوشته شده است (مانند آدرس فرستنده روی پاکت نامه) بنابراین رایانه‌ی گوگل بعد از استخراج پاسخ شما با همان روش قبلی اطلاعات را برای رایانه‌ی شما ارسال می‌کند.
شمایی از ارتباط رایانه‌ها در اینترنت، برگرفته از ویکی‌پدیا .
در توصیف بالا از عبارت «بسته» (یا packet) استفاده شد و دلیل آن این است که درخواست یا اطلاعاتی که بین دو رایانه رد و بدل می‌شود به قطعه‌های کوچک به نام بسته شکسته می‌شود. هربسته شامل قسمتی از اطلاعات ارسالی است به علاوه‌ی آدرس مبدا، آدرس مقصد، و داده‌های دیگر مربوط به مشخصات بسته. برای اندازه‌ی این بسته‌ها معمولا سقفی تعیین می‌شود، مثلا ۶۴ کیلوبایت. بررسی دلایل استفاده از این بسته‌ها فراتر از حوصله‌ی این نوشته است. مثلا یکی از فواید این است که اگر بسته‌ای به مقصد نرسید، تنها همان یک بسته را می‌توان مجددا ارسال کرد، به علاوه بسته‌ها کاملا مستقل از یکدیگرند و ارتباط مفهومی احتمالی آن‌ها تنها در مبدا و مقصد مهم است و از دید مسیریاب اهمیتی ندارد، بنابراین بسته‌های مختلف یک پیام ممکن است از مسیرهای مختلف به مقصد برسند. تصویر روبه‌رو شاید برای درک به‌تر مراحل بالا مفید باشد. مسیر‌یاب‌ها در این تصویر با استوانه‌های آبی نشان داده شده‌اند که علامتی شبیه ضربدر روی آنهاست. می‌توانید به این تصویر به شکل هرمی نگاه کنید که کاربران نهایی (مانند رایانه‌ی منزل شما) در قاعده‌ی هرم قرار دارند و هرچه به راس هرم نزدیک‌تر می‌شویم با شرکت‌های بزرگ و بزرگ‌تری سروکار داریم که وظیفه‌ی اصلی‌شان ارائه‌ی خدمات اینترنت و ایجاد و نگه‌داری زیرساخت‌های شبکه است. مثلا رایانه‌ی شما ابتدا به آی‌اس‌پی محلی در شهر یا محله‌تان متصل است. این آی‌اس‌پی خود به آی‌اس‌پی‌های بزرگ‌تر متصل است و ... توجه کنید که در مثال بالا، هم رایانه‌ی منزل شما و هم رایانه‌ی شرکت گوگل در قاعده‌ی هرم و به عنوان کاربران نهایی قلمداد می‌شوند. به این ساختار هرمی دقت کنید چون در جاهای دیگر هم مشابه آن تکرار خواهد شد!


تبدیل نام به آدرس اینترنتی

سوالی که تا الان احتمالا پیش آمده این است که ما هر روز چندین بار از اینترنت و به‌طور خاص خدمات گوگل استفاده می‌کنیم ولی چرا تا به‌حال با آدرس‌های عجیبی مثل ۷۴.۱۲۵.۲۲۶.۷۱ سروکار نداشته‌ایم؟ پاسخ در رایانه‌هایی است که نام‌هایی مثل google.com را به این آدرس‌ها تبدیل می‌کنند و به آن‌ها «کارساز نام دامنه» يا دی‌ان‌اس (DNS: Domain Name Server) گفته می‌شود. در متون فنی به زبان فارسی، ترکیب اصطلاحات اصلی با ترجمه‌ی فارسی آن معمولا مشکل‌زاست. من در مواردی از ترجمه‌ها استفاده کرده‌ام ولی در موارد دیگر که اصطلاح اصلی خیلی رایج شده همان را به‌کار برده‌ام. به‌عنوان مثال در این‌جا «کارساز» ترجمه‌ی همان server است! به‌نظرم استفاده از ترکیب‌های فارسی ارجح است چون درک مطلب را برای غیر متخصصین راحت‌تر می‌کند ولی گاهی موجب سردرگمی می‌شود. یکی از این رایانه‌ها معمولا در همان آی‌اس‌پی محلی شما وجود دارد و وقتی شما عبارت google.com را در قسمت آدرس مرورگر (browser) خود وارد می‌کنید، مرورگر شما آدرس آی‌پی google.com را از این کارساز نام‌دامنه می‌پرسد و بعد از گرفتن پاسخ این آدرس را با آدرسی مثل ۷۴.۱۲۵.۲۲۶.۷۱ جایگزین می‌کند. از این‌جا به بعد، ادامه‌ی کار مانند مراحل بالاست. برای اطلاعات بیش‌تر نگاه کنید به ساناد یا سامانه‌ی نام دامنه. چیزی مشابه ساختار هرمی بالا بین مسیر‌یاب‌ها، برای این کارسازهای نام دامنه هم وجود دارد. مثلا دی‌ان‌اس اول ممکن است آدرس google.com را نداند که در این‌صورت از دی‌ان‌اس بزرگ‌تری در سطح بالاتر آن را می‌پرسد و الی آخر. آدرس دی‌ان‌اس اول را معمولا شرکت خدمات اینترنت به‌طور خودکار به رایانه‌ی شما اطلاع می‌دهد.

تبدیل نام به آدرس اینترنتی، برگرفته از Mx Toolbox
به عنوان نمونه می‌توانید به این وب‌سایت مراجعه کنید و آدرس اینترنتی وب‌سایت‌های مختلف را با استفاده از آن پیدا کنید. نام وب‌سایت را در قسمتی که در عکس نشان داده شده وارد کنید و بعد کلید DNS Lookup را فشار دهید.


مشکل «جاسوس بین راه»

بازگردیم به بحث امنیت در اینترنت. با توصیف بالا ابتدایی‌ترین مشکلی که از نظر امنیتی وجود دارد، این است که در مسیریاب‌های بینی، تمام اطلاعاتی که شما ردوبدل می‌کنید مشخص است. مثلا اگر کسی به رایانه‌های شرکت اصلی خدمات اینترنت شما دسترسی داشته باشد، می‌تواند وب‌سایت‌هایی که به آن متصل می‌شوید، محتوای ایمیل‌هایی که می‌فرستید، یا حتی رمزهای عبور شما را ببیند. ولی در عمل خیلی از وب‌سایت‌های معتبر از امکانات رمز‌نگاری خاصی استفاده می‌کنند که این‌ نوع از جاسوسی بسیار مشکل می‌شود. در قسمت بعدی این مجموعه به بررسی روش‌های پایه‌ی رمزنگاری در اینترنت خواهیم پرداخت. از یاد نبریم که هدف این نوشته‌ها، درک سازوکارها بدون داشتن دانش تخصصی است، پس اگر مفهومی روشن نیست، لطفا از بخش نظرات استفاده کنید.


پانوشت‌ها