| tpm2_quote(1) | General Commands Manual | tpm2_quote(1) |
نام (NAME)
tpm2_quote - ارائه کوت (quote) و امضا از TPM
خلاصه دستور (SYNOPSIS)
tpm2_quote [OPTIONS]
توضیحات (DESCRIPTION)
tpm2_quote(1) - ارائه کوت و امضا برای فهرست مشخصی از PCRها در الگوریتم/بانکهای معین.
گزینهها (OPTIONS)
- •
- -c, --key-context=OBJECT:
شیء بافتار (context object) برای کلید امضاکنندهٔ کوت.
- •
- -p, --auth=AUTH:
مقدار مجوز (authorization) را برای AK مشخصشده با گزینهٔ -C تعیین میکند.
- •
- -l, --pcr-list=PCR:
فهرست بانکهای PCR و شناسههای PCRهای انتخابشده برای هر بانک. همچنین بخش NOTES در ادامه را ببینید.
- •
- -m, --message=FILE:
فایل خروجی پیام؛ پیام کوت را که تشکیلدهنده دادههای امضاشده توسط TPM است، ذخیره میکند.
- •
- -s, --signature=FILE:
فایل خروجی امضا؛ امضا را در قالبی که از طریق گزینهٔ -f مشخص شده ذخیره میکند.
- •
- -f, --format=FORMAT:
انتخاب قالب برای فایل خروجی امضا.
- •
- -o, --pcr=FILE.
فایل خروجی PCR، اختیاری؛ فهرست مقادیر PCR را طبق آنچه توسط -l مشخص شده، ذخیره میکند.
- •
- -F, --pcrs_format=FORMAT:
انتخاب قالب برای باینری بلاب (binary blob) در فایل خروجی PCR. مقدار “values” یک باینری بلاب از مقادیر PCR خروجی میدهد. مقدار “serialized” یک باینری بلاب از مقادیر PCR را به شکل ساختار داده سریالسازیشده در قالب little endian مینویسد یا میخواند. مقدار “marshaled” یک باینری بلاب را در قالب باینری مورد استفاده توابع مارشالینگ و آنمارشالینگ TSS2 میخواند یا مینویسد. اگر از marshaled استفاده شود، دادهها به این ترتیب سریالسازی میشوند: TPML_PCR_SELECTION، UINT32 (تعداد عناصر TPML_DIGEST بعدی) و TPML_DIGEST [تعداد عناصر TPML_DIGEST]. اختیاری. پیشفرض “serialized” است.
- •
- -q, --qualification=HEX_STRING_OR_PATH:
دادههای ارائهشده بهصورت یک رشته هگز یا فایل باینری برای تعیین صلاحیت کوت، اختیاری. این پارامتر معمولاً برای افزودن یک نانس (nonce) جهت مقابله با حملات بازپخش (replay attacks) استفاده میشود.
- •
- -g, --hash-algorithm:
الگوریتم درهمسازی (هش) برای امضا. پیشفرض sha256 است.
- •
- --scheme=ALGORITHM:
طرح امضای استفادهشده برای امضای پیام. اختیاری. طرحهای امضا باید از “استانداردهای قالببندی” پیروی کنند؛ بخش “Algorithm Specifiers” را ببینید. همچنین برای فهرستی از طرحهای امضای پشتیبانیشده، بخش “Supported Signing Schemes” را ببینید. در صورت تعیین شدن، طرح امضا باید با نوع کلید مطابقت داشته باشد. در صورت مشخص نشدن، طرح امضای پیشفرض برای نوع کلید استفاده خواهد شد.
- •
- --cphash=FILE
مسیر فایل برای ثبت هش پارامترهای دستور. این مفهوم معمولاً تحت عنوان cpHash شناخته میشود. نکته: هنگامی که این گزینه انتخاب شود، این ابزار در واقع دستور را اجرا نخواهد کرد، بلکه صرفاً یک cpHash را بازمیگرداند.
قالب شیء زمینه (Context Object Format)
نوع یک شیء زمینه، چه یک دستگیره (handle) باشد چه نام فایل، بر اساس منطق زیر و بهترتیب تعیین میشود:
- •
- اگر آرگومان مسیر یک فایل باشد، آن فایل به عنوان یک شیء گذرا (transient) بازیابیشدهٔ TPM بارگذاری میشود.
- •
- اگر آرگومان با پیشوند یکی از موارد زیر مطابقت داشته باشد:
- •
- owner: سلسلهمراتب مالک (owner hierarchy)
- •
- platform: سلسلهمراتب پلتفرم (platform hierarchy)
- •
- endorsement: سلسلهمراتب تصدیق (endorsement hierarchy)
- •
- lockout: شیء پایدار کنترل قفل (lockout control persistent object)
- •
- اگر آرگومان بتواند به عنوان یک عدد بارگذاری شود، به عنوان یک handle در نظر گرفته شده (مثلاً 0x81010013) و مستقیماً استفاده میشود.
قالببندی احراز هویت (Authorization Formatting)
احراز هویت برای استفاده از یک شیء در TPM2.0 میتواند به ۳ شکل مختلف باشد: ۱. Password ۲. HMAC ۳. Sessions
نکته: “در صورت مشخص نشدن، احراز هویت به صورت پیشفرض روی گذرواژه خالی (EMPTY PASSWORD) تنظیم میشود”.
برای اصالتسنجی با مقادیر auth، دستورهای ابزار بهطور ضمنی یک نشست HMAC ایجاد میکنند. بنابراین، گذرواژهها به صورت رمزنشده منتقل نمیشوند. این مورد برای گذرواژههای تعریفشده برای اشیاء صدق نمیکند. در این حالت، باید از یک نشست HMAC استفاده شود (ببینید: tpm2_startauthsession(1)).
گذرواژهها (Passwords)
گذرواژهها با استفاده از شناسههای پیشوندی به اشکال زیر تفسیر میشوند.
نکته: بهطور پیشفرض، زمانی که گذرواژهها پیشوندی نداشته باشند، در قالب رشته در نظر گرفته میشوند.
رشته (String)
یک گذرواژه رشتهای، که با پیشوند “str:” یا عدم وجود آن (رشته خام بدون پیشوند) مشخص میشود، تفسیر نشده و مستقیماً برای احراز هویت استفاده میشود.
مثالها (Examples)
-
foobar str:foobar
رشته هگز (Hex-string)
یک گذرواژه رشته هگز، که با پیشوند “hex:” مشخص میشود، از قالب هگزادسیمال به یک آرایه بایتی تبدیل شده و در نتیجه امکان استفاده از گذرواژههایی با نویسههای غیرقابلچاپ و/یا نامناسب در ترمینال را فراهم میکند.
مثال (Example)
-
hex:1122334455667788
فایل (File)
یک گذرواژه مبتنی بر فایل، که با پیشوند “file:” مشخص میشود، باید مسیر فایلی حاوی گذرواژه برای خوانده شدن توسط ابزار یا یک “-” برای استفاده از stdin باشد. ذخیره گذرواژهها در فایل از نشت اطلاعات جلوگیری میکند؛ زیرا گذرواژههای ارسالشده به عنوان گزینه ممکن است از فهرست فرآیندها یا قابلیتهای متداول تاریخچه پوسته خوانده شوند.
مثالها (Examples)
-
# to use stdin and be prompted file:- # to use a file from a path file:path/to/password/file # to echo a password via stdin: echo foobar | tpm2_tool -p file:- # to use a bash here-string via stdin: tpm2_tool -p file:- <<< foobar هنگام استفاده از یک نشست خطمشی برای مجاز کردن استفاده از یک شیء، به آرگومان گزینه، پیشوند کلیدواژهٔ session را اضافه کنید. سپس مسیری را به فایل نشستی که با tpm2_startauthsession(1) ایجاد شده است مشخص نمایید. در صورت تمایل، اگر نشست نیازمند ارسال یک مقدار احراز هویت (auth value) همراه با دستگیرهٔ نشست باشد (مانند policy password)، یک + و یک رشته را همانگونه که در بخش گذرواژهها (Passwords) شرح داده شده اضافه کنید.
مثالها (Examples)
برای استفاده از یک فایل زمینهٔ نشست به نام session.ctx:
-
session:session.ctx
برای استفاده از یک فایل زمینهٔ نشست به نام session.ctx و ارسال authvalue با مقدار mypassword:
-
session:session.ctx+mypassword
برای استفاده از یک فایل زمینهٔ نشست به نام session.ctx و ارسال authvalue از نوع HEX با مقدار 0x11223344:
-
session:session.ctx+hex:11223344
اعتبارسنجیهای پیسیآر (PCR Authorizations)
شما میتوانید یک خطمشی PCR را با استفاده از پیشوند “pcr:” و زبان کوچک مربوط به PCR برآورده سازید. زبان کوچک PCR به شرح زیر است: <pcr-spec>=<raw-pcr-file>
مشخصهٔ PCR در بخش “مشخصکنندههای بانک PCR” مستند شده است.
آرگومان raw-pcr-file یک آرگومان اختیاری است که شامل خروجی محتویات خام PCR بازگردانده شده توسط tpm2_pcrread(1) میباشد.
مشخصکنندههای بانک PCR
مثالها (Examples)
برای برآورده ساختن یک خطمشی PCR از نوع sha256 روی بانکهای 0، 1، 2 و 3 از مشخصکنندهای به این شکل استفاده کنید:
-
pcr:sha256:0,1,2,3
مشخص کردن AUTH.
مشخصکنندههای قالب امضا (Signature Format Specifiers)
انتخاب قالب برای فایل خروجی امضا. مقدار tss (پیشفرض) یک حباب باینری (binary blob) را بر اساس مشخصات TPM 2.0 و هرگونه فاصلهگذاری احتمالی کامپایلر خروجی میدهد. گزینهٔ plain دادههای خام امضا را مطابق با الگوریتم رمزنگاری بهکاررفته در خروجی قرار میدهد. FORMAT امضا.
مشخصکنندههای بانک پیسیآر (PCR Bank Specifiers)
فهرستهای انتخاب بانک PCR از مشخصات زیر پیروی میکنند:
-
<BANK>:<PCR>[,<PCR>] or <BANK>:all
چندین بانک را میتوان با `+' از یکدیگر جدا کرد.
به عنوان مثال:
-
sha1:3,4+sha256:all
این عبارت، PCRهای 3 و 4 را از بانک SHA1 و PCRهای 0 تا 23 را از بانک SHA256 انتخاب خواهد کرد.
برخی دستورها از تعیین مقادیر پلمب پیشرو (forward sealing) نیز پشتیبانی میکنند:
-
sha1:0,1=da39a3ee5e6b4b0d3255bfef95601890afd80709,2
این دستور مقادیر فعلی را برای PCRهای 0 و 2 انتخاب میکند، اما برای PCR 1 از مقدار مشخصشده استفاده مینماید. طول خلاصه (Digest) باید با اندازهٔ بانک مطابقت داشته باشد. پیشوند اختیاری 0x حذف خواهد شد..SS نکته (Note) انتخابهای PCR (یا PCR Selections) امکان حداکثر ۵ نگاشت درهمسازی به انتخاب PCR را میدهند. این یک محدودیت طراحی در تکفراخوانی به TPM جهت دریافت مقادیر PCR است.
گزینههای عمومی (COMMON OPTIONS)
این مجموعه از گزینهها در بسیاری از برنامهها مشترک هستند و اطلاعاتی را فراهم میکنند که ممکن است بسیاری از کاربران انتظار داشته باشند.
- •
- -h, --help=[man|no-man]: نمایش صفحه راهنمای (manpage) ابزار. بهطور پیشفرض، تلاش میکند صفحهبند man را برای ابزار فراخوانی کند، با این حال در صورت شکست، خلاصهای کوتاه از ابزار را خروجی میدهد. این رفتار مشابه زمانی است که آرگومان گزینهٔ “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 برای احراز هویت. یک گذرواژهٔ متنساده (clear text) برای مجازشماری عملیات به TPM ارسال میشود. این گزینه میتواند برای اجتناب از مشکلات هنگام استفاده از نشستهای بدون نمک (unsalted) در حالت OpenSSL FIPS به کار رود. اگر از مقادیر auth استفاده شود، باید یک نشست نمکدار (salted) برای احراز هویت به کار رود.
- •
- -R, --autoflush: فعالسازی تخلیه خودکار (autoflush) برای اشیاء گذرا (transient objects) ایجادشده توسط دستور. اگر یک شیء والد از یک فایل زمینه (context file) بارگیری شود، شیء والد گذرا نیز تخلیه (flush) خواهد شد. تخلیه خودکار همچنین در صورتی که متغیر محیطی 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 مقداردهی اولیه نمیکند. برخی ابزارها گزینههای off-tpm را مجاز میدانند و بنابراین از عدم استفاده از TCTI پشتیبانی میکنند. ابزارهایی که از آن پشتیبانی نمیکنند، در صورت تلاش برای استفاده بدون اتصال TCTI، با خطا مواجه میشوند. از هیچ گزینهای پشتیبانی نمیکند و باید دقیقاً با متن “none” ارائه شود.
آرگومانهای گزینهٔ خط فرمان یا متغیر محیطی به این قالب هستند:
<tcti-name>:<tcti-option-config>
مشخص کردن یک رشتهٔ خالی برای هر یک از <tcti-name> یا <tcti-option-config> به ترتیب منجر به استفاده از مقدار پیشفرض برای آن بخش میشود..SS "پیشفرضهای 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: برای device TCTI، فایل دستگاه نویسهای TPM جهت استفاده توسط device TCTI میتواند تعیین شود. پیشفرض /dev/tpm0 است.
مثال: -T device:/dev/tpm0 یا export TPM2TOOLS_TCTI=“device:/dev/tpm0”
- •
- mssim: برای mssim TCTI، نام دامنه یا نشانی IP و شماره درگاه استفادهشده توسط شبیهساز میتواند تعیین شود. پیشفرضها 127.0.0.1 و 2321 هستند.
مثال: -T mssim:host=localhost,port=2321 یا export TPM2TOOLS_TCTI=“mssim:host=localhost,port=2321”
- •
- abrmd: برای abrmd TCTI، قالب رشتهٔ پیکربندی مجموعهای از جفتهای کلید-مقدار ساده است که با نویسهٔ `,' از هم جدا شدهاند. هر رشتهٔ کلید و مقدار با نویسهٔ `=' از یکدیگر جدا میشوند.
- •
- پودمان 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 مترادف هستند. پودمانهای مختلف شناختهشدهٔ TCTI.
مثالها (EXAMPLES)
-
tpm2_createprimary -C e -c primary.ctx tpm2_create -C primary.ctx -u key.pub -r key.priv tpm2_load -C primary.ctx -u key.pub -r key.priv -c key.ctx tpm2_quote -Q -c key.ctx -l 0x0004:16,17,18+0x000b:16,17,18 حداکثر تعداد PCRهایی که میتوانند بهطور همزمان گواهی (quote) شوند، وابسته به حداکثر طول یک بانک است.
در بیشتر TPMها، این بدان معناست که این ابزار میتواند تا 24 PCR را بهطور همزمان گواهی (quote) کند.
این دستور یک امضای مجزا (detached signature) ایجاد میکند.
وضعیت خروج (EXIT STATUS)
ابزارها میتوانند هر یک از کدهای زیر را بازگردانند:
- •
- 0 - موفقیتآمیز.
- •
- 1 - خطای نامشخص عمومی.
- •
- 2 - خطای پردازش گزینهها.
- •
- 3 - خطای احراز هویت.
- •
- 4 - خطای مربوط به TCTI.
- •
- 5 - طرحواره (scheme) پشتیبانینشده. قابل اعمال بر tpm2_testparams.
گزارش باگها (BUGS)
راهنما (HELP)
به فهرست پستی (Mailing List) مراجعه کنید.
مجوز (LICENSE)
این اثر تحت مجوز بینالمللی کریتیو کامنز ارجاع 4.0 (CC BY 4.0) مجوزدهی شده است.
| tpm2-tools |