کیف پول دیجیتال کریپتوکارنسی (cryptocurrency) دستگاه یا اپلیکیشنی است که قادر به مدیریت ارز های دیجیتال و انجام تراکنش برای یک یا چند ارز دیجیتال است. از ویژگی های اصلیِ امنیتی آن میتوان به ذخیره گذرواژه های خصوصی کاربر و استفاده از آن ها برای امضای تراکنش ها اشاره کرد.
دو نوع کیف پول دیجیتال رایج وجود دارد؛ کیف پول نرم افزاری و کیف پول سخت افزاری. این دو کیف پول عملکرد یکسانی دارند ، اما به روش های متفاوتی کار می کنند.
کیف پول های نرم افزاری برای استفاده های ساده تر در نظر گرفته می شوند؛ در استفاده از آن ها یک برنامه برای ایجاد، اعتبارسنجی و امضای تراکنش ها کافی است. با کیف پول دیجیتال نرم افزاری، نیازی به ایجاد تراکنش روی نرم افزار و تایید آن در دستگاه سخت افزاری نیست.
دو هفته پیش، از ماجرای یک حمله هدفمند علیه هزاران نفر در سراسر جهان پرده برداری شد. این حمله با استفاده از نقطه ضعف آسیب پذیری دستگاه های اندروید و iOS برای نصب نرم افزار های جاسوسی توسعه یافته توسط NSO Group: Pegasus اتفاق افتاد. این بد افزار قادر است کل فعالیت دستگاه را کنترل کند و اطلاعات شخصی مانند پیامک، مکالمات واتساپ و سیگنال، تماس های تلفنی و غیره را از بین ببرد.
در این مقاله توضیح می دهیم که چگونه در این شرایط، چنین بد افزاری می تواند تمام این موارد را از دستگاه شما استخراج کند. همچنین در مورد اسرار کیف پول های نرم افزاری و تفاوت های آن از نظر امنیتی، در تلفن های همراه و کامپیوتر صحبت می کنیم.
از آن جایی که این مقاله خیلی تخصصی و فنی نیست؛ سعی شده تا تنها به صحبت در مورد ویژگی های اساسی پرداخته شود.
محافظت از داده های سری
چه چیزی در کیف پول رمز نگاری ذخیره می شود؟
کیف پول ها، در واقع ارز های رمزنگاری شده کاربران را ذخیره نمی کنند: آن ها فقط رمز ها، به ویژه کلیدواژه های شخصی را ذخیره می کنند که امکان دسترسی به ارز های دیجیتال و امکان خرج کردن آن ها را فراهم می نماید. این کلید واژه های شخصی عمدتاً از نوع ECC (رمز نگاری منحنی بیضی) بسته به نوع بلاک چین هستند.
از رایج ترینِ آن ها می توان به secp256k1 (Bitcoin، Ethereum…)، Ed25519 (Monero) یا BLS12-381 (Ethereum 2) اشاره کرد. این رمز ها برای تایید تراکنش ها و به طور کلی برای تعامل با دارایی های بلاک چین استفاده می شوند.
ذخیره سازی این کلید ها به نوع کیف پول بستگی دارد؛ کیف پول قطعی یا کیف پول غیر قطعی
کیف پول قطعی (HD) سلسله مراتبی برای ایجاد فرم درختی از گذرواژه ها را از یک رمز عبور اصلی به نام seed به BIP44 ایجاد می کند.
این گذرواژه اغلب از یک مجموعه کاراکتر 12، 18 یا 24 تایی که به طور تصادفی توسط کاربر تولید یا انتخاب شده است، مشتق شده است. این قابلیت به شما اجازه می دهد تعداد گذرواژه های ذخیره سازی را محدود کنید.
رمز ها را میتوان در زمان های مختلف و بسته به نوع نیاز تغییر داد. کیف پول های HD فقط این نوع گذرواژه ها را ذخیره می کنند.
کیف پول های غیر قطعی برای هر بار استفاده رمز جدیدی تولید می کنند و باید همه آن ها را ذخیره کنند. موجودی کیف پول های غیر قطعی را نمی توان به راحتی به کیف پول دیگری منتقل کرد زیرا پشتیبان گیری های آنان با یکدیگر سازگار نیستند.
ویژگی های امنیتی کیف پول دیجیتال
ویژگی های امنیتی اصلی یک کیف پول دیجیتال، شامل تولید، ذخیره و استفاده صحیح از این گذرواژه ها است.
سطوح مختلفی از امنیت در برابر انواع مختلف تهدید وجود دارد:
- محافظت در برابر حملات evil maid
مهاجمی که به طور موقت به کیف پول شما دسترسی دارد، و نباید بتواند یک راه خروجی جدید را به کیف پول اضافه کند تا برای هکِ پین کد یا سوالات حفاظتی رمز عبور از آن استفاده نماید. - مواد لازم برای رمزنگاری امن
رمز ها و دیگر عبارات امنیتی تولید شده هرگز نباید ساده و قابل پیش بینی باشند. علاوه بر این، آگاهی از نحوه رمز گذاری که در یک مقطع زمانی ایجاد می شود، اجازه نمی دهد رمزی که در آینده ساخته می شود، پیش بینی گردد. - حفاظت در حالت سکون
اگر هکر داده های مربوط به کیف پول نرم افزاری را به دست آورد، در حالت استفاده نکردن از کیف پول نباید قادر به هک رمز ها باشد. - محافظت در هنگام استفاده مخفیانه
هنگامی که کیف پول در حال اسفاده است، رمز ها نباید توسط مهاجم یا بدافزار قابل دسترسی باشند.
کیف پول های سخت افزاری
مدل امنیتی کیف پول دیجیتال سخت افزاری با هدف از بین بردن این تهدیدات امنیتی بنیان گذاری شده است. کیف پول های سخت افزاری با طراحی امنیتی ویژه، از خودشان در برابر بدافزار ها محافظت می کنند.
آن ها دستگاه های مستقلی هستند که می توانند به تنهایی معاملات را انجام دهند. اطلاعات رمزنگاری همیشه در داخل دستگاه می مانند و هرگز به نرم افزاری که با آن ارتباط برقرار می کنند ارسال نمی شوند.
رابط ارتباطی همیشه ساده است که این موضوع سطح حملات را به شدت کاهش می دهد. این رابط می تواند USB، Micro SD یا QR کد باشد.
علاوه بر این، کیف پول دیجیتال سختافزاری صفحه ای را مستقیماً در دستگاه تعبیه میکند که به کاربر این امکان را میدهد تا اقداماتی را که قرار است در هنگام تعامل با رمز های مخفی خود انجام دهد، تأیید کند. این بررسی های دستی روی دستگاه ها، یک اقدام بسیار کارآمد در برابر حملات بد افزار ها در انواع سیستم های رایانه یا موبایل است.
حالتی را در نظر بگیرید که بد افزار موجود در رایانه یا تلفن همراه، توانسته به رمز عبورهای کیف پول دیجیتال سخت افزاری دسترسی پیدا کند. در این حالت می تواند آدرس یا موجودی حساب کاربر را تغییر دهد. با این وجود، اگر این اقدام همزمان با انجام تراکنش توسط کاربر باشد؛ ناموفق خواهد بود.
کیف پول های سخت افزاری برای محافظت در برابر حملات evil maid و در برابر هکر هایی با دسترسی فیزیکی طراحی شدهاند. بسته به نوع کیف پول سخت افزاری، سطوح امنیتی متفاوتی وجود دارد، اما در همه موارد این کیف پول ها در برابر تهدیدات ذکر شده ایمن سازی شده اند.
کیف پول های نرم افزاری
کیف پول های نرم افزاری غالبا به وسیله ابزارهای مختلف از گذرواژه ها محافظت می کنند. بسته به مکانیستم سیستم عاملِ انتخاب شده این گذرواژه ها می توانند پین یا رمز عبور باشند.
در ادامه کیف پول های دسکتاپ مانند ویندوز، macOS، لینوکس و کیف پول موبایل مورد بررسی قرار گرفته است. تفاوت های اصلی بین آنها بیشتر به مکانیسم های امنیتی ارائه شده توسط سیستم عامل بستگی دارد.
کیف پول های نرم افزاری روی کامپیوتر
چندین کیف پول محبوب مانند Electrum، Exodus، Atomic یا Bitcoin core بر روی کامپیوتر اجرا می شوند.
در رایانه، مکانیسم های امنیتی ارائه شده توسط سیستم عامل، برای جدا سازی فرآیند کیف پول دیجیتال از سایر فرآیندها، محدود است. اکثر برنامه ها توسط یک کاربر اجرا می شوند و برنامه ها مجاز به خواندن داده های برنامه های دیگر نیز هستند.
امنیت این کیف پول های نرمافزاری عمدتاً بر امنیت رمز عبوری است که از آن ها محافظت میکند و همچنین با تکیه بر این واقعیت که هیچ بد افزاری روی سیستم عامل اجرا نمیشود. (که البته تضمین این موضوع بسیار دشوار است)
بیشتر اوقات، دانه در یک محفظه رمزگذاری شده ذخیره می شود که با یک رمز عبور محافظت می شود. یک حمله ساده برای یک بدافزار یا یک ابزار مدیریت راه دور، برای بازیابی این ظرف رمزگذاری شده و ارسال آن به مهاجم است. سپس رمز عبور را می توان به صورت brute-forced یا با استفاده از کی لاگر به دست آورد.
در سناریویی که مهاجم فقط میتواند به محفظه رمزگذاریشده دسترسی پیدا کند (مهاجم یک کلید USB حاوی کیف پول را پیدا میکند، یا بدافزار را روی رایانه نصب میکند، اما قربانی هرگز برنامه کیف پول خود را باز نمیکند)، مهاجم مجبور است رمز عبور را به زور اعمال کند.
اکثر رمزهای عبور بد هستند. میلیاردها رمز عبور در وب وجود دارد که به بیرون درز کرده است و بسیاری از افراد تمایل دارند از رمز عبور خود برای چندین سرویس استفاده مجدد کنند. ابزارهای آماده به شما این امکان را می دهند که رمزهای عبور کیف پول ارزهای دیجیتال مانند btcrecover یا hashcat را بازیابی کنید. گذرواژهها میتوانند پیچیده باشند، اما پشت هر کیف پول پول واقعی وجود دارد، از این رو مهاجمان از سرمایهگذاری منابع برای شکستن چنین رمزهای عبور دریغ نمیکنند.
دو اصل اساسی امنیتی برای ایمن نگه داشتن رمزهای عبور استفاده از مدیر رمز عبور و استفاده مجدد از رمز عبور برای اهداف مختلف است.
نگرانکنندهترین تهدید برای کیف پولهای نرمافزاری، بدافزارها و دزدان اختصاصی هستند که به طور خاص برای تخلیه وجوه شما ایجاد شدهاند. چنین بدافزارهایی مانند KPOT یا ElectroRAT حتی نیازی به bruteforce رمز عبور شما ندارند: آنها می توانند مستقیماً آن را هنگام ورود به آن ضبط کنند، داده های پیکربندی کیف پول را رمزگشایی کرده و دانه را استخراج کنند.
در اینجا یک برنامه اسباببازی است که برای این مقاله توسعه یافته است که کیف پول Electrum را هدف قرار میدهد (اگرچه میتوانست یک کیف پول نرمافزاری دیگر باشد). این نرم افزار بدافزاری را شبیه سازی می کند که رمز عبور کاربر را هنگامی که قربانی وارد می کند سرقت می کند. رمز عبور سپس برای رمزگشایی داده های کیف پول و نمایش دانه استفاده می شود:
همانطور که می بینید، حتی اگر رمز عبور پیچیده باشد، برنامه می تواند آن را بازیابی کند، زیرا به طور مستقیم آن را در حافظه بو می کند.
این مثال بسیار شبیه کمپینهای بدافزار SCR اخیر است که برای سرقت ارزهای دیجیتال استفاده میشود. مجرمان از تکنیک های مهندسی اجتماعی برای فریب کاربران برای دانلود یک محافظ صفحه نمایش مخرب استفاده کردند. این محافظ صفحه در واقع اطلاعات قربانی رایانه از جمله اطلاعات کیف پول و تبادل ارزهای دیجیتال را می دزدید.
برای نتیجه گیری در مورد کیف پول های نرم افزاری که روی رایانه اجرا می شوند:
در بیشتر موارد کیف پولهای نرمافزاری که روی رایانهها اجرا میشوند، با استفاده از رمز عبور، از نسل کاربر محافظت میکنند.
کنترل دسترسی برای این فایل های کیف پول عمدتاً به امنیت رایانه بستگی دارد. در عمل، محافظت از رایانه ها در برابر بدافزارها دشوار است، و با تبدیل شدن ارزهای دیجیتال به جریان اصلی، حملات علیه کیف پول ها پیچیده تر و پیچیده تر می شوند.
استفاده از چنین کیف پول های نرم افزاری برای ایمن سازی دارایی های دیجیتال ایده خوبی نیست. هر بدافزار تخصصی میتواند فایلهای کیف پول را دریافت کند و گذرواژهها را بهصورت آفلاین پیدا کند، یا رمز عبور را از طریق یک کی لاگر دریافت کند.
کیف پول های نرم افزاری در گوشی های هوشمند
تلفن های هوشمند اندروید و iOS به طور پیش فرض ویژگی های امنیتی را ارائه می دهند که به طور گسترده در سیستم عامل های دسکتاپ استفاده نمی شود.
سیستمعاملهای موبایل محافظت از دادههای اپلیکیشن و کاربر را ارائه میکنند. به طور خاص، جعبههای سندباکس برنامه برای همه برنامهها اجباری است. به عنوان مثال، در ویندوز اینطور نیست: به طور پیش فرض، هر برنامه ای می تواند به داده های کاربر دسترسی داشته باشد.
بنابراین، یک برنامه مخرب نمی تواند داده ها را از یک برنامه دیگر بخواند، مگر اینکه:
یک آسیب پذیری در آن برنامه پیدا می کند.
یا میتواند امتیازات را افزایش دهد، برای مثال با سوء استفاده از یک آسیبپذیری هسته که به آن اجازه دسترسی ریشه به سیستم را میدهد.
متاسفانه چنین حملاتی وجود دارد. آنها در نسخههای قدیمی Android و iOS و در دستگاههای قدیمی یا ارزانتر که کد شخص ثالث اغلب امنیت کمتری دارند، بسیار آسانتر هستند.
در یک سیستم عامل به روز، این حملات سخت تر هستند اما از راه دور غیر قابل اجرا نیستند. به عنوان مثال، ایان بیر در دسامبر 2020 یک حمله صفر کلیک بسیار چشمگیر را به iOS 13.5 نشان داد. گوانگ گونگ یک زنجیره بهره برداری برای روت کردن از راه دور طیف گسترده ای از دستگاه های اندرویدی مبتنی بر کوالکام در ژوئن 2020 ارائه کرد. و دو هفته پیش، داستان های ممنوعه پرده برداری کرد که گروه NSO از یک زنجیره بهره برداری برای هدف قرار دادن دستگاه های iOS و Android اخیر با استفاده از آسیب پذیری های 0 روزه استفاده کرده است.
مهاجمان کمتر پیچیده می توانند از آسیب پذیری های محلی استفاده کنند که به آنها امکان می دهد داده های کیف پول را از یک برنامه مخرب استخراج کنند. کارگزاران آسیبپذیری مانند Zerodium تا 200,000 دلار برای افزایش امتیاز برای روت کردن در اندروید و iOS پرداخت میکنند، اما تا 1,500,000 دلار برای حملات از راه دور.
ما چند کیف پول Android/iOS را مطالعه کردیم. امنیت آنها به خود برنامه و همچنین به ویژگی های امنیتی سیستم عامل اصلی بستگی دارد. البته زمانی که امنیت سیستم عامل از بین برود، برنامه دیگر امن نیست
معمولاً از دو روش برای محافظت از کلمات کلیدی استفاده می شود:
حفاظت از رمز عبور – داده های کیف پول با رمز عبور وارد شده توسط کاربر محافظت می شود. طراحی مانند کیف پول های دسکتاپ است. در عمل، استخراج دادهها سختتر از رایانه است، زیرا به دلایلی که در بالا توضیح داده شد، بازیابی اطلاعات برنامه از یک برنامه مخرب از نظر فنی دشوارتر است. با این حال، بازیابی رمز عبور پس از سرقت داده ها در عمل آسان تر است: وارد کردن رمزهای عبور پیچیده در تلفن های همراه خسته کننده است، از این رو کاربران تمایل دارند رمزهای عبور ساده تر را انتخاب کنند. علاوه بر این، مکانیسمهای مشتق کلید (که برای ایجاد کلید از رمز عبور استفاده میشود) در دستگاههای تلفن همراه معمولاً سادهتر شکسته میشوند، زیرا اغلب به دلایل عملکرد سبکتر هستند.
Coinomi و Metamask نمونه هایی از این کیف پول ها هستند.
امنیت مبتنی بر Android Keystore (یا iOS Keychain) – در این مورد، داده های کیف پول با یک کلید رمزگذاری ذخیره شده در فروشگاه کلید اندروید (iOS Keychain) رمزگذاری می شود. این سرویس ها در ابتدا برای ذخیره ایمن کلیدهای رمزگذاری طراحی شدند و بسیاری از برنامه ها از آنها برای تولید کلیدی استفاده می کنند که تمام داده های حساس کاربر را رمزگذاری می کند.
برنامه از Keystore می خواهد که یک کلید رمزگذاری برای یک شناسه داده شده ایجاد کند. Keystore کلید را تولید می کند و آن را ایمن ذخیره می کند.
هنگامی که برنامه می خواهد یک لکه را رمزگذاری یا رمزگشایی کند، حباب را به همراه شناسه کلید به Keystore می فرستد.
در نهایت، فروشگاه کلید بررسی می کند که آیا برنامه واقعاً حقوق استفاده از این کلید را دارد یا خیر و سپس داده های خروجی را به برنامه ارسال می کند.
با این مدل، برنامه نمی تواند ارزش کلید را بداند اما می تواند از آن استفاده کند. همچنین میتوان کنترلهای دسترسی اضافی را به کلید مرتبط کرد: برای مثال، دسترسی کلید را میتوان به احراز هویت کاربر (درخواست پین یا الگوی باز کردن قفل) مشروط کرد.
این مکانیسم می تواند امنیت بیشتری را در مقایسه با حفاظت مبتنی بر رمز عبور ایجاد کند. در واقع، در تلفنهای اخیر، Keystore توسط یک محیط اجرای مورد اعتماد (TEE) یا گاهی اوقات یک عنصر امن پشتیبانی میشود.
این بدان معناست که یک مهاجم با امتیازات ریشه نمی تواند کلیدهای رمزگذاری را از فروشگاه کلید استخراج کند. با این وجود، آنها می توانند از Keystore به عنوان یک اوراکل رمزگشایی استفاده کنند و هر داده ای را که می خواهند رمزگذاری یا رمزگشایی کنند.
Keystore خدمات رمزگذاری و امضا را نیز ارائه می دهد. بنابراین، آیا یک کیف پول می تواند از کلیدهای رمزگذاری خود محافظت کند و استخراج آنها را دشوار کند؟ پاسخ متأسفانه منفی است: کیف پولهای نرمافزاری از Keystore برای امضای تراکنشها استفاده نمیکنند و کلیدهای خصوصی همیشه به صورت متن ساده توسط برنامه دستکاری میشوند.
این به یک دلیل ساده است: KeyStore و KeyChain خدمات امضا و رمزگذاری عمومی را ارائه میکنند، اما از رمزنگاری مورد استفاده در ارزهای دیجیتال پشتیبانی نمیکنند. به عنوان مثال، KeyStore امضای ECDSA را اجرا می کند اما فقط در منحنی های NIST تعریف شده در FIPS 186-4 (P-224، P-256، P-384 و P-521). بیت کوین از منحنی دیگری به نام secp256k1 استفاده می کند که هنوز پشتیبانی نمی شود.
به طور خلاصه، Keystore و Keychain خدمات خوبی برای محافظت از کلیدهای مخفی و خصوصی هستند. آنها میتوانند با رمزگذاری دادههای حساس مقداری امنیت ارائه دهند: برخی از کلاسهای آسیبپذیری (مثلاً خواندن فایل دلخواه) توسط رمزگذاری Keystore شناسایی میشوند. با این حال، اگر افزایش امتیاز ریشه برای استخراج مقادیر کلید از یک Keystore سخت افزاری کافی نباشد، رمزگشایی داده های حساس کافی است. مهاجمی که بتواند برنامه را ابزار کند، میتواند اسرار آن را بازیابی کند.
نتیجه گیری در مورد کیف پول دیجیتال موبایل
مکانیسم جدا سازی بین برنامه های ارائه شده توسط iOS/Android در مقایسه با کیف پول دیجیتال نرم افزاری که روی رایانه اجرا میشود، سطح امنیت را افزایش می دهد. هکر برای دسترسی به داده های برنامه ابتدا به دانستن اطلاعات کاربر نیاز دارد. این موضوع در دستگاه های قدیمی امکان پذیر است.
هکران ماهر مانند Ian Beer (که این کار را در طول 6 ماه به تنهایی انجام داد) می توانند این کار را در دستگاه های جدید نیز انجام دهند.
استفاده از خدمات حفاظت از کلید واژه نیز می تواند یک لایه امنیتی بیشتر برای محافظت از رمز ها در حالت استندبای ایجاد کند. با این وجود، از آن جایی که آنها از الگوریتم های رمز نگاری برای برنامه های ارز های دیجیتال پشتیبانی نمیکنند، رمز همچنان قابل هک کردن است.
به طور کلی یک هکر با دست یابی به اطلاعات اولیه کاربر می تواند حتی در حالتی که از برنامه استفاده نمی شود آن را هک کند و به عنوان کاربر اصلی وارد برنامه شده و کیف پولش را خالی کند.
یک نمونه دیگر از جاسوس افزار ها هستند که کیف پول دیجیتال بلاک چین را هدف خود قرار می دهند. این برنامه از راه دور روی دستگاه شما نصب شده و هنگامی که با استفاده از اثر انگشت احراز هویت می کنید و برنامه در گوشی شما باز می شود؛ کلیه اطلاعات مربوط به نام کاربری و رمز عبور حسابتان را استخراج کرده و به این ترتیب تمام داده های شما رمزنگاری می شوند.
جاسوس افزار (بدافزار) برنامه ای است که برای رمز نگاری کیف پول دیجیتال و دیگر برنامه های مهم استفاده می شود و تمام اطلاعات و داده های کاربر را برای یک سرور دیگر میفرستد. لازم به ذکر است که این کار می تواند روی بسیاری از کیف پول های دیگر نیز انجام شود.
نتیجه کیف پول دیجیتال
به عنوان نتیجه گیری پایانی، کیف پول های نرم افزاری دارای سطوح مختلف امنیتی هستند. با این حال، مدل تهدید آن ها مورد بدافزاری که در سیستم عامل با افزایش امتیاز اجرا می شود را پوشش نمی دهد. این اتفاق بر اساس طراحی آن رخ می دهد: برنامه کیف پول دیجیتال نمی تواند امن تر از سیستم عاملی باشد که روی آن اجرا می شود.
مکانیسم جدا سازی بین برنامه های ارائه شده توسط iOS/Android در مقایسه با کیف پول نرمافزاری که روی رایانه اجرا میشود، سطح امنیت را افزایش میدهد. بنابراین هکر (مهاجم) برای دست یابی به این داده ها در ابتدا نیاز به اطلاعات اولیه دارد.
خدمات حفاظت از کلید واژه می توانند یک لایه امنیتی بیشتر برای محافظت از رمز های شما در حالت عادی ایجاد کند. با این حال، از آن جایی که آنها از الگوریتم های رمزنگاری برای برنامه های ارز دیجیتال پشتیبانی نمی کنند، کلید ها باید مستقیماً از برنامه دستکاری شوند، بنابراین محافظت محدودی ارائه می دهند.
در همه موارد، یک مهاجم با دسترسی ریشه، میتواند در حالت استراحت، زمانی که از آن استفاده میشود، seed را بازیابی کند، یا از حقوق کاربر برای خالی کردن کیف پول با استفاده از کیف پول نرمافزار به عنوان اوراکل استفاده کند.