این مقاله گزیده ای از کتاب است راهنمای Layman برای بیت کوین توسط لوگان بروچ و با اجازه نویسنده در اینجا بازنشر می شود.
رمزنگاری علمی استفاده از توابع ریاضی بر روی داده ها است تا امنیت آنها را تضمین کند.
بسیاری از داستان های معروف حاکی از این است که هر سیستمی قابل هک است ، به شرطی که شما به اندازه کافی هکر خوبی داشته باشید. این “هک هالیوود” نحوه کار دنیای واقعی نیست – یک هکر باید یک آسیب پذیری را در سیستم برای بهره برداری پیدا کند ، مانند اتاق سرور قفل نشده ، رمز عبور آسان برای حدس زدن ، درگاه شبکه محافظت نشده یا “درب پشتی” بعنوان یک کار داخلی نصب شده تا بعداً به دسترسی غیرمجاز دست پیدا کنید.
گرچه درست است ، ما هرگز نمی توانیم تضمین کنیم که یک سیستم داده شده هیچ آسیب پذیری ندارد – و بالاخره سیستم ها توسط انسان های ناقص ساخته می شوند – این تصور که “هر چیزی را می توان هک کرد” نادرست است. از اوایل دهه 90 ، ما به تکنیک های رمزنگاری دسترسی داشته ایم که کاملاً در برابر هک شدن مصون هستند. این کاربرد چنین تکنیک هایی است که گاهی اوقات می تواند فضای بهره برداری را فراهم کند.
خود رمزنگاری برای تولید امضای رمزنگاری جعلی نمی تواند هک شود (به زودی تعریف می شود) ، همانطور که نمی توان ریاضیات را هک کرد تا 2 + 2 = 5 شود – گرچه از رمزنگاری و ریاضی هم می توان نادرست استفاده کرد. اگر سیستمی با استفاده از رمزنگاری خراب شود ، به این دلیل است که یک طراح از رمزنگاری به اشتباه استفاده کرده است. این به این دلیل نیست که رمزنگاری کار نکرد ، یا کسی این رمزنگاری را “هک” کرده است – همانطور که اگر بانک شما حساب شما را بدرفتاری نمی کند ، ریاضی نیست ، یا وقتی مادر شما یک پیوست ناآشنا را بارگیری می کند و ویروس رایانه دریافت می کند ، خطای ایمیل نیست. . این یک تمایز مهم است ، زیرا بیت کوین بسیار مستقیم کاربرد رمزنگاری تثبیت شده است.
رمزنگاری یک فناوری جدید و آزمایش نشده نیست. تمام روشهای رمزنگاری استفاده شده توسط بیت کوین از بدو تأسیس اینترنت در حال استفاده بوده و برای بسیاری از پروتکلهای رایج اینترنت که هر روز استفاده می شوند ضروری است.. دانش رمزنگاری توسط دانشمندان کامپیوتر به همان روشی که علم موشک توسط ناسا قابل اعتماد و ضروری قلمداد می شود ، قابل اعتماد و ضروری است.
جفت کلیدها: سنگ بنای رمزنگاری
جفت کلیدها سنگ بنای رمزنگاری مورد استفاده در زنجیره های بلوکی است. جفت کلید دارای دو قسمت است: یک کلید خصوصی و یک کلید عمومی. این کلیدها در واقع چیزی بیش از تعداد بسیار زیاد با یک رابطه ریاضی خاص نیستند ، که به جای گذرواژه ها و نام های کاربری استفاده می شوند.
شما یک کلید عمومی مانند نام کوچک یا نام کاربری خود را مدیریت خواهید کرد: در اکثر موارد آن را با هر کسی که تقاضا می کند به اشتراک می گذارید و کسانی که آن را دارند می توانند از آن برای ارجاع یا تماس با شما استفاده کنند. این به اعتبار شما (یا در مورد Bitcoin ، تاریخ معامله شما) گره خورده است ، بنابراین ممکن است چندین کلید عمومی (و در نتیجه چندین جفت کلید) داشته باشید که برای اهداف مختلف استفاده می کنید. از کلید عمومی می توان برای ارجاع یا مشاهده یک حساب استفاده کرد ، اما به تنهایی نمی تواند هیچ اقدامی را برای آن حساب مجاز کند.
با کلید خصوصی باید مانند گذرواژه رفتار شود: نباید با کسی به اشتراک گذاشته شود و برای تأیید اعتبار برخی اقدامات مانند ارسال BTC استفاده می شود.
اما بین کلید خصوصی و رمز عبور تفاوت مهمی وجود دارد. برای استفاده از رمز عبور ، باید آن را برای شخص یا سرور ارسال کنید تا بتواند از نظر سوابق وی بررسی شود. شما باید اطمینان داشته باشید که پسورد پس از ارسال با مسئولیت پذیری مدیریت خواهد شد. در مقابل ، از یک کلید خصوصی می توان برای احراز هویت خود بدون ارسال آن به جایی استفاده کرد. تنها مکانی که همیشه ذخیره یا مستقیماً استفاده شده در دستگاه محلی شماست.
این مهم است ، زیرا اگر بتوانید بدون ارسال راز خود به جایی تأیید هویت شوید ، می توانید بر امنیت آن کاملاً مسلط باشید – در برابر انفجار امنیتی سیستم های دیگر آسیب پذیر نیستید. این یک قسمت اساسی از آنچه Bitcoin را غیرقابل کنترل می کند است. هیچ رمز ورود یا کلید خصوصی در خود بیت کوین ذخیره نشده است تا یک مهاجم به خطر بیفتد و با این وجود کاربران هنوز می توانند تراکنش ها را تأیید کنند.
اما اگر هرگز کلید خصوصی را به جایی نمی فرستید ، چگونه می توانید از کلید خصوصی برای تأیید اعتبار معامله استفاده کنید؟ پاسخ مربوط به رابطه ریاضی بین کلیدهای خصوصی و عمومی است: امضاهای رمزنگاری.
امضاهای رمزنگاری
چندین روش مختلف برای تولید و اعتبار سنجی امضاهای رمزنگاری وجود دارد و قضیه های ریاضیاتی که به آنها امکان کار می دهد بسیار فراتر از محدوده این مقاله است. برای افرادی که با رمزنگاری آشنا نیستند ، روندی که در اینجا شرح داده شده ممکن است در ابتدا کاملاً غیرممکن به نظر برسد. من به وضوح به یاد می آورم که وقتی چهار سال پیش تحقیق خود را درباره بیت کوین آغاز کردم ، این برداشت را داشتم.
در حال حاضر من به سادگی یادآوری می کنم که این فن آوری ها در بسیاری از پروتکل های رایج اینترنت استفاده می شود و بخشی تثبیت شده در علم اطلاعات است.
تصور کنید دو نفر به نام های آلیس و باب که قبلاً شخصاً با کلیدهای عمومی معامله کرده اند. آلیس می خواهد به باب پیامی بفرستد ، اما باب شخص بسیار مشکوکی است و اعتماد نخواهد کرد که پیام از طرف آلیس ارسال شده باشد مگر اینکه بتواند آن را از نظر ریاضی اثبات کند ، فراتر از هرگونه تردید. برای تسهیل این اثبات ، آنها موافقت می کنند که از یک امضای رمزنگاری استفاده کنند.
برای تولید امضا ، آلیس از الگوریتم تولید امضای رایانه خود استفاده می کند که کلید خصوصی و پیام کامل وی را به عنوان ورودی در نظر می گیرد و امضای رمزنگاری تولید می کند. او سپس این پیام / امضا را به باب می فرستد – اما بسیار مهم, کلید خصوصی او را ارسال نمی کند.
وقتی باب پیام و امضا را دریافت می کند ، یک الگوریتم اعتبار سنجی امضا برای استفاده دارد. این الگوریتم پیام و امضا را به عنوان ورودی می گیرد و تعیین می کند عمومی کلید جفت کلید که آلیس برای تولید امضا استفاده کرده است. هنگامی که باب می بیند که الگوریتم خود کلید عمومی آلیس را دارد ، از نظر ریاضی ثابت کرده است که امضا باید با صفحه کلید آلیس تولید شده باشد ، حتی اگر نیمه خصوصی کلید آلیس را نمی داند و نمی تواند محاسبه کند.
خلاصه تر بگویید, این فرایند امضای رمزنگاری به باب اجازه می دهد تا تأیید کند که پیام توسط شخص ثالثی ایجاد نشده یا اصلاح نشده است و باید با کلید خصوصی آلیس تولید شده باشد ، بدون اینکه مجبور به دانستن کلید خصوصی خود باشد تمام آنچه که او نیاز دارد ترکیب پیام / امضا و کلید عمومی او است.
بصری ، این کار غیرممکن به نظر می رسد و ممکن است احساس کنید گویی چیزی را اشتباه فهمیده اید. اگر کلیدهای خصوصی و عمومی آلیس به هم نزدیک هستند و آلیس از کلید خصوصی خود برای تولید امضایی که باب دریافت می کند استفاده کرد ، چگونه می تواند کلید عمومی او را استخراج کند اما نمی تواند کلید خصوصی او را پیدا کند؟ پاسخ به این مسئله به درک عمیق تری از ریاضیات نسبت به اکثر مردم نیاز دارد و بسیار خارج از محدوده این کتاب است.
هنوز هم ، این روش هر روز مورد استفاده قرار می گیرد و مورد استفاده قرار می گیرد و در جامعه رمزنگاری جامد محسوب می شود. وقتی از وب سایتی بازدید می کنید و آدرس آن با https شروع می شود ، “s” نشان می دهد که سایت با امضای رمزنگاری شده اعتبار خود را تأیید کرده است. رایانه شما از الگوریتم اعتبار سنجی امضا استفاده کرد ، دقیقاً مانند باب در مثال بالا ، برای تأیید اینکه وب سایت واقعاً از جفت کلید مناسب آمده است. به این امضای رمزنگاری اعتماد می شود تا اطمینان حاصل شود که هرگونه تعامل بیشتر بین شما و وب سایت رمزگذاری شده و معتبر است. در صورت عدم موفقیت این تست ، مرورگرهای مدرن به شما هشدار می دهند و وب سایت را به عنوان خطرناک پرچم گذاری می کنند.
تعداد کافی کافی
پیش از این ، من به طور خلاصه اشاره کردم که کلیدهای خصوصی و عمومی مانند نام کاربری و رمزهای عبور کار می کنند ، اما در واقع چیزهای بیش از حد زیادی با یک رابطه ریاضی خاص نیستند. با توجه به این ، من اغلب سوالات زیر را می پرسم
“آیا کسی نمی تواند فقط یک کامپیوتر را حدس بزند ، یا تعداد آنها را بشمارد و آنها را به عنوان کلیدهای خصوصی امتحان کند؟ آیا آنها سرانجام از طریق یک کلید خصوصی از برخی از کلیدهای جفت هدفمند برخورد نمی کنند و بدین ترتیب بر این هویت کنترل می کنند؟ ” در واقع ، در مورد بیت کوین ، این امر به یک مهاجم امکان می دهد تا پولی را که در برخی جفت کلیدها نگهداری می کند ، بدزدد.
این یک سوال خوب است ، و با این حال این اتفاق نمی افتد. همانطور که قبلاً گفته شد ، چندین آدرس Bitcoin با میلیونها دلار BTC وجود دارد که طی سالها جابجا نشده است – حتی اگر تمام چیزهایی که برای سرقت آن لازم است کلید خصوصی مناسب است – تعداد عظیم درست! اگر می توانید کلید خصوصی آن آدرس ها را حدس بزنید ، پول مال شماست که به هرجایی ارسال کنید. برخلاف رمزعبور ، شما می توانید کلیدهای خصوصی را به صورت محلی بر روی دستگاه خود بررسی کنید و هیچ سروری محدود نمی کند که چند بار یا سرعت آنها را امتحان کنید.
پس چرا هنوز کسی این وجوه را دزدیده است؟ پاسخ در اندازه تقریباً پوچ اعدادی است که به عنوان کلیدهای خصوصی استفاده می شود. آن ها هستند به اندازه کافی عظیم.
بیایید با یک آزمایش ساده فکری شروع کنیم. تصور کنید کلید خصوصی شما فقط به اندازه کافی بزرگ بود که اگر تمام رایانه های دنیا با هم کار کنند ، 24 ساعت کامل طول می کشد تا bruteforce حدس بزنند. اگر فقط یک رقم دیگر به کلید خصوصی خود اضافه کنید ، ده برابر تغییر برای رایانه ها وجود دارد ، بنابراین به جای یک روز 10 روز طول می کشد. شش رقم دیگر می تواند آن را به 27000 سال برساند.
در هر حالت ، تولید کلید خصوصی – که فقط به توانایی ایجاد اعداد تصادفی نیاز دارد – پیش پا افتاده است. استفاده از کلید خصوصی برای تولید امضا و همچنین بررسی این امضاها در برابر کلید عمومی ، از نظر محاسباتی نیز ساده است. اما کار مورد نیاز برای حدس زدن کلید خصوصی با هر رقم اضافی رشد نمایی می کند. برای اینکه “کلیدهای خصوصی” در برابر حدس زدن بی رحمانه “ایمن” نباشند ، ما فقط باید به اندازه کافی رقم اضافه کنیم – فقط باید آنها را به اندازه کافی بزرگ کنیم.
بنابراین چقدر عظیم به اندازه کافی عظیم است? کلیدهای خصوصی مورد استفاده در بیت کوین عدد صحیح 256 بیتی است که به عددی با طول هفتاد و شش رقم می رسد. قدرت اندازه این عدد باورنکردنی است. تصویر زیر به شدت از کتاب بروس اشنایر گرفته شده است رمزنگاری کاربردی, و نمایشی جذاب از تعداد کافی کافی است.
اول ، تشخیص دهید که نتیجه خاص قانون دوم ترمودینامیک این است که حداقل انرژی لازم برای تغییر یک بیت واحد اطلاعاتی (تغییر 1 به 0 یا بالعکس) مورد نیاز است. این بدان معناست که هر فرآیند محاسبه ، صرف نظر از سخت افزار مورد استفاده ، به حداقل انرژی نیاز دارد.
حال فرض کنید شما قادر به استفاده از کل انرژی خروجی خورشید برای تأمین انرژی یک کامپیوتر مخصوص طراحی شده هستید که وظیفه آن شمارش یا حدس زدن کلیدهای خصوصی است ، به امید یافتن کلید خصوصی یک جفت کلید (که ممکن است BTC را کنترل کند).
با استفاده از کمی ریاضی و ترمودینامیک خواهید فهمید که یک کامپیوتر کاملاً کارآمد با توجه به کل انرژی سالانه خورشید ، می تواند مقدار 2178 را محاسبه کند. اگر این مقدار را به تعداد کلیدهای خصوصی احتمالی ، 2256 تقسیم کنیم ، متوجه می شویم که این رایانه فرضی فقط قادر به حدس زدن یا شمارش از طریق 0.000000000000000000000003٪ تعداد کل کلیدهای خصوصی احتمالی است – با توجه به کل انرژی سالانه خروجی خورشید.
علاوه بر این ، این فقط در حال شمارش است و شامل کار پیچیده تری نیست که در واقع بررسی هر کلید خصوصی برای بررسی اینکه آیا با کلید عمومی مناسب مطابقت دارد یا خیر. بنابراین به احتمال 0.0000000000000000000003٪ این کامپیوتر در انتهای یک سال از طریق کلید خصوصی سمت راست اتفاق می افتد ، حتی متوجه آن نخواهد شد.
این اعداد هیچ ارتباطی با فناوری دستگاهها ندارند. اینها حداکثر امکاناتی هستند که طبق قوانین ترمودینامیکی که از دهه 1930 تاسیس شده امکان پذیر است. و آنها به شدت دلالت دارند که حملات بی رحمانه علیه کلیدهای 256 بیتی (که بیت کوین از آنها استفاده می کند) غیرقابل اجرا خواهد بود تا زمانی که رایانه ها از چیزی غیر از ماده ساخته شوند و چیزی غیر از فضا را اشغال کنند..
این قدرت تعداد کافی کافی است. مهم نیست که یک هکر چقدر خوب است. تا زمانی که او نتواند قدرت سیصد خورشید جنسی را به مدت یک سال یا یک خورشید را به مدت سیصد سال خورشیدی مهار کند ، کامپیوتر او حتی نمی تواند شمردن از طریق تمام کلیدهای خصوصی – چه رسد به آزمایش یا استفاده از آنها.
برای نگاهی عمیق تر به بیت کوین و رمزنگاری ، کتاب Logan Brutsche را انتخاب کنید, راهنمای Layman برای بیت کوین.