رفتن به نوار ابزار

بلاک چین و ارزهای دیجیتال (بخش دهم: هش بلاک و ارتباط آن با بلاک‌چین و الگوریتم‌های مرتبط با آن)

بلاک چین

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

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

هش بلوک در فناوری بلاک‌چین می‌تواند دو مزیت زیر را داشته باشد:

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

اگر به تعریف تابع هش دقت کنیم (تبدیل هر رشته ورودی با طول دلخواه به یک رشته با طول ثابت) واضح است که غیر ممکن است بتوان تابع هشی که برخورد نداشته باشد، ساخت. عدم برخورد به آن معناست که دو رشته متفاوت پیدا شوند که هش یکسان داشته باشند. اگر در نظر بگیریم که خروجی تابع هش به صورت هگزادسیمال بوده و خروجی تابع هش ۶۴ کاراکتر باشد، تنها به تعداد ۶۴ عدد ترکیب ممکن داریم. به عبارتی برای چنین تابعی تنها همین‌قدر حالت ممکن است و بعد از آن قطعا می‌توان دو رشته با هش یکسان پیدا کرد. این موضوع از اصل لانه کبوتری هم مشخص است که به موجب آن نمی‌توان بی‌نهایت ترکیب متفاوت را به تعداد مشخصی کاراکتر تصویر کرد به گونه‌ای که هیچ دو موردی تصویر یکسان نداشته باشند. اما این ویژگی به ان معناست که باید یافتن این تصادم بسیار سخت بوده و تنها از طریق آزمایش تمام ترکیبات، ممکن شود. مقاومت در برابر تصادم یا برخورد دربرگیرنده مقاومت در برابر حملات Preimage نوع دوم است و شرطی قوی‌تر از این شرط محسوب می‌شود. ساخت یک هش خروجی مقاوم در برابر تصادم از رشته ورودی با طول دلخواه معمولا توسط الگوریتمی انجام می‌شود که به درخت مرکله-دامگارد مشهور است. روش کار این الگوریتم این است که رشته با طول نامشخص ورودی را به بخش‌هایی تقسیم کرده و بعد از طی برخی مراحل امنیتی هر یک از این بخش‌ها را تبدیل به هش کرده و با وارد کردن هش‌ها به تابع هش، رشته‌های ساده‌تر و کوتاه‌تری را در یک ساختار سلسله‌وار تولید می‌کند تا به هش کل پیام برسد. در بلاک چین هش‌ها به ازای بلوک محاسبه می‌شوند؛ که شامل تراکنش‌ها، اطلاعات هدر (مانند برچسب زمانی و نانس) و هش بلوک قبلی می‌شوند. به این ترتیب اگر کسی تلاش کند در یکی از بلوک‌ها به جز آخرین بلوک موجود در بلاک چین تغییری ایجاد کند، با توجه به ویژگی‌های گفته شده در بخش قبل (به طور خاص ویژگی چهارم) هش بلوک به طرز غیر قابل حدس زدنی تغییر می‌کند. این تغییر در هش بلوک موجب می‌شود فیلد «هش بلوک قبل» در بلوک بعدی که حاوی هش این بلوک است دچار عدم تطابق شود و اگر این هش را نیز تغییر دهیم لازم است هش بلوک بعدی نیز تغییر کند زیرا در واقع متن پیامی که منجر به هش شده است تغییر کرده است و این زنجیره تا انتهای بلاک چین گسترش می‌یابد. در اینجا سختی و مصرف منابع برای محاسبه هش جدید را در نظر نگرفته‌ایم و علاوه بر آن حمله کننده به این بلاک چین باید بتواند بعد از طی کردن تمامی این مراحل، که مستلزم هزینه هستند، در سایر نودهای نگهداری کننده پایگاه داده بلاک چین نیز این تغییرات را پیاده کند که باعث می‌شود بگوییم بلاک چین نسبت به تغییرات و دستکاری‌ها مقاوم و ایمن است.

مقالات مرتبط

پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *