| tpm2_policycommandcode(1) | General Commands Manual | tpm2_policycommandcode(1) |
نام (NAME)
tpm2_policycommandcode - محدود کردن مجوز شیء TPM به دستورات خاص TPM
خلاصه دستور (SYNOPSIS)
tpm2_policycommandcode [گزینهها] [آرگومان]
توضیحات (DESCRIPTION)
دستور tpm2_policycommandcode(1) مجوز شیء TPM را به دستورات خاص TPM محدود میکند. زمانی مفید است که بخواهید تنها به دستورات خاصی اجازه تعامل با شیء TPM را بدهید.
این ابزار به عنوان یک آرگومان، دستور را به صورت یک مقدار عدد صحیح یا یک رشته ملموس (friendly string) دریافت میکند. نگاشت رشته ملموس به کد دستور را میتوانید در بخش نگاشتهای کد دستور (COMMAND CODE MAPPINGS) بیابید.
گزینهها (OPTIONS)
- •
- -S، --session=FILE:
یک فایل نشست برگرفته از گزینهٔ -S در دستور tpm2_startauthsession(1).
- •
- -L، --policy=FILE:
فایلی برای ذخیره دایجست خطمشی (policy digest).
- •
- ARGUMENT آرگومان خط فرمان که کد دستور TPM2 را مشخص میکند.
- •
- --cphash=FILE
مسیر فایل برای ثبت هش پارامترهای دستور. این مقدار معمولاً با عنوان cpHash شناخته میشود. نکته: هنگامی که این گزینه انتخاب شود، ابزار در واقع دستور را اجرا نمیکند و صرفاً یک cpHash بازمیگرداند.
مراجع (References)
گزینههای عمومی (COMMON OPTIONS)
این مجموعه از گزینهها میان بسیاری از برنامهها مشترک هستند و اطلاعاتی را ارائه میدهند که اغلب کاربران انتظار دارند.
- •
- -h، --help=[man|no-man]: نمایش صفحه راهنمای ابزار. بهطور پیشفرض، تلاش میکند صفحهخوان راهنما (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 مترادف یکدیگرند.
نگاشتهای کد دستور (COMMAND CODE MAPPINGS)
رشتههای ملموس زیر میتوانند به جای مقادیر عدد صحیح خام استفاده شوند:
-TPM2_CC_AC_GetCapability: 0x194 -TPM2_CC_AC_Send: 0x195 -TPM2_CC_ActivateCredential: 0x147 -TPM2_CC_Certify: 0x148 -TPM2_CC_CertifyCreation: 0x14a -TPM2_CC_ChangeEPS: 0x124 -TPM2_CC_ChangePPS: 0x125 -TPM2_CC_Clear: 0x126 -TPM2_CC_ClearControl: 0x127 -TPM2_CC_ClockRateAdjust: 0x130 -TPM2_CC_ClockSet: 0x128 -TPM2_CC_Commit: 0x18b -TPM2_CC_ContextLoad: 0x161 -TPM2_CC_ContextSave: 0x162 -TPM2_CC_Create: 0x153 -TPM2_CC_CreateLoaded: 0x191 -TPM2_CC_CreatePrimary: 0x131 -TPM2_CC_DictionaryAttackLockReset: 0x139 -TPM2_CC_DictionaryAttackParameters: 0x13a -TPM2_CC_Duplicate: 0x14b -TPM2_CC_ECC_Parameters: 0x178 -TPM2_CC_ECDH_KeyGen: 0x163 -TPM2_CC_ECDH_ZGen: 0x154 -TPM2_CC_EC_Ephemeral: 0x18e -TPM2_CC_EncryptDecrypt: 0x164 -TPM2_CC_EncryptDecrypt2: 0x193 -TPM2_CC_EventSequenceComplete: 0x185 -TPM2_CC_EvictControl: 0x120 -TPM2_CC_FieldUpgradeData: 0x141 -TPM2_CC_FieldUpgradeStart: 0x12f -TPM2_CC_FirmwareRead: 0x179 -TPM2_CC_FlushContext: 0x165 -TPM2_CC_GetCapability: 0x17a -TPM2_CC_GetCommandAuditDigest: 0x133 -TPM2_CC_GetRandom: 0x17b -TPM2_CC_GetSessionAuditDigest: 0x14d -TPM2_CC_GetTestResult: 0x17c -TPM2_CC_GetTime: 0x14c -TPM2_CC_Hash: 0x17d -TPM2_CC_HashSequenceStart: 0x186 -TPM2_CC_HierarchyChangeAuth: 0x129 -TPM2_CC_HierarchyControl: 0x121 -TPM2_CC_HMAC: 0x155 -TPM2_CC_HMAC_Start: 0x15b -TPM2_CC_Import: 0x156 -TPM2_CC_IncrementalSelfTest: 0x142 -TPM2_CC_Load: 0x157 -TPM2_CC_LoadExternal: 0x167 -TPM2_CC_MakeCredential: 0x168 -TPM2_CC_NV_Certify: 0x184 -TPM2_CC_NV_ChangeAuth: 0x13b -TPM2_CC_NV_DefineSpace: 0x12a -TPM2_CC_NV_Extend: 0x136 -TPM2_CC_NV_GlobalWriteLock: 0x132 -TPM2_CC_NV_Increment: 0x134 -TPM2_CC_NV_Read: 0x14e -TPM2_CC_NV_ReadLock: 0x14f -TPM2_CC_NV_ReadPublic: 0x169 -TPM2_CC_NV_SetBits: 0x135 -TPM2_CC_NV_UndefineSpace: 0x122 -TPM2_CC_NV_UndefineSpaceSpecial: 0x11f -TPM2_CC_NV_Write: 0x137 -TPM2_CC_NV_WriteLock: 0x138 -TPM2_CC_ObjectChangeAuth: 0x150 -TPM2_CC_PCR_Allocate: 0x12b -TPM2_CC_PCR_Event: 0x13c -TPM2_CC_PCR_Extend: 0x182 -TPM2_CC_PCR_Read: 0x17e -TPM2_CC_PCR_Reset: 0x13d -TPM2_CC_PCR_SetAuthPolicy: 0x12c -TPM2_CC_PCR_SetAuthValue: 0x183 -TPM2_CC_Policy_AC_SendSelect: 0x196 -TPM2_CC_PolicyAuthorize: 0x16a -TPM2_CC_PolicyAuthorizeNV: 0x192 -TPM2_CC_PolicyAuthValue: 0x16b -TPM2_CC_PolicyCommandCode: 0x16c -TPM2_CC_PolicyCounterTimer: 0x16d -TPM2_CC_PolicyCpHash: 0x16e -TPM2_CC_PolicyDuplicationSelect: 0x188 -TPM2_CC_PolicyGetDigest: 0x189 -TPM2_CC_PolicyLocality: 0x16f -TPM2_CC_PolicyNameHash: 0x170 -TPM2_CC_PolicyNV: 0x149 -TPM2_CC_PolicyNvWritten: 0x18f -TPM2_CC_PolicyOR: 0x171 -TPM2_CC_PolicyPassword: 0x18c -TPM2_CC_PolicyPCR: 0x17f -TPM2_CC_PolicyPhysicalPresence: 0x187 -TPM2_CC_PolicyRestart: 0x180 -TPM2_CC_PolicySecret: 0x151 -TPM2_CC_PolicySigned: 0x160 -TPM2_CC_PolicyTemplate: 0x190 -TPM2_CC_PolicyTicket: 0x172 -TPM2_CC_PP_Commands: 0x12d -TPM2_CC_Quote: 0x158 -TPM2_CC_ReadClock: 0x181 -TPM2_CC_ReadPublic: 0x173 -TPM2_CC_Rewrap: 0x152 -TPM2_CC_RSA_Decrypt: 0x159 -TPM2_CC_RSA_Encrypt: 0x174 -TPM2_CC_SelfTest: 0x143 -TPM2_CC_SequenceComplete: 0x13e -TPM2_CC_SequenceUpdate: 0x15c -TPM2_CC_SetAlgorithmSet: 0x13f -TPM2_CC_SetCommandCodeAuditStatus: 0x140 -TPM2_CC_SetPrimaryPolicy: 0x12e -TPM2_CC_Shutdown: 0x145 -TPM2_CC_Sign: 0x15d -TPM2_CC_StartAuthSession: 0x176 -TPM2_CC_Startup: 0x144 -TPM2_CC_StirRandom: 0x146 -TPM2_CC_TestParms: 0x18a -TPM2_CC_Unseal: 0x15e -TPM2_CC_Vendor_TCG_Test: 0x20000000 -TPM2_CC_VerifySignature: 0x177 -TPM2_CC_ZGen_2Phase: 0x18d
مثالها (EXAMPLES)
یک نشست خطمشی (policy) آغاز کرده و آن را با یک دستور خاص مانند unseal گسترش دهید. تلاش برای انجام عملیات دیگر با شکست مواجه خواهد شد.
ایجاد یک خطمشی فقط برای unseal
-
tpm2_startauthsession -S session.dat tpm2_policycommandcode -S session.dat -L policy.dat TPM2_CC_Unseal tpm2_flushcontext session.dat
ایجاد شیء با خطمشی احراز اصالت فقط برای unseal
-
tpm2_createprimary -C o -c prim.ctx tpm2_create -C prim.ctx -u sealkey.pub -r sealkey.priv -L policy.dat \ -i- <<< "SEALED-SECRET"
آزمایش عملیات unseal
-
tpm2_load -C prim.ctx -u sealkey.pub -r sealkey.priv -n sealkey.name \ -c sealkey.ctx tpm2_startauthsession --policy-session -S session.dat tpm2_policycommandcode -S session.dat -L policy.dat TPM2_CC_Unseal tpm2_unseal -p session:session.dat -c sealkey.ctx SEALED-SECRET tpm2_flushcontext session.dat
تلاش برای اجرای هر عملیات دیگر
-
echo "Encrypt Me" > plain.txt tpm2_encryptdecrypt plain.txt -o enc.txt -c sealkey.ctx plain.txt ERROR: Esys_EncryptDecrypt2(0x12F) - tpm:error(2.0): authValue or authPolicy is not available for selected entity
کدهای بازگشتی (RETURNS)
ابزارها میتوانند هر یک از کدهای زیر را بازگردانند:
- •
- 0 - موفقیت.
- •
- 1 - خطای عمومی و نامشخص.
- •
- 2 - خطای مدیریت گزینهها.
- •
- 3 - خطای احراز اصالت.
- •
- 4 - خطای مرتبط با TCTI.
- •
- 5 - طرح پشتیبانینشده. قابل اعمال روی tpm2_testparams.
محدودیتها (LIMITATIONS)
این ابزار انتظار دارد که از قبل یک نشست از طریق tpm2_startauthsession(1) برقرار شده باشد و به یکی از موارد زیر نیاز دارد:
- •
- دسترسی مستقیم به دستگاه
- •
- پشتیبانی گسترده از نشست با tpm2-abrmd.
بدون آن، اغلب مدیران منابع وضعیت نشست را در فاصلهٔ میان فراخوانیهای دستور ذخیره نخواهند کرد.
همچنین ببینید (SEE ALSO)
tpm2_startauthsession(1)، tpm2_flushcontext(1)، tpm2_createprimary(1)، tpm2_create(1)، tpm2_unseal(1)
اشکالات (BUGS)
راهنما (HELP)
مشاهدهٔ فهرست پستی (Mailing List)
مجوز (LICENSE)
این اثر تحت مجوز بینالمللی Creative Commons Attribution 4.0 (CC BY 4.0) منتشر شده است.
| tpm2-tools |