هش تراکنش چیست ؟
به پروسه ی تولید یک خروجی با اندازه ثابت از ورودی با اندازه های متغیر “هشینگ” گفته می شود . این عمل با به کارگیری فرمول های ریاضی معروف به توابع هش که به عنوان الگوریتم هشینگ اجرا می گردند ، انجام می شود .
با اینکه تمامی توابع هش فقط در ارزهای دیجیتال مورد استفاده قرار نمی گیرند ، ولی توابع هش رمزنگاری در هسته ارزهای دیجیتال واقع شدند . به خاطر این توابع ، بلاک چین و سیستم های توزیع شده ی دیگر ، نمی توانند به میزان قابل توجهی از درستی و امنیت داده ها برسند .
عملکرد هر دو توابع هش معمولی و رمزنگاری معلوم است یعنی تا وقتی که ورودی دستخوش تغییر نشود ، الگوریتم هشینگ همیشه همان خروجی را به وجود می آورد که به عنوان هش شناسایی می گردد .
اغلب طراحی الگوریتم های هشینگ ارزهای دیجیتال ، به عنوان توابع یک طرفه صورت گرفته اند ، یعنی اینکه بدون دارا بودن قدرت محاسباتی بالا و زمان زیاد ، به آسانی برگشت پذیر نمی باشند . به عبارت دیگر به وجود آوردن خروجی خیلی راحت تر از ورودی است ، ولی رفتن در مسیر مخالف(تولید ورودی فقط از خروجی) سخت است . در کل هر چقدر یافتن ورودی دشوار تر باشد ، الگوریتم هشینگ امن تر خواهد بود .
عملکرد تابع هش
توابع گوناگون هش ، خروجی هایی در مقیاس های مختلف تولید می نمایند ، ولی اندازه خروجی ممکن برای هر الگوریتم هشینگ ، همیشه ثابت می باشد . به طور مثال ، الگوریتم SHA-256 تنها قادر است خروجی های 256 بیتی تولید نماید ، این در حالیست که SHA-1 همیشه هش های 160 بیتی تولید می نماید .
توجه داشته باشید که یک تغییر خیلی کوچک (تغییر حرف اول از بزرگ به کوچک) ، به طور کامل هش متفاوت را به وجود خواهد آورد . اما چون که ما الگوریتم SHA-256 را مورد استفاده قرار می دهیم ، خروجی ها بدون در نظر گرفتن اندازه ورودی ، همیشه اندازه ثابت 256 بیت(یا 64 کاراکتر) را دارند . علاوه بر این ، اهمیتی ندارد که چندبار این دو کلمه را از طریق الگوریتم اجرا نماییم ، این دو خروجی ثابت خواهند بود .
برعکس در صورتی که ورودی های شبیه به هم را از طریق الگوریتم هش SHA-1 اجرا نماییم ، نتایج زیر به دست خواهد آمد :
کلمه SHA مخفف کلمه Secure Hash Algorithms می باشد که اشاره به مجموعه ای از توابع هش رمزنگاری دارد که شامل الگوریتم های SHA-0 و SHA-1، به همراه گروه های SHA-2 و SHA-3 است . هم اکنون فقط گروه های SHA-2 و SHA-3 امن در نظر گرفته می شوند .
دلیل اهمیت آنها چیست ؟
توابع هش معمولی موارد استفاده گسترده ای مثل جستجو در پایگاه داده ، تجزیه و تحلیل فایل های بزرگ و مدیریت داده ها دارند . از طرفی هم توابع هش رمزنگاری به صورت گسترده در اپلیکیشن های اطلاعات امنیتی همچون تایید درستی پیام و اثر انگشت دیجیتال مورد استفاده قرار می گیرند . هنگامی که از بیت کوین صحبت می شود ، توابع هش رمزنگاری قسمت مهمی از پروسه ی استخراج می باشند و همینطور در ایجاد آدرس ها و کلیدهای جدید نقش آفرینی می کنند .
قدرت واقعی هش ها زمان رویارویی با اطلاعات بزرگ به دست می آید . به طور مثال می توان یک فایل بزرگ یا مجموعه ای از داده ها را از طریق یک تابع هش اجرا نمود و بعد از خروجی آن به منظور تایید سریع صحت و درستی داده ها بهره گرفت . امکان این موضوع به علت ماهیت قطعی توابع هش وجود دارد : دادن ورودی همیشه موجب یک خروجی ساده و فشرده شده می گردد . این شیوه ، نیاز به ذخیره و یا به یاد سپردن میزان بسیاری اطلاعات و داده ها را حل می نماید .
هشینگ در بستر فناوری بلاک چین نیز مفید می باشد . بلاک چین بیت کوین چندین عملیات را از طریق هشینگ انجام می دهد که اکثریت آنها در مراحل استخراج واقع شده است . در واقع به طور تقریبی کلیه ی پروتکل های ارزهای دیجیتال جهت به وجود آوردن ارتباط و متراکم نمودن اطلاعات دسته ای از تراکنش ها در بلاک ها و همینطور جهت به وجود آوردن ارتباط رمزنگاری میان هر بلاک ، جهت به وجود آوردن بلاک چینی موثر ، به هشینگ متکی شده اند .
توابع هش رمزنگاری
یک تابع هش که تکنیک های رمزنگاری را مورد استفاده قرار می دهد ، امکان دارد به عنوان یک تابع هش رمزنگاری تعریف گردد . در کل شکستن یک تابع هش رمزنگاری نیازمند نیروی محاسباتی بالایی است . برای این که شخصی قادر به حدس زدن تابع هش رمزنگاری باشد ، می بایست از طریق صحیح و خطا به قدری ورودی را حدس بزند تا به خروجی هش دست یابد . با این وجود ، ممکن است که ورودی های گوناگون خروجی یکسانی را به دست دهند ، که در این صورت تلاقی(collision) اتفاق می افتد .
پیش از آنکه در خصوص هر ویژگی صحبت نماییم ، بگذارید منطق آنها را در سه جمله خلاصه وار بیان نماییم .
- مقاومت در مقابل تلاقی : دشوار شدن دارا بودن دو ورودی گوناگون که یک خروجی یکسان را بدهند .
- مقاومت معکوس : امکان پذیر نبودن معکوس نمودن تابع هش(یافتن ورودی از طریق خروجی)
- مقاومت معکوس ثانویه : دستیابی به ورودی ثانویه ای که با ورودی اصلی تلاقی دارد ، امکان پذیر نیست .
مقاومت در مقابل تلاقی
همانگونه که عنوان شد تلاقی هنگامی اتفاق می افتد که ورودی های گوناگون خروجی هش یکسانی را بدهند . پس یک تابع هش تا وقتی که فردی در لحظه ، تلاقی را نیابد ، در برابر تلاقی مقاوم است . به این نکته دقت کنید که تلاقی برای هر تابع هش همیشه وجود خواهد داشت ، چراکه ورودی های احتمالی بینهایت می باشند ، در حالی که خروجی های ممکن محدود هستند .
یعنی زمانی که امکان یک تلاقی به قدری کم باشد که نیازمند انجام محاسبات در طول میلیون ها سال باشد ، تابع هش را در برابر تلاقی مقاوم می کند . پس با وجود اینکه هیچ تابع هشی بدون تلاقی نخواهد بود ، بعضی از توابع به قدری قوی می باشند که مقاوم در برابر تلاقی مدنظر گرفته می شوند(مانند تابع هش SHA-256) .
در میان الگوریتم های گوناگون SHA ، گروه های SHA-0 و SHA-1 دیگر ایمن نمی باشند ، چراکه تلاقی در این گروه زیاد یافت شده است . هم اکنون گروه های SHA-2 و SHA-3 مقاوم در برابر تلاقی در نظر گرفته می شوند .
مقاومت معکوس
ویژگی مقاومت معکوس مربوط به ویژگی یک طرفه بودن توابع می شود . هنگامی که احتمال بسیار کمی وجود دارد که کسی قادر باشد از طریق خروجی به ورودی دست یابد ، یک تابع هش مقاوم در برابر معکوس شدن تلقی می شود .
توجه داشته باشید که این ویژگی با مورد قبلی متفاوت است، زیرا در اینجا یک مهاجم سعی می کند تا ورودی را از طریق خروجی حدس بزند . اما تلاقی زمانی است که فردی دو ورودی را پیدا کند که خروجی یکسانی بدهند و فرقی نمی کند که از کدام ورودی استفاده شود .
خاصیت مقاومت در برابر معکوس شدن برای محافظت از داده های بسیار ارزشمند است ، زیرا یک هش ساده از یک پیام می تواند صحت آن را بدون نیاز به افشای اطلاعات ، اثبات کند . در عمل بسیاری از ارائه دهندگان خدمات و برنامه های وب به جای استفاده از پسوردهای ساده ، از هش های تولید شده به عنوان کلمه عبور و ذخیره اطلاعات مهم بهره می گیرند .
مقاومت در برابر روند معکوس ثانویه
جهت ساده تر شدن درک این ویژگی می توان بیان کرد که این ویژگی چیزی میان دو ویژگی پیشین است . این حمله وقتی اتفاق می افتد که شخصی غیر از ورودی که حالا معلوم است قادر باشد ورودی دیگری را که همان خروجی را به دست می دهد ، تولید نماید .
به عبارت دیگر یک حمله معکوس ثانویه شامل یافت یک تلاقی است ؛ اما به جای جستجوی دو ورودی تصادفی که موجب به وجود آمدن یک هش یکسان می گردند ، آنها ورودی را جست و جو می نمایند که همان خروجی را تولید می کند .
پس هر تابع هشی که در برابر تلاقی مقاوم باشد ، در برابر حملات ثانویه معکوس هم مقاوم خواهد بود . با این وجود ، هنوز هم انجام این حمله امکان پذیر است ، چون این موضوع به معنای یافتن یک ورودی واحد از یک خروجی است .
استخراج
بیت کوین دارای مراحل استخراج بسیار زیاد است که در توابع هش واقع شده است . مانند چک کردن مانده حساب ، ارتباط میان تراکنش های ورودی و خروجی و تراکنش های هشینگ درون یک بلاک که درخت مرکل را شکل می دهد . ولی یکی از پراهمیت ترین دلایل ایمن بودن بلاک چین بیت کوین ، در واقع این است که مستلزم انجام دادن استخراج پرهزینه ی عملیات هشینگ زیادی است تا بتواند راهکار معتبری جهت حل بلاک بعدی بیابند .
به گونه ای خاص ، یک استخراج کننده زمان به وجود آوردن یک هش برای یک بلاک خاص ، چندین ورودی گوناگون را مورد امتحان قرار می دهد . در حقیقت آنها فقط در صورت به وجود آمدن یک هش خروجی که با تعداد مشخصی صفر شروع می گردد ، قادر هستند بلاک مورد نظر خود را مورد تایید قرار دهند . تعداد صفرها همان چیزی است که سختی استخراج را مشخص می کند و با در نظر گرفتن میزان قدرت هشی که به شبکه اختصاص داده شده ، تفاوت دارد .
در این حالت ، نرخ هش نشان دهنده ی میزان قدرت محاسباتی می باشد که اختصاص به شبکه استخراج بیت کوین داده شده است . در صورتی که نرخ هش شبکه افزایش پیدا کند ، پروتکل بیت کوین به صورت اتوماتیک سختی استخراج را به گونه ای تنظیم می کند که میانگین زمان مورد نیاز برای استخراج هر بلاک نزدیک به 10 دقیقه باقی بماند . برعکس ، در صورتی که چند استخراج کننده بخواهند که از شبکه خارج گردند ، نرخ هش به مقدار جالب توجهی کاهش پیدا می کند . در نتیجه سختی استخراج تنظیم می گردد و کار برای استخراج کنندگان آسان تر می شود (تا زمان متوسط 10 دقیقه برای استخراج هر بلاک ثابت باقی بماند) .
به دلیل اینکه استخراج بیت کوین کار خیلی هزینه برداری است ، استخراج کنندگان دارای دلیلی جهت تقلب در سیستم نمی باشند ، چون این موضوع موجب خسارت مالی جالب توجهی خواهد شد . هر چقدر استخراج کنندگان بیشتری به بلاک چین اضافه شوند ، شبکه بزرگتر و پرقدرت تر خواهد شد .
هش تراکنش
هش تراکنش یا txid شناسه ای می باشد که جهت تشخیص و شناسایی یک تراکنش خاص به کار گرفته می شود . تمامی تراکنش هایی که بر روی زنجیره صورت می گیرند ، txid منحصر به فردی دارند که می توان از طریق آن جزئیات تراکنش را دید . هش تراکنش شبیه مجموعه ای از حروف و اعداد تصادفی می باشد .
با توجه به نوع ارز دیجیتال ، می توانید از جستجوگرهای متفاوت بلاک بهره بگیرید . در زیر طریقه ی استفاده از جستجوگر viabtc برای بیت کوین به شکل تصویری شرح داده شده است . شما این امکان را دارید که با داشتن آدرس کیف پول مبدا و یا مقصد ، تراکنش های آن را مورد بررسی قرار دهید . علاوه بر این ، با ورود به هش تراکنش به جزئیات تراکنش می رسید .
نتیجه گیری
بی تردید توابع هش ابزاری مهم و کاربردی در علم کامپیوتر میباشند ، به خصوص زمان رویارویی با حجم عظیم داده ها . الگوریتم های هشینگ هنگامی که با خصوصیات رمزنگاری ترکیب شوند می توانند به طور کامل متنوع باشند و درستی و امنیت را به شیوه های گوناگونی ارائه دهند . توابع هش رمزنگاری نیز برای تمامی شبکه های ارزهای دیجیتال دارای اهمیت هستند . بنابراین فهمیدن ویژگی ها و مکانیسم کار آنها قطعا برای هر کسی که به فناوری بلاک چین علاقه داشته باشد ، مفید می باشد .
دیدگاهتان را بنویسید