tpm2_nvreadpublic(1) General Commands Manual tpm2_nvreadpublic(1)

tpm2_nvreadpublic - خواندن بخش عمومی فضای حافظه غیرفرار TPM2 (NV)

tpm2_nvreadpublic [گزینه‌ها]

دستور tpm2_nvreadpublic(1) تمام شاخص‌های حافظه غیرفرار (NV) تعریف‌شده را در قالب YAML در خروجی استاندارد (stdout) نمایش می‌دهد.

نمایش فراداده (متادیتا) برای تمام شاخص‌های حافظه غیرفرار (NV) تعریف‌شده. فراداده شامل موارد زیر است:

•
اندازه ناحیه تعریف‌شده.
•
الگوریتم درهم‌سازی (هش) استفاده‌شده برای محاسبه نام شاخص.
•
خط‌مشی احراز هویت (auth policy).
•
ویژگی‌های NV طبق آنچه در بخش “ویژگی‌های NV” تعریف شده است.

0x1500015:
  hash algorithm:
    friendly: sha256
    value: 0xB
  attributes:
    friendly: ownerwrite|ownerread
    value: 0x2000200
  size: 32
  authorization policy:
0x1500017:
  hash algorithm:
    friendly: sha256
    value: 0xB
  attributes:
    friendly: ownerwrite|ownerread
    value: 0x2000200
  size: 32
  authorization policy:

•
--cphash=FILE

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

•
--rphash=FILE

مسیر فایل برای ثبت هش پارامترهای پاسخ. این مقدار معمولاً rpHash نامیده می‌شود.

•
-S, --session=POLICY_SESSION:

تعیین یک نشست کمکی برای حسابرسی و یا رمزنگاری/رمزگشایی پارامترها.

•
-n, --name=FILE:

نام شاخص حافظه غیرفرار (NV) که باید هنگام محاسبه صرف cpHash بدون ارسال واقعی دستور به TPM ارائه شود.

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

•
-h, --help=[man|no-man]: نمایش صفحه راهنمای (manpage) ابزار. به‌طور پیش‌فرض، تلاش می‌کند صفحه‌خوان راهنما (manpager) را برای ابزار فراخوانی کند، اما در صورت عدم موفقیت، خلاصه‌ای کوتاه از ابزار را نمایش می‌دهد. این رفتار مشابه زمانی است که آرگومان گزینهٔ “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 برای احراز هویت. یک گذرواژه با متن آشکار برای مجاز کردن عمل به TPM ارسال می‌شود. این گزینه می‌تواند برای جلوگیری از مشکلاتی که در هنگام استفاده از نشست‌های بدون نمک (unsalted) در حالت OpenSSL FIPS رخ می‌دهد، استفاده شود. اگر از مقادیر auth استفاده می‌شود، باید از یک نشست با نمک (salted) برای احراز هویت استفاده گردد.
•
-R, --autoflush: فعال‌سازی تخلیه خودکار (autoflush) برای اشیاء گذرای ایجادشده توسط دستور. اگر یک شیء والد از یک فایل زمینه (context) بارگذاری شود، شیء والد گذرا نیز تخلیه خواهد شد. تخلیه خودکار همچنین در صورتی که متغیر محیطی 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 دستگاه (device)، فایل دستگاه نویسه‌ای TPM برای استفاده توسط این TCTI قابل تعیین است. مقدار پیش‌فرض /dev/tpm0 است.

مثال: -T device:/dev/tpm0 یا export TPM2TOOLS_TCTI=“device:/dev/tpm0”

•
mssim: برای TCTI شبیه‌ساز mssim، نام دامنه یا آدرس IP و شماره درگاه (port) مورد استفاده شبیه‌ساز قابل تعیین است. مقادیر پیش‌فرض 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 مترادف یکدیگرند.

ویژگی‌های NV برای کنترل خصوصیات مختلف فضای تعریف‌شده حافظه غیرفرار (NV) استفاده می‌شوند. هنگامی که به عنوان یک گزینه مشخص شوند، می‌توان از ماسک بیتی خام یا “نام‌های مناسب” (nice-names) استفاده کرد. مقادیر را می‌توان در جدول ۲۰۴ بخش ۲ مشخصات TPM2.0 یافت که در اینجا در دسترس است:

https://trustedcomputinggroup.org/wp-content/uploads/TPM-Rev-2.0-Part-2-Structures-01.38.pdf

نام‌های مناسب با گرفتن فیلد نام در جدول ۲۰۴، حذف پیشوند TPMA_NV_ و تبدیل نتیجه به حروف کوچک به دست می‌آیند. بنابراین، TPMA_NV_PPWRITE تبدیل به ppwrite می‌شود. نام‌های مناسب را می‌توان با نماد OR بیتی یعنی “|” به هم متصل کرد.

توجه داشته باشید که فیلد TPM_NT به عرض ۴ بیت است، و بنابراین می‌تواند از طریق قالب nt= تنظیم شود. برای نمونه، جهت تنظیم فیلدهای TPMA_NV_OWNERREAD، TPMA_NV_OWNERWRITE، TPMA_NV_POLICYWRITE و TPMA_NT = 0x2، آرگومان مربوطه به این صورت خواهد بود:

ownerread|ownerwrite|policywrite|nt=0x2

علاوه بر این، فیلد NT که مشخص‌کننده نوع شاخص حافظه غیرفرار (NV) است، می‌تواند از طریق نام‌های مأنوس (friendly names) نیز تعیین شود:

•
ordinary - فیلد Ordinary شامل داده‌هایی است که برای TPM مات و غیرشفاف (opaque) هستند و تنها با استفاده از TPM2_NV_Write قابل تغییرند.
•
extend - فیلد Extend به طور مشابه با یک PCR استفاده می‌شود و تنها با TPM2_NV_Extend قابل تغییر است. اندازه آن با طول الگوریتم درهم‌سازی (هش) استفاده‌شده تعیین می‌شود.
•
counter - فیلد Counter شامل یک مقدار ۸-اکتتی است که به عنوان شمارنده استفاده می‌شود و تنها با TPM2_NV_Increment قابل تغییر است.
•
bits - فیلد Bit Field شامل یک مقدار ۸-اکتتی است که به عنوان فیلد بیتی استفاده می‌شود و تنها با TPM2_NV_SetBits قابل تغییر است.
•
pinfail - فیلد PIN Fail شامل یک pinCount با اندازه ۸-اکتت است که هنگام شکست احراز هویت پین افزایش می‌یابد و یک pinLimit.
•
pinpass - فیلد PIN Pass شامل یک pinCount با اندازه ۸-اکتت است که هنگام موفقیت احراز هویت پین افزایش می‌یابد و یک pinLimit.

برای نمونه، جهت تنظیم فیلدهای TPMA_NV_OWNERREAD، TPMA_NV_OWNERWRITE، TPMA_NV_POLICYWRITE و TPMA_NT = bits، آرگومان به این صورت خواهد بود:

ownerread|ownerwrite|policywrite|nt=bits

tpm2_nvreadpublic

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

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

مسائل گیت‌هاب (Github Issues)

مشاهده فهرست پستی (Mailing List)

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

tpm2-tools