در حالی که آزمایشگاههای سراسر جهان برای ساخت یک کامپیوتر کوانتومی مرتبط با رمزنگاری (cryptographically relevant quantum computer) مسابقه میدهند، ما در شرکت کادرفر (Cloudflare) به سمت یک هدف مشخص برای سال ۲۰۲۹ جهت آمادگی کامل پساکوانتمی (post-quantum readiness) در تلاش هستیم. در حالی که ما پیش از این بسیاری از محصولات (products) خود را به رمزنگاری پساکوانتمی منتقل کردهایم، اما همچنان کارهایی برای پشتیبانی از احراز هویت پساکوانتمی (post-quantum authentication) و دستیابی به آمادگی کامل پساکوانتمی در سراسر پلتفرم خود داریم.
ما موضعی حداکثری («همه چیز پساکوانتمی!») اتخاذ میکنیم، زیرا به عنوان یک ارائهدهنده زیرساخت برای جهان، میخواهیم به مشتریان خود این آرامش خاطر را بدهیم که استفاده از کادرفر (Cloudflare) تضمین میکند ترافیک آنها در برابر مهاجمان کوانتومی آیندهنگر ایمن است.
اما چگونه میتوان چنین مهاجرت عظیمی را در سازمانی با اندازه و مقیاس ما انجام داد؟ از این گذشته، رمزنگاری لایه پایه برای تقریباً تمام سیستمهای دیجیتال جهان، از جمله خدمات نرمافزاری و پروتکلهای شبکهای است که پلتفرم ما را پشتیبانی میکنند.
برای هدایت مهاجرت پساکوانتمی (PQ) خود، سه هدف کلیدی داریم.
اول، ما میخواهیم به تیمهای محصول و مهندسی خود کمک کنیم تا بفهمند رمزنگاری چگونه استفاده میشود و چگونه باید آن را ارتقا دهند. این باید هم ارتقا به رمزنگاری پساکوانتمی و هم احراز هویت پساکوانتمی را پوشش دهد. بسیاری از محصولات ما قبلاً به رمزنگاری پساکوانتمی (post-quantum encryption) از طریق تیالاس (TLS) نسخه ۱.۳ ارتقا یافتهاند، اما ما همچنان میخواهیم اتصالات طولانیمدت TLS و همچنین سایر موارد استفاده از رمزنگاری کلید عمومی را پوشش دهیم. در همین حال، هنوز در روزهای اولیه (early) استقرار احراز هویت پساکوانتمی خود هستیم.
بعد، میخواهیم معیارهای پیشرفتی را برای مهاجرت ارائه دهیم. این موارد ممکن است شامل تعداد استفاده از رمزنگاری کلاسیک و پساکوانتمی به ازای هر مخزن (repository) و هر محصول باشد.
در نهایت، میخواهیم پیشنیازها را زودتر نمایان کنیم. اگر محصولات یا پلتفرم ما به پروتکلهایی متکی هستند که هنوز برنامه مهاجرت PQ ندارند (زیرا انواع PQ سیستم هنوز در نظر گرفته نشده است، استانداردهای PQ وجود ندارند یا فاقد اجماع هستند، یا کتابخانههای نرمافزاری یا سایر اجزای کلیدی اکوسیستم هنوز از PQ پشتیبانی نمیکنند)، پس باید اکنون بدانیم. به این ترتیب میتوانیم با ذینفعان مربوطه، نهادهای استاندارد و اکوسیستمها کار کنیم تا به هدایت برنامههای مهاجرت PQ آنها کمک کنیم تا بتوانیم به جدول زمانی مهاجرت PQ خود در سال ۲۰۲۹ برسیم.
این مقاله داستان چگونگی انجام این کار است. ما توضیح میدهیم که چگونه به هوش مصنوعی روی آوردیم تا به ما در حل برخی از مشکلاتمان کمک کند و چگونه در حال توسعه یک ابزار داخلی به نام کریپتولب (CryptoLabe) هستیم. نام کریپتولب (CryptoLabe) از اسطرلاب دریانوردان، یک ابزار ناوبری که توسط دریانوردان پرتغالی اصلاح شده بود، گرفته شده است. درستهمانطور که یک اسطرلاب به ملوانان کمک کرد تا جای خود را تعیین کنند و مسیری را ترسیم کنند، کریپتولب (CryptoLabe) به ما کمک میکند تا رمزنگاری را در کد خود کشف کنیم، بفهمیم چگونه استفاده میشود و مسیری را برای مهاجرت پساکوانتمی ترسیم کنیم.
ابزار کریپتولب (CryptoLabe) به شدت برای سیستمهای داخلی ما (مخزنهای ما، سیستمهای تیکتینگ و فرآیندهای مستندسازی داخلی) تخصصی شده است و همچنان در حال تکامل است، بنابراین آن را در اختیار مشتریان قرار نمیدهیم. با این حال، ما آموختههای خود را به اشتراک میگذاریم تا سایر سازمانها بتوانند در حین طی کردن سفر مهاجرت پساکوانتمی خود، بر اساس تلاشهای ما بسازند.
مقیاس مشکل
نرمافزاری که بیشتر محصولات کادرفر (Cloudflare) را هدایت میکند، در داخل یک پلتفرم مدیریت کنترل منبع متمرکز ما قرار دارد. این بدان معناست که ما میتوانیم بیشتر موارد استفاده از رمزنگاری را در سراسر پلتفرم خود تنها با نگاه کردن به پایگاه کد خود پیدا کنیم.
در حالی که تمرکز پایگاه کد ما یک مزیت قابل توجه برای ما است، اما همچنان باید با سه چالش که با مقیاس این مشکل همراه است، مقابله کنیم. اول، کد ما در بسیاری از مخازن پخش شده است. دوم، رمزنگاری به ندرت خود را به طور آشکار در کد اعلام میکند. در عوض، در موارد زیر پنهان میشود:
- کتابخانههای مشترکی که یک مخزن وارد میکند اما ممکن است در واقع فراخوانی بکند یا نکند
- پیشفرضهای بالادستی و پروتکل، مانند یک شنونده تیالاس (TLS) نسخه ۱.۳ که برای مذاکره درباره یک توافق کلید کلاسیک مانند X25519 به جای پساکوانتمی X25519MLKEM768 پیکربندی شده است
- فایلهای پیکربندی که الگوریتمها را بسیار دور از کدی که از آنها استفاده میکند انتخاب میکنند، مانند یک پاسخدهنده TLS که پروتکلهای توافق کلید آن در یک فایل YAML ذخیره شده در یک مخزن دیگر پین شده است
- مسیرهای کدی که مرده، فقط برای آزمایش هستند یا در مسیری برای منسوخ شدن قرار دارند
سوم، کشف رمزنگاری فراتر از تطبیق الگو است. جستجو با دستور Grep برای نامهای الگوریتم خاص (به عنوان مثال "RSA" یا "X25519") شمارش را زیاد میکند، زیرا رمزنگاری را در کد استفاده نشده پیدا میکند. جستجو با Grep همچنین شمارش را کم میکند، زیرا پیشفرضها و کاربردهای غیرمستقیم در وابستگیها و پیکربندی را از دست میدهد. مهمتر از همه، نمیتواند به شما بگوید که رمزنگاری چگونه استفاده میشود. یک امضای کلاسیک الگوریتم امضای دیجیتال منحنی بیضوی (ECDSA) میتواند بخشی از یک جفتتوکن وب جیاساون (JWT)، آیپیساک (IPsec)، تیالاس (TLS) یا اساساتچ (SSH) باشد و هر کدام مسیر مهاجرت کاملاً متفاوتی دارند. بسیاری از کاربردها همچنین به طرف دیگر اتصال بستگی دارند: یک سرور TLS ممکن است هم توافق کلید پساکوانتمی و هم توافق کلید کلاسیک را پشتیبانی کند؛ موردی که انتخاب میکند به کلاینت بستگی دارد.
روی آوردن به هوش مصنوعی
مشخص شد که هوش مصنوعی در کاری فراتر از جستجوی ساده بسیار خوب عمل میکند. یک مدل میتواند یک پایگاه کد را جستجو کند، شواهد را در فایلها دنبال کند و تحلیل ساختاریافته را برگرداند. همچنین میتواند یافتهها را با استخراج اطلاعات از منابع دیگر، مانند اسناد داخلی و سیستمهای تیکتینگ غنیتر کند. در واقع، هوش مصنوعی حتی میتواند توضیح دهد که رمزنگاری چگونه استفاده میشود و چگونه باید بهروزرسانی شود. ما این ایده را در حال توسعه کریپتولب (CryptoLabe) آزمایش کردهایم.
همانطور که قبلاً گفتیم، دو هدف اول ما عبارتند از: (۱) کشف و درک استفاده از رمزنگاری در پایگاه کد خود، و همچنین (۲) به دست آوردن معیارهایی در مورد وضعیت مهاجرت پساکوانتمی (PQ) خود. در راستای این اهداف، پیادهسازی فعلی ما از کریپتولب (CryptoLabe) اسکنها را در دو مرحله انجام میدهد.
مرحله اول «کشف» با نقشهبرداری از مخزن شروع میشود. سپس به دنبال رمزنگاری از طریق منبع، پیکربندی، مانیفستها، فایلهای قفل، اسکریپتها، آزمایشها و مستندات میگردد. اسکن به دنبال مواردی مانند توافق کلید، امضاها، رمزنگاری نامتقارن، زیرساخت کلید عمومی (PKI)، توکنها، اعتبارنامهها، ادغام ماژول امنیت سختافزاری و موارد دیگر میگردد. این مرحله کشف مجموعهای از «مشاهدات خام» را تولید میکند.
هر مشاهده خام یک اجرا از مرحله دوم را تغذیه میکند. این مرحله «تحلیل» ابتدا مشاهده را در برابر کد منبع دوباره بررسی میکند. سپس بررسی میکند که عملیات رمزنگاری در زمان اجرا چگونه استفاده میشود، مخزن چه نقشی دارد و به چه طرفهای داخلی یا خارجی وابسته است. در صورت لزوم، میتواند کد مربوطه را در مخازن دیگر بررسی کند تا تحلیل کامل شود. در نهایت، از نتیجهگیریهای خود عبور میکند و به دنبال شواهد گمشده یا متناقض مانند لغو پیکربندی، کد فقط آزمایشی یا فرضیات نادرست در مورد رفتار زمان اجرا میگردد.
سپس، مدل یک طبقهبندی را به یافته اختصاص میدهد. اگر شواهد کافی برای اختصاص یک طبقهبندی وجود نداشته باشد، مدل به جای حدس زدن، عناوینی مانند شواهد بیشتری نیاز است، وابستگی خارجی یا ناشناخته را اختصاص میدهد.
در نهایت، گزارشی تولید میکند که به دو مخاطب خدمت میکند: (۱) مدیران محصول که باید بفهمند مهاجرت برای محصولشان به چه معناست، و (۲) مهندسانی که به جزئیات کافی برای اجرای مهاجرت نیاز دارند.
ساخته شده بر روی پلتفرم توسعهدهنده کادرفر
ما کریپتولب (CryptoLabe) را بر روی پلتفرم توسعهدهنده کادرفر (Cloudflare's Developer Platform) ساختیم.
ابزار کریپتولب (CryptoLabe) در دو کارگر کادرفر (Cloudflare Workers) اجرا میشود. یک کارگر اسکنر وجود دارد که اسکنها را اجرا میکند و یک کارگر موجودی وجود دارد که داشبورد را سرویس میدهد، رابط برنامهنویسی (API) را معرض دید قرار میدهد و همه چیز را در یک پایگاه داده دیوان (D1) ذخیره میکند. این دو از طریق اتصالات سرویس (Service Bindings) با یکدیگر ارتباط برقرار میکنند.
ارکستراسیون یک اسکن
ما به راهی نیاز داشتیم تا یک اسکن را از ابتدا تا انتها زنده و در مسیر نگه داریم، بدون اینکه سیستم ارکستراسیون شغل خود را بسازیم. ما این کار را با کیت توسعه عوامل (Agents SDK) انجام دادیم. هر مخزن هماهنگکننده پایدار خود را دریافت میکند که بر روی یک شیء بادوام (Durable Object) ساخته شده است.
موتور هماهنگکننده کار را به گردشهای کاری کادرفر (Cloudflare Workflows) تحویل میدهد تا بتوانند پیشرفت را حفظ کرده و به طور خودکار مراحل شکستخورده را دوباره امتحان کنند. هماهنگکننده هر مخزن را از چهار مرحله عبور میدهد: گردش کار کشف، گردش کار تحلیل عمیق، گردش کار ادغام و گردش کار انتشار.
فراخوانی مدل در مقیاس
اگر بخواهیم تمام مخازن خود را اسکن کنیم، باید نگران هزینه و ظرفیت باشیم. برای هزینه، حلقه مدل درخواستهای خود را از طریق درگاه هوش مصنوعی (AI Gateway) به مدلهای وزن باز مقرونبهصرفه میزبانی شده در کارگران هوش مصنوعی (Workers AI) ارسال میکند.
پیشنیازها و موارد سخت
بیایید اکنون به هدف سوم خود بپردازیم: ظاهر کردن زودهنگام پیشنیازها و موارد سخت. یک مهاجرت پساکوانتمی نمیتواند در خلاء اتفاق بیفتد. برای موفقیت مهاجرت، رمزنگاری پساکوانتمی باید در کتابخانههای نرمافزاری مربوطه و در میان طرفین شرکتکننده در اکوسیستم پشتیبانی شود.
به همین دلیل است که کریپتولب (CryptoLabe) از مفهوم «پیشنیازها» برای برجسته کردن یافتههایی استفاده میکند که نمیتوانند بلافاصله توسط یک تیم محصول منفرد اصلاح شوند. از سوی دیگر، ممکن است مواردی از رمزنگاری وجود داشته باشد که حتی فاقد سطح پایهای از پشتیبانی اکوسیستم باشند که ما آنها را «موارد سخت» مینامیم.
منبع: blog.cloudflare.com
