HTTPS و TLS
جواب کوتاه
HTTPS همان HTTP است که روی یک کانال امن به نام TLS میرود. TLS سه کار میکند: مطمئن میشود با خود سایت حرف میزنید (با گواهیای که صادرکنندهای مورد اعتماد امضا کرده)، محتوا را رمز میکند تا کسی وسط راه نتواند بخواند، و نمیگذارد کسی بی آنکه پیدا شود چیزی را عوض کند. قفل کنار نشانی سایت یعنی همین کانال امن برپاست.
سه کلمه
- HTTPSهمان HTTP، روی یک کانال امن؛ حرف S از secure، یعنی امن. پورت پیشفرضش ۴۴۳ است.
- TLSکوتاهشدهی Transport Layer Security: لایهای که میان HTTP و TCP قرار میگیرد و گفتوگو را امن میکند.
- گواهیکارت شناسایی دیجیتال یک سایت که صادرکنندهای مورد اعتماد امضا کرده است. به آن گواهی SSL هم میگویند.
HTTP با قفل
پیامهای HTTP، همانطور که در درس قبل دیدید (درس HTTP)، متن سادهاند. پیامی که از خانهی شما تا سرور میرود، از دستگاههای زیادی میگذرد: مودم، روترهای شرکت اینترنت و بقیه. فرض کنید یکی از آنها نامهها را باز کند و بخواند:
HTTPS همان HTTP است، با همان روشها و کدها، ولی روی یک کانال امن به نام TLS. TLS میان HTTP و TCP مینشیند (درس TCP و UDP): HTTP پیامش را به TLS میدهد، TLS آن را امن میکند و به TCP میدهد.
پیک امانات: سه کار TLS
فرض کنید پیکی امانت مهمی برای شما میآورد. برای اینکه خیالتان راحت باشد، سه چیز لازم است:
سند TLS همین سه کار را میخواهد، و میخواهد درست بمانند حتی اگر مهاجمی کل شبکه را در دست داشته باشد. از میان دو طرف، سرور همیشه خودش را میشناساند؛ شناساندن مرورگر اختیاری است.
کارت شناسایی سایت
کارت شناسایی پیک را ادارهای صادر کرده که شما به آن اعتماد دارید. سایت هم یک گواهی دارد که یک صادرکنندهی مورد اعتماد امضا کرده است. کار صادرکننده این است که پیش از امضا بسنجد درخواستکننده واقعا صاحب آن نام دامنه است (درس دامنه).
مرورگر شما فهرستی از صادرکنندههای مورد اعتماد دارد. وقتی سایت گواهیاش را نشان میدهد، مرورگر دو چیز را میسنجد: آیا امضا از یکی از همین صادرکنندههاست، و آیا نام روی گواهی همان نامی است که شما نوشتهاید. سنجیدن نام را سند HTTPS لازم میداند، تا کسی نتواند خودش را جای سایت بزند.
دستدادن TLS
پیش از هر داده، مرورگر و سرور یک دستدادن کوتاه دارند، این بار برای امنیت (پس از دستدادن TCP؛ درس دستدادن سهمرحلهای). در نسخهی ۱.۳ این کار یک رفت و برگشت است:
در همین چند پیام، دو طرف روی روش رمزگذاری توافق میکنند و یک کلید مشترک میسازند، بی آنکه خود کلید را وسط راه بفرستند؛ و سرور گواهیاش را نشان میدهد. از آن به بعد هر داده با همان کلید رمز میشود. دستدادن طوری ساخته شده که مهاجم نتواند دو طرف را به توافق روی روشی ضعیفتر بکشاند.
قفل کنار نشانی
وقتی نشانی سایتی با https:// شروع میشود، مرورگر کنار نشانی نشانهای میگذارد که بگوید اتصال امن است. اگر گواهی مشکلی داشته باشد، مثلا نامش با نام سایت جور نباشد یا زمانش گذشته باشد، مرورگر هشدار میدهد. هشدار گواهی را جدی بگیرید؛ معنایش این است که مرورگر نتوانسته مطمئن شود با خود سایت حرف میزنید.
آنچه HTTPS نمیپوشاند
- نام سایت: مرورگر معمولا نام سایت را در آغاز دستدادن میگوید تا سرور گواهی درست را نشان دهد؛ پس نام سایت بهطور معمول پنهان نیست، ولی صفحهها و محتوا پنهاناند.
- اندازهی داده: TLS طول داده را پنهان نمیکند.
- درستکاری سایت: HTTPS میگوید با صاحب همان نام حرف میزنید، نه اینکه آن صاحب آدم خوبی است. سایت دروغین هم میتواند گواهی برای نام خودش داشته باشد؛ پس نام را با دقت بخوانید.
SSL، TLS و HSTS
SSL نام قدیمی همین کار بود، و TLS جانشین آن است. آخرین نسخهی SSL، یعنی SSLv3، دیگر نباید به کار برود. با این حال هنوز بسیاری به گواهیها «گواهی SSL» میگویند.
HSTS راهی است که سایت با آن به مرورگر میگوید «از این به بعد فقط با اتصال امن سراغ من بیا». اینطور مرورگر حتی اگر کسی نشانی را بی s نوشته باشد، خودش با HTTPS وصل میشود.
گرفتن و تمدید گواهی هم امروز میتواند خودکار باشد؛ پروتکلی به نام ACME برای همین ساخته شده است.
سه اشتباه
- «قفل کنار نشانی یعنی سایت درستکار است.»قفل فقط میگوید گفتوگو با همان نامی که نوشتهاید امن است؛ نمیگوید صاحب آن نام کیست یا قصدش چیست. نام را با دقت بخوانید.
- «HTTPS همهچیز را پنهان میکند، حتی نام سایت.»محتوا پنهان میماند، ولی نام سایت معمولا در آغاز دستدادن گفته میشود و اندازهی داده هم پیداست.
- «SSL و TLS دو چیز جدایند و باید هر دو را داشت.»SSL نام قدیمی همین کار است و نسخههای قدیمش دیگر نباید به کار بروند؛ امروز همه TLS است، هرچند هنوز «گواهی SSL» میگویند.
جمعبندی. آنچه از این درس با خودتان میبرید.
- HTTPS یعنی HTTP روی TLS؛ پورت ۴۴۳.
- سه کار TLS: شناختن سایت، پنهان ماندن محتوا، دستنخوردن آن.
- گواهی کارت شناسایی سایت است؛ مرورگر نام روی آن و امضای صادرکننده را میسنجد.
- دستدادن TLS 1.3 یک رفت و برگشت است و بعد از آن داده رمزشده میرود.
- قفل یعنی گفتوگو امن است، نه اینکه سایت درستکار است.
- SSL نام قدیمی است؛ HSTS یعنی سایت میگوید فقط امن سراغش بیایید.
خودتان را بسنجید
۱۵ پرسش، هر بار تازه از میان ۳۰ پرسش این درس. آخر آزمون فقط کارنامه را میبینید: چند درست، چند نادرست.