آشنایی با امضاهای دیجیتال

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

شکل 1. امضاهای دیجیتال

شکل 1 روند امضا را نشان می دهد.

  • امضاکننده (اليس) با استفاده از الگوریتم تولید کلید، یک جفت کلید عمومی و خصوصی را تولید می کند.
  • او کلید عمومی خود را از طریق کانال های ارتباطی ارسال می کند.
  • در مرحله بعد، آلیس با استفاده از کلید خصوصی خود اقدام به امضای دیجیتالی پیام می کند. مهم این است که او کلید خصوصی را نزد خود نگه داشته و آن کلید را نزد هیچ کسی آشکار نکند.
  • هنگامی که پیام امضا شد، هر دو پیام اصلی و امضای صورت گرفته به گیرنده (باب) فرستاده می شود. توجه داشته باشید که پیام رمزگذاری نشده است، بلکه فقط هویت آن تایید شده است.
  • باب با استفاده از کلید عمومی آلیس، امضا را تأیید می کند.
  • اگر نتیجه تأیید مثبت بود، او متوجه می شود سرچشمه پیام توسط الیس بوده است. در غیر این صورت او می تواند پیام را به عنوان پیامی نامعتبر رد کند.

جلوگیری از انکار نمی تواند با استفاده از رمزنگاری متقارن انجام شود. فرض کنید رمزنگاری متقارن امضای دیجیتالی یک پیام استفاده می شود. فرض کنیم هر دو امضاکننده (آليس) و گیرنده (باب) کلید مخفی را بین خود به اشتراک می گذارند. در حال حاضر آلیس می خواهد پیامی برای باب ارسال و او نیز با استفاده از کلید متقارن، پیام را رمزگشایی کند. از آنجا که کلید متقارن است، این کلید تنها به آلیس و باب شناسانده شده است و باب می داند این پیام توسط آلیس ایجاد شده است. با این حال، باب نمی تواند به نهادی یا به شخص ثالث (همانند دادگاه) اثبات کند آلیس به او پیام را ارسال کرده است.

دو مشکل بالقوه وجود دارد. همان طور که هر دو آلیس و باب یک کپی از کلید متقارن را دارند، هر کدام از آنها می توانند پیامی رمز شده ایجاد کنند. بنابراین باب نمی تواند ثابت کند امضا متعلق به کیست. او فقط می تواند ثابت کند کسی که کلید متقارن را داشته، اقدام به تولید پیام کرده است. از آنجا که باب و آلیس – هر دو یک کپی از کلید متقارن را دارند، هر کدام از آنها می توانند پیام را رمز کرده باشند. لذا رمزگذاری یک پیام نمی تواند برای اثبات این که آن توسط آلیس ایجاد شده است، مورد استفاده قرار گیرد. علاوه بر این، برای اثبات این که پیام توسط کلید متقارن رمزنگاری شده است، باب باید کلید را نشان دهد. اما با آشکار کردن کلید به شخص ثالث، این اجازه داده می شود که شخص ثالث اقدام به امضای هر پیام دیگری کرده و در نتیجه مقدمات تضعیف بیشتر امنیت امضا فراهم خواهد شد.

در رمزنگاری کلید عمومی امضای فرستنده به پیام متصل می شود، و تنها امضاکننده (آلیس) دارای یک کپی از کلید خصوصی است؛ بنابراین تنها او می تواند پیامی را با کلید عمومی خودش امضا کرد علاوه بر این، برای ثابت کردن این که پیامی در واقع توسط آلیس امضا شده است، باب تنها کلید عمومی و امضای پیام را به شخص ثالث (قاضی) نشان می دهد. بطور خلاصه، رمزنگاری کلید عمومی تمام مشکلات را حل می کند و بدین ترتیب می توانیم امضاهای دیجیتال امن و الزام آوری داشته باشیم.

از نقطه نظر فنی، در ارتباط با امضاهای دیجیتال، پیام می تواند به اندازه دلخواه طولانی باشد. این می تواند برای الگوریتم به کار گرفته شده توسط رمزنگاری کلید عمومی مشکلی ایجاد کند؛ زیرا این الگوریتم کاملا آهسته عمل می کند. راه حل مشکل این است که برای اولین بار هش پیام (با هر طول دلخواهی) را گرفته و سپس آن را امضا بزنیم. طول خروجی یک تابع هش مستقل از طول ورودی همیشه ثابت و یکسان است. با استفاده از هش، پیام با طول اختیاری را می توان به صراحت امضا کرد. پروتکل امضای دیجیتال ترکیبی از الگوریتم کلید عمومی با روش امضای دیجیتال است. الگوریتم های ریاضی نامتقارن زیربنای الگوریتم کلید عمومی را فراهم کرده است. طرح امضای دیجیتال، راهی برای استفاده از الگوریتم های نامتقارن است. در عمل سه خانواده کلید عمومی اصلی مورد استفاده وجود دارد:

  • تجزيه عدد صحیح
    این الگوریتم بر مبنای دشواری فاکتور گیری از اعداد صحیح بزرگ بنیان گذاشته شده است. مهم ترین مثال آن آر.اس.ای است.
  • لگاریتم گسسته
    بر اساس مقاومت مسئله لگاریتم گسسته، در گروههای حلقوی محدود، بنیان گذاشته شده است. این روش در سال ۱۹۷۶ توسط دیفی و هلمن برای الگوریتم تبادل کلید معرفی شد.
  • منحنی بیضوی
    بر اساس دشواری محاسبه مسئله لگاریتم کلی در یک منحنی بیضوی، در سال ۱۹۸۵ معرفی شد. با وجود مزایای فنی، ثبت اختراع های کمی در حوزه تجاری آن را تحت پوشش قرار داده است

طرح های امضای دیجیتال اصلی مورد استفاده در عمل عبارت اند از:

  • آر.اس.ای
    طرح امضای آراس ای بر مبنای الگوریتم آر اس ای است. این طرح امضای دیجیتالی بطور گسترده استفاده می شود.
  • امضا Schnorr
    این امضا به عنوان ساده ترین روش امضا در نظر گرفته شده و می تواند با هر دو لگاریتم گسسته و الگوریتم های منحنی بیضوی استفاده شود. این نتایج در بارهای کاری محاسباتی کم، برای امضا و تأیید آن و نیز برای امضاهای کوچک تر استفاده می شود. با این حال، از زمانی که اختراع آن به ثبت رسیده است بطور گسترده مورد استفاده قرار نگرفته است. ثبت اختراعی که امضا Schnorr را پوشش می داد، در سال ۲۰۰۸ تمام شد و باعث شد برخی درخواست ها در جامعه بیت کوین برای سوئیچ کردن از این امضا، مطرح شود.
  • امضا Elgamal
    توسط Elgamal در سال ۱۹۸۵ معرفی شده است. این طرح به هر دو روش لگاریتم گسسته و الگوریتم های منحنی بیضوی قابل اجراست. با این حال، در عمل بطور گسترده مورد استفاده قرار نمی گیرد. دلیل آن، محاسبات بیشتر و امضاهای بزرگتر نسبت به طرح های دیگر است.
  • دی.اس.ای
    این امضا بر مبنای الگوریتم امضاهای دیجیتال بنیان گذاشته شده و توسط مؤسسه ملی استاندارد و فناوری در سال ۱۹۹۱ مطرح شد. این طرح بطور گسترده به دلیل این که ثبت اختراعی که آن را پوشش می دهد امضا را برای همگان به صورت حق امتیاز رایگان ارایه کرده، مورد استفاده بوده است.

بیت کوین از الگوریتم منحنی بیضوی با روش امضای دی.اس.ای استفاده می کند. در بخش بعدی الگوریتم منحنی بیضوی با طرح امضای دی اس ای پوشش داده خواهد شد.

منبع: کتاب راهنمای بیت کوین نوشته پدرو فرانکو