زنجیره درهمسازی

دانشنامه عمومی

زنجیره درهمسازی یا زنجیره هش اعمال پیوسته تابع درهمساز رمزنگارانه بر روی تعدادی داده است. در امنیت رایانه از زنجیره درهمسازی برای بدست آوردن تعداد زیادی رمز یکبار مصرف[ ۱] از روی یک رمز استفاده می شود. برای برقراری شرط غیرقابل انکار بودن یک تابع درهمسازی ( هش ) می تواند به بخش های مختلف اطلاعات اعمال گردد تا تاریخچه ای از داده ها و اطلاعات در دسترس باشد.
زنجیره درهمسازی[ ۲] اعمال تابع درهمساز رمزنگارانه به طور پیوسته بر روی مقداری از داده و اطلاعات است. اگر تابع درهمساز را h درنظر بگیریم و x یک رشته باشد زنجیره درهمسازی از درجه k به صورت زیر تعریف می شود: h ( h ( . . . h ( x ) . . . ) ) که معمولاً زنجیرهٔ بالا را به صورت h k ( x ) نشان می دهند. کاربردها برای اولین بار لیزلی لمپورت[ ۳] ( به انگلیسی: Leslie Lamport ) پیشنهاد داد که از زنجیره درهمسازی برای محافظت از رمزعبور در محیط های ناامن استفاده شود. به عنوان مثال یک سرور که مجهز به سیستم احراز هویت است می تواند از زنجیره درهمسازی به جای نوشته ساده استفاده کند تا از سرقت از سرور جلوگیری شود. با توجه به این که تابع درهمسازی مشخص نیست پس در نتیجه سرقت از سرور مشکل خواهد شد. به عنوان مثال، سرور از کاربر p a s s w o r d را دریافت می کند و h 1000 ( p a s s w o r d ) را در ابتدا محاسبه می کند و برای احراز هویت مقدار h 999 ( p a s s w o r d ) از کاربر خواسته می شود و سرور با محاسبهٔ h ( h 999 ( p a s s w o r d ) ) برابری آن با h 1000 ( p a s s w o r d ) را چک می کند و در صورت صحیح بودن؛ برای احراز هویت بعدی همین کار را با h 999 ( p a s s w o r d ) انجام می دهد. در نتیجه برای دفعهٔ بعد سرور به جای h 999 ( p a s s w o r d ) انتظار h 998 ( p a s s w o r d ) را دارد. یعنی در هر مرتبه رمزعبور تغییر می کند و این باعث افزایش امنیت اطلاعات سرور خواهد شد. همچنین خاصیت یکطرفه بودن تابع در تابع درهمساز رمزنگارانه امکان محاسبه معکوس تابع را از سارق می گیرد. با توجه به این که رمزعبور در هر مرتبه تغییر می کند در نتیجه سارق نمی تواند به رمزعبور دسترسی پیدا کند. یک نمونه از کد این فرایند به عنوان نمونه به صورت زیر می باشد:
# Server owner knows numbers in Hash Chain and server backward checks the password. class Server: __init__ ( self, server_pasword, server_owner_name ) : self. server_pasword = server_pasword self. server_owner_name = server_owner_name login ( self, password ) : if ( H ( password ) == self. server_pasword ) : self. server_pasword = password login_accepted ( ) else: print ( " Uncorrect password" ) درخت دودویی درهمسازی درخت دودویی در همسازی که به آن درخت درهمسازی نیز گفته می شود برای محاسبه درهمسازی تعدادی ورودی استفاده می شود که مقدار هر راس حاصل درهمسازی ترکیب دو فرزند راس است. به همین ترتیب از برگ های درخت شروع به محاسبه درهمسازی می کنیم تا درنهایت مقدار ریشه محسابه شود؛ که در شکل زیر یک نمونه از درخت درهمسازی با چهار برگ به عنوان ورودی به نمایش گذاشته شده است.
عکس زنجیره درهمسازی
این نوشته برگرفته از سایت ویکی پدیا می باشد، اگر نادرست یا توهین آمیز است، لطفا گزارش دهید: گزارش تخلف

پیشنهاد کاربران