تابع درهم‌ساز رمزنگارانه

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو


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

یک تابع درهم‌سازی، یک رشته (یا پیام) را دریافت می‌کند و رشته‌ای با طول ثابت موسوم به خلاصه پیام (message digest) یا اثر انگشت دیجیتال (digital fingerprint) و یا هش را تولید می‌نماید. این مقدار نوعی امضا برای جریانی از داده است که محتوای آن را نمایندگی می‌کند.

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

  • یافتن پیام جدیدی که مقدار هش داده شده را تولید نماید
  • یافتن دو پیام که مقدار هش مساوی هم تولید نمایند (چنین موردی یک تصادم هش خوانده می‌شود.)

حمله کننده‌ای که بتواند هریک از این دو کار را انجام دهد قادر خواهد بود از آن برای جایگزینی یک متن غیر اصیل به جای متن اصیل استفاده نماید.

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

توابعی که مشابه توابع نام برده شده عمل می کنند وغالبا برای رمزگذاری استفاده می شوند، همگی به عنوان توابع درهم ساز شناخته می شوند، شامل MD4، MD5، SHA-1 و SHA-2 که از بلوک های رمزی مانند درست شده اند.

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

به هر حال آن هدف می تواند موثر و در ایجاد امنیت ارزشمند باشد. رمزهای موجود در توابع درهم ساز که برای درهم سازی استفاده می شوند:

آنها از کلیدها و بلوک های طولانی، استفاده می کنند، بلوک ها می توانند به طور موثر کلیدها را تغییر دهند و برای مقاومت در برابر حملات کلید مرتبط طراحی شده اند.رمزهای با اهداف عمومی تمایل دارند که برای اهداف متفاوتی طراحی شوند، مخصوصا AES اندازه های از بلوک ها و کلیدها را دارد که باعث می شود برای تولید ارقام درهم ساز بزرگ استفاده نشوند، زمانی که کلید هربلوک را تغییر می دهد اثر رمزگذاری AES کمتر می شود و نیز حملات کلید مرتبط باعث می شود امنیت آن برای استفاده از آن در تابع درهم ساز نسبت به رمزگذاری بسیار کاهش یابد.

تصادم هش[ویرایش]

منظور از تصادم hash موقعیتی است که در آن دو مقدار ورودی مختلف به یک تابع درهم‌سازی خروجی یکسان تولید نمایند. از آنجا که طول ورودی توابع درهم‌سازی کریپتوگرافیک نامحدود ولی طول خروجی آنها ثابت است، فضای ورودی بسیار بزرگتر از فضای خروجی است و در نتیجه توابع درهم‌سازی کریپتوگرافیک همواره دارای (بی‌شمار) تصادم هستند.

خواص کریپتوگرافیک[ویرایش]

تابع درهم‌ریزی hash داده شده است:

  • \Sigma \overset{\underset{\mathrm{def}}{}}{=} \{0, 1\}
  • hash: \Sigma^* \to \Sigma^L

این تابع باید حداقل واجد این خصوصیات باشد:

  • مقاومت پیش‌پرونده: برای هر H داده شده، محاسبه M به گونه‌ای که H = hash(M) باشد دشوار است.
  • مقاومت پیش‌تصویر دوم (مقاومت تصادم ضعیف): برای هر ورودی M1 داده شده، یافتن ورودی M2 به گونه‌ای که hash(M2) = hash(M1) باشد دشوار است.

دقت کنید که شرط اول قوی‌تر است و در واقع شرط دوم را در بر دارد.

  • مقاومت تصادم (قوی): یافتن هر زوج ورودی M1 و M2 به گونه‌ای که hash(M2) = hash(M1) باشد دشوار است. از آنجا که امکان استفاده از پارادوکس روز تولد برای یافتن یک تصادم وجود دارد، طول مقدار hash باید در این مورد حداقل دو برابر مقدار لازم برای مقاومت پیش‌تصویر باشد.

ساختار مرکل-دمگارد[ویرایش]

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

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

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

الحاق توابع درهم ساز رمزگذار[ویرایش]

الحاق کردن خروجی های توابع درهم سازچندگانه باعث مقاومت در برابر تصادم به خوبی قوی ترین الگوریتم ها که در نتیجه الحاق موجود هستند، می شود. برای مثال نسخه های قدیمی تر TLS/SSL از مجموع الحاق شده MD5 و SHA-1 استفاده می کنند، که ما را مطمئن می کند که یک روش برای پیدا کردن تصادم در یکی از توابع امکان جعل ترافیک مربوط به هر دو تابع را از بین می رود.

برای توابع در هم ساز مرکل-دمگارد، تابع الحاق شده به اندازه قوی ترین مولفه آن و نه بیشتر، در برابر تصادم مقاومت می کند. جوکس اظهار می دارد که دومین تصادم به nامین تصام منجر می شود: اگر پیدا کردن دو پیام با درهم ساز MD5 مشابه امکان پذیر باشد، پیدا کردن هر تعداد پیام با درهم ساز MD5 یکسان که حمله کننده بخواهد هم به همین ترتیب امکان پذیر است. در بین n پیام با درهم ساز MD5 یکسان، احتمالاً در SHA-1 یک تصادم وجود خواهد داشت. کار اضافی لازم برای پیدا کردن تصادم SHA-1 پلی نومیال است. این بحث توسط فینی خلاصه شده است. مقاله جدیدتری با اثبات کامل تری را از امنیت چنین ساختار ترکیبی ای توضیح واضح تر و پیچیده تری را از مبحث بالا ارائه می دهد.

برای امنیت این ساختار این مساله مهم است. این ساختار مرکل-دمگارد نام دارد. توابع درهم ساز پرکاربرد مانند SHA-1 و MD5 دارای این حالت هستند.

الگوریتم های درهم ساز رمزی[ویرایش]

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

منابع[ویرایش]

ویکی‌پدیای انگلیسی [۱]