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