tpm2_setclock(1) General Commands Manual tpm2_setclock(1)

tpm2_setclock - تنظیم زمان در TPM

tpm2_setclock [OPTIONS] TIME

tpm2_setclock(1) - ساعت را در TPM به زمانی در آینده تنظیم می‌کند. تنها آرگومان، زمان ساعت به‌صورت یک عدد برای تنظیم است.

•
-c, --hierarchy=OBJECT:

سلسله‌مراتب مورد استفاده برای احراز اصالت، پلتفرم (platform) یا مالک (owner). در صورت عدم تعیین، به‌طور پیش‌فرض سلسله‌مراتب مالک در نظر گرفته می‌شود.

•
-p, --auth=AUTH:

مقدار احراز اصالت را برای سلسله‌مراتب مشخص‌شده توسط گزینه -c تعیین می‌کند.

•
--cphash=FILE

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

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

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

احراز اصالت برای استفاده از یک شیء در TPM2.0 می‌تواند به ۳ شکل مختلف باشد: 1. گذرواژه (Password) 2. HMAC 3. نشست‌ها (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

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

برای استفاده از فایل زمینه نشست به نام session.ctx:

session:session.ctx

برای استفاده از فایل زمینه نشست به نام session.ctx و ارسال مقدار احراز اصالت mypassword:

session:session.ctx+mypassword

برای استفاده از فایل زمینه نشست به نام session.ctx و ارسال مقدار احراز اصالت 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 روی بانک‌های 0، 1، 2 و 3 از مشخص‌کننده زیر استفاده کنید:

pcr:sha256:0,1,2,3

مشخص‌کردن AUTH.

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

•
-h, --help=[man|no-man]: نمایش صفحه راهنمای ابزار. به‌طور پیش‌فرض، تلاش می‌کند صفحه‌بند راهنما (manpager) را برای ابزار فراخوانی کند؛ با این حال، در صورت شکست، خلاصه‌ای کوتاه از ابزار را خروجی می‌دهد. این رفتار مشابه زمانی است که آرگومان گزینه “man” مشخص شود، اما در صورت درخواست صریح “man”، ابزار خطاهای man را روی stderr ارائه می‌دهد. اگر گزینه “no-man” مشخص شود، یا فراخوانی manpager ناموفق باشد، گزینه‌های کوتاه روی 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) برای اشیاء گذرای ایجادشده توسط دستور. اگر یک شیء والد از یک فایل زمینه بارگذاری شود، شیء والد گذرا نیز تخلیه خواهد شد. تخلیه خودکار همچنین در صورتی که متغیر محیطی 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'.

تعیین نام 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 مترادف هستند. ماژول‌های مختلف TCTI شناخته‌شده.

تنظیم ساعت با استفاده از گذرواژه مالک (owner).

tpm2_setclock -p ownerpw 13673142

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

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

گزارش اشکالات در گیت‌هاب (Github Issues)

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

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

tpm2-tools