| tpm2_hierarchycontrol(1) | General Commands Manual | tpm2_hierarchycontrol(1) |
نام (NAME)
tpm2_hierarchycontrol - فعال و غیرفعالسازی استفاده از یک سلسلهمراتب و حافظه NV مرتبط با آن
خلاصه دستور (SYNOPSIS)
tpm2_hierarchycontrol [OPTIONS] VARIABLE OPERATION
توضیحات (DESCRIPTION)
دستور tpm2_hierarchycontrol(1) - به کاربر اجازه میدهد با ارائه احراز هویت مناسب، phEnable، phEnableNV، shEnable و ehEnable را تغییر دهد. احراز هویت باید یکی از احراز هویتهای سلسلهمراتب مالک (owner auth)، احراز هویت سلسلهمراتب تایید (endorsement auth) یا احراز هویت سلسلهمراتب پلتفرم (platform auth) باشد. این ابزار به عنوان آرگومان، VARIABLE را به عنوان بیت TPMA_STARTUP_CLEAR و _OPERATION_ را به عنوان رشته clear|set برای پاک کردن یا تنظیم بیت VARIABLE دریافت میکند.
نکته: در صورت عدم وجود گزینه گذرواژه، مقدار NULL در نظر گرفته میشود.
گزینهها (OPTIONS)
- •
- -C, --hierarchy=OBJECT:
هندل (handle) مورد استفاده برای احراز هویت را مشخص میکند. پیشفرض، سلسلهمراتب “platform” است. گزینههای پشتیبانیشده عبارتند از:
- •
- o برای TPM_RH_OWNER
- •
- p برای TPM_RH_PLATFORM
- •
- <num> که در آن میتوان از یک عدد خام استفاده کرد.
- •
- -P, --hierarchy-auth=AUTH:
مقدار احراز هویت را برای سلسلهمراتب مشخص میکند.
- •
- --cphash=FILE
مسیر فایل برای ثبت هش پارامترهای دستور. این مقدار معمولاً با عنوان cpHash شناخته میشود. نکته: هنگامی که این گزینه انتخاب شود، ابزار دستور را واقعاً اجرا نخواهد کرد، بلکه صرفاً یک cpHash بازمیگرداند.
ارجاعات (References)
قالب شیء زمینه (Context Object Format)
نوع یک شیء زمینه، خواه یک هندل یا یک نام فایل باشد، بر اساس منطق زیر بهترتیب تعیین میشود:
- •
- اگر آرگومان یک مسیر فایل باشد، فایل به عنوان یک شیء گذرا (transient) بازیابیشدهٔ TPM بارگذاری میشود.
- •
- اگر آرگومان با پیشوند یکی از موارد زیر مطابقت داشته باشد:
- •
- owner: سلسلهمراتب مالک (owner hierarchy)
- •
- platform: سلسلهمراتب پلتفرم (platform hierarchy)
- •
- endorsement: سلسلهمراتب تایید (endorsement hierarchy)
- •
- lockout: شیء پایدار کنترل قفل (lockout control persistent object)
- •
- اگر آرگومان بتواند به صورت یک عدد بارگذاری شود، به عنوان یک هندل در نظر گرفته میشود؛ مانند 0x81010013 و مستقیماً استفاده میشود.
قالببندی احراز هویت (Authorization Formatting)
احراز هویت برای استفاده از یک شیء در TPM 2.0 میتواند به ۳ شکل مختلف باشد: 1. گذرواژه (Password) 2. HMAC 3. نشستها (Sessions)
نکته: “در صورت عدم تعیین، احراز هویت به طور پیشفرض روی گذرواژه خالی (EMPTY PASSWORD) تنظیم میشود”.
برای احراز هویت با مقادیر auth، دستورات ابزار به طور ضمنی یک نشست HMAC ایجاد میکنند. بنابراین گذرواژهها به صورت رمزگذارینشده منتقل نمیشوند. این امر در مورد گذرواژههای تعریفشده برای اشیاء صدق نمیکند. در این حالت، باید از یک نشست HMAC استفاده شود (رجوع کنید به tpm2_startauthsession(1)).
گذرواژهها (Passwords)
گذرواژهها در قالبهای زیر با استفاده از شناسههای پیشوندی تفسیر میشوند.
نکته: به طور پیشفرض فرض میشود گذرواژههای فاقد پیشوند در قالب رشته هستند.
رشته (String)
یک گذرواژه رشتهای، که با پیشوند “str:” یا عدم وجود آن (رشته خام بدون پیشوند) مشخص میشود، تفسیر نشده و مستقیماً برای احراز هویت استفاده میشود.
مثالها (Examples)
-
foobar str:foobar
رشته هگزادسیمال (Hex-string)
یک گذرواژه رشته هگز، که با پیشوند “hex:” مشخص میشود، از یک قالب هگزادسیمال به یک آرایه بایت تبدیل میشود؛ این امر امکان استفاده از گذرواژههایی با کاراکترهای غیرقابلچاپ یا نامناسب برای ترمینال را فراهم میسازد.
مثال (Example)
-
hex:1122334455667788
فایل (File)
یک گذرواژه مبتنی بر فایل، که با پیشوند “file:” مشخص میشود، باید مسیر فایلی حاوی گذرواژه برای خوانده شدن توسط ابزار باشد، یا از “-” برای استفاده از stdin استفاده شود. ذخیره گذرواژهها در فایل از نشت اطلاعات جلوگیری میکند؛ زیرا گذرواژههایی که به عنوان گزینه ارسال میشوند ممکن است از فهرست فرآیندها یا تاریخچه پوسته خوانده شوند.
مثالها (Examples)
-
# برای استفاده از stdin و اعلان ورودی: file:- # برای استفاده از فایل از یک مسیر: file:path/to/password/file # برای ارسال گذرواژه از طریق stdin با echo: echo foobar | tpm2_tool -p file:- # برای استفاده از bash here-string از طریق stdin: tpm2_tool -p file:- <<< foobar
نشستها (Sessions)
هنگام استفاده از یک نشست پالیسی (policy session) برای مجاز کردن استفاده از یک شیء، آرگومان گزینه را با کلمه کلیدی session پیشوندگذاری کنید. سپس مسیری را به فایل نشستی که با tpm2_startauthsession(1) ایجاد شده مشخص نمایید. در صورت تمایل، اگر نشست نیاز دارد که مقدار auth به همراه هندل نشست ارسال شود (مانند policy password)، یک + و یک رشته را مطابق با بخش گذرواژهها (Passwords) اضافه کنید.
مثالها (Examples)
برای استفاده از یک فایل زمینه نشست با نام session.ctx:
-
session:session.ctx
برای استفاده از یک فایل زمینه نشست با نام session.ctx و ارسال مقدار auth به صورت mypassword:
-
session:session.ctx+mypassword
برای استفاده از یک فایل زمینه نشست با نام session.ctx و ارسال مقدار احراز هویت HEX برابر با 0x11223344:
-
session:session.ctx+hex:11223344
احراز هویتهای PCR (PCR Authorizations)
میتوانید یک خطمشی PCR را با استفاده از پیشوند “pcr:” و زبان کوچک PCR برآورده سازید. زبان کوچک PCR به شرح زیر است: <pcr-spec>=<raw-pcr-file>
مشخصات PCR در بخش “مشخصکنندههای بانک PCR” مستند شده است.
پارامتر raw-pcr-file یک آرگومان اختیاری است که شامل خروجی محتویات خام PCR است همانطور که توسط tpm2_pcrread(1) بازگردانده میشود.
مشخصکنندههای بانک PCR (PCR bank specifiers)
مثالها (Examples)
برای برآورده ساختن یک خطمشی PCR با sha256 روی بانکهای 0، 1، 2 و 3 از مشخصکننده زیر استفاده کنید:
-
pcr:sha256:0,1,2,3
مشخص کردن AUTH.
گزینههای مشترک (COMMON OPTIONS)
این مجموعه از گزینهها بین بسیاری از برنامهها مشترک هستند و اطلاعاتی را ارائه میدهند که کاربران انتظار دارند.
- •
- -h, --help=[man|no-man]: نمایش صفحه راهنمای ابزار. به طور پیشفرض، تلاش میکند صفحهبند man را برای ابزار فراخوانی کند؛ با این حال، در صورت عدم موفقیت، خلاصهای کوتاه از ابزار را نمایش میدهد. این رفتار مشابه زمانی است که آرگومان گزینه “man” مشخص شده باشد؛ با این حال در صورت درخواست صریح “man”، ابزار خطاهای man را در stderr ارائه میدهد. اگر گزینه “no-man” مشخص شود یا صفحهبند ناموفق باشد، گزینههای کوتاه به 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 ارسال میشود تا عمل موردنظر را مجاز کند. این گزینه میتواند برای جلوگیری از مشکلات ناشی از استفاده از نشستهای 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.
نکته: گزینه خط فرمان همواره متغیر محیطی را لغو (override) میکند.
TCTIهای شناختهشده در حال حاضر عبارتند از:
- •
- tabrmd - مدیر منابع، موسوم به tabrmd. توجه داشته باشید که tabrmd و abrmd به عنوان نام tcti مترادف یکدیگرند.
- •
- mssim - معمولاً برای برقراری ارتباط با شبیهساز نرمافزاری TPM استفاده میشود.
- •
- device - هنگام برقراری ارتباط مستقیم با فایل دستگاه TPM استفاده میشود.
- •
- none - هیچ اتصالی با TPM برقرار نمیکند. برخی از ابزارها امکان استفاده از گزینههای خارج از 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)، فایل دستگاه نویسهای 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)
تنظیم phEnableNV با سلسلهمراتب پلتفرم و احراز هویت آن (Set phEnableNV with platform hierarchy and its authorization)
-
tpm2_hierarchycontrol -C p phEnableNV set -P pass
پاک کردن phEnableNV با سلسلهمراتب پلتفرم (clear phEnableNV with platform hierarchy)
-
tpm2_hierarchycontrol -C p phEnableNV clear
تنظیم shEnable با سلسلهمراتب پلتفرم (Set shEnable with platform hierarchy)
-
tpm2_hierarchycontrol -C p shEnable set
تنظیم shEnable با سلسلهمراتب مالک (Set shEnable with owner hierarchy)
-
tpm2_hierarchycontrol -C o shEnable set
بررسی بیتهای کنونی TPMA_STARTUP_CLEAR (Check current TPMA_STARTUP_CLEAR Bits)
-
tpm2_getcap properties-variable
کدهای بازگشتی (Returns)
ابزارها میتوانند هر یک از کدهای زیر را بازگردانند:
- •
- 0 - موفقیت.
- •
- 1 - خطای عمومی و نامشخص.
- •
- 2 - خطای پردازش گزینهها.
- •
- 3 - خطای احراز هویت.
- •
- 4 - خطای مرتبط با TCTI.
- •
- 5 - طرحواره پشتیبانینشده (Non supported scheme). قابل اعمال به tpm2_testparams.
اشکالات (BUGS)
راهنما (HELP)
مشاهده فهرست پستی (Mailing List)
مجوز (LICENSE)
این اثر تحت مجوز بینالمللی ارجاع ۴.۰ کریتیو کامنز (CC BY 4.0)منتشر شده است.
| July 2019 | tpm2-tools |