هش یک مقدار یا مجمومه ای از مقادیر است که با استفاده از یک تابع ریاضی تولید شده است
هشینگ روشی برای ایجاد امنیت درطول پردازش انتقال پیام است در مواقعی است که قصد داریم پیام را فقط برای یک فرد خاصی ارسال کنیم. هش توسط یک فرمول ایجاد می شود که از امنیت انتقال پیام در برابر مداخله محافظت می کند.
دانستن اینکه بلاکچین هشینگ چطور کار میکند اهمیت دارد. به هر حال، برای انجام این کار ما ابتدا لازم است یکی از اصول بنیادی که در ایجاد بلاکچین نقش دارد را درک کنیم. فناوری بلاکچین یکی از نوآورانه ترین و مهمترین کشفیات قرن پیش است که می تواند دنیای آینده را متحول کند. نگاهی به نفوذی که این فناوری در چند سال اخیر داشته و همچنین تاثیری که در آینده خواهد داشت، نشان می دهد که این ادعای فوق اغراق آمیز نبوده و واقعیت دارد. برای درک بهتر می توان به عملکرد ارزرمزهای گوناگونی مانند اتریوم و بیتکوین نگاهی داشته باشیم.
به بیان ساده، هشینگ به معنی گرفتن یک ورودی با فرمت متن با هر تعداد کلمات و ارائه یک خروجی با طول ثابت است. در زمینه ارزرمزهایی مانند بیتکوین مبادلات بعنوان یک ورودی دریافت می شوند و بصورت یک خروجی هشینگ (برای مثال بیت کوین از SHA-256 استفاده می کند) خلاصه می شوند که خروجی ای با طول ثابت می دهد.
حالا، ببینیم هشینگ چطور کار می کند. در حال حاضر قصد داریم ورودی های معینی را وارد کنیم. برای این تمرین، ما می خواهیم از SHA-256 استفاده کنیم. (الگوریتم هشینگ ایمن 256)
همانطوری که می بینیم، در مورد SHA-256، مهم نیست که ورودی شما چقدر بزرگ یا کوچک باشد، خروجی همیشه یک طول ثابت 256 بیتی خواهد داشت. این قضیه زمانی خیلی حیاتی میشه که شما با حجم عظیمی از داده ها و مبادلات سروکار داشته باشید. بنابراین، شما به جای اینکه این داده ورودی را بخاطر داشته باشید، فقط کافی است آن هش یا مسیر آن را بخاطر داشته باشید. خب، قبل از اینکه خیلی پیش برویم لازم است ما ابتدا خصوصیات گوناگون توابع هشینگ را بدانیم و بفهمیم که چطور آنها در سیستم بلاکچین اجرا میشوند.
توابع هش رمزنگاری
یک تابع هش رمزنگاری یک کلاس خاص از توابع هش است که خصوصیات گوناگونی دارد که آن را برای رمزنگاری خیلی ایده آل می کند. برای اینکه بتوانیم یک تابع هش رمزنگاری را ایمن بدانیم لازم است یک سری خصوصیات معینی داشته باشیم. اجازه بدهید این خصوصیات را یک به یک خلاصه توضیح بدهیم.
خصوصیت اول: قطعی بودن
این خصوصیت به این معنی است که فرقی ندارد که شما چند بار یک ورودی معین را از طریق تابع هش اجرا می کنید، در هرصورت فقط همیشه همان نتیجه معین را خواهید گرفت. این موضوع به این دلیل که اگر شما در هر بار ، هش های مختلفی را بگیرید ، امکان پیگیری ورودی ها را نخواهید داشت ، بسیار حیاتی خواهد بود
خصوصیت دوم: محاسبه سریع
تابع هش باید این توانایی را داشته باشد که هش یک ورودی را خیلی سریع به ماه ارائه بدهد. اگر این فرایند به اندازه کافی سریع نباشد، پس این سیستم اثربخشی لازم را ندارد.
خصوصیت سوم: مقاومت پیش تصویر
آنچه مقاومت پیش تصویر بیان می کند این است که این امر شدنی نیست که H(A) معین بتواند A را در جایی که A ورودی و H(A) خروجی باشد، تعیین کند. به استفاده از کلمه شدنی نبودن به جای کلمه غیر ممکن توجه کنید. ما می دانیم که غیرممکن نیست که بتوانیم ورودی اولیه اصلی را از یک مقدار هش آن تعیین کنیم. بگذارید مثالی بزنیم.
فرض کنید شما دارید یک تاس را می چرخانید و خروجی هش عددی است که تاس نشان می دهد. چطور شما خواهید توانست تعیین کنید که عدد اولیه اصلی چه بوده است؟ خیلی ساده است که خیلی وقت بگذارید و هش تمام عداد از یک تا شش را بدست بیاورید و مقایسه کنید. چون توابع هش قطعی هستند نه احتمالاتی، هش یک ورودی معین همیشه یکسان خواهد بود. بنابراین، شما می توانید به سادگی تمام هش ها را مقایسه کنید و بفهمید که ورودی اصلی اولیه چه بوده است.
اما این موضوع فقط در مواقعی صدق می کند که دامنه اعداد محدود و مشخص باشد. اما اگر یک حجم عظیمی از داده داشته باشید چه باید بکنید؟ فرضا با یک هش 128 بیتی سروکار دارید. تنها روشی که شما می توانید با استفاده از آن ورودی اولیه اصلی را بدانید تکنیک بورت فورث است. بورت فورث اساسا به این معنی است که شما باید یک ورودی را بطور اتفاقی انتخاب کنید و آن را هش کنید و خروجی آن را با نتیجه مقایسه کنید و این فرایند را تکرار کنید تا ببینید که با کدام مقدار جور در می آید.
اگر این روش را استفاده کنید چه اتفاقی می افتد؟
سناریوی بهترین حالت: شما در اولین موردی که امتحان می کنید پاسخ را پیدا می کنید. اگر یک همچین اتفاقی بیافتد باید بگویم که شما یکی از خوش شانس ترین افراد جهان هستنید. درصد احتمال رخداد این حالت خیلی نجومی است.
سناریوی بدترین حالت: شما پاسخ را بعد از 2 به توان 128 بار امتحان کردن پیدا می کند. عملا این به این معنی است که شما جواب را در انتهای داده های خود پیدا می کنید. یعنی همه موارد را امتحان می کنید که جواب را نمی یابید و آخرین مورد جواب شما است.
سناریوی حالت میانه: شما پاسخ را در جایی در وسط امتحان کردن ها می یابید یعنی بعد از 2^128/2 = 2^127 بار امتحان کردن. برای این که بهتر درک کنید چیزی حدود 2^127 = 1.7 X 10^38 ، یعنی رقم خیلی بالایی.
بنابراین، درحالیکه این امکان وجود دارد که شما مقاومت پیش تصویر را از طریق روش بورت فورث بشکنید، این روش انقدر وقت گیر است که اهمیت ندارد
نرخ هش چیست؟
نرخ هش اساسا به این معنی است که این عملیات هشینگ در زمان ماینینگ چقدر سریع انجام می گیرد. یک نرخ هش بالا به این معنی است که افراد و ماشین های نرم افزاری بیشتری در این کار درگیر بوده و بطور یکنواخت تری جریان داشته است. اگر نرخ هش خیلی سریع باشد سطح دشواری افزایش می یابد. اگر نرخ هش خیلی کند باشد سطح دشواری کاهش می یابد.
برای خواندن ادامه این مطلب و مطالب مشابه از ماینرزکمپ دیدن بفرمایید
- ۹۸/۰۴/۰۵