پیشرفته کریپتو پدیا

اِوِرکریپت (EverCrypt)؛ تحولی در علم رمزنگاری با ارائه امنیت بیشتر به برنامه نویسان

پروژه اورست (Everest) یک همکاری چندین ساله است که بر ایجاد بسته ارتباطی ایمن و تایید شده متمرکز است. این بسته ارتباطی برای بهبود امنیت HTTPS طراحی شده است. این مقاله درباره ارائه دهنده برتر خدمات دیجیتالی به اسم اِوِرکریپت (EverCrypt) می‌باشد که در زمینه مجموعه اقدامات پیشرو در این حوزه در رتبه دوم قرار دارد.

Evercrypt اورکریپت

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

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

اورکریپت (EverCrypt) که توسط تیم پروژه اورست توسعه یافته و مورد تأیید واقع شده است، ویژگی، آسایش و‌ عملکرد مشابهی ارائه می‌دهد. اورکریپت که که توسط کلاینت های مورد تایید و یا تایید نشده قابل استفاده است، بر پشتیبانی از چند پلتفرم و عملکرد برتر تاکید می‌کند. تیم آنها با تولید کد فارغ از پلتفرم C و کد بهینه شده اسمبلی برای سخت افزارهای مشخص به این مهم دست یافته اند، به طوری که دو بخش پروژه اورست را ترکیب شده است. این دو بخش عبارتند از: لایبرری (کتابخانه) رمزنگاری شده HACL که توسط اینریا (Inria) و تحقیقات مایکروسافت توسعه یافته است، و کتابخانه ویل کریپتو کدهای اسمبلی اولیه که توسط بخش تحقیقاتی مایکروسافت و دانشگاه کارنگی توسعه یافته است.

تجربه نشان داده است که نوشتن کتابخانه رمزنگاری شده مورد اعتماد و با کیفیت، وظیفه ای دشوار است و مشخص می‌شود که بسیاری از باگ‌های یافت شده در کاربردهای امنیتی نظیر TLS در این لایه می‌باشند. این باگ ها اغلب اوقات نتیجه پیاده سازی های به شدت پیچیده رمزنگاری شده اند که برای دستیابی به حداکثر کارآیی طراحی شده اند. برای هر الگوریتم، ده ها مورد پیاده سازی وجود دارد که هرکدام برای یک پلتفرم مشخص به طور دستی تنظیم شده اند تا پیاده سازی مورد نظر بتواند از الگو یا دستورالعمل مرتبط با کریپتو بهره مند شود. این اقدام که به آن پیاده سازی مولتی پلکسینگ (multiplexing) یا تسهیم کننده می‌گویند، به کتابخانه امکان می‌دهد تا پیاده سازی هایی با کارایی و عملکرد بسیار خوب بر بستر پلتفرم های سخت افزاری محبوب ارائه دهند، در حالی که هم چنان پیاده سازی های قبلی را ارائه می‌دهد. برای مثال، ممکن است چندین نسخه از برنامه رمزگذاری بلاک AES پیدا کنید که بعضی از آن ها از SSE، AVX، یا NEON استفاده می‌کنند. با وجود این پیچیدگی، جای تعجب ندارد که کتابخانه های کریپتو باگ داشته باشند. از اینها گذشته، احتمال یافتن یک باگ در بین پیاده سازی های اسمبلی مختلف و پرشمار بسیار ناچیز است.

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

ارائه دهنده سازمانی با کارایی بسیار خوب

به منظور برطرف کردن نیازها و انتظارات برنامه نویسان امروزی، کتابخانه رمزنگاری شده باید سه ویژگی داشته باشد که عبارتند از:

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

با وجود اورکریپت، ویژگی ها و حتی قابلیت های بیشتر به ارمغان می‌آید. اورکریپت شامل مجموعه کامل و جامع از الگوریتم هایی است که دارای کدگذاری بلاک ها، رمزنگاری منحنی و توابع هش می‌باشد. برای ایجاد اپلیکیشن هایی که از لحاظ رمزنگاری سریع می‌باشند، توسعه دهندگان می‌توانند از رابط کاربری اورکریپت استفاده کنند تا برای مثال به آسانی بین الگوریتم های SHA2-256 به SHA3-512 سوییچ کرده و تغییر حالت دهند. تا جایی که به مولتی پلکسینگ مرتبط است، این تیم اورکریپت را به نحوی طراحی کرده است که بر اساس ویژگی های پردازنده، بهترین پیاده سازی را انتخاب کند. هم چنین تمام ارائه دهندگان را مورد تأیید قرار داده و این موضوع، وجه تمایز با سایر کتابخانه های در دسترس می‌باشد.

عملکرد و ایمنی

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

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

تیم این پروژه بیان کرد؛ اورکریپت را برای پیاده سازی TLS ایجاد کردیم اما ارائه دهنده را طوری طراحی کرده ایم که برای طیف گسترده ای از نرم افزارها به جز TLS مفید باشند، نرم افزارهایی از رمزگذاری هارد تا پیام‌رسان ها. تاکنون چندین کلاینت مختلف برای نیازهای رمزنگاری خود در حال استفاده از اورکریپت می‌باشند. به عنوان بخشی از اقداماتی که با پروژه اورست مشغول انجام آن هستیم، یک کلاینت تایید شده داریم که به زبان F نوشته شده است. این کلاینت یک کتابخانه درخت مرکل است که برای بلاک چین ها قابل استفاده می‌باشد. به غیر از پروژه اورست، کلاینت های دیگر شامل موزیلا فایرفاکس، WireGuard، کتابخانه کریپتو پیش رو برای کرنل (هسته) لینوکس، سیستم عامل تک کرنل MirageOS و بلاک چین تزوس می‌باشند. بخشی از اورکریپت بیش از یک سال در مایکروسافت و برای پشتیبانی از پیاده سازی پروتکل QUIC استفاده شده است. این کلاینت ها اغلب با زبان C نوشته شده اند و تایید شده نمی‌باشند. اگرچه به دلیل استفاده از ارائه دهنده رمزنگاری شده مورد تایید، سطح حمله خود را کاهش و امنیت و اعتبار خود را بهبود می‌دهند.

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

منبع
microsoft

نوشته های مشابه

اشتراک
اطلاع از
1 دیدگاه
جدید ترین
قدیمی ترین محبوب ترین
Inline Feedbacks
View all comments
دکمه بازگشت به بالا