امضاء دیجیتال چیست ؟
امضاء دیجیتال چیست ؟
کاغذ به عنوان حامل اطلاعات مهم جای خود را کمکم به دیگر راههای تبادل اطلاعات میدهد. در واقع کاغذ دارای معایبی از قبیل انتقال آهسته و پرهزینه اسناد میباشد. همچنین شیوههای ذخیرهسازی اطلاعات...
کاغذ به عنوان حامل اطلاعات مهم جای خود را کمکم به دیگر راههای تبادل اطلاعات میدهد. در واقع کاغذ دارای معایبی از قبیل انتقال آهسته و پرهزینه اسناد میباشد. همچنین شیوههای ذخیرهسازی اطلاعات نیز بسرعت در حال تغییر است و بجای بایگانی انبوه دستههای کاغذ از روشهای الکترونیکی استفاده میشود. فنآوریهای جدید انتقال اطلاعات، مانند EDI و پست الکترونیک و استفاده از سیستمهای مدیریت اسناد کامپیوتری نگارش، ارسال و ذخیره اطلاعات را سادهتر، سریعتر و حتی ایمنتر ساخته است.
بخاطر ساختار غیرفیزیکی واسطه (وسیله حامل داده)، روشهای سنتی علامتگذاری فیزیکی واسطه توسط مهر یا امضاء (برای مقاصد تجاری و حقوقی) غیرقابل استفاده میباشند.
هنگام کار با اسناد الکترونیکی، باید علامتی برای تشخیص اصل بودن و سندیت بخشیدن به محتوی آن، به اطلاعات اضافه شود. بعضی شیوههای جدید تنها برای سندیت بخشیدن به یک موجودیت جهت مجوزدهی به دسترسی استفاده میشوند، برای مثال نباید یک سیستم تشخیص هویت انگشتنگاری کامپیوتری، یک امضای دستی اسکن شده یا وارد کردن اسم شخص در انتهای یک E-mail را بعنوان یک جایگزین معتبر برای امضاهای دستی پذیرفته زیرا همه عملکردهای یک امضای دستی را نخواهد داشت.
با امضا کردن در پای یک نوشته امضا کننده هویت خود را بعنوان نویسنده مشخص میکند، جامعیت سند را تایید نموده و بیان میدارد که به محتویات آن متعهد و پایبند میباشد.
برخی از خواص مهم امضاهای دستی عبارتند از:
1- امضاء یک شخص برای تمام مدارک یکسان است.
2- به راحتی تولید میشوند.
3- به راحتی تمیز داده میشوند.
4- باید به گونهای باشند که حتیالامکان به سختی جعل شوند.
5- به طور فیزیکی تولید میشوند.
یک امضای دیجیتالی یک ابزار سندیت بخشیدن الکترونیکی میباشد، که منجر به سندیت بخشیدن به یک رکورد الکترونیکی از طریق رمزنگاری با کلید همگانی میشود.
ویژگیهای مهم امضاهای دیجیتال عبارتند از:
1- در تولید آنها از اطلاعاتی که به طور منحصر بفرد در اختیار امضا کننده است استفاده میشود.
2- به طور خودکار و توسط رایانه تولید میشوند.
3- امضاء هر پیام وابسته به کلیه بیتهای پیام است و هر گونه دستکاری و تغییر در متن سند موجب مخدوش شدن امضاء پیام میگردد.
4- امضاء هر سندی متفاوت با امضاء اسناد دیگر است.
5- باید به راحتی قابل بررسی و تایید باشد تا از جعل و انکار احتمالی آن جلوگیری شود.
ساختار اصلی امضای دیجیتالی بدین صورت است که نویسنده اطلاعات الکترونیکی این اطلاعات را توسط کلید رمزنگاری محرمانه خود امضاء میکند. این کلید باید توسط کاربر برای همیشه مخفی نگهداشته شود. امضاء توسط کلید همگانی مربوطه امضا کننده سند قابل کنترل میباشد. این کلید همگانی توسط عموم قابل رؤیت و دسترسی میباشد.
امضاهای دیجیتالی: مرحله به مرحله
یک امضای دیجیتالی مطابق روند زیر ایجاد میشود:
- مرحله اول ایجاد واحد دادهایست که باید امضاء شود. برای مثال یک شیء اطلاعاتی بصورت دیجیتالی که میتواند متن، شکل و یا هر نوع دیگری از اطلاعات دیجیتالی باشد.
- مرحله دوم ایجاد یک مقدار درهم (Hash Value) از داده که معمولاً چکیده پیام نامیده میشود، میباشد. این عمل نتیجه پردازشهای ریاضی یک الگوریتم میباشد که شکل دیجیتالی فشردهای را ایجاد مینماید. در صورتیکه حتی یک بیت از واحد داده تغییر کند، مقدار درهم مربوطه دستخوش تغییرات وسیع میگردد. این تکنیک، باعث ایجاد امضای دیجیتالی با طول ثابت و قابل پیشبینی از قبل داده میشود.
- در مرحله سوم امضاءکننده مقدار درهم را با کلید محرمانه خود رمزگذاری میکند و امضای دیجیتالی خود برای واحد داده را ایجاد میکند که مقداری منحصر به فرد بوده و میبایست به واحد داده متصل یا الحاق گردد.
- بعنوان مرحله آخر، کنترل امضای دیجیتالی با تولید مجدد مقدار درهم همان واحد داده توسط الگوریتم قبلی، آغاز می شود. سپس امضای دیجیتالی ضمیمه سند توسط کلید همگانی امضا کننده رمزگشایی می شود و در نهایت نتایج حاصل مطابقت داده میشوند. چنانچه نتیجه یکسان بود، امضاء پذیرفته و در غیر اینصورت رد می شود.
- هدف از به کار گیری روشهای رمزنگاری در اینجا، اطمینان از یکپارچگی دادهها و معتبر بودن و اصالت امضاء کننده، جدا از کاربرد آن برای اطمینان از محرمانگی دادهها میباشد.
امضاهای دیجیتال استاندارد
در این بخش ابتدا به معرفی مختصر و مقایسه اجمالی سه روش استاندارد امضاء دیجیتال می پردازیم.
الف: امضاء دیجیتال مبتنی بر RSA
این روش امضاء مبتنی بر الگوریتم رمز کلید همگانی RSA بوده و درسال 1991 توسط ANSI به عنوان استاندارد پذیرفته شد. روندهای تولید کلید، تولید امضاء و تصدیق امضاء در زیر آمده است.
تولید کلید :
هر کاربر مانند A، اعداد اول P و q را تولید و سپس عدد e را به گونهای تولید میکند که gcd (e, pq) = 1 باشد. در این صورت e دارای وارون ضربی d به پیمانة e است که در رابطة صدق میکند که در آن n=pq است. در این صورت زوج اعداد(e, n) کلید همگانی کاربر و اعداد (d, p, q) کلیدهای خصوصی (محرمانه) کاربر را تشکیل میدهند.
تولید امضاء :
1- کاربر A ابتدا با بکارگیری یکی از توابع درهمساز، چکیدة پیام را بدست میآورد. در صورتیکه تابع درهمساز را h بنامیم چکیدة پیام عبارت است از h(m). (در روش استاندارد استفاده از الگوریتمهای MD5 یا MD2 توصیه شده است).
2- سپس برای تولید امضاء مقدار modn s=(h(m))d را محاسبه مینماید. s امضاء A بر روی پیام m خواهد بود.
تصدیق امضاء :
برای بررسی صحت امضاء کاربر A بر روی پیام m، کاربر B اعمال زیر را انجام میدهد:
1- ابتدا یک کپی قابل اعتماد از کلید عمومی A یعنی (e, n) را بدست میآورد.
2- با بکارگیری تابع در همساز، چکیدة پیام را بدست میآورد، یعنی f = h(m) را تشکیل میدهد.
3- با استفاده از کلید عمومی مقدار f1 = se mod n را محاسبه مینماید.
4- امضاء را میپذیرد اگر و تنها اگر f و f1 برابر باشند.
ب: استاندارد امضای دیجیتال DSS :
روش امضای DSS بر اساس سیستم رمزنگاری کلید همگانی الجمال استوار است. DSS در آگوست سال 1991 توسط مؤسسة ملی استاندارد و تکنولوژی آمریکا پیشنهاد شد و در سال 1993 به عنوان یک استاندارد پردازش اطلاعات فدرال دولت آمریکا پذیرفته گردید ((FIPS 186. DSS اولین روش امضای دیجیتالی بود که به صورت قانونی رسمیت یافت. در این روش به منظور کاهش اندازة امضاءها از زیرگروههای کوچک در Zp استفاده میشود. روشهای تولید کلید، تولید امضاء و تصدیق امضاء این روش در زیر آمدهاند:
تولید کلید :
هر کاربر مانند A اعمال زیر را انجام میدهد.
1- عدد اول q را طوری انتخاب مینماید که 2159 < q < 2160 باشد.
2- عدد اول 1024 بیتی p را طوری انتخاب مینماید که .q|(p-1) DSS توصیه میکند که 2511+64t < P < 2512+64t باشد که در آن . اگر t=8 اختیار شود آنگاه p یک عدد اول 1024 بیتی خواهد بود).
3- عنصر را انتخاب مینماید و مقدارg=h(p-1)/q mod p را محاسبه مینماید. این مرحله تا زمانی که شود تکرار میشود (g مولد یک زیر گروه دوری از مرتبة q در میباشد).
4- یک عدد صحیح تصادفی x در محدوده [1, q-1] را انتخاب مینماید.
5- مقدار y = gxmod p را محاسبه میکند.
6- کلید عمومی A عبارت از (p, q, g, y) بوده و کلید خصوصی وی x میباشد.
تولید امضاء :
برای امضاء نمودن پیام A, m باید اعمال زیر را انجام دهد:
1- یک عدد صحیح تصادفی k در محدودة [1, q-1] را انتخاب مینماید.
2- مقدار r = (gkmod p) mod q را محاسبه مینماید.
3- مقدار k-1 mod q را حساب میکند.
4- مقدار s = k-1{h(m) + xr} mod q را محاسبه مینماید که h(0) تابع درهم SHA-1 میباشد.
5- در صورتیکه 0 = S باشد به مرحلة1 برمیگردد. (در صورتیکه 0 = S باشد S-1 mod q موجود نخواهد بود، S-1 در مرحلة 3 از تصدیق امضاء کاربرد دارد).
6- امضاء پیام m عبارت است از زوج (r, s)
تصدیق امضاء :
برای تصدیق امضاء A بر روی پیام m یعنی (r, s) شخص B باید مراحل زیر را انجام دهد.
1- یک کپی قابل اعتماد از کلید عمومی A یعنی (p, q, g, y) را بدست آورد.
2- تصدیق کند که s, r در محدودة [1, q-1] قرار دارند.
3- مقدار w=s-1mod q و h(m) را محاسبه نماید.
4- مقدار u1 = (h(m) w) mod q و u2 = (rw) mod q را محاسبه نماید.
5- مقدار v = (gu1gu2 mod p) mod q را حساب کند.
6- امضاء را بپذیرد اگر و تنها اگر v=r باشد.
چون s, r هر کدام اعداد صحیح کوچکتر از q میباشند. امضاءهای تولید شده توسط DS دارای اندازة حداکثر 320 بیت میباشند.
امضای دیجیتال مبتنی بر منحنیهای بیضوی :
الگوریتم امضای دیجیتال مبتنی بر منحنیهای بیضوی ECDSA مشابه با DSS میباشد. بدین معنی که به جای کار در یک زیرگروه مرتبة q از ، در گروه نقاط روی منحنی بیضوی روی Zp کار میکنیم.
ECDSA هماکنون در کمیتههای یک استاندارد ANSI X9F1 و IEEE P1363 و ISO SC27 به عنوان استاندارد پذیرفته شده است. جدول 1 تناظر بین نمادهای ریاضی بکار گرفته شده در DSS و ECDSA را نشان میدهد.
نمادهای ECDSA نمادهای DSA
N
P
D
Q Q
g
x
y
جدول 1 : تناظر بین نمادهای ریاضی بکار گرفته شده در DSS و ECDSA
مراحل تولید کلید، تولید امضاء و تصدیق امضاء برای ECDSA در زیر آمده است:
تولید کلید :
برای تولید کلید هر عضو A باید اعمال زیر را انجام دهد.
1- یک منحنی بیضوی E بر روی Zp انتخاب نماید. تعداد نقاط موجود در E(Zp) باید بر عدد اول بزرگ n قابل تقسیم باشد.
2- یک نقطة از مرتبة n را انتخاب نماید.
3- عدد صحیح تصادفی d را در محدودة [1, n-1) انتخاب نماید.
4- مقدار Q = dP را محاسبه نماید.
5- کلید عمومی A عبارت است از (E, P, n, Q) و کلید خصوصی وی d است.
تولید امضاء :
برای امضاء نمودن پیام A, m باید مراحل زیر را انجام دهد.
1- عدد صحیح و تصادفی k را در محدودة [1, n-1] انتخاب نماید.
2- مقدار kP = (x1, y1) و r = x1 mod n را محاسبه نماید. (در اینجا x1 یک عدد صحیح در نظر گرفته میشود. در صورتیکه r=0 باشد آنگاه به مرحلة 1 باز میگردد. (این یک شرط امنیتی است زیرا اگر r=0 باشد آنگاه معادلة امضاء s = k-1{h(m) + dr} کلید خصوصی d را در بر ندارد).
3- مقدار k-1 mod n را محاسبه نماید.
4- مقدار s = k-1{h(m) + dr} mod n را محاسبه نماید که h تابع درهمساز SHA-1 میباشد.
5- در صورتیکه s=0 باشد به مرحلة 1 باز میگردد. (در صورتیکه s=0 باشد آنگاه s-1mod n وجود ندارد. s-1 در مرحلة سوم تصدیق امضاء به کار میآید).
6- امضاء پیام m زوج (r, s) است.
تصدیق امضاء :
شخص B برای تصدیق امضاء (r, s) متعلق به A بر روی پیام m باید مراحل زیر را انجام دهد.
1- یک کپی قابل اعتماد از کلید عمومی (E, P, n, Q) مربوط به A بدست آورد.
2- بررسی کند که s, r اعداد صحیحی در بازة [1, n-1] باشند.
3- مقادیر w = s-1 mod n و h(m) را محاسبه نماید.
4- مقادیر u1 = h(m) w (mod n) و u2 = rw mod n را محاسبه نماید.
5- مقادیر u1P+u2Q = (x0, y0) و v = x0 mod n را محاسبه نماید.
6- امضاء را بپذیرد اگر و تنها اگر v = r باشد.
استاندارد ANSI X9.62 توصیه میکند که n>2160 اختیار شود. برای رسیدن به سطح امنیتی مشابه با DSA (با q به طول 160 بیت و p با طول 1024 بیت) پارامتر n باید حدوداً 160 بیتی باشد در این صورت DSA و ECDSA دارای طول امضاءهای مشابهی میباشند 320) بیت). در این روش بجای اینکه هر یک از اعضاء برای خود یک منحنی بیضوی انتخاب نمایند میتوانند همگی از یک منحنی بیضوی مانند E بر روی Zp و نقطة P از مرتبة n استفاده کنند. این مقادیر اصطلاحاً پارامترهای سیستم نامیده میشوند. (در DSS پارامترهای متناظر عبارتند از (g, q, p)، در این صورت کلیدعمومی هر شخص تنها نقطة Q میباشد، این باعث میشود که طول کلیدهایعمومی کاهش یابند.
مقایسة سه استاندارد امضای دیجیتال DSS, RSA و ECDSA :
در جدول 2 مشخصات عمومی هر سه استاندارد امضای دیجیتال آورده شده است. در روش استاندارد مبتنی RSA برای بدست آوردن چکیدة پیام مجبور به بکارگیری تابع درهمساز خاصی نیستیم ولی توصیة ANSI این است که بهتر است از MD2 یا MD5 استفاده شود. در صورتیکه در دو استاندارد دیگر بکارگیری SHA-1 اجباری است. نکتة دیگر اینکه امضای دیجیتال مبتنی بر منحنیهای بیضوی توسط سه مؤسسه IEEE, ANSIو ISO انجام گرفته است که اصول هر سه یکی است.
مشخصات
ناماستانداردامضاء سیستم رمزنگاری مبنا تابع درهمساز بکارگرفتهشده نام استاندارد و مؤسسه استانداردکننده سال پذیرفته شدن
DSS الجمال SHA-1 FIPS 186-2
(ANSI X9.30) 1991
RSA RSA MD2
MD5 ANSI X9.31 1991
ECDSA الجمال SHA-1 ANSI X9.62
IEEE PI363
ISO SC27 1998
جدول 2 : مشخصات عمومی سه استاندارد امضای دیجیتال
در جدول 3 مقایسهای بین سه استاندارد امضای دیجیتال برای پارامترهای مختلف بعمل آمده است. مبنای محاسبات اجرای هر کدام از سیستمها بر روی یک کامپیوتر Pentium III با فرکانس کلاک 850 MHZ و با Cashe, 256 میباشد.
مشخصه
ناماستاندارد استحکام اندازه کلید عمومی اندازه کلید خصوصی اندازه امضــاء زمان
اولیــه زمان تولید کلیــد زمان
امضــاء زمان
تصدیق
DSS
512 104 1900 1600 368 0 34 21 33
DSS
1024 1011 3500 2680 368 0 18 68 122
ECDSA
160 1011 170 163 336 1162 103 91 431
RSA
1024 1011 1080 2624 1024 0 4100 67 3
ECDSA
224 1020 240 232 464 2040 100 102 594
RSA
2048 1020 2104 5184 2048 0 68000 460 16
جدول 3:مقایسةپارامترهای مختلف سه استاندارد امضای دیجیتالCDSA, RSA, DSS
در مورد جدول فوق باید نکات زیر را در نظر گرفت:
• اعداد نوشته شده در برابر استاندارد DSS معرف طول عدد اول p، در RSA معرف طول عدد n و در ECSA معرف طول عدد اول p میباشند.
• تمام طول کلیدها بر حسب بیت میباشند.
• استحکام بر حسب MIPS سال برای شکستن سیستم میباشد.
• تمام زمانها بر حسب میلیثانیه میباشند.