| tpm2_testparms(1) | General Commands Manual | tpm2_testparms(1) |
نام (NAME)
tpm2_testparms(1) - بررسی پشتیبانی TPM از مجموعه الگوریتم مشخصشده
خلاصه دستور (SYNOPSIS)
tpm2_testparms [OPTIONS] [ARGUMENT]
توضیحات (DESCRIPTION)
tpm2_testparms(1) - بررسی میکند که آیا مجموعهٔ مشخصشده توسط ALG_SPEC برای استفاده بر پایهٔ ALGORITHM در دسترس است یا خیر.
الگوریتمها باید از “استانداردهای قالببندی” پیروی کنند؛ بخش “Algorithm Specifiers” را ببینید.
همچنین، برای مشاهدهٔ فهرستی از الگوریتمهای هش پشتیبانیشده، به بخش “Supported Signing Schemes” مراجعه کنید.
گزینهها (OPTIONS)
این ابزار هیچ گزینهٔ اختصاصی دریافت نمیکند.
مراجع (REFERENCES)
گزینههای عمومی (COMMON OPTIONS)
این مجموعه از گزینهها میان بسیاری از برنامهها مشترک بوده و اطلاعاتی را فراهم میکنند که اغلب کاربران انتظار دارند.
- •
- -h، --help=[man|no-man]: نمایش صفحهٔ راهنمای (manpage) ابزار. بهطور پیشفرض، تلاش میکند صفحهبندیکنندهٔ man (manpager) را برای ابزار فراخوانی کند، اما در صورت شکست، خلاصهٔ کوتاهی از ابزار را نمایش میدهد. این رفتار مشابه زمانی است که آرگومان گزینهٔ “man” مشخص شده باشد، اما اگر “man” صراحتاً درخواست شود، ابزار خطاهای man را در stderr ارائه خواهد داد. اگر گزینهٔ “no-man” مشخص شود، یا manpager ناموفق باشد، گزینههای کوتاه در stdout نمایش داده خواهند شد.
برای استفادهٔ موفقیتآمیز از قابلیت صفحههای راهنما، نیاز است manpageها نصب شده یا در MANPATH باشند؛ برای جزئیات بیشتر man(1) را ببینید.
- •
- -v، --version: نمایش اطلاعات نسخهٔ این ابزار، tctiهای پشتیبانیشده و خروج.
- •
- -V، --verbose: افزایش اطلاعاتی که ابزار در طول اجرای خود روی کنسول چاپ میکند. هنگام استفاده از این گزینه، نام فایل و شماره خط چاپ میشوند.
- •
- -Q، --quiet: بیصدا کردن خروجی عادی ابزار به stdout.
- •
- -Z، --enable-errata: فعالسازی اعمال اصلاحات غلطنامه (errata fixups). زمانی مفید است که نیاز باشد یک اصلاحیه روی دستورهای ارسالی به TPM اعمال شود. تعریف متغیر محیطی TPM2TOOLS_ENABLE_ERRATA معادل این گزینه است.
- •
- -z، --pwd-session: استفاده از نشست گذرواژه به جای نشست HMAC برای احراز هویت. یک گذرواژهٔ متنی آشکار (clear text) به TPM ارسال میشود تا عمل را مجاز کند. این گزینه میتواند برای جلوگیری از بروز مشکلات در زمان استفاده از نشستهای بدون سالت (unsalted) در حالت FIPS مربوط به OpenSSL استفاده شود. در صورت استفاده از مقادیر auth، باید از یک نشست با سالت (salted) برای احراز هویت استفاده شود.
- •
- -R، --autoflush: فعالسازی تخلیه خودکار (autoflush) برای اشیاء گذرا (transient) که توسط دستور ایجاد شدهاند. اگر یک شیء والد از یک فایل زمینه (context) بارگیری شود، شیء والد گذرا نیز تخلیه خواهد شد. همچنین اگر متغیر محیطی TPM2TOOLS_AUTOFLUSH برابر yes یا true تنظیم شود، autoflush میتواند فعال گردد.
پیکربندی 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> به ترتیب باعث استفاده از مقدار پیشفرض برای آن بخش خواهد شد..SS پیشفرضهای 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 و شماره درگاه مورد استفاده توسط شبیهساز را مشخص کرد. مقادیر پیشفرض 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 مختلف شناختهشده.
مشخصکنندههای الگوریتم (Algorithm Specifiers)
گزینههایی که الگوریتمها را به عنوان ورودی میگیرند، از “nice-names” پشتیبانی میکنند.
دو ردهٔ اصلی از رشتههای مشخصکنندهٔ الگوریتم وجود دارد: ساده و پیچیده. بسته به نحوهٔ استفاده و شرایط، تنها الگوریتمهای خاصی توسط TPM پذیرفته خواهند شد.
مشخصکنندههای ساده (Simple Specifiers)
اینها رشتههایی بدون دادههای مشخصکنندهٔ اضافی هستند. هنگام ایجاد اشیاء، بخشهای مشخصنشدهٔ یک شیء برابر مقادیر پیشفرض در نظر گرفته میشوند. میتوانید فهرست “مشخصکنندههای ساده” شناختهشده را در زیر مشاهده کنید..SS نامتقارن (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 مشخص میشوند، الگوریتمهای متعددی برای مقداردهی در دادههای عمومی (public data) دارند. مواردی از قبیل نوع (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 - منحنی NIST ۱۹۲ بیتی ECC
- •
- ecc224 یا ecc_nist_p224 - منحنی NIST ۲۲۴ بیتی ECC
- •
- ecc256 یا ecc_nist_p256 - منحنی NIST ۲۵۶ بیتی ECC
- •
- ecc384 یا ecc_nist_p384 - منحنی NIST ۳۸۴ بیتی ECC
- •
- ecc521 یا ecc_nist_p521 - منحنی NIST ۵۲۱ بیتی ECC
- •
- ecc_sm2 یا ecc_sm2_p256 - منحنی SM2 ۲۵۶ بیتی
- •
- rsa - مقدار پیشفرض RSA: rsa2048
- •
- rsa1024 - الگوریتم RSA با اندازه کلید ۱۰۲۴ بیتی.
- •
- rsa2048 - الگوریتم RSA با اندازه کلید ۲۰۴۸ بیتی.
- •
- rsa3072 - الگوریتم RSA با اندازه کلید ۳۰۷۲ بیتی.
- •
- rsa4096 - الگوریتم RSA با اندازه کلید ۴۰۹۶ بیتی..SS مشخصکنندههای طرحواره (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.
مشخصکنندههای قالب امضا (Signature Format Specifiers)
انتخاب قالب برای فایل خروجی امضا. گزینهٔ tss (پیشفرض) یک حباب دادهٔ دودویی (binary blob) طبق مشخصات TPM 2.0 و هرگونه فاصلهگذاری احتمالی کامپایلر (compiler padding) خروجی میدهد. گزینهٔ plain دادههای خام امضا را آنگونه که توسط الگوریتم رمزنگاری استفادهشده تعریف شده است خروجی میدهد.
مثالها (EXAMPLES)
بررسی پشتیبانی شدن از “rsa”
-
tpm2_testparms rsa
بررسی در دسترس بودن ECDSA با استفاده از P-256 و حالت AES-128 CTR
-
tpm2_testparms ecc256:ecdsa:aes128ctr
وضعیت خروج (EXIT STATUS)
ابزارها میتوانند هر یک از کدهای زیر را بازگردانند:
- •
- 0 - موفقیت.
- •
- 1 - خطای کلی نامشخص.
- •
- 2 - خطای پردازش گزینهها.
- •
- 3 - خطای احراز هویت.
- •
- 4 - خطای مربوط به TCTI.
- •
- 5 - طرحواره پشتیبانینشده. قابل اعمال بر روی tpm2_testparams.
گزارش باگها (BUGS)
گزارشهای گیتهاب (Github Issues).SH "راهنما (HELP)" به فهرست پستی مراجعه کنید.
مجوز (LICENSE)
این اثر تحت مجوز بینالمللی انتساب کریتیو کامنز ۴.۰ (CC BY 4.0) منتشر شده است.
| tpm2-tools |