بیت کوین زیر ذره بین؛ بررسی ساختار فنی و امنیت بیت کوین - تکفارس 
بیت کوین زیر ذره بین؛ بررسی ساختار فنی و امنیت بیت کوین - تکفارس 

بیت کوین زیر ذره بین؛ بررسی ساختار فنی و امنیت بیت کوین

سعید مزارعی
۳۰ مرداد ۱۳۹۶ - 21:00
بیت کوین زیر ذره بین؛ بررسی ساختار فنی و امنیت بیت کوین - تکفارس 

فهم ساختار فنی بیت کوین و پول‌های رمزنگاری شده را باید کلید اصلی در درک کامل این مفهوم جدید خواند.


رمز موفقیت بیت کوین در القابی که به این واحد پول دیجیتال نسبت داده شده، نهفته است؛ بنیان بیت‌کوین بر پایه‌ی رمزنگاری استوار شده و همین امر علت ماندگاری و پیشرفت روزافزون این سیستم است. در قسمت دوم از مجموعه‌ مقالاتی که برای تشریح و بررسی بیت کوین در نظر گرفته‌ایم، به سراغ ساختار فنی و امنیتی این واحد پولی رفته‌ایم.

پول رمزنگاری شده با انتشار مقاله‌ای با عنوان “Bitcoin: A Peer-to-Peer Electronic Cash System” در تاریخ ۱۰ ابان ۱۳۸۷ متولد شد. ساتوشی ناکاموتو با انتشار مقاله‌ی مورد نظر، راهکاری را برای یک سیستم مالی جدید ارائه داده که در آن نیازی به وجود یک نهاد مرکزی به منظور کنترل تمام تراکنش‌ ها نیست. ساتوشی طی این مقاله که در ۱۲ سرفصل تنظیم شده، به توضیح مساله‌ و همچنین راهکار خود با عنوان بیت کوین پرداخته است.

در این مقاله، با مبنا قرار دادن مقاله‌ی ساتوشی ناکوموتو به بررسی بیت کوین از جنبه‌ی فنی خواهیم پرداخت. همچنین امنیت تراکنش‌های صورت گرفته با استفاده از پول رمزنگاری شده را از نظر برگشت پذیر بودن و امکان انجام تقلب از نظر خواهیم گذراند.

 بیت کوین نه یک سیستم جایگزین، بلکه یکی از گزینه‌هایی است که با اتمام دوران سیستم کنونی مورد استفاده، در نظر گرفتن آن اجتناب ناپذیر خواهد بود. بیت کوین تمام ویژگی‌های تبدیل شدن به یک سیستم پولی رایج را دارا است و ویژگی‌های آن، پول رمزنگاری شده را به یک گزینه‌ی ایده‌آل برای استفاده در دوران فناوری‌های نوین تبدیل کرده است. ناکاموتو در طرح مساله‌ی خود، دو موضوع را نقطه‌ی ضعف نظام پولی کنونی مورد استفاده در جهان خوانده است. یکی از این موارد، امکان ارسال پول، بصورتی است که کاربر هیچ هزینه و عوارضی را از بابت انتقال مبلغ خود پرداخت نکند. در این مقاله به این موضوع اشاره شده که عوارض دریافت شده برای میانجی شدن در ارسال پول، باعث افزایش هزینه‌ها شده و در واقع بعضا کم بودن مبلغ مورد نظر برای ارسال، انتقال پول را منطقا توجیه ناپذیر می‌کند. مشکل دیگری که ناکاموتو از آن اسم برده، انجام تراکنش‌هایی برگشت پذیر است که این موضوع امکان کلاه‌برداری را در سیستم کنونی امکان پذیر می‌کند. به بیان بهتر کلاهبرداران سیستم مرکزی را به گونه‌ای مورد سواستفاده قرار می‌دهند که بدون اینکه پولی از حسابشان کسر شود، اقدام به خرید کالا یا واریز پول می‌کنند.

ناکاموتو در مقاله‌ی خود بصورت کامل با بیان مشکلات موجود در سیستم پولی کنونی مورد استفاده به بیان راهکار خود پرداخته و سپس با بررسی مشکلاتی که می‌تواند این سیستم را با اختلال روبرو کند، به ارائه‌ی روش‌‌های مقابله با این مشکلات نیز پرداخته است. برای مثال می‌توان به بهره‌گیری از مفاهیمی نظیر امضای دیجیتال (Digital Signature)، پول کد گذازی شده‌ی آدام بک (Adam Back’s Hash Cash)، درخت مرکل (Merkle Tree)، گام تصادفی یا ول‌گشت (Binomial Random Walk) و تباهی گمارباز (Gambler’s Ruin Problem) اشاره کرد. در ادامه به بررسی هر یک از مفاهیم اشاره شده و کاربرد آن در فرآیند گردش مالی بیت کوین خواهیم پرداخت.

در حال حاضر اصلی‌ترین مرجع برای ارسال و دریافت پول در تمامی جوامع بشری، بانک‌ها هستند. همه‌ی تراکنش‌ها و در واقع همه‌ی فعالیت‌های انجام شده توسط بانک‌ها بر مبنای یک اصل انجام می‌شود و این اصل همان اعتماد به بانک است. مشتریان بانک‌ها براساس اعتمادی که به سیستم دارند، اجازه می‌دهند تا این سیستم بر صحت و سقم پول‌های رد و بدل شده نظارت داشته باشند. در واقع بانک مسئول هر گونه کلاه‌برداری یا سرقت پول از حساب‌ها است و هیچ یک از افرادی که از این سیستم استفاده می‌کنند، مسئولیتی در قبال رد و بدل شدن داده‌ها ندارند. در واقع مشکل اصلی سیستم بانکداری متمرکز این است که در این سیستم امکان ایجاد اخلال در سیستم و انجام تراکنش‌های برگشت پذیر وجود دارد، این در حالی است که در سیستم بیت کوین احتمال انجام چنین تراکنش‌هایی نزدیک به صفر است.  اما در بیت کوین خبری از اعتماد نیست و اصل این سیستم نیز بر پایه‌ی بی اعتمادی بنیان گذاشته شده است. در واقع در شبکه‌ی بیت کوین با افرادی سر و کار داریم که اصلا آن‌ها را نمی‌شناسیم، از این‌رو این سیستم باید به گونه‌ای باشد که نتوان در آن خللی ایجاد کرد، از این رو یک دلیل رمزنگاری شده برای اثبات صحت تراکنش‌ها و جلوگیری از تقلب استفاده شده است.

بیت کوین را به زبان ساده باید یک پایگاه داده‌ی به اشتراک گذاشته از تراکنش‌ها خواند که همه‌ی گره‌های شبکه به آن دسترسی دارند. در این شبکه‌ی بزرگ که همه‌ی گره‌ها به جزئیات تراکنش‌ها دسترسی دارند، چگونه می‌توان جلوی تقلب را گرفت؟ در صورتی که گره‌های صادق شبکه قدرت پردازشی بیشتری را بر عهده داشته باشند، در اینصورت نمی‌توان تقلبی را در شبکه صورت داد. شاید این موضوع هم‌اکنون کمی گیج کننده به نظر برسد، اما در ادامه تمامی مسائل و نکات نامفهوم را تشریح خواهیم کرد.

همانطور که اشاره کردیم، بیت کوین مجموعه‌ای از مفاهیم در حوزه‌ی رمز‌نگاری است که مجموعه‌ی آن‌ها با ترکیب یک سناریوی موفق، بیت کوین را تشکیل داده است. در ادامه به تشریح این مفاهیم براساس سلسله مراتبی خواهیم پرداخت.

امضای دیجیتال (Digital Signature)

هر سکه‌ی الکترونیک را باید دنباله‌ای از امضا‌های دیجیتال خواند.هر مالک سکه‌ی بیت کوین برای ارسال یک سکه به دیگری، ترکیبی از کلید عمومی فردی که بیت کوین برای آن ارسال می‌شود را با زنجیره‌ی کلید‌های دیجیتال پیشین ترکیب می‌کند، در مرحله‌ی بعدی این کد هش شده با استفاده از کلید خصوصی کاربری که سکه‌ی دیجیتال را ارسال می‌کند، کدگذاری می‌شود. کاربری که بیت کوین ارسال شده را دریافت می‌کند، قادر است از طریق کلید عمومی ارسال کننده، پیام مورد نظر را از حالت هش خارج کرده و از این نکته که چه کاربری این سکه را برای وی ارسال کرده، اطمینان حاصل کند. در واقع اگر گیرنده نتواند کد دریافت شده را با کلید عمومی کاربری که مدعی است بیت کوین را ارسال کرده از حالت هش درآورد، پس این فرد خود را به دروغ فرستنده‌ی بیت کوین معرفی می‌کند. اما بهتر است به تشریح امضای دیجیتال و نحوه‌ی کدگذاری و فناوری مورد استفاده در امضای دیجیتال بپردازیم.

فناوری مورد استفاده در امضای دیجیتال بیت کوین، از نوع کدگذاری غیرمتفارن است. کدگذاری در کل به دو حوزه‌ی کدگذاری متقارن و غیرمتقارن تقسیم می‌شود. همانطور که اشاره کردیم در بیت کوین و ایجاد امضای دیجیتال از کدگذاری غیرمتفارن استفاده می‌شود، اما ساز و کار کدگذاری غیرمتفارن چگونه است؟ در این روش دو کلید خصوصی و عمومی مورد استفاده قرار می‌گیرد. جعبه‌ای را در نظر بگیرید که دو کلید خصوصی و عمومی دارد. کلید خصوصی فقط برای قفل کردن این جعبه مورد استفاده قرار می‌گیرد، در حالی که کلید عمومی جز در باز کردن قفل جعبه کاربرد دیگری ندارد؛ با استفاده از کلید خصوصی که این جعبه را قفل کرده، نمی‌توان قفل جعبه را باز کرد و باید حتما کلید عمومی مورد استفاده قرار گیرد. در صورتی که کاربر A مدعی شود که جعبه‌ای را برای کاربر B ارسال کرده، دریافت کننده باید بتواند با استفاده از کلید عمومی کاربر A این جعبه را باز کند، در غیر اینصورت ادعای کاربر A مبنی بر ارسال جعبه دروغی بیش نبوده و از این رو در استفاده از امضای دیجیتال کاربری که بیت کوین را ارسال می‌کند، نمی‌تواند منکر ارسال شده و در نتیجه احتمال تقلب بسیار کاهش پیدا می‌کند. همچنین در صورت ایجاد تغییر در کد هش شده، دریافت کننده در صورت استفاده از کلید عمومی ارسال کننده نمی‌تواند به نتیجه‌ی صحیحی برسد و در نتیجه ایجاد تغییر میان راه روی کد هش شده نیز عملا امکان تغییرات در تراکنش‌ها را غیرممکن می‌کند. پس تا زمانی که کاربری به کلید خصوصی دیگری دسترسی نداشته باشد، امکان ایجاد اختلال در سیستم را ندارد. در سیستم بیت کوین نیز هر کاربر یک کلید خصوصی و یک کلید عمومی دارد. کلید خصوصی کاربر مخفی بوده و نباید کسی جز خود کاربر از آن اطلاع داشته باشد، اما کلید عمومی در اختیار همه‌ی کاربران است. سوال؟؟؟؟؟؟؟ اگر کاربر دیگری با کلید عمومی فرستنده اقدام به باز کردن کد هش شده کند، چه اتفاقی می‌افتد؟

اما چه تضمینی وجود دارد که فرستنده‌ی پول این کد یا همان بیت کوین را پیش‌تر برای کاربر دیگری نفرستاده باشد؟ در صورتی که راه‌حلی برای این موضوع نباشد، هر کاربر می‌تواند یک سکه را برای چندین نفر ارسال کند که این همان تقلب است. ساتوشی ناکاموتا دو راه‌حل ممکن را برای این مشکل پیشنهاد داده که در ادامه به بررسی آن‌ها خواهیم پرداخت. یکی از راه‌حل‌ها ایجاد یک ضرابخانه‌ی مرکزی است که بر تمام تراکنش‌ها نظارت می‌کند. روند کار در این ضرابخانه به این صورت است که تمام تراکنش‌ها توسط یک نهاد مرکزی یا همین ضرابخانه نظارت می‌شود، بدین ترتیب که در صورت ارسال یک بیت کوین، ابتدا ضرابخانه چک می‌کند که آیا این سکه پیش از این خرج شده یا نه. پس از پایان تراکنش سکه‌ی مورد نظر به ضرابخانه برگردانده می‌شود تا از بین رفته و سکه‌ای دیگر برای شخصی که آن را در اختیار دارد، ضرب شود. اما مشکل اینجا است که در این روش دوباره وجود یک نهاد مرکزی برای کنترل فرآیند ارسال و دریافت سکه‌ها شرط اصلی سلامت این سیستم است. البته مشکل دیگری که این سیستم را تهدید می‌کند، احتمال هک و ایجاد اختلال در کارکرد سیستم مرکزی است.

راه‌حل دیگری نیاز است تا با استفاده از آن دریافت کننده‌‌ی بیت کوین از این موضوع اطمینان حاصل کند که آیا پیش از این فرستنده سکه‌ی مورد نظر را برای فرد دیگری ارسال کرده یا خیر؟ در راه‌حل ارائه شده توسط ناکاموتو، اولین تراکنشی که در سیستم ثبت شود، به عنوان تراکنش مرجع و صحیح در نظر گرفته شده و سایر تراکنش‌هایی که برای آن سکه‌ی خاص ارسال شود، مورد قبول سیستم نیست. تنها راهی که می‌توان در آن وجود یا عدم وجود یک تراکنش را متوجه شد، دسترسی داشتن به تمام تراکنش‌هایی است که از ابتدای کارکرد سیستم، ثبت شده است. برای دست یافتن به چنین عملکردی در سیستم بدون وجود یک نهاد مرکزی، باید تمام تراکنش‌ها بصورت عمومی در اختیار تمام گره‌های شبکه قرار گیرد. در واقع تمام گره‌های شبکه روی این موضوع توافق می‌کنند تا از نسخه‌ی واحدی از تاریخچه‌ی تراکنش‌ها استفاده کنند.

تراکنش برحسب زمان (Timestamp Transaction)

در سیستم بانکداری متمرکز که هم‌اکنون در تمام بانک‌ها مورد استفاده قرار می‌گیرد، هر شخص با افتتاح حساب، موجودی خاصی را دارد. در واقع بانک یک موجودی را به هر شخص نسبت داده و آن را در پایگاه داده‌ی خود ثبت می‌کند، اما در بیت کوین خبری از این موضوع نیست. موجودی هر فرد در زنجیره‌ی کدهایی ثبت شده که طی آن بیت کوین‌هایی را دریافت و ارسال کرده است. در واقع بیت کوین فاقد جدولی است که در آن آخرین موجودی حساب هر شخص در آن ثبت شده باشد، بلکه زنجیره‌ی تراکنش‌های صورت گرفته، به عنوان مرجعی برای محاسبه‌ی موجودی هر فرد مورد استفاده قرار می‌گیرد. زمانی که شخصی بیت کوین یا بیت‌ کوین‌هایی را برای دیگر کاربران ارسال می‌کند، ابتدا معدن کاوان با بررسی تراکنش‌های پیشین اطمینان حاصل می‌کنند که آیا فرستنده این میزان از پول را در حساب خود دارد یا خیر.

مطالب مرتبط سایت

نظرات

دیدگاهتان را بنویسید