آنچه در این مقاله میخوانید
اگر تاکنون تجربه استفاده از کیف پولهای رمزارزی را داشته باشید، مطمئنا با مفاهیمی همچون کلید خصوصی و عمومی برخوردهایی داشتهاید، کلیدهایی که منظور از آنها رشته اعداد و حروفی است که در تائید تراکنشها و همچنین هویت شخص فرستنده و گیرنده کاربرد دارند. این رشته کاراکترهای منحصربهفرد حاصل استفاده از تکنولوژیهای مختلف رمزنگاری (Cryptography) هستند که یکی از این تکنولوژیهای پیچیده، الگوریتم امضای ECDSA نام دارد. با توجه به کاربردی بودن الگوریتم امضای ECDSA در حوزه بلاکچین، مسلما آشنایی با این نوع خاص از الگوریتم امضای دیجیتال میتواند در دستیابی کاربران به درک صحیحتر از میزان امنیت تراکنشهای انجام یافته در شبکه بلاک چین کمک نماید. به همین علت، ما این مقاله از بلاگ کریپتوباز را به معرفی کامل الگوریتم امضای ECDSA اختصاص دادهایم؛ پس تا انتهای این مطلب با ما همراه باشید تا با یکی از پیچیدهترین الگوریتمهای امضای دیجیتال در دنیای کریپتوکارنسی آشنا شوید.
امضای دیجیتال (Digital Signature) چیست؟
احتمالا تاکنون سوالاتی نظیر این که «چگونه میتوان از امنیت داراییها و تراکنشهای انجام شده در بلاک چین مطمئن شود؟» ذهن شما را به خود مشغول ساخته است؛ سوالاتی که پاسخ به آنها میتواند نقش کلیدی را در اعتمادسازی و جذب کاربران بیشتر به دنیای کریپتوکارنسی ایفا نماید. یکی از اصلیترین شیوههای حفظ امنیت در شبکههای بلاکچینی استفاده از امضا دیجیتال است. امضایی که با کمک آن میتوان اصالت و اعتبار پیام را در بستر بلاکچین تضمین نمود. به بیان سادهتر، امضا دیجیتال عبارت است از یک تکنیک امنیتی برای تائید صحت یک سند دیجیتالی که با هدف حل اشکال تقلب و امکان دستکاری دادهها وارد دنیای ارز دیجیتال شده است.
به طور کلی، نحوه عملکرد امضای دیجیتال شباهت بسیار زیادی به رمزنگاری نامتقارن (Asymmetric Cryptography) دارد که از آن تحت عنوان رمزنگاری کلید عمومی یاد میشود. در رمزنگاری نامتقارن، دادهها با استفاده از یک جفت کلید رمزگذاری و همچنین رمزگشایی میشوند. ناگفته نماند که هش (Hash) یا هشینگ یکی از عناصر کلیدی موجود در سیستم امضای دیجیتال به شمار میرود و در پروسه امضای دیجیتال، قسمتی از دادهها به وسیله هش کردن پیام با کلید خصوصی امضا میگردد که نتیجه آن تولید اثر انگشت هش (Hash Digest) بوده و صرفا میتوان آن را با استفاده از یکی از کلیدهای موجود در جفت کلید فرد ارسال کننده ایجاد کرد. در مرحله بعدی، شخص دریافت کننده به منظور اعلام مطابقت هش دایجست دریافتی با پیام ارسالی، از کلید عمومی ارسال کننده استفاده میکند و پس از آن مطمئن میشود که فرد امضا کننده پیام همان شخص ارسال کننده بوده و پیام مزبور دچار تحریف و دستکاری نشده است.
الگوریتم امضای ECDSA و تولید کلیدهای عمومی و خصوصی چگونه است؟
حال که با مفهوم امضای دیجیتال بیشتر آشنا شدید، نوبت آن است که به سراغ یکی از مهمترین الگوریتمهای امضای دیجیتال به نام امضای دیجیتال منحنی بیضوی (Elliptic Curve Digital Signature Algorithm) برویم که عموما از آن با نام اختصاری الگوریتم امضای ECDSA یاد میشود. این نوع خاص از امضای دیجیتال در اصل یکی از پیچیدهترین روشهای تولید رمزنگاری کلید عمومی بوده که از قابلیت تولید عبارات کوتاه بدون کاهش سطح امنیتی برخوردار است. جالب است بدانید که الگوریتم امضای ECDSA حاصل ترکیب دو الگوریتم قدیمی منحنی بیضوی و امضای دیجیتال بوده که قادر است گواهیهایی را به عنوان سند دیجیتال صادر نماید؛ اسنادی که حاوی اطلاعاتی در ارتباط با مالک کلید خصوصی و صادر کننده (Issure) گواهی است.
امضای 256 بیتی الگوریتم ECDSA، به لحاظ امنیتی برابر با کدهای 3072 بیتی RSA بوده که یکی از معروفترین الگوریتمهای کریپتوگرافی موجود است. اندازه امضای ECDSA در مقایسه با اسیر الگوریتمهای رمزنگاری که امضاهای طولانیتری را تولید میکنند بسیار به صرفهتر بوده که برابری امضای 256 بیتی ECDSA در برابر امضای 3072 بیتی RSA گواه چنین ادعایی است. الگوریتم امضای ECDSA به طور کلی شامل مراحل زیر است:
1. انتخاب منحنی بیضوی
2. انتخاب نقطه مبدا (G Point) به وسیله تابعی به نام G Generator
3. انتخاب نقطهای تصادفی شامل اعداد صحیح بر روی منحنی به عنوان کلید خصوصی
4. ضرب اسکالر مختصات نقطه کلید خصوصی در نقطه مبدا و ایجاد یک نقطه جدید به عنوان کلید عمومی
بنابراین، برای تولید کلید عمومی از کلید خصوصی در الگوریتم امضای ECDSA عبارت است از حاصل ضرب عدد G در کلید خصوصی. البته لازم به ذکراست که در این الگوریتم، امکان رسیدن به کلید خصوصی از طریق کلید عمومی وجود ندارد و منطق الگوریتم امضای ECDSA نیز بر همین فرض استوار است که حدس کلید خصوصی از طریق کلید عمومی (به دلیل بزرگی عدد آن) بسیار دشوار بوده که این منظق نیز از لگاریتم گسسته به نام ECDLP نشات گرفته است.
مکانیزم امضای دیجیتال در ECDSA
پس از تولید کلیدهای خصوصی و عمومی به شرحی که گذشت، برای انجام یک تراکنش نیازمند امضای دیجیتال فرستنده هستیم. الگوریتم امضای ECDSA، شامل یک جفت عدد صحیح (r , s) بوده که هر یک از آنها از طریق محاسبات پیچیده ریاضی به دست میآیند. به طور کلی فرایند امضای دیجیتال ECDSA با کدینگ نقطهای تصادفی به نام R که صرفا مختصات X دارد، با استفاده از کلید خصوصی و هش کردن پیام به عدد S شروع میشود. در طرف دیگر نیز تائید کننده امضا عدد s را به نقطه مبدا r رمزگشایی میکند. این عملیات نیز از طریق کلید عمومی، هش پیام و فشردهسازی x با مختصات r انجام میگیرد.
به بیان سادهتر، فرستنده پیامی که از الگوریتم امضای ECDSA استفاده میکند پیام یا فایل آن را با استفاده از کلید خصوصی خود و یک هش از فایل که در اصل عددی منحصربهفرد به نمایندگی از فایل اصلی است را امضا میکند و فرد گیرنده نیز به منظور احراز فایل و تائید اصالت آن صرفا به کلید عمومی نیاز دارد. این کلید عمومی نیز صرفا شاخصی به منظور تائید تبادل بوده و کاربرد مالکیتی ندارد.
کاربرد الگوریتم امضای ECDSA
اولین سابقه حضور الگوریتم امضای ECDSA، در دنیای دیجیتال به سال 2005 برمیگردد و پس از آن با روشن شدن میزان پتانسیل بالای آن در حوزه تامین امنیت دادهها، امروزه به یکی از مهمترین الگوریتمهای رمزنگاری تبدیل شده است. از جمله کاربردها الگوریتم امضای ECDSA میتوان به موارد زیر اشاره کرد:
• ارتقا سطح حریم خصوصی کاربران در برنامههای ارتباط ناشناس نظیر Tor
• استفاده در اپلیکیشنهای پیامرسان نظیر واتساپ
• رمزگذاری اتصالات در وبسایتهای HTTPS
• استفاده در لایههای امنیتی و پروتکلهای ارتباطی TLS و SSL در مرورگرهای وب
• تائید واریز و همچنین دریافت رمزارز در کیف پولهای ارز دیجیتال
• تامین امنیت دستگاههای اینترنت اشیا (IOT)
مقایسه الگوریتم امضا ECDSA و امضای اشنور (schnorr Signature)
اگر قبلا مطالعاتی در ارتباط با امضای دیجیتال داشته باشید، به احتمال زیاد قبلا با امضای اشنور روبهرو شدهاید. امضای ECDSA و اشنور هردو الگوریتمهای مختلف برای تائید هویت بوده و در زمینه تامین امنیت کاربرد دارند که هر یک دارای ویژگیها و مزایای مختلفی هستند. این دو الگوریتم امضای دیجیتال هم در قدمت، پیچیدگی ریاضی، اندازه کلیدها و مواردی از این دست تفاوتهایی با هم دارند. در واقع به لحاظ کاربردی الگوریتم امضای ECDSA در استانداردهای مختلفی همچون NIST و FIPS مورد استفاده قرار گرفته و این در حالیست که امضای اشنور به تازگی مورد توجه قرار گرفته و اخیرا در استاندارد BIP (Bitcoin Improvement Proposal) با هدف ارتقا امنیت بیت کوین مورد استفاده قرار گرفته است.
البته امضای اشنور در مقایسه با عملیاتهای ریاضی موجود در الگوریتم امضا ECDSA دارای پیچیدگی کمتری بوده و به همین علت مصرف انرژی و سرعت در امضای اشنور بیشتر از ECDSA است. اندازه کلیدها نیز در امضای اشنور کوتاه از الگوریتم امضای ECDSA بوده و به بیان بهتر میتوان الگوریتم امضای اشنور را نسخه پیشرفته امضای دیجیتال ECDSA به شمار آورد؛ چراکه این نوع خاص از امضاهای دیجیتالی قابلیت مقاومت در برابر حملات کلید تکراری و بیشینه (Maximalist) را دارد و این درحالیست که الگوریتم امضای ECDSA از چنین قابلیتی برخوردار نیست.
بررسی مزایا و معایب امضای ECDSA
الگوریتم امضای ECDSA نیز همچون سایر الگوریتمهای امضای دیجیتال دارای مزایا و معایب متعددی است که آشنایی با آنها میتواند دید روشنتری را در ارتباط با ماهیت این الگوریتم رمزنگاری در اختیار کاربران قرار دهد. به طور کلی مزایا و معایب الگوریتم امضای ECDSA به شرح زیر است:
مزایای امضای ECDSA
• صرفهجویی در مصرف انرژی: با توجه به اندازه کوچک کلیدهای امضای ECDSA، عملیاتهای محاسباتی آن نیازمند مصرف انرژی کمتری در مقایسه با سایر الگوریتمهای امنیتی است.
• امنیت تضمین شده: علیرغم اندازه کوچک کلیدها، الگوریتم امضای ECDSA به دلیل آن که مبتنی بر منحنیهای بیضوی و خواص ریاضی آنها استبه لحاظ امنیتی دارای امنیت بالایی است.
• سرعت بالا: این الگوریتم به دلیل ویژگیهای ذاتی خود از سرعت اجرا و عملکرد بسیار بالاتری در مقایسه با سایر الگوریتمهای موجود برخوردار است.
معایب امضای ECDSA
شاید مهمترین عیب الگوریتم امضای ECDSA را بتوان در پیچیدگی اجرای آن برای سازمانهای با سطح فعالیتی متوسط و کوچک جستجو کرد؛ چراکه چنین نهادهایی برای پیادهسازی چنین مکانیسمی بر روی وبسایتهای خود نیازمند صرف هزینه زیادی هستند. علاوه بر این، الگوریتم امضای ECDSA به لحاظ سرعت و مقیاسپذیری در برابر روشهای محاسبات کوانتومی دچار ضعف در عملکرد هستند. از نقاط ضعف دیگر الگوریتم امضای ECDSA میتوان به موارد زیر اشاره کرد:
• هزینه بالا به دلیل دشواری روند اجرا
• کندی در پروسه تولید کلید خصوصی و تائید آن در سمت گیرنده که ممکن است بر سختی ماین کردن رمزارزها تاثیرات منفی از خود بر جای بگذارد.
الگوریتم امضای ECDSA؛ روش رمزنگاری ایمن و کوتاه
همان طور که در مطالب فوق مشاهده کردید، امروزه الگوریتم امضای ECDSA به یکی از بهینهترین شیوههای رمزنگاری داده در بستر رمزارزها تبدیل شده است که به اکوسیستم کریپتوکارنسی کمک میکند تا با صرف هزینه کمتر و سرعت بالاتر، تراکنشها را اعتبارسنجی کرده و شامل یک کلید خصوصی، عمومی، منحنی بیضوی مشخص و همچنین تعدادی از توابع ریاضی است. البته ناگفته نماند که هرچند این روش رمزنگاری، دادهها را ایمن و کوتاهتر میکند؛ اما دارای معایب و نقاط ضعفی نیز میباشد که برای توسعه کاربردهای خود در دنیای کریپتو نیازمند برطرف ساختن چنین ایراداتی است. لازم به ذکر است که اگر در ارتباط با الگوریتم امضای ECDSA سوالی دارید که به پاسخ آن در مطالب فوق اشارهای نشده است، میتوانید سوال خود را در بخش نظرات مطرح کنید تا کارشناسان ما در اسرع وقت به سوال شما پاسخ دهند و چنانچه علاقهمند به مطالعه مطالب بیشتری در حوزه الگوریتمهای رمزنگاری هستید، میتوانید به مقالات دیگر موجود در بلاگ کریپتوکارنسی سری بزنید.