امضای دیجیتال چیست؟
فهرست مطالب
مقدمه
در این مقاله قصد داریم به مفهوم امضای دیجیتال و کاربردهای آن در بلاکچین و ارزهای دیجیتال بپردازیم. امروزه از امضای دیجیتال در کل بستر اینترنت استفاده میشود. با استفاده از امضای دیجیتال، نوعی اعتماد میان کاربر و وب سرور مربوطه شکل میگیرد و نشاندهنده این است که پاسخ دریافتشده قطعاً از وب سرور ارسال شده و فرد دیگری آن را ارسال نکرده است.
امضای دیجیتال به فرآیندی گفته میشود که به وسیلۀ آن صحت و اعتبار یک پیام دیجیتالی تأیید میگردد. افراد با استفاده از امضای دیجیتالی معتبر، صحت و اعتبار پیام را تأیید میکنند، اثبات میکنند که پیام توسط فرستنده اصلی ارسال شده است و فرستنده نیز نمیتواند ارسال پیام خود را انکار نماید. بدین ترتیب در خود پیام نیز تغییر و دستکاری صورت نخواهد گرفت.
مفهوم امضای دیجیتال در بلاکچین
امضای دیجیتال همانند امضای واقعی، روشی برای اثبات و احراز هویت افراد است. تفاوتی که میان امضای دیجیتال و امضای واقعی وجود دارد این است که در امضای دیجیتال از ریاضیات و علم رمزنگاری استفاده میشود و بسیار امنتر است.
فرآیندی که امروزه با نام امضای دیجیتال میشناسیم، شامل یک نام کاربری و یک رمز عبور است که هویت کاربر در دنیای مجازی را اثبات و احراز میکند. امضای دیجیتال بر مبنای الگوریتم رمزنگاری نامتقارن ساخته میشود. رمزنگاری نامتقارن که با نام رمزنگاری کلید عمومی نیز شناخته میشود، از کلیدهای خصوصی و کلیدهای عمومی برای رمزنگاری و رمزگشایی دادهها استفاده مینماید. در واقع کلید عمومی و کلید خصوصی رشته اعداد بزرگی هستند که با یکدیگر مطابقت دارند اما یکسان نیستند.
کلید عمومی و خصوصی چیزی شبیه به آدرس ایمیل و پسورد آن است. شما به راحتی آدرس ایمیل خود را در اختیار دیگران قرار میدهید تا برایتان اطلاعاتی را ارسال کنند؛ در صورتی که پسورد مربوط به ایمیل خود را در اختیار کسی قرار نمیدهید و آن را نزد خود نگه میدارید.
ایجاد کلیدهای خصوصی و عمومی، مشابه ایجاد یک حساب کاربری روی بلاکچین، بدون نیاز به ثبت نام در جای مشخصی است. هر تراکنشی که روی بلاکچین اجرا میشود، توسط کلید خصوصی فرستنده امضا میگردد. بنابراین تراکنشهای دارای امضای دیجیتال به دارنده حساب این اطمینان را میدهند که تنها خود او قادر است پول یا موجودی خود را به خارج از حساب جابهجا کند.
توابع هش
تابع هش یک تابع ریاضی است که مقدار ورودی را به مقدار فشرده شده دیگری تبدیل میکند. ورودی تابع هش یک مقدار با طول نامعلوم است؛ اما خروجی همیشه طول ثابتی دارد. توابع هش به شدت کاربردی هستند و تقریباً در همۀ کاربردهای امنیت اطلاعات حضور دارند.
یک تابع هش رمزنگاری شده، نوع خاصی از توابع هش است که دارای ویژگیهای منحصربهفردی است. این ویژگیها، این نوع هش را برای هویتسنجی و برقراری امنیت مناسب ساخته است. از این نوع تابع هش، برای ساخت امضاهای دیجیتال و صحتسنجی استفاده میشود و میتوان با آن به اصطلاح «اثر انگشت دیجیتال» ساخت.
یک تابع هش رمزنگاریِ امن باید ویژگیهای زیر را داشته باشد:
۱- قطعی و معین بودن
مثلاً اگر کلمه «سلام» را هزاران بار در تابع هش وارد کنیم، باز هم هش این کلمه ثابت است.
۲- محاسبه سریع
تابع هش باید بتواند هش ورودی را به سرعت محاسبه کند. اگر این فرآیند به اندازه کافی سریع نباشد، سیستم ناکارآمد خواهد شد.
۳- تابع یک طرفه
در یک تابع هش استاندارد، ساخت خروجی از ورودی به راحتی قابل انجام است اما پیدا کردن ورودی با توجه به خروجی بسیار دشوار است.
۴- هر تغییر در ورودی، هش را به طور کامل تغییر میدهد
کوچکترین تغییر در داده ورودی، بازتابی بسیار قابل توجه در هش خواهد داشت.
۵- مقاوم در برابر تصادم
این بدان معنا است که هر ورودی، هش منحصربهفرد خود را دارد.
نحوۀ ایجاد یک امضای دیجیتال
امضای دیجیتال در رمزارزها دارای 3 مرحلۀ ایجاد هش، امضا و صحتسنجی است.
ایجاد هش
اولین قدم در هشینگ دادهها در امضای دیجیتال، ایجاد هش است. با وارد کردن اطلاعات ورودی در یک الگوریتم هش، میتوان هش مربوط به آن دادهها را ایجاد کرد و خروجی گرفت. ممکن است دادههای ورودی متفاوت باشند، اما همانطور که قبلاً هم اشاره کردیم، مقادیر خروجی توابع هش دارای طول ثابتی هستند.
امضای دیجیتال
امضای دیجیتال مانند اثر انگشت، منحصربهفرد است. در امضای پیام هششدۀ فرستنده، رمزنگاری کلید عمومی اهمیت دارد. برای این کار الگوریتمهای متفاوتی وجود دارند. اما نکتۀ مشترک این است که در همۀ آنها، در نهایت فرستنده، پیام هششده را توسط کلید خصوصی امضا میکند و فرد گیرندۀ پیام، با کلید عمومی ارسال شده توسط فرستنده، میتواند از صحت امضا اطمینان حاصل کند. پیامهای ارسالشده با امضای دیجیتال، امضاهای متفاوتی دارند.
صحت سنجی
این بخش، خود شامل دو مرحله است. در مرحلۀ اول، فرد فرستنده پیامی را با تابع هش، هش میکند و به منظور ایجاد امضای دیجیتال منحصربهفرد، آن را با کلید خصوصی خود ترکیب میکند. در مرحلۀ دوم، فرد گیرنده پیام را دریافت میکند. سپس برای بررسی اعتبار امضای دیجیتال آن، از کلید عمومی فرستنده استفاده میکند. در این مرحله گیرندۀ پیام مطمئن میشود که این امضا متعلق به فرد فرستنده است؛ چراکه کلید خصوصی که با این کلید عمومی منطبق باشد، تنها در دست فرستندۀ آن پیام است.
تأیید و رمزگشایی پیام با کلید عمومی
این فرآیند شامل دو مرحله تولید هش از روی پیام اصلی و رمزگشایی امضا است. در ادامه با استفاده از مثال، به توضیح مفهوم هش و امضای دیجیتال میپردازیم تا درک بهتری از این مفاهیم داشته باشید. فرض کنید فردی قصد دارد پیامی را از طریق ایمیل ارسال کند. برای این کار ابتدا پیام خود را امضا میکند. در واقع این عملیات، با sign in در اپلیکیشن ایمیل فرد فرستنده انجام میشود. مقدار هش توسط کامپیوتر فرد فرستنده محاسبه میشود. این هش با استفاده از رمز عبور فرستنده یا همان کلید خصوصی وی، رمزنگاری و امضا میشود. حال، پیام فرستنده به همراه امضای دیجیتال او برای گیرنده ارسال میشود.
پس از دریافت پیام توسط گیرنده، برنامۀ ایمیلی که روی کامپیوتر او نصب است، تشخیص میدهد که این پیام توسط فرستنده امضا شده است. کامپیوتر فرد گیرندۀ پیام با استفاده از کلید عمومی فرستنده، امضای دیجیتال را رمزگشایی میکند و مجدداً به محاسبه هش پیام میپردازد. سپس هش محاسبهشده توسط کامپیوتر گیرنده با هش رمزگشاییشده مقایسه میشود. در صورت وجود تفاوت بین دو هش، ممکن است دادها در مسیر، دستکاری شده باشند یا فرستنده با کلید خصوصی اشتباهی رمزنگاری کرده باشد.
رمزنگاری پیام با کلید خصوصی
برای ایجاد یک امضای دیجیتال، به یک نرمافزار امضاکننده (در نمونه بالا یک نرم افزار سرویسدهندۀ ایمیل) نیاز دارید. برای امضا کردن اسناد طولانی، الگوریتمهای کلید عمومی مناسب نیستند.
برای صرفهجویی در زمان، پروتکلهای امضای دیجیتال به جای رمزنگاری کل پیام، خروجی یک تابع یکطرفه به نام هش را، که بسیار کوتاهتر از پیام اصلی است، رمزنگاری میکنند. تابع هش، یک ورودی از دادهها را که کاراکترهای پیام هستند، به یک خروجی با طول ثابت تبدیل میکند. سپس با استفاده از کلید خصوصی به رمزگذاری هش میپردازیم.
امضای دیجیتال چه کاربردهایی دارد؟
در مواقعی که به برقراری اتصالی امن در شبکههای ناامنی همچون اینترنت نیاز باشد، میتوان از امضاهای دیجیتال استفاده کرد. کاربران اینترنت و برخی سیستمها به حصول اطمینان از معتبر بودن کلیدهای عمومی افراد یا سازمانها نیاز دارند و از این طریق میتوانند مطمئن شوند که اطلاعات صحت دارد و توسط فرد دیگری دستکاری یا جایگزین نشده است.
همچنین با استفاده از امضاهای دیجیتال میتوان زمان مربوط به قراردادهایی را که برای اعتبارسنجی نیاز به افراد واسط دارند، کاهش داد؛ چراکه با توجه به ماهیت تغییرناپذیر بلاکچین، افراد میتوانند در زمان مورد نظر خود قراردادها را امضا کنند و نیازی به حضور همزمان آنها در شبکه نیست.
علاوه بر این، با استفاده از امضاهای دیجیتال در ارتباط میان کسب و کارهای مختلف، میتوان امکان معامله بدون نیاز به واسطهای میان افراد را فراهم نمود.
انواع امضای دیجیتال
امضای دیجیتال تصدیقشده
برای اینکه به دریافتکنندۀ پیام نشان دهید که شما نویسندۀ آن پیام هستید و میخواهید از آن پیام در مقابل دستکاری محافظت نمایید، میتوانید یک امضای دیجیتال تصدیقشده را به پیام خود اضافه کنید.
امضای دیجیتال تأییدشده
برای بهینهسازی تأیید کارها در کسسب و کارتان، میتوانید از امضاهای دیجیتال تأییدشده استفاده کنید. برای این کار، تأییدیه افراد جمع آوری میشود و سپس در اسناد قرار میگیرد. به عنوان مثال، نرمافزار Adobe امکان ایجاد امضاهای با جزئیات را برای کاربران فراهم میسازد؛ مانند تصویر امضای خطی، تاریخ، مکان یا مهر.
امضای دیجیتال قابل مشاهده
این نوع امضا مشابه امضای خطی پای اسناد است و به کاربران امکان میدهد اسناد خود را به صورت دیجیتال امضا کنند.
امضای دیجیتال غیرقابل مشاهده
زمانی که نیاز دارید که اعتبار و اصالت سند خود را نشان دهید اما نمیخواهید که امضایتان نمایش داده شود، میتوانید از این امضا استفاده نمایید.
الگوریتمهای امضای دیجیتال
- الگوریتمهای مبتنی بر RSA مانند الگوریتم RSA-PSS
- الگوریتم DSA و مشتق آن ECDSA
- الگوریتم منحنی ادواردز (Edward-curves) و نوع دیگر آن Ed25519
- الگوریتم ElGamal که از الگوریتم DSA گرفته شده و زیرمجموعههای آن الگوریتمهای Schnorr و Pointcheval–Stern
- الگوریتم امضای دیجیتال رابین (Rabin)
- الگوریتم BLS
- امضاهای انکارناپذیر (Undeniable signatures)
سخن پایانی
در این مقاله به توضیح مفهوم امضای دیجیتال پرداختیم و دریافتیم که امضای دیجیتال فرآیندی است که به وسیلۀ آن صحت و اعتبار یک پیام دیجیتالی تأیید میگردد. با استفاده از امضای دیجیتالی معتبر، میتوان صحت و اعتبار یک پیام را تأیید نمود و اثبات کرد که پیام توسط فرستنده اصلی ارسال شده است و فرستنده نیز نمیتواند ارسال پیام خود را انکار کند. بدین ترتیب در خود پیام نیز تغییر و دستکاری صورت نمیگیرد.
دیدگاه خود را ثبت کنید