محافظت از خواندن برنامه در میکروکنترلرهای STM32

blog
۱۴۰۱-۰۶-۰۳
4 دقیقه

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

 

محافظت از برنامه 

در نظر بگیرید که برنامه‌ای نوشتید و بنا به دلایلی مثل تجاری بودن محصول یا الگوریتم خاصی که دوست ندارید فاش شود، نمی‌خواهید که کسی بتواند کد برنامه شما را از میکروکنترلر بخواند، آیا این امکان وجود دارد؟ بله.

سازندگان میکروکنترلرها راه‌های متفاوتی با دسترسی‌های مختلف برای این کار پیش روی ما گذاشته‌اند و ما بسته به نیاز می‌توانیم از این راه‌ها استفاده کنیم.

اگر با میکروکنترلرهای AVR کارکرده باشید می‌دانید که قبل از برنامه‌ریزی باید فیوز بیت‌ها را تنظیم کنید و با توجه به این تنظیمات میکروکنترلر پروگرام می‌شود. همچنین با استفاده از همین فیوزبیت‌ها می‌توانیم تنظیماتی را انجام بدهیم که دیگر نتوان برنامه را از میکروکنترلر خواند.

در میکروکنترلرهای STM32 هم با استفاده از نرم‌افزار STM32 ST-LINK Utility و پروگرامر ST_LINK می‌توان تنظیماتی را انجام داد که برنامه دیگر قابل خواندن نباشد.

برای این کار ابتدا وارد نرم‌افزار شوید و پسازاینکه پروگرامر و چیپ موردنظر شناسایی شد، همانند تصویر زیر از منوی Target گزینه‌ی Option Bytes را انتخاب کنید.

نرم افزار STLINK

پس از کلیک بر روی این گزینه با صفحه‌ی زیر مواجه می‌شوید:

نرم افزار STLINK

همان‌طور که در تصویر مشاهده می‌کنید می‌توانید Read Out Protection را فعال کنید تا دیگر برنامه قابل خواندن نباشد، همچنین می‌توانید سکتورهایی را هم غیر قابل نوشتن کنید.
ما Read Out Protection را فعال کردیم تا برنامه قابل خواندن نباشد و 4K از حافظه را نیز غیر قابل نوشتن کردیم. در میکروکنترلری که ما از آن استفاده می‌کنیم (F103C8T6) حداقل مقدار انتخابی 4K خواهد بود که این مورد در انواع میکروکنترلرها متفاوت است.
 

نرم افزار STLINK

حال اگر شما قصد داشته باشید که برنامه را بخوانید یا در سکتورهایی که علامت زدیم بنویسید با خطا مواجه خواهید شد. 
شما این پروسه را در کد برنامه هم می‌توانید اعمال کنید که در این صورت از انعطاف بیشتری نیز برخوردار می‌شوید. حالت‌های مختلفی برای محافظت از کد شما در میکروکنترلرهای STM32 در نظر گرفته شده است که در ادامه به آن‌ها اشاره می‌کنیم و سپس هر کدام از آن‌ها را مفصلاً توضیح می‌دهیم.
  • محافظت در برابر عملیات خواندن (RDP)
  • محافظت در برابر عملیات نوشتن یا پاک کردن ناخواسته
  • محافظت در برابر عملیات خواندن و نوشتن (PCROP)

 

RDP

این نوع محافظت‌ها باعث می‌شود که کپی کردن فریم‌ور از طریق مهندسی معکوس با استفاده از ابزارهای دیباگ یا راه‌های دیگر غیر ممکن باشد و حالت‌های زیر برای آن وجود دارد:

 

no readouy protection

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

 

memory readout protection

در این حالت هیچ دسترسی اعم از خواندن، پاک کردن و برنامه‌ریزی یا نوشتن به حافظه FLASH یا backup SRAM از طریق امکانات دیباگ مانند Serial Wire یا JTAG وجود ندارد. این امکان حتی هنگام بوت شدن از طریق SRAM یا بوت‌لودر سیستم نیز وجود ندارد. اما هنگام بوت شدن از حافظه FLASH می‌توانید به این حافظه دسترسی پیدا کنید و backup SRAM از کد کاربر مجاز است. هرگونه درخواست دسترسی به حافظه‌ی FLASH محافظت شده یک خطای بأس را به دنبال خواهد داشت. همچنین برای غیرفعال کردن این سطح با دوباره برنامه‌ریزی کردن بایت RDP می‌توانید به سطح 0 بازگردید.
 

chip readout protection

هنگامی که سطح 2 فعال است، تمامی محافظت‌های ارائه شده در سطح 1 فعال می‌باشد و چیپ کاملاً محافظت شده است. در این سطح بایت RDP و همه‌ی گزینه‌های مرتبط با این بسته خواهند شد و قابل اصلاح نخواهند بود. همچنین برگشت از این سطح به سطح 1 یا 0 غیرممکن خواهد بود.
 
اطلاعات
6
0
لینک و اشتراک
profile

سپهر

متخصص الکترونیک

مقالات بیشتر
slide

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند. فروش در پالت
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد. جستجو در آیسی
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
خانواده سیسوگ

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند.
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد.
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند.
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

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

دیدگاه ها

profile
محمد گفت :
۱۴۰۲-۰۶-۱۵ ۱۶:۰۱

سلام با j link امکان قفل کردن وجود دارد ؟ اگر دارد چطور ؟
با تشکر

profile
محمدرضا عابدینی گفت :
۱۴۰۱-۰۷-۰۸ ۱۱:۳۰

سلام بسیار ممنون مقاله مفیدی بود
ایا مقاله قسمت دوم داره ؟
“شما این پروسه را در کد برنامه هم می‌توانید اعمال کنید که در این صورت از انعطاف بیشتری نیز برخوردار می‌شوید”
متوجه جمله بالا نشدم ایا بااستفاده از مکانیزمی uid منظورتونه؟

profile
Zeus ‌ گفت :
۱۴۰۲-۰۷-۰۸ ۱۸:۵۲

سلام دوست عزیز
نه متاسفانه نویسنده ادامه نداده
اون پاراگراف داره میگه شما میتونید توی برنامه میکروکنترلر موارد امنیتی رو نیز اوکی کنید. صرفا UID نیست

profile
فرشاد اکرمی گفت :
۱۴۰۱-۰۶-۰۸ ۱۰:۵۶

ممنون بابت مطلب
فک کنم Read protection روب رای همه گزینه ها نوشتید
باید تصحیح بشه

profile
meyticom گفت :
۱۴۰۱-۰۶-۰۶ ۱۶:۰۲

سلام
خیلی ممنون از توضیحات خوبت

سه عنوان محافظت در متن اشتباه شده

profile
elahe گفت :
۱۴۰۱-۰۶-۰۸ ۱۰:۳۴

منظورتون رو متوجه نشدم میشه بیشتر توضیح بدین کجا اشتباهه؟

become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله