Skip to content

امنیت توکن: رمزنگاری

Shermin Voshmgir edited this page Sep 1, 2021 · 4 revisions

فصل ۳

امنیت توکن: رمزنگاری

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

کریپتوگرافی

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

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

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

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

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

اگرچه تلاش های اولیه برای رمزگذاری ارتباطات الکترونیکی معطوف به ارائه محرمانگی و حفظ فناوری ها برای ارتباطات نهادهای دولتی بود، انا اکنون این حوزه گسترش یافته است. طی دهه های گذشته، فناوری های رمزگذاری در حوزه های مختلف دیگری مانند تجارت الکترونیکی، پرداخت دیجیتال، مدیریت حقوق دیجیتال، مدیریت رمز عبور، بررسی یکپارچگی پیام، احراز هویت، امضای دیجیتال، اثبات تعاملی و محاسبات ایمن اعمال شده است. در زمینه شبکه های بلاکچین و سایر دفترکل های توزیع شده، از رمزنگاری برای شناسایی، تأیید و اهداف امنیتی در سطح پروتکل اصلی استفاده می شود. سه بلوک ساختاری مربوط به رمزنگاری در زمینه شبکه های بلاکچین عمومی و سایر فن آوری های وب۳ استفاده می شود: (1) توابع هش، (2) رمزنگاری متقارن، و (3) رمزنگاری نامتقارن (رمزنگاری کلید عمومی).

توابع هش

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

سیستم های متقارن

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

سیستم های نامتقارن

که به آن رمزنگاری کلید عمومی نیز گفته می شود ، با معرفی دو کلید، یک کلید عمومی و یک کلید خصوصی، مشکل هماهنگی را برطرف کرد. کلید خصوصی فقط برای مالک شناخته شده است و باید خصوصی نگه داشته شود، در حالی که ممکن است کلید عمومی در اختیار همه قرار گیرد. کلید عمومی می تواند در شبکه پخش شود، که به هر کسی در شبکه اجازه می دهد تا از کلیدهای عمومی برای ارسال پیام رمزگذاری شده به "صاحب" کلید عمومی استفاده کند. این پیام رمزگذاری شده فقط با کلید خصوصی گیرنده قابل رمزگشایی است. فرستندگان می توانند یک پیام را با کلید خصوصی خود ترکیب کنند و یک امضای دیجیتالی روی پیام ایجاد کنند. اکنون، هرکسی می تواند با کلید عمومی مربوطه معتبر بودن امضا را تایید کند. نحوه تولید کلیدها به الگوریتم های رمزنگاری استفاده شده بستگی دارد. نمونه هایی از سیستم های نامتقارن شامل (Rivest-Shamir-Adleman) RSA و ECC (Elliptic-Curve Cryptography) هستند که در بیت کوین نیز استفاده می گردد. استفاده از رمزنگاری نامتقارن امنیت ارتباطات در شبکه های بی اعتماد، مانند اینترنت را به صورت فزاینده ای افزایش می دهد[^ 1]. فصل های بعد بر نحوه استفاده از رمزنگاری در شبکه بیت کوین و شبکه های بلاکچین مشابه تمرکز خواهد کرد.

  شبکه بیت کوین عمدتا از هش به همراه امضاهای دیجیتال برای محافظت از یکپارچگی داده های جاری در شبکه با استفاده از رمزنگاری کلید عمومی استفاده می کند. علاوه بر این هش ها در متن پروتکل اجماع "اثبات کار" استفاده شده است. بیت کوین از رمزنگاری کلید عمومی و به طور خاص تر، از رمزنگاری منحنی بیضوی استفاده می کند. لطفا توجه داشته باشید که دیگر شبکه های بلاکچین و سایر سیستم های دفتر توزیع شده ممکن است از ابزارهای رمزنگاری دیگری غیر از موارد زیر استفاده کنند. [^ 3]بعنوان مثال، برخی از شبکه های بلاکچین از رمزنگاری با حفظ حریم خصوصی بیشتر استفاده می کنند، مانند "زی کش" (اثبات های دانش صفر)[^ 2] و "مونرو" (امضای حلقه ای). خود انجمن بیت کوین در حال حاضر به دنبال طرح های جایگزین امضای رمزنگاری است که حافظ "حریم خصوصی" بیشتر و مقیاس پذیرتر باشند ، به عنوان مثال ، با مدل "Mimblewimble" (بیشتر بخوانید: قسمت 3 – توکن های حریم خصوصی). ف 1 چ 3

رمزنگاری کلید عمومی

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

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

الگوریتم های ایمن

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

برای اطمینان از اینکه حدس زدن عدد دشوار است، یک کلید خصوصی انعطاف پذیر حداقل این الزامات را دارد:

  1. لازم است عدد بطور تصادفی ایجاد شده باشد.
  2. ضروری است عدد بسیار بزرگ باشد.
  3. برای تولید کلیدها باید از الگوریتم ایمن استفاده کند.

تصادفی بودن آن مهم است، زیرا ما نمی خواهیم هیچ شخص یا دستگاه دیگری از همان کلید استفاده کند، و انسانها در یافتن یک عدد تصادفی بد عمل می کنند. اندازه های بزرگ کلید امکان توزیع تصادفی بیشتر را فراهم می کند و شکستن آنها با استفاده از زور بسیار دشوارتر است، اما محاسبه آنها نیز کندتر است. به دلیل پیچیدگی، الگوریتم های ایمن باید از نظر علمی اثبات شده باشند و در برابر نقض امنیت، با تست تنش آزمایش شوند. باید از اختراع الگوریتم شخصی خودداری کرد. این مسئله زمانی آشکار شد که تیم توسعه دهنده شبکه IOTA تصمیم گرفت تابع هش خود را بنام Curl پیاده سازی کند. آیوتا یک راه حل دفتر توزیع شده جایگزین برای بلاکچین است که ادعا می کند مشکل مقیاس پذیری بیت کوین را با یک مکانیزم اجماع متفاوت و رمزنگاری جایگزین حل می کند. بعدا مشخص شد که عملکرد تابع کرل ساخته شده توسط آنها "نا- مقاوم در برابر تلاقی" است[^ 4]. از زمان پیدایش بیت کوین، الگوریتم های رمزنگاری مورد استفاده در شبکه بیت کوین در برابر همه تلاش های دستکاری اطلاعات مقاومت کرده اند.

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

هش کردن

روشی است برای تبدیل مقادیر زیادی از داده ها به مقدار کوتاه تر که حدس آنها دشوار است. می توان یک متن یا یک عکس را که نشانگر یک توالی بیت با طول متغیر است، تبدیل نمود و یک توالی بیت با طول ثابت به شکل هش تولید کرد. این توابع یکپارچگی داده ها تضمین می کنند. شبکه بیت کوین از الگوریتم های امن هش (SHA) مانند SHA-256 استفاده می کند. یک ویژگی مهم هش ها این است که اگر تنها یک بیت از داده های ورودی تغییر کند، خروجی به طور قابل توجهی تغییر خواهد کرد، که تشخیص تغییرات کوچک در پرونده های متنی بزرگ را آسان می نماید. همانطور که از مثال زیر می بینید[^ 5]، وقتی فقط یک نماد را تغییر می دهیم، یک هش کاملاً متفاوت ایجاد می شود. این اتفاق بر اساس "اثر آوالانچ (بهمن)" است و برای ایجاد آسان یکپارچگی داده ها مفید است. نتایج کاملاً متفاوتی از هش کردن یک هش بدست می آید.

هش از جمله زیر:
How to buy Bitcoin?
156aedcfab1d49f73abddd89faf78d9930e4b523ab804026310c973bfa707d37

هش از جمله زیر:
How to buy Bitcoin
4314d903f04e90e4a5057685243c903fbcfa4f8ec75ec797e1780ed5c891b1bf

هش از هش جمله:

How to buy Bitcoin
4c9622e1148ff0b855de50e62999d194039eb2faa9e715cc9d9ef604015aa1fe


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

هش کردن در شبکه بیت کوین بخشی از فرایندهای زیر است: (i) رمزگذاری آدرس های کیف پول؛ (ii) رمزگذاری تراکنش های بین کیف پول ها؛ (iii) تأیید و اعتبار سنجی تراز حساب کیف پول ها؛ و (iv)اثبات کار مکانیزم اجماع.

کیف های پول و امضای دیجیتال

کیف پول بلاکچین، نرم افزاری است که کلید خصوصی، کلید عمومی و آدرس بلاکچین شما را ذخیره کرده و با شبکه بلاکچین ارتباط برقرار می کند. این نرم افزار کیف پول می تواند روی رایانه یا تلفن همراه (مانند Bitcoin Core"،"Electrum") یا روی یک دستگاه سخت افزاری اختصاصی (مانند Trezor""، "Ledger") اجرا شود. نرم افزار کیف پول امکان احراز هویت کاربر و مدیریت توکن ها را فراهم می کند. با استفاده از یک نرم افزار کیف پول می توان توکن ها را ارسال کرد و رسید توکن هایی را که برای شما ارسال شده بازرسی کرد. هر زمان که توکن های بیت کوین را ارسال می کنید، برای امضای تراکنش با کلید خصوصی خود باید از کیف پول استفاده کنید. متعاقباً، تراز توکن شخصی شما در تمام نسخه های دفترکل که در شبکه P2P رایانه ها توزیع می شود، تنظیم می گردد.

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

امضاهای دیجیتالی در شبکه بیت کوین و شبکه های بلاکچین مشابه با استفاده از یک نرم افزار کیف پول انجام می شود. مشابه امضای دست نویس، از امضای دیجیتال برای تأیید اینکه شما همان کسی هستید که می گویید، استفاده می شود. در صورت اجرای صحیح، جعل آنها دشوارتر از امضاهای دست نویس خواهد بود. دهه هاست که امضای دیجیتال بیشتر در زمینه تراکنش های مالی، مجوزهای نرم افزار یا نرم افزار مدیریت قرارداد، مورد استفاده قرار گرفته است. در شبکه های بلاکچین، از امضای دیجیتال برای احراز هویت (اثبات این که فرستنده توکن در واقع همان فرستنده است) و یکپارچگی تراکنش (به عبارت دیگر مقدار توکن های ارسالی) استفاده می شود. کلید خصوصی برای امضای تراکنش های توکن استفاده می شود. کلید عمومی توسط گره های اعتبارسنج در شبکه برای تأیید امضا استفاده می شود. به این ترتیب، کیف پول نمی تواند وانمود کند که کیف پول دیگری است. این اصل همچنین به عنوان "عدم انکار" شناخته می شود. عملا، به این معنی که فرد دیگری نمی تواند وانمود کند کیف پول شما را کنترل می کند، مگر اینکه کلید خصوصی شما را داشته باشد. ف 2 چ 3

انواع کیف پول و مدیریت کلید

کلید خصوصی شما همیشه باید مخفی بماند و نباید با دیگران به اشتراک گذاشته شود مگر اینکه بخواهید عمدا به آنها دسترسی به توکن خود را بدهید. به دلیل فرآیند دو مرحله ای استنباط کلید عمومی از کلید خصوصی و آدرس از کلید عمومی، فقط لازم است از کلید خصوصی بک آپ تهیه کنید، هر چیز دیگری را می توان از کلید خصوصی با الگوریتم رمزنگاری استفاده شده در شبکه استخراج کرد. اگر دسترسی به کیف پول خود را از دست دهید، بدون داشتن نسخه پشتیبان از کلمات اولیه(عبارت بذر)[^ 6] یا کلید خصوصی، دسترسی به توکن های خود را از دست خواهید داد. در حالی که توکن های شما همچنان در شبکه وجود دارند، شما نمی توانید به آنها دسترسی داشته باشید.

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

کیف پول های در کنترل کاربر

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

کیف پول های میزبان

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

یک راه حل مستقل تر برای مشکل از دست دادن کلیدهای خصوصی شما می تواند به اصطلاح "راه حل های بازیابی کلید اجتماعی" باشد، که با آن می توانید مجموعه ای از دوستان، اعضای خانواده یا موسسات مورد اطمینان را برای تأیید هویت خود تعیین کنید و بازیابی کلید را به صورت یک فرآیند چند امضایی مجاز نمایید. در چنین حالتی، به عنوان مثال می توانید پنج نفر مورد اعتماد را تعیین کنید که در صورت از دست دادن کلید خصوصی شما می توانند با آنها تماس بگیرند. می تواند تعریف شود سه نفر از پنج نفر با ثبت کلیدهای خصوصی خود کلید خصوصی شما بازیابی کنند. به این ترتیب، بدون اینکه به تنها نقطه ی شکست تبدیل شوید، اشخاصی را که به آنها اعتماد دارید را مشخص می کنید. با این حال، اگر این افراد یکدیگر را بشناسند، می توانند با هم تبانی کنند و یا برای تبانی علیه شما رشوه بگیرند. به منظور فعال کردن یک اقتصاد توکنی P2P حقیقی، که در آن افراد می توانند بدون نیاز به اشخاص ثالث قابل اعتماد، توکن را از کیف پولی به کیف پول دیگر ارسال و دریافت کنند، به راه حل های بهتر مدیریت کیف پول نیاز خواهیم داشت، که در آن هر کس حاکم بر توکن های خود باشد، و سطح بالایی امنیت و قابلیت استفاده را داشته باشیم. یک راه حل ساده تر برای بازیابی کلید، پشتیبان گیری خودکار در یک سرویس ابری مانند Google Drive است. اگرچه این کار به هیچ وجه توصیه نمی شود، اما به دلیل راحتی آن به نظر می رسد برای برخی از صرافی های توکن، مانند "Coinbase" ، به یک روند تبدیل شده است.   در زمان نگارش این کتاب، اکثر کیف پول ها فقط مدیریت یک نوع توکن و در برخی موارد تعداد محدودی توکن را مجاز می دانند. این به دلیل این واقعیت است که سیستم های مختلف دفتر کل توزیع شده، در بیشتر موارد، قابلیت همکاری با یکدیگر ندارند. بیشتر سیستم های توکن دارای مشخصات فنی متفاوتی هستند که به نوع دفترکل توزیع شده ای که روی آنها صادر شده اند بستگی دارد و بنابراین به توسعه کیف پول منحصر به فرد نیاز دارند. تولید کیف پول هایی که با چند دفترکل سازگار هستند، زمان بر و پرهزینه است. سازگاری چند دفترکل نیز باعث انبساط نرم افزار کیف پول می شود. جنبه دیگر طراحی کیف پول این است که آیا کیف پول (در ترکیب با دفتر توزیع شده قرارگرفته در آن) امکان امضای مشترک تراکنش ها را فراهم می کند. بسیاری از شبکه های بلاکچین مانند اتریوم تراکنش های چند امضایی داخلی را فعال نمی کنند. در مورد اتریوم، شما باید این مشکل را از طریق یک قرارداد هوشمند حل کنید، که این امر برای مسائل امنیتی دردسرساز است.   امضاهای حلقه ای (رینگ: امضای دیجیتالی که توسط اعضای کلید دار انجام می شود)، امضاهای جمعی و "اشتراک گذاری رمز شمیر"[^ 7] همه نمونه هایی از الگوریتم های رمزنگاری جایگزین هستند که باید توسط شبکه های بلاکچین فعال شده و توسط نرم افزار کیف پول پشتیبانی شوند تا امکان امضای چندگانه تراکنش ها را فراهم کنند. امضاهای مشترک یک ویژگی مهم است که تفویض اختیارات شما به شخص دیگر (بانک یا صرافی توکن های شما را مدیریت می کند)، مدیریت جمعی دارایی ها (در موارد مالکیت جمعی دارایی یکسان یا مانند مدیریت جمعی در مورد DAO، سازمان خودمختار غیرمتمرکز)، یا بازیابی کلید اجتماعی را ممکن می سازد. در فصل 3 و 4 این کتاب به جنبه های مدیریت توکن ها و موارد استفاده از توکن ها، که در آن نقش کیف پول ملموس تر می شود، به تفصیل خواهیم پرداخت. ف 3 چ 3

ارسال توکن ها

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

  • آلیس از یک نرم افزار کیف پول استفاده می کند که کلید خصوصی او را مدیریت می کند. با انجام عملیات استاندارد ریاضی، نرم افزار کیف پول همیشه می تواند کلید عمومی و آدرس او را از کلید خصوصی استخراج کند.

  • اگر آلیس بخواهد توکن ها را برای باب ارسال کند، از نرم افزار کیف پول خود برای ایجاد تراکنشی که شامل تمام جزئیات لازم می شود استفاده می کند: کلید عمومی اش. آلیس باید آدرس باب و تعداد توکن مورد نظر برای ارسال را مشخص کند. سپس آلیس امضای دیجیتالی این تراکنش را می سازد - یک هش (که توسط نرم افزار کیف پول انجام می شود.)

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

  • اکنون آلیس این تراکنش را به هر یک از رایانه در شبکه پخش می کند: او هم تراکنش متن ساده و هم هش امضا شده را ارسال می کند (به طور خودکار توسط نرم افزار کیف پول خود انجام می شود).

  • هر رایانه ای در شبکه که تراکنش را دریافت می کند اکنون می تواند اعتبار تراکنش را تأیید کند. آنها می توانند با استفاده از کلید عمومی آلیس از نظر ریاضی تأیید کنند که هش امضا شده واقعا توسط وی امضا شده باشد. آنها می توانند عملیات هش کردن را روی متن تراکنش وی که قابل خواندن است استفاده کنند و همان مقدار هش را دریافت نمایند. آنها همچنین می توانند از کلید عمومی آلیس استفاده کنند تا بررسی نمایند که هش ها واقعا توسط خود او امضا شده است.

  • پس از تأیید همه این جزئیات، با توافق همه بازیگران شبکه، تراکنش های معتبر در یک بلوک ذخیره و هش می شوند. اگر سایر رایانه های شبکه معتبر بودن شماره هش موجود در بلوک را تأیید کنند، این بلوک بخشی از دفترکل به روز شده می شود. این روند ایجاد بلوک های جدید تراکنش ها منوط به مکانیزم اجماع اثبات کار است (اطلاعات بیشتر در مورد اثبات کار در فصل بعدی را بخوانید).

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

خلاصه فصل ۳

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

رمزنگاری در شبکه های بلاکچین امکان شفافیت تعاملات را در عین حفظ حریم خصوصی تمام بازیگران شبکه فراهم می کند.

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

مشابه امضای دست نویس، از امضای دیجیتال برای تأیید اینکه شما همان فردی هستید که ادعا می کنید، استفاده می شود. در بیتکوین و سایر بلاکچین ها، امضاهای دیجیتالی توابع ریاضی هستند که به آدرس کیف پول خاصی اشاره می کنند که توکن های شما را در بلاکچین مدیریت می کند.

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

پاورقی ها

[^ 1]: در حالی که رمزنگاری منحنی بیضوی همان امنیت RSA را تأمین می کند، اما به محاسبات کمتر و اندازه کلید کوچکتر احتیاج دارد، بنابراین نیازهای ذخیره سازی و انتقال را کاهش می دهد. بنابراین اجازه می دهد تا نیازهای ذخیره سازی و انتقال کاهش یابد.

[^ 2]: رمزنگاری اثبات دانش صفر امکان اعتبار سنجی اطلاعات را بدون افشای آن اطلاعات با تأیید کننده آن اطلاعات فراهم می کند.

[^ 3]: از امضاهای حلقه ای می توان برای مخفی کردن هویت دارندگان توکن استفاده کرد، ترکیبی از گروهی از امضای دیجیتالی جزئی از تراکنش های گوناگونی که توسط کاربران مختلف ارسال شده است، امضای منحصر به فردی را تشکیل می دهد که برای امضای تراکنش استفاده می شود.

[^ 4]: توابع هش یک ورودی دلخواه را گرفته و یک خروجی به ظاهر تصادفی اما با طول ثابت را برمی گرداند. وقتی بیش از یک ورودی به خروجی یکسان منجر شود، مشکلات جدی می تواند ناشی از چنین تلاقی پیش بیاید. تیمی از محققان دانشگاه MIT و بوستون دقیقاً چنین ایراداتی را در عملکرد منحنی IOTA یافتند. اگرچه تیم IOTA آسیب پذیری های گفته شده را برطرف کرد، اما ادعا کردند که این نقص ها به طور عمدی گنجانده شده اند، که مورد انتقاد شدید جامعه منبع باز قرار گرفت.

[^ 5]: مقادیر هش را در اینجا محاسبه کنید: https://www.browserling.com/tools/all-hashes

[^ 6]: عبارت بذر seed phrase، که به آن "seed mnemonic" نیز گفته می شود، روشی برای گره زدن کلیدهای خصوصی با ترکیبی از کلمات است که توسط نرم افزار کیف پول شما تهیه و مدیریت می شود و به آسانی به یاد می ماند. "Mnemonics" یک روش نگاشت است که به بازتولید چیزی که به سختی به خاطر سپرده می شود، به وسیله کلمات تصادفی که به راحتی به خاطر سپرده می شوند، کمک می کند.

[^ 7]: Shamir’s Secret Sharing الگوریتمی رمزنگاری است که یک رمز (کلید) را به بخشهایی تقسیم می کند، تکه های راز را بین افراد مختلف توزیع می کند. برای بازسازی رمز، باید تمام تکه ها جمع شود. در تنظیم "آستانه"، فقط تعداد مشخصی از قطعات برای بازسازی رمز مورد نیاز است.

مراجع فصل و مطالعه بیشتر

Clone this wiki locally