معرفی
این ابزار برای آزمایشگاه، توسعه، پژوهش و ارزیابی مجاز معرفی شده است. مشخصات و تصویر از منبع رسمی پروژه یا سازنده آمدهاند.
نکته 1
ChipWhisperer برای آموزش side-channel analysis و fault injection ساخته شده است.
نکته 2
Husky قابلیتهای ثبت سیگنال، trigger و اندازهگیری را از طریق رابط نرمافزاری ChipWhisperer در اختیار آزمایشگاه قرار میدهد.
نکته 3
آزمایش باید روی target آزمایشگاهی یا سختافزار خودتان انجام شود.
استفاده مسئولانه
قابلیتهای RF، RFID، اسکن، credential audit، تحلیل ترافیک و تست امنیت فقط باید روی داراییهای خودتان، آزمایشگاه یا Scope دارای مجوز صریح استفاده شوند.
اندازهگیری را پیش از تحلیل پیچیده یاد بگیرید
ChipWhisperer Husky در یک آزمایشگاه امنیت سختافزار برای ثبت سیگنال و مطالعه رفتار هدف به کار میرود. ارزش آن فقط در یک نتیجه نهایی نیست؛ امکان کنترل و ثبت شرایط آزمایش به پژوهشگر کمک میکند فرضیه را با داده بررسی کند. برای شروع، یک برد آموزشی با برنامه و ورودیهای ساختگی انتخاب کنید. هدف نخست باید ثبت یک رد پایدار از یک عملیات معلوم باشد. تا وقتی اندازهگیری تکرارپذیر نیست، تحلیل آماری یا نتیجهگیری امنیتی میتواند گمراهکننده باشد.
مسیر آزمایش را به چند جزء تقسیم کنید: میزبان نرمافزاری، دستگاه ثبت، اتصال فیزیکی، برد هدف و برنامه روی آن. برای هر جزء نسخه و تنظیم مهم را بنویسید. اگر خروجی غیرعادی شد، این نقشه کمک میکند بدانید کدام مرز را بررسی کنید. یک خطای ارتباط سریال با نبود trigger یا اشباع ورودی اندازهگیری یکسان نیست. حل مرحلهای این مشکلات، از تغییر همزمان چند پارامتر و از دست دادن وضعیت مرجع بهتر نتیجه میدهد.
Side-channel چه چیزی را مشاهده میکند؟
تحلیل کانال جانبی به اطلاعاتی توجه میکند که از رفتار فیزیکی یا زمانی اجرای برنامه به دست میآید. این اطلاعات با خروجی رسمی تابع یکسان نیستند. دو اجرای منطقی مشابه ممکن است رد فیزیکی متفاوت داشته باشند و پژوهشگر باید بررسی کند آیا تفاوت با داده یا عملیات مرتبط است یا از نویز و شرایط محیط آمده است. مشاهده تفاوت به تنهایی اثبات افشای راز نیست. برای نتیجه معتبر، کنترل ورودی، تکرار کافی و روش تحلیل مناسب لازم است.
در یک تمرین مقدماتی، برنامه هدف میتواند دو مسیر محاسباتی بیخطر و معلوم داشته باشد. ردهای هر مسیر را ثبت کنید و شکل کلی آنها را مقایسه کنید. چون مسیر انتخابشده را میدانید، میتوانید یاد بگیرید کدام بخش ثبت به عملیات مربوط است. از همان ابتدا نتیجه را به امنیت یک محصول واقعی تعمیم ندهید. برد آموزشی معمولاً برای آشکار بودن رفتار طراحی شده و شرایطش با سختافزار دارای حفاظتهای مختلف فرق دارد.
ایمنی اتصال و محدودیت الکتریکی
پیش از اتصال، نقش هر پایه، زمین مشترک و محدوده ولتاژ را از مستندات دقیق هر دو برد بررسی کنید. کابل مشابه یا کانکتور سازگار ظاهری تضمین نمیکند سیگنالها هممعنا هستند. اتصال نادرست میتواند به دستگاه ثبت یا هدف آسیب بزند. در شروع از آرایش توصیهشده برای برد آموزشی استفاده کنید و از افزودن تجهیزات ناشناخته خودداری کنید. هر تغییر سیمکشی را در حالت مناسب و با توجه به دستورالعمل تغذیه انجام دهید.
مسیر اندازهگیری باید از مسیر اعمال اختلال متمایز باشد. اگر فقط ثبت سیگنال میخواهید، قابلیتهای اضافی که لازم نیستند باید در وضعیت مشخص و غیرفعال باقی بمانند. این کار احتمال اثر ناخواسته بر هدف را کم میکند و نتیجه را قابل تفسیرتر میسازد. پیش از اجرای برنامه، یک بازبینی کوتاه سیمکشی و تنظیمات انجام دهید. عکس یا نقشه اتصال برای آزمایشگاه تیمی مفید است، به شرط آنکه همراه نام برد و نسخه باشد و جای مستند رسمی محدودیتهای الکتریکی را نگیرد.
Trigger و پنجره ثبت
Trigger به دستگاه کمک میکند ثبت را نسبت به یک رویداد معلوم آغاز کند. اگر رویداد اشتباه انتخاب شود یا رخ ندهد، ممکن است ثبت timeout شود یا بخش نامربوطی از عملیات دیده شود. نخست با یک برنامه ساده که علامت شروع مشخص دارد کار کنید. سپس محل عملیات مورد نظر را در پنجره ثبت پیدا کنید. تعداد نمونه و فاصله زمانی باید با هدف آزمایش هماهنگ باشند؛ ثبت داده بیشتر همیشه به معنی اطلاعات مفیدتر نیست.
در تمرین، ورودی و برنامه را ثابت نگه دارید و فقط زمانبندی ثبت را تغییر دهید. مشاهده کنید کدام بخش رد جابهجا میشود و کدام بخش از پنجره خارج میماند. این تمرین مفهوم همترازی را ملموس میکند. اگر ردهای متوالی به شدت جابهجا هستند، قبل از تحلیل، منبع این تغییر را بررسی کنید. ممکن است برنامه هدف زمانبندی متغیر داشته باشد یا نشانه شروع با عملیات مورد نظر رابطه پایداری نداشته باشد. تحلیل روی داده نامتراز میتواند نتیجه را ضعیف یا اشتباه کند.
دامنه، اشباع و کیفیت سیگنال
سیگنال ثبتشده باید در محدوده قابل اندازهگیری قرار گیرد. اگر دامنه از محدوده عبور کند، بخشهایی از شکل موج بریده میشوند و اطلاعات از دست میرود. اگر دامنه بسیار کوچک باشد، نویز میتواند بر مشاهده غالب شود. تنظیمات اندازهگیری را با یک نمونه کوتاه بررسی کنید و شکل موج را ببینید. صرف موفق بودن فراخوانی ثبت به معنی مناسب بودن کیفیت داده نیست. نشانههای خطا و وضعیت دستگاه را نیز همراه تصویر رد بررسی کنید.
برای مقایسه دو مجموعه، شرایط اندازهگیری را ثابت نگه دارید. تغییر بهره، تغذیه یا اتصال میان دو گروه میتواند تفاوتی ایجاد کند که به اشتباه به برنامه نسبت داده شود. یک نمونه کنترل را در طول جلسه تکرار کنید تا تغییر تدریجی شرایط آشکار شود. اگر دستگاه یا هدف گرم میشود و رفتار عوض میشود، آن را ثبت کنید. گزارش علمی باید شرایط را توصیف کند، نه اینکه فقط نمودار نهایی را بدون زمینه نشان دهد.
نرمافزار Python و دفترچه آزمایش
مستندات رسمی ChipWhisperer رابط Python و نمونههای آموزشی را توضیح میدهند. برای شروع، یک محیط نرمافزاری مشخص با وابستگیهای ثبتشده بسازید و مثال رسمی متناسب با سختافزار را اجرا کنید. سپس تغییرات خود را کوچک و قابل پیگیری اضافه کنید. اجرای قطعههای پراکنده از آموزشهای نسخههای مختلف ممکن است تنظیمات ناسازگار بسازد. اگر یک ویژگی در مستندات آخرین نسخه وجود دارد، حضور آن در نسخه نصبشده را بررسی کنید.
دفترچه تعاملی برای یادگیری مفید است، اما ترتیب اجرای سلولها میتواند وضعیت پنهان ایجاد کند. پیش از نتیجهگیری، دفترچه را از یک وضعیت تازه و به ترتیب اجرا کنید. تنظیمات مهم را صریح در کد یا یادداشت نگه دارید و به مقدار باقیمانده از جلسه قبلی تکیه نکنید. داده خام را همراه فراداده لازم ذخیره کنید: ورودی ساختگی، نسخه برنامه هدف، تنظیم ثبت و زمان جلسه. بدون این اطلاعات، یک آرایه بزرگ از نمونهها ممکن است بعداً قابل تفسیر نباشد.
طراحی آزمایش با کنترل مثبت و منفی
کنترل مثبت باید نشان دهد روش ثبت قادر به دیدن تفاوت مورد انتظار است. کنترل منفی کمک میکند تفاوت تصادفی یا ناشی از شرایط را تشخیص دهید. برای نمونه، دو گروه از اجرای یکسان میتوانند مبنای مقایسه نویز باشند، در حالی که دو مسیر معلوم برنامه برای مشاهده تفاوت استفاده شوند. تعریف این کنترلها باید پیش از تحلیل انجام شود. انتخاب فقط نموداری که فرضیه را تأیید میکند، اعتبار پژوهش را کاهش میدهد.
تعداد نمونه لازم به کیفیت سیگنال، روش تحلیل و سؤال پژوهش وابسته است. عدد ثابت و عمومی برای همه آزمایشها وجود ندارد. ابتدا مجموعه کوچک را برای سلامت مسیر بررسی کنید، سپس جمعآوری را با طرح مشخص گسترش دهید. دادههای نامعتبر را با دلیل علامت بزنید و معیار حذف را از پیش تعریف کنید. حذف انتخابی ردهایی که نتیجه دلخواه نمیدهند میتواند نتیجه را منحرف کند. شفافیت درباره این تصمیمها از نمایش یک نمودار ظاهراً تمیز مهمتر است.
Fault injection را یک موضوع جداگانه ببینید
اعمال اختلال با مشاهده غیرفعال تفاوت دارد و میتواند رفتار هدف را تغییر دهد یا به آن آسیب بزند. برای آموزش، فقط از برد هدف مخصوص آزمایش و برنامه ساختگی استفاده کنید. هدف مقدماتی میتواند شناخت تفاوت اجرای عادی، توقف و بازنشانی باشد، بدون تمرکز بر دور زدن حفاظت یک محصول واقعی. هر نتیجه غیرعادی باید با خروجی برنامه و وضعیت هدف تأیید شود. ناپدید شدن پاسخ سریال به تنهایی موفقیت یک فرضیه امنیتی نیست.
برای این نوع آزمایش، حدود مجاز سختافزار و روش بازگرداندن هدف را پیشاپیش مشخص کنید. دستگاه اندازهگیری، تنظیمات اعمال اختلال و برد هدف باید تحت کنترل باشند. پس از هر آزمایش، سلامت پایه هدف را با برنامه مرجع بررسی کنید. اگر هدف دیگر رفتار عادی ندارد، داده بعدی ممکن است مربوط به آسیب یا وضعیت باقیمانده باشد. گزارش باید حالت عادی، خطا و بازیابی را از هم جدا کند و از نسبت دادن هر خرابی به یک نتیجه امنیتی خاص پرهیز کند.
تفسیر محدودیت و انتقال نتیجه
یک نتیجه روی برد آموزشی نشاندهنده امکان یک مشاهده در همان شرایط است. محصول واقعی ممکن است زمانبندی، نویز، پیادهسازی یا حفاظت متفاوتی داشته باشد. انتقال نتیجه نیاز به ارزیابی مستقل دارد. در گزارش، نوع هدف و کنترلهایی که عمداً ساده شدهاند را ذکر کنید. اگر هدف یادگیری روش است، همین را روشن بنویسید. ارزش آموزشی با محدود کردن ادعا کم نمیشود؛ برعکس، مرز میان تمرین و ارزیابی محصول را دقیق نگه میدارد.
برای پیشنهاد دفاعی، نتیجه را به رفتار مشاهدهشده وصل کنید. اگر اجرای دو مسیر تفاوت زمانی دارد، بررسی طراحی ثابتزمان میتواند مطرح شود؛ اگر مسئله از خطای اندازهگیری است، اصلاح کد رمزنگاری پاسخ مناسبی نیست. هر پیشنهاد باید بعداً با آزمون مستقل بررسی شود. حذف یک نشانه در یک مجموعه داده کوچک، تضمین حذف همه کانالهای جانبی نیست. زبان دقیق در نتیجهگیری به تیم مهندسی کمک میکند اقدام متناسب انجام دهد.
خروجی یک جلسه موفق آزمایشگاهی
در پایان جلسه، باید یک مجموعه داده قابل خواندن، تنظیمات قابل بازسازی و توضیح روشن از مشاهده داشته باشید. اگر آزمایش شکست خورده، مرحله شکست و فرضیه بعدی را ثبت کنید. این هم خروجی مفید است، زیرا تکرار بیهدف همان خطا را کاهش میدهد. تجهیزات را به وضعیت پایه برگردانید و کابلها و هدف را مشخص نگه دارید. جلسه بعدی نباید با حدس درباره سیمکشی یا نسخه برنامه آغاز شود.
برای اشتراک با همکار، یک نمونه کوچک از داده ساختگی و مراحل حداقلی کافی است. لازم نیست همه فایلهای حجیم یا داده اختصاصی پژوهش را منتشر کنید. گزارش خوب نشان میدهد چه چیزی ثابت نگه داشته شد، چه چیزی تغییر کرد و چه شاهدی نتیجه را پشتیبانی میکند. این روش Husky را از وسیلهای برای نمایش شکل موج به بخشی از یک فرایند پژوهشی منظم تبدیل میکند که قابل نقد، تکرار و بهبود است.
مستند تکمیلی
برای جزئیات اتصال و قابلیتهای نسخه مورد استفاده، مستند رسمی ChipWhisperer-Husky و مرجع Scope API را بررسی کنید.