| tpm2_loadexternal(1) | General Commands Manual | tpm2_loadexternal(1) |
نام (NAME)
tpm2_loadexternal - بارگذاری یک شیء خارجی در TPM2
خلاصه دستور (SYNOPSIS)
tpm2_loadexternal [گزینهها]
توضیحات (DESCRIPTION)
tpm2_loadexternal(1) - این دستور یک شیء خارجی را با صرفنظر از محافظتهای TPM، در TPM بارگذاری میکند. به این معنی که محتوای کلید توسط سید (seed) شیء والد محافظت نمیشود. همچنین میتواند برای بارگذاری کلیدهای خصوصی TSS2 در قالب pem استفاده شود. این دستور امکان بارگذاری تنها بخش عمومی یک شیء یا هر دو بخش عمومی و خصوصی آن را فراهم میکند. برای کلیدهای خصوصی TSS2، تنها بخش عمومی کلید بارگذاری میشود.
این ابزار نام شیء بارگذاریشده را در قالب یک دیکشنری YAML با کلید name که مقدار آن نام شیء در قالب هگزادسیمال است چاپ میکند، برای نمونه:
-
name: 000bac25cb8743111c8e1f52f2ee7279d05d3902a18dd1af694db5d1afa7adf1c8b3
همچنین یک فایل زمینه (context) را برای تعاملات آتی با شیء ذخیره میکند.
گزینهها (OPTIONS)
- •
- -C, --hierarchy=OBJECT:
سلسلهمراتب مورد استفاده برای بلیت (ticket)، اختیاری. پیشفرض به n یا null تنظیم شده است. گزینههای پشتیبانیشده عبارتند از:
- •
- o برای سلسلهمراتب owner.
- •
- p برای سلسلهمراتب platform.
- •
- e برای سلسلهمراتب endorsement.
- •
- n برای سلسلهمراتب null.
- •
- -G, --key-algorithm=ALGORITHM:
الگوریتم مورد استفاده توسط کلیدی که قرار است وارد شود. از موارد زیر پشتیبانی میکند:
- •
- aes - کلید AES با اندازه ۱۲۸، ۱۹۲ یا ۲۵۶ بیت.
- •
- rsa - کلید RSA با اندازه ۱۰۲۴ یا ۲۰۴۸ بیت.
- •
- ecc - کلید عمومی و خصوصی ECC مربوط به استانداردهای NIST P192، P224، P256، P384 یا P521.
- •
- -u, --public=FILE:
بخش عمومی شیء؛ این میتواند یکی از قالبهای فایل زیر باشد:
- •
- TSS - قالب TSS/TPM. برای نمونه از گزینه -u دستور tpm2_create(1).
- •
- RSA - قالبهای PEM در OSSL. برای نمونه public.pem حاصل از دستور openssl rsa -in private.pem -out public.pem -pubout
- •
- ECC - قالبهای PEM در OSSL. برای نمونه public.pem حاصل از دستور openssl ec -in private.ecc.pem -out public.ecc.pem -pubout
- •
- -r, --private=FILE:
بخش حساس شیء، اختیاری. اگر مایل به استفاده از بخش خصوصی یک کلید باشید، این گزینه باید مشخص شود. همانند گزینه -u، این دستور فایلها را در قالبهای زیر دریافت میکند:
- •
- RSA - قالبهای PEM در OSSL. برای نمونه private.pem از دستور openssl genrsa -out private.pem 2048. از آنجا که کلید عمومی RSA میتواند از فایل خصوصی PEM مشتق شود، نیازی به مشخص کردن -u برای بخش عمومی وجود ندارد.
- •
- قالبهای PEM کلید خصوصی TSS2 (TSS2 PrivateKey PEM formats).
نکته: بخش خصوصی از قالبهای TSS تبعیت نمیکند زیرا دریافت خروجی TPM2B_SENSITIVE از یک دستور پیشین غیرممکن است. آنها همیشه توسط TPM به عنوان حبابهای TPM2B_PRIVATE محافظت میشوند.
- •
- -p, --auth=AUTH:
مقدار مجوز برای کلید، اختیاری.
- •
- -L, --policy=FILE or HEX_STRING:
فایل پالیسی ورودی یا رشته هگزادسیمال، اختیاری. یک فایل یا رشته هگز حاوی هش پالیسی به دست آمده از tpm2_createpolicy یا یک منبع تولید خلاصه (digest) پالیسی دیگر.
- •
- -g, --hash-algorithm=ALGORITHM:
الگوریتم درهمسازی برای تولید نام شیء. این گزینه اختیاری است و در صورت مشخص نشدن به sha256 پیشفرض میشود. با این حال، load external از داشتن الگوریتم نام null پشتیبانی میکند. در این حالت، هیچ بررسی اتصال رمزنگاری میان بخشهای عمومی و خصوصی انجام نمیشود.
- •
- -a, --attributes=ATTRIBUTES:
ویژگیهای شیء، اختیاری. پیشفرض برای اشیاء ایجادشده به این صورت است: TPMA_OBJECT_SIGN_ENCRYPT|TPMA_OBJECT_DECRYPT. در صورت تمایل، اگر -p مشخص شده باشد یا هیچ یک از -p یا -L مشخص نشده باشند، مقدار TPMA_OBJECT_USERWITHAUTH به مجموعه ویژگیهای پیشفرض اضافه میشود.
نکته: در صورت تعیین ویژگیها، TPM ویژگیهای خاصی مانند TPMA_OBJECT_FIXEDTPM را رد خواهد کرد، زیرا چنین تضمینهایی قابل ارائه نیستند.
- •
- -c, --key-context=FILE
نام فایل برای ذخیره زمینه (context) شیء، الزامی.
- •
- -n, --name=FILE:
یک فایل اختیاری برای ذخیره نام شیء، که در قالب هش دودویی (binary hash) است. اندازه هش بر اساس الگوریتم نام یا گزینه -g تعیین میشود.
- •
- --passin=OSSL_PEM_FILE_PASSWORD
یک گذرواژه اختیاری برای فایل ورودی ارائهشده توسط OpenSSL (OSSL). این گزینه مشابه گزینه -passin در OSSL عمل میکند و از قالبهای گذرواژه pass، file، env، fd و plain در openssl پشتیبانی میکند. (برای اطلاعات بیشتر به man(1) openssl مراجعه کنید).
- •
- -e, --rsa_exponent_zero: تنظیم توان کلید عمومی RSA روی صفر، جهت فعالسازی سازگاری در محاسبه نام کلید در صورتی که کلید TPM با توان صفر تولید شده باشد.
مراجع (References)
قالب شیء زمینه (Context Object Format)
نوع یک شیء زمینه، چه هندل (handle) باشد یا نام فایل، بر اساس منطق زیر بهترتیب تعیین میشود:
- •
- اگر آرگومان یک مسیر فایل باشد، آن فایل به عنوان یک شیء گذرا (transient) بازگردانیشده TPM بارگذاری میشود.
- •
- اگر آرگومان با پیشوند یکی از موارد زیر مطابقت داشته باشد:
- •
- owner: سلسلهمراتب مالک (owner hierarchy)
- •
- platform: سلسلهمراتب پلتفرم (platform hierarchy)
- •
- endorsement: سلسلهمراتب تایید (endorsement hierarchy)
- •
- lockout: شیء پایدار کنترل قفل (lockout control persistent object)
- •
- اگر آرگومان بتواند به صورت یک عدد بارگذاری شود، به عنوان یک هندل تلقی میشود (مانند 0x81010013) و مستقیماً استفاده خواهد شد.
قالببندی احراز هویت (Authorization Formatting)
احراز هویت برای استفاده از یک شیء در TPM 2.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)
-
# برای استفاده از ورودی استاندارد و دریافت اعلان 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) ایجاد شده است را مشخص نمایید. در صورت تمایل، اگر نشست نیازمند ارسال یک مقدار احراز هویت به همراه هندل نشست باشد (مانند گذرواژه پالیسی)، یک علامت + و یک رشته را مطابق آنچه در بخش گذرواژهها (Passwords) توضیح داده شد، اضافه کنید.
مثالها (Examples)
برای استفاده از یک فایل زمینه نشست با نام session.ctx:
-
session:session.ctx
برای استفاده از یک فایل زمینه نشست با نام session.ctx و ارسال مقدار احراز هویت mypassword:
-
session:session.ctx+mypassword
برای استفاده از یک فایل زمینه نشست با نام session.ctx و ارسال مقدار احراز هویت هگز 0x11223344:
-
session:session.ctx+hex:11223344
مجوزهای PCR (PCR Authorizations)
میتوانید با استفاده از پیشوند “pcr:” و زبان کوچک (minilanguage) مربوط به PCR، یک پالیسی PCR را برآورده سازید. زبان کوچک PCR به صورت زیر است: <pcr-spec>=<raw-pcr-file>
مشخصات PCR در بخش “مشخصکنندههای بانک PCR (PCR bank specifiers)” مستند شده است.
آرگومان raw-pcr-file یک پارامتر اختیاری است که شامل خروجی محتویات خام PCR مطابق با خروجی دستور tpm2_pcrread(1) است.
مشخصکنندههای بانک PCR.
مثالها (Examples)
برای برآورده ساختن یک پالیسی PCR از sha256 روی بانکهای ۰، ۱، ۲ و ۳ از مشخصکننده زیر استفاده کنید:
-
pcr:sha256:0,1,2,3
مشخص کردن AUTH.
مشخصکنندههای الگوریتم (Algorithm Specifiers)
گزینههایی که الگوریتم دریافت میکنند از “نامهای مناسب (nice-names)” پشتیبانی میکنند.
دو دسته اصلی رشتههای مشخصکننده الگوریتم وجود دارد: ساده و پیچیده. تنها الگوریتمهای خاصی توسط TPM بر اساس کاربرد و شرایط پذیرفته میشوند.
مشخصکنندههای ساده (Simple specifiers)
اینها رشتههایی بدون دادههای مشخصکننده اضافی هستند. هنگام ایجاد اشیاء، بخشهای نامشخص شیء به مقادیر پیشفرض فرض میشوند. میتوانید فهرست “مشخصکنندههای ساده” شناختهشده را در زیر بیابید.
نامتقارن (Asymmetric)
- •
- rsa
- •
- ecc
متقارن (Symmetric)
- •
- aes
- •
- camellia
- •
- sm4
الگوریتمهای درهمسازی (Hashing Algorithms)
- •
- sha1
- •
- sha256
- •
- sha384
- •
- sha512
- •
- sm3_256
- •
- sha3_256
- •
- sha3_384
- •
- sha3_512
درهمسازی کلیددار (Keyed Hash)
- •
- hmac
- •
- xor
طرحهای امضا (Signing Schemes)
- •
- rsassa
- •
- rsapss
- •
- ecdsa
- •
- ecdaa
- •
- ecschnorr
- •
- sm2
طرحهای رمزنگاری نامتقارن (Asymmetric Encryption Schemes)
- •
- oaep
- •
- rsaes
- •
- ecdh
حالتها (Modes)
- •
- ctr
- •
- ofb
- •
- cbc
- •
- cfb
- •
- ecb
متفرقه (Misc)
- •
- null
مشخصکنندههای پیچیده (Complex Specifiers)
اشیاء، زمانی که برای ایجاد توسط TPM مشخص میشوند، الگوریتمهای متعددی دارند که باید در دادههای عمومی مقداردهی شوند؛ مواردی مانند نوع (type)، طرح (scheme) و جزئیات نامتقارن، اندازه کلید و غیره. در زیر قالب کلی برای مشخص کردن این دادهها آمده است: <type>:<scheme>:<symmetric-details>
مشخصکنندههای نوع (Type Specifiers)
این بخش از مشخصکننده الگوریتم پیچیده الزامی است. باقیمانده طرح و جزئیات متقارن بر اساس نوع مشخصشده و نوع شیء در حال ایجاد، به مقادیر پیشفرض تنظیم میشوند.
- •
- 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 با اندازه کلید ۴۰۹۶ بیتی.
مشخصکنندههای طرح (Scheme Specifiers)
بخش بعدی یک فیلد اختیاری است و میتوان از آن صرفنظر کرد.
طرحها معمولاً طرحهای امضا (Signing Schemes) یا طرحهای رمزنگاری نامتقارن (Asymmetric Encryption Schemes) هستند. بیشتر طرحهای امضا یک الگوریتم هش را دقیقاً پس از طرح امضا دریافت میکنند. اگر الگوریتم هش ذکر نشود، پیشفرض sha256 خواهد بود. برخی هیچ آرگومانی نمیگیرند و برخی چندین آرگومان دریافت میکنند.
مشخصکنندههای طرح با هش اختیاری (Hash Optional Scheme Specifiers)
پس از این مشخصکنندههای طرح یک خط تیره و یک الگوریتم هش معتبر میآید، برای مثال: oaep-sha256.
- •
- oaep
- •
- ecdh
- •
- rsassa
- •
- rsapss
- •
- ecdsa
- •
- ecschnorr
- •
- sm2
مشخصکنندههای طرح چندگزینهای (Multiple Option Scheme Specifiers)
پس از این مشخصکننده طرح یک شمارنده (حداکثر اندازه UINT16) و سپس یک خط تیره (-) و یک الگوریتم هش معتبر میآید. * ecdaa برای مثال: ecdaa4-sha256. اگر هیچ شمارندهای مشخص نشود، پیشفرض برابر با ۴ است.
مشخصکنندههای طرح بدون گزینه (No Option Scheme Specifiers)
این مشخصکننده طرح هیچ آرگومانی دریافت نمیکند. * rsaes
مشخصکنندههای جزئیات متقارن (Symmetric Details Specifiers)
این فیلد اختیاری است و بر اساس نوع (type) شیء در حال ایجاد و ویژگیهای آن به مقدار پیشفرض تنظیم میشود. بهطور کلی، هر مشخصکننده معتبر متقارن (Symmetric) از فهرست مشخصکنندههای نوع (Type Specifiers) باید کار کند. اگر مشخص نشود، جزئیات متقارن یک شیء نامتقارن به طور پیشفرض به aes128cfb تنظیم میشود.
مثالها (Examples)
ایجاد یک کلید rsa2048 با طرح رمزنگاری نامتقارن rsaes
tpm2_create -C parent.ctx -G rsa2048:rsaes -u key.pub -r key.priv
ایجاد یک کلید ecc256 با طرح امضای ecdaa با شمارنده ۴ و هش sha384
/tpm2_create -C parent.ctx -G ecc256:ecdaa4-sha384 -u key.pub -r key.priv الگوریتمهای رمزنگاری ALGORITHM.
ویژگیهای شیء (Object Attributes)
ویژگیهای شیء (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.
گزینههای عمومی (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). زمانی مفید است که نیاز باشد یک اصلاحیه خطا روی دستورات ارسالی به TPM اعمال گردد. تعریف متغیر محیطی TPM2TOOLS_ENABLE_ERRATA نیز معادل این گزینه است.
- •
- -z, --pwd-session: استفاده از نشست گذرواژه به جای نشست HMAC برای احراز هویت. یک گذرواژه متن خام برای تایید عملیات به TPM ارسال میشود. از این گزینه میتوان برای جلوگیری از بروز مشکل در زمان استفاده از نشستهای بدون نمک (unsalted) در حالت OpenSSL FIPS استفاده کرد. اگر مقادیر مجاز (auth values) استفاده شوند، باید از یک نشست نمکدار برای احراز هویت استفاده شود.
- •
- -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، قالب رشته پیکربندی مجموعهای از جفتهای کلید-مقدار ساده است که با کاراکتر `,' از هم جدا شدهاند. هر کلید و رشته مقدار با کاراکتر `=' از هم جدا میشوند.
- •
- ماژول 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 شناختهشده.
نکات (NOTES)
- •
- اگر سلسلهمراتب برابر با null باشد یا الگوریتم درهمسازی نام null باشد، بلیتهای تولیدشده با استفاده از شیء NULL خواهند بود.
- •
- اگر بخش خصوصی یک شیء مشخص شده باشد، سلسلهمراتب باید null باشد، در غیر این صورت TPM بارگذاری آن را رد خواهد کرد.
مثالها (EXAMPLES)
بارگذاری یک کلید عمومی تولیدشده توسط TPM در سلسلهمراتب owner
-
tpm2_createprimary -c primary.ctx tpm2_create -C primary.ctx -u pub.dat -r priv.dat tpm2_loadexternal -C o -u pub.dat -c pub.ctx name: 000b9be4d7c6193a57e1bfc86a42a6b03856a91d2f9e77c6cbdb796a783d52d4b3b9
بارگذاری یک کلید عمومی RSA در سلسلهمراتب owner
-
openssl genrsa -out private.pem 2048 openssl rsa -in private.pem -out public.pem -outform PEM -pubout tpm2_loadexternal -C o -Grsa -u public.pem -c key.ctx name: 000b7b91d304d16995d42792b57d0fb25df7abe5fdd8afe9950730e00dc5b934ddbc
بارگذاری یک جفتکلید RSA در سلسلهمراتب null
-
openssl genrsa -out private.pem 2048 tpm2_loadexternal -C n -Grsa -r private.pem -c key.ctx name: 000b635ea220b6c62ec1d02343859dd203c8ac5dad82ebc5b124e407d2502f88691f
بارگذاری یک کلید AES در سلسلهمراتب null
-
dd if=/dev/urandom of=sym.key bs=1 count=16 tpm2_loadexternal -C n -Gaes -r sym.key -c key.ctx name: 000bfc4d8dd7e4f921bcc9dca4b04f49564243cd9def129a3740002bfd4b9e966d34
بارگذاری یک کلید خصوصی TSS2 در سلسلهمراتب null
-
tpm2_loadexternal -r tss_privkey.pem -c tss_privkey.ctx name: 000bc5a216702aca9ba226af1214c50dc4dc33ce6269677aa581ea6d9eec7f27000d
کدهای خروجی (Returns)
ابزارها میتوانند هر یک از کدهای زیر را برگردانند:
- •
- 0 - موفقیتآمیز.
- •
- 1 - خطای عمومی و نامشخص.
- •
- 2 - خطای مربوط به مدیریت گزینهها.
- •
- 3 - خطای احراز هویت.
- •
- 4 - خطای مربوط به TCTI.
- •
- 5 - طرحواره پشتیبانینشده. قابل اعمال بر tpm2_testparams.
اشکالات (BUGS)
راهنما (HELP)
مشاهده فهرست پستی (Mailing List)
مجوز (LICENSE)
این اثر تحت مجوز کریتیو کامنز ارجاع ۴.۰ بینالمللی (CC BY 4.0)منتشر شده است.
| tpm2-tools |