PGPVERIFY(1) InterNetNews Documentation PGPVERIFY(1)

pgpverify - اعتبارسنجی رمزنگارانه پیام‌های کنترلی یوزنت

pgpverify [--findid=string] [--test] < message

برنامه pgpverify یک پیام کنترلی یوزنت (Usenet) را که به صورت رمزنگارانه با استفاده از برنامه signcontrol (یا برنامه دیگری که قالبی سازگار تولید می‌کند) امضا شده است از ورودی استاندارد می‌خواند. سپس pgpverify از یک پیاده‌سازی PGP برای تعیین هویت امضاکننده پیام کنترلی استفاده می‌کند. اگر پیام کنترلی دارای امضای معتبر باشد، pgpverify شناسه کاربری (User ID) کلیدی را که پیام را امضا کرده است در خروجی استاندارد چاپ می‌کند. در غیر این صورت، با وضعیت خروجی غیرصفر خارج می‌شود.

اگر pgpverify به عنوان بخشی از INN نصب شده باشد، از پیکربندی INN برای تعیین برنامه اعتبارسنجی امضا، نحوه ثبت خطاها، دایرکتوری موقت مورد استفاده، و دسته کلید (keyring) مورد استفاده بهره می‌گیرد. در غیر این صورت، تمام این پارامترها را می‌توان با ویرایش ابتدای همین اسکریپت تنظیم نمود.

به‌طور پیش‌فرض، هنگامی که برنامه به عنوان بخشی از INN اجرا می‌شود، pgpverify انتظار دارد دسته کلید PGP در pathetc/pgp پیدا شود (به عنوان pubring.pgp یا pubring.gpg، بسته به اینکه PGP یا GnuPG برای اعتبارسنجی امضاها استفاده شود). اگر آن دایرکتوری وجود نداشته باشد، به استفاده از دسته کلید پیش‌فرض متوسل می‌شود که در زیرپوشه .pgp یا .gnupg در پوشه خانگی کاربر اجراکننده قرار دارد.

هنگام استفاده از GnuPG، برنامه INN ابزار pgpverify را به نحوی پیکربندی می‌کند که از gpg یا gpgv استفاده کند، که این ابزارها به‌طور پیش‌فرض انتظار دارند کلیدها در یک دسته‌کلید به نام trustedkeys.gpg باشند؛ زیرا مستقیماً بررسی مدل اعتماد را انجام نمی‌دهند. برنامه pgpverify در صورت موجود بودن از آن فایل استفاده می‌کند اما اگر یافت نشود به pubring.gpg متوسل می‌شود. این امر مدل اعتماد را برای بررسی کلیدها دور می‌زند اما با شیوه رفتار پیشین pgpverify سازگار است. البته اگر یک دسته کلید در pathetc/pgp پیدا شود یا در بالای اسکریپت پیکربندی شده باشد، تمام این رفتارها را بازنویسی خواهد کرد.

توجه داشته باشید که تعداد اندکی از سلسله‌مراتب‌های یوزنت هنوز مقاله‌های کنترلی امضاشده با کلیدهای قدیمی PGP را که از یک الگوریتم درهم‌سازی ضعیف (MD5) استفاده می‌کنند ارسال می‌نمایند. نگارش‌های مدرن GnuPG (از 2.1.0 به بعد) دیگر چنین امضاهایی را تایید نمی‌کنند، بنابراین اگر به تایید چنین مقاله‌های کنترلی نیاز دارید، باید از GnuPG نسخه 1.x یا 2.0.x استفاده فرمایید.

پرچم --findid باعث می‌شود pgpverify صریحاً به دنبال string در خروجی حاصل از تحلیل پیام توسط PGP بگردد. این گزینه زمانی سودمند است که چندین شناسه کاربری (UID) روی یک کلید PGP واحد تعریف شده باشند و فراخواننده pgpverify نیاز داشته باشد بررسی کند که آیا شناسه مورد نظر روی این کلید وجود دارد یا خیر. در صورتی که امضا معتبر باشد اما حاوی string نباشد، pgpverify با وضعیت خروجی ۴ خارج می‌شود.
پرچم --test باعث می‌شود pgpverify ورودی ارسالی به PGP (که نسخه بازسازی‌شده‌ای از ورودی است که تصور می‌شود پیام کنترلی را ایجاد کرده است) و همچنین خروجی حاصل از تحلیل پیام توسط PGP را چاپ کند.

pgpverify ممکن است با وضعیت‌های زیر خارج شود:

0
پیام کنترلی دارای یک امضای معتبر PGP بود.
1
پیام کنترلی فاقد هرگونه امضای PGP بود.
2
پیام کنترلی دارای یک امضای PGP ناشناخته بود.
3
پیام کنترلی دارای یک امضای PGP نامعتبر بود.
4
پیام کنترلی دارای یک امضای معتبر PGP بود اما آرگومان ارائه‌شده به پرچم --findid در خروجی تحلیل پیام توسط PGP یافت نشد.
255
مشکلی رخ داد که ارتباط مستقیمی با تحلیل امضا توسط PGP نداشت.

pgpverify پیش از فراخوانی برنامه pgp، gpgv یا gpg متغیرهای محیطی را ویرایش یا دستکاری نمی‌کند. این مسئولیت شخصی است که pgpverify را نصب می‌کند تا اطمینان حاصل نماید هنگام اجرای pgp، gpgv یا gpg، این برنامه‌ها امکان یافتن و خواندن فایل کلید PGP را دارند که شامل کلیدهای عمومی PGP مدیران سلسله‌مراتب مناسب یوزنت است. pgpverify را می‌توان با ویرایش متغیرهای ابتدای این اسکریپت به یک دسته کلید مناسب هدایت کرد.

از نظر تاریخی، مدیران سرورهای خبری یوزنت سرورهای خود را طوری پیکربندی می‌کردند که به طور خودکار پیام‌های کنترلی یوزنت را بر اساس صادرکننده پیام کنترلی و سلسله‌مراتب‌هایی که پیام برای آنها اعمال می‌شد بپذیرند. به عنوان مثال، در گذشته David Lawrence همیشه برای سلسله‌مراتب‌های "Big 8" (شامل comp، humanities، misc، news، rec، sci، soc، talk) پیام‌های کنترلی صادر می‌کرد. مدیران اخبار یوزنت نرم‌افزار سرور خبر خود را طوری تنظیم می‌کردند که پیام‌های کنترلی newgroup و rmgroup صادرشده از سوی David Lawrence را که برای هر یک از سلسله‌مراتب‌های Big 8 اعمال می‌شد به طور خودکار بپذیرد.

متاسفانه مقالات خبری یوزنت (از جمله پیام‌های کنترلی) به سادگی قابل جعل هستند. خیلی زود کاربران مخرب دریافتند که می‌توانند با جعل ساده یک پیام کنترلی مناسب به نام David Lawrence، هر گروه خبری دلخواهی در Big 8 را (حداقل به طور موقت) ایجاد یا حذف کنند. با گسترش استفاده از یوزنت، جعل پیام‌ها رایج‌تر شد.

برنامه pgpverify طراحی شد تا به مدیران اخبار یوزنت اجازه دهد سرورهای خود را طوری پیکربندی کنند که پیش از اقدام خودکار روی پیام‌های کنترلی، آنها را به صورت رمزنگاری‌شده اعتبارسنجی نمایند. بر اساس سامانه pgpverify، نگهدارنده سلسله‌مراتب یوزنت یک جفت کلید عمومی/خصوصی PGP ایجاد کرده و کلید عمومی را منتشر می‌کند. هرگاه نگهدارنده سلسله‌مراتب پیامی کنترلی صادر کند، با استفاده از برنامه signcontrol پیام کنترلی را با کلید خصوصی PGP امضا می‌نماید. مدیران اخبار یوزنت سرورهای خود را طوری تنظیم می‌کنند که برنامه pgpverify را روی پیام‌های کنترلی مناسب اجرا کرده و اقدام لازم را بر اساس شناسه کاربری کلید PGP که پیام را امضا کرده انجام دهند، نه بر اساس نام و نشانی موجود در سرایندهای From: یا Sender: پیام کنترلی.

بنابراین، استفاده مناسب از برنامه‌های signcontrol و pgpverify اساساً احتمال جعل پیام‌های کنترلی یوزنت توسط کاربران مخرب و اقدام سایت‌ها بر اساس آنها را از میان می‌برد؛ چرا که چنین کاربرانی باید کلید خصوصی PGP را به دست آورند تا پیامی جعل کنند که از مرحله اعتبارسنجی رمزنگارانه عبور کند. اگر مدیران سلسله‌مراتب به درستی از کلیدهای خصوصی PGP خود محافظت کنند، تنها راهی که یک کاربر مخرب می‌تواند پیامی با امضای معتبر جعل کند، شکستن الگوریتم رمزنگاری کلید عمومی است که (حداقل در حال حاضر) برای کلیدهای PGP با طول بیت کافی کاری بسیار دشوار و عملاً غیرممکن تلقی می‌شود.

برنامه pgpverify توسط David C Lawrence <tale@isc.org> نوشته شده است. صفحه راهنما توسط James Ralston ارائه گردید. این برنامه در حال حاضر توسط Russ Allbery <eagle@eyrie.org> نگهداری می‌شود.

David Lawrence نوشته است: "وکیل ما به من گفت متن زیر را درج کنم. نتیجه‌اش این است که می‌توانید تا هر اندازه که مایلید به صورت رایگان از این نرم‌افزار استفاده کنید."

Copyright (c) 1996 UUNET Technologies, Inc. All rights reserved.

بازتوزیع و استفاده در قالب‌های منبع و باینری، با یا بدون تغییر، به شرط برآورده شدن شرایط زیر مجاز است:

1.
بازتوزیع کدهای منبع باید اعلان حق نشر فوق، این فهرست شرایط و سلب مسئولیت زیر را حفظ نماید.
2.
بازتوزیع‌ها در قالب باینری باید اعلان حق نشر فوق، این فهرست شرایط و سلب مسئولیت زیر را در مستندات و/یا سایر موارد ارائه‌شده همراه با توزیع بازتولید نمایند.
3.
تمام اقلام تبلیغاتی که ویژگی‌ها یا استفاده از این نرم‌افزار را ذکر می‌کنند باید قدردانی زیر را نمایش دهند:
This product includes software developed by UUNET Technologies, Inc.
4.
نام UUNET Technologies ("UUNET") نباید برای تایید یا ترویج محصولات برگرفته از این نرم‌افزار بدون مجوز کتبی قبلی استفاده شود.

THIS SOFTWARE IS PROVIDED BY UUNET "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL UUNET BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

gpg(1), gpgv(1), pgp(1).

نشانی https://ftp.isc.org/pub/pgpcontrol مکانی است که جدیدترین نسخه‌های signcontrol و pgpverify به همراه کلیدهای عمومی PGP مورد استفاده برای مدیریت سلسله‌مراتب در آن نگهداری می‌شوند.

2025-03-29 INN 2.7.4