مقالات
بلاکچین معمولاً بهعنوان فناوریای شناخته میشود که امکان ثبت و نگهداری اطلاعات را در یک ساختار توزیعشده فراهم میکند. یکی از موضوعات مهم درباره این فناوری، نحوه تأمین امنیت اطلاعات و جلوگیری از تغییر غیرمجاز دادهها است.
برخلاف یک پایگاه داده متمرکز که ممکن است کنترل اطلاعات آن در اختیار یک سرور یا سازمان مشخص باشد، در بسیاری از شبکههای بلاکچینی نسخههایی از دفتر کل میان تعدادی از گرهها یا Nodeها توزیع میشود. علاوه بر این، فناوریهایی مانند رمزنگاری، توابع هش، امضای دیجیتال و الگوریتمهای اجماع در کنار یکدیگر قرار میگیرند تا اعتبار دادهها و تراکنشها بررسی شود.
اما آیا این ویژگیها به این معنا هستند که بلاکچین هرگز قابل حمله نیست؟ پاسخ کوتاه، خیر است. امنیت بلاکچین یک مفهوم چندلایه است و باید امنیت خود پروتکل، شبکه، قراردادهای هوشمند، نرمافزارها، کیف پولها و رفتار کاربران را از یکدیگر تفکیک کرد.
در ادامه بررسی میکنیم که امنیت بلاکچین چگونه شکل میگیرد و هرکدام از اجزای این معماری چه نقشی دارند.
هشدار مهم: این مطلب صرفاً با هدف آموزش و افزایش آگاهی درباره فناوری بلاکچین و سازوکارهای امنیتی آن تهیه شده است. مطالب ارائهشده بهمعنای توصیه به استفاده از یک شبکه، کیف پول، رمزدارایی یا سرویس خاص نیست. هیچ شبکه بلاکچینی را نمیتوان بهطور مطلق و در تمام شرایط «غیرقابل هک» یا «صددرصد امن» دانست و سطح امنیت هر شبکه به معماری، الگوریتم اجماع، تعداد و توزیع مشارکتکنندگان، نحوه پیادهسازی نرمافزار و عوامل متعدد دیگری بستگی دارد.
امنیت بلاکچین مجموعهای از سازوکارهای فنی و ساختاری است که برای حفظ یکپارچگی دادهها، اعتبارسنجی تراکنشها، جلوگیری از تغییرات غیرمجاز و هماهنگی میان مشارکتکنندگان شبکه استفاده میشود. امنیت در یک شبکه بلاکچینی معمولاً به یک عامل واحد وابسته نیست. چندین فناوری بهصورت همزمان در ایجاد این ساختار نقش دارند.
برای مثال، توابع هش میتوانند تغییر دادهها را قابل تشخیص کنند، امضاهای دیجیتال امکان اثبات مجوز ایجاد یک تراکنش را فراهم میکنند و الگوریتمهای اجماع به گرههای شبکه کمک میکنند درباره وضعیت معتبر دفتر کل به توافق برسند.
بنابراین امنیت بلاکچین را بهتر است نتیجه تعامل چندین لایه مختلف بدانیم.
⬅️ توابع هش | ایجاد اثر انگشت دیجیتال برای دادهها |
⬅️ رمزنگاری کلید عمومی | ایجاد زیرساخت لازم برای احراز مجوز رمزنگاریشده |
⬅️ امضای دیجیتال | اثبات مجوز ایجاد تراکنش توسط دارنده کلید خصوصی |
⬅️ دفتر کل توزیعشده | نگهداری و بررسی دادهها توسط چندین گره |
⬅️ الگوریتم اجماع | تعیین وضعیت معتبر شبکه |
⬅️ اتصال بلاکها | ایجاد ارتباط رمزنگاریشده میان سوابق |
⬅️ اعتبارسنجی گرهها | بررسی تطابق دادهها و تراکنشها با قوانین پروتکل |
برای درک امنیت بلاکچین ابتدا باید ساختار کلی آن را شناخت. در یک بلاکچین، اطلاعات در واحدهایی به نام «بلاک» سازماندهی میشوند. هر بلاک میتواند مجموعهای از اطلاعات، تراکنشها و دادههای مرتبط با وضعیت شبکه را در خود جای دهد. یکی از ویژگیهای مهم این ساختار، ارتباط رمزنگاریشده میان بلاکها است. در بسیاری از بلاکچینها، اطلاعات مربوط به بلاک قبلی در ساختار بلاک بعدی مورد استفاده قرار میگیرد. به همین دلیل، بلاکها بهصورت مستقل و بدون ارتباط با یکدیگر قرار ندارند؛ بلکه زنجیرهای از سوابق را تشکیل میدهند.
اگر دادههای یک بلاک قدیمی تغییر کنند، مقدار هش مرتبط با آن نیز تغییر خواهد کرد. این مسئله میتواند ارتباط آن بلاک با سوابق بعدی را تحت تأثیر قرار دهد و باعث شود تغییر ایجادشده توسط سازوکارهای اعتبارسنجی شبکه شناسایی شود.

هش یا Hash یکی از مفاهیم بنیادی در بسیاری از شبکههای بلاکچینی است.
تابع هش، دادهای با اندازه متغیر را دریافت میکند و خروجیای با طول مشخص تولید میکند. این خروجی را «هش» مینامند. یکی از خصوصیات مهم توابع هش رمزنگاریشده این است که حتی یک تغییر کوچک در ورودی میتواند خروجی کاملاً متفاوتی ایجاد کند.
فرض کنید اطلاعات یک بلاک دارای یک مقدار هش مشخص باشد. اگر بخشی از اطلاعات آن بلاک تغییر کند، مقدار هش جدید دیگر با مقدار قبلی یکسان نخواهد بود.
این ویژگی به شبکه اجازه میدهد تغییر دادهها را تشخیص دهد.
در واقع هش را میتوان نوعی اثر انگشت دیجیتال برای مجموعهای از دادهها در نظر گرفت؛ البته هش خودِ داده اصلی نیست و نباید آن را با رمزگذاری اطلاعات یکسان دانست.
هش و رمزنگاری دو مفهوم مرتبط اما متفاوت هستند.
در رمزنگاری، هدف میتواند محافظت از اطلاعات یا ایجاد سازوکاری برای احراز اصالت و مجوز باشد. در مقابل، تابع هش داده ورودی را به یک خروجی با طول مشخص تبدیل میکند. در بسیاری از کاربردهای رمزنگاری متعارف، داده رمزگذاریشده با داشتن کلید مناسب قابل بازیابی است. اما تابع هش رمزنگاریشده اصولاً بهعنوان یک تابع یکطرفه طراحی میشود و هدف آن بازیابی مستقیم ورودی از خروجی نیست.
ویژگی | هش | رمزنگاری |
ورودی | داده با اندازه متغیر | داده |
خروجی | مقدار با طول مشخص | داده رمزگذاریشده یا ساختار رمزنگاریشده |
هدف اصلی | بررسی یکپارچگی و ایجاد شناسه داده | حفاظت، احراز اصالت یا ایجاد ارتباط امن |
تغییر ورودی | هش را بهشدت تغییر میدهد | خروجی رمزنگاریشده را تغییر میدهد |
قابلیت بازیابی مستقیم | اصولاً یکطرفه | بسته به نوع رمزنگاری و کلید ممکن است |
یکی دیگر از اجزای مهم معماری بسیاری از بلاکچینها، توزیع داده میان چندین گره است.
در یک سامانه کاملاً متمرکز، ممکن است پایگاه داده اصلی در یک زیرساخت مشخص قرار داشته باشد. اگر همان زیرساخت با مشکل مواجه شود، کل سامانه میتواند تحت تأثیر قرار گیرد.
در شبکههای بلاکچینی عمومی، معمولاً گرههای متعددی در نگهداری، دریافت یا اعتبارسنجی اطلاعات مشارکت میکنند. این موضوع باعث میشود برای تغییر وضعیت پذیرفتهشده شبکه، صرفاً تغییر اطلاعات موجود روی یک دستگاه کافی نباشد. هر گره براساس قوانین پروتکل، دادههای دریافتی را بررسی میکند و دادهای که با قوانین شبکه سازگار نباشد ممکن است توسط گرههای دیگر پذیرفته نشود.

اگر تعداد زیادی گره مستقل در یک شبکه حضور داشته باشند، یک سؤال مهم ایجاد میشود: این گرهها چگونه درباره وضعیت صحیح شبکه به توافق میرسند؟
اینجاست که الگوریتمهای اجماع اهمیت پیدا میکنند. الگوریتم اجماع مجموعهای از قوانین و فرایندها است که مشخص میکند شبکه چگونه درباره وضعیت معتبر دفتر کل و ترتیب تراکنشها به توافق برسد. همه بلاکچینها از یک روش اجماع استفاده نمیکنند و قوانین اجماع در شبکههای مختلف میتواند تفاوت زیادی داشته باشد.
دو نمونه شناختهشده عبارتاند از:
اثبات کار یا Proof of Work (PoW): در این مدل، تولید بلاک و امنیت شبکه با فرایندی مبتنی بر محاسبات و قوانین مشخص پروتکل ارتباط دارد.
اثبات سهام یا Proof of Stake (PoS): در این مدل، اعتبارسنجها براساس سازوکارهای تعریفشده در پروتکل و دارایی قرارگرفته در فرایند سهامگذاری در اعتبارسنجی شبکه مشارکت میکنند.
نکته مهم این است که نباید مفهوم اجماع را به یک قانون ثابت مانند «تأیید ۵۱ درصد کاربران» محدود کرد. سازوکار دقیق رسیدن به اجماع به طراحی هر شبکه بستگی دارد.
امضای دیجیتال یکی دیگر از بخشهای مهم امنیت بلاکچین است.
در بسیاری از شبکههای بلاکچینی از رمزنگاری کلید عمومی استفاده میشود. در این ساختار، کاربر دارای کلید خصوصی و اطلاعات عمومی مرتبط با آن است. کلید خصوصی باید محرمانه باقی بماند و در اختیار دیگران قرار نگیرد. هنگامی که کاربر قصد ایجاد یک تراکنش را دارد، میتواند با استفاده از کلید خصوصی خود یک امضای دیجیتال ایجاد کند. شبکه سپس میتواند براساس سازوکار رمزنگاری مربوطه بررسی کند که امضا معتبر است یا خیر. این فرایند بدون نیاز به افشای خود کلید خصوصی انجام میشود.
به زبان ساده، امضای دیجیتال به شبکه کمک میکند بررسی کند که تراکنش با مجوز رمزنگاریشده معتبر ایجاد شده است.
کلید خصوصی یکی از حساسترین اجزای تعامل کاربران با شبکههای بلاکچینی است. در بسیاری از شبکهها، کنترل کلید خصوصی به معنای داشتن توانایی ایجاد امضاهای معتبر برای آدرس مرتبط است. به همین دلیل، افشای کلید خصوصی میتواند امنیت داراییها یا مجوزهای مرتبط با آن آدرس را به خطر بیندازد. نکته مهم این است که امنیت پروتکل بلاکچین لزوماً نمیتواند از کاربری که کلید خصوصی خود را در اختیار فرد دیگری قرار داده محافظت کند.
به همین دلیل باید میان «هک شدن بلاکچین» و «سرقت کلید خصوصی کاربر» تفاوت قائل شد.
یکی از اصطلاحاتی که درباره بلاکچین زیاد شنیده میشود، «تغییرناپذیری» یا Immutability است.
این مفهوم به این معنا نیست که تغییر دادههای بلاکچین از نظر ریاضی تحت هر شرایطی غیرممکن است. منظور این است که معماری شبکه میتواند تغییر سوابق تأییدشده را بسیار دشوار و قابل تشخیص کند. وقتی یک بلاک به زنجیره اضافه میشود و بلاکهای بیشتری پس از آن ساخته میشوند، تغییر آن سابقه میتواند مستلزم بازسازی وضعیت بعدی و غلبه بر قواعد اجماع شبکه باشد. میزان دشواری این فرایند به نوع شبکه، الگوریتم اجماع، توزیع قدرت اعتبارسنجی و شرایط دیگر بستگی دارد. بنابراین عبارت دقیقتر این است که بلاکچین میتواند در برابر دستکاری سوابق مقاوم باشد؛ نه اینکه تغییر اطلاعات در تمام بلاکچینها تحت هر شرایطی «کاملاً غیرممکن» باشد.

یکی از برداشتهای رایج این است که کاربران بلاکچین کاملاً ناشناس هستند. این تصور درباره همه شبکهها دقیق نیست.
در بسیاری از بلاکچینهای عمومی، تراکنشها و آدرسها قابل مشاهده هستند. آدرس بلاکچینی لزوماً نام و مشخصات واقعی شخص را مستقیماً نمایش نمیدهد، اما این موضوع به معنای ناشناسبودن کامل نیست. در برخی موارد، تحلیل دادههای عمومی شبکه و ارتباط آنها با اطلاعات خارج از بلاکچین میتواند به ایجاد ارتباط میان یک آدرس و یک هویت منجر شود.
به همین دلیل برای بسیاری از شبکههای عمومی، اصطلاح «نام مستعار» یا Pseudonymous دقیقتر از «کاملاً ناشناس» است.
در بلاکچینهای عمومی، بخش قابلتوجهی از اطلاعات شبکه برای کاربران قابل بررسی است. این شفافیت باعث میشود تراکنشها، بلاکها و برخی اطلاعات شبکه توسط افراد و ابزارهای مختلف بررسی شوند.
برای مثال، Block Explorerها میتوانند امکان مشاهده اطلاعات عمومی مربوط به بلاکها، تراکنشها و آدرسها را فراهم کنند.
شفافیت میتواند قابلیت حسابرسی دادههای روی زنجیره را افزایش دهد، اما نباید آن را با حفظ کامل حریم خصوصی یکسان دانست. در واقع شفافیت و حریم خصوصی دو مفهوم جداگانه هستند و نحوه ایجاد تعادل میان آنها در شبکههای مختلف متفاوت است.
قرارداد هوشمند برنامهای است که روی برخی شبکههای بلاکچینی اجرا میشود و مجموعهای از قوانین و منطق را در قالب کد پیادهسازی میکند.
قراردادهای هوشمند میتوانند عملیات مشخصی را براساس شرایط تعریفشده انجام دهند، اما وجود آنها روی یک بلاکچین به معنای بدون خطا بودن کد نیست. ممکن است یک شبکه بلاکچینی در سطح پروتکل بهدرستی فعالیت کند، اما یک قرارداد هوشمند مستقر روی همان شبکه دارای آسیبپذیری برنامهنویسی باشد. بنابراین باید امنیت شبکه و امنیت قرارداد هوشمند را از یکدیگر تفکیک کرد.
⬅️ پروتکل بلاکچین | ضعف در طراحی یا پیادهسازی پروتکل |
⬅️ اجماع | تمرکز بیش از حد قدرت اعتبارسنجی |
⬅️ شبکه | اختلال در ارتباط میان گرهها |
⬅️ قرارداد هوشمند | باگ یا منطق اشتباه در کد |
⬅️ کیف پول | آسیبپذیری نرمافزاری یا افزونه مخرب |
⬅️ کلید خصوصی | افشا، سرقت یا نگهداری نامناسب |
⬅️ کاربر | فیشینگ یا تأیید درخواست مخرب |
هیچ فناوری متصل به نرمافزار، شبکه و کاربران را نباید بهطور مطلق «غیرقابل هک» دانست.
اما وقتی درباره هک بلاکچین صحبت میشود باید ابتدا مشخص شود منظور کدام لایه است. bحمله به سازوکار اجماع یک شبکه با سرقت کلید خصوصی یک کاربر، وجود باگ در یک قرارداد هوشمند یا نفوذ به یک سرویس متمرکز متصل به بلاکچین یکسان نیست. گاهی در اخبار از عبارت «هک بلاکچین» استفاده میشود، درحالیکه رخداد اصلی مربوط به یک کیف پول، پل بلاکچینی، قرارداد هوشمند یا زیرساخت جانبی بوده است. این تفکیک برای درک درست امنیت بلاکچین اهمیت زیادی دارد.
حمله ۵۱ درصدی اصطلاحی است که بیشتر در ارتباط با برخی شبکههای مبتنی بر اثبات کار مطرح میشود.
در یک توضیح ساده، اگر یک مهاجم بتواند سهم بسیار بزرگی از قدرت مؤثر در فرایند اجماع شبکه را در اختیار بگیرد، ممکن است بتواند در ترتیب یا تأیید برخی تراکنشها اختلال ایجاد کند یا شرایط لازم برای برخی حملات مانند دوبارخرجکردن را فراهم سازد.
اما حمله ۵۱ درصدی به این معنا نیست که مهاجم ناگهان میتواند هر اطلاعاتی را به دلخواه تغییر دهد، کلید خصوصی کاربران را استخراج کند یا تمام قوانین پروتکل را نادیده بگیرد. نوع حملات ممکن و محدودیتهای مهاجم به معماری همان شبکه بستگی دارد.

غیرمتمرکز بودن یکی از مؤلفههای مهم بسیاری از بلاکچینها است، اما نمیتوان صرفاً با مشاهده برچسب «غیرمتمرکز» درباره امنیت یک شبکه نتیجهگیری کرد. برای ارزیابی یک شبکه باید نحوه توزیع اعتبارسنجها، زیرساخت گرهها، قدرت تصمیمگیری، توسعه نرمافزار، الگوریتم اجماع و عوامل متعدد دیگری را بررسی کرد. ممکن است یک شبکه از نظر تعداد گرهها گسترده باشد اما بخش بزرگی از قدرت اعتبارسنجی آن در اختیار تعداد محدودی از بازیگران قرار داشته باشد. بنابراین تمرکززدایی یک مفهوم طیفی است و باید براساس معیارهای مختلف بررسی شود.
برای درک بهتر موضوع میتوان امنیت بلاکچین را به چند لایه تقسیم کرد:
شامل توابع هش، امضاهای دیجیتال، کلیدهای خصوصی و عمومی و سایر ابزارهای رمزنگاری است.
به نحوه توافق گرهها درباره وضعیت معتبر شبکه مربوط میشود.
ارتباط میان گرهها، انتشار اطلاعات و مقاومت شبکه در برابر برخی اختلالات در این بخش قرار میگیرد.
پیادهسازی نودها، کیف پولها، کتابخانهها و سایر نرمافزارها ممکن است دارای آسیبپذیری باشند.
منطق برنامهنویسی قراردادها باید جداگانه بررسی و ارزیابی شود.
نگهداری کلید خصوصی، عبارت بازیابی، بررسی درخواستهای امضا و تشخیص حملات فیشینگ در این لایه اهمیت دارند.
یکی از مهمترین نکاتی که کاربران باید بدانند تفاوت میان امنیت شبکه و امنیت کیف پول است.
ممکن است خود شبکه بلاکچین بدون مشکل در حال فعالیت باشد، اما دستگاه کاربر آلوده شده باشد یا اطلاعات حساس کیف پول در اختیار شخص دیگری قرار گرفته باشد. در چنین شرایطی، مشکل الزاماً از بلاکچین نیست. همین مسئله درباره صرافیها، برنامههای غیرمتمرکز، افزونههای مرورگر و قراردادهای هوشمند نیز وجود دارد. هرکدام از این اجزا سطح امنیتی مستقل خود را دارند.
حتی در شبکهای که از سازوکارهای امنیتی قدرتمندی استفاده میکند، رفتار کاربر همچنان اهمیت زیادی دارد.
عبارت بازیابی و کلید خصوصی نباید در اختیار دیگران قرار گیرد. این اطلاعات باید محرمانه باقی بمانند.
آدرس وبسایتها و برنامهها باید بررسی شود. صفحات جعلی میتوانند با ظاهر مشابه سرویس اصلی برای سرقت اطلاعات طراحی شوند.
درخواست امضا باید پیش از تأیید بررسی شود. اتصال کیف پول، امضای پیام و تأیید تراکنش سه عملیات یکسان نیستند.
نرمافزارها باید از منابع معتبر دریافت شوند. نسخههای جعلی کیف پولها یا افزونهها میتوانند خطر امنیتی ایجاد کنند.
شبکه مقصد و آدرس دریافت باید بررسی شوند. تراکنشهای بلاکچینی در بسیاری از شرایط بهسادگی قابل بازگردانی نیستند.
عبارت بازیابی نباید در وبسایتهای ناشناس وارد شود. درخواست Seed Phrase از سوی یک صفحه اینترنتی میتواند نشانه مهمی از خطر باشد.
امنیت شبکه | امنیت کاربر |
الگوریتم اجماع | نگهداری کلید خصوصی |
توابع هش | محافظت از عبارت بازیابی |
اعتبارسنجی گرهها | بررسی آدرس مقصد |
قوانین پروتکل | تشخیص صفحات فیشینگ |
توزیع دفتر کل | بررسی درخواست امضا |
ارتباط میان بلاکها | استفاده از نرمافزار معتبر |
این جدول نشان میدهد که امنیت بلاکچین فقط مسئولیت پروتکل نیست. بخشی از امنیت به طراحی شبکه مربوط است و بخش دیگری به نحوه تعامل کاربران و نرمافزارهای جانبی با شبکه ارتباط دارد.

این موضوع به شبکه و شرایط آن بستگی دارد، اما در بسیاری از بلاکچینها پس از نهاییشدن تراکنش، سازوکاری شبیه لغو تراکنش در سامانههای متمرکز وجود ندارد. به همین دلیل بررسی آدرس، شبکه و جزئیات تراکنش پیش از تأیید اهمیت زیادی دارد. البته مفهوم Finality یا نهاییشدن در همه بلاکچینها یکسان نیست. برخی شبکهها دارای نهاییشدن احتمالی و برخی دارای سازوکارهای متفاوتی برای نهاییشدن تراکنشها هستند.
خیر.
استفاده از عنوان «بلاکچین» بهتنهایی تضمینکننده سطح مشخصی از امنیت نیست. معماری پروتکل، الگوریتم اجماع، تعداد و توزیع اعتبارسنجها، سابقه فعالیت شبکه، کیفیت پیادهسازی نرمافزار، میزان تمرکز، فرایند توسعه و نحوه مدیریت آسیبپذیریها میتوانند در ارزیابی امنیت یک شبکه نقش داشته باشند. به همین دلیل نمیتوان ویژگیهای امنیتی یک بلاکچین را بدون بررسی به تمام شبکههای دیگر تعمیم داد.
امنیت بلاکچین حاصل یک فناوری واحد نیست، بلکه نتیجه همکاری مجموعهای از سازوکارهای رمزنگاری، ساختاری و شبکهای است.
توابع هش به تشخیص تغییر دادهها کمک میکنند، امضاهای دیجیتال امکان بررسی مجوز ایجاد تراکنش را فراهم میکنند، الگوریتمهای اجماع به گرهها برای رسیدن به وضعیت معتبر شبکه کمک میکنند و ساختار توزیعشده باعث میشود کنترل دادهها الزاماً به یک نقطه واحد محدود نباشد. بااینحال، بلاکچین را نباید فناوریای با امنیت مطلق دانست. پروتکل شبکه، قرارداد هوشمند، کیف پول، برنامه غیرمتمرکز، زیرساخت جانبی و رفتار کاربر هرکدام لایه امنیتی جداگانهای دارند. در نتیجه، زمانی که درباره «امنیت بلاکچین» صحبت میکنیم، مهمترین پرسش این نیست که آیا بلاکچین قابل هک است یا خیر؛ بلکه باید مشخص کنیم درباره کدام شبکه، کدام لایه و کدام نوع تهدید صحبت میکنیم. درک همین تفاوتها کمک میکند ساختار امنیت شبکههای بلاکچینی را دقیقتر و فنیتر بررسی کنیم.