tpm2_setprimarypolicy(1) General Commands Manual tpm2_setprimarypolicy(1)

tpm2_setprimarypolicy - تنظیم سیاست مجازشماری برای قفل‌شدگی (lockoutPolicy)، سلسله‌مراتب پلتفرم (platformPolicy)، سلسله‌مراتب ذخیره‌سازی (ownerPolicy) و سلسله‌مراتب تأیید (endorsementPolicy)

tpm2_setprimarypolicy [OPTIONS]

دستور tpm2_setprimarypolicy(1) سیاست مجازشماری را برای قفل‌شدگی (lockoutPolicy)، سلسله‌مراتب پلتفرم (platformPolicy)، سلسله‌مراتب ذخیره‌سازی (ownerPolicy) و سلسله‌مراتب تأیید (endorsementPolicy) تنظیم می‌کند.

این گزینه‌ها ایجاد نشست مجازشماری سیاست را کنترل می‌کنند:

•
-C, --hierarchy=OBJECT:

سلسله‌مراتبی را مشخص می‌کند که سیاست مجازشماری آن باید برپا شود. می‌توان آن را به صورت o|p|e|l مشخص کرد.

•
-P, --auth=AUTH:

مقدار مجازشماری را برای سلسله‌مراتب مشخص می‌کند.

•
-L, --policy=FILE:

مسیر فایل داده‌های سیاست مجازشماری.

•
-g, --hash-algorithm=ALGORITHM:

الگوریتم درهم‌سازی مورد استفاده در محاسبه خلاصه (digest) سیاست.

•
--cphash=FILE

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

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

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

مجازشماری برای استفاده از یک شیء در TPM2.0 می‌تواند به ۳ شکل مختلف باشد: 1. گذرواژه (Password) 2. HMAC 3. نشست‌ها (Sessions)

نکته: “در صورت مشخص نشدن، مجازشماری‌ها به طور پیش‌فرض EMPTY PASSWORD هستند”.

برای احراز اصالت با مقادیر auth، دستورات ابزار به طور ضمنی یک نشست HMAC ایجاد می‌کنند. بنابراین گذرواژه‌ها به صورت رمزنشده انتقال نمی‌یابند. این موضوع در مورد گذرواژه‌های تعریف‌شده برای اشیاء صدق نمی‌کند. در این حالت، باید از یک نشست HMAC استفاده شود (ببینید: tpm2_startauthsession(1))..SS گذرواژه‌ها (Passwords) گذرواژه‌ها با استفاده از شناسه‌های پیشوندی به اَشکال زیر تفسیر می‌شوند.

نکته: به‌طور پیش‌فرض، زمانی که گذرواژه‌ها فاقد پیشوند باشند، در قالب رشته در نظر گرفته می‌شوند.

یک گذرواژهٔ رشته‌ای، که با پیشوند “str:” یا نبود آن (رشتهٔ خام بدون پیشوند) مشخص می‌شود، تفسیر نشده و مستقیماً برای احراز هویت به کار می‌رود.

foobar
str:foobar

یک گذرواژهٔ رشته هگزادسیمال، که با پیشوند “hex:” مشخص می‌شود، از قالب هگزادسیمال به یک آرایهٔ بایتی تبدیل می‌شود؛ بدین‌ترتیب استفاده از گذرواژه‌هایی با نویسه‌های غیرقابل‌چاپ یا ناسازگار با محیط ترمینال ممکن می‌گردد.

hex:1122334455667788

یک گذرواژهٔ مبتنی بر فایل، که با پیشوند “file:” مشخص می‌شود، باید مسیر فایلی حاوی گذرواژه جهت خوانده شدن توسط ابزار، یا “-” برای استفاده از stdin باشد. ذخیره کردن گذرواژه‌ها در فایل از نشت اطلاعات جلوگیری می‌کند، چرا که گذرواژه‌های ارائه‌شده از طریق گزینه‌ها ممکن است از فهرست فرآیندها یا قابلیت‌های معمول تاریخچهٔ شل خوانده شوند.

# 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

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

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

session:session.ctx

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

session:session.ctx+mypassword

برای استفاده از یک فایل بافتار نشست به نام session.ctx و ارسال authvalue با مقدار هگز (HEX) معادل 0x11223344:

session:session.ctx+hex:11223344

می‌توانید با استفاده از پیشوند “pcr:” و زبان کوچک (minilanguage) مربوط به PCR، یک خط‌مشی PCR را برآورده سازید. زبان کوچک PCR به صورت زیر است: <pcr-spec>=<raw-pcr-file>

مشخصات PCR spec در بخش “مشخص‌کننده‌های بانک PCR (PCR bank specifiers)” مستند شده است.

آرگومان raw-pcr-file یک آرگومان اختیاری است که خروجی محتویات خام PCR بازگردانده‌شده توسط tpm2_pcrread(1) را در بر دارد.

مشخص‌کننده‌های بانک PCR (PCR bank specifiers).SS "مثال‌ها (EXAMPLES)" برای برآورده کردن یک خط‌مشی PCR از sha256 روی بانک‌های 0، 1، 2 و 3، از یک مشخص‌کننده به این صورت استفاده کنید:

pcr:sha256:0,1,2,3

مشخص کردن AUTH.

گزینه‌هایی که الگوریتم می‌پذیرند از “nice-names” پشتیبانی می‌کنند.

دو ردهٔ اصلی از رشته‌های مشخص‌کننده الگوریتم وجود دارد: ساده و پیچیده. تنها الگوریتم‌های خاصی توسط TPM بر اساس نوع استفاده و شرایط پذیرفته خواهند شد.

این‌ها رشته‌هایی بدون داده‌های مشخص‌کنندهٔ اضافی هستند. هنگام ساخت شیءها، بخش‌های تعیین‌نشده یک شیء بر اساس مقادیر پیش‌فرض در نظر گرفته می‌شوند. می‌توانید فهرست “مشخص‌کننده‌های ساده” شناخته‌شده را در زیر بیابید.

•
rsa
•
ecc

•
aes
•
camellia
•
sm4

•
sha1
•
sha256
•
sha384
•
sha512
•
sm3_256
•
sha3_256
•
sha3_384
•
sha3_512

•
hmac
•
xor

•
rsassa
•
rsapss
•
ecdsa
•
ecdaa
•
ecschnorr
•
sm2

•
oaep
•
rsaes
•
ecdh

•
ctr
•
ofb
•
cbc
•
cfb
•
ecb.SS "متفرقه (Misc)"
•
null

اشیاء، زمانی که برای ایجاد توسط TPM تعیین می‌شوند، الگوریتم‌های متعددی برای مقداردهی در داده‌های عمومی دارند. مواردی مانند نوع، طرح و جزئیات نامتقارن، اندازه کلید و غیره. قالب کلی برای تعیین این داده‌ها در زیر آمده است: <type>:<scheme>:<symmetric-details>

این بخش از مشخص‌کنندهٔ پیچیدهٔ الگوریتم اجباری است. طرح و جزئیات متقارن باقی‌مانده، بر اساس نوع مشخص‌شده و نوع شیء در حال ایجاد، مقادیر پیش‌فرض را دریافت خواهند کرد.

•
aes - پیش‌فرض AES: aes128
•
aes128<mode> - الگوریتم AES با کلید ۱۲۸ بیتی همراه با حالت اختیاری (ctr|ofb|cbc|cfb|ecb). اگر حالت مشخص نشود، پیش‌فرض روی null قرار می‌گیرد.
•
aes192<mode> - همانند aes128<mode>، به جز اندازه کلید ۱۹۲ بیتی.
•
aes256<mode> - همانند aes128<mode>، به جز اندازه کلید ۲۵۶ بیتی.
•
sm4 - پیش‌فرض SM4: sm4128
•
sm4128 یا sm4_128 <mode> - الگوریتم SM4 با کلید ۱۲۸ بیتی همراه با حالت اختیاری (ctr|ofb|cbc|cfb|ecb). اگر حالت مشخص نشود، پیش‌فرض روی null قرار می‌گیرد.
•
ecc - منحنی بیضوی، پیش‌فرض ecc256.
•
ecc192 یا ecc_nist_p192 - منحنی ۱۹۲ بیتی ECC NIST
•
ecc224 یا ecc_nist_p224 - منحنی ۲۲۴ بیتی ECC NIST
•
ecc256 یا ecc_nist_p256 - منحنی ۲۵۶ بیتی ECC NIST
•
ecc384 یا ecc_nist_p384 - منحنی ۳۸۴ بیتی ECC NIST
•
ecc521 یا ecc_nist_p521 - منحنی ۵۲۱ بیتی ECC NIST
•
ecc_sm2 یا ecc_sm2_p256 - منحنی ۲۵۶ بیتی SM2
•
rsa - پیش‌فرض RSA: rsa2048
•
rsa1024 - الگوریتم RSA با اندازه کلید ۱۰۲۴ بیتی.
•
rsa2048 - الگوریتم RSA با اندازه کلید ۲۰۴۸ بیتی.
•
rsa3072 - الگوریتم RSA با اندازه کلید ۳۰۷۲ بیتی.
•
rsa4096 - الگوریتم RSA با اندازه کلید ۴۰۹۶ بیتی.

بخش بعدی یک فیلد اختیاری است و می‌توان از آن صرف‌نظر کرد.

طرح‌ها معمولاً طرح‌های امضا یا طرح‌های رمزنگاری نامتقارن هستند. اکثر طرح‌های امضا یک الگوریتم درهم‌سازی را مستقیماً پس از طرح امضا می‌پذیرند. اگر الگوریتم درهم‌سازی مشخص نشده باشد، مقدار پیش‌فرض sha256 خواهد بود. برخی هیچ آرگومانی نمی‌پذیرند و برخی چندین آرگومان دریافت می‌کنند.

پس از این مشخص‌کننده‌های طرح، یک خط تیره و یک الگوریتم درهم‌سازی معتبر قرار می‌گیرد؛ برای مثال: oaep-sha256.

•
oaep
•
ecdh
•
rsassa
•
rsapss
•
ecdsa
•
ecschnorr
•
sm2.SS مشخص‌کننده‌های طرح با چند گزینه این مشخص‌کننده طرح با یک شمارش (حداکثر اندازه UINT16)، یک خط تیره (-) و سپس یک الگوریتم درهم‌سازی معتبر دنبال می‌شود. * ecdaa برای نمونه، ecdaa4-sha256. اگر هیچ شمارشی مشخص نشود، مقدار پیش‌فرض آن ۴ است.

این مشخص‌کننده طرح هیچ آرگومانی نمی‌پذیرد. * rsaes

این فیلد اختیاری است و مقدار پیش‌فرض آن بر اساس type شیء در حال ایجاد و صفات آن تعیین می‌شود. به‌طور کلی، هر مشخص‌کنندهٔ Symmetric معتبر از فهرست Type Specifiers باید کار کند. در صورت مشخص نشدن، جزئیات متقارن یک شیء نامتقارن به‌طور پیش‌فرض aes128cfb خواهد بود.

tpm2_create -C parent.ctx -G rsa2048:rsaes -u key.pub -r key.priv

/tpm2_create -C parent.ctx -G ecc256:ecdaa4-sha384 -u key.pub -r key.priv الگوریتم‌های رمزنگاری ALGORITHM.

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

•
-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 استفاده شود، باید یک نشست سالت‌شده برای احراز هویت استفاده گردد.
•
-R، --autoflush: پاک‌سازی خودکار (autoflush) را برای اشیاء گذرای ایجادشده توسط دستور فعال می‌کند. اگر یک شیء والد از یک فایل زمینه (context) بارگیری شود، شیء والد گذرا نیز پاک‌سازی خواهد شد. پاک‌سازی خودکار همچنین در صورتی که متغیر محیطی 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> به ترتیب سبب استفاده از مقدار پیش‌فرض برای آن بخش می‌شود..SS پیش‌فرض‌های TCTI هنگامی که 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 TCTI)، فایل دستگاه نویسه‌ای TPM جهت استفاده توسط TCTI دستگاه می‌تواند مشخص شود. پیش‌فرض /dev/tpm0 است.

مثال: -T device:/dev/tpm0 یا export TPM2TOOLS_TCTI=“device:/dev/tpm0”

•
mssim: برای TCTI شبیه‌ساز (mssim TCTI)، می‌توان نام دامنه یا نشانی IP و شماره درگاه مورد استفاده توسط شبیه‌ساز را مشخص کرد. پیش‌فرض‌ها 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 مترادف یکدیگرند. پودمان‌های مختلف و شناخته‌شدهٔ TCTI.

tpm2_setprimarypolicy -C e

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

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

مشاهدهٔ فهرست پستی

این اثر تحت مجوز بین‌المللی Creative Commons Attribution 4.0 (CC BY 4.0) منتشر شده است.

tpm2-tools