tpm2_changeauth(1) General Commands Manual tpm2_changeauth(1)

tpm2_changeauth - تغییر مقادیر مجاز برای اشیاء TPM.

tpm2_changeauth [گزینه‌ها] [آرگومان]

tpm2_changeauth - مقادیر مجوز را برای سلسله‌مراتب‌های گوناگون، نمایه‌های NV، اشیاء گذرا و پایدار پیکربندی می‌کند.

نکته: برای اشیاء غیردائمی (اشیاء گذرا و اشیاء پایدار)، نسخه‌های اطلاعات خصوصی (فایل‌ها یا هندل‌های پایدار) که پیش از تغییر مجوز ایجاد شده‌اند، باطل نخواهند شد.

گذرواژه‌ها باید از «استانداردهای قالب‌بندی مجوز با گذرواژه» پیروی کنند؛ بخش «قالب‌بندی مجوزها (Authorization Formatting)» را ببینید.

•
-c, --object-context=OBJECT:

شیء زمینه کلید که باید برای این عملیات استفاده شود.

•
-p, --object-auth=AUTH:

مقدار مجوز قبلی برای شیء TPM مشخص‌شده با -c.

•
-C, --parent-context=OBJECT:

شیء والد. این گزینه در صورتی که شیء مورد نظر برای عملیات یک شیء گذرا یا پایدار باشد، الزامی است.

•
-r, --private=FILE: فایل خروجی که شامل بخش حساس جدید شیئی است که مجوز آن تغییر کرده است. # جزئیات محافظت (Protection Details)

اشیائی که می‌توانند به خارج از TPM منتقل شوند باید محافظت شوند (محرمانگی و یکپارچگی). برای نمونه، اشیاء گذرا نیازمند آن هستند که داده‌های محافظت‌شدهٔ TPM (مواد کلید یا مهروموم) در خارج از TPM ذخیره شوند. این امر در ابزارهایی مانند tpm2_create(1) مشاهده می‌شود، جایی که گزینهٔ -r این داده‌های محافظت‌شده را به عنوان خروجی تولید می‌کند. این حباب داده (blob) شامل بخش‌های حساس شیء است. بخش‌های حساس شیء توسط شیء والد محافظت می‌شوند، با استفاده از جزئیات رمزنگاری متقارن والد برای رمزنگاری داده‌های حساس و اعمال HMAC روی آن.

جزئیات عمیق‌تر را می‌توان در بخش‌های ۲۳ از سند زیر یافت:

•
https://trustedcomputinggroup.org/wp-content/uploads/TPM-Rev-2.0-Part-1-Architecture-01.38.pdf

به‌ویژه شکل ۲۰ (Figure 20) مرتبط است، هرچند که مشخصاً به حباب‌های تکثیر اشاره دارد، اما فرایند یکسان است.

اگر خروجی از tpm2_duplicate(1) باشد، خروجی کمی متفاوت خواهد بود، همان‌طور که در بخش ۲۳ به‌طور کامل شرح داده شده است.

•
--cphash=FILE

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

•
--rphash=FILE

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

•
-S, --session=FILE:

نشست ایجادشده با استفاده از tpm2_startauthsession. از این گزینه می‌توان برای تعیین یک نشست کمکی جهت حسابرسی و یا رمزنگاری/رمزگشایی پارامترها استفاده کرد.

•
ARGUMENT آرگومان خط فرمان، مقدار AUTH جدیدی را برای شیء مشخص‌شده با -c تعیین می‌کند.

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

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

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

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

برای احراز هویت با مقادیر مجاز (auth values)، دستورات ابزار به‌طور ضمنی یک نشست 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:-
# برای استفاده از here-string در bash از طریق stdin:
tpm2_tool -p file:- <<< foobar

هنگام استفاده از یک نشست خط‌مشی (policy session) جهت مجاز کردن استفاده از یک شیء، آرگومان گزینه را با کلمه کلیدی session شروع کنید. سپس مسیر فایل نشستی را که با tpm2_startauthsession(1) ایجاد شده است مشخص نمایید. در صورت تمایل، اگر نشست نیازمند ارسال یک مقدار auth همراه با هندل نشست باشد (مانند گذرواژه سیاست)، یک + و یک رشته را مطابق آنچه در بخش گذرواژه‌ها (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) چاپ خواهد شد.

استفاده موفقیت‌آمیز از ویژگی manpages نیازمند نصب بودن صفحات راهنما یا قرار داشتن آن‌ها در مسیر 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 (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، قالب رشته پیکربندی مجموعه‌ای از جفت‌های کلید-مقدار ساده است که با نویسه `,' از هم جدا شده‌اند. رشته‌های هر کلید و مقدار با نویسه `=' از یکدیگر تفکیک می‌شوند.
•
رابط abrmd TCTI از دو کلید پشتیبانی می‌کند:
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_changeauth -c owner newpass
tpm2_changeauth -c endorsement newpass
tpm2_changeauth -c lockout newpass

tpm2_changeauth -c o -p newpass newerpass
tpm2_changeauth -c e -p newpass newerpass
tpm2_changeauth -c l -p newpass newerpass

tpm2_changeauth -c o -p oldpass

tpm2_createprimary -Q -C o -c prim.ctx
tpm2_create -Q -g sha256 -G aes -u key.pub -r key.priv -C prim.ctx
tpm2_load -C prim.ctx -u key.pub -r key.priv -n key.name -c key.ctx
tpm2_changeauth -c key.ctx -C prim.ctx -r key.priv newkeyauth

نیازمند پشتیبانی از نشست توسعه‌یافته (Extended Session) است.

tpm2_startauthsession -S session.ctx
tpm2_policycommandcode -S session.ctx -L policy.nvchange TPM2_CC_NV_ChangeAuth
tpm2_flushcontext session.ctx
NVIndex=0x1500015
tpm2_nvdefine   $NVIndex -C o -s 32 -a "authread|authwrite" -L policy.nvchange
tpm2_startauthsession \--policy-session -S session.ctx
tpm2_policycommandcode -S session.ctx -L policy.nvchange TPM2_CC_NV_ChangeAuth
tpm2_changeauth -p session:session.ctx -c $NVIndex newindexauth

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

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

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

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

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

tpm2-tools