بلاگ نبض
برای ساخت و توسعهی کیفپولهای سختافزاری ایمن و کاربردی نکات ریز و درشت زیادی وجود دارد که در این مقاله به ۹ مورد از آنها پرداختهایم
آمار و ارقام منتشر شده در سال ۲۰۱۹ حاکی از آن است که تعداد مالکان مقداری رمزارز بیت کوین در ایالات متحده نسبت به سال قبل افزایش ۸۱ درصدی داشته است.
گزارشات نشان میدهد که در حال حاضر نزدیک ۳۶/۵ میلیون کاربر حوزهی رمزارز در خاک ایالات متحده وجود دارد که به نوعی مالک مقداری دارایی دیجیتال هستند. با وجود چنین افزایشی، قطعاً موضوع «امنیت» به یک مسئلهی مهم برای کاربران تبدیل شده است…
امنیت در کیفپولهای سختافزاری
زمانی که در رابطه با افزایش امنیت در حوزهی رمزارزها صحبت میکنیم، اکثر اوقات کیفپولهای سختافزاری به عنوان امنترین روش ذخیرهی سازی داراییهای رمزارزی توصیه میشوند. امنیت کیفپولهای سختافزاری را میتواند به دو جنبهی متفاوت تقسیم کرد:
اول، امنیت فنی که در جامعهی بیت کوین بسیار مورد بحث قرار گرفته است. این نوع امنیت شامل جلوگیری از حملاتی است که در آنها انسان دخیل میباشد؛ حملاتی از جمله حملهی کانال جانبی یا حملهی زنجیرهی تامین و مواردی از این دست.
دوم خطای انسانی، یکی از جنبههای امنیت که هرگز نمیتوان از آن غافل شد. تخمین زده میشود که به دلیل خطای انسانی نزدیک به ۴ میلیون واحد بیت کوین در حال حاضر گم شده و هرگز نمیتوان آن را بازیابی کرد. اگر به تاریخچهی توسعهی بیت کوین نگاه دقیقتری داشته باشیم، میتوانید روشهای جلوگیری و یا به حداقل رساندن خطای انسانی را مشاهده کنیم. به عنوان مثال، کیفپولهای سختافزاری در تلاشاند تا با روشهای مختلف خطای انسانی مربوط به ذخیرهسازی صدها کلید خصوصی و کلمات بازیابی حساب را کاهش داده و احتمال اشتباه در هنگام یادداشت کردن یک رشتهی تصادفی از کلیدهای خصوصی را به حداقل ممکن برسانند.
در این مقاله ابتدا به پیشرفتهای مربوط به حوزهی امنیت فنی پرداخته شده و در ادامه برخی روشهای جلوگیری از خطای انسانی را مرور میکنیم.
مفهوم فاصلهی هوایی یا Air-Gapped
همانطور که اطلاع دارید، منطق ساخت و عرضهی کیفپولهای سختافزاری بر این اساس است که داراییها و کلید خصوصی کاربر از اینترنت جدا باشد. چگونگی اتصال کیفپول به نرمافزار یا دستگاه مورد نظر ما همان نکتهی کلیدی است. این موضوع تعیین کنندهی سختی هزینهی لازم برای سرقت داراییها توسط هکر میباشد.
به طور دقیقتر، در این اینجا مفهوم «فاصلهی هوایی» یا سختی فرآیند هک مورد بحث قرار میگیرد. این مفهوم سطح تعامل کیفپول سختافزاری شما با نرمافزارهای همراه و مورد نیاز برای اتصال را اندازهگیری میکند. امروز ۴ راهحل اصلی در رابطه با این موضوع وجود دارد، پورتهای یواسبی(USB)، بلوتوث، کارتهای میکرو SD و یا کدهای QR.
فناوری بلوتوث و استفاده از درگاه USB به نوعی اتصال تعاملی هستند، که در نهایت منجر به افزایش احتمال و سطح حمله از طرف هکرها میشوند. استفاده از کارتهای SD و اسکن کدهای QR نیز راهحلهایی با «فاصلهی هوایی» بیشتر بوده که احتمال دستکاری و حملات هک کمتری در آنها وجود دارد. شما حتی میتوانید با استفاده از این روشهای انتقال داده به راحتی پیامهایی که بین کیفپول سختافزاری و نرمافزار مورد استفاده جابجا میشود را مورد بررسی قرار داده و صحت آنها را تایید کنید.
یکی دیگر از مزیتهای مهم استفاده از کارتهای SD و کدهای QR این است که اتصال آنقدر «فیزیکی» میشود که ادغام کیفپول سختافزاری با یک نرمافزار همراه شخص ثالث بسیار سادهتر خواهد بود. همچنین هیچ یک از مشکلات مربوط به سازگاری و اتصال موجود در روشهای بلوتوث و USB نیز در این روشها وجود ندارد. در این حالت، کیفپول سختافزاری شما تنها میتواند به عنوان یک امضاء کنندهی تراکنش عمل کرده و فقط کار امضاء را انجام دهد.
عنصر ایمنی
در رابطه با اینکه آیا کیفپولهای سختافزاری باید از یک عنصر ایمنی استفاده کنند یا خیر، بحث و جدلهای زیادی در حوزهی رمزارز صورت گرفته است. برخی کاربران بر این باورند که تایید عناصر ایمنی بر عهدهی دولتهاست. این درحالیست که جامعهی بیت کوین به هیچ وجه به دولتها اعتماد ندارد، پس چطور میتوانند به عناصر ایمنی تایید شده توسط آنها رجوع کنند؟
عنصر ایمنی یا Secure Element در واقع یک میکروپروسسور یا ریز تراشهی پردازشی است که وظیفهی ذخیرهی دادههای حساس و راهاندازی نرمافزارهایی بسیار مهم همچون نرمافزارهای پرداخت را برعهده دارد.
به گفتهی این کاربران، برای اعتماد به یک عنصر امنیتی نیازی به تاییدیهی دولت نیست؛ بلکه شما میتوانید مشروعیت یک عنصر امنیتی را خودتان تایید کنید.
اما این سوال وجود دارد که چطور میتوان عملکرد یک عنصر امنیتی را تایید کرد؟
به نظر میرسد که جامعهی رمزارزها بر سر یک موضوع به توافق رسیدهاند، آنهم این است که یک عنصر امنیتی یا SE نمیتواند منبع باز باشد. اما حقیقت این است که این موضوع به عوامل متعددی بستگی دارد. گرچه ما نمیتوانیم از کدهای پایه و طراحی منبع باز یک عنصر امنیتی به دلیل حق مالکیت تولیدکنندهی آن استفاده کنیم(مانند میکروکنترلهای چند منظوره)، اما میتوانید از فرمویر(firmware) یا سیستمعامل منبع باز عنصر امنیتی استفاده کنیم.
شما میتوانید با فرمویر منبع باز یک عنصر امنیتی موارد ذیل را به سادگی تایید کنید:
- چطور کلمات بازیابی حساب و کلید خصوصی اصلی از انتروپی(entropy) و بینظمی تولید میشود.
- چطور کلیدهای خصوصی چایلد(child private keys) و کلیدهای عمومی تولید یا ساخته میشوند.
- تایید اینکه روند امضاء کاملاً با حضور عنصر امنیتی رخ میدهد.
- کلیدهای خصوصی شما هرگز از عنصر امنیتی خارج نشدهاند.
توابعی که نمیتوانند منبع باز باشند
با این حال همچنان ۳ عملکرد اصلی وجود دارد که نمیتواند منبع باز باشد. این عملکردها یا توابع تنها توسط «طراحی» اصلی عنصر امنیتی شناخته میشوند:
- تولید شمارهی تصادفی – TRNG
- الگوریتمهای رمزنگاری همچون ECDSA
- نحوهی جلوگیری از حملات فیزیکی(حملات کانال جانبی)
آزمایش تابع TRNG
تابع TRNG را میتوان با انجام یک آزمایش مانند FIPS 140-2 مورد بررسی قرار داد و تایید کرد. به عنوان مثال میتوانید نتایج حاصل شده توسط شرکت ترزور از آزمایش FIPS 140-2 بر روی STM32 TRNG را مشاهده کنید.
نکته: توجه داشته باشید که عنصر امنیتی باید بتواند آنتروپی آنالوگ خام را برای انجام این آزمایش ارائه دهد.
برای الگوریتمهای رمزنگاری همچون ECDSA، شما میتوانید به راحتی یک آزمایش بر روی الگوریتم رمزنگاری عنصر امنیتی انجام دهید تا ببینید نتایج به دست آمده مناسب هستند یا خیر.
به لحاظ حملات فیزیکی، به راحتی و با استفاده از تاریخچهی حمله به کیفپولهای سختافزاری میتوان گفت که حمله به یک عنصر امنیتی در مقایسه با یک میکروکنترلر چند منظوره بسیار هزینه بیشتری در پی خواهد داشت. بنابراین میتوان گفت که امنیت یک مفهوم نسبی است و نه یک مفهوم مطلق!
علاوه بر اینها، اگر سیستمعامل یک عنصر امنیتی منبع باز باشد، تمامی عملیاتهای کلیدی قابلیت اثبات و یا تایید خواهند داشت.
پشتیبانی از چند امضاء در فرایند انتقال باینری به صورت فاز بندی شده(PSBT)
بدون توضیح و بررسی اضافه در رابطه با پیشنهاد بهبود بیت کوین یا BIP 174 که در نهایت تعریف PSBT را ارائه کرد، میتوانیم بگوییم که ۲ سناریوی اصلی برای PSBT وجود دارد.
- کوینجوین(CoinJoin)، که در راستای حفظ حریم خصوصی و محافظت از آن به کاربران کمک میکند تا تراکنشهای بر روی زنجیره را تجزیه و تحلیل کنند.
- PSBT پروتکل را بین کیفپولهای مختلف تراز میکند، فرایند که باعث میشود پردازش تراکنشهای چند امضاء بین کیفپولهای مختلف امکانپذیر شود. با این کار از خرابی تک نقطهای(single point failure) در کیفپول جلوگیری به عمل آمده و به صورت نمایی هزینهی لازم برای شکست سیستم چند امضاء جهت سرقت داراییها، افزایش مییابد.
پشتیابنی از PSBT برای نسل بعدی کیفپولهای سختافزاری به یک ضرورت تبدیل خواهد شد.
سختافزار خودتان را بسازید(BYOH)
BYOH بهترین روش برای به حداقل رساندن سطح اعتماد لازم به فروشندگان کیفپولهای سختافزاری است.
یک روش معمول برای اینکه به مردم اجازه دهید که سختافزارهای(در اینجا کیف پولهای سخت افزاری) مورد نیاز را خودشان بسازند، این است که اجازه دهید تمامی مراحل ساخت محصول از جمله شماتیک آن(نمودار مدارها) نیز به صورت منبع باز و قابل دسترسی باشد. با این حال، این روش دو مشکل اساسی در پی دارد:
- این کار باعث میشود که هزینهی ساخت دستگاههای تقلبی توسط هکرها برای سرقت داراییهای رمزارزی به شدت کاهش یابد.
- در حال حاضر افراد کمی در جامعه مهارت کافی برای ساخت کیفپول رمزارزی بر اساس نمودار مدارهای الکترونیکی را دارند. ساخت چنین چیزی هم به مهارت سختافزاری و هم به مهارت نرمافزاری بالایی نیاز دارد.
بورد توسعه را در اختیارشان قرار دهید
بنابراین، بهترین راهحل در راستای اینکه اجازه دهیم کاربران کیفپول سختافزاری را خودشان بسازند این است که بورد توسعهی عنصر امنیتی را به آنها بفروشیم. از آنجا که عنصر امنیتی مهمترین مولفهی در کیفپولهای سختافزاری به شمار میآید، با در اختیار داشتن بورد توسعهی عنصر امنیتی یک مهندس نرمافزار قادر خواهد بود تا دستگاه خود را به یک کیفپول سختافزاری تبدیل کند.
نکتهی جالب اینجاست که طی سالیان گذشته اغلب شرکتهای تولیدکنندهی کیفپولهای سختافزاری فعالیتهای خود را بر روی امنیت فنی متمرکز کردند. به عنوان مثال، جدیدترین جدال و بحث در رسانههای اجتماعی پیرامون کیفپولهای سختافزاری این است که آیا باید از عنصر امنیتی استفاده کرد یا خیر، اما تعداد کمی از افراد از منظر تجربهی کاربری در رابطه با امنیت کیفپول سختافزاری صحبت میکنند، که به گفتهی آنها میتواند به جلوگیری از خطای انسانی کمک کند. این موضوع بسیار هائز اهمیت است، زیرا کیفپولهای سختافزاری دیگر فقط برای کاربران سطح بالا تولید نشده و اکنون به یک محصول با تولید انبوده تبدیل شدهاند.
پیش از آنکه به خطای انسانی بپردازیم، باید تاکید کرد که «خطای انسانی» یک مفهوم نسبی است که نمیتواند همزمان هم برای کاربران سطح بالا و هم عموم کاربران مورد استفاده قرار بگیرد. این بدان معناست که برخی از اقدامات صورت گرفته برای کاهش خطای انسانی کاربران عمومی ممکن است باعث کاهش انعطافپذیری برای کاربران سطح بالا شود.
یک صفحهی لمسی بزرگ
مدتهاست که کاربران نسبت به دکمههای بسیار ریز و صفحهی کوچک کیفپولهای سختافزاری مختلف رنج میبرند. این ناراحتی و مشکلات ممکن است در دراز مدت به خطای انسانی منجر شود. به عنوان مثال کلمات بازیابی را در ذهن داشته باشید، اکثر فروشندگان کیفپولهای سختافزاری تنها یک مرتبه از کاربران میخواهند تا کلمات بازیابی خود را وارد کنند، بدون اینکه بخواهند که صحت و سقم ورودی های خود را بررسی کنند. این درحالیست که تایپ کردن یک عبارت به صورت اشتباه باعث خواهد شد تا بیت کوین شما به یک آدرس اشتباه فرستاده شود. بدیهی است که اضافه شدن یک صفحهی نمایش لمسی بسیار بزرگتر منجر به کاهش خطا انسانی و بهبود تجربهی تایپ برای کاربران خواهد شد.
مهمتر از همه، یک صفحه نمایش بزرگ میتواند باعث کاهش احتمال حملات مختلف شود. به طور مثال، شما میتوانید به جای استفاده از یک نرمافزار جانبی، تنها با نمایش کد QR بر روی صفحهی نمایش بیت کوینهای خود را جابجا کنید، فرایندی که بسیار ایمنتر از بهرهگیری از نرمافزارهای جانبی است.
البته این موضوع ممکن است برای کاربران سطح بالا چندان با ارزش و مهم تلقی نشود. اما همانطور که گفته شد، با افزایش سطح پذیرش بیت کوین و سایر رمزارزها باید کاربران تازه وارد به این حوزه را هم در نظر گرفت.
محافظت در برابر سیستمعاملهای دستکاری شده
در این جهان غیرمتمرکز بهرهگیری از منابع باز بسیار مهم است. اما از منظر خطای انسانی، منبع باز بودن میتواند منجر به افزایش سطح حملات شود.
همانطور که میدانید کیفپولهای سختافزاری منبع باز به کاربران اجازه میدهند تا کدهای اصلی را به دلخواه تغییر داده و آن را آپلود کنند.
گرچه هنگام نصب نرمافزارهای غیر رسمی به کاربران هشدار داده میشود، مهاجمان هنوز هم میتوانند راهی پیدا کنند که این هشدارها را دور بزنن و نرمافزار دستکاری شدهی خود را به عنوان یک نرمافزار جانبی رسمی معرفی کنند. این موضوع تاجایی پیش رفته است که هکرها با حضور در انجمنهای فعالی همچون رددیت و تلگرام به فریب دادن افراد روی آورده و باعث میشوند تا آنها نرمافزارها و سیستمعاملهای مخرب را نصب کنند. شاید برخی کاربران این مورد را به سختی باور کنند، اما با افزایش اهمیت و آگاهی پیرامون کیفپولهای سختافزاری در دنیای رمزارزها، نه تنها این محصول برای کاربران سطح بالا تولید میشود، بلکه به تولید انبوه رسیده و کاربران تازهوارد نیز از آنها بهره میبرند.
یک نسخهی منحصر به فرد
محافظت از کاربران عادی در برابر سیستمعاملهای مخرب شخص ثالث به معنای قربانی کردن انعطافپذیری کاربران سطح بالا برای شخصیسازی کدها نیست. یک راهحل بهتر این است که فروشندگان کیفپولهای رمزارزی یک نسخهی جداگانه برای کاربران سطح بالا در نظر بگیرند، کاربران که به دنبال تغییر و بارگذاری کدهای شخصیسازی شده هستند.
البته برای این نوع کیفپولها باید یک هشدار جدی در نظر گرفته شود تا کاربران معمولی برای خرید آنها اقدام نکنند. علاوه بر این، این دستگاهها باید بدون هرگونه سیستمعامل پیشفرض عرضه شوند تا کاربران سطح بالا مجبور شوند یک نسخهی ویژه را تهیه کنند، نسخهای که با یک کلید دیگر امضاء شده و در دستگاه بارگذاری میشود.
این کار را میتوان یک قدم فراتر برد، یعنی کاربران بتوانند جفت کلیدها را با کلید خودشان تعویض کنند. در این صورت تنها خود کاربر قادر خواهند بود که سیستمعامل را امضاء کرده و بر روی دستگاه آپلود نمایند.
باتری ماژولار و قابل تعویض
مانند هر محصول الکترونیکی دیگری، در کیفپولهای سختافزاری باتری آسیبپذیرترین قسمت است. امروزه تلفنهای همراه نیز مانند محصولات FMCG هستند و به محصولاتی ضد آب تبدیل شدهاند. این درحالیست که چنین چیزی برای کیفپولهای سختافزاری وجود ندارد؛ موضوع که ممکن است طی یک دههی آینده و یا پس از آن شاهد افزایش اهمیت آن در بین تولیدکنندگان شویم. اگر یک کیفپول سختافزاری تمام داراییهای شما را در خود ذخیره کرده است، این امکان وجود دارد که شما هر ۶ تا ۱۲ ماه یک بار آن را لمس کرده و بیشتر تمایل داشته باشید که در یک جای امن از آن مراقبت کنید.
در حال حاضر کیفپولهای سختافزاری روز به روز در حال بهرهگیری از روشهای انتقال اطلاعات بیسیم همچون بلوتوث هستند. همین امر باعث شده که به جای استفاده از درگاه USB که برق مورد نیاز خود را از رایانهی شخصی دریافت میکند، استفاده از فناوری بلوتوث و بیسیم بیشتر مورد توجه قرار بگیرد، فناوری که باعث افزایش سطح مصرف برق از باتری کیفپول میشود. در صورتی که از فناوری بلوتوث در یک دستگاه سختافزاری استفاده میشود، قابلیت پشتیبانی از پاوربانکها جهت تامین ذخیرهی باتری یا جایگاه تعبیهی باتریهای AAA و AA نیز باید افزوده شود.
برخی ممکن است بگویند که «اگر کیفپول سختافزاری من به دلیل خرابی باتری دیگر کار نمیکند، اشکالی ندارد من یک کیفپول جدید خریداری کرده و با استفاده از کلمات بازیابی داراییهای خود را بازگردانی میکنم». مراقب باشید، بهترین وضعیت برای یک کلمهی بازیابی این است که هرگز مورد استفاده قرار نگیرد، زیرا با هربار نمایان کردن آن باعث افزایش خطر سرقت یا گم شدن آن خواهید شد.
نرمافزار جانبی همراه
در حال حاضر اغلب نرمافزارهای جانبی(مانند لدجر لاو و نرمافزار وب ترزور) دارای نسخهی دسکتاپ و وب هستند. از آنجا که دستگاههای دسکتاپ و سیستمهای عامل قابلیت شخصیسازی بالایی دارند، نرمافزارهای نسخهی دسکتاپ و وب نیز به دلیل مزایایی همچون شبکهی ثور(Tor networks) به محبوبیت بالایی رسیدهاند. علاوه بر این شما میتوانید به راحتی امضاء یک نرمافزار دسکتاپ را به صورت دستی تایید کنید. قطعاً وجود چنین مزایایی باعث شده تا برخی نیازهای کاربران سطح بالا رفع شود، با این حال، یک نرمافزار جانبی همراه ریسک و خطر حملهی کمتری به همراه دارد:
- نرمافزارهایی که بر روی دستگاههای همراه نصب میشوند در یک فضای بسته و ایزوله راهاندازی میگردند. این نرمافزارها تنها به دادههای خودشان دسترسی دارند.
- به صورت پیشفرض رمزگذاری کامل فایلهای سیستمی فعال است.
- مجوز دسترسی کاربران در نسخهی همراه نسبت به نسخهی دسکتاپ به شدت محدود است.
کاربران عادی در زمینهی محافظت در برابر لینکهای مخرب نمیتوانند به خوبی عمل کنند، لینکهایی که به تنهای بخش زیادی از خطاهای انسانی را به خود اختصاص دادهاند. به دلیل ۳ ویژگی فوقالذکر، استفاده از نرمافزارهای موبایل باعث میشوند تا احتمال حملات فیشینگ(phishing) و سایر مواردی که به خطاء انسانی بستگی دارند، به حداقل برسند.
آندریاس آنتونوپولوس، نویسندهی کتاب « Mastering Bitcoin» نیز استفاده از نرمافزارهای موبایل را مورد ستایش قرار داده است.
برای خرید آفلاین در دسترس قرار داشته باشد
اغلب کاربران عادی از زمینهی محافظت از حریم خصوصی آنلاین خوب عمل نمیکنند. اگر ما رفتار خرید آنلاین را به عنوان یکی از زمینههای حملات سایبری در نظر بگیریم، بهتر است تا فروشندگان کیفپولهای سختافزاری قابلیت خرید آفلاین را هم اضافه کنند. اگر فرایند پرداخت به جای کارت اعتباری از بیت کوین یا پول نقد هم استفاده کند که خیلی بهتر خواهد بود.
سخن آخر
ساخت یک کیفپول سختافزاری اصلا کار سادهای نیست. هیچ محصولی در دنیا وجود ندارد که امنیت آن تضمین شده و ۱۰۰ درصد باشد. کاری که ما انجام میدهیم این است که هزینهی حملهی هکرها به داراییهایتان را شدیداً افزایش میدهیم. این هزینه شامل وقت و سختافزارهای مورد نیاز برای این کار است که مجموعاً باعث میشود حتی در صورت امکان چنین حملاتی، از نظر اقتصادی صرف نداشته و سود بدست آمده برای هکرها بسیار کمتر از هزینهی پرداخت شده باشد.
اینکه در آینده شاهد چه تغییراتی در دنیای کیفپولهای سختافزاری خواهیم بود کاملاً نا مشخص است، اما مواردی وجود دارد که تمرکز بر روی آنها بسیار هائز اهمیت است:
- کنار گذاشتن تراشههای چند منظوره یا چیپهای ARM، عنصر امنیتی با تمام ورودی و خروجیهای میتواند ارتباط برقرار کرده و کنترل آنها را به دست بگیرد؛ فرایندی که منجر به کاهش چشمگیر احتمال حمله به کیفپولهای سختافزاری میشود. این مفهوم در حال حاضر با عنوان «به حداقل رساندن سطح اعتماد» عنصر امنیتی توصیف میشود.
- عنصر امنیتی کاملاً منبع باز، که در نهایت منجر به ایجاد سطح جدیدی از «حداقل رساندن سطح اعتماد» خواهد شد.