| tpm2_import(1) | General Commands Manual | tpm2_import(1) |
نام (NAME)
tpm2_import - وارد کردن یک کلید خارجی به درون TPM به عنوان شیء کلید تحت مدیریت TPM
خلاصه دستور (SYNOPSIS)
tpm2_import [گزینهها]
توضیحات (DESCRIPTION)
دستور tpm2_import(1) یک کلید خارجی تولیدشده را به عنوان یک شیء کلید تحت مدیریت TPM وارد میکند. این دستور نیازمند آن است که شیء کلید والد یک کلید RSA باشد. همچنین میتواند یک شیء کلید تحت مدیریت TPM ایجادشده توسط ابزار tpm2_duplicate(1) را وارد نماید.
گزینهها (OPTIONS)
این گزینهها فرآیند وارد کردن کلید را کنترل میکنند:
- •
- -G, --key-algorithm=الگوریتم:
الگوریتم مورد استفاده توسط کلیدی که قرار است وارد شود. پشتیبانی میکند از:
- •
- aes - کلید AES با اندازه ۱۲۸، ۱۹۲ یا ۲۵۶ بیت.
- •
- rsa - کلید RSA با اندازه ۱۰۲۴، ۲۰۴۸، ۳۰۷۲ یا ۴۰۹۶ بیت.
- •
- ecc - کلید عمومی و خصوصی ECC NIST با منحنیهای P192، P224، P256، P384 یا P521.
- •
- hmac - کلید HMAC.
- •
- -g, --hash-algorithm=الگوریتم:
الگوریتم درهمسازی برای ایجاد نام شیء. این گزینه اختیاری است و در صورت مشخص نشدن، مقدار پیشفرض sha256 است. الگوریتمها باید از «استانداردهای قالببندی» پیروی کنند؛ به بخش «مشخصکنندههای الگوریتم (Algorithm Specifiers)» مراجعه کنید. همچنین برای مشاهده فهرستی از الگوریتمهای درهمسازی پشتیبانیشده، بخش «الگوریتمهای درهمسازی پشتیبانیشده» را ببینید.
- •
- -i, --input=فایل:
نام فایل کلیدی که قرار است وارد شود را مشخص میکند. برای کلیدهای AES، این فایل شامل بایتهای خام کلید است. برای کلیدهای نامتقارن، فایل در قالب PEM یا DER است. یک فایل نمونه معمولاً با openssl genrsa تولید میشود.
- •
- -C, --parent-context=شیء:
شیء کلید والد.
- •
- -U, --parent-public=فایل:
اختیاری. فایل دادههای عمومی کلید والد را برای ورودی مشخص میکند. این فایل را میتوان با ابزار tpm2_readpublic(1) خواند. در صورت مشخص نشدن، این ابزار فرمان tpm2_readpublic را روی شیء والد فراخوانی میکند.
- •
- -k, --encryption-key=فایل:
اختیاری. فایلی را مشخص میکند که حاوی کلید الگوریتم متقارن مورد استفاده برای لفاف داخلی (inner wrapper) است. اگر فایل مشخص شود، ابزار فرض میکند الگوریتم AES 128 در حالت CFB است، در غیر این صورت هیچکدام (none).
- •
- -r, --private=فایل:
مسیر فایل مورد نیاز برای ذخیره بخش خصوصی رمزنگاریشده شیء واردشده به عنوان کلید را مشخص میکند.
هنگام وارد کردن یک شیء تکثیرشده (duplicated object)، این گزینه فایلی را مشخص میکند که حاوی بخش خصوصی شیء مورد نظر برای وارد کردن است.
جزئیات حفاظت (Protection Details)
اشیایی که میتوانند به خارج از TPM منتقل شوند، باید محافظت گردند (محرمانگی و یکپارچگی). به عنوان مثال، اشیاء گذرا (transient) نیازمند آن هستند که دادههای محافظتشده توسط TPM (کلید یا دادههای مهروموم) در خارج از TPM ذخیره شوند. این مورد در ابزارهایی مانند tpm2_create(1) دیده میشود که در آن گزینه -r این دادههای محافظتشده را در خروجی قرار میدهد. این حباب داده (blob) حاوی بخشهای حساس شیء است. بخشهای حساس شیء توسط شیء والد محافظت میشوند؛ با استفاده از مشخصات رمزنگاری متقارن والد برای رمزگذاری دادههای حساس و اعمال HMAC بر روی آن.
جزئیات دقیق را میتوان در بخش ۲۳ سند زیر یافت:
بهویژه شکل ۲۰ مرتبط است، هرچند که مشخصاً به حبابهای همانندسازی (duplication blobs) اشاره دارد، اما فرآیند یکسان است.
اگر خروجی از دستور tpm2_duplicate(1) باشد، خروجی اندکی متفاوت خواهد بود، همانطور که بهطور کامل در بخش ۲۳ توضیح داده شده است.
- •
- -u, --public=فایل:
مسیر فایل مورد نیاز برای ذخیره بخش عمومی شیء واردشده به عنوان کلید را مشخص میکند.
هنگام وارد کردن یک شیء تکثیرشده، این گزینه فایلی را مشخص میکند که حاوی بخش عمومی شیء مورد نظر برای وارد کردن است.
- •
- -a, --attributes=ویژگیها:
ویژگیهای شیء، اختیاری است.
- •
- -P, --parent-auth=مجوز:
مقدار مجوز برای استفاده از کلید والد که با -C مشخص شده است.
- •
- -p, --key-auth=مجوز:
مقدار مجوز برای کلید واردشده، اختیاری است.
- •
- -L, --policy=پالیسی یا HEX_STRING:
فایل پالیسی یا رشته هگزادسیمال پالیسی مورد استفاده برای احراز هویت شیء.
- •
- -s, --seed=فایل:
فایل حاوی سید (seed) رمزنگاریشده شیء تکثیرشده را مشخص میکند.
برای انجام یک «وارد کردن بدون رمزنگاری» (unencrypted import)، باید یک فایل سید با محتوای 0x0000 ارائه شود (برای نمونه: printf “0000” | xxd -r -p >seed.file).
- •
- --passin=OSSL_PEM_FILE_PASSWORD
یک گذرواژه اختیاری برای فایل ورودی ارائهشده به OpenSSL (OSSL). این گزینه بازتابدهنده گزینه -passin در OSSL است و از قالبهای گذرواژه pass، file، env، fd و plain در openssl پشتیبانی میکند. برای اطلاعات بیشتر به openssl(1) مراجعه کنید.
- •
- --cphash=فایل
مسیر فایل برای ثبت هش پارامترهای دستور. این مقدار معمولاً به عنوان cpHash شناخته میشود. نکته: با انتخاب این گزینه، ابزار در عمل دستور را اجرا نمیکند، بلکه تنها یک cpHash برمیگرداند.
مراجع (References)
قالب شیء زمینه (Context Object Format)
نوع یک شیء زمینه، چه هندل (handle) باشد یا نام فایل، بر اساس منطق زیر بهترتیب تعیین میشود:
- •
- اگر آرگومان یک مسیر فایل باشد، آن فایل به عنوان یک شیء گذرا (transient) بازگردانیشده TPM بارگذاری میشود.
- •
- اگر آرگومان با پیشوند یکی از موارد زیر مطابقت داشته باشد:
- •
- owner: سلسلهمراتب مالک (owner hierarchy)
- •
- platform: سلسلهمراتب پلتفرم (platform hierarchy)
- •
- endorsement: سلسلهمراتب تایید/امضا (endorsement hierarchy)
- •
- lockout: شیء پایدار کنترل قفل (lockout control persistent object)
- •
- اگر آرگومان بتواند به صورت یک عدد بارگذاری شود، به عنوان یک هندل تلقی میشود (مانند 0x81010013) و مستقیماً استفاده خواهد شد.
قالببندی احراز هویت (Authorization Formatting)
مجوز برای استفاده از یک شیء در TPM2.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)
هنگام استفاده از یک نشست پالیسی (policy session) برای مجاز کردن استفاده از یک شیء، شناسه گزینه را با کلمه کلیدی session شروع کنید. سپس مسیری به یک فایل نشست که توسط دستور tpm2_startauthsession(1) ایجاد شده است را مشخص نمایید. در صورت تمایل، اگر نشست نیازمند ارسال یک مقدار احراز هویت (auth value) به همراه هندل نشست باشد (مانند گذرواژه پالیسی)، یک علامت + و یک رشته را مطابق آنچه در بخش گذرواژهها (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” مستند شده است.
آرگومان raw-pcr-file یک پارامتر اختیاری است که شامل خروجی محتویات خام PCR مطابق با خروجی دستور tpm2_pcrread(1) میباشد.
مشخصکنندههای بانک PCR
مثالها (Examples)
برای برآورده کردن یک پالیسی PCR از نوع sha256 روی بانکهای 0، 1، 2 و 3 از مشخصکننده زیر استفاده کنید:
-
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>:<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 or sm4_128 <mode> - الگوریتم SM4 با ۱۲۸ بیت و حالت اختیاری (ctr|ofb|cbc|cfb|ecb). اگر حالت مشخص نشود، مقدار پیشفرض null خواهد بود.
- •
- ecc - منحنی بیضوی، مقدار پیشفرض ecc256.
- •
- ecc192 or ecc_nist_p192 - منحنی ECC NIST با طول ۱۹۲ بیت
- •
- ecc224 or ecc_nist_p224 - منحنی ECC NIST با طول ۲۲۴ بیت
- •
- ecc256 or ecc_nist_p256 - منحنی ECC NIST با طول ۲۵۶ بیت
- •
- ecc384 or ecc_nist_p384 - منحنی ECC NIST با طول ۳۸۴ بیت
- •
- ecc521 or ecc_nist_p521 - منحنی ECC NIST با طول ۵۲۱ بیت
- •
- ecc_sm2 or ecc_sm2_p256 - منحنی SM2 با طول ۲۵۶ بیت
- •
- rsa - مقدار پیشفرض RSA: rsa2048
- •
- rsa1024 - الگوریتم RSA با اندازه کلید ۱۰۲۴ بیت.
- •
- rsa2048 - الگوریتم RSA با اندازه کلید ۲۰۴۸ بیت.
- •
- rsa3072 - الگوریتم RSA با اندازه کلید ۳۰۷۲ بیت.
- •
- rsa4096 - الگوریتم RSA با اندازه کلید ۴۰۹۶ بیت.
مشخصکنندههای طرح (Scheme Specifiers)
مورد بعدی یک فیلد اختیاری است و میتوان از آن صرفنظر کرد.
طرحها معمولاً طرحهای امضا یا طرحهای رمزنگاری نامتقارن هستند. بیشتر طرحهای امضا یک الگوریتم درهمسازی را مستقیماً پس از طرح امضا دریافت میکنند. اگر الگوریتم درهمسازی ذکر نشود، پیشفرض آن 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)
این فیلد اختیاری است و بر اساس نوع شیء در حال ایجاد و ویژگیهای آن به مقادیر پیشفرض تنظیم میشود. بهطور کلی، هر مشخصکننده معتبر متقارن از فهرست مشخصکنندههای نوع قابل استفاده است. در صورت عدم تعیین، جزئیات متقارن یک شیء نامتقارن بهطور پیشفرض 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) برای کنترل خصوصیات گوناگون اشیاء ایجادشده به کار میروند. هنگامی که به عنوان یک گزینه مشخص میشوند، میتوان از ماسک بیتی خام یا “نامهای مناسب” (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 تبدیل میشود. نامهای مناسب را میتوان با استفاده از نماد 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). این گزینه زمانی مفید است که نیاز به اعمال یک اصلاحیه errata روی دستورات ارسالی به TPM باشد. تعریف متغیر محیطی TPM2TOOLS_ENABLE_ERRATA نیز عملکردی معادل دارد.
- •
- -z, --pwd-session: استفاده از نشست گذرواژه به جای نشست HMAC برای احراز هویت. یک گذرواژه متن خام (clear text) برای تایید عملیات به TPM ارسال میشود. از این گزینه میتوان برای جلوگیری از بروز مشکل در زمان استفاده از نشستهای بدون نمک (unsalted) در حالت OpenSSL FIPS استفاده کرد. اگر مقادیر مجاز (auth values) به کار روند، باید از یک نشست نمکدار (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 و شماره درگاه (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 مترادف یکدیگرند.
مثالها (EXAMPLES)
برای وارد کردن کلید، به یک کلید والد نیاز است (To import a key, one needs to have a parent key)
-
tpm2_createprimary -Grsa2048:aes128cfb -C o -c parent.ctx
کلید خود را ایجاد و آن را وارد کنید. اگر از قبل کلیدی دارید، تنها از همان استفاده کنید و از ایجاد کلید صرفنظر نمایید.
وارد کردن یک کلید AES 128 (Import an AES 128 key)
-
dd if=/dev/urandom of=sym.key bs=1 count=16 tpm2_import -C parent.ctx -G aes -i sym.key -u key.pub -r key.priv
وارد کردن یک کلید RSA (Import an RSA key)
-
openssl genrsa -out private.pem 2048 tpm2_import -C parent.ctx -G rsa -i private.pem -u key.pub -r key.priv
وارد کردن یک کلید ECC (Import an ECC key)
-
openssl ecparam -name prime256v1 -genkey -noout -out private.ecc.pem tpm2_import -C parent.ctx -G ecc -i private.ecc.pem -u key.pub -r key.priv
وارد کردن یک کلید تکثیرشده (Import a duplicated key)
-
tpm2_import -C parent.ctx -i key.dup -u key.pub -r key.priv -L policy.dat
محدودیتها (LIMITATIONS)
- •
- تراشه TPM الزام میکند که الگوریتم نام (name algorithm) شیء فرزند کوچکتری از والد باشد.
کدهای بازگشتی (RETURNS)
ابزارها میتوانند هر یک از کدهای زیر را بازگردانند:
- •
- 0 - موفقیتآمیز.
- •
- 1 - خطای عمومی و نامشخص.
- •
- 2 - خطای مدیریت گزینهها.
- •
- 3 - خطای احراز هویت.
- •
- 4 - خطای مربوط به TCTI.
- •
- 5 - طرح پشتیبانینشده. قابل اعمال بر tpm2_testparams.
همچنین ببینید (SEE ALSO)
tpm2_duplicate(1)، tpm2_create(1)، tpm2_createprimary(1)، tpm2_readpublic(1)
اشکالات (BUGS)
راهنما (HELP)
مشاهده فهرست پستی (Mailing List)
مجوز (LICENSE)
این اثر تحت مجوز بینالمللی ارجاع ۴٫۰ کریپتیو کامانز (CC BY 4.0).
| tpm2-tools |