امنیت اتریوم؛ همه چیز درباره لایه های امنیتی بلاکچین Ethereum
فناوریهای جدیدی که بر مبنای بلاکچین ایجاد میشود، اگر به قیمت از دست رفتن امنیت شبکه باشد کارایی چندانی ندارد. در ۳۰ آوریل ۲۰۱۶، DAO یک صندوق سرمایه = گذاری غیرمتمرکز بر روی شبکه اتریوم راه اندازی کرد. کمتر از دو ماه بعد حسابهای این صندوق مورد حمله هک قرار گرفت و بیش از ۶۰ میلیون دلار اتر در یک لحظه ناپدید شد. حوادثی از این دست این سوال را ایجاد میکند که امنیت اتریوم در چه حدی است؟ اما این سوال مبهم است! پرسیدن اینکه آیا اتریوم امن است مانند پرسیدن این سوال است که آیا برنامههای کامپیوتری ایمن هستند یا خیر. اگر میخواهید سؤال معنیدار باشد، باید آنرا دقیقتر مطرح کنید. ابتدا باید بدانید فرایند ارز دیجیتال اتریوم چیست؟ اتریوم به خودی خود امنتر از آن چیزی است که فکر میکنید، اما استفاده از یک برنامه یا صرافی غیرمتمرکز که به درستی پیاده سازی نشده باشد میتواند سرمایه شما را در معرض خطر قرار دهد. برای درک بهتر مسائل امنیت اتریوم و قراردادهای هوشمند آن، این مطلب را تا انتها دنبال کنید.
امنیت اتریوم در فرآیند تراکنشهای شبکه چگونه حفظ میشود؟
اتریوم یک بلاکچین مانند بیتکوین است. استخراج کنندگان آن مشکلات پیچیده محاسباتی را حل میکنند تا بلاکهای جدیدی به دفتر کل تراکنشها اضافه شود. مفهوم اصلی یک بلاکچین این است که هیچ کس نمیتواند کنترل شبکه را در دست بگیرد یا بلوکهای تقلبی را به زنجیره اضافه کند مگر اینکه اکثریت قدرت محاسباتی شبکه را کنترل کند. مشوقهای اقتصادی که اتریوم برای استخراجکنندگان خود فراهم میکند شامل پاداش استخراج بلوک در کنار کارمزد تراکنشها، ماینرها را تشویق میکند در راستای تخریب منافع شبکه عمل نکنند. از آنجایی که شبکه غیرمتمرکز است، نقاط مرکزی مانند سرور وجود ندارد که حمله به آن بتواند تعداد زیادی از کاربران شبکه را در یک لحظه به خطر بیندازد. اما عملکرد بلاکچین اتریوم در این مسیر با بیتکوین متفاوت است. اتریوم چیزی بیش از یک دفتر کل غیرمتمرکز است که تنها قادر به ثبت موجودی حساب است. این شبکه یک محیط اجرایی به نام ماشین مجازی اتریوم (EVM) بر روی بلاکچین پیاده سازی میکند. در نتیجه ارسال یک پیام یا تراکنش در شبکه، گرههای شبکه کدی را که در EVM فراخوان شده را اجرا میکنند. هر اجرا با هزینه مشخصی همراه است که در واحد گس بیان میشود.
به لطف قراردادهای هوشمند صنعت جدیدی از خدمات مالی در حال ظهور است که DeFi (مالی غیرمتمرکز) می نامیم. پروژههای DeFi خدمات مالی مانند قرض دادن، استقراض، مبادلات و غیره را به شیوهای جدید ارائه میدهند. نوع جدیدی از رابطه را با کاربران خود برقرار میکنند که برای استفاده از آن نیازی به اعتماد به سرویس واسطهای ندارند و کاربران آنها همیشه شخصا کنترل سرمایهشان را حفظ میکنند.
بلاکچین اتریوم زنجیره بلوکی است که همه چیز را از DApps گرفته تا ICO را ممکن میکند. بنابراین، وقتی میپرسید امنیت اتریوم در چه حدی است؟ باید در ادامه به سؤال دیگری پاسخ دهید: آیا در مورد امنیت بلاکچین اصلی اتریوم صحبت میکنید یا منظور شما امنیت قراردادهای هوشمند ساخته شده بر روی اتریوم است؟ اغلب، مردم به یک هک خرابکارانه که نتیجه مشکل قراردادهای هوشمند است توجه میکنند و استنباط میکنند که امنیت تتر بر روی خود بلاکچین اتریوم ناامن است. این یک استنباط اشتباه است. بسیاری از مشکلات امنیت اتریوم به زیرساخت قراردادهای هوشمند مربوط میشود. در مقابل بلاکچین اتریوم در طول زمان ثابت کرده است که نسبتاً قابل اعتماد است. برای دریافت تصویر کامل از آنچه برای امنیت اتریوم لازم است، باید ساختار بلاکچین و قراردادهای هوشمند را به صورت جداگانه بررسی کنیم.
تاثیر قراردادهای هوشمند بر امنیت اتریوم
در فناوری ارزهای رمزنگاری شده بین انعطافپذیری و امنیت رابطه معکوس وجود دارد. هرچه آزادی بیشتری در توسعه بلاکچین داشته باشیم، خطر هک بیشتری بوجود میآید. در سال ۲۰۱۶، Nicola Atzei، Massimo Bartoletti و Tiziana Cimoli دوازده آسیب بالقوه اتریوم را بیان کردند که از این ۱۲ مورد، ۶ مورد مشکلات مربوط به زبان برنامه نویسی Solidity بودند، ۳ مورد دیگر در EVM و ۳ مورد دیگر در Blockchain بودند. آنها نشان دادند که بیشتر آسیب پذیری اکوسیستم و امنیت اتریوم مستقیماً از زبان برنامه نویسی آن ناشی میشود.
زبانهای برنامهنویسی اتریوم خصوصاً برجستهترین آنها یعنی Solidity با انعطافپذیری در کاربری طراحی شدهاند. Solidity بسیار شبیه جاوا اسکریپت است، به علاوه عملکردهای خاص دامنه مانند ضبط رونوشتها در یک بلاکچین عمومی. برخلاف بیتکوین که زبان برنامهنویسی آن عمداً برای ارائه یک عملکرد محدود به عنوان یک ذخیره دیجیتال ارزش و پول نقد دیجیتال، تعریف شده است، اتریوم به توسعهدهندگان این امکان را میدهد تا تقریباً هر نوع DApp یا توکنی را بسازند. این انعطافپذیری منجر به بسیاری از نقضهای امنیت اتریوم شده است. قرارداد حتی اگر با استفاده از بهترین شیوهها و مستندات این زبان دقیقاً کدگذاری شده باشد، در برابر حمله آسیبپذیر باقی میماند. این در واقع یک نقص یا سوء استفاده در خود قرارداد نیست، از نظر فنی EVM طبق برنامه عمل میکند، اما Solidity نقصهای امنیتی را در قراردادها وارد میکند که نادیده گرفته میشود. جالب اینجاست که این آسیبپذیری ممکن است صرفاً به دلیل انعطافپذیری زبان نباشد، بلکه به این دلیل است که مهارتهای معنایی آن کار را برای برنامهنویسان با تجربه دشوار کرده است. تصور کنید سعی میکنید زبانی را با کلماتی مشابه انگلیسی، اما با گرامر بسیار متفاوت یاد بگیرید: از بسیاری جهات، این میتواند سختتر از یادگیری یک زبان کاملاً خارجی باشد، زیرا دائماً مجبور به مبارزه با ناخودآگاه خود هستید.
شرایط قراردادهای خودکار مستقیماً در کد آنها منعکس شده است. قراردادهای هوشمند هنوز در حال بلوغ هستند و مطمئناً قبل از بلوغ کامل فضا، مشکلات بیشتری برای امنیت اتریوم وجود خواهد داشت. مستندات آسیبهای شناخته شده در قرارداد هوشمند از طریق منبع مختلفی از جمله اسناد رسمی، مقالات تحقیقاتی، و همچنین انجمنهای گفتگوی اینترنتی منتشر شده است. حتی با وجود سازمانها و منابع متمرکز که به طور فزایندهای در کنار اتریوم رشد میکنند، یادگیری نوشتن قراردادهای هوشمند نیاز به جستجو در طیف گستردهای از وبسایتها و اتاقهای گفتگو دارد. این امر تسلط بر این رشته را که در حال تکامل دائمی است، چالش برانگیز میکند. PeckShield یک شرکت مشاوره امنیت بلاکچین است که باگهای قراردادهای هوشمند اتریوم را شناسایی کرده و منتشر میکند.
امنیت اتریوم در ارتباط با زنجیره های جانبی
شبکههای لایه دو به طور فزایندهای گسترش پیدا میکنند. شبکههای لایه دو از بلاکچین اتریوم متمایز هستند و تلاش میکنند تا بخشی از فشار محاسباتی بلاکچین اصلی را کاهش دهند تا شبکه مقیاسپذیرتر شود. ولی از طرف دیگر با پیچیدهتر شدن مسائل ابعاد امنیتی متمایزی را با نگرانیهای خاص نسبت به امنیت اتریوم اضافه میکنند. شبکههای لایه دو اگر امنیت را در این فرآیند به خطر بیندازند، پیشرفتی در اتریوم نخواهند داشت.
امنیت اتریوم ۲
اتریوم در حال تغییر مکانیسم اجماع شبکه خود از استخراج اثبات کار به استخراج اثبات سهام است. در مدل دوم، گرههای اعتبارسنج در شبکه به نوبت بلوکها را پیشنهاد و تایید میکنند. وزن یک گره و اندازه پاداش آن بر اساس تعداد کوینهایی است که گره در اختیار شبکه قرار داده است. البته این تغییر پس از مرحلهای به نام بمب سختی اتریوم و ایجاد یک هارد فورک در شبکه اتریوم شکل خواهد گرفت. دلیل خوبی وجود دارد که اثبات سهام میتواند امنیت اتریوم را ارتقا دهد. برای در دست گرفتن کنترل یک بلاکچین مبتنی بر الگوریتم اثبات کار، باید ۵۱ درصد از قدرت محاسباتی را در دست داشت. از سوی دیگر، برای به دست گرفتن کنترل یک بلاکچین اثبات سهام، باید ۵۱ درصد از تمام سکههایی را که در آن استیک میشوند، کنترل کنید. کنترل این مقدار ETH بسیار گرانتر از کنترل توان محاسباتی است.
البته سؤالات زیادی وجود دارد برای اینکه بتوانیم با اطمینان بگوییم که آیا امنیت اتریوم بهبود مییابد یا خیر. به عنوان مثال در حال حاضر، بسیاری از افراد اتر ETH و سایر ارزهای دیجیتال خود را مستقیماً در صرافیها نگه میدارند تا معاملات را به سرعت انجام دهند. با ارتقا شبکه به اتریوم ۲ اگر موانع وجود نداشته باشد، صرافیها میتوانند اتر کاربران خود را برای کسب سود منفعلانه در شبکه سپرده کرده و درنتیجه سرمایه آنها را به خطر اندازند. علاوه بر آن اگر صرافیها دارای مشکلات امنیتی باشند و امنیت اتریوم به خطر بیفتد، میتواند منجر به آسیبپذیریهای گستردهتر در کل بلاکچین اتریوم شود. مگر آنکه صرافیها به صراحت سیاستهایی را اتخاذ و اجرا کنند که آنها را از انجام این کار باز دارد و همواره برای امنیت اتریوم تلاش کنند.
ضرورتهای عملی برای حفظ امنیت اتریوم
میران دانش شما از فناوری بلاکچین مهمترین ضامن برای امنیت دارایی شما در کریپتو خواهد یود. برای امنیت اتریوم خود نیاز است که در مورد «تراکنشها»، «آدرسهای عمومی»، «کیف پول»، «عبارات اولیه» و «هزینه گس» اطلاعات کافی کسب کنید. اگر از درک فعلی خود از کیف پول، قراردادهای هوشمند و DeFi اطمینان دارید، میتوانید شروع کنید. علیرغم توسعه خدمات مالی غیر متمرکز هنوز افراد زیادی از طریق شخص ثالث به داراییهای کریپتو دسترسی دارند که این فرآیند منجر به هک و از دست دادن سرمایه میشود. استفاده از خدمات نگهبانی مانند کیف پول صرافی برای ذخیره داراییها ریسک طرف مقابل را ایجاد میکند.
بنابراین قبل از خرید ETH در یک DAPP خاص، تا آنجا که می توانید تحقیق کنید.
- کد را به دقت بخوانید.
- به آنچه مردم در مورد آن در شبکههای مجازی مانند Reddit میگویند گوش دهید.
- سابقه آن را بررسی کنید که آیا در گذشته نقض امنیتی داشته است یا خیر.
حفظ امنیت اتریوم در تراکنشها
لازم است بدانید دو نوع آدرس در اتریوم وجود دارد. هر دو نوع آدرس میتوانند توکنهای بر پایه ERC-20 را ذخیره کنند:
- حسابهای پایه (EOA): حسابهایی که تحت مالکیت خارجی اداره میشوند، این حسابها توسط کلیدهای خصوصی کنترل میشوند.
- حسابهای قرارداد یا کیف پول قرارداد: این حسابها در واقع قراردادهای هوشمندی هستند که میتوانند کد را ذخیره و اجرا کنند. برای تعامل با قراردادهای هوشمند باید با یک آدرس تماس برقرار کرد. Ethereum Name Service – ENS سرویسی است که آدرسها را نگهداری میکند. برای استفاده از این عملکردها باید به شبکه پول پرداخت کنید.
توصیه میشود هنگام ارتباط با قرارداد هوشمند، پیام تراکنش را پیش از امضا کردن بخوانید. بهاندازهای که برای تراکنش نیاز است، محدودیت خرج کردن وضع کنید. وقتی با قراردادهای هوشمند تعامل میکنید، اجازهی خرج کردن نامحدود را به آنها ندهید. خرج کردن نامحدود میتواند به قرارداد هوشمند امکان دهد تمام کیف پول شما را خالی کند.
امنیت اتریوم در کیف پول های رمزنگاری
یک کیف پول رمزنگاری، درست مانند یک کیف پول معمولی، برای ذخیره داراییها استفاده میشود.
معمولاً با استفاده از یک جفت کلید به داراییهای ذخیره شده در کیف پول خود دسترسی پیدا میکنید:
- کلید عمومی شناسه است و تنها چیزی است که برای دریافت دارایی نیاز دارید.
پیش از ارسال تراکنش، صحت آدرس عمومی مقصد را دوباره بررسی کنید. فرستادن ارز رمزنگاری شده به آدرس کیف پول نادرست، اشتباهی رایج است.
لطفاً به خاطر داشته باشید که تمام اطلاعات ذخیره شده در بلاکچین اتریوم به صورت عمومی و شفاف هستند. اگر برای شخصی پول ارسال کنید، او میتواند وضعیت کیف پول شما مانند داراییهای شما و تراکنشهای قبلی شما را ببیند و امنیت اتریوم شما را به خطر بیندازد. هر کسی که به آدرس کیف پول شما دسترسی داشته باشد میتواند این اطلاعات را دریافت کند. برای حفظ حریم خصوصی ضروری است راه حلهای اختصاصی دیگری را بررسی کنید. از آنجایی که تمام اطلاعات مربوط به بلاکچین اتریوم عمومی است، میتوانید از یک سرویس برای پیگیری فعالیت آدرس خود یا هرکس دیگر استفاده کنید. رایجترین مورد اتراسکن است. با Etherscan، میتوانید به تاریخچه تراکنشهای هر آدرس عمومی دسترسی پیدا کنید. میتوانید فعالیت کل شبکه را نیز به لطف سرویسهایی مانند EthStats یا EthViewer تصویر کنید. اگر میخواهید یک نمایش بصری جذاب تر داشته باشید میتوانید CryptoLights را بررسی کنید.
هنگام به اشتراک گذاری آنلاین آدرسهای عمومی خود مراقب باشید. اگر نیاز دارید آدرسی را به صورت عمومی پست کنید برای مثال برای پذیرش کمکهای مالی، به شما توصیه میکنیم یک آدرس عمومی جدید برای آن هدف خاص ایجاد کنید. در نهایت، در مورد داراییهای خود هوشمند باشید، به طور کلی ایده بدی است که اطلاعات خاصی را در مورد داراییهای رمزنگاری خود به خصوص به صورت آنلاین به اشتراک بگذارید. با به اشتراک گذاشتن جزئیات در مورد دارایی های خود، حساب خود را در هدف هکرها قرار میدهید.
- کلید خصوصی برای ارسال داراییها لازم است.
کلیدهای خصوصی مانند رمزهای عبور هستند. برای ساده تر به خاطر سپردن آنها، به صورت عبارت seed تولید میشوند. هیچگاه به هیچ دلیلی کلید خصوصیتان را بهاشتراک نگذارید! هر کسی که به آن عبارت دسترسی دارد میتواند فوراً تمام داراییهای شما را به آدرس دیگری منتقل کند. بنابراین حفظ آن مهمترین وظیفه شماست. مطمئنترین راه آن است که عبارت seed خود را در دو نسخه روی کاغذ نوشته و در مکانهای فیزیکی مختلف ذخیره کنید. از ایجاد هرگونه اسکرینشات یا کپی دیجیتالی آن خودداری کنید. آنها روی فضای ابری بارگذاری نکنید، به دست آوردن کلید خصوصی از فضای ابری یک مسیر حملهی متداول برای هکرها است. اگر از کیف پول موبایلی استفاده میکنید، مطمئن شوید که برنامهای که استفاده میکنید عبارت seed شما را در یک قسمت امن ذخیره میکند. بسته به نوع کیف پولی که استفاده میکنید، معمولاً نوع دومی از احراز هویت، مانند بیومتریک یا پینکد دارید. چنین کلیدهایی به آدرس شما متصل نیستند، بلکه مختص اپلیکیشن کیف پولی هستند که برای تعامل از آن استفاده میکنید. از دست دادن این کلیدها تا زمانی که هنوز به عبارت seed خود دسترسی دارید، منجر به از دست دادن سرمایه نمیشود.
توصیههای امنیتی
بلاکچینها یک تغییر پارادایم اساسی را در بر میگیرند. برای اولینبار سیستمی داریم که به افراد امکان میدهد بدون نیاز به اشخاص ثالث و قابل اعتماد، داراییهای خود را فورا به سراسر جهان ارسال و دریافت کنند. این سیستم مزایای زیادی دارد، از جمله پتانسیل برای از بین بردن فعالیتهایی که در حال حاضر به دلیل واسطهها پرهزینه و غیرضروری هستند. با این حال، استفاده از چنین مزایایی تنها در صورتی امنیت دارد که کاربر همیشه مسئولیت وجوه خود را بپذیرد. بدون آن، خطرات موجود در دنیای مالی را به دنیای ارزهای دیجیتال وارد میکنیم. استفاده از ارزهای رمزنگاریشده میتواند هیجانانگیز و جذاب باشد، ولی در عین حال ریسکهای خاص خود را دارد. با گسترش کاربرد ارزهای رمزنگاریشده، یادگیری روشهای استفاده از آنها ضروری است.
- افزونههای مرورگر را پاک کنید. اکثر افزونههای مرورگرها برای «خواندن و تغییر دادههای سایت» دسترسی میخواهند که به آنها اجازه میدهد با دادههایتان تقریباً هر کاری بکنند.
- از گذرواژههای قوی و منحصربهفرد استفاده کنید. یک ترکیب طولانی از حروف، اعداد و نمادها میتواند حسابهای شما را ایمن نگه دارد.
- از یک برنامهی مدیریت گذرواژه استفاده کنید. یک برنامهی مدیریت گذرواژه، محلی امن و رمزنگاریشده برای تمام گذرواژهها در اختیارتان قرار میدهد که میتوانید از طریق یک گذرواژهی مادر به آن دسترسی داشته باشید. بسیاری از برنامههای مدیریت گذرواژه همچنین به شما خواهند گفت که اطلاعاتتان نشت کرده است یا خیر.
- از احراز هویت چند عاملی استفاده کنید.
احراز هویت سه عاملی
سه عامل اصلی در احراز هویت سه عاملی شامل موارد زیر میشود:
- چیزی که میدانید (مانند یک گذرواژه یا سؤال امنیتی).
- چیزی که هستید (مانند اثر انگشت یا اسکنر قرنیه/صورت).
- چیزی که دارید (مانند یک کلید امنیتی سختافزاری یا برنامههای احراز هویت با ایجاد کد تصادفی یکبار مصرف زماندار (TOTP) روی تلفن همراه).
ضمناً فراموش نکنید در بحث امنیت اتریوم، استفاده از ۲FA مبتنی بر پیامک، خطر سرقت شماره تلفن همراه شما را بسیار افزایش میدهد و هرگز ایمن نیست.