tpm2_policyauthvalue(1) General Commands Manual tpm2_policyauthvalue(1)

tpm2_policyauthvalue - الزام به اعتبارسنجی مقدار مجوزدهی در خط‌مشی TPM2

tpm2_policyauthvalue [گزینه‌ها]

دستور tpm2_policyauthvalue(1) - خط‌مشی‌ای را فعال می‌کند که ارائه عبارت عبور (گذرواژه) احراز هویت شیء را الزامی می‌سازد. این عمل معادل احراز هویت با استفاده از عبارت عبور شیء به صورت متن خام (plaintext) یا HMAC است. این دستور آن را به عنوان یک خط‌مشی اعمال می‌کند. همچنین سازوکاری را برای فراهم کردن امکان احراز هویت با گذرواژه در شرایطی که شیء تنها اجازهٔ مجوزدهی مبتنی بر خط‌مشی را می‌دهد (یعنی زمانی که ویژگی “userwithauth” برابر با 0 است)، فراهم می‌آورد.

•
-L, --policy=FILE:

فایلی برای ذخیره خلاصه خط‌مشی ترکیب‌شده (compounded policy digest).

•
-S, --session=FILE:

فایل نشست خط‌مشی ایجادشده از طریق گزینهٔ -S در دستور tpm2_startauthsession(1).

•
--cphash=FILE

مسیر فایل برای ذخیره هش پارامترهای دستور. این مقدار معمولاً cpHash نامیده می‌شود. نکته: هنگام انتخاب این گزینه، ابزار در واقع دستور را اجرا نخواهد کرد و صرفاً مقدار cpHash را برمی‌گرداند.

این مجموعه گزینه‌ها میان بسیاری از برنامه‌ها مشترک هستند و اطلاعاتی را ارائه می‌دهند که اغلب کاربران انتظار دارند.

•
-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 (کوتاه‌شده‌ی “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 پیش‌فرض با استفاده از قواعد معنایی dlopen(3) جستجو می‌شود. ابزارها TCTIهای tabrmd، device و mssim را به همین ترتیب جستجو کرده و از نخستین مورد یافت‌شده استفاده می‌کنند. می‌توانید با استفاده از گزینه -v برای چاپ اطلاعات نگارش، بررسی کنید کدام TCTI به عنوان پیش‌فرض انتخاب خواهد شد. جفت کلید-مقدار “default-tcti” نشان می‌دهد که کدام‌یک از TCTIهای یادشده پیش‌فرض است.

هر TCTI که رابط پویای TCTI را پیاده‌سازی کرده باشد قابل بارگذاری است. ابزارها در لایه درونی از dlopen(3) استفاده می‌کنند و مقدار خام tcti-name برای جستجو به کار می‌رود. بنابراین، این مقدار می‌تواند یک مسیر به کتابخانه مشترک یا نام یک کتابخانه باشد که توسط قواعد معنایی dlopen(3) شناخته می‌شود.

این مجموعه گزینه‌ها برای پیکربندی ماژول‌های مختلف TCTI شناخته‌شده در دسترس به کار می‌روند:

•
device: برای TCTI دستگاه، فایل دستگاه نویسه‌ای 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 مترادف یکدیگر هستند.

ما می‌خواهیم با استفاده از مقدار احراز هویت متن خام (plaintext) شیء TPM، احراز هویت را انجام دهیم. اگرچه می‌توانیم با یک نشست گذرواژه زودگذر (ephemeral) احراز هویت کنیم، اما در این مثال به جای آن با استفاده از ابزار tpm2_policyauthvalue(1)، احراز هویت را با عبارت عبور متن خام در یک نشست خط‌مشی انجام خواهیم داد.

tpm2_startauthsession -S session.dat
tpm2_policyauthvalue -S session.dat -L policy.dat
tpm2_flushcontext session.dat

tpm2_createprimary -C o -c prim.ctx
tpm2_create -g sha256 -G aes -u key.pub -r key.priv -C prim.ctx -L policy.dat \
  -p testpswd

tpm2_load -C prim.ctx -u key.pub -r key.priv -n key.name -c key.ctx
echo "plaintext" > plain.txt
tpm2_encryptdecrypt -c key.ctx -o encrypt.out plain.txt -p testpswd

tpm2_startauthsession --policy-session -S session.dat
tpm2_policyauthvalue -S session.dat
tpm2_encryptdecrypt -c key.ctx -o encrypt.out -p session:session.dat+testpswd \
plain.txt
tpm2_flushcontext session.dat

ابزارها می‌توانند هر یک از کدهای زیر را برگردانند:

•
0 - موفقیت‌آمیز.
•
1 - خطای عمومی و نامشخص.
•
2 - خطای پردازش گزینه‌ها.
•
3 - خطای احراز هویت.
•
4 - خطای مربوط به TCTI.
•
5 - طرح‌واره پشتیبانی‌نشده. مربوط به tpm2_testparams.

این ابزار انتظار دارد که یک نشست از پیش با استفاده از tpm2_startauthsession(1) برقرار شده باشد و نیازمند یکی از موارد زیر است:

•
دسترسی مستقیم به دستگاه
•
پشتیبانی از نشست توسعه‌یافته با tpm2-abrmd.

بدون آن، بیشتر مدیران منابع وضعیت نشست را در بین فراخوانی‌های دستور ذخیره نخواهند کرد.

اشکالات گیت‌هاب (Github Issues)

نگاه کنید به فهرست پستی (Mailing List)

این اثر تحت مجوز بین‌المللی کریتیو کامنز ارجاع 4.0 (CC BY 4.0) منتشر شده است.

tpm2-tools