| tpm2_nvdefine(1) | General Commands Manual | tpm2_nvdefine(1) |
نام (NAME)
tpm2_nvdefine(1) - تعریف یک شاخص حافظه غیرفرار (NV) در TPM.
خلاصه دستور (SYNOPSIS)
tpm2_nvdefine [OPTIONS] [ARGUMENT]
توضیحات (DESCRIPTION)
دستور tpm2_nvdefine(1) یک شاخص NV را با مقدار مجوز دادهشده تعریف میکند. شاخص به عنوان یک آرگومان مشخص میشود. میتوان آن را به صورت یک دستگیره خام یا یک مقدار آفست نسبت به محدوده دستگیره nv یعنی “TPM2_HR_NV_INDEX” مشخص کرد. اگر شاخصی مشخص نشود، این ابزار از اولین شاخص آزاد استفاده میکند. در صورت موفقیت، این ابزار شاخص nv تعریفشده را در خروجی چاپ میکند.
گزینهها (OPTIONS)
- •
- -C, --hierarchy=OBJECT:
دستگیره مورد استفاده برای تایید مجوز را مشخص میکند. در صورت مشخص نشدن هیچ مقداری، بهطور پیشفرض بر روی o، یعنی TPM_RH_OWNER قرار دارد. گزینههای پشتیبانیشده عبارتند از:
- •
- o برای TPM_RH_OWNER
- •
- p برای TPM_RH_PLATFORM
- •
- <num> در جایی که ممکن است یک دستگیره سلسلهمراتب یا nv-index استفاده شود.
- •
- -s, --size=NATURAL_NUMBER:
اندازه ناحیه داده را بر حسب بایت مشخص میکند. بهطور پیشفرض بر روی MAX_NV_INDEX_SIZE است که معمولاً ۲۰۴۸ میباشد.
- •
- -g, --hash-algorithm=ALGORITHM:
الگوریتم درهمسازی مورد استفاده برای محاسبه نام شاخص و استفاده در خطمشی احراز هویت. اگر شاخص از نوع شاخص گسترش (extend index) باشد، الگوریتم درهمسازی برای گسترش (extend) استفاده میشود.
- •
- -a, --attributes=ATTRIBUTES
مقادیر ویژگیها را برای ناحیه nv در زمان ایجاد موجودیت مشخص میکند. میتوان از ماسک بیتی خام یا “نامهای مناسب” (nice-names) استفاده کرد. برای جزئیات بیشتر به بخش “ویژگیهای شیء (OBJECT ATTRIBUTES)” مراجعه کنید. در صورت مشخص نشدن، ویژگیها بر اساس سلسلهمراتبی که شاخص در آن تعریف میشود، به انتخابهای مختلف پیشفرض تنظیم میشوند.
برای سلسلهمراتب مالک (owner)، مقادیر پیشفرض عبارتند از:
- •
- TPMA_NV_OWNERWRITE
- •
- TPMA_NV_OWNERREAD
برای سلسلهمراتب پلتفرم (platform)، مقادیر پیشفرض عبارتند از:
- •
- TPMA_NV_PPWRITE
- •
- TPMA_NV_PPREAD
اگر یک فایل خطمشی مشخص شده باشد، ویژگیهای پیشفرض انتخابشده توسط سلسلهمراتب با مقادیر زیر OR بیتی میشوند:
- •
- TPMA_NV_POLICYWRITE
- •
- TPMA_NV_POLICYREAD
اگر یک فایل خطمشی مشخص نشده باشد، ویژگیهای پیشفرض انتخابشده توسط سلسلهمراتب با مقادیر زیر OR بیتی میشوند:
- •
- TPMA_NV_AUTHWRITE
- •
- TPMA_NV_AUTHREAD
- •
- -P, --hierarchy-auth=AUTH:
مقدار مجوز را برای سلسلهمراتب مشخص میکند. مقادیر مجوز باید از “استانداردهای قالببندی مجوز” پیروی کنند، به بخش “قالببندی احراز هویت (AUTHORIZATION FORMATTING)” مراجعه کنید.
- •
- -p, --index-auth=AUTH:
گذرواژه شاخص NV را در هنگام ایجاد مشخص میکند. مقادیر مجوز HMAC و گذرواژه باید از “استانداردهای قالببندی مجوز” پیروی کنند، به بخش “قالببندی احراز هویت (AUTHORIZATION FORMATTING)” مراجعه کنید.
- •
- -L, --policy=FILE:
فایل خلاصه خطمشی (policy digest) را برای احراز هویتهای مبتنی بر خطمشی مشخص میکند.
- •
- --cphash=FILE
مسیر فایل برای ثبت هش پارامترهای دستور. این مقدار معمولاً به عنوان cpHash شناخته میشود. نکته: هنگامی که این گزینه انتخاب شود، ابزار در عمل دستور را اجرا نمیکند و صرفاً یک cpHash برمیگرداند، مگر اینکه rphash نیز درخواست شده باشد.
- •
- --rphash=FILE
مسیر فایل برای ثبت هش پارامترهای پاسخ. این مقدار معمولاً به عنوان rpHash شناخته میشود.
- •
- -S, --session=FILE:
نشست ایجادشده با استفاده از tpm2_startauthsession. میتوان چندین مورد از این گزینه را مشخص کرد. به عنوان مثال، میتوانید یک نشست برای ممیزی و نشستی دیگر برای رمزنگاری/رمزگشایی پارامترها داشته باشید.
- •
- ARGUMENT آرگومان خط فرمان، شماره شاخص NV یا مقدار آفست را مشخص میکند.
مراجع (REFERENCES)
قالب شیء زمینه (CONTEXT OBJECT FORMAT)
نوع یک شیء زمینه، چه دستگیره (handle) باشد یا نام فایل، طبق منطق زیر بهترتیب تعیین میشود:
- •
- اگر آرگومان یک مسیر فایل باشد، آنگاه فایل به عنوان یک شیء گذرای بازگردانیشده TPM بارگذاری میشود.
- •
- اگر آرگومان با پیشوند یکی از موارد زیر مطابقت داشته باشد:
- •
- owner: سلسلهمراتب مالک (owner hierarchy)
- •
- platform: سلسلهمراتب پلتفرم (platform hierarchy)
- •
- endorsement: سلسلهمراتب تایید (endorsement hierarchy)
- •
- lockout: شیء پایدار کنترل قفل (lockout control persistent object)
- •
- اگر آرگومان بتواند به عنوان یک عدد بارگذاری شود، به عنوان یک دستگیره تلقی خواهد شد (برای نمونه 0x81010013) و مستقیماً استفاده میشود.
قالببندی احراز هویت (AUTHORIZATION FORMATTING)
مجوز استفاده از یک شیء در TPM2.0 میتواند به ۳ شکل مختلف ارائه شود: ۱. گذرواژه (Password) ۲. HMAC ۳. نشستها (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)، یک کاراکتر + و یک رشته را مطابق آنچه در بخش گذرواژهها (PASSWORDS) توضیح داده شد، الحاق کنید.
مثالها (EXAMPLES)
برای استفاده از یک فایل زمینه نشست به نام session.ctx:
-
session:session.ctx
برای استفاده از یک فایل زمینه نشست به نام session.ctx و ارسال مقدار auth با محتوای mypassword:
-
session:session.ctx+mypassword
برای استفاده از یک فایل زمینه نشست به نام session.ctx و ارسال مقدار auth در قالب 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
مثالها (EXAMPLES)
برای برآورده کردن خطمشی PCR الگوریتم sha256 روی بانکهای ۰، ۱، ۲ و ۳ از مشخصکننده زیر استفاده کنید:
-
pcr:sha256:0,1,2,3
تعیین AUTH.
ویژگیهای شیء (OBJECT ATTRIBUTES)
ویژگیهای شیء (Object Attributes) برای کنترل ویژگیهای مختلف اشیاء ایجادشده به کار میروند. هنگامی که به عنوان یک گزینه مشخص میشوند، میتوان از ماسک بیتی خام یا “نامهای مناسب” (nice-names) استفاده کرد. این مقادیر را میتوان در جدول ۳۱ بخش ۲ از مشخصات TPM 2.0 یافت، که در اینجا در دسترس است:
https://trustedcomputinggroup.org/wp-content/uploads/TPM-Rev-2.0-Part-2-Structures-01.38.pdf
نامهای مناسب با گرفتن نام فیلد در جدول ۳۱، حذف پیشوند TPMA_OBJECT_ و تبدیل حروف آن به حروف کوچک محاسبه میشوند. بنابراین، TPMA_OBJECT_FIXEDTPM به fixedtpm تبدیل میشود. نامهای مناسب را میتوان با استفاده از نماد OR بیتی یعنی “|” به یکدیگر متصل کرد.
برای نمونه، جهت تنظیم فیلدهای TPMA_OBJECT_FIXEDTPM، TPMA_OBJECT_NODA و TPMA_OBJECT_SIGN_ENCRYPT، آرگومان مربوطه به صورت زیر خواهد بود:
fixedtpm|noda|sign که ویژگیهای nv یعنی ATTRIBUTES را مشخص میکند.
گزینههای عمومی (COMMON OPTIONS)
این مجموعه گزینهها میان بسیاری از برنامهها مشترک هستند و اطلاعاتی را ارائه میدهند که ممکن است بسیاری از کاربران انتظار داشته باشند.
- •
- -h, --help=[man|no-man]: نمایش صفحه راهنمای ابزار. بهطور پیشفرض، تلاش میکند تا صفحهخوان man را برای ابزار فراخوانی کند؛ با این حال، در صورت بروز خطا، خلاصه کوتاهی از ابزار را نمایش میدهد. این رفتار مشابه زمانی است که آرگومان گزینه “man” مشخص شده باشد؛ اما اگر صراحتاً “man” درخواست شود، ابزار خطاهای man را روی stderr ارائه میدهد. اگر گزینه “no-man” مشخص شود، یا فراخوانی صفحهخوان 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.
نکته: گزینه خط فرمان همواره بر متغیر محیطی اولویت دارد.
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 دستگاه، فایل دستگاه کاراکتری 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 مترادف هستند.
مثالها (EXAMPLES)
-
tpm2_nvdefine 0x1500016 -C o -s 32 -a 0x2000A tpm2_nvdefine 0x1500016 -C o -s 32 -a ownerread|ownerwrite|policywrite -p 1a1b
کدهای بازگشتی (RETURNS)
ابزارها میتوانند هر یک از کدهای زیر را برگردانند:
- •
- 0 - موفقیتآمیز.
- •
- 1 - خطای کلی نامشخص.
- •
- 2 - خطای مدیریت گزینهها.
- •
- 3 - خطای احراز هویت.
- •
- 4 - خطای مربوط به TCTI.
- •
- 5 - طرحواره پشتیبانینشده (Non supported scheme). قابل اعمال روی tpm2_testparams.
اشکالات (BUGS)
راهنما (HELP)
مشاهده فهرست پستی (Mailing List)
مجوز (LICENSE)
این اثر تحت مجوز بینالمللی کریتیو کامنز ارجاع ۴.۰ (CC BY 4.0)منتشر شده است.
| tpm2-tools |