هشینگ در ارزهای دیجیتال

گروه مربوطه : ارزهای دیجیتال
زیر گروه مربوطه : متفرقه
هشینگ در ارزهای دیجیتال

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

هویت سنجی و امضای دیجیتال

امضای دیجیتال یک مکانیزم رمزنگاری است که برای تایید صحت و اعتبارسنجی داده‌های دیجیتال مورد استفاده قرار می‌گیرد.

به بیانی دیگر، امضای دیجیتال را می‌توان به عنوان کدی که به پیام و یا سندی متصل است در نظر گرفت؛ کدی که اثبات می‌کند پیام در طول مسیر خود از فرستنده تا گیرنده دستکاری نشده است. اگر چه مفهوم تضمین امنیت ارتباطات با استفاده از علم رمزنگاری به دوران باستان باز می‌گردد، اما امضای دیجیتال به لطف توسعه رمزنگاری کلید عمومی در سال ۱۹۷۰ به واقعیت بدل شد.

همچنین بخوانید: مروری بر تاریخچه رمزنگاری و انواع روش‌های آن

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

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

بیشتر بخوانید: کلید خصوصی، کلید عمومی و آدرس بیت کوین چه تفاوتی با هم دارند؟

هش کردن داده‌ها

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

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

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

امضا کردن

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

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

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

صحت‌سنجی

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

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

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

تغییرناپذیری بلاک چین

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

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

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

برای تغییر یک بلاک در بلاک چین باید هش تمام بلاک های قبلی را هم تغییر داد چون هر بلاک علاوه بر هش خود، دارای هش بلاک قبلی هم هست.

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

ماینینگ

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

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

بنابراین، به منظور محدود کردن تولید بلاک، یک سطح دشواری مشخصی برای محاسبه و استخراج بلاک جدید در نظر گرفته می‌شود. استخراج شبیه به یک بازی است. شما معما را حل می‌کنید و جایزه می‌گیرید. در نظر گرفتن سختی، حل معما را دشوارتر و زمان‌برتر می‌کند. به عنوان مثال سختی هدف بیت کوین، یک رشته ۶۴ کاراکتری است که با چند صفر آغاز می‌شود. با افزایش سطح سختی استخراج، تعداد این صفرها نیز افزایش می‌یابد. سطح سختی پس از هر ۲۰۱۶ بلاک تغییر می‌کند.

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

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