tpm2_nvundefine(1) General Commands Manual tpm2_nvundefine(1)

tpm2_nvundefine - حذف یک شاخص حافظه غیرفرار (NV)

tpm2_nvundefine [OPTIONS] [ARGUMENT]

دستور tpm2_nvundefine(1) یک شاخص حافظه غیرفرار (NV) را که پیش‌تر با tpm2_nvdefine(1) تعریف شده بود حذف می‌کند. شاخص به عنوان یک آرگومان مشخص می‌شود. می‌توان آن را به صورت یک دستگیره خام یا یک مقدار آفست نسبت به محدوده دستگیره nv یعنی “TPM2_HR_NV_INDEX” مشخص کرد.

این ابزار همچنین قادر به حذف شاخص‌های NV دارای ویژگی TPMA_NV_POLICY_DELETE است، و در صورت عدم تعیین -C، این ابزار از این ویژگی برای انتخاب سلسله‌مراتب پیش‌فرض استفاده می‌کند. مقدار پیش‌فرض برای -C در صورتی که TPMA_NV_POLICY_DELETE پاک باشد، سلسله‌مراتب «owner» (مالک) و در صورتی که TPMA_NV_POLICY_DELETE تنظیم شده باشد، سلسله‌مراتب «platform» (پلتفرم) است.

•
-C, --hierarchy=OBJECT:

سلسله‌مراتب مورد استفاده برای احراز هویت و تایید مجوز را مشخص می‌کند. گزینه‌های پشتیبانی‌شده عبارتند از:

•
o برای TPM_RH_OWNER
•
p برای TPM_RH_PLATFORM
•
<num> در جایی که ممکن است یک دستگیره سلسله‌مراتب مشخص شود.
•
-P, --auth=AUTH:

مقدار مجوز را برای سلسله‌مراتب مشخص می‌کند.

•
-S, --session=POLICY_SESSION:

مشخص کردن یک نشست خط‌مشی (policy session) جهت استفاده هنگامی که شاخص NV دارای ویژگی TPMA_NV_POLICY_DELETE تنظیم‌شده باشد. این گزینه همچنین می‌تواند برای تعیین یک نشست کمکی جهت ممیزی و/یا رمزنگاری/رمزگشایی پارامترها به کار رود. نکته:

1.
اگر TPM2_CC_NV_UndefineSpaceSpecial فراخوانی شود، آنگاه تنها یک نشست کمکی اضافی می‌تواند مشخص گردد. ترتیب تعیین نشست‌ها نیز اهمیت دارد. اولین نشست ارائه‌شده با -S به عنوان نشستی برای برآورده کردن نقش ADMIN مورد نیاز برای TPM2_CC_NV_UndefineSpaceSpecial تفسیر می‌شود. اگر برای شیء NV از یک گذرواژه استفاده شده باشد، گذرواژه باید به مسیر نشست اضافه شود: “path+passwdord”.
2.
اگر TPM2_CC_NV_Undefine فراخوانی شود، آنگاه تنها دو نشست کمکی اضافی می‌توانند مشخص گردند.
•
--cphash=FILE

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

•
--rphash=FILE

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

•
--with-policydelete=NONE

این گزینه باید هنگام محاسبه cpHash با --tcti=none مشخص شود. این یک الزام است زیرا هیچ راهی وجود ندارد که تنها از روی نام شاخص NV تشخیص داده شود که آیا ویژگی TPMA_NV_POLICYDELETE تنظیم شده است یا خیر.

•
-n, --name=FILE:

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

•
ARGUMENT آرگومان خط فرمان که شاخص NV یا شماره آفست را مشخص می‌کند.

نوع یک شیء زمینه، چه دستگیره (handle) باشد یا نام فایل، طبق منطق زیر به‌ترتیب تعیین می‌شود:

•
اگر آرگومان یک مسیر فایل باشد، آنگاه فایل به عنوان یک شیء گذرای بازگردانی‌شده TPM بارگذاری می‌شود.
•
اگر آرگومان با پیشوند یکی از موارد زیر مطابقت داشته باشد:
•
owner: سلسله‌مراتب مالک (owner hierarchy)
•
platform: سلسله‌مراتب پلتفرم (platform hierarchy)
•
endorsement: سلسله‌مراتب تایید (endorsement hierarchy)
•
lockout: شیء پایدار کنترل قفل (lockout control persistent object)
•
اگر آرگومان بتواند به عنوان یک عدد بارگذاری شود، به عنوان یک دستگیره تلقی خواهد شد (برای نمونه 0x81010013) و مستقیماً استفاده می‌شود.

مجوز استفاده از یک شیء در TPM2.0 می‌تواند به ۳ شکل مختلف ارائه شود: ۱. گذرواژه (Password) ۲. HMAC ۳. نشست‌ها (Sessions)

نکته: “در صورت مشخص نشدن، مجوزها به‌طور پیش‌فرض بر روی گذرواژه خالی (EMPTY PASSWORD) قرار می‌گیرند”.

برای احراز هویت با مقادیر auth، دستورات ابزار به طور ضمنی یک نشست HMAC ایجاد می‌کنند. بنابراین گذرواژه‌ها به صورت رمزگذاری‌نشده ارسال نمی‌شوند. این امر در مورد گذرواژه‌های تعریف‌شده برای اشیاء صدق نمی‌کند. در این حالت، باید از یک نشست HMAC استفاده شود (رجوع کنید به tpm2_startauthsession(1)).

گذرواژه‌ها در اشکال زیر با استفاده از شناسه‌های پیشوندی تفسیر می‌شوند.

نکته: به‌طور پیش‌فرض، گذرواژه‌ها در صورتی که پیشوند نداشته باشند، در قالب رشته در نظر گرفته می‌شوند.

یک گذرواژه رشته‌ای که با پیشوند “str:” یا عدم وجود آن (رشته خام بدون پیشوند) مشخص می‌شود، تفسیر نشده و مستقیماً برای احراز هویت به کار می‌رود.

foobar
str:foobar

یک گذرواژه رشته هگزادسیمال که با پیشوند “hex:” مشخص می‌شود، از فرمت هگزادسیمال به فرمت آرایه بایتی تبدیل می‌شود؛ بنابراین امکان استفاده از گذرواژه‌هایی با کاراکترهای غیرقابل‌چاپ یا ناسازگار با ترمینال را فراهم می‌کند.

hex:1122334455667788

گذرواژه مبتنی بر فایل که با پیشوند “file:” مشخص می‌شود، باید مسیر فایلی حاوی گذرواژه باشد که توسط ابزار خوانده شود یا مقدار “-” برای استفاده از ورودی استاندارد (stdin). ذخیره گذرواژه‌ها در فایل از نشت اطلاعات جلوگیری می‌کند؛ گذرواژه‌هایی که به عنوان گزینه خط فرمان ارسال می‌شوند ممکن است از فهرست پردازش‌ها یا تاریخچه پوسته خوانده شوند.

# برای استفاده از stdin و درخواست ورود از کاربر:
file:-
# برای استفاده از فایل از طریق مسیر:
file:path/to/password/file
# برای ارسال گذرواژه از طریق stdin با echo:
echo foobar | tpm2_tool -p file:-
# برای استفاده از bash here-string از طریق stdin:
tpm2_tool -p file:- <<< foobar

هنگام استفاده از یک نشست خط‌مشی (policy session) برای تایید مجوز استفاده از یک شیء، آرگومان گزینه را با کلمه کلیدی session پیشوندگذاری کنید. سپس مسیر فایل نشستی را مشخص کنید که با دستور tpm2_startauthsession(1) ایجاد شده است. در صورت تمایل، اگر نشست نیاز دارد که مقدار auth به همراه هندل نشست ارسال شود (مانند گذرواژه policy)، یک کاراکتر + و یک رشته را مطابق آنچه در بخش گذرواژه‌ها (PASSWORDS) توضیح داده شد، الحاق کنید.

برای استفاده از یک فایل زمینه نشست به نام 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، یک خط‌مشی PCR را برآورده کنید. ریززبان PCR به صورت زیر است: <pcr-spec>=<raw-pcr-file>

مشخصات PCR در بخش “مشخص‌کننده‌های بانک PCR” مستند شده است.

شناسه raw-pcr-file یک آرگومان اختیاری است که شامل خروجی محتویات خام PCR مطابق با بازگشتی از tpm2_pcrread(1) می‌باشد.

مشخص‌کننده‌های بانک PCR

برای برآورده کردن خط‌مشی PCR الگوریتم sha256 روی بانک‌های ۰، ۱، ۲ و ۳ از مشخص‌کننده زیر استفاده کنید:

pcr:sha256:0,1,2,3

تعیین AUTH.

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

•
-h, --help=[man|no-man]: نمایش صفحه راهنمای ابزار. به‌طور پیش‌فرض، تلاش می‌کند نمایش‌دهنده راهنما (manpager) را برای ابزار فراخوانی کند؛ با این حال، در صورت عدم موفقیت، خلاصه کوتاهی از ابزار را نمایش می‌دهد. این رفتار مشابه زمانی است که آرگومان گزینه “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 برای احراز هویت. یک گذرواژه متن آشکار برای تایید مجوز اقدام به TPM ارسال می‌شود. این گزینه می‌تواند برای جلوگیری از بروز مشکلات در هنگام استفاده از نشست‌های بدون نمک (unsalted) در حالت FIPS اوپن‌اس‌اس‌ال استفاده شود. اگر از مقادیر auth استفاده می‌شود، باید از یک نشست با نمک (salted) برای احراز هویت استفاده گردد.
•
-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 مترادف هستند.

tpm2_nvdefine 1
tpm2_nvundefine 1

tpm2_startauthsession -S s.ctx
tpm2_policyauthvalue -S s.ctx
tpm2_policycommandcode -S s.ctx -L policy.dat TPM2_CC_NV_UndefineSpaceSpecial
tpm2_nvdefine -C p -s 32 \
  -a "ppread|ppwrite|authread|authwrite|platformcreate|policydelete|write_stclear|read_stclear" \
  -L policy.dat 1
tpm2_flushcontext s.ctx
tpm2_startauthsession --policy-session -S s.ctx
tpm2_policyauthvalue -S s.ctx
tpm2_policycommandcode -S s.ctx TPM2_CC_NV_UndefineSpaceSpecial
tpm2_nvundefine -S s.ctx 1

اگر برای شیء nv از یک گذرواژه استفاده شده باشد، دستور nv undefine باید به صورت زیر اجرا شود:

tpm2_nvundefine -S s.ctx+mypassword  1

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

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

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

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

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

tpm2-tools