رمزنگاری در لغت به معنی انجام فرایندی به جهت مخفیسازی یک پیام در داخل یک داده کدگذاری شده برای ارسال اطلاعات بهصورت امن است. امروزه با پیشرفت تکنولوژی رمزنگاری، بهخصوص رمزنگاری ارزهای دیجیتال، بعضا سوالاتی بهوجود میآید که با پیدایش رایانههای کوانتومی چه بلایی بر سر کلید خصوصی کیفپولها و در کل رمزنگاری ارزهای دیجیتال میآید؟ کلید خصوصی با الگوریتم فعلی چقدر میتواند در برابر این ابر رایانهها ایمن باشند؟ آیا رایانههای کوانتومی پایانی برای دنیای ارزهای دیجیتال خواهند بود؟
در ادامه مطالب به تمامی این سوالات پاسخ داده خواهد شد.
آشنایی با رمزنگاری ارزهای دیجیتال
برای آنکه بدانیم رایانههای کوانتومی چه تاثیری برروی کلیدهای خصوصی میگذارند و با نحوه رمزنگاری در ارزهای دیجیتال آشنا شویم، ابتدا شما را با مفاهیم پایه در مورد الگوریتمهای رمزنگاری، آشنا میکنیم. یکی از این مفاهیم hash است.
اصطلاحhash بهچه معناست؟
منظور از hash در مورد رمزنگاری ارزهای دیجیتال، کد کردن دادهها با امنیت بالا است. فرض کنید یک متن رشتهای وجود دارد که در اثر اعمال یک الگوریتم رمزنگاریشده، توانستهایم این متن رشتهای را به یک مجموعه رشته کدگذاریشده دیگر تبدیل کنیم. این مجموعه رشته تولید شده جدید، به عنوان hash در نظر گرفته میشود.
این رشته متنها که در آن یک عملگر ریاضی وجود دارد، میتواند دادههای ورودی مانند حروف، اعداد، تصاویر و... را به صورت رمزنگاریشده تبدیل و در اختیار ما قرار دهند.
بهعنوان مثال یک هش میتواند کلمه "سلام" را دریافت و پس از انجام عملیات هش کردن بهصورت زیر نمایش دهد:
(00000000000000000005ad33848ca31aaa6e0574cc163cc358c3f45b5f0381e0)
نکتهای که در اینجا وجود دارد این است که مهم نیست طول دادههای وررودی شما به چه اندازه باشد. چه یک کلمه و یا چند جمله، هر دو به همین شکل نمایش داده میشوند.
به عبارت دیگر شما میتوانید چندین پیام مختلف را نیز در یک هش قرار بدهید. این مسئله زمانی اهمیت پیدا میکند که با تعداد زیادی داده ورودی طرف باشیم. بنابراین میتوانیم بهجای ذخیره همه دادههای ورودی بهصورت مجزا (که میتوانند بسیار حجیم و جاگیر باشند) معادل هش آن را ذخیره کنیم که حجم کمتری را اشغال میکنند؛ همچنین پیگیری و جستجوی آنها را نیز برایمان آسانتر میکند.
خصوصیت دیگری که که در توابع هش وجود دارد این است که طول ثابت دارند. در واقع ما با اینکار امنیت را بالا بردهایم. زیرا کسی که سعی در رمزگشایی هش دارد، نمیتواند با دیدن خروجی هش به اندازه حجم اطلاعات در داخل آن پی ببرد. در جدول زیر میتوانید تاثیر مقدار و طول دادهها را بر هش خروجی مشاهده کنید:
الگوریتمهای رمزنگاری شده
الگوریتمهای رمزنگاری در ارزهای دیجیتال نیز بر همین اساس شکل گرفتهاند. تمام الگوریتمهای شکل گرفته دارای خصوصیات بارزی هستند که در ادامه مهمترین آنها را توضیح میدهیم:
تابع یکطرفه و سخت
همانطور که مشخص است توابع و الگوهای رمزنگاری باید بهصورتی باشند که تنها از ابتدا به انتهای آن رسید. در واقع کسی نباید بتواند به راحتی با در دست داشتن دیتای خروجی و انجام عملیات مهندسی معکوس، پی به دادههای ورودی الگوریتم ببرد.
بهطور مثال فرض کنید که ما 2 عدد میوه در اختیار داریم: یکی سیب و دیگری لیمو. به صورت تصادفی و کاملا مخفیانه، یکی از این میوهها را هش میکنیم. حالا شما چگونه میتوانید پی ببرید که ورودی ما کدام میوه بوده؟
از آنجایی که الگوریتمهای رمزنگاری دارای توابع مشخص و ثابت هستند، پس تمام کاری که باید انجام دهید، این است که ابتدا هش هر یک از میوهها را با هش که تصادفی انتخاب شده مقایسه کنید تا پی ببرید این هش مربوط به کدامیک بوده است.
بهنظر کار سختی نمیآید. حال فرض کنید تعداد میوهها را به 256 عدد افزایش دهیم. اینبار شما باید برای رسیدن به جواب مسئله، تعداد بیشتری از هشها را با خروجی اصلی مقایسه کنید تا پی به داده ورودی اصلی ببرید.
در واقع این عملیات بر اساس حدس و سعی و خطا و بهصورت تصادفی انجام میگیرد تا به نتیجه جواب نهایی برسیم. بنابراین اینکه میگویند توابع یکطرفه، به این معنی نیست که به هیچ وجه امکان رسیدن به داده اولیه از طریق خروجی وجود ندارد. بلکه به این معنی است که در واقع توابع، کار را برای رسیدن به جواب معادله سختتر میکنند.
قابلیت محاسبه سریع
توابع رمزنگاری درالگوریتمها باید به نحوی باشند که رایانهها بتوانند دادههای ورودی را به سرعت هش کرده و خروجی رمزنگاری شده را بسازند. زیرا هرچه محاسبه این توابع سختتر باشند، میزان زمان بیشتری برای تولید یک هش صرف میشود؛ که در نهایت باعث ناکارآمد شدن کل سیستم خواهد شد.
قطعی و مشخص بودن در نتایج
توابع باید به نحوی باشند که در مقابل یک ورودی مشخص همواره یک جواب معین داشته باشند و اگر دادههای ورودی هرچقدر هم که تکرار شوند، نتیجه خروجی باید همیشه ثابت و معین باشد. زیرا در غیر اینصورت با داشتن نتایج مختلف از یک داده ورودی، ردیابی و پیگیری اطلاعات غیرممکن خواهد بود.
انعطافناپذیری در مقابل تغییرات دادههای ورودی
توابع باید طوری باشند که با کوچکترین تغییر در دادههای ورودی، بهکلی خروجی متفاوتی را ارائه کنند. این موضوع در بحث ارزهای دیجیتال یکی از بارزترین شاخصههای بلاکچین را تشکیل میدهد که همان تغییرناپذیری و غیرقابل حذف و دستکاریشدن هشها در بلاکچین است.
غیر قابل تکرار بودن الگو
توابع یکطرفه با توجه به اینکه دارای ورودی منحصر به فردی هستند، باید طوری باشند که خروجیهای متفاوتی نیز ارائه دهند. به اینترتیب ما همواره هشهای متناظر با هر ورودی مشخص
خواهیم داشت و عملا احتمال وجود دو خروجی یکسان با ورودیهای مجزا غیرممکن است.
انواع الگوریتمها در ارزهای دیجیتال
با توجه به مطالب فوق در ارزهای دیجیتال ما انواع مختلفی از الگوریتمهای رمزنگاری شده داریم که در شبکه ماینینگ از این الگویتمها استفاده میشود. در ادامه به برخی از آنها اشاره میکنیم:
الگوریتم SHA-256
یکی از معروفترین الگوریتمهای رمزنگاری در ارزهای دیجیتال است که در بلاکچین بیتکوین و بیکتونکش و... نیز مورد استفاده قرار گرفته است. در واقع یک هش دیجیتال 256 بیتی را ایجاد میکند که در هر 10 دقیقه تمامی هشها را در یک بلوک ذخیره و آن را در بلاکچین ثبت میکند.
این الگوریتم در راستای پردازش بلوکهایی که ایجاد میکند، نیازمند قدرت محاسباتی گیگاهش بر ثانیه است. و برای انجام عملیات فقط به قدرت محاسباتی نیاز دارد که بسیار پرزحمت اما ایمن نیز هست.
الگوریتم Scrypt
این نوع الگوریتم رمزنگاری در ارزهای دیجیتال برای اولینبار بعد از بیتکوین و در کوینهایی مثل لایتکوین و دوجکوین و ... بهوجود آمد. در این الگوریتمها در مقابل الگوریتم SHA-256، این است که سرعت هش بیشتری برخوردار بوده که کارایی کل شبکه را افزایش میدهد. میزان قدرت مورد نیاز برای پردازش بلوکهای ایجاد شده، نیازمند قدرت محاسباتی کیلوهش بر ثانیه است که این موضوع، میزان راحتی کار با این شبکه، نسبت به شبکه بیتکوین را به ما نشان میدهد. همچنین این بلوکها فضای کمتری هم اشغال میکنند، که در حین استفاده از دادههای زیاد این موضوع کاملا بهچشم میآید.
الگوریتم X11
الگوریتم دیگری که بعد از بیتکوین در دنیای رمزنگاری ارزهای دیجیتال مطرح شد، الگوریتم X11 بود. این الگوریتم نیز همانند Scrypt عمل میکند. اما این الگوریتم با استفاده از تکنولوژی Private Send و با اعمال تغییراتی توسط ترکیب کردن هشهای هر بلوک با بلوکهای دیگر، به کاربر اجازه ناشناس بودن را حین انجام تراکنشها میدهد.
همچنین سابقه فعالیت و موجودی کاربران نیز غیرقابل دسترس خواهد بود. این الگوریتم یکی از موفقترین و محبوبترین الگوریتمهای رمزنگاری در ارزهای دیجیتال بهشمار میآید که در ارزهایی نظیر dash, start, PACcoin و... استفاده میشوند.
الگوریتم Ethash
یکی دیگر از الگوریتمهای معروف در بازار ارزهای دیجیتال، الگوریتم Ethash است که برای اولینبار در اتریوم مورد استفاده قرار گرفت. این الگوریتم در مقابل ماین توسط دستگاههای Asic مقاوم هستند. این الگوریتم در راستای پردازش بلوکهایی که ایجاد میکند، نیازمند قدرت محاسباتی مگاهش بر ثانیه است که به مراتب از SHA-256 سریعتر هست.
نکته حائز اهمیت در این الگوریتم اضافه کردن قراردادهای هوشمند به این سیستم بود که امروزه مورد توجه بسیاری از کاربران و پروژهها و استارتاپها قرار گرفته است. به همین دلیل ارزهای بسیار زیادی بر اساس همین الگوریتم ایجاد شدهاند که از جمله برخی از آنها میتوان به Eth, Etc, Etp, Music, و... نیز اشاره کرد.
حال که با انواع الگوریتمهای رمزنگاری در ارزهای دیجیتال آشنا شدیم، باید بررسی کنیم که این الگوریتمها چگونه عمل میکنند.
نحوه پیدایش کیف پولها
وقتی ارزهای دیجیتال بهوجود آمدند، ضرورت نگهداری از آنها نیز امری بدیهی بود. کیفپولها در ارزهای دیجیتال، درواقع مجموعهای از توابع و الگوهای رمزنگاری هستند که بهعنوان محل ذخیره و نگهداری ارزها در آن ساخته میشوند. همواره و در همهجا میبینیم و میشنویم که باید از کلید خصوصی کیف پول خود مراقبت کنیم و آن را به کسی ندهیم.
اما در حقیقت کیفپولها چگونه عمل میکنند؟
باید بدانیم که وقتی شما در کیف پول شخصیتان مقداری بیتکوین دارید، در حقیقت هیچ بیتکوینی بهصورت حقیقی در کیفپول شما وجود ندارد. در واقع عددی که ما در کیفپول بهعنوان موجودی میبینیم نتیجه دادههایی هستند که توسط الگوریتم شبکه، در بلاکچین هش شده و بهصورت عدد موجودی حساب در کیفپولها به ما نمایش داده میشوند.
کیفپولها در ارزهای دیجیتال از 3 قسمت کلید خصوصی و کلید عمومی و آدرس تشکیل شدهاند برای درک بهتر این سه قسمت باید مطلب را کمی بازتر کنیم:
آدرس والت چگونه ایجاد میشود
برای مثال فرض کنید شما در یک بانک حسابی دارید و میخواهید به حساب شخصیتان مقداری وجه واریز کنید. برای دادن اطلاعات حساب به شخص واریز کننده یا شما شماره کارت و یا شماره حساب خود را به وی میدهید و یکی از همین اطلاعات کافیاست تا واریز کننده قادر به انجام این تراکنش به حساب شما باشد.
در واقع تشابه این مثال در اینجا اتفاق میافتد که آدرس والت شما همان شماره کارت شماست و همانطورکه شماره کارت شما میتواند بارها و بارها تغییر کند آدرس کیفپول شما نیز به همین شکل هش میشوند پس میتوانید بدون محدودیت آدرس کیفپولهای مختلف مربوط به یک کیفپول را ایجاد کنید.
کلید عمومی
کلید عمومی شما در واقع به مانند شماره حساب بانکی شما است. همانطور که شما میتوانید برای واریز وجه به حساب خودتان از شماره حساب نیز استفاده کنید، در والتها نیز به همین شکل میتوانید از کلید عمومی بهعنوان آدرس کیف پول برای انجام تراکنش بهره ببرید. نکته دیگر اینکه همانطور که شما تنها یک شماره حساب ثابت در بانک دارید که هیچگاه تغییر نمیکند، در واقع در کیف پولها نیز کلید عمومی ثابت و غیرقابل تغییر هستند.
نکته مهم: بهدلیل شفافیت شبکه بلاکچین در امکان دنبال کردن تمامی تراکنشها، اگر شما از کلید عمومی خود برای انتقال استفاده کنید، بهدلیل ثابت بودن کلید عمومی و عدم امکان تغییر آن، این ریسک را کردهاید که تمامی تراکنشهای حساب خود را در معرض دید هکرها بگذارید. پس بهتر است برای انتقال از آدرس والتها استفاده کنیم. برای امنیت بیشتر در مقابل شناسایی نشدن توسط هکرها، برای هر انتقال آدرس والت جدیدی ایجاد و از آن استفاده کنیم.
کلید خصوصی
اما کلید خصوصی در اینجا به مانند رمز عبور شما است. همانطور که کسی بدون در اختیار داشتن رمز عبور (حتی با داشتن شماره کارت و شماره حساب به تنهایی) قادر به برداشت وجه از بانک شما نیست، به همین ترتیب نیز هیچکس بدون در اختیار داشتن کلید خصوصی قادر نخواهد بود تا به موجودی والت شما دست یابد.
با توجه به توضیحات فوق و نحوه هش و رمزنگاری در ارزهای دیجیتال، آدرس کیفپولها که همان خروجی هش شده ما هستند، از طریق فرآیند زیر بهوجود میآیند:
کلید خصوصی + کلید عمومی = آدرس کیف پول
توجه داشته باشید که هر کدام از این توابع خود نیز یک هش هستند. که در نهایت به هش خروجی، یعنی همان آدرس کیفپولها ختم میشوند.
پس با توجه به مطالب فوق میتوانیم به این نتیجه دست یابیم که در حقیقت با در اختیار داشتن آدرس کیف پول نمیتوان به کلید خصوصی و نهایتا موجودی کیف پولها دست یافت. و همچنین به اهمیت حفظ و نگهداری کلید خصوصی نیز پی بردیم.
اینکه بهترین و امنترین راه داشتن کیف پول چیست و چگونه از کلید خصوصیمان در مقابل هک شدن محافظت کنیم، درواقع مطالب مهمی هستند که در این مقاله نمیگنجند و باید در مقالهای جداگانه بهصورت کامل مورد بررسی قرار گیرند. در ادامه ما میخواهیم عملکرد الگوریتمهای رمزنگاری را در مقابله با رایانههای کوانتومی بررسی کنیم.
همانطور که تکنولوژی پیشرفت میکند و ابررایانهها تولید میشنود، الگوریتمهای رمزنگاری در ارزهای دیجیتال نیز پیچیدهتر و دست نیافتنی میشوند.
آیا رایانههای کوانتومی تهدیدی برای رمزنگاری در ارزهای دیجیتال به حساب میآیند؟
در سالهای اخیر احتمالا نام رایانههای کوانتومی (Quantum Computers) بیشتر از پیش به گوش ما رسیده. اینکه سرعت پردازش بسیار بالایی دارند و میتوانند کارهایی را که در حال حاضر با رایانههای معمولی سالها زمان میبرد، در چند دقیقه انجام دهند، بر کسی پوشیده نیست.
نحوه پیدایش ایده رایانههای کوانتومی
همانطور که پیداست، نام این نوع رایانهها از فیزیک کوانتوم نشات گرفته است. درواقع رایانههای فعلی با ترانزیستورها کار میکنند. اما ایده اصلی که در پس رایانههای کوانتومی نهفته، این است که در واقع این ابررایانه ها از خواص و قوانین فیزیک کوانتوم برای ذخیرهسازی و پردازش دادهها استفاده میکنند.
در واقع در یک رایانه کوانتومی به جای استفاده از ترانزیستورها و مدارهای یک رایانه معمولی، از اتمها و سایر ذرات ریز برای پردازش اطلاعات استفاده میشود. بهعنوان مثال یک اتم میتواند به عنوان یک بیت حافظه در رایانه عمل کند و جابجایی اطلاعات نیز از یک محل به محل دیگر توسط نور امکان میپذیرد. بهاین ترتیب رایانههای کوانتومی قدرت پردازشی ورای تصور ما را دارند.
حال که با نوع کارکرد و میزان تواناییهای این ابررایانهها آشنا شدیم، میتوانیم میزان تاثیر این ابررایانهها را بر امنیت در رمزنگاری ارزهای دیجیتال بررسی کنیم:
واقعیت این است که اگر با شرایط فعلی یک رایانه کوانتومی راهاندازی شود، میتواند در عرض چند دقیقه تمامی کلیدهای خصوصی والتهای بیتکوین دنیا را کشف و همه آنها را در اختیار خود درآورد. اما الگوریتم بیتکوین برای حل چنین مشکلی هم راهحلی ارائه داده است به نام "فورک".
در حقیقت الگوریتم بیتکوین از قانون توابع ثابت پیروی میکند. اما یک دیکتاتوری مطلق نیست و برای حل مشکلات این چنینی تعیین کرده که اکثریت افرادی که در شبکه بیتکوین فعال هستند (ماینرها)، میتوانند توابع را با اکثریت آرا موافق تغییر بدهند.
بدین ترتیب میتوان جلوی رایانههای کوانتومی را گرفت و امنیت شبکه را در مقابل این تهدید بالا برد.
چطور میتوان امنیت رمزنگاری والتها را با فورک افزایش داد؟
در واقع همانطور که توضیح دادیم، الگوریتمهای رمزنگاری در ارزهای دیجیتال نیز یکطرفه هستند.
به عنوان مثال فرض کنید که حاصل عبارت جمع دو مجهول x و y با هم عدد 21 است و شما میخواهید از جواب معادله پی به دادههای ورودی ما ببرید. کاری که میکنید این است که باید تمام اعدادی که حاصل عبارت جمع آنها باهم به عدد 21 ختم میشود را بهصورت تصادفی درون معادله قرار دهید تا نهایتا به جواب معادله برسید. این کار باید 44 حالت مختلف را بهصورت تصادفی برای x و y انتخاب کنید تا به جواب معادله دست یابید.
حال چه اتفاقی میافتد اگر ما تعداد مجهولها را به 256 عدد افزایش دهیم ولی جواب معادله همچنان عدد 21 باقی بماند؟
در واقع الگوهای رمزنگاری در فرآیند تولید کلیدهای خصوصی بیتکوین نیز به همین شکل عمل میکنند. در مثال قبل عدد 21 که نتیجه معادله بود، در واقع همان کلید خصوصی کیف پول ما و معادله چند مجهولی نیز همان الگوریتم رمزنگاری هستند.
حال با پیدایش رایانههای کوانتومی که باعث میشوند داراییهای ما با الگوریتم فعلی رمزنگاری ارزهای دیجیتال به خطر بیفتند، ما باید با ایجاد یک فورک در الگوریتم کلید خصوصی، حدس آنرا آنقدر دشوار کنیم که کار برای این ابر رایانهها نیز سخت شود. این نوع فورکها در نهایت دو نوع مختلف میتوانند صورت بگیرند که هرکدام نتیجه متفاوت در شبکه ایجاد خواهد کرد:
انواع فورکها:
بحث فورکها نیز خود به تنهایی دنیایی دارد که باید در چندین مقاله بهطور کامل به این موضوعات پرداخت. اما در اینجا بهطور خلاصه به انواع آن میپردازیم:
فورک نرم (Soft Fork)
در این نوع فورک ها معمولا تغییرات اساسی را شمال نمیشوند. برای مثال فرض کنید با برای سختتر کردن حل رمزنگاری اولیه فقط به افزودن تعداد مجهولها اکتفا کردیم که در نهایت جواب معادله تغییری نکرده. این نوع فورکها نیازی به آپدیت و یا اصلاح توسط کاربران را ندارد و همهچیز بهصورت اتوماتیک در داخل خود شبکه اعمال میشوند. در این حالت کلید خصوصی قبلی ما هنوز کار میکند. درحالیکه الگوریتم نیز پیچیدهتر میشود.
فورک سخت (Hard Fork)
این نوع فورکها برخلاف فورک نرم معمولا با تغییرات اساسی و بنیادین صورت میگیرد. در مثال قبل فکر کنید به غیر از افزایش تعداد مجهولها به الگوریتم، نوع عملیات و نتیجه آن را نیز با یک معادله واسطه تغییر دهیم.
مثلا در الگوریتم رمزنگاری اولیه بهجای انجام عملیات جمع، از ضرب و تقسیم نیز استفاده کنیم و حاصل آن را به یک الگوریتم دیگر با چند مجهول دیگر ضرب کنیم.
در این حالت اگر جواب معادله ما تغییری داشته باشد، نیاز به آپدیت از سمت کاربر است. به عبارت دیگر کلید خصوصی اولیه کاربر دیگر کارایی ندارد و او باید با قراردادن کلید خصوصی در معادله واسطه به کلید خصوصی جدید خود برسد.
به این ترتیب میتوان میزان امنیت رمزنگاری در ارزهای دیجیتال را در مقابل رایانههای کوانتومی نیز افزایش داد. این نکته را دقت کنید که برای حفظ امنیت والتها در مقابل هکشدن کلیدهای خصوصی، این فورکها باید قبل از راهاندازی این ابر رایانهها انجام شود.
جمعبندی
در نهایت میتوان گفت که همانطور که تکنولوژی پیشرفت میکند و ابررایانهها تولید میشنود، الگوریتمهای رمزنگاری در ارزهای دیجیتال نیز پیچیدهتر و دست نیافتنی میشوند.
بهعنوان مثال اگر برای هک کردن کلیدهای خصوصی با رایانههای فعلی صدها سال زمان مورد نیاز هست، حتما در آینده نزدیک و با پیچیدهتر شدن الگوریتمهای رمزنگاری در مقابل رایانههای کوانتومی، مقیاس این زمان به چندین هزار سال نیز افزایش خواهد یافت.
اگر مطالب مقاله فوق برایتان مفید بوده، لطفا آن را با دوستان خود به اشتراک بگذارید.
میتوانید ویدیوهای بیشتری از تالاربورس را در آپارات (شبکه اشتراک ویدیو) و همچنین کانال یوتیوب تالاربورس مشاهده کنید.
مطالب بسیار عالی
سلام
بسیار جالب بود
ممون
بسیار عالی بود
ممنونم
مقاله جالبی بود، به معلوماتم اضافه شد، سپاسگزارم
خوشحالم که برایتان مفید بوده
عالی بود