سرور کلید (رمزنگاری) چیست؟
در حوزه امنیت کامپیوتر، سرور کلید (Key Server) به کامپیوتری گفته میشود که کلیدهای رمزنگاری موجود را دریافت کرده و سپس آنها را در اختیار کاربران یا برنامههای دیگر قرار میدهد. این کاربران ممکن است برنامههایشان روی همان شبکهی سرور کلید اجرا شود یا روی کامپیوترهای شبکهای دیگر.
کلیدهایی که توسط سرور کلید توزیع میشوند، تقریباً همیشه به صورت بخشی از گواهینامههای کلید عمومی رمزنگاریشده ارائه میگردند. این گواهینامهها علاوه بر کلید، حاوی اطلاعات «هویتی» در مورد صاحب کلید نیز هستند. این گواهینامهها معمولاً در قالبهای استانداردی مانند فرمت کلید عمومی OpenPGP، فرمت گواهی X.509 یا فرمت PKCS قرار دارند. علاوه بر این، کلید مورد نظر تقریباً همیشه یک کلید عمومی است که برای الگوریتمهای رمزنگاری کلید نامتقارن استفاده میشود.
تاریخچه
سرورهای کلید نقش مهمی در رمزنگاری کلید عمومی ایفا میکنند.
در رمزنگاری کلید عمومی، فرد قادر است یک جفت کلید ایجاد کند که یکی از کلیدها خصوصی نگه داشته شده و دیگری به صورت عمومی توزیع میشود. آگاهی از کلید عمومی، امنیت رمزنگاری کلید عمومی را به خطر نمیاندازد. فردی که کلید عمومی یک جفت کلید را در اختیار دارد، میتواند از آن کلید برای انجام عملیات رمزنگاری استفاده کند که امکان ارتباطات محرمانه با احراز هویت قوی صاحب کلید خصوصی مطابق را فراهم میآورد. نیاز به داشتن کلید عمومی یک جفت کلید برای شروع ارتباط یا تأیید امضاها، یک مشکل اساسی (bootstrapping problem) است. یافتن کلیدها در وب یا نوشتن برای فرد جهت ارسال کلیدهای عمومیاش میتواند زمانبر و ناامن باشد. سرورهای کلید به عنوان مخازن مرکزی عمل میکنند تا نیاز به انتقال فردی کلیدهای عمومی را کاهش دهند و میتوانند به عنوان ریشه زنجیره اعتماد عمل کنند.
اولین سرور کلید PGP مبتنی بر وب توسط مارک هوروویتز (Marc Horowitz) در دوران تحصیلش در MIT نوشته شد. سرور کلید هوروویتز، HKP Keyserver نام داشت که برگرفته از پروتکل پروتکل سرور کلید HTTP OpenPGP (HKP) بود و برای تعامل افراد با سرور کلید استفاده میشد. کاربران قادر بودند کلیدها را از طریق HKP در پورت TCP 11371 یا از طریق صفحات وب که اسکریپتهای CGI را اجرا میکردند، بارگذاری، دانلود و جستجو کنند. قبل از ایجاد HKP Keyserver، سرورهای کلید برای تعامل به اسکریپتهای پردازش ایمیل متکی بودند.
یک سرور کلید مجزا به نام PGP Certificate Server توسط PGP, Inc. توسعه یافت و به عنوان نرمافزار (تا نسخه 2.5.x برای سرور) برای سرور کلید پیشفرض در PGP تا نسخه 8.x (برای نرمافزار کلاینت) keyserver.pgp.com استفاده شد. Network Associates حق امتیازی (ثبت اختراع ایالات متحده 6336186) را که توسط جان کَلاس (Jon Callas) همتألیف شده بود، بر مفهوم سرور کلید دریافت کرد.
برای جایگزینی Certificate Server قدیمی، یک سرور کلید مبتنی بر LDAP در Network Associates بازطراحی شد که بخشی از آن توسط رندی هارمون (Randy Harmon) و لن سَسَمان (Len Sassaman) انجام شد و PGP Keyserver 7 نام گرفت. با انتشار PGP 6.0، LDAP رابط سرور کلید ترجیحی برای نسخههای PGP Network Associates شد. این سرور کلید LDAP و LDAPS (که برای سازگاری با نسخههای قبلی، HKP را نیز پشتیبانی میکرد، اگرچه این پروتکل به درستی «HTTP» یا «HTTPS» نامیده میشد) همچنین مبنای ابزارهای مدیریت PGP برای سرورهای کلید خصوصی در محیطهای شرکتی، همراه با اسکیمایی برای Netscape Directory Server شد.
PGP Keyserver 7 بعدها با PGP Global Directory جدید شرکت PGP جایگزین شد که امکان انتشار و دانلود کلیدهای PGP را با استفاده از HTTPS یا LDAP فراهم میکند.
سرورهای کلید عمومی در مقابل خصوصی
بسیاری از سرورهای کلید در دسترس عموم، که در سراسر جهان واقع شدهاند، کامپیوترهایی هستند که کلیدهای OpenPGP را از طریق اینترنت برای کاربران آن سیستم رمزنگاری ذخیره و ارائه میدهند. در این حالت، این کامپیوترها توسط افراد به عنوان یک سرویس رایگان اداره میشوند که مدل «شبکه اعتماد» مورد استفاده PGP را تسهیل میکند.
چندین سرور کلید S/MIME در دسترس عموم وجود دارد که برای انتشار یا بازیابی گواهینامههای مورد استفاده با سیستم رمزنگاری S/MIME در دسترس هستند.
همچنین چندین سیستم زیرساخت کلید عمومی اختصاصی وجود دارند که سرورهای کلید را برای کاربران خود نگهداری میکنند؛ اینها ممکن است خصوصی یا عمومی باشند و تنها کاربران شرکتکننده از وجود این سرورهای کلید آگاه خواهند بود.
نگرانیهای مربوط به حریم خصوصی
برای بسیاری از افراد، هدف از استفاده از رمزنگاری، دستیابی به سطح بالاتری از حریم خصوصی در تعاملات و روابط شخصی است. اشاره شده است که اجازه دادن به بارگذاری کلید عمومی در یک سرور کلید هنگام استفاده از سیستمهای رمزنگاری مبتنی بر شبکه اعتماد غیرمتمرکز مانند PGP، ممکن است اطلاعات زیادی را فاش کند که فرد ممکن است بخواهد خصوصی نگه داشته شود. از آنجایی که PGP به امضاها بر روی کلید عمومی فرد برای تعیین اعتبار آن کلید متکی است، روابط بالقوه را میتوان با تجزیه و تحلیل امضاکنندگان یک کلید معین آشکار کرد. به این ترتیب، مدلهایی از کل شبکههای اجتماعی را میتوان توسعه داد.
مشکلات سرورهای کلید
سرورهای کلید OpenPGP از زمان توسعه در دهه 1990 با مشکلاتی مواجه بودهاند. پس از بارگذاری یک کلید عمومی، حذف آن عمداً دشوار ساخته شده بود، زیرا سرورها به طور خودکار با یکدیگر همگامسازی میشدند (این کار برای مبارزه با سانسور دولتی انجام شد). برخی از کاربران به دلایل مختلف، مانند فراموش کردن عبارت عبور یا به خطر افتادن یا گم شدن کلید خصوصیشان، استفاده از کلیدهای عمومی خود را متوقف میکنند. در این موارد، حذف کلید عمومی از سرور دشوار بود و حتی اگر حذف میشد، شخص دیگری میتوانست یک کپی تازه از همان کلید عمومی را در سرور بارگذاری کند. این امر منجر به انباشت کلیدهای عمومی قدیمی و «فسیل» شده میشود که هرگز از بین نمیروند، شکلی از «پلاک سرور کلید» (keyserver plaque). در نتیجه، هر کسی میتواند یک کلید عمومی جعلی را در سرور کلید بارگذاری کند که به نام شخصی باشد که در واقع مالک آن کلید نیست، یا حتی بدتر از آن، از آن به عنوان یک آسیبپذیری استفاده کند: حمله اسپم گواهینامه (Certificate Spamming Attack).
سرور کلید راهی برای بررسی مشروعیت کلید (متعلق به صاحب واقعی) نداشت.
برای حل این مشکلات، PGP Corp نسل جدیدی از سرورهای کلید به نام PGP Global Directory را توسعه داد. این سرور کلید یک درخواست تأیید از طریق ایمیل به صاحب احتمالی کلید ارسال میکرد و از آن فرد میخواست که تأیید کند کلید مورد نظر متعلق به اوست. در صورت تأیید، PGP Global Directory کلید را میپذیرفت. این فرآیند میتواند به صورت دورهای تکرار شود تا از انباشت پلاک سرور کلید جلوگیری شود. نتیجه، مجموعهای با کیفیت بالاتر از کلیدهای عمومی است و هر کلید با ایمیل با صاحب ظاهری کلید بررسی شده است. اما در نتیجه، مشکل دیگری پیش میآید: از آنجایی که PGP Global Directory امکان نگهداری حساب کلید را فراهم میکند و فقط از طریق ایمیل تأیید میکند، نه به صورت رمزنگاری، هر کسی که به حساب ایمیل دسترسی داشته باشد میتواند برای مثال یک کلید را حذف کرده و یک کلید جعلی بارگذاری کند.
آخرین پیشنویس نیروی ضربت مهندسی اینترنت (IETF) برای HKP نیز یک شبکه سرور کلید توزیع شده را بر اساس رکوردهای DNS SRV تعریف میکند: برای یافتن کلید کسی (someone@example.com)، میتوان با درخواست سرور کلید example.com، آن را پیدا کرد.
نمونههایی از سرورهای کلید
در اینجا چند سرور کلید آورده شده است که اغلب برای جستجوی کلیدها با دستور gpg --recv-keys استفاده میشوند. اینها را میتوان از طریق HTTPS یا HKPS (HKP بر روی TLS) پرسوجو کرد:
- keys.openpgp.org
- keys.mailvelope.com/manage.html
- pgp.mit.edu
- keyring.debian.org
- keyserver.ubuntu.com
- pgp.surf.nl
جستارهای وابسته
- پروتکل دسترسی به دایرکتوری سبک
- GnuPG
منابع
پیوندهای خارجی
- پروتکل سرور کلید HTTP OpenPGP (HKP) (مارس 2003) - یک بسته نرمافزاری سرور کلید OpenPGP که تحت مجوز سبک BSD توزیع شده است. این تا حد زیادی با SKS و Hockeypuck جایگزین شده است.
- Synchronizing Key Server (SKS) - یک بسته نرمافزاری سرور کلید OpenPGP که تحت GPL توزیع شده است.
- Hockeypuck - یک بسته نرمافزاری سرور کلید OpenPGP همگامساز که تحت AGPL توزیع شده است.
- Hagrid - یک بسته نرمافزاری سرور کلید OpenPGP غیرهمگامساز و تأییدکننده که تحت AGPL توزیع شده است.
- PGP Global Directory میزبانی شده توسط PGP Corporation.