امضای دیجیتالی چیست؟
digital signature
چنانچه گفتیم منظور از امضای دیجیتال تصویر امضای دست نویس نیست بلکه روشی برای اعتبارسنجی اطلاعات الکترونیکی است که توسط رمزنگاری استفاده می شود. چنانچه یک نفر با استفاده از کلید اختصاصی اطلاعات را رمزنگاری کرده باشد، فقط و فقط اوست که می تواند اطلاعات را رمزنگاری کرده باشد. بنابراین اگر رمزگشایی اطلاعات به درستی و با استفاده از کلید عمومی آن فرد انجام شود، خواهیم فهمید که اطلاعات از جانب آن فرد خاص آمده است. اگر عمل رمزنگاری بدرستی کار کند می توان از عدم تغییر اطلاعات در طول انتقال مطمئن شد بنابراین تمامیت اطلاعات تضمین می شود. می خواهیم با استفاده از امضای دیجیتال این حفاظت را یک قدم بجلو ببریم و اطلاعات را بعد از آنکه دریافت و رمزگشایی شد در برابر دستکاری حفاظت نماییم.در ابتدا اطلاعات وارد بلوک خردکننده پیام (Hash function) می شود. تابع خردکننده با استفاده از کلید از اطلاعات یک Checksum ایجاد می کند. Checksum بدست آمده اختصاصی رمزنگاری می شود. اطلاعات و Checksum رمز شده برای گیرنده اطلاعات فرستاده می شود. با دریافت اطلاعات توسط گیرنده، آنرا داخل همان تابع خردکننده قرار می دهد و Checksum اطلاعات یکبار دیگر و اینبار توسط گیرنده محاسبه می شود. از طرفی Checksum رمز شده دریافتی (که همراه پیام آمده است) رمزگشایی می شود و با Checksum محاسبه شده تطبیق داده می شود. در صورتیکه دو Checksum با هم یکسان باشند اطلاعات تغییر نکرده است. میزان امنیت و مفید بودن امضای دیجیتال به دو المان حیاتی زیر وابسته است:
- حفاظت از کلید اختصاصی کاربر.
- تابعی خردکننده ای که امن باشد.
اگر کاربر از کلید اختصاصی اش محافظت نکند نمی تواند مطمئن باشد فقط خودش آن را بکار می برد. اگر فرد دیگری کلید اختصاصی او را استفاده کند، تضمینی وجود ندارد که اطلاعات درخواستی فقط توسط کاربر امضاء شده باشد.
تابع خردکننده امن
برای امضای دیجیتال به تابع خردکننده(Hash function) نیاز داریم. این تابع را در صورتی امن می دانیم که :
- تابع یک طرفه باشد، به عبارت دیگر تابع از روی اطلاعات Checksum را محاسبه می کند اما شما از روی Checksum اطلاعات را بازیابی نمایید.
- ساختن دو قطعه اطلاعات که به هنگام عبور از این تابع، Checksum یکسان ایجاد نمایند بسیار سخت باشد.
برآورده کردن شرط دوم آسان نیست. Checksum باید از اطلاعات کوتاهتر شود تا امضاء ذخیره و ارسال آن آسانتر شود. از طرف دیگر برآورده کردن این شرط باعث می شود تعداد زیادی از قطعات مختلف اطلاعات داشته باشیم که به Checksumها نگاشته می شوند، آنچه تابع را امن می سازد روشی است که بر طبق آن بیت های اطلاعات اصلی به تمام بیت های موجود در Checksum نگاشته می شوند. به همین دلیل در صورت عوض کردن یک بیت اطلاعات، تعداد بیت های زیادی در Checksum عوض می شود. تابع خردکننده امن باید Checksum با حداقل طول 128 بیت تولید کند. دو تا از عمومی ترین توابع خردکننده امن عبارتند از MD5 که Checksum با128 بیت تولید می کند و SHA که Checksum با 160 بیت تولید می کند. توابع خردکننده بسیاری وجود دارد، اما اکثر آنها غیر امن می باشند. MD5 دارای نقطه ضعفی است که بروز حمله محاسباتی را ممکن می سازد. در این حمله امکان دارد قطعه دومی از اطلاعات پیدا شود که دارای همان Checksum باشد. SHA توسط دولت ایالات متحده ایجاد شد و در حال حاضر اعتقاد بر امن بودن آن است. اکثر نرم افزار های امنیتی MD5 و SHA را با هم ارائه می نمایند.
در فایروال بومی پاوان امکان استفاده از امضای دیجیتال برای بالا بردن سطح امنیت به مدیر شبکه داده شده است.