۲۹ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

آشنایی با سرویس امضای مورد اعتماد مایکروسافت

یک سرویس امضای مدیریت شده جدید در Azure امضای کد کم هزینه و کم لمسی را با ادغام در GitHub Actions ارائه می دهد.

یک سرویس امضای مدیریت شده جدید در Azure امضای کد کم هزینه و کم لمسی را با ادغام در GitHub Actions ارائه می دهد.

چگونه اطمینان حاصل کنیم که کدی که نصب می کنیم حداقل کدی است که فروشنده ارسال کرده است؟ راه حل عمومی پذیرفته شده، امضای کد است، اضافه کردن یک امضای دیجیتال به باینری ها که می تواند برای اطمینان از نویسندگی استفاده شود. در عین حال، امضا شامل یک هش است که می تواند برای نشان دادن اینکه کدی که دریافت کرده اید پس از امضا تغییر نکرده است استفاده شود.

امضای کد به‌عنوان بخشی از اطمینان از قبض‌های نرم‌افزاری مواد و کاهش خطرات مرتبط با ربودن باینری‌های قانونی با بدافزار اهمیت فزاینده‌ای دارد. اگر قصد دارید از خدماتی مانند Microsoft Store یا Windows Package Manager برای توزیع برنامه‌های خود استفاده کنید و به مخزن اجازه دهید منابع نرم‌افزار را تأیید کند، امضا لازم است.

استفاده از زیرساخت کلید عمومی برای ایمن کردن کد

فرایند امضای کد یک فرآیند ساده است که بر اساس تکنیک‌های آشنای رمزنگاری کلید عمومی بنا شده است. مانند اینها به گواهینامه ها و امضاهای دیجیتالی نیاز دارد که هویت ناشر و مرجع گواهی صادر کننده گواهی های اساسی را تأیید می کند. آخرین ویژگی کلیدی برای ایجاد رابطه اعتماد بین ناشر و کد است، با فهرستی از مقامات گواهی معتبر که هم توسط فروشگاه‌ها و هم سیستم‌عامل زیربنایی که کد تأیید شده هدف قرار می‌دهند، مدیریت می‌شوند.

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

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

یکی از این راه‌ها، امضای کد Azure بود که علیرغم ادغام خوب با ویژوال استودیو و فروشگاه ویندوز، واقعاً توجه توسعه‌دهندگان را به خود جلب نکرد. با این حال، Azure Code Signing نیز ارزان‌ترین گزینه نبود و باید با راه‌حل‌های داخلی رقابت می‌کرد.

معرفی امضای معتمد

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

GitHub Copilot Chat به GitHub می آید

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

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

دو گزینه برای Trusted Signing وجود دارد: پایه و حق بیمه. تفاوت اصلی بین این دو تعداد اعتبار سنجی هویت و نمایه های گواهی را می توانید ذخیره کنید. اعتبار سنجی هویت برای اثبات اینکه شما (یا سازمانتان) چه کسی هستید استفاده می‌شود، در حالی که از نمایه‌های گواهی برای تولید گواهی‌هایی استفاده می‌شود که برای امضای کد شما استفاده می‌شود. نمایه‌های گواهی حاوی اطلاعاتی درباره نقش امضا و نحوه اعتماد به امضا هستند.

شروع با امضای مورد اعتماد

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

اولین قدم این است که یک ارائه دهنده منبع امضای کد را در اشتراک Azure خود ثبت کنید. لیستی از ارائه دهندگان منابع در تنظیمات حساب شما وجود دارد که می توانید گزینه Microsoft.CodeSigning را انتخاب کنید. این گزینه از NotRegistered به Registered تغییر می کند و به شما امکان می دهد با ایجاد یک حساب کاربری برای نگهداری جزئیات هویت خود و امضای پروفایل های گواهی، Trusted Signing را راه اندازی کنید. در حال حاضر شما محدود به مناطق Azure در ایالات متحده و اروپا هستید و هر منطقه نشانی وب نقطه پایانی اختصاصی خود را دارد که می‌تواند برای افزودن امضای خودکار به سرویس‌های ساخت خارجی استفاده شود.

مایکروسافت نقشه راه جاوا برای کد ویژوال استودیو را منتشر کرد

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

باید با حسابی وارد Azure شوید که نقش تأیید کننده هویت امضای مورد اعتماد مناسب را دارد. باید انتخاب کنید که آیا هویت عمومی یا خصوصی را تأیید می کنید. یک هویت عمومی به یک هویت تجاری قانونی برای گواهی نیاز دارد، در حالی که خصوصی فقط به مستاجر Azure شما نیاز دارد. اگر می‌خواهید کد را از طریق فروشگاه مایکروسافت تحویل دهید، هویت‌های عمومی باید URL، آدرس ایمیل تماس و شناسه فروشنده Microsoft Store شما را داشته باشند.

محدودیت‌هایی وجود دارد که استفاده از Trusted Signing را برای استارت‌آپ‌ها یا معامله‌گران انحصاری غیرممکن می‌کند، زیرا باید سه سال سابقه مالیاتی داشته باشید. (اسناد نشان می دهد که ممکن است در آینده تغییر کند.) اگر مایکروسافت نیاز به تأیید بیشتر داشت، ممکن است لازم باشد اطلاعات بیشتری را از طریق پورتال ارائه دهید. انتظار پاسخ فوری نداشته باشید. تأیید یک حساب ممکن است یک هفته یا بیشتر طول بکشد.

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

افزودن Trusted Signing به یک اقدام ساخت GitHub

شاید جالب ترین گزینه پشتیبانی از استفاده از یک اقدام GitHub برای امضای کد شما باشد به محض اتمام ساخت، با استفاده از یکی از رانرهای ویندوز. به سادگی پس از تکمیل ساخت، با استفاده از اسرار حساب خود و نقطه پایان امضای کد برای حساب امضای مورد اعتماد خود، اقدام را اضافه کنید. به عنوان بخشی از فرآیند پیکربندی، باید انواع پوشه و فایلی که در حال امضا هستند، نوع هش مورد استفاده و مهر زمانی RFC 3161 را اضافه کنید. اگر فایل‌های خروجی خاصی را هدف قرار می‌دهید، می‌توانید فایل کاتالوگ فایلی را اضافه کنید که فایل‌های در حال امضا را فهرست می‌کند.

بهترین ویژگی های جدید در دات نت 6

نتیجه یک رویکرد دستی برای ارائه یک ساخت امضا شده است: مقداری کد را به یک شعبه تولید خاص از مخزن خود فشار دهید، و این اقدام به ساخت، بسته‌بندی و امضای کد می‌پردازد. حتی آن را به Windows Store یا مخزن Windows Package Manager تحویل می دهد. رانر در فروشگاه ویژوال استودیو موجود است، بنابراین می‌تواند در داخل ویژوال استودیو مدیریت و ویرایش شود.

خودکارکردن چرخه عمر گواهی

یکی دیگر از جنبه های این سرویس پشتیبانی از چرخه عمر گواهی شما. مدل زیربنایی، رویکرد استاندارد x.509 برای گواهی ها و کلیدهای آنها است. توجه به این نکته مهم است که گواهینامه ها کوتاه مدت هستند: آنها روزانه تمدید می شوند و فقط ۷۲ ساعت اعتبار دارند. این به شما این امکان را می دهد که به سرعت ساخت های خاصی را که ممکن است به خطر افتاده اند باطل کنید. شما مجبور نیستید کاری انجام دهید. کل فرآیند به صورت خودکار است و گواهی‌های صادر شده در Azure وارد شده و در سخت‌افزار رمزنگاری امن ذخیره و مدیریت می‌شوند.

البته، یکی از سؤالات کلیدی هزینه است و Trusted Signing خیلی گران نیست. گزینه اصلی، که به یکی از هر نوع نمایه گواهی اجازه می دهد، برای ۵۰۰۰ امضا در ماه ۹.۹۹ دلار هزینه دارد (امضای اضافی ۰.۰۰۵ دلار برای هر امضا است). اگر به گواهی‌های بیشتری نیاز دارید، می‌توانید گزینه Premium 99.99 دلاری را با ۱۰۰۰۰۰ امضا در ماه و قیمت یکسان برای بیش از حد، با ۱۰ مورد از هر نوع در هر حساب انتخاب کنید.

مایکروسافت راه طولانی را طی می کند تا امضای کد را برای استفاده ساده تر کند. اگر گزینه رایگانی مانند Let’s Encrypt برای پروژه های منبع باز یا برای توسعه دهندگان فردی وجود داشته باشد، خوب است، اما در حال حاضر این روی میز نیست.

آنچه نیاز است یک زیرساخت امضای کد است که استفاده از آن ساده و در دسترس همه باشد، بنابراین می‌توانیم امضای کد را به بخشی طبیعی از چرخه عمر توسعه نرم‌افزار تبدیل کنیم. هر چه کدهای امضا شده بیشتر باشد، خطر برای همه ما، از جمله برای مایکروسافت و ویندوز، کمتر است. ارائه خدمات امضایی مانند Trusted Signing به عنوان یک سرویس عمومی ممکن است بهترین رویکرد در دراز مدت باشد، اما در حال حاضر، Trusted Signing چیزی است که ما داریم.