در مقاله قبل متوجه شدیم که فرق رمزنگاری symmetric و رمزنگاری asymmetric چیست. در این مقاله میخوایم ببینیم مکانیزم امضای دیجیتال چطوریه.
فرض کنید کاربر A میخواد داده ای رو به کاربر B برسونه. این انتقال قراره سه تا ویژگی داشته باشه:
هنگام ارسال داده توسط کاربر A چه اتفاقاتی می افته؟
مرحله اول:کاربر A با کمک یک الگوریتم hash، از روی داده خودش یک Digest میسازه:
در قدم دوم، کاربر A مقدار عبارت Digest تولید شده رو با کلید private key خودش رمزنگاری میکنه. امضای دیجیتال در واقع همین مقدار رمزنگاری شده است.
در انتها کاربر A داده اصلی رو همراه با امضای دیجیتال برای کاربر B میفرسته:
هنگام دریافت داده توسط کاربر B چه اتفاقاتی می افته؟
کاربر B هنگام دریافت داده، ابتدا داده اصلی را از امضای دیجیتال جدا میکنه:
کاربر B امضای دیجیتال رو با public key مربوط به کاربر A آشکارسازی میکنه و به مقدار Digest میرسه. از روی داده اصلی هم یک Digest تولید میکنه و یکسان بودن این دو مقدار رو با هم بررسی میکنه.
اگر داده وسط راه عوض بشه، مقدارش با مقدار امضای دیجیتال مطابقت نمیکنه. و همچنین تنها کسی که میتونه از روی داده، امضای دیجیتالی تولید کنه که با public key آشکارسازی بشه، فقط و فقط کاربر A هست که private key رو در اختیار داره.
:)