- فرض کنید شخص A قصد فرستادن یک فایل (رمز شده یا رمز نشده) برای شخص B را دارد.
- شخص A برای این که مطمئن شود فایل اصلی به شخص B میرسد از امضای دیجیتال استفاده میکند.
- شخص A برای امضای دیجیتال باید از کلیدی استفاده کند که تنها و فقط و فقط در اختیار خودش است یعنی کلید خصوصی
- پس در نتیجه شخص A برای اعمال امضای دیجیتال بر روی یک فایل از کلید خصوصی خودش استفاده میکند.
- در نتیجه شخص B برای Verify کردن امضای دیجیتال از کلید عمومی شخص A استفاده میکند.
- نکته : برای زدن امضای دیجیتال پای یک فایل نیازی نیست تا حتما ان فایل یک فایل رمزشده باشد. میتواند یک فایل متنی ساده و بدون رمز باشد.
- به منظور اعمال امضای دیجیتال به صورت زیر عمل کنید.
|
1 |
# gpg --local-user 8C13D74 --clearsign file.txt |
- در دستور بالا امضای دیجیتال با کلید خصوصی با شناسهی 8C13D74 برای پروندهی file.txt در نظر گرفته میشود.
- با اجرای دستور بالا یک پرونده با نام file.txt.asc ساخته میشود که محتوای آن به صورت زیر است.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 <span style="color: #ff0000;"><strong>hi</strong></span> -----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 بود. حال فرض کنید یک فایل باینری در اختیار دارید در این صورت طبیعتا نمیتوان امضای دیجیتال را به آخر فایل اضافه کرد.
- در این صورت امضای دیجیتال درون یک فایل دیگر با همان نام ریخته میشود.
- برای اعمال امضای دیجیتال در داخل یکی فایل دیگر به صورت زیر عمل نمایید.
|
1 |
# 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 کند. برای این منظور به صورت زیر عمل کنید.
|
1 2 3 4 5 |
# gpg --verify file.txt.asc gpg: Signature made Sun 29 Nov 2020 10:28:42 AM UTC gpg: using RSA key 7BE2EB29C8F935D2156CFFED3B112CB619382A21 gpg: <span style="color: #ff0000;"><strong>Good signature</strong></span> from "iman homayouni (sherkati) <homayouni@X.co>" [ultimate] gpg: WARNING: not a detached signature; file 'file.txt' was NOT verified! |
- در دستور بالا اصلا نیازی نیست که از سویچ recipient– استفاده شود. این موضوع به صورت خودکار توسط ابزار gpg حل میشود.
- در صورتی که دستور بالا به درستی اجرا شود یا به طور دقیق تر در صورتی که امضای دیجیتال صحیح باشد ، با پیغام good signature روبهرو خواهید شد.