در سیستم مالی سنتی بانکها هستند که افراد را به کمک امضا و کارت ملی احراز هویت میکنند و اجازه نمیدهند کسی جز خود فرد از حسابش پول برداشت کند. برای بسیاری سوال است که در دنیای ارز دیجیتال که همهچیز ناشناس است و نهاد متمرکزی وجود ندارد، چطور اطمینان حاصل میشود که خود فرد درخواست انتقال رمزارز از کیف پولش را داده است؟
چگونه اثبات میشود که پیام و تراکنش کاربران دستکاری نمیشود؟ پاسخ این سوالها در امضای دیجیتال و رمزنگاری است. با صرافی سیمیا همراه باشید تا ببینیم امضای دیجیتال چیست، چطور ساخته میشود و چه کاربردی در رمزارزها دارد.
فهرست محتوا
امضای دیجیتال چیست؟
امضای دیجیتال به زبان ساده یک طرح ریاضی برای تایید صحت پیامها یا اسناد دیجیتال است و میتوان آن را مشابه یک اثر انگشت الکترونیکی دانست. استفاده از امضا (چه معمولی و چه دیجیتال)، دو هدف اصلی را دنبال میکند:
- احراز هویت: اطمینان حاصل شود که پیامها توسط خود شخص امضا میشوند و نه یک کلاهبردار یا هکر.
- یکپارچگی اسناد: یعنی اطمینان حاصل شود که از زمان درج امضا، خود پیام تغییری نکرده است.
در روش سنتی، امضاکننده هر بار از همان امضای معمولی و نمادهای یکسان خود استفاده میکند. امنیت این نوع امضا کاملا به این بستگی دارد که هیچکس جز شما نتواند آن امضا را درج کند و تایید این نوع امضا تنها با نگاه کردن انجام میشود. یک سند امضاشده شامل خود سند، شناسه عمومی امضاکننده (که معمولا اسم شخص است) و خود امضا میشود.
امضای معمولی نقطه ضعفهای مختلفی دارد. این نوع امضا همیشه و برای هر سندی یکسان است و هر کسی که نمونه یک امضا را داشته باشد، میتواند آن را جعل کند. همچنین برای تایید این امضا به نهادهای متمرکز نیاز است و هر کسی نمیتواند صحت امضا را تایید کند. امضای دیجیتال میتواند با استفاده از تکنولوژی محاسبه مدرن پاسخگوی این مشکلات باشد.
در امضای دیجیتال پیام، امضا و شناسه عمومی امضاکننده عددهایی هستند که از طریق یک فرمول ریاضی با یکدیگر در ارتباط هستند. از طریق این فرمول، بدون هیچ ابهامی مشخص میشود که آیا امضای یک سند یا پیام، توسط کسی انجام شده که مالک شناسه عمومی آن امضا است یا خیر.
کلید عمومی و خصوصی در امضای دیجیتال
برای تکمیل امضای دیجیتال، وجود یک پارامتر دیگر ضروری است که باید به صورت مخفیانه، فقط در اختیار صاحب امضا یا همان مالک شناسه عمومی باشد. شناسه عمومی در امضای دیجیتال همان کلید عمومی و پارامتر مخفی همان کلید خصوصی است. مفهوم رمزنگاری نامتقارن و ارتباط بین کلید عمومی و خصوصی را میتوانید در مقاله رمزنگاری چیست به خوبی متوجه شوید.
پس زمانی که شما یک امضای دیجیتال ایجاد میکنید، با کلید خصوصی و کلید عمومی سروکار دارید. بین این کلیدها یک ارتباط یکطرفه برقرار است؛ یعنی میتوانید با استفاده از یک فرمول کلید عمومی را از کلید خصوصی استخراج کنید، اما عکس این عمل امکانپذیر نیست.
کلید عمومی مثل اسمی است که در کنار امضای معمولی در یک سند درج میشود. این کلید جزو اطلاعاتی است که برای عموم قابل مشاهده است، اما کلید خصوصی فقط در اختیار شماست. برای ایجاد امضای دیجیتال از کلید خصوصی استفاده میشود و اصالت امضاکننده بهراحتی تایید میشود.
تاییدکنندگان کلید عمومی، پیام امضا شده و امضا را در اختیار دارند و فقط با کلید عمومی خود شخص است که میتوان امضا را رمزگشایی کرد.
یک امضای دیجیتال از ۳ بخش تشکیل شده است:
- الگوریتم KeyGen که برای تولید کلید عمومی و خصوصی استفاده میشود.
- الگوریتم Sig که با استفاده از پیام و کلید خصوصی، امضا را ایجاد میکند.
- الگوریتم Ver که با استفاده از امضا، پیام امضا شده و کلید عمومی، امضا را تایید میکند.
تولید کلیدها از طریق الگوریتم KeyGen
الگوریتم تولید کلید (key generation) یک جفت کلید تولید میکند؛ SK یا کلید خصوصی و PK یا کلید عمومی. هر باری که از این الگوریتم استفاده کنید، کلیدهای جدیدی به شما داده میشود.
کلید خصوصی یک عدد تصادفی است. با اعمال یک تابع فشردهسازی یکطرفه و از پیش تعیینشده به کلید خصوصی، میتوان کلید عمومی را به دست آورد. در این تابع یکطرفه، نمیتوان با استفاده از کلید عمومی به پارامترهای ورودی یا همان کلید خصوصی دست یافت. در نتیجه میتوانیم با امنیت کامل کلید عمومی خود را به اشتراک بگذاریم و ترسی از فاش شدن کلید خصوصی نداشته باشیم.
تولید امضا با الگوریتم Sig
برای تولید امضا به دو چیز نیاز داریم: کلید خصوصی یا Sk و پیامی که میخواهیم امضا شود. اندازه و طول متغیر پیامها ممکن است مشکل ایجاد کند، اما توابع هش (Hash) رمزنگاری این مشکل را حل میکنند.
یک تابع هش رمزنگاری هر پیامی را به اعدادی با فرمت مشخص تبدیل میکند. مثلا نتیجه این تابع ممکن است عددی باشد که ۲۵۶ بیت دارد. به چنین عددی «هش» و به این فرایند تبدیل «هشینگ» گفته میشود. تابع هش همیشه برای یک ورودی ثابت، نتیجه یکسان تولید میکند.
اما کوچکترین تغییر در پیام، هش آن را به قدری عوض میکند که به هیچ عنوان نمیتوان بین تغییرات هش و تغییرات پیام ارتباط برقرار کرد. استفاده از توابع هش علاوه بر تسهیل فرایند کلی، یکپارچگی پیام را نیز تضمین میکند. یعنی اطمینان حاصل میشود که پیام امضاشده از زمان درج امضا هیچ تغییری نکرده است.
برای مثال، تابع هش رمزنگاری SHA256 اعدادی را در محدوده ۰ تا ۲۲۵۶-۱ میدهد. SHA256 برای ورودی «قول میدهم که به تو ۵۰۰۰ دلار پرداخت کنم» این نتیجه را میدهد:
be657fcad7933b87869835c571b60ff1444f68179326e7754c3d99babf919995
عبارت بالا با فرمت Hex است. اگر به ورودی یک ۰ صفر اضافه کرده و ۵۰۰۰ را به ۵۰٬۰۰۰ تغییر دهیم، حاصل هش به این صورت تغییر مییابد:
۹۰۲۲۲db12a4a59f8d083e3cf88bf22dab15385c9946f4526a67855e6a5ff0737
به طور خلاصه، الگوریتم تولید امضا یک کلید خصوصی و یک عدد m (هش پیام) را میگیرد و یک عدد s میدهد. عدد s در واقع یک امضا است (s=Sigsk, m).
تایید امضا با الگوریتم Ver
الگوریتمهای KeyGen و Sig در تولید امضای دیجیتال نقش دارند، اما از الگوریتم Ver برای تایید و اعتبارسنجی امضا استفاده میشود. این الگوریتم به کلید عمومی امضاکننده (Pk)، هش پیام امضاشده (m) و امضا (s) نیاز دارد. الگوریتم Ver برای امضای صحیح عدد ۱ و برای امضای نادرست عدد ۰ را نشان میدهد.
تایید امضا یعنی کلید عمومی و کلید خصوصی استفاده شده برای امضا با یکدیگر مطابقت دارند و فرد مدعی، همان امضاکننده حقیقی تراکنش است. همچنین پیام امضا شده (هش) تغییری نکرده است.
در مقابل، تایید نشدن امضا یعنی یکی از موارد زیر رخ داده است:
- کلید خصوصی با کلید عمومی مطابقت ندارد.
- فردی خود را به جای امضاکننده جا زده و هویت او را جعل کرده است.
- پیام با پیامی که توسط امضاکننده امضا شده است، مطابقت ندارد.
در الگوریتم Ver نمیتوان فهمید که علت دقیق رد شدن امضا چیست. چون الگوریتم علت و شرایط دقیق تایید نشدن پیام را نشان نمیدهد.
کاربردهای امضای دیجیتال
امضای دیجیتال را می توان برای انواع مختلفی از اسناد و گواهیهای دیجیتال استفاده کرد و از مزایای آن بهرهمند شد. برخی از رایجترین موارد استفاده آن عبارتند از:
- فناوری اطلاعات (IT): افزایش امنیت سیستمهای ارتباطی اینترنتی
- امور مالی: ارائه گزارش هزینهها، قرارداد وامها و غیره
- امور حقوقی: امضا کردن قراردادهای تجاری و حقوقی از جمله اوراق دولتی
- بهداشت و درمان: جلوگیری از تقلب در نسخهها و سوابق پزشکی
امنیت امضای دیجیتال
سر راه امضای دیجیتال چالشهایی هم وجود دارد. این چالشها توجه ما را به سه موضوع کلی جلب میکند که میتواند امنیت امضا را تهدید کند.
- الگوریتم: کیفیت الگوریتم های مورد استفاده در طرح امضای دیجیتال بسیار مهم است. دو عامل مهمی که بر کیفیت الگوریتم اثر میگذارند، توابع هش و سیستم رمزنگاری مورد استفاده است.
- پیادهسازی: ممکن است الگوریتمها بسیار خوب باشند، اما پیادهسازی آنها به خوبی صورت نگرفته باشد و ضعفهایی در امضای دیجیتال ایجاد شود.
- کلید خصوصی: درز کردن کلید خصوصی به بیرون را میتوان معادل جعل شدن هویت دانست. این مورد سمت کاربران سیستم است و باید کلیدهای خصوصی را به صورت امنی نگهداری کنند. لو رفتن کلیدهای خصوصی امنیت کل سیستم را تهدید میکند.
پرسش و پاسخ (FAQ)
- امضای دیجیتال چیست؟
امضای دیجیتال طرحی ریاضی است که با کمک گرفتن از رمزنگاری نامتقارن و تابع هش، صحت اعتبار یک پیام و هویت ارسالکننده آن را تایید میکند. - امضای دیجیتال چه کاربردی در ارزهای دیجیتال دارد؟در دنیای رمزارزها برای اطمینان از این که خود صاحب آدرس درخواست تراکنش داده و متن درخواستش دچار تغییری نشده است، از امضای دیجیتال استفاده میشود.
جمعبندی
امضای دیجیتال با کمک دو الگوریتم رمزنگاری تولید شده و با استفاده از یک الگوریتم دیگر تایید میشود. نحوه تولید و الگوریتمهای استفاده شده در امضای دیجیتال باعث میشود که این نوع بر خلاف امضای معمولی غیرقابل جعل باشد؛ همچنین صحت پیام هم اعتبارسنجی میشود و خیالمان راحت است که اصل پیام دچار تغییر نشده است. در مطلب بالا یاد گرفتیم که امضای دیجیتال چیست و چگونه ساخته میشود.