ارزهای رمزنگاری شده مانند بیت کوین و اتریوم از یک شبکه همتا به همتا (P2P) برای انجام تراکنشها استفاده میکنند. از آنجا که کل فرآیند آنلاین است، این نگرانی وجود دارد که تراکنشها ممکن است ناپایدار و قابل هک باشد. در این مقاله میخواهیم ببینیم که رمزارزها چگونه از رمزنگاری استفاده می کنند تا تراکنشهای خود را امن کند. اصلیترین تکنیکهای رمزنگاری مورد استفاده در رمزارزها، تابع هش و امضای دیجیتال (Digital Signature) هستند که در این مقاله از فکت کوینز به آنها خواهیم پرداخت.
لزوم استفاده از امضای دیجیتال (Digital Signature)
یکی از مهمترین ابزارهای رمزنگاری که در رمزارزها استفاده میشود مفهوم امضای دیجیتال است.
امضا در زندگی واقعی چیست و چه خصوصیاتی دارد؟ کاغذی را تصور کنید که با امضای خود امضا کرده اید، یک امضای خوب چه کاری باید انجام دهد؟
- تأییدکننده بودن: امضا باید بتواند تأیید کند که شما واقعاً چیزی را امضا کردهاید.
- غیر قابل جعل بودن: هیچ کس دیگری نباید بتواند امضای شما را جعل و کپی کند.
- غیر قابل انکار بودن: اگر چیزی را با امضای خود امضا کرده اید، پس نمی توانید آن را پس بگیرید یا ادعا کنید شخص دیگری این کار را به جای شما انجام داده است.
در دنیای واقعی، هرچقدر هم که امضا پیچیده باشد، همیشه احتمال جعل وجود دارد و این بسیار ناکارآمد و غیرقابل اطمینان است.
رمزنگاری با استفاده از «امضاهای دیجیتالی» که با استفاده از «کلیدهای رمزگشایی» انجام میشود، به ما یک راه حل برای این موضوع میدهد.
امضای دیجیتال (Digital Signature) چیست؟
امضا دیجیتالی یک مکانیسم رمزنگاری است که برای تأیید صحت و یکپارچگی دادههای دیجیتال استفاده میشود. میتوان آن را نسخه دیجیتالی امضاهای دست نویس معمولی بدانیم، اما با پیچیدگی و امنیت بالاتر.
به زبان ساده، میتوانیم یک امضا دیجیتالی را به عنوان کدی توصیف کنیم که به پیام یا سندی ضمیمه است. پس از تولید امضا، این کد به عنوان گواهی عدم دستکاری پیام در طول مسیر خود از فرستنده به گیرنده عمل میکند.
اگرچه مفهوم ایمن سازی ارتباطات با استفاده از رمزنگاری به دوران باستان برمیگردد، اما طرح های Digital Signature در دهه 1970 به لطف توسعه رمزنگاری کلید عمومی (PKC) به یک واقعیت بدل شد. حال، برای یادگیری نحوه کار امضاهای دیجیتالی، ابتدا باید اصول تابع هش و رمزنگاری کلید عمومی را بفهمیم.
تابع هش (Hash functions)
هش کردن یکی از عناصر اصلی سیستم امضای دیجیتال است. فرآیند هش کردن شامل تبدیل دادهها به یک خروجی با اندازه ثابت است. این کار توسط نوع خاصی از الگوریتم معروف به تابع هش انجام میشود. خروجی تولید شده توسط یک تابع هش به عنوان یک مقدار هش شناخته میشود.
وقتی هش با رمزنگاری ترکیب شود، می توان از توابع هش رمزنگاری شده برای تولید مقدار هش استفاده کرد که به عنوان یک اثر انگشت دیجیتال منحصر به فرد عمل میکند. این بدان معنی است که هرگونه تغییر در دادههای ورودی (پیام) منجر به خروجی کاملاً متفاوتی میشود (مقدار هش). و این دلیل آن است که از توابع هش رمزنگاری برای تأیید صحت دادههای دیجیتالی به طور گسترده استفاده می شود.
رمزنگاری کلید عمومی (PKC)
رمزنگاری کلید عمومی یا PKC، به یک سیستم رمزنگاری اشاره دارد که از یک جفت کلید استفاده میکند: یک کلید عمومی و یک کلید خصوصی. این دو کلید از نظر ریاضی با هم مرتبط هستند و میتوانند برای رمزگذاری داده ها و امضای دیجیتال استفاده شوند.
PKC به عنوان یک ابزار رمزگذاری ایمن تر از روشهای ابتدایی رمزگذاری متقارن است. در حالی که سیستم های قدیمی برای رمزگذاری و رمزگشایی اطلاعات به همان کلید متکی هستند، PKC امکان رمزگذاری دادهها با کلید عمومی و رمزگشایی دادهها با کلید خصوصی مربوطه را فراهم میکند.
در اصل، فرآیند Digital Signature شامل هش پیام (یا دادههای دیجیتال) همراه با کلید خصوصی امضا کننده است. در مرحله بعدی، گیرنده پیام میتواند با استفاده از کلید عمومی ارائه شده توسط امضا کننده، معتبر بودن امضا را بررسی کند.
در برخی شرایط، امضاهای دیجیتال ممکن است رمزگذاری داشته باشند، اما همیشه اینطور نیست. به عنوان مثال، بلاکچین بیت کوین از PKC و امضاهای دیجیتال استفاده میکند. از نظر فنی، بیت کوین اصطلاحاً الگوریتم امضا دیجیتال Elliptic Curve (ECDSA) را برای تأیید اعتبار معاملات به کار میگیرد.
امضاهای دیجیتالی چگونه کار می کنند؟
در زمینه رمزارزها، یک سیستم Digital Signature اغلب از سه مرحله اساسی تشکیل شده است:
هش کردن (مخلوط کردن)، امضا کردن و تأیید.
هش کردن داده ها (Hashing the data)
اولین مرحله هش یا مخلوط کردن پیام یا دادههای دیجیتالی است. این کار با ارسال دادهها از طریق الگوریتم هش انجام میشود تا یک مقدار هش تولید شود. همانطور که گفته شد، اندازه پیامها میتواند متفاوت باشد، اما وقتی هش یا مخلوط میشوند، تمام مقادیر هش آنها دارای طول یکسانی هستند. این اساسی ترین ویژگی یک تابع هش است.
با این حال، هش کردن داده ها برای تولید امضا دیجیتال (Digital Signature) ضروری نیست. زیرا میتوان از یک کلید خصوصی برای امضای پیامی استفاده کرد که اصلاً هش نشده است. اما برای ارزهای رمزنگاریشده، داده ها همیشه هش میشوند، زیرا هشهای با طول ثابت کل فرآیند را تسهیل میکند.
امضا کردن (Signing)
پس از هش شدن اطلاعات، فرستنده پیام باید آن را امضا کند. این لحظهای است که رمزنگاری با کلید عمومی وارد عمل میشود. انواع مختلفی از الگوریتمهای Digital Signature وجود دارد، هر کدام مکانیزم خاص خود را دارند. اما در اصل، پیام هش شده با یک کلید خصوصی امضا میشود و سپس گیرنده پیام میتواند اعتبار آن را با استفاده از کلید عمومی مربوطه (که توسط امضا کننده ارائه شده است) بررسی کند.
به عبارت دیگر، اگر هنگام تولید امضا، کلید خصوصی در آن گنجانده نشود، گیرنده پیام نمیتواند از کلید عمومی مربوطه برای تأیید اعتبار آن استفاده کند. کلیدهای عمومی و خصوصی توسط فرستنده پیام تولید میشوند. اما فقط کلید عمومی با گیرنده به اشتراک گذاشته میشود.
قابل ذکر است که امضاهای دیجیتالی ارتباط مستقیمی با محتوای هر پیام دارند. بنابراین برخلاف امضاهای دست نویس، هر پیام دیجیتالی با امضای دیجیتال متفاوت است.
راستی آزمایی کردن(Verifying)
تصور کنید که آلیس پیامی برای باب مینویسد، آن را هش می کند و سپس مقدار هش را با کلید خصوصی خود ترکیب می کند تا امضا دیجیتال تولید کند. این امضا به عنوان اثر انگشت دیجیتالی منحصر به فرد آن پیام خاص کار خواهد کرد.
وقتی باب پیام را دریافت کرد میتواند با استفاده از کلید عمومی ارائه شده توسط آلیس، اعتبار Digital Signature را بررسی کند. از این طریق، باب میتواند مطمئن باشد که امضا توسط آلیس ایجاد شده است. زیرا فقط او دارای کلید خصوصی است که با آن کلید عمومی مطابقت دارد .
بنابراین، برای آلیس بسیار مهم است که کلید خصوصی خود را مخفی نگه دارد. اگر شخص دیگری کلید خصوصی آلیس را بگیرد، میتواند امضا دیجیتالی ایجاد کند و خود را آلیس معرفی کند. و از این راه برای جابجایی یا خرج بیت کوین بدون اجازه وی استفاده کند.
چرا امضاهای دیجیتالی مهم هستند؟
از امضاهای دیجیتالی اغلب برای دستیابی به سه نتیجه استفاده میشود: یکپارچگی دادهها، احراز هویت و عدم انکار.
- یکپارچگی داده: باب میتواند تأیید کند که پیام آلیس در طول مسیر تغییر نکرده است. هر تغییری در پیام امضای کاملاً متفاوتی ایجاد میکند.
- اعتبار: تا زمانی که کلید خصوصی آلیس مخفی است، باب میتواند با استفاده از کلید عمومی تأیید کند که Digital Signature توسط هیچ کس دیگری ایجاد نشده است.
- عدم انکار: پس از تولید امضا، آلیس نمیتواند امضای آن را در آینده انکار کند، مگر اینکه کلید خصوصیاش به نوعی به خطر بیفتد.
کاربرد امضا دیجیتال (Digital Signature)
امضای دیجیتال را میتوان برای انواع مختلف اسناد و مدارک دیجیتال استفاده کرد. برخی از موارد رایج استفاده عبارتند از:
- فناوری اطلاعات: برای افزایش امنیت سیستم های ارتباطی اینترنتی.
- دارایی، مالی و سرمایه گذاری: امضاهای دیجیتالی را می توان برای حسابرسی، گزارش هزینهها، توافق نامههای وام و موارد دیگر استفاده کرد.
- مراقبتهای بهداشتی: امضاهای دیجیتالی می تواند از تقلب در نسخه ها و سوابق پزشکی جلوگیری کند.
محدودیت های امضا دیجیتال (Digital Signature)
چالش های عمدهای که در استفاده از Digital Signature وجود دارد:
- کیفیت الگوریتمهای مورد استفاده در امضا دیجیتال مهم است.
- اگر الگوریتم ها خوب باشند، اما پیاده سازی آنها صحیح نباشد، سیستم Digital Signature احتمالاً با نقایصی مواجه خواهد شد.
- برای کاربران ارز دیجیتال، از دست دادن کلید خصوصی ممکن است منجر به خسارات مالی غیر قابل جبرانی شود.
جمعبندی
رمزنگاری روشی است برای استفاده از اصول پیشرفته ریاضی در ذخیره سازی و انتقال دادهها در یک فرم خاص. به طوری که فقط کسانی که پیام برای آنها در نظر گرفته شده، میتوانند آن را بخوانند و پردازش کنند. در این مقاله به بررسی امضای دیجیتال، مزایا و معایب آن و تابع هش در رمزارزها پرداختیم. امیدوارم به پاسخ پرسش های خود در این مقاله رسیده باشید.
کلید خصوصی (یا کلید مخفی) و کلید عمومی.
امضا دیجیتال مکانیسم رمزنگاری است که برای تأیید صحت و یکپارچگی دادههای دیجیتال استفاده میشود. میتوان آن را نسخه دیجیتالی امضاهای دست نویس معمولی بدانیم، اما با پیچیدگی و امنیت بالاتر.
سلام وقت بخیر
بسیار مفید بود سپاسگزارم