رفتن به محتوای اصلی
Koohestun
رمزنگاریمقاله آموزشی· 4 دقیقه مطالعه· در مالی

الگوریتم امضای دیجیتال منحنی بیضوی (ECDSA) چگونه کلید خصوصی بیت‌کوین را می‌سازد و تایید می‌کند؟

بیت‌کوین برای تولید کلیدهای عمومی از کلیدهای خصوصی ۲۵۶ بیتی، بر ریاضیات منحنی بیضوی secp256k1 تکیه دارد. پروتکل ECDSA تضمین می‌کند که تراکنش‌ها می‌توانند بدون افشای عدد صحیح خصوصی پایه، به‌طور امن تایید شوند.

به قلم بهنام کاظمی

رمزنگاران 40%توسعه‌دهندگان بلاک‌چین 40%تولیدکنندگان کیف‌پول سخت‌افزاری 20%
رمزنگاران
بر قطعیت ریاضی مسئله لگاریتم گسسته و مزایای خاص کارایی منحنی کوبلیتز secp256k1 تمرکز دارند.
توسعه‌دهندگان بلاک‌چین
اجرای عملی ECDSA را برای امضای تراکنش، تولید اعداد تصادفی یک‌بار مصرف و تایید شبکه در اولویت قرار می‌دهند.
تولیدکنندگان کیف‌پول سخت‌افزاری
بر امنیت فیزیکی کلید خصوصی ۲۵۶ بیتی و ایزوله بودن محیط امضا تاکید می‌کنند.

دیدگاه‌هایی که این گزارش پوشش نداده

  • پژوهشگران رایانش کوانتومی که تهدیدهای آینده علیه رمزنگاری ۲۵۶ بیتی را مدل‌سازی می‌کنند

پرسش‌های متداول

آیا می‌توان از کلید عمومی بیت‌کوین برای یافتن کلید خصوصی استفاده کرد؟

خیر. الگوریتم ECDSA بر یک تابع تله‌در (trapdoor) تکیه دارد که در آن ضرب منحنی بیضوی به راحتی انجام می‌شود اما معکوس کردن آن با استفاده از رایانش کلاسیک عملاً غیرممکن است.

چرا بیت‌کوین به جای سایر منحنی‌ها از secp256k1 استفاده می‌کند؟

این منحنی یک مزیت ۳۰ درصدی در کارایی تایید ارائه می‌دهد و از پارامترهای قابل پیش‌بینی استفاده می‌کند که از مقادیر اولیه (seed) توضیح‌داده‌نشده موجود در منحنی‌های استاندارد NIST جلوگیری می‌کند.

اگر یک کلید خصوصی گم شود چه اتفاقی می‌افتد؟

از آنجا که شبکه برای تولید امضاهای معتبر ECDSA کاملاً به کلید خصوصی وابسته است، از دست دادن این عدد صحیح ۳۲ بایتی به این معنی است که دارایی‌های مرتبط برای همیشه غیرقابل دسترس خواهند بود.

نکات کلیدی

  1. بیت‌کوین برای تایید تراکنش‌ها بدون افشای کلیدهای خصوصی، به الگوریتم امضای دیجیتال منحنی بیضوی (ECDSA) وابسته است.
  2. این پروتکل از یک منحنی خاص کوبلیتز (Koblitz) به نام secp256k1 استفاده می‌کند که با معادله y^2 = x^3 + 7 تعریف می‌شود.
  3. کلید خصوصی یک عدد صحیح ۲۵۶ بیتی است که به‌طور تصادفی تولید شده و به‌عنوان تنها سازوکار برای خرج کردن دارایی‌ها عمل می‌کند.
  4. کلیدهای عمومی از طریق ضرب کلید خصوصی در یک نقطه مولد (Generator Point) از پیش‌تعیین‌شده روی منحنی تولید می‌شوند.
  5. امنیت این سیستم به مسئله لگاریتم گسسته بستگی دارد که معکوس کردن عملیات ضرب را عملاً غیرممکن می‌سازد.

برای اینکه شبکه بیت‌کوین یک انتقال را تایید کند، تنها یک شرط ریاضی باید برقرار باشد: ضرب یک نقطه روی یک منحنی خاص باید از نظر محاسباتی ساده باشد، اما تقسیم و بازگرداندن آن عملاً غیرممکن باشد. این عدم تقارن یک‌طرفه که به عنوان مسئله لگاریتم گسسته شناخته می‌شود، پایه و اساس الگوریتم امضای دیجیتال منحنی بیضوی (ECDSA) است. در حال حاضر، این محدودیت در برابر رایانش کلاسیک کاملاً پابرجا است و با اطمینان از اینکه یک کلید عمومی نمی‌تواند مهندسی معکوس شود، امنیت شبکه را تامین می‌کند.[1][6]

بیت‌کوین بر یک منحنی خاص کوبلیتز (Koblitz) به نام secp256k1 تکیه دارد که با معادله y^2 = x^3 + 7 تعریف می‌شود. برخلاف ساختارهای تصادفی منحنی‌های رایج NIST، منحنی secp256k1 با پارامترهای غیرتصادفی ساخته شده است که در آن ثابت a دقیقاً ۰ و ثابت b برابر با ۷ است. گروه استانداردهای رمزنگاری کارآمد (SECG) این پارامترها را در نشریه SEC 2 خود در سال ۲۰۱۰ رسمی کرد. این ساختار امکان محاسبات بسیار کارآمد را فراهم می‌کند و تایید امضا را حدود ۳۰ درصد سریع‌تر از منحنی‌های جایگزین می‌سازد.[1][5]

در هسته این سیستم، کلید خصوصی قرار دارد. همان‌طور که در مستندات Bitcoin.org تعریف شده است، «یک کلید خصوصی اساساً یک عدد تصادفی تولید شده است.» به‌طور دقیق‌تر، این یک عدد صحیح ۲۵۶ بیتی بدون علامت است که دقیقاً ۳۲ بایت داده را اشغال می‌کند و می‌تواند به صورت ۶۴ کاراکتر هگزادسیمال نمایش داده شود. در این پروتکل، در اختیار داشتن این عدد صحیح ۲۵۶ بیتی مترادف با مالکیت دارایی‌های مرتبط با آن در بلاک‌چین است.[3]

منحنی secp256k1 برای دستیابی به کارایی محاسباتی خود، بر پارامترهای خاص و غیرتصادفی تکیه دارد.

برای ایجاد یک کلید عمومی، پروتکل این کلید خصوصی ۳۲ بایتی را می‌گیرد و آن را در یک مختصات از پیش‌تعیین‌شده روی منحنی secp256k1، که به عنوان نقطه مولد (G) شناخته می‌شود، ضرب می‌کند. از آنجا که ضرب منحنی بیضوی شامل جمع هندسی نقاط به جای حساب استاندارد است، نتیجه یک مجموعه جدید از مختصات روی منحنی است. این نقطه جدید به عنوان کلید عمومی عمل می‌کند که می‌تواند با خیال راحت برای دریافت دارایی‌ها با شبکه به اشتراک گذاشته شود.[1][2]

از آنجا که ضرب منحنی بیضوی شامل جمع هندسی نقاط به جای حساب استاندارد است، نتیجه یک مجموعه جدید از مختصات روی منحنی است.

هنگامی که یک کاربر می‌خواهد بیت‌کوین خرج کند، باید مالکیت کلید خصوصی را بدون افشای آن ثابت کند. ECDSA این کار را با تولید یک امضای دیجیتال انجام می‌دهد. پروتکل، داده‌های تراکنش را هش کرده و آن را با یک عدد تصادفی یک‌بار مصرف (nonce) که معمولاً با k نشان داده می‌شود، و کلید خصوصی ترکیب می‌کند. این عملیات یک امضای منحصربه‌فرد متشکل از ۲ مقدار متمایز r و s تولید می‌کند.[4][6]

عدد تصادفی k یک نقطه آسیب‌پذیری بحرانی در فرآیند ECDSA است. این عدد باید کاملاً تصادفی باشد و هرگز در چندین امضا دوباره استفاده نشود. اگر دقیقاً از همان عدد تصادفی برای امضای ۲ تراکنش مختلف با همان کلید خصوصی استفاده شود، رابطه ریاضی بین امضاها به یک ناظر اجازه می‌دهد تا کلید خصوصی را با استفاده از جبر پایه محاسبه کند و بلافاصله دارایی‌ها را به خطر بیندازد.[4]

فرآیند امضا به یک عدد تصادفی یک‌بار مصرف (nonce) منحصربه‌فرد نیاز دارد تا اطمینان حاصل شود که کلید خصوصی نمی‌تواند از نظر جبری از امضا استخراج شود.

پس از پخش تراکنش و امضای آن، گره‌های شبکه باید صحت آن را تایید کنند. گره‌ها از کلید عمومی فرستنده، هش تراکنش و ۲ مقدار امضا (r و s) برای انجام یک معادله تایید استفاده می‌کنند. اگر محاسبات ریاضی هم‌خوانی داشته باشد، به‌طور قاطع ثابت می‌کند که امضا توسط دارنده کلید خصوصی مربوطه تولید شده است و انتقال را مجاز می‌سازد.[2][4]

پیامدهای عملی این سازوکار مطلق است. از آنجا که شبکه برای تایید هویت کاملاً به ECDSA وابسته است، از دست دادن یک کلید خصوصی ۳۲ بایتی به معنای از دست دادن دسترسی به دارایی‌ها برای همیشه است، زیرا تابع تله‌در (trapdoor) از هرگونه بازیابی از طریق کلید عمومی جلوگیری می‌کند. در مقابل، تا زمانی که مسئله لگاریتم گسسته توسط رایانش کلاسیک غیرقابل حل باقی بماند، سد ریاضی که دفتر کل عمومی را از کلید خصوصی جدا می‌کند، دست‌نخورده باقی می‌ماند.[1][3]

اصطلاحات کلیدی

کلید خصوصی
یک عدد صحیح ۲۵۶ بیتی که به‌طور تصادفی تولید شده و به دارنده آن اجازه می‌دهد تراکنش‌های بیت‌کوین را تایید کند.
کلید عمومی
مختصاتی روی منحنی secp256k1 که از کلید خصوصی استخراج شده و برای دریافت دارایی‌ها و تایید امضاها استفاده می‌شود.
عدد تصادفی یک‌بار مصرف (k)
یک عدد تصادفی یک‌بار مصرف که توسط الگوریتم ECDSA در طول فرآیند امضا برای اطمینان از منحصربه‌فرد بودن امضا مورد نیاز است.
secp256k1
منحنی بیضوی خاصی که توسط بیت‌کوین استفاده می‌شود و با معادله y^2 = x^3 + 7 تعریف می‌گردد.

منابع

پوشش منابع

6 منبع

3 دیدگاه شناسایی‌شده

رمزنگاران 40%توسعه‌دهندگان بلاک‌چین 40%تولیدکنندگان کیف‌پول سخت‌افزاری 20%
  1. [1]Bitcoin Wikiتوسعه‌دهندگان بلاک‌چین

    Elliptic Curve Digital Signature Algorithm

    مطالعه در Bitcoin Wiki
  2. [2]Ledgerتولیدکنندگان کیف‌پول سخت‌افزاری

    ECDSA (Elliptic Curve Digital Signature Algorithm)

    مطالعه در Ledger
  3. [3]Bitcoin.orgتوسعه‌دهندگان بلاک‌چین

    BIP 137: Signatures of Messages using Private Keys

    مطالعه در Bitcoin.org
  4. [4]Bitcoin Stack Exchangeتوسعه‌دهندگان بلاک‌چین

    Private Keys / Transaction Verification

    مطالعه در Bitcoin Stack Exchange
  5. [5]Standards for Efficient Cryptography Groupرمزنگاران

    SEC 2: Recommended Elliptic Curve Domain Parameters

    مطالعه در Standards for Efficient Cryptography Group
  6. [6]Factlen Editorial Team

    Synthesis by Factlen editorial team

    مطالعه در Factlen Editorial Team

نظرات

همیشه در جریان باشید

هر زاویه. هر روز.

دریافت مالی اخبار همراه با پوشش کامل منابع و تحلیل دیدگاه‌ها، مستقیم در صندوق ورودی شما.