| tpm2_changeauth(1) | General Commands Manual | tpm2_changeauth(1) |
نام (NAME)
tpm2_changeauth - تغییر مقادیر مجاز برای اشیاء TPM.
خلاصه دستور (SYNOPSIS)
tpm2_changeauth [گزینهها] [آرگومان]
توضیحات (DESCRIPTION)
tpm2_changeauth - مقادیر مجوز را برای سلسلهمراتبهای گوناگون، نمایههای NV، اشیاء گذرا و پایدار پیکربندی میکند.
نکته: برای اشیاء غیردائمی (اشیاء گذرا و اشیاء پایدار)، نسخههای اطلاعات خصوصی (فایلها یا هندلهای پایدار) که پیش از تغییر مجوز ایجاد شدهاند، باطل نخواهند شد.
گزینهها (OPTIONS)
گذرواژهها باید از «استانداردهای قالببندی مجوز با گذرواژه» پیروی کنند؛ بخش «قالببندی مجوزها (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 روی آن.
جزئیات عمیقتر را میتوان در بخشهای ۲۳ از سند زیر یافت:
بهویژه شکل ۲۰ (Figure 20) مرتبط است، هرچند که مشخصاً به حبابهای تکثیر اشاره دارد، اما فرایند یکسان است.
اگر خروجی از tpm2_duplicate(1) باشد، خروجی کمی متفاوت خواهد بود، همانطور که در بخش ۲۳ بهطور کامل شرح داده شده است.
- •
- --cphash=FILE
مسیر فایل برای ذخیره هش پارامترهای دستور. این مقدار معمولاً به عنوان cpHash شناخته میشود. نکته: هنگامی که این گزینه انتخاب شود، ابزار در واقع دستور را اجرا نخواهد کرد، بلکه صرفاً یک cpHash را برمیگرداند، مگر اینکه rphash نیز درخواست شده باشد.
- •
- --rphash=FILE
مسیر فایل برای ذخیره هش پارامترهای پاسخ. این مقدار معمولاً به عنوان rpHash شناخته میشود.
- •
- -S, --session=FILE:
نشست ایجادشده با استفاده از tpm2_startauthsession. از این گزینه میتوان برای تعیین یک نشست کمکی جهت حسابرسی و یا رمزنگاری/رمزگشایی پارامترها استفاده کرد.
- •
- ARGUMENT آرگومان خط فرمان، مقدار AUTH جدیدی را برای شیء مشخصشده با -c تعیین میکند.
مراجع (References)
قالب شیء زمینه (Context Object Format)
نوع یک شیء زمینه، چه هندل (handle) باشد یا نام فایل، بر اساس منطق زیر بهترتیب تعیین میشود:
- •
- اگر آرگومان یک مسیر فایل باشد، آن فایل به عنوان یک شیء گذرا (transient) بازگردانیشده TPM بارگذاری میشود.
- •
- اگر آرگومان با پیشوند یکی از موارد زیر مطابقت داشته باشد:
- •
- owner: سلسلهمراتب مالک (owner hierarchy)
- •
- platform: سلسلهمراتب پلتفرم (platform hierarchy)
- •
- endorsement: سلسلهمراتب تایید/امضا (endorsement hierarchy)
- •
- lockout: شیء پایدار کنترل قفل (lockout control persistent object)
- •
- اگر آرگومان بتواند به عنوان یک عدد بارگذاری شود، به عنوان یک هندل تلقی میشود (مانند 0x81010013) و مستقیماً استفاده خواهد شد.
قالببندی مجوزها (Authorization Formatting)
مجوز برای استفاده از یک شیء در TPM2.0 میتواند به ۳ شکل مختلف باشد: 1. گذرواژه (Password) 2. کد HMAC 3. نشستها (Sessions)
نکته: “در صورت مشخص نشدن، مجوزها بهطور پیشفرض به گذرواژه خالی (EMPTY PASSWORD) تنظیم میشوند”.
برای احراز هویت با مقادیر مجاز (auth values)، دستورات ابزار بهطور ضمنی یک نشست 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:- # برای استفاده از here-string در bash از طریق stdin: tpm2_tool -p file:- <<< foobar
نشستها (Sessions)
هنگام استفاده از یک نشست خطمشی (policy session) جهت مجاز کردن استفاده از یک شیء، آرگومان گزینه را با کلمه کلیدی session شروع کنید. سپس مسیر فایل نشستی را که با tpm2_startauthsession(1) ایجاد شده است مشخص نمایید. در صورت تمایل، اگر نشست نیازمند ارسال یک مقدار auth همراه با هندل نشست باشد (مانند گذرواژه سیاست)، یک + و یک رشته را مطابق آنچه در بخش گذرواژهها (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.
گزینههای عمومی (COMMON OPTIONS)
این مجموعه گزینهها میان بسیاری از برنامهها مشترک هستند و اطلاعاتی را ارائه میدهند که اغلب کاربران انتظار دارند.
- •
- -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 (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 دستگاه (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 مترادف یکدیگرند.
مثالها (EXAMPLES)
تنظیم مجوزهای مالک، تاییدیه و قفل بر روی newpass
-
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
تغییر مجوز برای یک نمایه NV (NV Index)
نیازمند پشتیبانی از نشست توسعهیافته (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
کدهای خروجی (RETURNS)
ابزارها میتوانند هر یک از کدهای زیر را برگردانند:
- •
- 0 - موفقیتآمیز.
- •
- 1 - خطای عمومی و نامشخص.
- •
- 2 - خطای مدیریت گزینهها.
- •
- 3 - خطای احراز هویت.
- •
- 4 - خطای مربوط به TCTI.
- •
- 5 - طرحواره پشتیبانینشده (Non supported scheme). قابل اعمال در tpm2_testparams.
اشکالات (BUGS)
راهنما (HELP)
مشاهده فهرست پستی (Mailing List)
مجوز (LICENSE)
این اثر تحت مجوز بینالمللی کریتیو کامنز ارجاع ۴.۰ (CC BY 4.0).
| tpm2-tools |