- فرض کنید شخص A قصد فرستادن یک فایل (رمز شده یا رمز نشده) برای شخص B را دارد.
- شخص A برای این که مطمئن شود فایل اصلی به شخص B میرسد از امضای دیجیتال استفاده میکند.
- شخص A برای امضای دیجیتال باید از کلیدی استفاده کند که تنها و فقط و فقط در اختیار خودش است یعنی کلید خصوصی
- پس در نتیجه شخص A برای اعمال امضای دیجیتال بر روی یک فایل از کلید خصوصی خودش استفاده میکند.
- در نتیجه شخص B برای Verify کردن امضای دیجیتال از کلید عمومی شخص A استفاده میکند.
- نکته : برای زدن امضای دیجیتال پای یک فایل نیازی نیست تا حتما ان فایل یک فایل رمزشده باشد. میتواند یک فایل متنی ساده و بدون رمز باشد.
- به منظور اعمال امضای دیجیتال به صورت زیر عمل کنید.
# gpg --local-user 8C13D74 --clearsign file.txt
- در دستور بالا امضای دیجیتال با کلید خصوصی با شناسهی 8C13D74 برای پروندهی file.txt در نظر گرفته میشود.
- با اجرای دستور بالا یک پرونده با نام file.txt.asc ساخته میشود که محتوای آن به صورت زیر است.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
hi
-----BEGIN PGP SIGNATURE-----
iQGzBAEBCgAdFiEEe+LrKcj5NdIVbP/tOxEsthk4KiEFAl/Dd9oACgkQOxEsthk4
KiEPbwv/SeKSnqti53cwL3VAvK7RQI9S9KsASHSWAy88dcMQyRJZKfhZ0bZ2Gxhy
uD8Qh9ofO9m/clnRCkPsvM8Elmd6NULFjtqBmfnADP/juyQmUU2UIFLxyRTn6eBk
BZZ25VYdfrlzCEJ3DGR5cYQ/4V9omcvO/gYfhwFRl2iVsAenrIA0QHuKuFvjRQup
sZtT3fPs0Hr/cvXcuCj8Lg4Pc+huGHGcYLe+yuEaFMKM9NviNzSHhUKAEbw17NsW
/6Xjp10dcKptyF4FS/xZm/nb8RSv8MXsRL1/uzwavIeJoeT240S4/G7aN2umzd+e
uvcNzUW/LUMM/hW6Ssjxej0JxASPN9QZmKpdPYqTS9PzJkhS7JIg+0KM6ZNvJhM3
BjqX4ZGKtyDG0opYUdFSl2L3Cbl+eihzrXjQ8iqe6kaF6vlDRjLK/x96RnAkCskn
bEU7d3FuW6YmCGHz2PfmQ6i4f1aFaZLlcgSVzgdNcE6bh48ZuxyYGynQBeYu1izx
NGoEJeJo
=zfKX
-----END PGP SIGNATURE-----
- عبارت hi در واقع محتوای پروندهی file.txt میباشد.
- در مثال بالا فایل به صورت متنی و ascii بود. حال فرض کنید یک فایل باینری در اختیار دارید در این صورت طبیعتا نمیتوان امضای دیجیتال را به آخر فایل اضافه کرد.
- در این صورت امضای دیجیتال درون یک فایل دیگر با همان نام ریخته میشود.
- برای اعمال امضای دیجیتال در داخل یکی فایل دیگر به صورت زیر عمل نمایید.
# gpg --armor --local-user 8C13D74 --output file.txt.sig --detach-sign file.txt
- در دستور بالا محتوای امضای دیجیتال به صورت ASCII درون پروندهی file.txt.sig ریخته میشود.
- حال کافیست دو پروندهی file.txt و file.txt.sig برای شخص B فرستاده شود.
- حال شخص B با استفاده از کلید عمومی شخص A که در اختیارش است ، میتواند این امضای دیجیتال را Verify کند. برای این منظور به صورت زیر عمل کنید.
# gpg --verify file.txt.asc
gpg: Signature made Sun 29 Nov 2020 10:28:42 AM UTC
gpg: using RSA key 7BE2EB29C8F935D2156CFFED3B112CB619382A21
gpg: Good signature from "iman homayouni (sherkati) <homayouni@X.co>" [ultimate]
gpg: WARNING: not a detached signature; file 'file.txt' was NOT verified!
- در دستور بالا اصلا نیازی نیست که از سویچ recipient– استفاده شود. این موضوع به صورت خودکار توسط ابزار gpg حل میشود.
- در صورتی که دستور بالا به درستی اجرا شود یا به طور دقیق تر در صورتی که امضای دیجیتال صحیح باشد ، با پیغام good signature روبهرو خواهید شد.