نحوه کار امضای دیجیتال
همانطور که بیان گردید، برای اینکه هویت فرستنده سند تایید شود و نیز برای اطمینان از اینکه سند در طول مدت انتقال و رسیدن به گیرنده دستکاری نشده است از امضای دیجیتالی استفاده میشود.
به طور کلی سه دلیل برای استفاده از امضای دیجیتالی وجود دارد که شامل:
- استفاده از کلید عمومی این اجازه را به هر شخصی میدهد که کلید خود را به سمت فرستنده اطلاعات بفرستد و سپس گیرنده پس از دریافت اطلاعات آنرا توسط کلید خصوصی خود بازگشایی میکند، بنابراین امضای دیجیتالی این امکان را میدهد که فرستنده یا گیرنده مطمئن شوند که اطلاعات از محل یا شخص مورد نظر ارسال یا دریافت میشود.
- در حالت معمولی اطلاعات در طول مدت انتقال ممکن است توسط دیگران دستکاری شود، لذا برای اینکه از صحت و عدم دستکاری شدن اطلاعات رسیده مطمئن شویم نیاز به یک امضای دیجیتالی داریم.
- از بین بردن امکان انکار و تردید. گیرنده اطلاعات برای اینکه مطمئن شود فرستنده بعدا در خصوص اطلاعاتی که فرستاده است اعلام بی خبری نکند و باصطلاح آنها را رد نکند از فرستنده آن اطلاعات، یک امضا درخواست میکند تا شاهدی بر این ادعا باشد.
برای پیاده سازی یک امضای دیجیتالی نیاز به سه الگوریتم[1] داریم:
الف- یک الگوریتم برای ایجاد کلید:
الگوریتم تولید کلید را که کلید خصوصی را بطور یکسان و تصادفی از مجموعه کلیدهای ممکن انتخاب میکند. خروجیهای این الگوریتم کلید خصوصی و کلید عمومی مطابق با آن است
ب- الگوریتم دیگری برای ایجاد امضاء :
الگوریتم امضا که توسط آن با استفاده از کلید خصوصی و پیام، امضا شکل میگیرد.
– الگوریتم دیگری برای تایید امضاء :
الگوریتمی که با استفاده از پیام دریافتی و کلید عمومی صحت امضا را بررسی میکند و با مطابقتی که انجام میدهد یا امضا را می پذیرد یا آن را رد میکند.
حال با یک مثال سعی در تشریح نحوه رمز نگاری در امضای دیجیتال می پردازیم. در صورتی که محمد پیام را ابتدا با کلید خصوصی خود رمزنگاری و سپس با کلید عمومی مسعود(گیرنده)، آن را مجددا رمزنگاری کند و پیام را ارسال نماید، در این صورت با توجه به قاعده ی گفته شده، مسعود برای خواندن پیام ابتدا باید پیام رمزی را با کلید خصوصی خود و سپس با کلید عمومی محمد رمزگشایی کند در نتیجه با توجه به اینکه رمزگشایی پیام با کلید عمومی محمد(فرستنده)، ملازمه با این مساله دارد که پیام در لحظه ی ارسال با کلید متناظر آن(کلید خصوصی) رمز نگاری شده باشد و می دانیم که اصولا دسترسی به کلید خصوصی محمد تنها برای شخص او امکان پذیر است، بنابراین این نتیجه ی منطقی بدست می آید که خود محمد این پیام را ارسال کرده است. چرا که هیچکس دیگری از کلید خصوصی محمد اطلاع ندارد.[2]
در پایان ذکر این نکته ضروری است که قانون نمونه امضای الکترونیکی آنسیترال به بی طرفی تکنولوژیکی معتقد است. این قانون با توجه به سرعت موجود در ابداع روش های نوین ایجاد امضای الکترونیکی مانند امضای دیجیتالی طبق الگوریتم ریاضی، اسکن امضای کاغذی، اثر انگشت، خصوصیت عنبیه چشم یا ویژگی های بیولوژیکی افراد، بدون در نظر گرفتن نوع تکنولوژی به کار رفته برای ایجاد آن، معیارهایی را برای اعتبار حقوقی انواع مختلف امضاهای الکترونیکی که هم اکنون رایج است یا ممکن است در آینده ایجاد شود و امضاهای دست نویس و یا سایر شیوه های سنتی تولید امضا مانند مهر و تمبر، رفتاری مادی صورت گیرد.
[1] الگوریتم امضای دیجیتال :
1- تولید کلید
تولید کلید شامل دو مرحله است. مرحله اول انتخاب پارامترها الگوریتم است که میتوانند بین کاربران مختلف سیستم به اشتراک گذاشته شوند، در حالیکه مرحله دوم به محاسبه کلیدهای خصوصی و عمومی برای یک کاربر مجزا میپردازد.
2- انتخاب پارامترهای الگوریتم
- یک تابع پنهانی در هم تصویب شده H را انتخاب کنید
بر روی طول کلید N,Lتصمیم بگیرید. این اندازه گیری اولیه قدرت پنهانی کلید است. دی اس اس اصلی ما را وادار میکند تا مضربی از ۶۴ بین ۵۱۲و ۱۰۲۴ باشد.
- یک بیت اولیه n را به گونهای برگزینید که N کمتر یا مساوی با طول خروجی درهم باشد.
- یک بیت اولیه l با مدول p را به گونهای انتخاب کنید که p–۱ مضربی از q باشد.
- عددی را به عنوان g = h(p–۱)/q برگزینید.
پارامترهای الگوریتم (p, q, g) ممکن است بین کاربران سیستم به اشتراک گذاشته شود. به ازای هر کاربر یک مجموعه از پارامترها به کلیدها تخصیص میابد.
3- تخصیص کلید به کاربر
به ازای هر کاربر یک مجموعه از پارامترها به کلید تخصص میابد مرحله دوم کلیدهای عمومی و اختصاصی را برای یک کاربر مجزا محاسبه میکند.
- انتخاب x با روشهای تصادفی
- محاسبه باقیمانده y = gx
- کلید عمومی(p, q, g, y)و کلید خصوصی x است.
4- الگوریتم تولید امضا
- تولید یک کلید تصادفی k باید بعد از یکبار استفاده از بین رفته و دیگر مورد استفاده قرار نگیرد.
- سپسزوج مرتب امضا (r,s)به صورت زیر محاسبه میشوند.
r = (gk mod p) mod q s = [k-1(H(M) + xr)] mod q
(r,s) به پیام M الحاق شده وفرستاده میشود.
5- درستی الگوریتم تصدیق امضا
گیرنده ,M و (r,,s,) را دریافت میکنند. مقادیر زیر را محاسبه میکند:
- w = (s’)-1mod q
- u1= [H(M’)w] mod q
- u2= [(r’)w] mod q
- v = [(gu1yu2) mod p] mod q
اگر v=r, امضا معتبر است.
6- حساسیت
با DSA پیش بینی ناپذیری و محرمانه بودن و منحصربهفردی مقدار تصادفی امضا K بسیار حائز اهمیت است. اهمیت این موارد به اندازهای است که نقض هر یک از این سه لازمه میتواند کل کلید خصوصی شما را برای یک مهاجم آشکار نماید. دو بار استفاده از یک مقدار مشابه حتی با مخفی نگه داشتن K استفاده از یک مقدار قابل پیش بینی یا فاش شدن حتی چند بیت از K در هر یک چند امضا برای در هم شکستن DSA کافی است.
[2] Rezende, Pedro, A.D. (2001). The Possible Law On Digital Electronic, p4
لینک جزییات بیشتر و دانلود این پایان نامه:
مطالعه تطبیقی امضای الکترونیکیدر حقوق ایران با سیستم های حقوقی کامن لا و رومی – ژرمنی