چرا از امضای دیجیتال استفاده میشود ؟
طرحها فایل امضای دیجیتال بر مبنای رمزنگاری نامتقارن هستند و میبایست به شکل صحیح صورت گیرد تا مؤثر واقع شود. همچنین امضاهای دیجیتال میتوانند امضاهایی غیرقابل انکار را ایجاد کنند به این معنی که شخص امضاکننده نمیتواند تا زمانی که کلید شخصی فرد به صورت مخفی باقیماندهاست، ادعا کند که من این نامه که امضای من را به همراه دارد، امضا نکردهام؛ ولی در زمانی که کلید شخصی فرد در شبکه از حالت مخفی خارج شود یا زمان اعتبار امضای او به اتمام برسد شخص میتواند امضای دیجیتال خود را انکار کند هرچند که در این حالت نیز با وجود ساختار قوی امضای دیجیتال، این امضا اعتبار خود را حفظ میکند. پیغامهای امضا شده با امضای دیجیتال امکان ارائه به صورت یک رشته بیتی را دارند. مانند: پست الکترونیک، قراردادها یا پیامهایی که از طریق قواعد رمزنگاریهای دیگر ارسال شده باشند.
امضاهای دیجیتال اغلب برای به انجام رساندن امضاهای الکترونیکی به کار میروند. در تعدادی از کشورها، مانند آمریکا و کشورهای اتحادیه اروپا، امضاهای الکترونیکی قوانین مخصوص به خود را دارند. هرچند، قوانین دربارهٔ امضاهای الکترونیکی همواره روشن نمیسازند که آیا امضاهای دیجیتال به درستی به کار گرفته شدهاند یا اهمیت آنها به چه میزان است. در حالت کلی قوانین به شکل واضح در اختیار کاربران قرار نمیگیرد و گاهی آنان را به گمراهی میکشاند.
مشخصات امضا دیجیتال
طرح امضای دیجیتال معمولاً سه الگوریتم را شامل میشود: ۱- الگوریتم تولید کلید را که کلید خصوصی را بطور یکسان و تصادفی از مجموعه کلیدهای ممکن انتخاب میکند. خروجیهای این الگوریتم کلید خصوصی و کلید عمومی مطابق با آن است. ۲- الگوریتم امضا که توسط آن با استفاده از کلید خصوصی و پیام، امضا شکل میگیرد. ۳–الگوریتمی که با استفاده از پیام دریافتی و کلید عمومی صحت امضا را بررسی میکند و با مطابقتی که انجام میدهد یا امضا را میپذیرد یا آن را رد میکند.
دو ویژگی اصلی که در امضای دیجیتال مورد نیاز است: اول، امضای تولید شده از پیام مشخص و ثابت هنگامی که توسط کلید عمومی مورد بررسی قرار میگیرد فقط در مورد همان پیام ارسالی میتواند عمل تطبیق را صورت دهد و در مورد هر پیام متفاوت و خاص میباشد. ثانیاً، امضای دیجیتال میبایست قابلیت اجرا توسط الگوریتم را داشته باشد و بتواند فایل امضای معتبر برای مهمانی که کلید خصوصی را دارا نمیباشد ایجاد نماید.
تاریخچه بر اساس اسناد معتبر «دیدگاههای جدید در رمزنگاری» در سال ۱۹۷۶ توسط ویتفید دیفای و مارتین هیلمن برای تشریح ایدههای اولیه طرح فایل امضای دیجیتال ارائه شد. البته به نظر میرسد طرحهای اولیه دیگری نیز در آن زمان وجود داشتهاست. مدت کوتاهی پس از آن جمع دیگری از محققین به نامهای ریوست، شمیر و آدلمن، الگوریتم آر اس اِی را ابداع کردند که میتوانست برای تولید امضای دیجیتال اولیه به کار رود. اول بسته نرمافزاری امضای دیجیتال با عنوان لوتوس نت در سال ۱۹۸۹ بر مبنای همین الگوریتم به بازار عرضه شد.
در سال ۱۹۸۴ میشلی، گلدواسر و ریوست با تمام دقت موارد مورد نیاز را برای برقراری امنیت در طرح امضای دیجیتال بررسی کردند. آنها با بررسی مدلهای مختلف حمله برای امضای دیجیتال توانستند طرح فایل امضای دیجیتال جی ام آر را ارائه کنند که میتواند در مقابل حمله به پیام و جعلی بودن آن مقاومت کند.
طرحهای ابتدایی امضای دیجیتال مشابه همدیگر بودند: آنها از جایگشت (تبدیل) دریچهای استفاده میکردند، مانند تابع آر اس اِی یا در برخی موارد از طرح امضای رابین بهره میگرفتند. جایگشت دریچهای نوعی از مجموعه جایگشت هاست که به وسیله پارامترها مشخص میشود که در محاسبههای رو به جلو سریع عمل میکند ولی در محاسبههای بازگشتی با مشکل مواجه میشود. با این وجود برای هر پارامتر یک دریچه وجود دارد که حتی محاسبههای بازگشتی را آسان میکند. جایگشتهای دریچهای میتوانند مانند سیستمهای رمزگذاری با کلید عمومی باشند. در جایی که پارامتر به عنوان کلید عمومی و جایگشت دریچهای به عنوان کلید پنهان است رمزگذاری مانند محاسبه جایگشت در جهت رو به جلوست و رمز گشایی مانند محاسبه در جهت معکوس است. همچنین جایگشتهای دریچهای میتوانند مانند طرح فایل امضا دیجیتال باشند، به این صورت که محاسبه در جهت معکوس با کلید پنهان مانند امضا کردن است و محاسبه در جهت پیش رو مانند بررسی صحت امضاست. به دلیل این همخوانی امضاهای دیجیتال اغلب بر پایه سامانه رمزنگاری با کلید عمومی تشریح میشوند اما این تنها روش پیادهسازی امضای دیجیتال نیست.
ولی این نوع طرح امضای دیجیتال در برابر حملات آسیبپذیر است و شخص مهاجم میتواند با دست کاری در روش بررسی صحت امضا، یک امضای دیجیتال جعلی برای خود ساخته و شبکه را با مشکل مواجه سازد. هرچند این نوع امضا به شکل مستقیم به کار گرفته نمیشود ولی ترجیحاً ابتدا پیام را با استفاده از روشهای درهم سازی خلاصه میکنند و سپس خلاصه پیام را امضا میکنند و در نتیجه با استفاده از همین ترفند، شخص مهاجم فقط میتواند یک امضای دیجیتال جعلی برای خود درست کند که این امضا با محتویات مربوط به خروجی تابع درهم سازی از پیام خلاصه شده تطابق ندارد و شخص مهاجم نمیتواند به محتویات پیام خدشهای وارد کند.
همچنین دلایل متنوعی وجود دارد تا افرادی که میخواهند از امضای دیجیتال استفاده کنند از خلاصه پیام و خروجی تابع درهمسازی برای امضا استفاده کنند. اولین دلیل ایجاد بازدهی مناسب برای طرح امضای دیجیتال است زیرا فایل امضا خیلی کوتاهتر خواهد بود و در نتیجه زمان کمتری صرف میشود. دومین دلیل برای سازگاری بیشتر است زیرا با استفاده از تابع درهمسازی شما میتوانید خروجی مطابق با نوع الگوریتمی که به کار گرفتهاید داشته باشید. سومین دلیل برای درستی اجرای امضای دیجیتال است: بدون استفاده از تابع درهمسازی ممکن است پیام شما در هنگام امضا به دلیل مشکل فضا به بخشهای مختفل تقسیم شود و شخص دریافتکننده نتواند به درستی منظور فرستنده را دریافت کند بنابراین از این تابع استفاده میکند تا خود پیام را به شکل خلاصه و بدون ایجاد مشکل ارسال کند.
نظریههای امنیتی در تحقیقات میشلی، گلدواسر و ریوست مراتب متفاوت حمله به امضاهای دیجیتال را برای ایجاد دیوار دفاعی مناسب بررسی کردند و نتایج زیر به دست آمد:
۱٫ در حمله کلید یگانه، مهاجم فقط روند بررسی و تأیید کلید عمومی را بدست میآورد و از این طریق سامانه را مورد تهاجم قرار میدهد.
۲٫ در حمله با پیام آشکار، مهاجم یک کلید کارآمد برای مجموعهای از پیامهای آشکار و مشخص در اختیار دارد و فقط با استفاده از پیام مشخص میتواند حمله کند و توانایی انتخاب پیام برای مورد حمله قرار دادن نخواهد داشت.
۳٫ در انطباق پیام انتخاب شده، مهاجم ابتدا امضا را بر روی یک پیام دلخواه که مورد انتخاب مهاجم است یادمیگیرد و از آن امضا استفاده میکند.
در ادامه مراحل نتایج حمله به سامانه امضای دیجیتال از طریق روشهای مذکور مطرح میشود:
۱٫ در مرحله اول امکان ترمیم و استفاده مجدد از امضای دیجیتال را از بین خواهد برد.
۲٫ توانایی جعل امضا در یک سطح گسترده از دیگر نتایج حمله به امضای دیجیتال است. در این مرحله شخص مهاجم توانایی جعل امضا برای هر پیامی را به دست خواهدآورد.
۳٫ جعل در مورد پیامهای انتخابی؛ در این مورد مهاجم میتواند جعل امضا را در مورد پیام انتخابی خود انجام دهد.
۴٫ در این مورد از نتایج حمله به امضای دیجیتال شخص مهاجم فقط میتواند از طریق امضای در دسترس خود و برخی پیامها به محتویات آنها دست پیدا کند و دیگر شخص مهاجم توانایی انتخاب ندارد و انتخابهای او محدود میشود.
معایب امضای دیجیتال
با وجود تمام مزایایی که امضای دیجیتال دارد و در ادامه همین مقاله به بررسی آن میپردازیم ولی این طرح همچنان در حل برخی مشکلات که در ادامه آنها را مطرح میکنیم ناتوان است. الگوریتم و قوانین مربوط به آن نمیتوانند تاریخ و زمان امضای یک سند را در ذیل آن درج کنند از همین جهت شخص دریافتکننده نمیتواند این اطمینان را حاصل کند که نامه واقعاً در چه تاریخ و زمانی به امضا رسیدهاست. ممکن است در محتویات سند تاریخی درج شده باشد و با تاریخی که شخص نامه را امضا کرده باشد مطابقت نداشته باشد. البته برای حل این مشکل میتوان از یک راه حل با عنوان زمان اعتماد به مهرو امضا استفاده کرد. همانطور که در ابتدای تعریف امضای دیجیتال اشاره شد این طرح غیرقابل انکار است و ساختار امضای دیجیتال بر همین اساس شکل گرفتهاست. همانطور که میدانید تکذیب در لغت به معنی انکار هرگونه مسئولیت نسبت به یک فعالیت است. هنگامی که پیامی ارسال میشود و فرستده آن را همراه امضا دریافت میکند در واقع این اطمینان در شخص دریافتکننده ایجاد میشود که نامه را چه کسی امضا کردهاست و انکار امضا کاری مشکل به نظر میرسد. البته تا زمانی که کلید خصوصی به صورت مخفی باقی بماند شخص فرستنده نمیتواند چنین ادعایی داشته باشد ولی هنگامی که فایل امضای شخصی مورد حمله قرار بگیرد نه تنها خود فایل امضا اعتبار لازم را از دست میدهد بلکه استفاده از زمان اعتبار مهر و امضا نیز دیگر کاربردی نخواهد داشت. البته یادآوری این نکته لازم است هنگامی که شما در سامانه خود از کلید عمومی بهره میگیرد دیگر نمیتوانید امضای خود را انکار کنید و در صورتی این موضوع امکانپذیر است که کل شبکه مورد حمله واقع شود و سامانه از اعتبار لازم ساقط شود. بنا براین توجه به انتخاب یک راه حل درست برای پیادهسازی طرح امضای دیجیتال از اهمیت ویژهای برخوردار است و همانطور که عنوان شد ممکن است با یک مشکل کل اعتبار مجموعه زیر سؤال برود. مطابق اصول فنی امضای دیجیتال که در توضیحهای ابتدایی آورده شدهاست، فایل امضای دیجیتال رشتهای از بیتها را در اجرای این طرح به کار میبرد. در واقع افراد در این طرح مجموعهای از بیتها را که ترجمه پیام است امضا میکنندآن آنها ترجمه معنایی آنها ذرهها امضا میکنند. مشکل دیگر امضای دیجیتال این است که چون پیام توسط یک تابع مشخص به مجموعهای از بیتها ترجمه و پردازش میشود ممکن است در طی مرحله انتقال و دریافت پیام ترجمه پیام دچار خدشه شود و مفهوم دیگری به خود گیرد. برای حل این مشکل از روشی با عنوان دبلیو وای اس آی دبلیو وای اس استفاده میشود به این معنا که همان چیزی که مشاهده میشود امضا میشود. در این روش همان اطلاعات ترجمه شده خود را بدون آن که اطلاعات مخفی دیگری در آن قرار گیرد امضا میکند و پس از امضا و تأیید اطلاعات از سوی شخص فرستنده درون سامانه به کار گرفته میشود. در واقع این روش ضمانت نامه محکمی برای امضای دیجیتال بهشمار میرود و در سیستمهای رایانهای مدرن قابلیت پیادهسازی و اجرا را خواهد داشت.
مزایای امضای دیجیتال
حال در این بخش مزایای استفاده از امضای دیجیتال را مورد بررسی قرار خواهیم داد. یکی از دلایل بهکارگیری امضاهای دیجیتالی که یک دلیل عادی بهشمار میرود ایجاد اعتبار برای امضاها در یک سامانه تبادل داده و اطلاعات است. در واقع استفاده از امضای دیجیتال سندیت و اعتبار ویژهای به یک سند میبخشند. وقتی که هر فرد دارای یک کلید خصوصی در این سامانه است با استفاده از آن میتواند سند را امضا کرده و به آن ارزش و اعتبار داده و سپس آن را ارسال کند. اهمیت ایجاد اطمینان قطعی و محکم برای شخص دریافتکننده پیام دربارهٔ صحت ادعای فرستنده در برخی از انواع انتقال اطلاعات مانند دادههای مالی به خوبی خود را نشان میدهد و اهمیت وجود امضای دیجیتال درست را بیش از پیش به نمایش میگذارد. به عنوان مثال تصورکنید شعبهای از یک بانک قصد دارد دستوری را به دفتر مرکزی بانک به منظور درخواست ایجاد تعادل در حسابهای خود را ارسال کند. اگر شخص دریافتکننده در دفتر مرکزی متقاعد نشود که این پیام، یک پیام صادقانه است و از سوی یک منبع مجاز ارسال شدهاست طبق درخواست عمل نکرده و در نتیجه مشکلاتی را به وجود میآورد. در موارد بسیار زیادی، فرستنده و گیرنده پیام نیاز دارند این اطمینان را به دست بیاورند که پیام در مدت ارسال بدون تغییر باقیماندهاست. هرچند رمزنگاری محتوای پیام را مخفی میکند ولی ممکن است امضا در یک سامانه از اعتبار ساقط شود و محتویات یک پیام دستخوش تغییرات گردد؛ ولی استفاده از امضای دیجیتال به عنوان روشی از رمز نگاری میتواند ضامن درستی و بی نقصی یک پیام در طی عملیات انتقال اطلاعات باشد زیرا همانطور که در ساختار اجرایی شدن الگوریتم مشاهده کردید از تابع درهمسازی بهره گرفته شدهاست و همین نکته ضمانت بهتری را برای درستی و صحت یک پیام ایجاد مینماید.
کلید عمومی رمزنگاری
رمزنگاری با استفاده از کلید عمومی روشی است برای ایجاد یک ارتباط پنهان میان دو شخص بدون اینکه نیازی به تعویض کلیدهای خصوصی باشد. همچنین با استفاده از این روش میتوان امضاهای دیجیتال را ایجاد کرد.
رمزنگاری کلید عمومی اساس و بنیاد تبادل اطلاعات در تکنولوژیهای امروز در جهان گسترده اینترنت است. همچنین این روش به عنوان رمزنگاری نامتقارن نیز مطرح است زیرا کلیدی که برای رمزنگاری به کار میرود با کلیدی که برای رمز گشایی به کار میرود متفاوت است. در رمزنگاری با کلید عمومی، هر کاربر یک جفت کلید برای رمزنگاری شامل یک کلید عمومی و یک کلید خصوصی است. کلید خصوصی به عنوان یک راز از سوی کاربر باید نگهداری شود و همه کاربران امکان استفاده از کلید عمومی را داردند و در اختیار همه قرار میگیرد.
از رمز نگاری نامتقارن هم برای رمزنگاری استفاده میشود هم برای رمز گشایی استفاده میشود. پیامهایی که با کلید عمومی رمزنگاری میشوند فقط با کلید خصوصی مطابق قابلیت رمزگشایی را دارند. هرچند که کلیدهای عمومی و خصوصی مطابق با یکدیگر هستند ولی با استفاده از کلید عمومی نمیتوان کلید خصوصی را به دست آورد. در طرح رمزنگاری متقارن فرستنده و گیرنده باید با یک کلید مشترک اضافه باشند تا بتوانند عملیات رمزگشایی و رمز نگاری را انجام دهند و به همین دلیل این طرح قابلیت اجرایی شدن کمتری نسبت به روش نامتقارن دارند زیرا روش متقارن یک پهنای باند ویژه جهت تبادل کلید اضافی نیاز دارد به همین دلیل از کارایی مناسبی برخوردار نیستند.
دو شاخه اصلی رمزنگاری با کلید عمومی عبارتند از: رمزگذاری کلیدی عمومی: پیامی که با کلید عمومی رمزگذاری شده باشد فقط به وسیله صاحب کلید خصوصی مطابق با آن رمزگشایی میشود و این موضوع به همکاری فرستنده و گیرنده بستگی دارد و میتواند اعتماد را تا اندازه زیادی در این سیستم تأمین کند و همکاری کرد. امضاهای دیجیتال: در مورد امضای دیجیتال پیام با استفاده از کلید خصوصی فرستنده رمزگذاری میشود و با استفاده از کلید عمومی فرستنده نیز رمزگشایی میشود. رمزنگاری کلید عمومی در مقایسه با صندوق پستی مانند صندوق پستی قفل شده همراه یک دریچه است که این دریچه در دسترس عموم قرار دارد بهطور مثال اطلاعاتی از قبیل محل خیابان در اختیار عموم قرار میگیرد. هرکس با دانستن آدرس خیابان میتواند به درب مورد نظر مراجعه کرده و پیام مکتوب را از طریق دریچه میتواند ببیند ولی فقط شخصی که کلید باز کردن صندوق پستی را دارا میباشد میتواند پیام را بخواند. همچنین امضاهای دیجیتال شبیه پلمب یک پاکت نامه است که هرکس میتواند پاکت نامه را باز کند ولی پلمی فرستنده بر روی پاکت نامه به عنوان نشانی از فرستنده باقی خواهد ماند. مسئله اصلی برای استفاده از رمزنگاری عمومی ایجاد اطمینان در مسیر ارسال اطلاعات است. با توجه به مثالهای ذکر شده باید کلید عمومی برای هر شخص به درستی تولید شود تا از سوی شخص سومی مورد تهاجم واقع نشود و سلامت سیستم حفظ شود. یک شیوه مرسوم برای رسیدگی به این مسئله استفاده از یک سازمان کلید عمومی است که بتواند در مورد شخص سومی که وارد سیستم میشود یک دسترسی متناسب تعریف کند. تمامی تکنیکهای قابلیت اجرای سریعتر نسبت به اجرای سیستم کلید خصوصی را دارند و میتوانند به اندازه کافی برای برنامههای متنوع کلید تولید کنند. در عمل اغلب رمز نگاری با کلید عمومی با سیستم کلید خصوصی به کار میرود تا بتواند بازدهی بیشتری داشته باشد. چنین ترکیبهایی را سیستم رمزنگاری دو رگه مینامند. برای رمزنگاری، فرستنده پیام با استفاده از الگوریتم تولید کلید بهطور تصادفی یک کلید تولید میکند و با استفاده از آن کلید تصادفی عملیات رمزنگاری با کلید عمومی را انجام میدهد. برای امضاهای دیجیتالی، فرستنده پیام با استفاده از تابع درهمسازی پیام را خرد میکنند و پس از تأیید محتوای نامه، آن را امضا میکند. همچنین گیرنده با استفاده از تابع درهمسازی محاسباتی را انجام میدهد و کدی را به دست میآورد و این کد را با کد حاصل از اعمال تابع درهمسازی بر روی امضا، مقایسه میکند و بررسی میکند که آیا پیام مورد حمله قرار گرفتهاست یا خیر.
تولید کلید
تولید کلید روند تولید کلیدها برای رمز نگاری است. یک کلید رمزنگاری را انجام میدهد و یک کلید رمزگشایی میکند. سیستمهای رمزنگاری جدید، سیستم رمزنگاری متقارن مانند الگوریتمهای DES و AES و سیستم رمزنگاری با کلید عمومی مانند الگوریتم آر اس اِی را شامل میشوند. الگوریتمهای متقارن از یک کلید به اشتراک گذاشته شده استفاده میکنند و الگوریتمهای کلید عمومی از کلید عمومی و کلید خصوصی بهره میگیرند که کلید عمومی دسترسی عمومی دارد و وقتی فرستنده دادهها را با کلید عمومی رمزگذاری میکند، گیرنده تنها با داشتن کلید خصوصی میتواند دادهها را رمزگشایی کند.
پروتکل رمز نگاری
یک پروتکل امنیت (پروتکل رمزنگاری) یک مفهوم انتزاعی است و در واقع تضمینی برای امنیت سیستم بهشمار میرود و امنیت سیستم رمزنگاری به برقراری این قواعد وابسته است. پروتکل تعیین میکند که الگوریتمها چگونه میبایست به کار روند تا همراه با کارایی لازم، امنیت خود را نیز حفظ کنند. پروتکلها به اندازه کافی و به صورت مفصل جزئیات را دربارهٔ ساختارهای دادهها و شکل استفاده از آنها را تعیین میکنند. اجرای کامل و درست پروتکل میتواند این اطمینان را در کاربر ایجاد کند که امنیت سیستم تا میزان مورد نیاز تأمین میشود. پروتکل رمزنگاری معمولاً در ابتداییترین حالت موارد زیر را شامل میشوند: بررسی و تأیید صحت کلید؛ تعیین اعتبار موجود بودن کلید در سیستم؛ در مورد روش متقارن اعتبار لازم را به یک پیام میدهد؛ حفظ امنیت داده در سطح برنامه؛ روشهایی که اجازه نمیدهد کاربر امضای خود را تکذیب کند (ویژگی غیرقابل انکار بودن). به عنوان مثال؛ پروتکل امنیت لایههای حمل اطلاعات یک پروتکل رمزنگاری است که برای حفظ امنیت اتصالات در سطح وب را تأمین میکند. طرز کار این پروتکل بر مبنای سیستم ۵۰۹X. است که یک مرحله تولید کلید و با استفاده از کلید عمومی و روش رمزنگاری با کلید عمومی دادهها را در سطح برنامهها حمل میکند؛ ولی این پروتکل نمیتواند ویژگی غیرقابل انکار بودن رمزنگاری را تأمین کند. انواع دیگری از پروتکلهای رمزنگاری وجود دارند که برخی از آنها خود شامل چندین پروتکل مختلف دیگر میشوند امزوه تنوع گستردهای در زمینه پروتکلها به وجود آمدهاست و شرکتهای مختلف برای رفع معایب امضای دیجیتال و ایجاد امنیت هر چه بیشتر در این ساختار تلاش هی چشمگیری انجام دادهاند. بهطور کلی، یک پروتکل رمزنگاری، مجموعهای از قواعد و روابط ریاضی است که چگونگی ترکیب کردن الگوریتمهای رمزنگاری و استفاده از آنها به منظور ارائه یک سرویس رمزنگاری خاص در یک کاربرد خاص را فراهم میسازد. معمولاً یک پروتکل رمزنگاری مشخص میکند که اطلاعات موجود در چه قالبی باید قرار گیرند. چه روشی برای تبدیل اطلاعات به عناصر ریاضی باید اجرا شود. کدامیک از الگوریتمهای رمزنگاری و با کدام پارامترها باید مورد استفاده قرار گیرند. روابط ریاضی چگونه به اطلاعات عددی اعمال شوند. چه اطلاعاتی باید بین طرف ارسالکننده و دریافتکننده رد و بدل شود. چه مکانیسم ارتباطی برای انتقال اطلاعات مورد نیاز است. ─ به عنوان مثال میتوان به پروتکل تبادل کلید دیفی- هلمن برای ایجاد و تبادل کلید رمز مشترک بین دو طرف اشاره نمود.