tpm2_createprimary(1) راهنمای دستورات عمومی tpm2_createprimary(1)

tpm2_createprimary - ایجاد یک شیء یا کلید اصلی (Primary Object) در TPM

tpm2_createprimary [گزینه‌ها]

دستور tpm2_createprimary(1) برای ایجاد یک شیء اصلی تحت یکی از سلسله‌مراتب‌های زیر استفاده می‌شود: مالک (Owner)، پلتفرم (Platform)، تأیید (Endorsement)، تهی (NULL). این دستور یک شیء اصلی را ایجاد و بارگذاری می‌کند. بخش‌های حساس (sensitive) و عمومی (public) برگردانده نمی‌شوند. یک فایل بافتار برای دستگیرهٔ شیء ایجادشده به عنوان یک فایل برای تعاملات بعدی با کلید اصلی ایجادشده ذخیره می‌شود.

•
-C, --hierarchy=OBJECT:

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

•
o برای TPM_RH_OWNER
•
p برای TPM_RH_PLATFORM
•
e برای TPM_RH_ENDORSEMENT
•
n برای TPM_RH_NULL
•
<num> که در آن می‌توان از یک عدد خام استفاده کرد.
•
-P, --hierarchy-auth=AUTH:

مقدار احراز اصالت برای سلسله‌مراتب مشخص‌شده با -C.

•
-p, --key-auth=AUTH:

مقدار احراز اصالت برای شیء اصلی ایجادشده.

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

الگوریتم درهم‌سازی مورد استفاده برای ایجاد نام شیء. در صورت مشخص نشدن، پیش‌فرض sha256 است.

•
-G, --key-algorithm=ALGORITHM:

نوع الگوریتم برای کلید اصلی تولیدشده. پیش‌فرض rsa2048:null:aes128cfb است.

•
-c, --key-context=FILE:

مسیر فایل برای ذخیرهٔ بافتار شیء مربوط به شیء اصلی ایجادشده.

•
-L, --policy=FILE or HEX_STRING:

یک ورودی فایل یا رشتهٔ هگز اختیاری که حاوی خلاصهٔ خط‌مشی (policy digest) برای احراز اصالت مبتنی بر خط‌مشیِ شیء است.

•
-a, --attributes=ATTRIBUTES:

ویژگی‌های شیء، اختیاری است. مقدار پیش‌فرض: TPMA_OBJECT_RESTRICTED|TPMA_OBJECT_DECRYPT|TPMA_OBJECT_FIXEDTPM| TPMA_OBJECT_FIXEDPARENT|TPMA_OBJECT_SENSITIVEDATAORIGIN| TPMA_OBJECT_USERWITHAUTH

•
-u, --unique-data=FILE OR STDIN:

یک فایل ورودی اختیاری که شامل فیلد unique از TPMT_PUBLIC در قالب little-endian است. ایجادکنندهٔ کلید اصلی می‌تواند اطلاعاتی قرار دهد که باعث شود طرح ایجاد کلید اصلی داخلی TPM مقادیر منحصربه‌فرد آماری تولید کند. مشخصات TPM v2.0 این فیلد را unique می‌نامد و آن را سربارگذاری (overload) می‌کند، به طوری که وقتی برنامه این ساختار را به عنوان ورودی ارائه می‌دهد حاوی یک مقدار است و زمانی که برنامه این ساختار را به عنوان خروجی دریافت می‌کند مقدار دیگری دارد (مانند بخش عمومی کلید rsa).

اگر داده‌ها به صورت فایل مشخص شوند، کاربر مسئول اطمینان از این است که این بافر بر اساس اجتماع TPMU_PUBLIC_ID قالب‌بندی شده باشد.

داده‌های یکتا را می‌توان از بافر stdin نیز با تعیین “-” به عنوان مقدار گزینهٔ –unique-data دریافت کرد و ابزار نوع کلید را تجزیه کرده و داده‌های ورودی را با بافر داده‌های یکتای مرتبط با نوع کلید پیوند می‌دهد.

نکته:

1.
حداکثر بایت‌های مجاز به نوع کلید و پیاده‌سازی TPM بستگی دارد. به عنوان مثال: در حالی که TSS مقداری تا ۵۱۲ را برای MAX_RSA_KEY_BYTES مجاز می‌داند، پیاده‌سازی ibmSwTPM مقداری تا ۲۵۶ بایت را پشتیبانی می‌کند.
2.
داده‌های ورودی یکتای ارائه‌شده در stdin برای ECC برای مشخص کردن بافرهای مختصات X و مختصات Y تقسیم می‌شوند.
•
--creation-data=FILE:

یک فایل خروجی اختیاری که داده‌های ایجاد (creation data) را برای صدور گواهی ذخیره می‌کند.

•
--template-data=FILE:

یک فایل خروجی اختیاری که داده‌های الگوی کلید (TPM2B_PUBLIC) را برای استفاده در tpm2_policytemplate ذخیره می‌کند.

•
-t, --creation-ticket=FILE:

یک فایل خروجی اختیاری که بلیط ایجاد (creation ticket) را برای صدور گواهی ذخیره می‌کند.

•
-d, --creation-hash=FILE:

یک فایل خروجی اختیاری که هش ایجاد (creation hash) را برای صدور گواهی ذخیره می‌کند.

•
-q, --outside-info=FILE_OR_HEX:

یک فایل یا رشتهٔ هگز اختیاری برای افزودن داده‌های یکتا به داده‌های ایجاد. توجه داشته باشید که این گزینه در ایجاد شیء منحصربه‌فرد آماری نقشی ندارد.

•
-l, --pcr-list=PCR:

فهرستی از بانک‌های PCR و شناسه‌های PCR انتخاب‌شده برای هر بانک جهت گنجاندن در داده‌های ایجاد برای صدور گواهی.

•
--cphash=FILE

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

•
-f, --format:

انتخاب قالب برای فایل خروجی کلید عمومی. `tss' (پیش‌فرض) یک حباب دادهٔ باینری را طبق مشخصات TPM 2.0 خروجی می‌دهد. `pem' یک کلید عمومی با کدگذاری PEM سازگار با OpenSSL خروجی می‌دهد. `der' یک کلید عمومی با کدگذاری DER سازگار با OpenSSL خروجی می‌دهد. `tpmt' یک حباب باینری از ساختار TPMT_PUBLIC ارجاع‌شده توسط مشخصات TPM 2.0 خروجی می‌دهد.

قالب کلید عمومی.

•
-o, --output=FILE:

مسیر فایل خروجی برای ثبت بخش عمومی شیء.

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

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

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

نکته: “در صورت مشخص نشدن، مجوزها به‌طور پیش‌فرض برابر با گذرواژه خالی (EMPTY PASSWORD) در نظر گرفته می‌شوند”.

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

گذرواژه‌ها در اشکال زیر با استفاده از شناسه‌های پیشوندی تفسیر می‌شوند.

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

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

foobar
str:foobar

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

hex:1122334455667788

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

# برای استفاده از stdin و درخواست اعلان ورود:
file:-
# برای استفاده از یک فایل از یک مسیر:
file:path/to/password/file
# برای ارسال گذرواژه از طریق stdin با echo:
echo foobar | tpm2_tool -p file:-
# برای استفاده از here-string بش از طریق stdin:
tpm2_tool -p file:- <<< foobar

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

برای استفاده از یک فایل بافتار نشست به نام 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:” و ریززبان PCR برآورده کنید. ریززبان PCR به شرح زیر است: <pcr-spec>=<raw-pcr-file>

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

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

مشخص‌کننده‌های بانک PCR.

برای برآورده کردن یک خط‌مشی 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

•
null

اشیاء، زمانی که برای ایجاد توسط TPM مشخص می‌شوند، الگوریتم‌های متعددی دارند که باید در داده‌های عمومی مقداردهی شوند؛ مواردی مانند نوع (type)، طرح (scheme) و جزئیات نامتقارن، اندازه کلید و غیره. در زیر قالب کلی برای مشخص کردن این داده‌ها آمده است: <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 - منحنی بیضوی (Elliptical Curve)، پیش‌فرض 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 با اندازه کلید ۴۰۹۶ بیتی.

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

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

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

•
oaep
•
ecdh
•
rsassa
•
rsapss
•
ecdsa
•
ecschnorr
•
sm2

پس از این مشخص‌کننده طرح، یک شمارنده (حداکثر اندازه 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.

ویژگی‌های شیء (Object Attributes) برای کنترل مشخصه‌های گوناگون اشیاء ایجادشده استفاده می‌شوند. هنگامی که به عنوان یک گزینه مشخص شوند، می‌توان از ماسک میدان بیتی خام (raw bitfield mask) یا “نام‌های مناسب (nice-names)” استفاده کرد. مقادیر را می‌توان در جدول ۳۱ بخش ۲ از مشخصات TPM 2.0 یافت که در نشانی زیر در دسترس است:

https://trustedcomputinggroup.org/wp-content/uploads/TPM-Rev-2.0-Part-2-Structures-01.38.pdf

نام‌های مناسب با گرفتن فیلد نام از جدول ۳۱، حذف پیشوند TPMA_OBJECT_ و تبدیل نتیجه به حروف کوچک محاسبه می‌شوند. بنابراین، TPMA_OBJECT_FIXEDTPM به fixedtpm تبدیل می‌شود. نام‌های مناسب را می‌توان با استفاده از نماد یا بیتی (bitwise or) “|” به یکدیگر متصل کرد.

برای نمونه، جهت تنظیم فیلدهای TPMA_OBJECT_FIXEDTPM، TPMA_OBJECT_NODA و TPMA_OBJECT_SIGN_ENCRYPT، آرگومان به این صورت خواهد بود:

fixedtpm|noda|sign که ویژگی‌های شیء ATTRIBUTES را مشخص می‌کند.

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

•
-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 مخفف “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)، فایل دستگاه نویسه‌ای (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.

tpm2_createprimary -C o -g sha256 -G ecc -c context.out

مشاهده کنید: https://trustedcomputinggroup.org/wp-content/uploads/TCG-TPM-v2.0-Provisioning-Guidance-Published-v1r1.pdf

که در آن unique.dat حاوی داده‌های قالب‌بندی‌شده به صورت دودویی (باینری) است: 0x00 0x01 (0x00 * 256)

tpm2_createprimary -C o -G rsa2048:aes128cfb -g sha256 -c prim.ctx \
-a 'restricted|decrypt|fixedtpm|fixedparent|sensitivedataorigin|userwithauth|\
noda' -u unique.dat
## ایجاد یک شیء اصلی و خروجی دادن کلید عمومی در قالب pem
tpm2_createprimary -c primary.ctx --format=pem --output=public.pem

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

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

مسائل گیت‌هاب (Github Issues)

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

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

tpm2-tools