فرمان TheStartTLS (که به آن STARTSSL ،StartSSL یا Opportunistic TLS هم گفته میشود) پروتکل TLS را توسعه میدهد تا اطلاعات مخابره شده با استفاده از این پروتکل، رمزنگاری شوند. از StartTLS معمولاً به عنوان یک افزونه پروتکل برای ارتباطات ایمیلی با پروتکلهایی مثل SMTP، IMAP و POP استفاده میشود. عملکرد StartTLS تقریباً مشابه HTTP است. در حال حاضر نیز استفاده از HTTPS بسیار رایج است. StartTLS قادر به رمزنگاری با روشهای زیر است:
- LDAP (RFC 4511)
- FTP (RFC 4217)
- XMPP (RFC 6120)
- NNTP (RFC 4642)
امروزه StartTLS تبدیل به یکی از روشهای پرطرفدار برای رمزنگاری ایمیل در بین ISPها شده چون امکان استفاده از دامنهها و گواهینامههای مختلف را روی یک سرور فراهم میکند. البته این روش هم مشکلات متعددی به همراه دارد. برای مثال اطلاعاتی مثل آدرس آیپی در ابتدا به صورت غیررمزنگاری شده ارسال میشوند. در نتیجه امکان اجرای حملات مرد میانی در این روش وجود دارد.
StartTLS چگونه کار میکند؟
یک مزیت مهم StartTLS به عنوان یک فرمان جانبی برای SSL/TLS این است که ارتباطات از طریق آن فقط محدود به کلاینتهایی نیست که از رمزنگاری پشتیبانی نمیکنند اما نرمافزارهای ایمیل (کلاینتها) باید یک رویه مشخص برای زمانهایی که سروری، TLS را رد میکند داشته باشند. یکی دیگر از مزایای این روش، مذاکره دو طرفه درباره رمزنگاری است. به نحوی که اگر ارتباطی با شکست مواجه شود، فرایند کار به صورت خودکار ادامه پیدا کند. در این شرایط نیازی به مداخله مدیر یا کاربر نیست.
StartTLS همیشه با یک اتصال غیررمزنگاری شده بر روی پورتی که از پیش برای متن ساده تعریف شده، شروع میشود. فقط پس از اجرای کامل فرمان StartTLS، پروتکل بر سر رمزنگاری با کلاینت مذاکره میکند و نیازی به برقراری اتصال جدید وجود ندارد. با استفاده از StartTLS اگر خطای ارتباطی رخ دهد، نیازی به برقراری تماس با پورت وجود ندارد. کلاینت میتواند فقط از پروتکل StartTLS ارائه شده توسط سرور استفاده کند.
معایب StartTLS مربوط به نرمافزارهای ایمیلی هستند. فایروالها باید این فرایند را در سطح کاربر تحلیل کنند تا دادههای رمزنگاری نشده و رمزنگاری شده را از یکدیگر تفکیک کنند. این مسئله برای پروکسیهایی که پورتها را از یکدیگر تفکیک میکنند هم صدق میکند چون پورتها با StartTLS تغییر نمیکنند. بنابراین اجرای عملیات کشینگ مناسب با چالش روبرو شده و در بعضی موارد اصلاً انجام نمیشود.
StartTLS نگرانیهایی در رابطه با حفاظت از دادهها ایجاد میکند. نرمافزارهای ایمیل معمولاً از گزینه TLS where possible استفاده میکنند بنابراین کاربر متوجه نمیشود که اتصال به ایمیل سرور رمزنگاری شده یا خیر. در چنین شرایطی مخاطرات اجرای حمله مرد میانی هم افزایش پیدا میکند چون اپراتور شبکه میتواند افزونه StartTLS را به راحتی فیلتر کرده و امکان ثبت دادههای مبادله شده را پیدا کند. اگر فرمان StartTLS اجرا نشود، دادهها رمزنگاری نمیشوند و کاربر نیز معمولاً متوجه این موضوع نمیشود.
در نتیجه لازم است از قبل StartTLS را با دقت امتحان کنید تا مشخص شود که سرور با StartTLS سازگار هست یا خیر. فقط در این صورت میتوانید از StartTLS استفاده کنید. اگر پس از انجام این کار، رمزنگاری با شکست روبرو شد، احتمالاً دلیل آن یک مشکل خارجی است.
مثال: ایمیل
کاربری قصد دارد ایمیلی را با استفاده از TLS رمزنگاری کند. او پروتکل StartTLS را در پیکربندی حساب کاربری یا تنظیمات حساب کلاینت ایمیل انتخاب میکند تا فرایند رمزنگاری به صورت کاملاً روان در عملیات معمولی ادغام شود. پس از ارسال ایمیل، ارتباط شروع میشود:
- کلاینت با ارسال 250-STARTTLS از سرور میپرسد آیا روش رمزنگاری مورد قبول است؟
- اگر پاسخ مثبت باشد (“go ahead”)، اتصال رمزنگاری شده برقرار میشود.
- کلاینت اتصال را از نو شروع میکند و حالا ارتباطات ایمیلی رمزنگاری میشوند.
چگونه StartTLS را امتحان کنیم؟
با توجه به شرکتی که از خدمات آن استفاده میکنید، پورت مورد استفاده TLS متفاوت خواهد بود. میتوان StartTLS را به راحتی در یک اتصال ادغام کرد تا نیازی به تعویض پورت وجود نداشته و همچنین میتوان روش رمزنگاری را از یک ترمینال مناسب به راحتی امتحان کرد. با این کار مشخص میشود که ارائهدهنده مدنظر از کدام پورت برای StartTLS استفاده میکند. میتوانید برای بررسی اینکه آیا یک ایمیل سرور StartTLS را به عنوان روش رمزنگاری در حین اجرای عملیات معمولی قبول میکند یا خیر (برای مثال در NetCat) از فرمان زیر استفاده کنید:
$ nc smtp.test.server smtp
220 Mailserver ESMTP Exim 4.69 Wed, 18 Jul 2018 12:19:15 +0200
ehlo test
250-Mailserver Hello oneandone [10.1.2.73]
250-SIZE 78643200
250-PIPELINING
250-STARTTLS
220-go ahead
250 HELP
Quit
221 Mailserver closing connection
فرمان STARTTLS برای فعالسازی رمزنگاری استفاده میشود. میتوانید دادههای خصوصی مثل آیپی را هم که در این فرایند به صورت غیررمزنگاری شده ارسال میشوند، مشاهده کنید.
این فرمان برای OpenSSL به صورت زیر است:
$ openssl s_client -host mail.test.server-port 25 -starttls smtp
CONNECTED(00000003)
[...]
250 HELP
ehlo test
250-Mailserver Hello oneandone [10.1.2.73]
250-SIZE 52428800
250-PIPELINING
250-AUTH PLAIN LOGIN
250 HELP
اما احراز هویت در SMTP چندان راحت نیست. در بیشتر موارد میتوان از متد AUTH PLAIN استفاده کرد که برای استفاده از آن، باید دادههای مربوط به دسترسی در مبنای 64 کدگذاری شوند. برای تولید کدی که بعد به سرور SMTP ارسال میشود (“AUTH PLAIN [Code]”) از فرمان پرل $ perl -MMIME::Base64 -e ‘print encode_base64(“\000user-ju\000secret”)’ استفاده میشود. اگر سرور با پیام “Authentication succeeded” (شامل کد) پاسخ دهد، امتحان StartTLS با موفقیت انجام شده است.
نکته: برای امتحان StartTLS روی سرورها یا پروتکلهای غیرسازگار با آن میتوان از ابزار gnuts-cli (از gnuts-bin) استفاده کرد.
منبع: computerweekly