| tpm2_pcrevent(1) | General Commands Manual | tpm2_pcrevent(1) |
نام (NAME)
tpm2_pcrevent - یک فایل را درهمسازی کرده و به صورت اختیاری یک PCR را گسترش میدهد
خلاصه دستور (SYNOPSIS)
tpm2_pcrevent [OPTIONS] FILE PCR_INDEX
توضیحات (DESCRIPTION)
دستور tpm2_pcrevent(1) در صورت مشخص شدن FILE یا ورودی استاندارد (stdin)، آن را درهمسازی (هش) میکند. این دستور از تمامی الگوریتمهای درهمسازی که TPM پشتیبانی میکند، استفاده مینماید.
به صورت اختیاری، اگر نمایهٔ PCR مشخص شده باشد، آن PCR را برای تمامی الگوریتمهای پشتیبانیشده با چکیدهٔ درهمسازی (hash digest) گسترش میدهد. شناسههای FILE و _PCR_INDEX_ نیازی نیست به ترتیب خاصی وارد شوند.
در هر دو حالت، الگوریتم هش استفادهشده و مقدار چکیده را در خروجی استاندارد (stdout)، در هر خط یک مورد چاپ میکند:
alg:digest
که در آن alg الگوریتم استفادهشده (مانند sha1) و digest چکیدهٔ حاصل از محاسبهٔ درهمسازی alg بر روی دادهها است.
بخشهای ۲۳.۱ و ۱۷ از مشخصات فنی TPM2.0 را ببینید.
گزینهها (OPTIONS)
این گزینهها گسترش PCR را کنترل میکنند:
- •
- -P, --auth=AUTH:
مقدار مجوز (authorization) را برای PCR مشخص میکند.
- •
- -S, --session=FILE:
نشستهای کمکی (auxiliary sessions) را برای دستور مشخص میکند.
- •
- --cphash=FILE
مسیر فایل برای ثبت هش پارامترهای دستور. این مقدار معمولاً به عنوان cpHash نامیده میشود. نکته: هنگامی که این گزینه انتخاب شود، ابزار در واقع دستور را اجرا نمیکند، بلکه صرفاً یک cpHash بازمیگرداند.
مراجع (References)
گزینههای عمومی (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 مترادف یکدیگرند.
قالببندی مجوزها (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
مثالها (EXAMPLES)
درهمسازی (هش کردن) یک فایل
-
echo "foo" > data tpm2_pcrevent data
درهمسازی یک فایل و گسترش PCR شماره ۸
-
echo "foo" > data tpm2_pcrevent 8 data
کدهای خروجی (RETURNS)
ابزارها میتوانند هر یک از کدهای زیر را بازگردانند:
- •
- 0 - موفقیتآمیز.
- •
- 1 - خطای عمومی و نامشخص.
- •
- 2 - خطای مدیریت گزینهها.
- •
- 3 - خطای احراز هویت.
- •
- 4 - خطای مربوط به TCTI.
- •
- 5 - طرحواره پشتیبانینشده (Non supported scheme). قابل اعمال در tpm2_testparams.
اشکالات (BUGS)
راهنما (HELP)
مشاهده فهرست پستی (Mailing List)
مجوز (LICENSE)
این اثر تحت مجوز بینالمللی کریتیو کامنز ارجاع ۴.۰ (CC BY 4.0).
| tpm2-tools |