| tpm2_policyticket(1) | General Commands Manual | tpm2_policyticket(1) |
نام (NAME)
tpm2_policyticket - اعتبارسنجی تیکت مجوزدهی در خطمشی TPM2
خلاصه دستور (SYNOPSIS)
tpm2_policyticket [گزینهها]
توضیحات (DESCRIPTION)
دستور tpm2_policyticket(1) با اعتبارسنجی تیکتی که نشاندهنده یک مجوزدهی معتبر دارای زمان انقضای مشخص است، مجوزدهی خطمشی را فعال میکند.
گزینهها (OPTIONS)
- •
- -L، --policy=FILE:
فایل ذخیره خلاصه (digest) خطمشی ترکیبشده.
- •
- -S، --session=FILE:
فایل نشست خطمشی ایجادشده از طریق گزینهٔ -S در tpm2_startauthsession(1).
- •
- -n، --name=FILE:
نام شیئی که مجوزدهی را اعتبارسنجی کرده است.
- •
- --ticket=FILE:
فایل تیکت برای ثبت ساختار تیکت مجوزدهی.
- •
- --timeout=FILE:
مسیر فایل برای ثبت ساختار مهلت زمانی (timeout) بازگرداندهشده.
- •
- -q، --qualification=FILE_OR_HEX_STR:
دادههای توصیفکننده خطمشی (policy qualifier) اختیاری که امضاکننده میتواند در امضا قرار دهد. میتواند یک رشته هگز یا یک مسیر فایل باشد.
مراجع (References)
گزینههای عمومی (COMMON OPTIONS)
این مجموعه از گزینهها میان بسیاری از برنامهها مشترک هستند و اطلاعاتی را ارائه میدهند که بسیاری از کاربران انتظار دارند.
- •
- -h، --help=[man|no-man]: نمایش صفحه راهنمای (manpage) ابزار. بهطور پیشفرض، تلاش میکند صفحهبند راهنما (manpager) را برای ابزار فراخوانی کند؛ اما در صورت عدم موفقیت، خلاصهای کوتاه از ابزار را خروجی میدهد. این رفتار مشابه زمانی است که آرگومان گزینهٔ “man” مشخص شود، اما در صورتی که بهطور صریح “man” درخواست شود، ابزار خطاهای man را در stderr ارائه میدهد. اگر گزینهٔ “no-man” مشخص شود یا صفحهبند راهنما شکست بخورد، گزینههای کوتاه به stdout فرستاده میشوند.
برای استفاده موفقیتآمیز از ویژگی صفحات راهنما، نیاز است صفحات راهنما نصب شده باشند یا در 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 استفاده شوند، باید از یک نشست نمکدار (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 و شماره درگاه (پورت) استفادهشده توسط شبیهساز میتواند مشخص شود. مقادیر پیشفرض 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 مترادف یکدیگرند. ماژولهای مختلف و شناختهشدهٔ TCTI.
مثالها (EXAMPLES)
مجاز کردن یک عملیات TPM روی شیئی که مجوزدهی آن به یک مرجع امضای خاص مقید شده است.
ایجاد مرجع امضا و بارگذاری کلید اعتبارسنجی
-
openssl genrsa -out private.pem 2048 openssl rsa -in private.pem -outform PEM -pubout -out public.pem tpm2_loadexternal -C o -G rsa -u public.pem -c signing_key.ctx \ -n signing_key.name
تولید امضا به همراه زمان انقضا
-
EXPIRYTIME="FFFFFE0C" echo $EXPIRYTIME | xxd -r -p | \ openssl dgst -sha256 -sign private.pem -out signature.dat
ایجاد خطمشی
-
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
ایجاد شیء پلمپکننده (Sealing Object)
-
tpm2_createprimary -C o -c prim.ctx -Q echo "plaintext" > secret.dat tpm2_create -u sealing_key.pub -r sealing_key.priv -c sealing_key.ctx \ -C prim.ctx -i secret.dat -L policy.signed -Q
ایجاد خطمشی قابل دریافت تیکت
-
tpm2_startauthsession -S session.ctx --nonce-tpm=nonce.test --policy-session { cat nonce.test & echo $EXPIRYTIME | xxd -r -p; } | \ openssl dgst -sha256 -sign private.pem -out signature.dat tpm2_policysigned -S session.ctx -g sha256 -s signature.dat -f rsassa \ -c signing_key.ctx -x nonce.test --ticket tic.ket --timeout time.out \ -t 0xFFFFFE0C tpm2_flushcontext session.ctx
# آزمایش با policyticket بهجای policysigned:
-
tpm2_startauthsession -S session.ctx --policy-session tpm2_policyticket -S session.ctx -n signing_key.name --ticket tic.ket \ --timeout time.out tpm2_unseal -p session:session.ctx -c sealing_key.ctx
کدهای بازگشتی (RETURNS)
ابزارها میتوانند هر یک از کدهای زیر را برگردانند:
- •
- 0 - موفقیت.
- •
- 1 - خطای عمومی و نامشخص.
- •
- 2 - خطای پردازش گزینهها.
- •
- 3 - خطای احراز اصالت.
- •
- 4 - خطای مرتبط با TCTI.
- •
- 5 - طرح پشتیبانینشده. قابل اعمال روی tpm2_testparams.
محدودیتها (LIMITATIONS)
این دستور انتظار دارد که یک نشست از قبل از طریق tpm2_startauthsession(1) برقرار شده باشد و نیازمند یکی از موارد زیر است:
- •
- دسترسی مستقیم به دستگاه
- •
- پشتیبانی از نشست توسعهیافته با tpm2-abrmd.
بدون آن، بیشتر مدیران منابع وضعیت نشست را در بین فراخوانیهای دستور ذخیره نخواهند کرد.
اشکالات (BUGS)
راهنما (HELP)
مشاهدهٔ فهرست پستی (Mailing List)
مجوز (LICENSE)
این اثر تحت مجوز بینالمللی Creative Commons Attribution 4.0 (CC BY 4.0)منتشر شده است.
| tpm2-tools |