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