امضای دیجیتال چیست و چه الگوریتمهایی دارد؟ (Digital Signature)
امضای دیجیتال (Digital Signature) یک مکانیزم رمزنگاری برای تایید اعتبار و انسجام دادههای دیجیتال است. این امضا یک نسخهی دیجیتالی از همان امضاهای دستی است که همه ما داریم، با این تفاوت که پیچیدگی و امنیت آن بالاتر است.
به زبان ساده، امضای دیجیتال کُد یا رمزیست که به یک پیام یا سند پیوست شده است. این کد بهعنوان اثبات دستکاری نشدن آن پیام در طول مسیر ارسال تا دریافت آن پیام عمل میکند.
اگرچه مفهوم امنیت بخشیدن به ارتباطات با بهرهگیری از رمزنگاری، ایدهای باستانی است و از قدیم وجود داشته، اما امضاهای دیجیتال، به لطف توسعه رمزنگاری کلید عمومی (PKC)، از اواخر دهه 1970 به دنیای دیجیتال معرفی شدند. پس برای درک روش کار امضاهای دیجیتال باید ابتدا اصول تابع هش و رمزنگاری کلید عمومی را بفهمیم.
توابع هش (Hash Functions)
هشینگ یا هشکردن (hashing) یکی از عناصر اصلی و کلیدی سیستم امضای دیجیتال است. فرایند هشکردن شامل تبدیل داده (با هر اندازهای) به یک خروجی با اندازه ثابت است. این کار با نوعی الگوریتم خاص بهنام تابع یا تابعهای هش انجام میشود. خروجیِ ایجادشده بهوسیله تابع هش، مقدار هش یا چکیده پیام (message digest) نام دارد.
این تابعهای هش وقتی با فنِ رمزنگاری ترکیب میشوند، قابلیت تولید مقادیر هش را دارند که این مقادیر یا چکیدههای هش بهعنوان اثرانگشتهای منحصربهفرد دیجیتال بهکار میروند؛ یعنی هرگونه تغییر در داده ورودی (پیام) منجر به یک خروجیِ (مقدار هش) کاملاً متفاوت خواهد شد. به همین دلیل است که تابع هش رمزنگاری چنین کاربرد و استفادهی گستردهای در تایید اعتبار دادههای دیجیتال پیدا کرده است.
پیشنهاد تماشا: ویدیوی مفاهیم اولیه بلاکچین – قسمت اول – مکانیزم هش
رمزنگاری کلید عمومی (PKC)
رمزنگاری کلید عمومی یا PKC (public-key cryptography) به سیستمی اشاره دارد که از دو جفت کلید استفاده میکند: یک کلید عمومی و یک کلید خصوصی. این دو کلید با هم نسبت ریاضی دارند و هم برای رمزنگاری داده و هم امضاهای دیجیتال قابلاستفاده هستند.
PKC، بهعنوان یک ابزار رمزنگاری، از روشهای معمول رمزنگاری متقارن امنتر است. سیستمهای قدیمی برای رمزنگاری و رمزگشایی اطلاعات از یک کلید استفاده میکنند، اما در PKC، رمزنگاری داده با کلید عمومی و رمزگشایی آن با کلید خصوصی انجام میشود.
علاوه بر این، PKC در تولید خودِ امضاهای دیجیتال هم کاربرد دارد. فرایند تولید این امضا شامل هش کردن یک پیام (یا داده دیجیتال) همراه با کلید خصوصی امضاکننده است. سپس دریافتکنندهی پیام با استفاده از کلید عمومی که امضاکننده به او داده است، اعتبار امضا را بررسی میکند.
امضاهای دیجیتال در برخی موارد شامل رمزنگاری هم هستند، ولی این تنها گاهی رخ میدهد و همیشه اینطور نیست. بهعنوان مثال، بلاکچین بیت کوین از PKC و امضاهای دیجیتال استفاده میکند، اما برخلاف باور بسیاری، فرایند رمزنگاری وجود ندارد. بیت کوین برای تایید اعتبار تراکنشها از الگوریتمهای امضای منحنی بیضوی (ECDSA) بهره میگیرد.
پیشنهاد مطالعه: راههای حفظ امنیت ارزهای دیجیتال و جلوگیری از کلاهبرداری
امضای دیجیتال چگونه کار میکند؟
در حوزه رمزارزها، سیستم امضای دیجیتال شامل سه مرحله اساسی است: هشینگ، امضا و تایید.
هشینگ داده
هش کردن پیام یا داده دیجیتال، قدم اول است. این کار با ثبت داده از طریق الگوریتم هشینگ انجام میشود، بهطوری که مقدار هش تولید شود. در بالا اشاره شد که پیامها اندازههای متفاوتی دارند اما وقتی هش شوند، همهی مقادیر هش آنها طول یکسانی خواهند داشت. این اساسیترین ویژگی یک تابع هش است.
با این حال، هش کردن داده در تولید یک امضای دیجیتال ضروری است؛ چون میشود یک امضایی که اصلاً هش نشده را با کلید خصوصی امضا کرد. اما در رمزارزها، دادهها همیشه هش میشوند چون مواجهه با چکیدهها یا مقادیر ثابت باعث ساده شدن کل فرایند میشود.
امضا
پس از هش شدن اطلاعات، ارسالکننده پیام باید آن را امضا کند. حالا نوبت بازی رمزنگاری کلید عمومی است. انواع الگوریتم امضای دیجیتال وجود دارد که هرکدام مکانیزم خاص خود را دارند. اما اساساً پیام هششده، با یک کلید خصوصی امضا میشود و دریافتکننده پیام میتواند با استفاده از کلید عمومی مربوطه (که امضاکننده به او داده است)، اعتبار پیام را بررسی کند.
به عبارت دیگر، اگر کلید خصوصی در هنگام ساخت امضا در آن قرار داده نشود، دریافتکننده پیام نمیتواند از کلید عمومی مربوطه برای تایید اعتبار آن استفاده کند. هم کلید عمومی و هم کلید خصوصی را فرستنده پیام ایجاد میکند، اما تنها کلید عمومی به گیرنده داده میشود.
البته امضاهای دیجیتال ارتباط مستقیمی به محتوای هر پیام دارند. پس برخلاف امضاهای دستی که ارتباط چندانی به پیغام پیدا نمیکنند، هر پیامی که بهصورت دیجیتال امضا شده باشد، یک امضای متفاوت و خاص خواهد داشت.
تایید
برای روشن شدن کل فرایند تا زمان تایید نهایی، یک مثال میزنیم. تصور کنید آلیس پیامی برای باب مینویسد، آن را هش میکند و سپس مقدار هش را با کلید خصوصی خود برای ساخت یک امضای دیجیتال ترکیب میکند. امضا بهعنوان یک اثرانگشت منحصربهفرد دیجیتال برای آن پیام خاص عمل میکند.
وقتی باب پیام را دریافت کرد، میتواند با استفاده از کلید عمومیای که آلیس به او داده است، اعتبار امضای دیجیتال را بررسی کند. با این روش باب میتواند اطمینان حاصل کند که امضا بهوسیله آلیس ساخته شده است چون تنها او کلید خصوصی مربوط به آن کلید عمومی را دارد.
پس باید آلیس کلید خصوصی خود را امن نگه دارد و آن را فاش نکند. اگر فرد دیگری به کلید خصوصی آلیس دست پیدا کند، میتواند امضای دیجیتالی بسازد و خود را بهعنوان آلیس جا بزند. درمورد بیت کوین، این مسئله برابر است با استفادهی شخص از کلید خصوصی آلیس برای انتقال یا خرج کردن بدون اجازهی بیت کوینهای آلیس.
چرا امضاهای دیجیتال مهم هستند؟
امضاهای دیجیتال معمولاً با سه هدف بهکار گرفته میشوند: انسجام و یکپارچگی داده، تایید اعتبار و انکارناپذیری.
- یکپارچگی داده: باب میتواند تایید کند که پیام آلیس در بین راه تغییر نیافته است. هرگونه تغییر در پیام باعث ایجاد یک امضای کاملاً متفاوت با امضای فرستنده خواهد شد.
- اعتبار: تا وقتی کلید خصوصی آلیس امن نگه داشته شده باشد، باب میتواند از کلید عمومی برای تایید تعلق امضای دیجیتال به آلیس استفاده کند.
- انکارناپذیری: وقتی امضا ساخته شد، آلیس نمیتواند امضا کردن آن را در آینده انکار کند، مگر اینکه کلیدهای خصوصیاش به دست کس دیگری بیفتد.
پیشنهاد مطالعه: کشورهای مختلف برای جلوگیری از کلاهبرداریهای حوزه رمز ارز چه قوانینی دارند؟
استفادههای موردی از امضای دیجیتال
امضاهای دیجیتال در انواع اسناد و گواهیهای دیجیتال کاربرد دارند. بعضی از استفادههای موردی از امضای دیجیتال را در زیر میبینید:
- در فناوری اطلاعات برای ارتقای امنیت سیستمهای ارتباطات اینترنتی.
- در امور مالی برای حسابرسی، گزارش مخارج، قراردادهای وام و ….
- در امور قانونی برای امضای انواع قرارداد تجاری و معاهدههای قانونی ازجمله اوراق دولتی.
- در درمان برای پیشگیری از جعل نسخه و اسناد و سوابق پزشکی.
- در بلاک چین برای اطمینان از اینکه مالکان رمزارز میتوانند برای انتقال وجه تراکنشی را امضا کنند (البته به شرط اینکه کلیدهای خصوصیشان گم نشده باشد).
محدودیتهای امضای دیجیتال
چالشهای عمده پیشِ روی امضاهای دیجیتال بر سه الزام مبتنی هستند:
- الگوریتم؛ کیفیت الگوریتمهای استفادهشده در یک امضای دیجیتال مهم است. این کیفیت شامل انتخاب تابع هش و سیستمهای رمزنگاری است.
- پیادهسازی؛ اگر الگوریتم خوب باشد اما پیادهسازی از کیفیت خوبی برخوردار نباشد، سیستم امضای دیجیتال با نواقصی روبرو خواهد شد.
- کلید خصوصی؛ اگر کلید خصوصی افشا شود یا کسی آن را به دست بیاورد، ویژگیهای اعتبار و انکارناپذیری آن دیگر ارزشی نخواهند داشت. برای کاربران رمزارزها، از دست دادن کلید خصوصی یعنی زیان مالی چشمگیر.
تفاوت امضای الکترونیک با امضای دیجیتال چیست؟
امضاهای دیجیتال به یک نوعِ خاص از امضاهای الکترونیک (که به هر روش الکترونیکی امضا کردن سند و پیام اشاره دارد) ارتباط دارند. پس همه امضاهای دیجیتال الکترونیکی هستند، ولی همه امضاهای الکترونیکی دیجیتال نیستند.
تفاوت اصلی بین این دو نوع امضا، تایید اعتبار آنهاست. امضاهای دیجیتال از سیستمهای رمزنگاری مانند تابع هش، رمزنگاری کلید عمومی و فنون رمزنگاری استفاده میکنند.
پیشنهاد مطالعه: روشهای رایج کلاهبرداری (اسکم) در حوزه رمزارز و بلاکچین
در پایان
تابعهای هش و رمزنگاری کلید عمومی در قلب سیستمهای امضای دیجیتال قرار دارند که هماکنون استفادههای موردی متعددی دارند. اگر امضاهای دیجیتال بهخوبی پیاده شوند، میتوانند امنیت و یکپارچگی را به ارمغان آورده و مایه آسان شدن تایید انواع داده دیجیتال شوند.
در قلمرو بلاک چین، امضاهای دیجیتال برای امضا و اعتباردهی به تراکنشهای رمزارز بهکار گرفته میشوند. این امضاها در بیت کوین اهمیت خاص دارند چون اطمینان میدهند که فردِ خرجکنندهی کوینها مالک کلیدهای خصوصی مربوطه است.
اگرچه سالهاست از امضاهای الکترونیک و دیجیتال استفاده میکنیم اما هنوز فضا برای رشد، فراوان است. بخش زیادی از امور اداری امروزه بر کاغذبازی متکی است، اما با حرکت بهسوی یک سیستم دیجیتالیتر، شاهد استفادهی بیشتر از طرحهای امضای دیجیتال خواهیم بود.
این مقاله صرفا برای اهداف آموزشی ارائه شده است و نباید بهعنوان مشاورهٔ تجاری و سرمایهگذاری از طرف کوین ایران و نویسندگانش قلمداد شود.