VOA(5) File Formats Manual VOA(5)

voa - قالب فایل پیکربندی برای بک‌اندهای فناوری VOA

یک فایل پیکربندی YAML که تنظیمات سطح OS (سیستم‌عامل) یا سطح context (زمینه) را برای بک‌اندهای فناوری مورد استفاده در سلسله‌مراتب فایل برای اعتبارسنجی مصنوعات سیستم‌عامل (VOA[1]) کدگذاری می‌کند.

هر فایل پیکربندی یک شناسه OS مربوط به VOA را در نام فایل خود دنبال می‌کند (برای نمونه، “arch.yaml” برای سیستم‌عامل “arch”، “debian:13.yaml” برای سیستم‌عامل “debian:13” - برای جزئیات در مورد نویسه‌های مجاز به مشخصات VOA مراجعه کنید).

هر فایل پیکربندی برای در نظر گرفته شدن باید یک فایل معمولی (regular file) باشد.

مدیریت فایل‌های پیکربندی بر اساس مشخصات فایل‌های پیکربندی[2] است.

برای کاربران سیستمی، فایل‌های voa از دایرکتوری‌های سیستمی VOA یعنی “/usr/share/voa/” و “/usr/local/share/voa/”، دایرکتوری فرار زمان اجرا “/run/voa/” و دایرکتوری مدیریت محلی “/etc/voa/” خوانده می‌شوند. برای کاربران واقعی، افزون بر دایرکتوری‌های پیکربندی سراسری سیستم، فایل‌های voa از دایرکتوری‌های “voa/” در “$XDG_CONFIG_DIRS” و از دایرکتوری “voa/” در “$XDG_CONFIG_HOME” نیز خوانده می‌شوند (به مشخصات دایرکتوری پایه XDG[3] مراجعه کنید).

ترتیب دایرکتوری‌های پیش‌گفته، حق تقدم را با اولویت فزاینده توصیف می‌کند. یک فایل از دایرکتوری با اولویت بالاتر، فایلی از دایرکتوری با اولویت پایین‌تر را به‌طور کامل جایگزین می‌کند (برای نمونه، “/etc/voa/example.yaml” جایگزین “/usr/share/voa/example.yaml” می‌شود، “~/.config/voa/example.yaml” جایگزین “/etc/voa/example.yaml” می‌شود).

قالب فایل پیکربندی voa می‌تواند در فایل‌های پیکربندی قطره‌ای (drop-in) نیز استفاده شود. یک دراپ‌این برای یک OS خاص با افزودن یک فایل پیکربندی voa در یک دایرکتوری بازنویسی (override) در یکی از دایرکتوری‌های پیکربندی ایجاد می‌شود (برای نمونه، “/etc/voa/example.yaml.d/99-custom-repo.yaml” که تنظیماتی را برای یک مخزن سفارشی در سیستم‌عامل “example” ارائه می‌دهد و بر تنظیمات عمومی‌تر فناوری OS در “/usr/share/voa/example.yaml” اولویت دارد). توجه داشته باشید که پیکربندی‌های دراپ‌این بر اساس نام فایل خود به ترتیب الفبایی خوانده می‌شوند، صرف‌نظر از اولویت دایرکتوری محل قرارگیری آن‌ها.

هر فایل پیکربندی voa را می‌توان با ایجاد یک پیوند نمادین به /dev/null در جای آن ماسک کرد (برای نمونه، “/etc/voa/example.yaml -> /dev/null” باعث می‌شود فایل “/usr/share/voa/example.yaml” در نظر گرفته نشود).

هنگام استخراج تنظیمات فناوری سطح OS یا سطح context از فایل‌های پیکربندی voa، ممکن است پیش‌فرض‌های توکار در نظر گرفته شوند.

پس از خواندن تمام فایل‌های پیکربندی و فایل‌های دراپ‌این، تنظیمات فناوری موجود در سطح OS از آن‌ها ساخته می‌شوند و فیلدهای تنظیم‌نشده با استفاده از تنظیمات موجود سطح OS یا پیش‌فرض‌های توکار مقداردهی می‌شوند.

در نهایت، تنظیمات فناوری سطح context از فایل‌های پیکربندی و فایل‌های دراپ‌این ساخته می‌شوند و فیلدهای تنظیم‌نشده - بسته به در دسترس بودن - با پیش‌فرض‌های سطح OS یا پیش‌فرض‌های توکار پر می‌شوند.

نکته: منطق ادغام زیر - مگر آنکه خلاف آن تصریح شده باشد - برای تمام فیلدهای اختیاری در اشیاء فایل پیکربندی اعمال می‌شود: اگر یک فیلد اختیاری حذف شود یا روی null تنظیم گردد، مقدار مشخصی برای آن از سطح OS یا در صورت عدم ارائه در آنجا، از پیش‌فرض‌های توکار مشتق می‌شود. اگرچه این قابلیت امکان منطق بازنویسی و ارث‌بری غنی را فراهم می‌کند، اما ضرورت صریح بودن در مواقع لزوم را نیز ایجاب می‌کند!

اگر یک OS توسط یک فایل پیکربندی یا دراپ‌این مشخص پوشش داده نشده باشد، پیش‌فرض‌های توکار اعمال می‌شوند.

فایل باید حاوی داده‌های معتبر YAML باشد و تمام فیلدها و مقادیر الزامی که در ادامه توصیف می‌شوند باید وجود داشته باشند. فایل‌های نامعتبر voa نادیده گرفته می‌شوند.

شیء سطح بالا در فایل که شامل اشیاء گزینه‌ها برای هر بک‌اند فناوری موجود مورد استفاده در VOA است.

هشدار: برای اینکه فایل voa در کل معتبر تلقی شود، اگر فهرست “contexts” خالی باشد، این شیء باید تعریف شود!

این شیء تنظیمات بک‌اند OpenPGP را توصیف می‌کند. اعتبارسنجی بر پایه امضاهای OpenPGP[4] و گواهی‌های OpenPGP[5] است. چندین روش اعتبارسنجی در دسترس است.

تعداد اختیاری از امضاهای OpenPGP صادره از گواهی‌های OpenPGP صادرکننده مجزا که برای تأیید یک مصنوع لازم است.

در صورت تنظیم، این مقدار باید یک عدد صحیح مثبت و غیرصفر باشد (پیش‌فرض توکار: 1).

روشی که برای اعتبارسنجی امضاهای OpenPGP با استفاده از گواهی‌های OpenPGP به کار می‌رود. مقدار باید یکی از اشیاء زیر باشد.

روش اعتبارسنجی ساده یا “plain” برای امضاهای OpenPGP یک شکل پایه از اعتبارسنجی است که تنها اعتبارسنج‌های مصنوع را لحاظ می‌کند و هیچ لنگر اعتمادی را در نظر نمی‌گیرد. با استفاده از آن، یک یا چند مورد از اعتبارسنج‌های مصنوع یافته‌شده برای یک پرس‌وجوی اعتبارسنجی باید برای اعتبارسنجی موفق یک یا چند امضای OpenPGP به کار روند.

برای محدود کردن مجموعه گواهی‌های OpenPGP مجاز به عنوان اعتبارسنج مصنوع، می‌توان آن را با تطبیق نام دامنه در برابر شناسه‌های کاربری معتبر OpenPGP[6] و/یا اثرانگشت OpenPGP[7] فیلتر کرد. اگر هیچ فیلتری تعریف نشود، تمام گواهی‌های OpenPGP یافت‌شده در مکان اعتبارسنج مصنوع یک context مفروض، به عنوان اعتبارسنج مصنوع در نظر گرفته می‌شوند.

مجموعه‌ای اختیاری از نام‌های دامنه معتبر که برای فیلتر کردن اعتبارسنج‌های مصنوع به کار می‌رود.

اگر مجموعه دارای ورودی باشد، یک گواهی OpenPGP معتبر یافت‌شده در مکان اعتبارسنج مصنوع یک context مفروض تنها در صورتی لحاظ می‌شود که یکی از شناسه‌های کاربری معتبر OpenPGP User ID آن با یکی از نام‌های دامنه مطابقت داشته باشد.

اگر مجموعه خالی باشد (پیش‌فرض توکار)، هیچ فیلترکردنی بر پایه نام‌های دامنه صورت نمی‌گیرد و هر گواهی OpenPGP معتبر یافت‌شده در مکان اعتبارسنج مصنوع یک context مفروض در نظر گرفته می‌شود (با فرض اینکه فیلتر دیگری مانع آن نشود).

مجموعه‌ای اختیاری از اثرهای انگشت OpenPGP که برای فیلتر کردن اعتبارسنج‌های مصنوع به کار می‌رود.

هشدار: تعداد ورودی‌های این مجموعه باید برابر یا بیشتر از تعداد امضاهای داده مورد نیاز باشد (نگاه کنید به “num_data_signatures”) تا روش اعتبارسنجی در کل معتبر در نظر گرفته شود!

اگر مجموعه دارای ورودی باشد، یک گواهی OpenPGP معتبر یافت‌شده در مکان اعتبارسنج مصنوع یک context مفروض تنها در صورتی لحاظ می‌شود که اثرانگشت OpenPGP آن با یکی از اثرهای انگشت مجموعه مطابقت داشته باشد.

اگر مجموعه خالی باشد (پیش‌فرض توکار)، هیچ فیلتری بر اساس اثرانگشت رخ نمی‌دهد و هر گواهی OpenPGP معتبر یافت‌شده در مکان اعتبارسنج مصنوع یک context مفروض لحاظ می‌شود (با فرض اینکه فیلتر دیگری مانع آن نشود).

روش اعتبارسنجی لنگر اعتماد یا “trust anchor” برای امضاهای OpenPGP یک شکل پایه از اعتبارسنجی مبتنی بر لنگر اعتماد است که هنگام اعتبارسنجی امضا، هم اعتبارسنج‌های مصنوع و هم لنگرهای اعتماد را لحاظ می‌کند. با استفاده از آن، هر اعتبارسنج مصنوع باید توسط تعداد مشخصی از لنگرهای اعتماد موجود تأیید (certified) شده باشد تا برای اعتبارسنجی امضاهای OpenPGP در نظر گرفته شود.

برای محدود کردن مجموعه گواهی‌های OpenPGP معتبر مجاز به عنوان اعتبارسنج مصنوع، می‌توان آن را با تطبیق نام دامنه در برابر شناسه‌های کاربری معتبر OpenPGP User ID فیلتر کرد. برای محدود کردن مجموعه گواهی‌های OpenPGP معتبر مجاز به عنوان لنگر اعتماد، می‌توان آن را بر اساس اثرهای انگشت OpenPGP فیلتر نمود.

تعداد اختیاری از تأییدیه‌های شخص ثالث OpenPGP[8] لنگرهای اعتماد روی اعتبارسنج‌های مصنوع، تا یک اعتبارسنج مصنوع کاملاً مورد اعتماد در نظر گرفته شود. در صورت تنظیم، این مقدار باید یک عدد صحیح مثبت و غیرصفر باشد (پیش‌فرض توکار: 3).

مجموعه‌ای اختیاری از نام‌های دامنه معتبر که برای فیلتر کردن اعتبارسنج‌های مصنوع استفاده می‌شود.

اگر مجموعه دارای ورودی باشد، یک گواهی OpenPGP معتبر یافت‌شده در مکان اعتبارسنج مصنوع یک context مفروض تنها در صورتی لحاظ می‌شود که یکی از شناسه‌های کاربری معتبر OpenPGP User ID آن با یکی از نام‌های دامنه موجود در مجموعه تطابق داشته باشد و تعداد لازم از تأییدیه‌های شخص ثالث OpenPGP از لنگرهای اعتماد معتبر را داشته باشد.

اگر مجموعه خالی باشد (پیش‌فرض توکار)، هیچ فیلتری بر پایه نام دامنه انجام نمی‌شود و هر گواهی OpenPGP معتبر یافت‌شده در مکان اعتبارسنج مصنوع که دست‌کم یک شناسه کاربری OpenPGP User ID با تعداد لازم از تأییدیه‌های شخص ثالث OpenPGP از لنگرهای اعتماد معتبر داشته باشد، در نظر گرفته می‌شود.

مجموعه‌ای اختیاری از اثرهای انگشت OpenPGP که برای فیلتر کردن لنگرهای اعتماد به کار می‌رود.

هشدار: تعداد ورودی‌های این مجموعه باید برابر یا بیشتر از تعداد گواهینامه‌های الزامی باشد (نگاه کنید به “required_certifications”) تا روش اعتبارسنجی در کل معتبر تلقی شود!

اگر مجموعه دارای ورودی باشد، یک گواهی OpenPGP معتبر یافت‌شده در مکان لنگر اعتماد یک context مفروض تنها در صورتی لحاظ می‌شود که اثرانگشت OpenPGP آن با یکی از اثرهای انگشت موجود در مجموعه مطابقت داشته باشد.

اگر مجموعه خالی باشد (پیش‌فرض توکار)، هیچ فیلتری بر پایه اثرانگشت رخ نمی‌دهد و هر گواهی OpenPGP معتبر یافت‌شده در مکان لنگر اعتماد یک context مفروض در نظر گرفته می‌شود.

روش اعتبارسنجی شبکه اعتماد (Web of Trust)[9] برای امضاهای OpenPGP شکل انعطاف‌پذیری از اعتبارسنجی مبتنی بر اعتماد است که به الگوریتم بربلوم (Berblom algorithm)[10] متکی است. این روش هم اعتبارسنج‌های مصنوع و هم لنگرهای اعتماد را لحاظ می‌کند. با آن، هر اعتبارسنج مصنوع باید به میزان اعتماد قابل تنظیمی برسد تا برای اعتبارسنجی امضاهای OpenPGP در نظر گرفته شود. در اینجا، میزان اعتماد توسط شبکه “Web of Trust” محاسبه می‌شود که به ریشه‌های اعتماد ضمنی یا صریح و مقادیر اعتماد قابل تنظیم برای معرفی‌کنندگان با اعتماد نسبی در شبکه متکی است.

برای محدود کردن مجموعه گواهی‌های OpenPGP معتبر مجاز به عنوان اعتبارسنج مصنوع، می‌توان آن را با تطبیق نام دامنه در برابر شناسه‌های کاربری معتبر OpenPGP User ID فیلتر کرد. برای محدود کردن مجموعه گواهی‌های OpenPGP معتبر مجاز به عنوان لنگر اعتماد، می‌توان آن را با اثرهای انگشت OpenPGP فیلتر نمود.

مقدار اعتماد اختیاری مورد نیاز برای یک جریان در شبکه “Web of Trust” تا کاملاً مورد اعتماد در نظر گرفته شود. این نشان‌دهنده مقدار اعتماد هدفی است که یک اعتبارسنج مصنوع باید به آن برسد تا برای اعتبارسنجی امضاهای OpenPGP لحاظ گردد.

در صورت تنظیم، این مقدار باید یک عدد صحیح مثبت و غیرصفر باشد (پیش‌فرض توکار: 120).

مقدار اعتماد اختیاری برای یک معرفی‌کننده با اعتماد نسبی در یک شبکه “Web of Trust”. این نشان‌دهنده میزان اعتماد یک گواهی OpenPGP است که در مسیری میان لنگر اعتماد و اعتبارسنج مصنوع در نظر گرفته می‌شود.

در صورت تنظیم، این مقدار باید یک عدد صحیح میان 1 و 120 باشد (پیش‌فرض توکار: 40).

مجموعه‌ای از ریشه‌های اعتماد برای “Web of Trust”. هر شیء در این مجموعه نشان‌دهنده یک گواهی OpenPGP است که به عنوان ریشه اعتماد در کنار میزان اعتماد ویژه خود لحاظ می‌شود.

هر ریشه اعتماد یک شیء با دو فیلد زیر است:

  • “fingerprint”: یک اثرانگشت OpenPGP.
  • “amount”: میزان اعتماد اختیاری اختصاص‌یافته به ریشه اعتماد. در صورت تنظیم، مقدار باید یک عدد صحیح میان 1 و 120 باشد (پیش‌فرض توکار: 120).
نکته: اگر این فیلد حذف شود، مقدار مشخصی از پیش‌فرض‌های توکار مشتق می‌گردد.

اگر این مجموعه دارای ورودی باشد، یک گواهی OpenPGP معتبر یافت‌شده در مکان لنگر اعتماد در سلسله‌مراتب VOA برای یک context مفروض، در صورتی به عنوان ریشه اعتماد با مقدار اعتماد معین لحاظ می‌شود که اثرانگشت OpenPGP آن با مقدار یکی از “fingerprint”های موجود در مجموعه مطابقت کند.

اگر مجموعه خالی باشد، هر گواهی OpenPGP معتبر یافت‌شده در مکان لنگر اعتماد در سلسله‌مراتب VOA برای یک context مفروض به عنوان ریشه اعتماد با میزان اعتماد 120 در نظر گرفته می‌شود.

مجموعه‌ای اختیاری از نام‌های دامنه معتبر که برای فیلتر کردن اعتبارسنج‌های مصنوع به کار می‌رود.

اگر این مجموعه دارای ورودی باشد، یک گواهی OpenPGP معتبر یافت‌شده در مکان اعتبارسنج مصنوع یک context مفروض تنها در صورتی لحاظ می‌شود که یکی از شناسه‌های کاربری معتبر OpenPGP User ID آن با یکی از نام‌های دامنه مجموعه مطابقت داشته و به میزان اعتماد هدف مورد نیاز دست یافته باشد (نگاه کنید به “flow_amount”).

اگر مجموعه خالی باشد، هیچ فیلترکردنی بر پایه نام‌های دامنه رخ نمی‌دهد و هر گواهی OpenPGP معتبر یافت‌شده در مکان اعتبارسنج مصنوع که دست‌کم یک شناسه کاربری OpenPGP User ID با میزان اعتماد هدف مورد نیاز داشته باشد (نگاه کنید به “flow_amount”) در نظر گرفته می‌شود.

فهرستی از صفر یا چند شیء که هر یک بازنویسی در سطح context را برای تنظیمات فناوری تحمیل‌شده توسط OS (در صورت وجود) یا پیش‌فرض‌های توکار ارائه می‌دهند.

هشدار: برای اینکه فایل voa در کل معتبر باشد، در صورتی که این فهرست خالی باشد یا فیلد تنظیم نشده باشد، شیء “default_technology_settings” باید تعریف شده باشد!

هدف (purpose) مربوط به VOA برای OS مورد نظر. برای جزئیات در مورد نویسه‌های مجاز به مشخصات VOA مراجعه فرمایید.

زمینه (context) مربوط به VOA برای OS مورد نظر. برای جزئیات در مورد نویسه‌های مجاز به مشخصات VOA مراجعه کنید.

تنظیمات فناوری برای “purpose” و “context” مربوط به OS هدف‌گذاری‌شده توسط نام فایل پیکربندی (یا نام دایرکتوری دراپ‌این).

تنظیمات موجود در این شیء بر تنظیمات کمتر خاص سطح OS یا تنظیمات فناوری توکار اولویت دارند. برای مروری بر شیء مورد انتظار، به بخش “default_technology_settings” مراجعه کنید.

موارد زیر پیش‌فرض‌های توکار را برای تنظیمات فناوری نشان می‌دهند.

default_technology_settings:
  openpgp:
    num_data_signatures: 1
    verification_method:
      trust_anchor:
        required_certifications: 3
        artifact_verifier_identity_domain_matches:
        trust_anchor_fingerprint_matches:

این پیکربندی روش پایه “trust anchor” را برای OpenPGP هدف قرار می‌دهد و به یک امضای داده برای مصنوعات و دست‌کم سه تأییدیه روی اعتبارسنج‌های مصنوع از سوی لنگرهای اعتماد نیاز دارد.

مجموعه تطبیق‌های نام دامنه برای اعتبارسنج‌های مصنوع و تطبیق‌های اثرانگشت OpenPGP برای لنگرهای اعتماد عمداً خالی گذاشته شده‌اند، به این معنی که هیچ محدودیت خاصی روی آن اعتبارسنج‌ها اعمال نمی‌شود.

نمونه پیکربندی زیر روش اعتبارسنجی “plain” را برای OpenPGP هدف قرار می‌دهد.

default_technology_settings:
  openpgp:
    num_data_signatures: 1
    verification_method:
      plain:
        identity_domain_matches:
          - example.org
          - sub.example.org
        fingerprint_matches:
          - d3b0f7c0b825ecbb0f0d7398072947e7b1537b6f
          - e242ed3bffccdf271b7fbaf34ed72d089537b42f
          - f1d2d2f924e986ac86fdf7b36c94bcdf32beec15

با این فرض که محتوای بالا در فایل “/usr/share/voa/example.yaml” قرار دارد، برای سیستم‌عامل OS “example” قواعد اعتبارسنجی زیر اعمال می‌شود:

یک امضای داده منفرد از یک اعتبارسنج مصنوع معتبر برای تأیید مصنوعات الزامی است. افزون بر این، محدودیت‌های زیر روی گواهی‌های OpenPGP یافت‌شده در مکان اعتبارسنج مصنوع یک context خاص اعمال می‌شود تا معتبر شناخته شوند:

  • یک شناسه کاربری معتبر OpenPGP User ID باید با دامنه “example.org” یا “sub.example.org” مطابقت داشته باشد.
  • مقدار اثرانگشت OpenPGP باید با یکی از مقادیر “d3b0f7c0b825ecbb0f0d7398072947e7b1537b6f”، “e242ed3bffccdf271b7fbaf34ed72d089537b42f” یا “f1d2d2f924e986ac86fdf7b36c94bcdf32beec15” مطابقت کند.

نمونه پیکربندی زیر روش پایه اعتبارسنجی “trust anchor” را برای OpenPGP هدف قرار می‌دهد.

default_technology_settings:
  openpgp:
    num_data_signatures: 1
    verification_method:
      trust_anchor:
        required_certifications: 3
        artifact_verifier_identity_domain_matches:
          - example.org
          - sub.example.org
        trust_anchor_fingerprint_matches:
          - d3b0f7c0b825ecbb0f0d7398072947e7b1537b6f
          - e242ed3bffccdf271b7fbaf34ed72d089537b42f
          - f1d2d2f924e986ac86fdf7b36c94bcdf32beec15

با این فرض که محتوای بالا در فایل “/usr/share/voa/example.yaml” قرار دارد، برای سیستم‌عامل OS “example” قواعد اعتبارسنجی زیر اعمال می‌شود:

یک امضای داده منفرد از یک اعتبارسنج مصنوع معتبر برای تأیید مصنوعات لازم است. هر اعتبارسنج مصنوع باید توسط سه لنگر اعتماد تأیید شده باشد.

یک شناسه کاربری معتبر OpenPGP User ID از یک گواهی OpenPGP معتبر یافت‌شده در مکان اعتبارسنج مصنوع یک context خاص باید با دامنه “example.org” یا “sub.example.org” مطابقت داشته باشد تا آن گواهی به عنوان اعتبارسنج مصنوع در نظر گرفته شود.

مقدار اثرانگشت OpenPGP از یک گواهی OpenPGP معتبر یافت‌شده در مکان لنگر اعتماد یک context خاص باید با یکی از مقادیر “d3b0f7c0b825ecbb0f0d7398072947e7b1537b6f”، “e242ed3bffccdf271b7fbaf34ed72d089537b42f” یا “f1d2d2f924e986ac86fdf7b36c94bcdf32beec15” مطابقت داشته باشد تا آن گواهی به عنوان لنگر اعتماد لحاظ گردد.

نمونه پیکربندی زیر روش اعتبارسنجی “Web of Trust” را برای OpenPGP هدف قرار می‌دهد.

default_technology_settings:
  openpgp:
    num_data_signatures: 1
    verification_method:
      web_of_trust:
        flow_amount: 120
        partial_amount: 40
        roots:
          - fingerprint: d3b0f7c0b825ecbb0f0d7398072947e7b1537b6f
            amount: 120
          - fingerprint: e242ed3bffccdf271b7fbaf34ed72d089537b42f
            amount: 120
          - fingerprint: f1d2d2f924e986ac86fdf7b36c94bcdf32beec15
            amount: 120
        artifact_verifier_identity_domain_matches:
          - example.org
          - sub.example.org

با این فرض که محتوای بالا در فایل “/usr/share/voa/example.yaml” قرار دارد، برای سیستم‌عامل OS “example” قواعد اعتبارسنجی زیر اعمال می‌شود:

یک امضای داده منفرد از یک اعتبارسنج مصنوع معتبر برای تأیید مصنوعات لازم است.

به هر معرفی‌کننده با اعتماد نسبی در شبکه “Web of Trust” مقدار اعتماد 40 اختصاص داده می‌شود. میزان اعتماد مورد نیاز برای یک گواهی OpenPGP معتبر یافت‌شده در مکان اعتبارسنج مصنوع یک context مفروض تا کاملاً مورد اعتماد در نظر گرفته شده و در نتیجه به عنوان اعتبارسنج مصنوع لحاظ شود، برابر با 120 است.

مقدار اثرانگشت OpenPGP از یک گواهی OpenPGP معتبر یافت‌شده در مکان لنگر اعتماد یک context خاص باید با یکی از مقادیر “d3b0f7c0b825ecbb0f0d7398072947e7b1537b6f”، “e242ed3bffccdf271b7fbaf34ed72d089537b42f” یا “f1d2d2f924e986ac86fdf7b36c94bcdf32beec15” مطابقت داشته باشد تا آن گواهی به عنوان لنگر اعتماد لحاظ گردد. به هر یک از این لنگرهای اعتماد منطبق، مقدار اعتماد 120 اختصاص داده می‌شود.

موارد زیر نمونه‌ای از تنظیمات فناوری در سطح OS و سطح context را نشان می‌دهد که بر روش اعتبارسنجی پایه “trust anchor” برای OpenPGP متکی است. فرض بر این است که این محتوا در فایل “/usr/share/voa/example.yaml” قرار دارد و بنابراین سیستم‌عامل OS “example” را هدف قرار می‌دهد.

default_technology_settings:
  openpgp:
    num_data_signatures: 2
    verification_method:
      trust_anchor:
        artifact_verifier_identity_domain_matches:
          - example.org
        trust_anchor_fingerprint_matches:
          - 6132b58967cf1ebc05062492c17145e5ee9f82a8
          - 6eadeac2dade6347e87c0d24fd455feffa7069f0
          - b787a81c32997fd39a5f4c0188363902d3586e7b
          - d3b0f7c0b825ecbb0f0d7398072947e7b1537b6f
          - e242ed3bffccdf271b7fbaf34ed72d089537b42f
contexts:
  - purpose: package
    context: default
    technology_settings:
      openpgp:
        verification_method:
          trust_anchor:
            required_certifications: 4
            artifact_verifier_identity_domain_matches:
              - packages.example.org
  - purpose: image
    context: installation-medium
    technology_settings:
      openpgp:
        num_data_signatures: 1
        verification_method:
          trust_anchor:
            artifact_verifier_identity_domain_matches:
              - install.example.org

اگر سیستمی که از این فایل پیکربندی استفاده می‌کند هیچ فایل voa دیگری نداشته باشد، پیش‌فرض‌های توکار برای هر فیلد تنظیم‌نشده در تنظیمات فناوری سطح OS اعمال می‌شوند و تنظیمات فناوری سطح OS برای هر فیلد تنظیم‌نشده در تنظیمات فناوری سطح context اعمال می‌گردند.

مثال بالا نشان می‌دهد که چگونه پیش‌فرض‌های سطح OS در صورتی که در تنظیمات خاص‌تر سطح context تعیین نشده باشند، به ارث می‌رسند. برای نمونه، مقدار “trust_anchor_fingerprint_matches” در پیش‌فرض‌های سطح OS برای تنظیمات فناوری سطح context نیز اعمال می‌شود.

به همین ترتیب، فیلدهای موجود در تنظیمات فناوری سطح context می‌توانند پیش‌فرض‌های سطح OS را بازنویسی کنند. در مثال بالا، مقدار “num_data_signatures” در سطح OS روی 2 تنظیم شده است، اما یکی از زمینه‌ها (contexts) آن را بازنویسی کرده و فقط به 1 امضا نیاز دارد. به طور مشابه، مقدار “required_certifications” در یکی از زمینه‌ها به جای مقدار سطح OS که 3 است (که خود از پیش‌فرض‌های توکار مشتق شده)، به 4 بازنویسی شده است.

هنگامی که تنها تنظیمات در سطح context ارائه می‌شوند، کلید سطح بالای “default_technology_settings” می‌تواند حذف شود.

نمونه پیکربندی زیر روش اعتبارسنجی “plain” را برای OpenPGP هدف قرار می‌دهد. فرض بر این است که این محتوا در فایل “/etc/voa/example.yaml.d/90-my-repo.yaml” قرار دارد و سیستم‌عامل OS “example” را هدف قرار می‌دهد.

contexts:
  - purpose: package
    context: my-repo
    technology_settings:
      openpgp:
        num_data_signatures: 1
        verification_method:
          plain:
            identity_domain_matches:
              - other.org
            fingerprint_matches:
              - bea43e7033e19327183416f23fe2ee1b64c25f4a

با این فرض که پیکربندی شرح داده شده در مثال سطح سیستم‌عامل و سطح زمینه (OS-level and context-level) نیز روی سیستم وجود داشته باشد، این پیکربندی یک حالت خاص برای یک مخزن بسته واحد با نام “my-repo” را توصیف می‌کند. تنظیمات فناوری اعمال‌شده توسط سیستم‌عامل OS “example” بازنویسی شده و مجموعه متفاوتی از قواعد اعتبارسنجی اعمال می‌شوند:

  • تنها یک امضای داده از اعتبارسنج‌های مصنوع معتبر برای هر مصنوع لازم است.
  • محدودیت‌های زیر توسط فیلترها روی اعتبارسنج‌ها اعمال می‌شوند:
  • گواهی‌های معتبر OpenPGP یافت‌شده در مکان‌های مربوطه تنها در صورتی به عنوان اعتبارسنج مصنوع لحاظ می‌شوند که اثرانگشت OpenPGP آن‌ها با “bea43e7033e19327183416f23fe2ee1b64c25f4a” مطابقت داشته باشد.
  • گواهی‌های معتبر OpenPGP یافت‌شده در مکان‌های مربوطه تنها در صورتی به عنوان اعتبارسنج مصنوع لحاظ می‌شوند که یکی از شناسه‌های کاربری معتبر OpenPGP User ID آن‌ها با نام دامنه “other.org” تطابق داشته باشد.

voa(1)

1.
VOA
https://uapi-group.org/specifications/specs/file_hierarchy_for_the_verification_of_os_artifacts
2.
Configuration Files Specification
https://uapi-group.org/specifications/specs/configuration_files_specification
3.
XDG Base Directory Specification
https://specifications.freedesktop.org/basedir/latest
4.
OpenPGP signature
https://openpgp.dev/book/signatures.html
5.
OpenPGP certificate
https://openpgp.dev/book/certificates.html
6.
OpenPGP User ID
https://openpgp.dev/book/certificates.html#user-ids
7.
OpenPGP fingerprint
https://openpgp.dev/book/certificates.html#fingerprint
8.
OpenPGP third-party certifications
https://openpgp.dev/book/signing_components.html#third-party-certifications
9.
Web of Trust
https://codeberg.org/openpgp/wot
10.
Berblom algorithm
https://codeberg.org/Nukesor/berblom