درباره هک کردن تراشه های الکترونیک
تاریخ نشر:باسمه تعالی
اوایل سال 2007 مقاله ای از آقای William Thomas خواندم که در آن سعی داشت توضیح دهد چرا در آن مقطع زمانی آمریکا در حمله به ایران تامل کرد و دست نگاه داشت. مطالب مطرح شده در مقاله هنوز بعد از 5 سال، خواندنی است و خواندن آن توصیه میشود. هرچند ایرادات زیادی در مقاله وجود داشت، اما پس از گذشت چند سال روشن تر شد که اصل موضوع درست است. ایشان در آن مقاله مطرح کرده بود که از وقتی شرکت های سازنده تراشه های الکترونیک آمریکایی، تولید تراشه را در آمریکا متوقف کرده و کارخانه های خود را به چین منتقل کرده اند، چینی ها با اتخاذ روشهای مختلف در تراشه ها دستکاری کرده اند و چنین تراشه هایی در تمام سیستم های نظامی اعم از هوافضا و جنگ الکترونیک و مخابرات و ناوهای هواپیمابر بکار رفته اند. اول کمی در مورد روش های بکار رفته شرح دهم تا بتوان در مورد عواقب آن حرف زد:
روش اول:
این است که کارخانه سازنده تراشه، پس از ساخت ویفر آن و قبل از قرار دادن آن در package، یک لایه مش روی آن اضافه میکند. کار این لایه اضافه این است که با دریافت سیگنال با فرکانس خاص، آنرا تشدید کرده و بین نقاط مختلف تراشه را به هم اتصال کوتاه کند. حال فرض کنید در صحنه جنگ، سیگنالی با توان بالا و فرکانس موردنظر بطرف دستگاهی که این تراشه در آن قرار دارد، ارسال شود، تراشه سوخته و کل سیستم از کار می افتد و تا بخواهند آن سیستم را تعویض کنند، نبرد را بازنده شده اند. چنین تراشه ای حتی اگر در سیستم های مقاوم در برابر حمله اتمی و ElectroMagnetic Pulses (EMP) قرار گرفته باشد، به مراتب آسیب پذیر تر از بقیه سیستم است و احتمال آن وجود دارد که بسوزد. حتی اگر درصد پایینی از تراشه های اصلی هر سیستمی با این روش آسیب پذیر شده باشند، کافی است که کل سیستم های موجود در یک ناو هواپیمابر و یا یک هواپیما و یا یک ماهواره را از کارآیی لازم بیاندازد.
روش دوم:
برای طراحی هر سیستم الکترونیک، چه نظامی و چه صنعتی، قطعا تلاش فراوانی صورت میگیرد و معمولا پیچیده ترین نکات طراحی بصورت نرم افزار در داخل پروسسور و یا بصورت آرایش سخت افزاری در داخل Field Programmable Gate Array (FPGA) در می آید. FPGA تراشه ای است که سخت افزار آن قابل تعریف و تغییر است. هیچ کس مایل نیست که سیستمی را طراحی کند که دیگران براحتی بتوانند نرم افزار یا تعریف سخت افزار آنرا دزدیده و کپی کنند، بنابراین تمام FPGA ها و پروسسورهای استفاده شده در چنین طرح هایی توان این را دارند که پس از برنامه ریزی شدن، اطلاعات خود را مخفی کنند و همچنین کسی نتواند برنامه آنها را تغییر دهد و یا پاک کند.
شرکت هایی که طراحی تراشه انجام میدهند، لزوما خود سازنده آن تراشه نیستند و ساخت تراشه های خود را به کارخانه هایی که در این کار تخصص دارند واگذار میکنند. به چنین شرکت هایی Fabless میگویند. تمام شرکت های FPGA و اکثر شرکت های طراح پروسسور و میکروکنترلر ها از این نوع هستند. اکثر کارخانه های اصلی سازنده تراشه هم یا در تایوان هستند و یا در چین.
حال اگر کارخانه سازنده تراشه بدون اطلاع شرکت طراح تراشه، یک واحد به عنوان در پشتی یا Back-door به تراشه اضافه کند که پس از دریافت یک الگوی مشخص اطلاعات فعال شود، میتوان نرم افزار ذخیره شده و یا تعریف سخت افزار تراشه را حتی بدون دانستن نحوه کد شدن اطلاعات خواند و یا مثلا به تراشه دستور داد تا از کار بیافتد و یا در کار بقیه سیستم اخلال کند. آنچه بر سر هواپیمای بدون سرنشین RQ170 که چند ماه پیش سالم به زمین نشانده شد، آمد چیزی از این قبیل بود. هرچند هک کردن کدهای رمز نرم افزاری برای بدست گرفتن کنترل آن هزاران سال طول میکشید، شنیده شد که وجود یک درپشتی در تراشه اصلی واحد GPS آن باعث شد که بشود اطلاعات غیر واقعی از موقعیت هواپیما به سیستم کنترل آن داده شود و هواپیما سالم به زمین نشانده شود.
اتخاذ این روش زمینه را برای دزدی طرح های نظامی و صنعتی و مهندسی معکوس آن توسط چینی ها را فراهم کرد و آنها را در عرصه رقابت جلو انداخت. به عنوان مثال آمریکایی ها برای طراحی هواپیمای F22 پانزده سال وقت و 500 میلیارد دلار هزینه صرف کردند، در حالی که هواپیمای J20 چینی که کپی طرح آمریکایی ها است، خیلی سریعتر و ارزانتر به تولید رسید.
روش سوم:
همه شرکت های طراح تراشه ها ادعا میکنند که اطلاعات استفاده کنندگان از تراشه آنها کاملا محفوظ است و حتی شرکت طراح تراشه نیز امکان دستیابی به آنرا ندارد و هیچ راهی برای بازیافت اطلاعات توسط آنها تعبیه نشده است. در واقع اگر چنین تضمینی را ارائه نکنند، هیچ کس ریسک استفاده از محصولات آنها را نمی پذیرد. اما پس از جلب اطمینان مشتری، تقریبا همه شرکت ها وسوسه میشوند که به نحوی تراشه را طراحی کنند که در کنار امکان کنترل کیفیت تراشه پس از تولید و احتمالا جبران بعضی خطاهای ساخت، راهی برای خواندن اطلاعات آن وجود داشته باشد و سعی میکنند چنین اطلاعاتی را به دیگران ندهند. اخیرا در مقاله ذیل، نویسندگان مقاله نشان داده اند که با چه روش های ساده ای میشود به این اطلاعات مخفی دست پیدا کرد.
Breakthrough silicon scanning discovers backdoor in military chip
آنها FPGA ای از شرکت ACTEL به نام ProAsic3 را که بیشترین مصرف را در صنایع نظامی و هوافضا دارد، و همچنین بالاترین امنیت اطلاعات را ادعا میکند، انتخاب کرده و توانسته اند ظرف دو هفته روش و کدهای دسترسی به محتویات تراشه را بدست آوردند. همچنین نویسندگان مقاله ادعا میکنند که یافتن این اطلاعات درباره میکروکنترلر های معمولی علیرغم ادعاهای سازندگان آنها، صدبار آسان تر است.
نکته اصلی در اینجا است که شرکت های Fabless مانند Actel و دیگران، وقتی اطلاعات تراشه های خود را برای تولید به کارخانه های سازنده میدهند، آن کارخانه ها که همگی در کنترل چینی ها هستند، اطلاعات دست اولی از روش نفوذ به تراشه های آنها پیدا میکنند و میتوانند از آنها در دزدی فنی و یا جنگ الکترونیک استفاده کند.
اما درباره عواقب این ماجرا مطالب ذیل را میتوانم عرض کنم:
اول: اگر در آینده جنگی بین ایران و آمریکا رخ دهد، احتمال اینکه سیستم های نظامی آمریکایی طبق انتظاری که خودشان دارند، عمل نکنند، وجود دارد و این شرایطی است که آنها کمتر آن را تجربه کرده اند.
دوم: از آن جهت که ایران تولید مستقل تراشه ندارد، و همه کشورهای دنیا و علی الخصوص چین تراشه های قابل نفوذ و صدمه پذیرتر را در بازار ایران پخش میکنند و بهرحال چنین تراشه هایی در سیستم های نظامی هم بکار برده میشوند، در صحنه جنگ نمیشود روی کارکرد سیستم های الکترونیک حساب باز کرد. شخصا مواردی را در بازار ایران مشاهده کرده ام که برایم تعجب انگیز بود. مثلا FPGA پیشرفته ای که قیمت آن در بازار بین المللی 1000 دلار است، در حین سالم بودن قطعه، در بازار ایران به 500 هزار تومان فروخته میشد. طبیعتا چنین قیمت پایینی باعث میشود که شرکت های ایرانی از این قطعات استفاده کنند و دنبال تهیه قطعه از کارخانه سازنده نروند و همین مطلب ممکن است که دست کشوری متخاصم را در نفوذ و تخریب سیستم های الکترونیک ایرانی باز بگذارد.
سوم: برنامه ریزی هایی که چین در زمینه برتری نظامی کرده، فقط برای به زانو درآوردن آمریکا نبوده و در نهایت به تلاش چین برای تسلط بر منابع نفتی خاورمیانه منجر میشود. لذا همانطور که سیستم های الکترونیک آمریکایی در هر جنگی آسیب پذیر هستند، ایرانی ها هم در آینده هنگام تهاجم چین برای تصرف منابع نفتی، با همان شرایط روبرو خواهند بود. لذا برنامه ریزی برای ایجاد ظرفیت تولید تراشه های مصرف شده در سیستم های نظامی، در داخل کشور بدون همکاری خارجی ضروری است.
مفید بود
سپاس
سلام
واقعا متاسفم برای این همه احساس خشمی که نسبت به آمریکا دارید و کور کورانه اطلاعاتی که دارید را در مسیر هدف خود سوق میدهید.
منم با دزدی الکترونیک موافقم ولی شما قضیه رو خیلی فیلم هندی کردید.
با سلام،
من از احساسات در اینجا حرفی نزدم. بحث فنی است و اگر با دلیل و مدرک میتوانید نشان دهید که بعضی از اطلاعات غلط است، بفرمایید تا تصحیح کنم.
گذر سطحی و خواندن بین حطوط صحیح نیست. مقاله دیگری نوشته ام تحت عنوان "بیایید نوشته را بخوانیم و نه خطوط بین انرا"
http://shakeri.net/684
با سلام!
مطلب مفيدي بود؛ آنچه درباره ايران فرموديد، كاملاً درست است.
فقط يك سؤال:
آمريكا و مثلاً شركت اينتل كه توان ساخت ميكروپروسسورها را دارند، آيا براي مصارف نظامي خودشان، تراشههاي لازم را خودشان نميسازند؟!
ضمن عرض سلام و تشکر از عنایت جنابعالی،
هزاران شرکت خصوصی هستند که برای توسعه سخت افزارها با نیروهای نظامی قرارداد دارند. نمیشود همه طرحها را محدود به یک سری امکانات محلی کرد و طراحان دستگاهها به هر حال از قطعات دیگر شرکتها استفاده میکنند. بعضی از تراشه ها اصلا در آمریکا تولید نمیشود. مثلا همه FPGA ها در آسیا تولید میشود. اخیرا شرکت اینتل شرکت Altera را خرید تا بشود بعضی از این تراشه ها را اختصاصی تولید کرد.
مطلب دیگر مربوط به Supply Chain Management است. این شرکتهای طرف قرارداد نیروهای نظامی باید برای ساخت سخت افزارها، قطعات را خرید کنند. حالا یا به طمع اینکه یک فروشنده قیمت پایین تری میدهد و یا به خاطر دستکاری عوامل جاسوسی، بعضی از این قطعات با قطعات آسیب پذیر جایگزین میشوند. ممکن است این قطعات کپی همان تراشه هایی باشد که در شرکتهای آمریکایی مانند نشنال ایتسترومنتز ساخته میشود. وقتی هم که یک دستگاه ساخته شد و روی هزاران وسیله نظامی که اطراف عالم فرستاده میشوند نصب شد، دیگر نمیشود آنها را به خاطر اینکه یکی دو سال بعد معلوم شد که یکی از صدها تراشه دستگاه آسیب پذیر است، دور انداخت. اما برای از کار انداختن کل دستگاه همان یک تراشه آسیب پذیر کافی است.
سلام
خیلی ممنون مطالب کاملا مفید و فنی بود به خصوص بخش نفوذ تو سیستم rq170
خواهشا درباره ی iot و نقص های امنیتی آن ها هم اطلاعاتی دارین به اشتراک بگذارین
ضمن عرض سلام و تشکر از عنایت جنابعالی
در آینده در این زمینه بیشتر مقاله خواهم نوشت. اما در حال حاضر در مقالات زیر تا حدودی در این زمینه بحث کرده ام:
یخچالها هم دیگر هرزنامه میفرستند
کشتن بیماران با کمک تجهیزات پزشکی متصل به اینترنت
سلام آقای شاکری
وقتتون بخیر
من برنامهنویس نرمافزاری بودم ولی قصد دارم برم سمت برنامهنویسی سختافزاری و مشخصا fpgaها!
آیا هنوز (یعنی بعد از گذشت حدود ۶ سال از این مطلب) یک تراشه سختافزاری امن پیدا نشده برای این کار؟
ضمن عرض سلام،
در این ۶ سال من درست جهت عکس این مسیر را رفتم و بیشتر روی نرمافزار متمرکز شدم. توفیق آزمایش کردن fpga های مختلف را هم نداشتم تا بتوانم درباره امنیت آنها تحقیق کنم.
اما نکتهای که میتوانم عرض کنم این است که هنگام طراحی سیستم، دانستن نقاط ضعف اجزاء سیستم به ما کمک میکند که کل مجموعه را به نحوی طراحی کنیم که آن نقاط ضعف باعث fail شدن کل طراحی نشود. مثلا اگر ما تلفنی داشته باشیم و به ما اطلاع دهند که احتمال شنود خط وجود دارد، چندین راه مختلف داریم که کاری کنیم که حتی با فرض شنود خط، کسی از محتوای مکالمات سر در نیاورد.
درباره fpga های موجود باید فرض کرد که کشورهای سازنده آن، توان خواندن محتویات و کپی کردنش را دارند. احتمالا چند سیستم اطلاعاتی و نظامی دیگر هم توان از کار انداختن و یا هک کردنش را باید داشته باشند.
بنابراین هنگام طراحی سیستمی باید چند نکته را رعایت کنیم:
۱- همه اطلاعات را در یک نقطه متمرکز نکنیم، تا اگر کسی آن را هک کرد نتواند به همه چیز دست یابد
۲- دسترسی غیر قابل کنترل و نامحدود برای هیچکس و هیچ شرایطی تعیین نکنیم. ورودی اطلاعات از بخشهای دیگر سیستم نباید قابل override باشد
۳- اطلاعات و state های قبلی را log کنیم تا بشود درباره رفتن به state بعدی تصمیم درست گرفت و جلوی هک کردن را گرفت.
۴- به قول معروف همه تخممرغها را در یک سبد نگذاریم. اگر امکان این باشد که یک پروسسور را بصورت soft coreدر fpga تعریف کنیم و اجرای بخشی از نرمافزار را به ان واگذار کنیم، تنها وقتی این کار را بکنیم که در تصمیم گیری نهایی اثر مهمی ندارد. چک کردن روال کار و state سیستم را بهتر است در یک پروسسور کوچک خارج از fpga انجام دهیم. تا در صورتی که آن تراشه هک شد و یا fault گرفت، کل سیستم از کار نیافتد.
۵- بطور کلی راجع به resiliency سیستم میشود کار کرد و کاری کرد که از کار افتادن اجزاء باعث از کار افتادن کل سیستم نشود
سلام مجدد آقای شاکری
خیلی ممنون بابت توضیحات خوبتون
البته خیلی چیزهاشو دقیق متوجه نشدم و باید سرچ کنم قطعا ;)
سپاس فراوان