tpm2_zgen2phase(1) General Commands Manual tpm2_zgen2phase(1)

tpm2_zgen2phase - دستوری برای فعال‌سازی TPM جهت ترکیب داده‌های طرف مقابل با کلید موقت تولیدشده در فاز نخست پروتکل‌های تبادل کلید دومرحله‌ای

tpm2_zgen2phase [OPTIONS]

tpm2_zgen2phase(1) - دستوری برای فعال‌سازی TPM جهت ترکیب داده‌های طرف مقابل با کلید موقت (ephemeral key) تولیدشده در فاز نخست پروتکل‌های تبادل کلید دومرحله‌ای (two-phase key exchange).

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

شیء زمینه (context object) که به کلید ECC اشاره دارد. می‌تواند یک فایل یا شماره اشاره‌گر (handle) باشد. بخش “Context Object Format” را ببینید.

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

مقدار احراز هویت برای شیء کلید ECC.

•
-s, --scheme=ALGORITHM:

طرح تبادل کلید (key exchange scheme). اختیاری است. گزینه‌های معتبر شامل ecdh یا sm2 هستند.

•
-t, --counter=NATURALNUMBER:

تعداد commit برای تعیین نمایه کلید مورد استفاده.

•
--static-public=FILE:

ورودی کلید عمومی ایستا (static public key) متعلق به طرف مقابل.

•
--ephemeral-public=FILE:

ورودی کلید عمومی موقت (ephemeral public key) متعلق به طرف مقابل.

•
--output-Z1=FILE

مسیر فایل را برای ذخیره نقطه سری Z1 محاسبه‌شده در ecdh مشخص می‌کند.

•
--output-Z2=FILE

مسیر فایل را برای ذخیره نقطه سری Z2 محاسبه‌شده در ecdh مشخص می‌کند.

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

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

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

•
rsa
•
ecc.SS "متقارن (Symmetric)"
•
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>:<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 با اندازهٔ کلید ۴۰۹۶ بیتی..SS مشخص‌کننده‌های طرح (Scheme Specifiers) مورد بعدی، یک فیلد اختیاری است و می‌توان از آن صرف‌نظر کرد.

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

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

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

پس از این مشخص‌کننده طرح یک شمارش (حداکثر اندازه UINT16) و به دنبال آن یک خط تیره (-) و یک الگوریتم هش معتبر می‌آید. * ecdaa برای نمونه، ecdaa4-sha256. اگر هیچ شمارشی مشخص نشود، مقدار پیش‌فرض آن 4 است.

این مشخص‌کننده طرح هیچ آرگومانی نمی‌گیرد. * 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” مشخص شود، یا فراخوانی manpager با شکست مواجه شود، گزینه‌های کوتاه روی stdout چاپ خواهند شد.

استفاده موفقیت‌آمیز از ویژگی صفحات راهنما نیازمند آن است که صفحات راهنما نصب شده باشند یا در MANPATH قرار داشته باشند؛ برای جزئیات بیشتر man(1) را ببینید.

•
-v, --version: نمایش اطلاعات نسخه این ابزار، tctiهای پشتیبانی‌شده و خروج.
•
-V, --verbose: افزایش اطلاعاتی که ابزار در حین اجرا روی کنسول چاپ می‌کند. هنگام استفاده از این گزینه، نام فایل و شماره خط چاپ می‌شوند.
•
-Q, --quiet: بی‌صدا کردن خروجی عادی ابزار روی stdout.
•
-Z, --enable-errata: فعال‌سازی اعمال اصلاحیه‌های اشکالات (errata fixups). زمانی مفید است که لازم باشد یک اصلاحیه اشکال روی دستورهای ارسال‌شده به TPM اعمال شود. تعریف متغیر محیطی TPM2TOOLS_ENABLE_ERRATA نیز معادل این گزینه است.
•
-z, --pwd-session: استفاده از نشست گذرواژه (password session) به جای نشست HMAC برای احراز هویت. یک گذرواژه به صورت متن‌آشکار (clear text) به TPM ارسال می‌شود تا اقدام را مجاز کند. این گزینه می‌تواند برای جلوگیری از بروز مشکل در زمان استفاده از نشست‌های بدون سالت (unsalted) در حالت OpenSSL FIPS استفاده شود. اگر از مقادیر auth استفاده می‌شود، باید از یک نشست دارای سالت (salted session) برای احراز هویت استفاده شود.
•
-R, --autoflush: فعال‌سازی تخلیه خودکار (autoflush) برای اشیاء گذرا (transient objects) ایجادشده توسط دستور. اگر یک شیء والد از یک فایل زمینه (context file) بارگیری شود، شیء والد گذرای آن نیز تخلیه (flush) خواهد شد. تخلیه خودکار همچنین در صورتی که متغیر محیطی TPM2TOOLS_AUTOFLUSH روی yes یا true تنظیم شده باشد، فعال می‌شود. اطلاعاتی که بسیاری از کاربران ممکن است انتظار داشته باشند..SH "پیکربندی 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 پیش‌فرض با استفاده از معناشناسی 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، قالب رشتهٔ پیکربندی مجموعه‌ای از جفت‌های سادهٔ کلید-مقدار است که با نویسهٔ `,' از هم جدا می‌شوند. هر رشتهٔ کلید و مقدار با یک نویسهٔ `=' جدا می‌گردد.
•
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 -c prim.ctx -Q
tpm2_create -C prim.ctx -c key.ctx -u key.pub -r key.priv -G ecc256:ecdh -Q
tpm2_ecephemeral -u ecc.q -t ecc.ctr ecc256
tpm2_ecdhkeygen -u ecdh.pub -o ecdh.priv -c key.ctx
tpm2_zgen2phase -c key.ctx --static-public ecdh.pub --ephemeral-public ecc.q \
-t 0 --output-Z1 z1.bin --output-Z2 z2.bin

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

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

مشکلات گیت‌هاب (Github Issues)

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

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

tpm2-tools