امضای دیجیتال و استانداردهای آن

ricardo

کاربر حرفه ای
کاربر ممتاز
كاغذ به عنوان حامل اطلاعات مهم جای خود را كم‌كم به دیگر راه‌های تبادل اطلاعات می‌دهد. در واقع كاغذ دارای معایبی از قبیل انتقال آهسته و پرهزینه اسناد می‌باشد. همچنین شیوه‌های ذخیره‌سازی اطلاعات نیز بسرعت در حال تغییر است و بجای بایگانی انبوه دسته‌های كاغذ از روش‌های الكترونیكی استفاده می‌شود. فناوری‌های جدید انتقال اطلاعات، مانند EDI و پست الكترونیك و استفاده از سیستم‌های مدیریت اسناد كامپیوتری نگارش، ارسال و ذخیره اطلاعات را ساده‌تر، سریع‌تر و حتی ایمن‌تر ساخته است. بخاطر ساختار غیرفیزیكی واسطه (وسیله حامل داده)، روش‌های سنتی علامت‌گذاری فیزیكی واسطه توسط مهر یا امضاء (برای مقاصد تجاری و حقوقی) غیرقابل استفاده می‌باشند. هنگام كار با اسناد الكترونیكی، باید علامتی برای تشخیص اصل بودن و سندیت بخشیدن به محتوی آن، به اطلاعات اضافه شود. بعضی شیوه‌های جدید تنها برای سندیت بخشیدن به یك موجودیت جهت مجوزدهی به دسترسی استفاده می‌شوند، برای مثال نباید یك سیستم تشخیص هویت انگشت‌نگاری كامپیوتری، یك امضای دستی اسكن شده یا وارد كردن اسم شخص در انتهای یك E-mail را به‌عنوان یك جایگزین معتبر برای امضاهای دستی پذیرفته زیرا همه عملكردهای یك امضای دستی را نخواهد داشت. با امضا كردن در پای یك نوشته امضا‌كننده هویت خود را به‌عنوان نویسنده مشخص می‌كند، جامعیت سند را تایید نموده و بیان می‌دارد كه به محتویات آن متعهد و پایبند می‌باشد.
برخی از خواص مهم امضاهای دستی عبارتند از:
1 - امضاء یك شخص برای تمام مدارك یكسان است.
2 - به راحتی تولید می‌شوند.
3 - به راحتی تمیز داده می‌شوند.
4 - باید به گونه‌ای باشند كه حتی‌الامكان به سختی جعل شوند.
5 - به طور فیزیكی تولید می‌شوند.
یك امضای دیجیتالی یك ابزار سندیت بخشیدن الكترونیكی می‌باشد، كه منجر به سندیت بخشیدن به یك ركورد الكترونیكی از طریق رمزنگاری با كلید همگانی می‌شود.
ویژگی‌های مهم امضاهای دیجیتال عبارتند از:
1 - در تولید آنها از اطلاعاتی كه به طور منحصر بفرد در اختیار امضا كننده است استفاده می‌شود.
2 - به طور خودكار و توسط رایانه تولید می‌شوند.
3 - امضاء هر پیام وابسته به كلیه بیتهای پیام است و هر گونه دستكاری و تغییر در متن سند موجب مخدوش شدن امضاء پیام می‌گردد.
4 - امضاء هر سندی متفاوت با امضاء اسناد دیگر است.
5 - باید به راحتی قابل بررسی و تایید باشد تا از جعل و انكار احتمالی آن جلوگیری شود.
ساختار اصلی امضای دیجیتالی بدین صورت است كه نویسنده اطلاعات الكترونیكی این اطلاعات را توسط كلید رمزنگاری محرمانه خود امضاء می‌كند. این كلید باید توسط كاربر برای همیشه مخفی نگهداشته شود. امضاء توسط كلید همگانی مربوطه امضا كننده سند قابل كنترل می‌باشد. این كلید همگانی توسط عموم قابل رؤیت و دسترسی می‌باشد.

امضاهای دیجیتالی: مرحله به مرحله
یك امضای دیجیتالی مطابق روند زیر ایجاد می‌شود:
مرحله اول ایجاد واحد داده‌ایست كه باید امضاء شود. برای مثال یك شیء اطلاعاتی بصورت دیجیتالی كه میتواند متن، شكل و یا هر نوع دیگری از اطلاعات دیجیتالی باشد.
مرحله دوم ایجاد یك مقدار درهم (Hash Value) از داده كه معمولاً چكیده پیام نامیده می‌شود، می‌باشد. این عمل نتیجه پردازش‌های ریاضی یك الگوریتم می‌باشد كه شكل دیجیتالی فشرده‌ای را ایجاد می‌نماید. در صورتیكه حتی یك بیت از واحد داده تغییر كند، مقدار درهم مربوطه دستخوش تغییرات وسیع می‌گردد. این تكنیك، باعث ایجاد امضای دیجیتالی با طول ثابت و قابل پیش‌بینی از قبل داده می‌شود.
در مرحله سوم امضاءكننده مقدار درهم را با كلید محرمانه خود رمزگذاری می‌كند و امضای دیجیتالی خود برای واحد داده را ایجاد می‌كند كه مقداری منحصر به فرد بوده و می‌بایست به واحد داده متصل یا الحاق گردد.
به عنوان مرحله آخر، كنترل امضای دیجیتالی با تولید مجدد مقدار درهم همان واحد داده توسط الگوریتم قبلی، آغاز می‌شود .سپس امضای دیجیتالی ضمیمه سند توسط كلید همگانی امضا‌كننده رمزگشایی می‌شود و در نهایت نتایج حاصل مطابقت داده می‌شوند. چنانچه نتیجه یكسان بود، امضاء پذیرفته و در غیر این صورت رد می‌شود.
هدف از به كارگیری روش‌های رمزنگاری در اینجا، اطمینان از یكپارچگی داده‌ها و معتبر بودن و اصالت امضاء كننده، جدا از كاربرد آن برای اطمینان از محرمانگی داده‌ها می‌باشد.

امضاهای دیجیتال استاندارد
در این بخش ابتدا به معرفی مختصر سه روش استاندارد امضاء دیجیتال می‌پردازیم.
الف: امضاء دیجیتال مبتنی بر RSA: این روش امضاء مبتنی بر الگوریتم رمز كلید همگانی RSA بوده و درسال 1991 توسط ANSI به عنوان استاندارد پذیرفته شد. روندهای تولید كلید، تولید امضاء و تصدیق امضاء در زیر آمده است.
تولید كلید: هر كاربر مانند A، اعداد اول P و q را تولید و سپس عدد e را به گونه‌‌ای تولید می‌كند كه در رابطه 1 صدق كند باشد. در این صورت e دارای وارون ضربی d به پیمانة e است كه در رابطة 2 صدق می‌كند كه در آن n=pq است. در این صورت زوج اعداد(e, n) كلید همگانی كاربر و اعداد (d, p, q) كلیدهای خصوصی (محرمانه) كاربر را تشكیل می‌دهند.
تولید امضاء:
1 - كاربر A ابتدا با بكارگیری یكی از توابع درهم‌ساز، چكیدة پیام را بدست می‌آورد. در صورتیكه تابع درهم‌ساز را h بنامیم چكیدة پیام عبارت است از (h(m. (در روش استاندارد استفاده از الگوریتم‌های MD5 یا MD2 توصیه شده است).
2 - سپس برای تولید امضاء مقدار s را از رابطه 3 محاسبه می‌نماید. s امضاء A بر روی پیام m خواهد بود.
تصدیق امضاء : برای بررسی صحت امضاء‌ كاربر A بر روی پیام m، كاربر B اعمال زیر را انجام می‌دهد:
1 - ابتدا یك كپی قابل اعتماد از كلید عمومی A یعنی (e, n) را بدست می‌آورد.
2 - با بكارگیری تابع در هم‌ساز، چكیدة پیام را بدست می‌آورد، یعنی (f = h(m را تشكیل می‌دهد.
3 - با استفاده از كلید عمومی مقدار f1 را از طریق فرمول 4 محاسبه می‌نماید.
4 - امضاء را می‌پذیرد اگر و تنها اگر f و f1 برابر باشند.

ب:‌ استاندارد امضای دیجیتال DSS: ‌روش امضای DSS بر اساس سیستم رمزنگاری كلید همگانی الجمال استوار است. DSS در آگوست سال 1991 توسط مؤسسة ملی استاندارد و تكنولوژی آمریكا پیشنهاد شد و در سال 1993 به عنوان یك استاندارد پردازش اطلاعات فدرال دولت آمریكا پذیرفته گردید. FIPS 186. DSS اولین روش امضای دیجیتالی بود كه به صورت قانونی رسمیت یافت. در این روش به منظور كاهش اندازة امضاءها از زیرگروه‌های كوچك در Zp استفاده می‌شود. روش‌های تولید كلید، تولید امضاء و تصدیق امضاء این روش در زیر آمده‌اند:
تولید كلید : هر كاربر مانند A اعمال زیر را انجام می‌دهد.
1 - عدد اول q را طوری انتخاب می‌نماید كه در رابطه 5 صدق نماید باشد.
2 - عدد اول 1024 بیتی p را طوری انتخاب می‌نماید كه q|(p-1) .
DSS توصیه می‌كند كه p در شرط شماره 6 باشد كه در آن t عددی بین 0 و 8 است. اگر t=8 اختیار شود آنگاه p یك عدد اول 1024 بیتی خواهد بود).
3 - عنصر h را طوری انتخاب می‌كند كه جزو اعداد صحیح باشد و مقدار g را مطابق رابطه 7 محاسبه می‌نماید. این مرحله تا زمانی كه g مخالف 1 باشد تكرار می‌شود.
4 - یك عدد صحیح تصادفی x در محدوده [1, q-1] را انتخاب می‌نماید.
5 - مقدار y از طریق رابطه 8 محاسبه می‌كند.
6 - كلید عمومی A عبارت از (p,q,g,y) بوده و كلید خصوصی وی x می‌باشد.

تولید امضاء:‌ برای امضاء نمودن پیام A, m باید اعمال زیر را انجام دهد:
1 - یك عدد صحیح تصادفی k در محدودة [1, q-1] را انتخاب می‌نماید.
2 - مقدار r را با استفاده از رابطه 9 محابه می‌نماید.
3 - مقدار s را از طریق رابطه 10 محاسبه می‌نماید كه (h(0 تابع درهم SHA-1 می‌باشد.
4 - در صورتیكه 0=S باشد به مرحلة ‌1 برمی‌گردد. (در صورتیكه 0=S باشد مقدار مورد نظر از رابطه 11 موجود نخواهد بود)
5 - امضاء پیام m عبارت است از زوج (r, s)

تصدیق امضاء : برای تصدیق امضاء A بر روی پیام m یعنی (r,s) شخص B باید مراحل زیر را انجام دهد.
1 - یك كپی قابل اعتماد از كلید عمومی A یعنی (p,q,g,y) را بدست آورد.
2 - تصدیق كند كه s, r در محدودة [1,q-1] قرار دارند.
3 - مقدار w را از رابطه 12 و (h(m را محاسبه نماید.
4 - مقادیر u1 و u2 را به ترتیب از روابط 13 و 14 محاسبه نماید.
5 - مقدار v از طریق فرمول 15 محاسبه می‌شود:
6 - امضاء را بپذیرد اگر و تنها اگر v=r باشد.
چون s, r هر كدام اعداد صحیح كوچكتر از q می‌باشند. امضاء‌های تولید شده توسط DS دارای اندازة حداكثر 320 بیت می‌باشند.




پ:‌ امضای دیجیتال مبتنی بر منحنی‌های بیضوی:‌ الگوریتم امضای دیجیتال مبتنی بر منحنی‌های بیضوی ECDSA مشابه با DSS می‌باشد. بدین معنی كه به جای كار در یك زیر‌گروه مرتبة q از ، در گروه نقاط روی منحنی بیضوی روی Zp كار می‌كنیم. ECDSA هم‌اكنون در كمیته‌های یك استاندارد ANSI X9F1 و IEEE P1363 و ISO SC27 به عنوان استاندارد پذیرفته شده است. مراحل تولید كلید، تولید امضاء و تصدیق امضاء برای ECDSA در زیر آمده است:
تولید كلید: برای تولید كلید هر عضو A باید اعمال زیر را انجام دهد.

1 - یك منحنی بیضوی E بر روی Zp انتخاب نماید. تعداد نقاط موجود در (E(Zp باید بر عدد اول بزرگ n قابل تقسیم باشد.
2 - p یك نقطه از مرتبة n باید باشد به شرطی كه در رابطه 16 صدق كند.
3 - عدد صحیح تصادفی d را در محدودة [1,n-1) انتخاب نماید.
4 - مقدار Q=dP را محاسبه نماید.
5 - كلید عمومی A عبارت است از (E,P,n,Q) و كلید خصوصی وی d است.
تولید امضا: برای امضاء نمودن پیام A, m باید مراحل زیر را انجام دهد.
1 - عدد صحیح و تصادفی k را در محدودة [1,n-1] انتخاب نماید.
2 - مقادیر kp و r را از طریق روابط 17 و 18 محاسبه نماید. (در اینجا x1 یك عدد صحیح در نظر گرفته می‌شود. در صورتیكه r=0 باشد آنگاه به مرحلة 1 باز می‌گردد. (این یك شرط امنیتی است زیرا اگر r=0 باشد آنگاه معادلة امضاء (رابطه 19) كلید خصوصی d را در بر ندارد).
3 - مقدار s را از رابطه 20 محاسبه نماید كه h تابع درهم‌ساز SHA-1 می‌باشد.
4 - در صورتیكه s=0 باشد به مرحلة 1 باز می‌گردد.
5 - امضاء پیام m زوج (r,s) است.
تصدیق امضاء: شخص B برای تصدیق امضاء (r,s) متعلق به A بر روی پیام m باید مراحل زیر را انجام دهد.


1 - یك كپی قابل اعتماد از كلید عمومی (E,P,n,Q) مربوط به A بدست آورد.
2 - بررسی كند كه s, r اعداد صحیحی در بازة [1,n-1] باشند.
3 - مقدار w را از رابطه 21 و h(m) را محاسبه نماید.
4 - مقادیر u1 و u2 را از طریق روابط 22 و 23 محاسبه نماید.
5 - مقادیر روابطه 24 و 25 را محاسبه نماید.
6 - امضاء را بپذیرد اگر و تنها اگر v = r باشد.

استاندارد ANSI X9.62 توصیه می‌كند كه شرط 26 اختیار شود. برای رسیدن به سطح امنیتی مشابه با DSA (با q به طول 160 بیت و p با طول 1024 بیت) پارامتر n باید حدوداً 160 بیتی باشد در این صورت DSA و ECDSA دارای طول امضاء‌های مشابهی می‌باشند 320) بیت). در این روش بجای اینكه هر یك از اعضاء برای خود یك منحنی بیضوی انتخاب نمایند می‌توانند همگی از یك منحنی بیضوی مانند E بر روی Zp و نقطة P از مرتبة n استفاده كنند. این مقادیر اصطلاحاً پارامترهای سیستم نامیده می‌شوند. (در DSS پارامترهای متناظر عبارتند از (g, q, p)، در این صورت كلید‌عمومی هر شخص تنها نقطة Q می‌باشد، این باعث می‌شود كه طول كلیدهای‌عمومی كاهش یابند.

برگرفته از سایت شركت هایبرد
 
بالا