امضای دیجیتال فرآیندی است که در آن صحت و اعتبار یک پیام دیجیتالی تایید میگردد. یک امضای دیجیتال معتبر، به گیرنده اطمینان میدهد که پیام توسط فرستندهی اصلی ارسال شده و فرستنده نیز نمیتواند پیامی که ارسال کرده را انکار نماید. علاوه بر این، خود پیام نیز از تغییر و دستکاری مصون میماند.
از امضای دیجیتال عموما برای پیادهسازی امضای الکترونیک استفاده میشود. امضای الکترونیک مفهوم وسیعتری است که به هر نوع دادهی الکترونیکی که نوعی امضا را در بر داشته باشد اطلاق میگردد. اما تمامی امضاهای الکترونیک از امضای دیجیتال استفاده نمیکنند.
مفهوم امضای الکترونیک در ابتدا با اسکن امضای خطی در مواردی که امکان جعل آنها وجود داشت و یا اسناد زیادی نیاز به امضای شخص واحدی داشتند. مطرح شد.
نسل بعدی امضاهای دیجیتال با استفاده از قلمهای نوری و صفحه نمایشگرهای لمسی به وجود آمدند که در واقع همان نسخهی دیجیتالی امضاهای دستنویس بوده که با مزیتهایی همچون صرفهجویی در زمان و مصرف منابع و دشوارسازی جعل امضا روی کار آمدند.
و اما امضای دیجیتالی که امروزه آن را میشناسیم یک نام کاربری و یک رمز عبور است که هویت شما در دنیای مجازی را ثابت میکند. امضای دیجیتال بر مبنای الگوریتم رمزنگاری نامتقارن ساخته میشود. رمزنگاری نامتقارن که با نام رمزنگاری کلید عمومی نیز شناخته میشود، از کلیدهای خصوصی و عمومی برای رمزنگاری و رمزگشایی دادهها استفاده مینماید. کلید خصوصی و عمومی در حقیقت رشته اعداد بزرگی هستند که با یکدیگر مطابقت داشته اما یکسان نیستند. (نامتقارن)
کلید عمومی با تمامی افراد شبکه به اشتراک گذاشته میشود در حالی که کلید خصوصی سری بوده و نزد شخص محفوظ نگه داشته میشود. هر یک از ما در زندگی روزمرهی خود بارها از این الگوریتم استفاده میکنیم. به عنوان مثال زمانی که برای یکی از دوستان خود ایمیل میفرستید آدرس ایمیل شما همان کلید عمومی و پسورد ورود به حسابتان همان کلید خصوصی شما خواهد بود.
از هر یک از جفت کلید عمومی و خصوصی میتوان برای رمز کردن پیام استفاده نمود. در بسیاری مواقع از امضای دیجیتال برای فراهم کردن یک لایهی امنیتی و معتبر برای ارسال پیامها در یک کانال غیرامن استفاده میشود.
امضاهای دیجیتال از بسیاری جهات مشابه امضاهای خطی هستند اما جعل آنها به مراتب از امضاهای دستنوشته دشوارتر است.
بیایید مفهوم امضای دیجیتال در بلاک چین را با مثالی بررسی کنیم:
پیش از این گفتیم که رمزنگاری کلید عمومی الگوریتم رمزنگاری است که به شما دو کلید میدهد: یک کلید عمومی و یک کلید خصوصی
شما کلید عمومیتان را به تمام دنیا اعلام میکنید و کلید خصوصیتان را نزد خویش نگه میدارید. آدرس اتریوم شما یک کلید عمومی بوده و کلید خصوصیتان در کیفپول سختافزاری، موبایلی و یا دسکتاپ شما، اترهای شما را ذخیره میکند. کلید عمومی را به عنوان شماره حساب بانکی خود در نظر بگیرید. اگر بخواهید مقداری اتر برای فردی بفرستید، آنها تنها شمارهی حساب و یا آدرس عمومی شما را میبینند. از آنجایی که شما تنها فردی هستید که کلید خصوصی مربوط به حسابتان را دارید، بنابراین تنها فردی نیز خواهید بود که به پولهای موجود در حساب دسترسی دارد.
رمزنگاری کلید عمومی، الگوریتمهایی دارد که به شما امکان میدهد پیامهای خود را با استفاده از جفت کلیدها رمزنگاری، رمزگشایی، امضا و تایید نمایید. در ادامه با ارائهی مثالی مراحل این کار را توضیح خواهیم داد.
رمزنگاری پیام با کلید خصوصی
برای ایجاد یک امضای دیجیتال به یک نرمافزار امضاکننده مانند یک سرویسدهندهی ایمیل نیاز است.
این برنامه، از دادههایی که میبایست امضا شوند، یک هش (Hash) تولید میکند. اما چرا چنین کاری انجام میشود؟
الگوریتمهای رمزنگاری کلید عمومی برای امضا کردن اسناد طولانی مناسب نیستند. برای صرفهجویی در زمان، اغلب پروتکلهای امضای دیجیتال به جای اینکه کل پیام را رمزنگاری کنند، خروجی یک تابع یک طرفه به نام هش را که به مراتب از پیام اصلی کوتاهتر است را رمزنگاری میکنند. تابع هش یک ورودی از دادهها که در اینجا کاراکترهای پیام هستند را گرفته و آن را به یک خروجی با طول ثابت نگاشت میکند.
پس از آن از کلید خصوصی برای رمزگذاری هش استفاده میکند. هش رمزگذاری شده در کنار سایر اطلاعات نظیر الگوریتم هشینگ، امضای دیجیتال را تشکیل میدهند.
تایید و رمزگشایی پیام با کلید عمومی
این فرآیند شامل دو مرحلهی تولید هش از روی پیام اصلی و رمزگشایی امضا میگردد. سناریوی زیر را در نظر بگیرید:
آلیس قصد دارد ایمیلی برای باب ارسال کند:
- آلیس ابتدا پیامی که قصد ارسال آن را دارد، امضا میکند و این کار را در حقیقت با کلیک بر روی sign in در اپلیکیشن ایمیل خود انجام میدهد. مقدار هش توسط کامپیوتر آلیس محاسبه میگردد.
- این هش با رمز عبور آلیس و یا همان کلید خصوصی او رمزنگاری شده و امضای دیجیتال را تشکیل میدهد.
- پیام آلیس به همراه امضای دیجیتال او برای باب ارسال میشود.
- پس از آنکه باب پیام آلیس را دریافت میکند، برنامهی ایمیلی که بر روی کامپیوتر او نصب است، تشخیص میدهد که این پیام حاوی امضا میباشد.
- کامپیوتر باب امضای دیجیتال را با استفاده از کلید عمومی آلیس رمزگشایی کرده و هش پیام را مجددا خودش نیز محاسبه مینماید.
- هشی که توسط کامپیوتر باب محاسبه شده با هش رمزگشایی شده مقایسه میشوند.
اگر این دو هش با یکدیگر متفاوت باشند، ممکن است داده در مسیر دچار دستکاری شده و یا فرستنده به اشتباه دادهها را با کلید خصوصیای رمزنگاری کرده که با کلید عمومی مطابقت نداشته است. در شکل زیر خلاصهای از این فرآیند را میبینید:
چگونه میتوان یک امضای دیجیتال ایجاد کرد؟
شما میتوانید یک امضای دیجیتال را از یک مرجع صدور گواهی دیجیتال معتبر نظیر سکتیگو (Sectigo) گرفته و یا آن را خودتان ایجاد کنید اما برای امضای دیجیتال یک سند به یک گواهینامهی دیجیتال نیاز خواهید داشت. اگر شما خودتان امضای دیجیتال را تولید کرده و از گواهینامهای که توسط خودتان امضا شده استفاده کنید، گیرندگان قادر نیستند اعتبار پیامهای شما را تایید نمایند. بنابراین ترجیحا از یک مرجع صدور گواهی دیجیتال، امضای دیجیتال خود را دریافت نمایید.
پس از دانلود و نصب این گواهی، با استفاده از گزینههای امضا (Sign) و رمزنگاری (Encrypt) در سرور ایمیل خود قادر خواهید بود به صورت دیجیتال ایمیلهایتان را امضا و رمزنگاری کنید. این قابلیت بیشتر برای کسبوکارهایی که نیاز به تایید دقیق احراز هویت فرستنده وجود دارد، کارایی خواهد داشت.
امضای دیجیتال چه کاربردهایی دارد؟
امضاهای دیجیتال در نرمافزارهای مختلفی از جمله مرورگرها که نیاز به برقراری یک اتصال امن در شبکهی ناامنی نظیر اینترنت وجود دارد، کاربرد دارند. کاربران اینترنت و بعضا سیستمها نیاز دارند بدانند کلیدهای عمومی متعلق به اشخاص و یا سازمانها معتبری بوده و توسط شخص ثالثی جایگزین و یا دستکاری نشده است.
امضاهای دیجیتال میتوانند زمان لازم برای انجام قراردادهایی که به واسطهها و اشخاص ثالث بسیاری برای اعتبارسنجی و امضای آن نیاز هست را کاهش دهند. با توجه به ماهیت تغییرناپذیر بلاک چین، اعتبار قراردادها در هر زمانی تضمین میگردد و افراد قادر هستند در هر زمان به دلخواه خود این قراردادها را امضا کنند و نیاز به حضور همزمان آنها در شبکه نیست. امضاهای دیجیتال میتوانند برای ارتباطات میان کسبوکارهای مختلف به کار گرفته شده و معاملات را بدون نیاز به هیچ واسطهای میان افراد صورت دهند.
انواع امضای دیجیتال
پلتفرمهای پردازش اسناد مختلف، از امضاهای دیجیتال متفاوتی پشتیبانی میکنند به عنوان مثال ادوب (Adobe) از امضاهای دیجیتال تصدیق شده و تایید شده پشتیبانی کرده در حالی که مایکروسافت ورد از امضاهای دیجیتال قابل مشاهده و غیرقابل مشاهده پشتیبانی مینماید. در ادامه هر یک را به صورت جداگانه بررسی خواهیم کرد:
امضای دیجیتال تصدیق شده
اضافهکردن یک امضای دیجیتال تصدیق شده به یک سند با فرمت پیدیاف، نشاندهندهی این است که شما نویسندهی آن بوده و قصد دارید از آن در مقابل دستکاری محافظت نمایید. در اسناد پیدیاف معتبر، یک نوار آبیرنگ در بالای سند وجود دارد که شامل نام امضای سند و گواهی صادر شده برای نشان دادن اصالت و صحت سند است.
امضای دیجیتال تایید شده
امضاهای دیجیتال تایید شده میتوانند در گردش کاری کسبوکار شما به کار رفته و فرآیند تایید کارها را بهینهسازی نمایند. این فرآیند شامل جمعآوری تاییدیههای افراد و سپس تعبیهی آنها در اسناد است. نرمافزار Adobe به کاربران امکان میدهد امضاهایی با جزئیاتی شامل تصویر امضای خطی، تاریخ، مکان و یا مهر بسازند.
امضای دیجیتال قابل مشاهده
به کاربران امکان میدهد اسناد خود را به صورت دیجیتال امضا کنند و این امضا دقیقا مشابه امضای خطی پای سند اعمال میشود.
امضای دیجیتال غیرقابل مشاهده
اسنادی که امضای دیجیتال غیرقابل مشاهده دارند، حاوی یک نشان بصری در نوار آبی رنگ در taskbar هستند. شما میتوانید از این نوع امضا در زمانی که مایل نیستید امضایتان نشان داده شود اما نیاز دارید تا اعتبار، اصالت و یکپارچگی آن را نشان دهید، استفاده کنید.
برخی الگوریتمهای امضای دیجیتال
- الگوریتمهای امضای دیجیتال مبتنی بر RSA مانند الگوریتم RSA-PSS
- الگوریتم DSA و مشتق آن ECDSA
- الگوریتم امضای دیجیتال منحنی ادواردز (Edwards-curve) و نوع دیگر آن Ed25519
- الگوریتم ElGamal که الگوریتم DSA گرفته شده و زیرمجموعههای آن الگوریتمهای شنور (Schnorr) و Pointcheval–Stern
- الگوریتم امضای دیجیتال رابین (Rabin)
- الگوریتم BLS
- امضاهای انکارناپذیر (Undeniable signatures)