Mojtaba Montakhabi 671 روز پیش
بازدید 342 بدون دیدگاه

تابع هش Hash چیست؟

تابع هش Hash چیست؟ معنای لغوی فعل “هش کردن” در واقع خرد کردن یا درهم ریختن می باشد – که درواقع فرایند اینکه توابع هش با داده ها چه می کنند را نیز ارائه می دهد. توابع هش Hash داده ها را “درهم” می آمیزند و آنها را به یک مقدار عددی تبدیل می نمایند. همچنین مهم نیست که طول ورودی چقدر باشد، مقدار خروجی همیشه همان طول را خواهد داشت. توابع Hash همچنین به عنوان الگوریتم های درهم سازی یا توابع خلاصه پیام نیز شناخته می شوند. آنها در بسیاری از زمینه های علوم کامپیوتر استفاده می شوند، به عنوان مثال:

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

 

تابع هش Hash چیست؟

 

فهرست مطالب

  1. تابع هش Hash چیست ؟
      1. ویژگی های توابع هش چیست ؟
      2. مقدار هش چیست؟ 
      3. حفاظت از داده های حساس
      4. امضای دیجیتال

 

تعریف: یک تابع هش رشته هایی با طول های مختلف را به رشته هایی با طول ثابت تبدیل می کند که به عنوان مقادیر درهم یا خلاصه ها شناخته می شوند. برای مثال می‌توانید از هش برای درهم‌سازی گذرواژه‌ها در رشته‌هایی از کاراکترهای مجاز استفاده نمایید. مقادیر خروجی را نمی توان جهت تولید ورودی اصلی معکوس نمود.

تابع هش Hash چیست؟

 

در مثال بالا تابع هش، همه رمزهای عبور مختلف قبل از ذخیره شدن در پایگاه داده به رشته هایی با طول ثابت تبدیل می شوند. این رشته های خروجی را نمی توان برای یافتن رمزهای عبور واقعی دوباره تبدیل نمود.

ویژگی های توابع هش چیست؟

 توابع هش طوری طراحی شده اند که دارای ویژگی های زیر باشند:

یک طرفه One-way

هنگامی که یک مقدار هش تولید شد، تبدیل آن به داده های اصلی باید غیرممکن باشد. به عنوان مثال، در مثال بالا، هیچ راهی جهت تبدیل «$P$Hv8rpLanTSYSA/2bP1xN.S6Mdk32.Z3» به «YW&o7&*J^^7r » وجود ندارد.

بدون برخورد Collision-free

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

آذرخش سریع Lightning-fast

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

مقدار هش چیست؟

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

 

مقدار هش

 

مقادیر هش تولید شده با استفاده از تابع SHA256، صرف نظر از تعداد و نوع کاراکترهای رشته ورودی، همیشه دارای طول یکسانی هستند.

 

مقدار هش نتیجه محاسبه شده توسط تابع هش و الگوریتم است. از آنجایی که مقادیر هش مانند اثر انگشت انسان منحصر به فرد هستند، به آنها “اثر انگشت” نیز گفته می شود. اگر حروف کوچک “a” را به “f” و ارقام “0” را به “9” ببرید و طول مقدار هش را 64 کاراکتر تعریف کنید، 1.1579209e+77 مقدار خروجی ممکن وجود دارد – این مقدار 70 و به دنبال آن 24 می شود. صفرها! این نشان می‌دهد که حتی با رشته‌های کوتاه‌تر، همچنان می‌توانید اثر انگشت قابل قبولی تولید کنید.

 

مقادیر هش در مثال بالا را می توان تنها با چند خط کد PHP ایجاد کرد:



در اینجا، الگوریتم رمزگذاری “sha256” برای هش کردن مقدار ورودی “apple” استفاده می شود. مقدار هش یا اثر انگشت مربوطه همیشه «3a42c503953909637f78dd8c99b3b85ddde362415585afc11901bdefe8349102» است.

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

تاییده سرور همراه با هش

 

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

 

 

شناسه‌های نشست با استفاده از داده‌های مربوط به بازدید از سایت، مانند آدرس IP و مهر زمان time stamp، تولید می‌شوند و با URL ارتباط برقرار می نمایند. یکی از استفاده های رایج از شناسه های نشست، دادن شناسه های منحصر به فرد به افرادی است که از یک وب سایت خرید می نمایند. امروزه، شناسه‌های نشست به ندرت به عنوان پارامتر URL ارسال می‌شوند (به عنوان مثال، به عنوان چیزی مانند www.domain.tld/index?sid=d4ccaf2627557c756a0762419a4b6695). در عوض، آنها به عنوان یک کوکی در هدر وب سایت ذخیره می شوند.

 

مقادیر هش همچنین جهت رمزگذاری داده های حافظه پنهان استفاده می شود تا از استفاده کاربران غیرمجاز از حافظه پنهان جهت دسترسی به جزئیات ورود و پرداخت یا سایر اطلاعات مربوط به یک سایت جلوگیری شود.

 

ارتباط بین سرور FTP و کلاینت با استفاده از پروتکل SFTP نیز به روشی مشابه کار می کند.

 

حفاظت از داده های حساس

جزئیات ورود به حساب های آنلاین اغلب هدف حملات سایبری است. هکرها یا می خواهند عملکرد یک وب سایت را مختل نمایند (مثلاً برای کاهش درآمد حاصل از تبلیغات مبتنی بر ترافیک) و یا به اطلاعات مربوط به روش های پرداخت دسترسی یابند.

 

نشست در وردپرس

 

سیستم مدیریت محتوای وردپرس طیف وسیعی از عملکردهای امنیتی را جهت احراز هویت کاربران ثبت شده سایت ارائه می دهد. کلیدهای نشان داده شده در بالا با استفاده از الگوریتم های هش مختلف تولید شده اند.

 

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

 

 

امضای دیجیتال

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

 

هش در ایمیل

 

اضافه کردن یک امضای دیجیتال به ایمیل مانند امضای یک نامه دست نویس است – شما یک بار امضا می کنید و امضای شما منحصر به فرد است.

 

مراحل ارسال ایمیل با امضای دیجیتال عبارتند از:

  1. آلیس (فرستنده) پیام خود را به یک مقدار هش تبدیل می نماید و مقدار هش را با استفاده از کلید خصوصی خود رمزگذاری می نماید. این مقدار هش رمزگذاری شده، امضای دیجیتال است.
  2. آلیس ایمیل و امضای دیجیتال را برای گیرنده، باب می فرستد.
  3. Bob یک مقدار هش پیام را با استفاده از همان تابع هش تولید می کند. او همچنین مقدار هش را با استفاده از کلید عمومی Alice رمزگشایی می کند و این دو هش را با هم مقایسه می کند.
  4. اگر دو مقدار هش مطابقت داشته باشند، باب می‌داند که پیام آلیس در طول ارسال دستکاری نشده است.

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

 

چگونه می توان از توابع هش جهت انجام جستجو استفاده نمود؟

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

 

از توابع هش جهت بهبود امنیت در ارتباطات الکترونیکی استفاده می شود و بسیاری از استانداردهای پیچیده اکنون توسعه یافته اند. با این حال، هکرها از این موضوع آگاه هستند و دائماً تکنیک های هک پیشرفته تری را اجرا می نمایند.

 

 

آموزش شبکه
 

link

 

 
 

نظرات کاربران

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

دیدگاهتان را بنویسید

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

Select the fields to be shown. Others will be hidden. Drag and drop to rearrange the order.
  • Image
  • SKU
  • Rating
  • Price
  • Stock
  • Availability
  • Add to cart
  • Description
  • Content
  • Weight
  • Dimensions
  • Additional information
Click outside to hide the comparison bar
مقایسه