استانداردها و معیارهای مرتبط با HSM (بخش دوم)
برقراری ارتباط برنامه های مختلف با هر ماژول HSM از طریق یک واسط نرم افزاری (API) امکان پذیر است؛ بدین ترتیب كه برنامه مورد نظر، واسط نرم افزاری را بارگذاری نموده و با فراخوانی توابع تعریف شده آن، عملیات كنترلی و رمزنگاری مختلف را بر روی ماژول رمزنگاری انجام می دهد. در این قسمت به معرفی استانداردی می پردازیم که به ارائه طرح کلی در خصوص واسط قابل برنامه ریزی HSM می پردازد
استاندارد PKCS#11 از مجموعه استانداردهای رمزنگاری بر پایه کلید عمومی (Public-Key Cryptography Standards) است که به اختصار Cryptoki هم خوانده می شود، به تعریف یک بستر برنامه سازی امن برای ماژول های رمزنگاری می پردازد. این استاندارد در ابتدا جهت دسترسی به کارت های هوشمند طراحی شد و دربرگیرنده مفاهیمی مانند اسلات (Slot) معادل دستگاه کارت خوان و توکن (Token) معادل کارت هوشمند می باشد که دلالت بر تکنولوژی کارت هوشمند دارند. به صورت کلی اکثر ماژول های امنیتی استاندارد، منطبق با PKCS#11 طراحی و توسعه داده می شوند. در واقع، این واسط چگونگی ارتباط نرم افزار با عملکردهای رمزنگاری ماژول امنیتی را تعیین می کند. متن این استاندارد به صورت آنلاین در وبسایت مؤسسه OASIS موجود می باشد.
البته لازم به ذکر است که، صرفاً سازگاری با یک استاندارد خاص برای اطمینان از امنیت فراهم شده در یک ماژول HSM كافی نبوده و كاربر HSM مسئول است تا از انطباق امنیت فراهم شده توسط ماژول انتخابی خود با نیازمندی های امنیتی مورد نظر سازمان، اطمینان حاصل كند؛ زیرا اطمینان از امنیت ماژول رمزنگاری امنیت كل سیستم را تضمین نخواهد كرد.
در صورت پشتیبانی ماژول امنیتی از استاندارد PKCS#11، مطابق با شکل، نرم افزارهای مختلف با بارگذاری واسط Cryptoki ارائه شده توسط تولید کننده HSM و فراخوانی توابع آن، با توكن امنیتی ارتباط برقرار می كنند. پشتیبانی از كتابخانه PKCS#11 باعث می شود بتوان ماژول رمزنگاری را به سادگی در تمامی نرم افزارهای زیرساخت كلید عمومی به كار گرفت. البته در كنار این واسط استاندارد، هر تولیدكننده می تواند ویژگی ها و كاركردهای مدنظر خود را نیز به محصول HSM اضافه کرده و آن ها را در کتابخانه Cryptoki محصول در اختیار کاربر قرار دهد.
در مدل نمایش داده شده، برنامه های كاربردی در بالاترین سطح قرار داشته و از طریق لایه های واسطی كه میان آن ها با كتابخانه ی Cryptoki وجود دارد، با آن در ارتباط هستند.
همان طور كه مشاهده میشود، بیش از یک برنامه كاربردی در هر زمان امکان ارتباط با واسط Cryptoki و سخت افزار HSM را دارست و تمامی این عناصر از طریق یک هماهنگ كننده (یا درایور) با لایه های زیرین در ارتباطند.
مدل Cryptoki شامل روش هایی برای مدیریت داده هایی است كه از آن ها تحت عنوان شیئ یاد می كند. در واقع در اینجا ما با تعداد زیادی شیئ داده ای و متدهایی جهت ایجاد، ویرایش، حذف، كنترل دسترسی و در یک كلام مدیریت آن ها روبرو هستیم. ساختار اشیای Cryptoki به صورت انتزاعی در شکل نمایش داده شده است.
طبق استاندارد PKCS#11، به منظور كنترل دسترسی به اشیای فوق، دو سطح دسترسی در نظر گرفته شده كه عبارتند از كاربر عادی (Normal User) و كاربر مسئول (Security Officer یا SO).
دسترسی هر كاربر به توكن در قالب یک نشست (Session) صورت می پذیرد. كاربر در ابتدای هر نشست می تواند نقش و نیز نوع نشست (یکی از انواع فقط خواندنی (ReadOnly) یا خواندنی و نوشتی(Read&Write) ) را انتخاب نموده و با وارد نمودن پین كد خود، نشست مورد نظر را آغاز نماید.
با توجه به اینکه بحث مدیریت نشست ها در Cryptoki کمی پیچیده است و نیازمند دقت و ظرافت بالایی می باشد، در استاندارد تعاریف واضح و مثال های شفافی ارائه شده است.
با پیشرفت های صورت گرفته در حوزه الگپوریتم های رمزنگاری و همچنین در طراحی و ساخت HSMهای جدید، استاندارد PKCS#11 همچنان در حال توسعه و بازبینی می باشد تا سازگاری کامل با تکنولوژی های جدید حوزه رمزنگاری داشته باشد. با این وجود، این استاندارد دارای نواقص امنیتی و کارکردی هم می باشد که گاهاً تولید کنندگان محصولات امنیتی با آگاهی از این نقاط ضعف، در توسعه محصول خود تا حد امکان سعی در رفع آن ها دارند. به طور کلی عملیات رمزنگاری در انواع مختلف ماژول های HSM یکسان است اما ساختار امنیتی و مدل های مجوز دهی و همچنین نحوه انجام كار متفاوت است.
در این قسمت یک معرفی اجمالی از استاندارد PKCS#11 به عنوان واسط اصلی تعامل نرم افزار ها با سخت افزار HSM ارائه دادیم. متن این استاندارد بسیار کامل تر از توضیحات ارائه شده در این مستند است.
در قسمت بعد مجدداً به سخت افزار HSM بر میگردیم و به تشریح معماری یک ماژول HSM خواهیم پرداخت.