رهام رفیعی تهرانی
رهام رفیعی تهرانی
خواندن ۱ دقیقه·۲ سال پیش

امضای دیجیتال چیست؟

در مقاله قبل متوجه شدیم که فرق رمزنگاری symmetric و رمزنگاری asymmetric چیست. در این مقاله میخوایم ببینیم مکانیزم امضای دیجیتال چطوریه.

فرض کنید کاربر A میخواد داده ای رو به کاربر B برسونه. این انتقال قراره سه تا ویژگی داشته باشه:

  1. کاربر B مطمئن باشه که داده دریافت شده قطعا از طرف کاربر A ارسال شده
  2. کاربر A نتونه ادعا کنه که داده رو نفرستاده
  3. داده دریافت شده، در میانه راه و توسط شخص دیگه ای تغییر نکرده


هنگام ارسال داده توسط کاربر A چه اتفاقاتی می افته؟

مرحله اول:کاربر A با کمک یک الگوریتم hash، از روی داده خودش یک Digest میسازه:

در قدم دوم، کاربر A مقدار عبارت Digest تولید شده رو با کلید private key خودش رمزنگاری میکنه. امضای دیجیتال در واقع همین مقدار رمزنگاری شده است.


در انتها کاربر A داده اصلی رو همراه با امضای دیجیتال برای کاربر B میفرسته:


هنگام دریافت داده توسط کاربر B چه اتفاقاتی می افته؟

کاربر B هنگام دریافت داده، ابتدا داده اصلی را از امضای دیجیتال جدا میکنه:


کاربر B امضای دیجیتال رو با public key مربوط به کاربر A آشکارسازی میکنه و به مقدار Digest میرسه. از روی داده اصلی هم یک Digest تولید میکنه و یکسان بودن این دو مقدار رو با هم بررسی میکنه.


اگر داده وسط راه عوض بشه، مقدارش با مقدار امضای دیجیتال مطابقت نمیکنه. و همچنین تنها کسی که میتونه از روی داده، امضای دیجیتالی تولید کنه که با public key آشکارسازی بشه، فقط و فقط کاربر A هست که private key رو در اختیار داره.

:)

امضای دیجیتالprivate keypublic key
برنامه نویسی یک شغل نیست، یک هنره.
شاید از این پست‌ها خوشتان بیاید