| tpm2_policypcr(1) | General Commands Manual | tpm2_policypcr(1) |
نام (NAME)
tpm2_policypcr(1) - ایجاد یک خطمشی که شامل مقادیر مشخصشدهٔ PCR است.
خلاصه دستور (SYNOPSIS)
tpm2_policypcr [گزینهها]
توضیحات (DESCRIPTION)
دستور tpm2_policypcr(1) یک رویداد خطمشی PCR را با TPM ایجاد میکند. یک رویداد خطمشی PCR، خطمشیای مقید به مقادیر مشخصشدهٔ PCR ایجاد میکند و در خطمشیهای بزرگتری که با استفاده از رویدادهای policyor و policyauthorize ساخته میشوند، مفید است. برای مشاهده نحوه استفاده از آنها به ترتیب به tpm2_policyor(1) و tpm2_policyauthorize(1) مراجعه کنید. دادههای PCR اعمالشده در خطمشی را میتوان به یکی از ۳ روش زیر مشخص کرد: 1. فایلی شامل فهرستی بههمپیوسته از مقادیر PCR، مانند خروجی tpm2_pcrread. 2. الزام خواندن مقادیر PCR از TPM از طریق مشخص نکردن فایل ورودی PCR. 3. دایجست تمام مقادیر PCR که مستقیماً به عنوان یک آرگومان مشخص میشود.
گزینهها (OPTIONS)
- •
- -L، --policy=FILE:
فایل برای ذخیره دایجست خطمشی.
- •
- -f، --pcr=FILE:
مسیر یا نام اختیاری فایل حاوی مقادیر مورد انتظار PCR برای اندیس مشخصشده. حالت پیشفرض خواندن PCRهای فعلی بر اساس فهرست تعیینشده است.
- •
- -l، --pcr-list=PCR:
فهرست بانکهای PCR و شناسههای PCRهای انتخابشده برای هر بانک. میتوان مقادیر پلمب پیشرو (forward sealing) را نیز مشخص کرد.
- •
- -S، --session=FILE:
فایل نشست خطمشی ایجادشده از طریق گزینه -S در tpm2_startauthsession(1).
- •
- آرگومان (ARGUMENT): دایجست محاسبهشدهٔ تمام مقادیر PCR که بهصورت یک جریان بایتی هگزادسیمال مشخص میشود. برای مثال: openssl dgst -sha256 -binary pcr.bin | xxd -p -c 32
مراجع (References)
قالب شیء بافتار (Context Object Format)
نوع یک شیء بافتار، چه یک دستگیره (handle) باشد چه نام فایل، بر اساس منطق زیر بهترتیب تعیین میشود:
- •
- اگر آرگومان مسیر یک فایل باشد، فایل به عنوان یک شیء گذرا (transient object) بازیابیشدهٔ TPM بارگذاری میشود.
- •
- اگر آرگومان تطابق پیشوندی با یکی از موارد زیر باشد:
- •
- owner: سلسلهمراتب مالک (owner hierarchy)
- •
- platform: سلسلهمراتب پلتفرم (platform hierarchy)
- •
- endorsement: سلسلهمراتب تایید (endorsement hierarchy)
- •
- lockout: شیء پایدار کنترل قفل (lockout control persistent object)
- •
- اگر آرگومان بتواند بهصورت یک عدد بارگذاری شود، به عنوان یک دستگیره تلقی خواهد شد (برای مثال 0x81010013) و مستقیماً استفاده میشود._OBJECT_.
قالببندی احراز مجوز (Authorization Formatting)
مجوز برای استفاده از یک شیء در TPM 2.0 میتواند به ۳ شکل مختلف ارائه شود: 1. گذرواژه (Password) 2. کد HMAC 3. نشستها (Sessions)
نکته: “در صورت مشخص نشدن، مجوزها بهطور پیشفرض برابر با گذرواژه خالی (EMPTY PASSWORD) در نظر گرفته میشوند”.
برای احراز هویت با مقادیر auth، دستورات ابزار بهطور ضمنی یک نشست HMAC ایجاد میکنند. بنابراین گذرواژهها بهصورت رمزنشده منتقل نمیشوند. این موضوع در مورد گذرواژههای تعریفشده برای اشیاء صدق نمیکند. در این حالت، باید از یک نشست HMAC استفاده شود (دستور tpm2_startauthsession(1) را ببینید).
گذرواژهها (Passwords)
گذرواژهها در اشکال زیر با استفاده از شناسههای پیشوندی تفسیر میشوند.
نکته: بهطور پیشفرض هنگامی که گذرواژهها پیشوندی نداشته باشند، در قالب رشته (string) در نظر گرفته میشوند.
رشته (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 بش از طریق stdin: tpm2_tool -p file:- <<< foobar
نشستها (Sessions)
هنگام استفاده از یک نشست خطمشی برای مجاز کردن استفاده از یک شیء، آرگومان گزینه را با کلمه کلیدی 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 (PCR bank specifiers)” مستند شده است.
آرگومان raw-pcr-file یک آرگومان اختیاری است که شامل خروجی محتویات خام PCR برگرداندهشده توسط tpm2_pcrread(1) است.
مشخصکنندههای بانک PCR.
مثالها (Examples)
برای برآورده کردن یک خطمشی PCR با الگوریتم sha256 روی بانکهای 0، 1، 2 و 3 از یک مشخصکننده به صورت زیر استفاده کنید:
-
pcr:sha256:0,1,2,3
مشخص کردن AUTH.
مشخصکنندههای بانک PCR (PCR Bank Specifiers)
فهرستهای انتخاب بانک PCR از مشخصات زیر پیروی میکنند:
-
<BANK>:<PCR>[,<PCR>] or <BANK>:all
چندین بانک میتوانند با `+' از یکدیگر جدا شوند.
برای مثال:
-
sha1:3,4+sha256:all
شناسههای ۳ و ۴ را از بانک SHA1 و شناسههای ۰ تا ۲۳ را از بانک SHA256 انتخاب خواهد کرد.
برخی دستورات از تعیین مقادیر پلمب پیشرو (forward sealing) نیز پشتیبانی میکنند:
-
sha1:0,1=da39a3ee5e6b4b0d3255bfef95601890afd80709,2
این دستور مقادیر فعلی را برای PCRهای ۰ و ۲ انتخاب میکند، اما برای PCR 1 از مقدار مشخصشده استفاده مینماید. طول دایجست باید با اندازه بانک مطابقت داشته باشد. پیشوند اختیاری 0x حذف خواهد شد.
نکته (Note)
انتخابهای PCR حداکثر ۵ نگاشت هش به انتخاب PCR را مجاز میدانند. این یک محدودیت در طراحی در فراخوانی منفرد به TPM جهت دریافت مقادیر PCR است. PCR.
گزینههای عمومی (COMMON OPTIONS)
این مجموعه از گزینهها میان بسیاری از برنامهها مشترک هستند و اطلاعاتی را ارائه میدهند که بسیاری از کاربران انتظار دارند.
- •
- -h، --help=[man|no-man]: نمایش صفحه راهنمای (manpage) ابزار. بهطور پیشفرض، تلاش میکند صفحهبند راهنما (manpager) را برای ابزار فراخوانی کند؛ اما در صورت عدم موفقیت، خلاصهای کوتاه از ابزار را خروجی میدهد. این رفتار مشابه زمانی است که آرگومان گزینهٔ “man” مشخص شود، اما در صورتی که بهطور صریح “man” درخواست شود، ابزار خطاهای man را در stderr ارائه میدهد. اگر گزینهٔ “no-man” مشخص شود یا صفحهبند راهنما شکست بخورد، گزینههای کوتاه به stdout فرستاده میشوند.
برای استفاده موفقیتآمیز از ویژگی صفحات راهنما، نیاز است صفحات راهنما نصب شده باشند یا در 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)، فایل دستگاه نویسهای (character device) TPM جهت استفاده توسط TCTI دستگاه میتواند مشخص شود. پیشفرض /dev/tpm0 است.
مثال: -T device:/dev/tpm0 یا export TPM2TOOLS_TCTI=“device:/dev/tpm0”
- •
- mssim: برای TCTI شبیهساز mssim، نام دامنه یا آدرس IP و شماره درگاه (پورت) استفادهشده توسط شبیهساز میتواند مشخص شود. مقادیر پیشفرض 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'.
مشخص کردن نام tcti معادل tabrmd و رشته پیکربندی 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)
یک نشست آزمایشی (trial) را آغاز میکند، یک خطمشی PCR میسازد و از آن خطمشی در ایجاد یک شیء استفاده میکند. سپس، از یک نشست خطمشی (policy) برای باز کردن پلمب (unseal) برخی دادههای ذخیرهشده در شیء استفاده میکند.
گام ۱: ایجاد یک خطمشی (Step 1: create a policy)
-
tpm2_createprimary -C e -g sha256 -G ecc -c primary.ctx tpm2_pcrread -o pcr.dat "sha1:0,1,2,3" tpm2_startauthsession -S session.dat tpm2_policypcr -S session.dat -l "sha1:0,1,2,3" -f pcr.dat -L policy.dat tpm2_flushcontext session.dat
گام ۲: ایجاد یک شیء با استفاده از آن خطمشی (Step 2: create an object using that policy)
-
tpm2_create -Q -u key.pub -r key.priv -C primary.ctx -L policy.dat \ -i- <<< "12345678" tpm2_load -C primary.ctx -u key.pub -r key.priv -n unseal.key.name \ -c unseal.key.ctx
گام ۳: برآورده کردن خطمشی (Step 3: Satisfy the policy)
-
tpm2_startauthsession --policy-session -S session.dat tpm2_policypcr -S session.dat -l "sha1:0,1,2,3" -f pcr.dat -L policy.dat
گام ۴: استفاده از خطمشی (Step 4: Use the policy)
-
tpm2_unseal -psession:session.dat -c unseal.key.ctx 12345678 tpm2_flushcontext session.dat
کدهای بازگشتی (RETURNS)
ابزارها میتوانند هر یک از کدهای زیر را برگردانند:
- •
- 0 - موفقیت.
- •
- 1 - خطای عمومی و نامشخص.
- •
- 2 - خطای پردازش گزینهها.
- •
- 3 - خطای احراز اصالت.
- •
- 4 - خطای مرتبط با TCTI.
- •
- 5 - طرح پشتیبانینشده. قابل اعمال روی tpm2_testparams.
محدودیتها (LIMITATIONS)
انتظار دارد که از قبل یک نشست از طریق tpm2_startauthsession(1) برقرار شده باشد و نیازمند یکی از موارد زیر است:
- •
- دسترسی مستقیم به دستگاه
- •
- پشتیبانی از نشست تعمیمیافته با tpm2-abrmd.
بدون آن، اغلب مدیران منابع حالت نشست را بین فراخوانیهای دستور ذخیره نخواهند کرد.
اشکالات (BUGS)
راهنما (HELP)
مشاهدهٔ فهرست پستی (Mailing List)
مجوز (LICENSE)
این اثر تحت مجوز بینالمللی Creative Commons Attribution 4.0 (CC BY 4.0)منتشر شده است.
| tpm2-tools |