امضای ECDSA چیست؟ همه چیز درباره الگوریتم امضای دیجیتال ECDSA
اگر با کیف پولهای ارز دیجیتال کارکرده باشید حتما با مفاهیمی مانند کلیدهای خصوصی و عمومی و امضای دیجیتال آشنایی دارید. رشتههایی از اعداد و حروف که از آنها برای تایید تراکنشها و هویت فرستنده یا گیرنده استفاده میشود. این رشتهکاراکترهای منحصربهفرد با استفاده از تکنولوژیهای مختلف کریپتوگرافی تولید میشوند که یکی از پیچیدهترین آنها امضای ECDSA است.
آشنایی با الگوریتم امضای دیجیتال ECDSA بهعنوان پرکاربردترین الگوریتم رمزنگاری در بلاکچین درک شما را از مقوله امنیت تراکنش و داراییتان در کیف پولهای ارز دیجیتال افزایش میدهد. در این مقاله مزایا و معایب الگوریتم ECDSA را معرفی کرده و تفاوت آن با سایر روشهای رمزنگاری را بررسی میکنیم. پس با ما همراه باشید تا با یکی از پیچیدهترین تکنولوژیهای ارز دیجیتال آشنا شوید.
امضای ECDSA چیست؟
همانطورکه میدانید در دنیای کامپیوتر و بلاکچین از تکنولوژی رمزنگاری نامتقارن یا رمزنگاری کلید عمومی (PKC) برای ارسال و دریافت اطلاعات استفاده میشود. این تکنولوژی از یک جفت کلید خصوصی (Private Key) و عمومی (Public Key) برای احراز هویت فرستنده و گیرنده اطلاعات بهره میبرد. فرستنده با کلید خصوصی خود، اطلاعات را امضا، ارسال و بهاصطلاح رمزگذاری میکند. گیرنده نیز با تطبیق کلید عمومی فرستنده، صحت و اصالت آن را بررسی و رمزگشایی میکند.
Elliptic Curve Digital Signature Algorithm بهاختصار امضای ECDSA به معنی الگوریتم امضای دیجیتال منحنی بیضوی است. یکی از پیچیدهترین روشهای تولید رمزنگاری کلید عمومی که امکان تولید عبارات کوتاهتر نسبت به دیگر روشها را بدون کاهش امنیت فراهم میکند. ECDSA ترکیبی از الگوریتمهای قدیمیتر منحنی بیضوی (ECC) و امضای دیجیتال (DSA) است. این سازوکار از گروههای چرخهای منحنیهای بیضوی بر روی میدانهای نامحدود برای تولید کدهای خود استفاده میکند.
الگوریتم امضای ECDSA گواهیها یا Certificates هایی تولید میکند که در حقیقت، نوعی سند دیجیتال محسوب میشوند. این سند، حاوی اطلاعاتی دربارهی مالک کلید خصوصی و صادرکنندهی (Issuer) گواهی است. یک امضای ۲۵۶ بیتی ECDSA، امنیتی برابر با کدهای ۳۰۷۲ بیتی RSA دارد. RSA از معروفترین الگوریتمهای کریپتوگرافی دنیاست.
مکانیزم تولید کلید عمومی و خصوصی در الگوریتم ECDSA
سازوکار امضای ECDSA از نظر تئوری پیچیده است؛ اما بهطور ساده میتوان آن را شامل مراحل زیر دانست:
- انتخاب یک منحنی بیضوی
- انتخاب یک نقطهی مبدا به نام G Point توسط تابعی مولد به نام G Generator
- انتخاب یک نقطه تصادفی شامل اعداد صحیح روی منحنی بهعنوان کلید خصوصی
- ضرب اسکالر مختصات نقطهی کلید خصوصی در نقطهی مبدا G و ایجاد یک نقطه جدید که همان کلید عمومی است.
بهطور خلاصه فرآیند تولید کلید عمومی از خصوصی در الگوریتم امضای ECDSA به شرح زیر است:
مشخص است که کلید عمومی از کلید خصوصی بهدست میآید اما عکس آن صادق نیست. در حقیقت Public Key یک نقطهی دو متغیره روی منحنی بهصورت x, y است. بااینحال میتواند به تنهایی یکی از این دو عدد به اضافهی یک بیت فشردهسازی شود. به همین دلیل طول آن از رمزهای RSA کوتاهتر است. بیت کوین این فشردهسازی را با طرح رمزنگاری Base58 و توابع هش انجام میدهد.
منطق الگوریتم امضای ECDSA بر این فرض استوار است که حدس کلید خصوصی از روی کلید عمومی به دلیل بزرگی عدد آن، بسیار دشوار خواهد بود. این منطق از یک لگاریتم گسسته به نام ECDLP نشات میگیرد. بنابراین این الگوریتم در عین داشتن کاراکترهای کمتر، امنیت بیشتری دارد.
منحنیهای بیضوی، بر حسب مختصات و رفتارشان، انواع مختلفی دارند. نام منحنی بلاکچین بیت کوین secp256k1 است. بنابراین با خرید بیت کوین کلید عمومی شما روی این منحنی رمزنگاری میشود. پسازآن ماینرها، بدون اینکه کلید خصوصی شما را بدانند، تراکنش را بررسی و تایید میکنند.
فرآیند امضای دیجیتال در ECDSA
پس از تولید کلیدهای خصوصی و عمومی، برای انجام یک تراکنش به امضای دیجیتال فرستنده نیاز است. امضای ECDSA شامل یک جفت عدد صحیح (r , s) است. اعداد r و s هریک از محاسبات پیچیدهی ریاضی با اعمال توابعی مانند mod n، هش (Hash) و لگاریتم طبیعی (Ln) بر کلیدهای خصوصی و عمومی بهدست میآیند.
فرآیند امضای ECDSA با کدینگ یک نقطهی تصادفی به نام R که فقط مختصات x دارد با استفاده از کلید خصوصی و هشکردن پیام به عدد s شروع میشود. عملیاتی که از طریق تبدیل منحنی بیضوی انجام شده و موید تعلق کلید خصوصی به امضاکنندهی پیام است. در سوی دیگر، تاییدکنندهی امضا، عدد s را به نقطهی مبدا R رمزگشایی میکند. این عملیات نیز با استفاده از کلید عمومی، هش پیام و فشردهسازی x با مختصات r انجام میشود.
بهطور خلاصه، فرستندهی پیام یا فایل آن را با کلید خصوصی خود و یک هش از فایل که عددی منحصربهفرد به نمایندگی از فایل است، امضا میکند. گیرنده نیز برای احراز فایل و تایید اصالت آن، تنها به کلید عمومی گیرنده نیاز دارد. بنابراین مشخص است که کلید عمومی تنها شاخصی برای برای تایید تبادل بوده و کاربرد مالکیتی ندارد.
مزایای الگوریتم امضای دیجیتال ECDSA
علاوه بر کوتاهترشدن طول کدها، امضای ECDSA مزایای دیگری نیز دارد که مهمترین آنها عبارتند از:
- امکان تایید امضای دیجیتال از سوی شخص ثالث بدون بهخطرانداختن امنیت
- تولید امضای دیجیتال منحصربهفرد و غیرقابلتکرار برای هر جفت کلید خصوصی و عمومی
- امکان تولید نامحدود کلیدهای عمومی
- ساده و سریع شدن تایید تراکنشها و قراردادهای هوشمند
- کاهش حجم دادههای ذخیرهشونده در بلاک و در نتیجه کاهش هزینههای مربوط به تراکنش
- تعدد منابع کد پشتیبان مانند Botan ،Bouncycastle ،Crypto++ ،Microsoft Crypto API و Open SSL
- امکان بازیابی کلید عمومی و امضا از پیام امضاشده با افزودن یک متغیر دیگر به نام v به امضای دیجیتال و تبدیل فرمت آن (به r, s, v). بهعنوان مثال، بلاکچین اتریوم از این ویژگی استفاده میکند.
معایب تکنولوژی رمزنگاری ECDSA
با وجود مزایای پرشمار امضای ECDSA، این روش رمزنگاری هنوز نسبت به RSA محبوبیت کمتری دارد. دلیل اصلی این موضوع، شاید سابقهی بیشتر RSA باشد؛ اما میتوان برخی نقاط ضعف را نیز برای این روش کریپتوگرافی درنظر گرفت.
مهمترین مشکل امضای ECDSA، پیچیدگی اجرای آن برای سازمانهای متوسط و کوچک است. آنها باید هزینهی زیادی صرف پیادهسازی این مکانیسم روی وبسایتها و برنامههای خود کنند. هرگونه ضعف در اجرا نیز خود تبدیل به محل مناسبی برای حملهی هکرها خواهد شد. هک کلید خصوصی کنسول بازی پلیاستیشن ۳ سونی در سال ۲۰۱۰ به همین دلیل اتفاق افتاد. در آگوست سال ۲۰۱۳ نیز هکرها توانستند وجوه قابلتوجهی را از حساب کاربران کیف پولهای اندروید بیت کوین خارج کنند. اتفاقی که ناشی از تولید کلید خصوصی توسط مولدهای معیوب عدد تصادفی بود.
علاوه بر این، بهطورکلی تمامی روشهای رمزگذاری، ازجمله ECDSA، در برابر روشهای محاسبات کوانتومی سرعت و مقیاسپذیری اندکی دارند. البته هنوز استفاده از محاسبات کوانتومی در تولید امضای دیجیتال در مراحل ابتدایی و آزمایشی خود است.
از دیگر نقاط ضعف امضای ECDSA میتوان به موارد زیر اشاره کرد:
- کندی روند از تولید کلید خصوصی تا تایید در سمت گیرنده که ممکن است بر سرعت و سختی استخراج ارز دیجیتال اثر منفی بگذارد.
- هزینهی بالای اجرا که ناشی از دشواری آن است.
کاربردهای امضای ECDSA
الگوریتم امضای دیجیتال منحنی بیضوی به دلیل کاربرد گستردهاش در بلاکچینهای رمزارز، معروف شده است. بااینحال، این فناوری، چندان هم تازه و نوظهور نیست و سابقهی حضور آن در دنیای دیجیتال به سال ۲۰۰۵ میرسد. در طول این سالها، امضای ECDSA کاربردهای مختلفی پیدا کرده است. از مهمترین آنها میتوان به موارد زیر اشاره کرد:
- برنامهها و اپلیکیشنهای پیامرسان مانند واتساپ
- تایید واریز و دریافت در کیف پولهای ارز دیجیتال
- لایههای حملونقل و امنیتی TLS و SSL در مرورگرهای وب
- رمزگذاری اتصالات در وبسایتهای HTTPS
- کمک به حفظ حریم خصوصی کاربران در برنامههای ارتباطات ناشناس مانند Tor
تفاوت امضای ECDSA و اشنور
یکی از جدیترین رقبای الگوریتم امضای دیجیتال ECDSA، اشنور (Schnorr) است. الگوریتمی حتی قدیمیتر از RSA که در سال ۱۹۹۱ توسط کلاوس اشنور ابداع شد. امضای اشنور نیز از کریپتوگرافی منحنیهای بیضوی استفاده میکند؛ اما بهمراتب به محاسبات کمتر و سادهتری نیاز دارد. ازاینرو، بسیاری آن را گزینهی بهتری برای استفاده در بلاکچینها میدانند؛ چراکه خطر افشای کلید خصوصی را بر اثر اجرای اشتباه یا ناقص، کم میکند. از دیگر مزایای الگوریتم Schnorr در مقایسه با امضای ECDSA موارد زیر هستند:
- کاهش طول و حجم کدهای دیجیتال در عین حفظ امنیت و تسریع فرآیند ارسال و تایید اطلاعات
- امکان تجمیع چند امضا در یک امضا که برای مجموعهای از کلیدها معتبر است. (این ویژگی به کاهش کارمزد تراکنش و افزایش مقیاسپذیری در بلاکچین منجر میشود.)
- افزایش حریم خصوصی با نمایش تنها یک آدرس تجمیعشده برای تراکنشهای Multi-sig بهجای نمایش اکثریت آدرسها
- کاهش حجم اطلاعات پرداختهای Multi-sig
- عدم امکان اعتباردهی به امضای اصلاحشده و رفع خطر تغییر پیام ارسالی
این مزایا سبب شدهاند که بسیاری، اشنور را جایگزین مناسبی برای امضای ECDSA بدانند. بااینحال این الگوریتم در کنار RSA هنوز مقبولیت بیشتری دارد. هماکنون بلاکچینهایی مانند پولکادات، کوساما، زیلیکا از Schnorr در کنار دیگر روشها استفاده میکنند. بیت کوین، اتریوم، ریپل، کاردانو، لایت کوین، دوج کوین، آوالانچ و بیشتر بلاکچینها نیز همچنان به امضاهای دیجیتال منحنی بیضوی وفادار هستند.
ECDSA از نگاه کاربران ارز دیجیتال
صنعت ارز دیجیتال اساساً بر مبنای محاسبات دشوار استوار است. بهعنوان یک تریدر، ماینر یا بهطورکلی فعال این بازار، لزومی ندارد این محاسبات دشوار را درک کنیم. بااینحال خوب است بدانیم که این جزئیات فنی، چطور میتوانند تاثیرات عینی بر رشد یک ارز دیجیتال و پتانسیلهای بلاکچین آن داشته باشند. بهعنوان مثال، استفاده از امضای ECDSA در یک بلاکچین میتواند بیانگر امنیت بالای آن باشد، اما تغییر این الگوریتم به گزینههای پیشرفتهتر، مانند اشنور، میتواند فرصتی برای رشد قیمت ارز بومی آن بلاکچین فراهم کند.
اگر به مباحث برنامهنویسی نیز علاقهمند هستید، میتوانید پیشنهادات خود را در گیتهاب برای بهبود عملکرد هریک از الگوریتمهای کریپتو بهاشتراک بگذارید. به نظر شما آیا امضای ECDSA جای خود را به اشنور یا محاسبات کوانتومی خواهد داد؟ نظر شما دربارهی تاثیر چنین تحولاتی بر قیمت ارزهای دیجیتال چیست؟
گام قبلی (۱۹/۲۷) گام بعدی