tpm2_policypassword(1) General Commands Manual tpm2_policypassword(1)

tpm2_policypassword - فعال‌سازی پیوند دادن یک خط‌مشی به مقدار مجازشماری شیء مجاز TPM

tpm2_policypassword [گزینه‌ها]

دستور tpm2_policypassword(1) - خط‌مشی‌ای را فعال می‌کند که ارائهٔ عبارت عبور احراز هویت شیء را الزامی می‌سازد. این معادل احراز هویت با استفاده از عبارت عبور شیء به صورت متن‌آشکار است، با این تفاوت که آن را به عنوان یک خط‌مشی اعمال می‌کند. این دستور سازوکاری را برای فراهم کردن امکان احراز هویت با گذرواژه در زمانی که شیء تنها اجازهٔ مجازشماری مبتنی بر خط‌مشی را می‌دهد (یعنی ویژگی “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” مشخص شود، یا فراخوانی manpager شکست بخورد، گزینه‌های کوتاه در خروجی استاندارد (stdout) چاپ خواهند شد.

استفاده موفقیت‌آمیز از ویژگی صفحات راهنما نیازمند نصب بودن صفحات راهنما یا قرار داشتن آن‌ها در مسیر MANPATH است؛ برای جزئیات بیشتر man(1) را ببینید.

•
-v, --version: نمایش اطلاعات نسخه این ابزار، TCTIهای پشتیبانی‌شده و خروج.
•
-V, --verbose: افزایش اطلاعاتی که ابزار در حین اجرا در کنسول چاپ می‌کند. هنگام استفاده از این گزینه، نام فایل و شماره خط چاپ می‌شوند.
•
-Q, --quiet: ساکت کردن خروجی عادی ابزار در خروجی استاندارد (stdout).
•
-Z, --enable-errata: فعال‌سازی اعمال اصلاحات مربوط به اشکالات شناخته‌شده (errata fixups). زمانی مفید است که نیاز باشد یک اصلاحیه خطا روی دستورات ارسالی به TPM اعمال گردد. تعریف متغیر محیطی TPM2TOOLS_ENABLE_ERRATA نیز معادل این گزینه است.
•
-z, --pwd-session: استفاده از نشست گذرواژه به‌جای نشست HMAC برای احراز هویت. یک گذرواژه متن‌آشکار (clear text) به TPM ارسال می‌شود تا انجام عملیات را مجاز کند. از این گزینه می‌توان برای جلوگیری از بروز مشکل در مواردی که نشست‌های بدون سالت در حالت OpenSSL FIPS استفاده می‌شوند، بهره برد. اگر مقادیر auth به کار گرفته شوند، باید از یک نشست با سالت برای احراز هویت استفاده شود.
•
-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'.

مشخص کردن نام tabrmd tcti و رشته پیکربندی bus_name=com.example.FooBar:

\--tcti=tabrmd:bus_name=com.example.FooBar

مشخص کردن tcti پیش‌فرض (abrmd) و رشته پیکربندی bus_type=session:

\--tcti:bus_type=session

نکته: abrmd و tabrmd مترادف یکدیگرند. ماژول‌های مختلف شناخته‌شده TCTI.

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

tpm2_startauthsession -S session.dat
tpm2_policypassword -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 plain.txt

tpm2_startauthsession \--policy-session -S session.dat
tpm2_policypassword -S session.dat -L policy.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)

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

tpm2-tools