| tpm2_policysigned(1) | General Commands Manual | tpm2_policysigned(1) |
نام (NAME)
tpm2_policysigned - فعالسازی احراز مجوز خطمشی با تایید امضای پارامترهای اختیاری TPM2
خلاصه دستور (SYNOPSIS)
tpm2_policysigned [OPTIONS]
توضیحات (DESCRIPTION)
دستور tpm2_policysigned(1) - احراز مجوز خطمشی را با اعتبارسنجی امضای پارامترهای اختیاری TPM2 فعال میکند. امضا توسط یک مرجع امضاکننده تولید میشود. پارامترهای اختیاری TPM2 عبارتند از cpHashA، nonceTPM، policyRef و expiration (زمان انقضا).
گزینهها (OPTIONS)
- •
- -L, --policy=FILE:
فایلی برای ذخیرهٔ خلاصه خطمشی مرکب (compounded policy digest).
- •
- -S, --session=FILE:
فایل نشست خطمشی ایجادشده از طریق گزینهٔ -S در tpm2_startauthsession(1).
- •
- -c, --key-context=OBJECT:
شیء زمینه برای زمینهٔ کلید مورد استفاده در عملیات. میتواند یک فایل یا یک شناسه دستگیره (handle) باشد. بخش “قالب شیء زمینه (Context Object Format)” را ببینید.
- •
- -g, --hash-algorithm=ALGORITHM:
الگوریتم درهمسازی (هش) مورد استفاده برای خلاصهسازی پیام.
- •
- -s, --signature=FILE:
فایل امضای ورودی مربوط به امضایی که باید اعتبارسنجی شود.
- •
- -f, --format=FORMAT:
تنظیم فایل امضای ورودی به یک قالب مشخص. حالت پیشفرض قالب داده TPMT_SIGNATURE مربوط به tpm2.0 است، اما اگر دادهها از یک منبع خارجی مانند OpenSSL آمده باشند میتوان طرحوارههای متفاوتی را انتخاب کرد. این ابزار در حال حاضر از rsassa و ecdsa پشتیبانی میکند.
- •
- -t, --expiration=NATURAL_NUMBER:
تنظیم زمان انقضای خطمشی بر حسب ثانیه. در صورت عدم وجود nonceTPM، زمان انقضا همان مقدار مهلت زمانی خطمشی خواهد بود. اگر مقدار انقضا عددی منفی باشد، علاوه بر آن یک بلیت احراز مجوز بازگردانده میشود. اگر مقدار انقضا 0 باشد، خطمشی هیچ محدودیت زمانی برای احراز مجوز نخواهد داشت.
- •
- --cphash-input=FILE:
هش پارامترهای دستور (cpHash)، که اجرای دستور TPM مورد احراز مجوز و همچنین مقادیر دستگیره و پارامترهای آن را الزام میکند.
- •
- --raw-data=FILE:
دادههای خام که بر اساس پارامترهای انتخابشده تولید میشوند، به عنوان ورودی برای محاسبهٔ هشی که باید امضا شود به کار میروند.
- •
- --ticket=FILE:
فایل بلیت برای ثبت ساختار بلیت احراز مجوز (authorization ticket).
- •
- --timeout=FILE:
مسیر فایل برای ثبت ساختار مهلت زمانی برگشتی.
- •
- -q, --qualification=FILE_OR_HEX_STR:
اختیاری، دادههای توصیفکنندهٔ خطمشی (policy qualifier data) که امضاکننده میتواند برای گنجاندن در امضا انتخاب کند. میتواند یک رشته هگزادسیمال یا مسیر فایل باشد.
- •
- -x, --nonce-tpm:
فعالسازی مقایسهٔ nonceTPM نشست جاری برای اطمینان از اینکه اعتبار احراز مجوز خطمشی به نشست جاری محدود است.
مراجع (References)
گزینههای عمومی (COMMON OPTIONS)
این مجموعه گزینهها میان بسیاری از برنامهها مشترک هستند و اطلاعاتی را ارائه میدهند که اغلب کاربران انتظار دارند.
- •
- -h, --help=[man|no-man]: نمایش صفحه راهنمای ابزار. بهطور پیشفرض، تلاش میکند صفحهخوان راهنما (manpager) را برای ابزار فراخوانی کند؛ اما در صورت شکست، خلاصهای کوتاه از ابزار را نمایش میدهد. اگر آرگومان گزینه “man” مشخص شود نیز همین رفتار رخ میدهد، اما اگر صریحاً “man” درخواست شود، ابزار خطاهای man را در خروجی استاندارد خطا (stderr) نشان میدهد. اگر گزینه “no-man” مشخص شود یا صفحهخوان man با شکست مواجه گردد، خلاصه گزینهها در خروجی استاندارد (stdout) چاپ خواهد شد.
استفاده موفقیتآمیز از ویژگی manpages نیازمند نصب بودن صفحات راهنما یا قرار داشتن آنها در مسیر MANPATH است؛ برای جزئیات بیشتر به man(1) مراجعه کنید.
- •
- -v, --version: نمایش اطلاعات نگارش این ابزار و TCTIهای پشتیبانیشده و سپس خروج.
- •
- -V, --verbose: افزایش میزان اطلاعاتی که ابزار حین اجرا در کنسول چاپ میکند. هنگام استفاده از این گزینه، نام فایل و شماره خط چاپ میشوند.
- •
- -Q, --quiet: بیصدا کردن خروجی عادی ابزار در خروجی استاندارد (stdout).
- •
- -Z, --enable-errata: فعالسازی اعمال اصلاحیههای اشتباهات (errata fixups). این گزینه زمانی مفید است که نیاز به اعمال یک اصلاحیه errata روی دستورات ارسالی به TPM باشد. تعریف متغیر محیطی TPM2TOOLS_ENABLE_ERRATA نیز عملکردی معادل دارد.
- •
- -z, --pwd-session: استفاده از نشست گذرواژه به جای نشست HMAC برای احراز هویت. یک گذرواژه متن خام (clear text) برای تایید عملیات به TPM ارسال میشود. از این گزینه میتوان برای جلوگیری از بروز مشکل در زمان استفاده از نشستهای بدون نمک (unsalted) در حالت OpenSSL FIPS استفاده کرد. اگر مقادیر مجاز (auth values) به کار روند، باید از یک نشست نمکدار (salted) برای احراز هویت استفاده شود.
- •
- -R, --autoflush: فعال کردن تخلیه خودکار (autoflush) برای اشیاء گذرای ایجادشده توسط دستور. اگر یک شیء والد از یک فایل زمینه بارگذاری شود، آن شیء والد گذرا نیز تخلیه خواهد شد. تخلیه خودکار همچنین در صورتی که متغیر محیطی TPM2TOOLS_AUTOFLUSH روی yes یا true تنظیم شده باشد، فعال میشود.
پیکربندی TCTI (TCTI CONFIGURATION)
رابط انتقال یا TCTI (Transmission Interface) سازوکار ارتباطی با TPM است. TCTIها را میتوان برای ارتباط با TPM از طریق بسترهای گوناگون تغییر داد.
برای کنترل TCTI، ابزارها موارد زیر را در نظر میگیرند:
- 1.
- گزینه خط فرمان -T یا --tcti
- 2.
- متغیر محیطی: TPM2TOOLS_TCTI.
نکته: گزینه خط فرمان همواره بر متغیر محیطی اولویت دارد.
TCTIهای شناختهشده کنونی عبارتند از:
- •
- tabrmd - مدیر منابع، موسوم به tabrmd. توجه داشته باشید که tabrmd و abrmd به عنوان نام tcti مترادف یکدیگرند.
- •
- mssim - معمولاً برای برقراری ارتباط با شبیهساز نرمافزاری TPM استفاده میشود.
- •
- device - هنگام برقراری ارتباط مستقیم با فایل دستگاه TPM استفاده میشود.
- •
- none - هیچ ارتباطی با TPM برقرار نمیکند. برخی ابزارها امکان استفاده از گزینههای خارج از TPM (off-tpm) را میدهند و بنابراین از عدم استفاده از TCTI پشتیبانی میکنند. ابزارهایی که از آن پشتیبانی نمیکنند، در صورت تلاش برای استفاده بدون اتصال TCTI با خطا مواجه میشوند. این مقدار از هیچ گزینهای پشتیبانی نمیکند و باید دقیقاً به صورت متن “none” ارائه شود.
آرگومانهای گزینه خط فرمان یا متغیر محیطی به شکل زیر هستند:
<tcti-name>:<tcti-option-config>
تعیین یک رشته خالی برای هر یک از بخشهای <tcti-name> یا <tcti-option-config> باعث میشود به ترتیب مقدار پیشفرض برای آن بخش استفاده شود.
پیشفرضهای TCTI (TCTI Defaults)
هنگامی که یک TCTI مشخص نشده باشد، TCTI پیشفرض با استفاده از سازوکار dlopen(3) جستجو میشود. ابزارها به دنبال TCTIهای tabrmd، device و mssim به همین ترتیب میگردند و از نخستین موردی که پیدا شد استفاده میکنند. میتوانید با استفاده از گزینه -v برای چاپ اطلاعات نگارش، متوجه شوید کدام TCTI به عنوان پیشفرض انتخاب خواهد شد. جفت کلید-مقدار “default-tcti” نشان خواهد داد کدام یک از TCTIهای پیشگفته به عنوان پیشفرض است.
TCTIهای سفارشی (Custom TCTIs)
هر TCTI که رابط پویای TCTI را پیادهسازی کند میتواند بارگذاری شود. ابزارها در داخل از dlopen(3) استفاده میکنند و مقدار خام tcti-name برای جستجو به کار میرود. بنابراین، این مقدار میتواند مسیری به کتابخانه مشترک یا نام کتابخانه به نحوی که برای سازوکار dlopen(3) قابل فهم باشد، باشد.
گزینههای TCTI (TCTI OPTIONS)
این مجموعه گزینهها برای پیکربندی ماژولهای مختلف TCTI شناختهشده در دسترس به کار میروند:
- •
- device: برای TCTI دستگاه (device)، فایل دستگاه نویسهای (character device) TPM برای استفاده توسط این TCTI قابل تعیین است. مقدار پیشفرض /dev/tpm0 است.
مثال: -T device:/dev/tpm0 یا export TPM2TOOLS_TCTI=“device:/dev/tpm0”
- •
- mssim: برای TCTI شبیهساز mssim، نام دامنه یا آدرس IP و شماره درگاه (port) مورد استفاده شبیهساز قابل تعیین است. مقادیر پیشفرض 127.0.0.1 و 2321 هستند.
مثال: -T mssim:host=localhost,port=2321 یا export TPM2TOOLS_TCTI=“mssim:host=localhost,port=2321”
- •
- abrmd: برای TCTI ابزار abrmd، قالب رشته پیکربندی مجموعهای از جفتهای کلید-مقدار ساده است که با کاراکتر `,' از هم جدا شدهاند. هر کلید و رشته مقدار با کاراکتر `=' از هم جدا میشوند.
- •
- ماژول TCTI abrmd از دو کلید پشتیبانی میکند:
- 1.
- `bus_name' : نام سرویس tabrmd روی گذرگاه (یک رشته).
- 2.
- `bus_type' : نوع نمونه dbus (یک رشته) که محدود به `session' و `system' است.
مشخص کردن نام tcti مربوط به tabrmd و رشته پیکربندی bus_name=com.example.FooBar:
-
\--tcti=tabrmd:bus_name=com.example.FooBar
مشخص کردن tcti پیشفرض (abrmd) و رشته پیکربندی bus_type=session:
-
\--tcti:bus_type=session
نکته: دو نام abrmd و tabrmd مترادف یکدیگرند.
مثالها (EXAMPLES)
احراز مجوز یک عملیات TPM روی شیئی که مجوز آن به یک مرجع امضاکنندهٔ خاص وابسته است.
ایجاد مرجع امضاکننده (Create the signing authority)
-
openssl genrsa -out private.pem 2048 openssl rsa -in private.pem -outform PEM -pubout -out public.pem
تولید امضا با تنظیم مقادیر nonceTPM، cpHashA، policyRef و expiration بر روی 0 (Generate signature with nonceTPM, cpHashA, policyRef and expiration set to 0)
-
echo "00 00 00 00" | xxd -r -p | \ openssl dgst -sha256 -sign private.pem -out signature.dat
بارگذاری کلید اعتبارسنجی و ایجاد خطمشی policysigned (Load the verification key and Create the policysigned policy)
-
tpm2_loadexternal -C o -G rsa -u public.pem -c signing_key.ctx tpm2_startauthsession -S session.ctx tpm2_policysigned -S session.ctx -g sha256 -s signature.dat -f rsassa \ -c signing_key.ctx -L policy.signed tpm2_flushcontext session.ctx
ایجاد یک شیء مهرومومکننده برای استفاده از policysigned (Create a sealing object to use the policysigned)
-
echo "plaintext" > secret.data tpm2_createprimary -C o -c prim.ctx tpm2_create -u key.pub -r sealing_key.priv -c sealing_key.ctx -C prim.ctx \ -i secret.data -L policy.signed
برآورده ساختن خطمشی و باز کردن مهروموم راز (Satisfy the policy and unseal secret)
-
tpm2_startauthsession -S session.ctx --policy-session tpm2_policysigned -S session.ctx -g sha256 -s signature.dat -f rsassa \ -c signing_key.ctx -L policy.signed tpm2_unseal -p session:session.ctx -c sealing_key.ctx tpm2_flushcontext session.ctx
کدهای خروجی (RETURNS)
ابزارها میتوانند هر یک از کدهای زیر را بازگردانند:
- •
- 0 - موفقیتآمیز.
- •
- 1 - خطای عمومی و نامشخص.
- •
- 2 - خطای مدیریت گزینهها.
- •
- 3 - خطای احراز هویت.
- •
- 4 - خطای مربوط به TCTI.
- •
- 5 - طرحواره پشتیبانینشده (Non supported scheme). مربوط به tpm2_testparams.
محدودیتها (LIMITATIONS)
این دستور انتظار دارد که یک نشست از پیش با استفاده از tpm2_startauthsession(1) برقرار شده باشد و نیازمند یکی از موارد زیر است:
- •
- دسترسی مستقیم به دستگاه
- •
- پشتیبانی از نشست توسعهیافته با tpm2-abrmd.
بدون آن، اکثر مدیران منابع وضعیت نشست را بین فراخوانیهای دستور ذخیره نخواهند کرد.
اشکالات (BUGS)
راهنما (HELP)
مشاهده فهرست پستی (Mailing List)
مجوز (LICENSE)
این اثر تحت مجوز کریتیو کامنز ارجاع ۴.۰ بینالمللی (CC BY 4.0) منتشر شده است.
| tpm2-tools |