| tpm2_commit(1) | General Commands Manual | tpm2_commit(1) |
نام (NAME)
tpm2_commit - اجرای بخش نخست از عملیات امضای ناشناس ECC
خلاصه دستور (SYNOPSIS)
tpm2_commit [گزینهها]
توضیحات (DESCRIPTION)
دستور tpm2_commit(1) بخش نخست از یک عملیات امضای ناشناس ECC را اجرا میکند. ماژول TPM عمل ضرب نقطهای را روی نقاط ارائهشده انجام داده و مقادیر میانی امضا را بازمیگرداند. کلید امضا یک کلید ECC است. کلید نمیتواند از نوع کلید امضا+رمزگشایی (sign+decrypt) باشد و باید دارای طرح امضای ناشناس باشد. تنها طرح ناشناس پشتیبانیشده TPM_ALG_ECDAA است.
گزینهها (OPTIONS)
- •
- ARGUMENT=FILE:
دادههای ورودی مورد استفاده برای استخراج مختصات x نقطه مبنا (basepoint) را مشخص میکند.
- •
- --basepoint-y=FILE:
مختصات y نقطه مبنا (basepoint) را مشخص میکند.
- •
- --eccpoint-P=FILE:
نقطهای روی منحنی را که توسط دستهٔ امضا (sign handle) استفاده میشود، مشخص میکند.
- •
- --eccpoint-K=FILE:
خروجی نقطه ECC به صورت K ≔ [ds](x2, y2).
- •
- --eccpoint-L=FILE:
خروجی نقطه ECC به صورت L ≔ [r](x2, y2).
- •
- -u، --public=FILE:
خروجی نقطه ECC به صورت E ≔ [r]P1.
- •
- -t، --counter=FILE
مسیر فایلی را برای ذخیره ۱۶ بیت کمارزشتر شمارنده تعهد (commit count) مشخص میکند.
- •
- -p، --auth=AUTH:
مقدار احراز اصالت برای شیء ایجادشده.
- •
- -c، --context=FILE:
شیء بافتار (context object) اشارهکننده به کلید مورد استفاده برای امضا. یا یک فایل است یا یک شماره دستگیره (handle). بخش «قالب شیء بافتار» (Context Object Format) را ببینید.
- •
- --cphash=FILE
مسیر فایل برای ثبت هش پارامترهای دستور. این مقدار معمولاً به عنوان cpHash شناخته میشود. نکته: هنگامی که این گزینه انتخاب شود، ابزار در واقع دستور را اجرا نمیکند و فقط یک cpHash بازمیگرداند.
مراجع (References)
مشخصکنندههای الگوریتم (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.
گزینههای مشترک (COMMON OPTIONS)
این مجموعه گزینهها میان بسیاری از برنامهها مشترک هستند و اطلاعاتی را ارائه میدهند که بسیاری از کاربران انتظار دارند.
- •
- -h، --help=[man|no-man]: صفحه راهنمای ابزار را نمایش میدهد. بهطور پیشفرض، تلاش میکند صفحهبندیکننده راهنما (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: استفاده از نشست گذرواژه بهجای نشست HMAC برای احراز هویت. یک گذرواژه متنآشکار (clear text) برای مجاز کردن اقدام به TPM ارسال میشود. این گزینه میتواند برای جلوگیری از بروز مشکل در صورت استفاده از نشستهای بدون سالت (unsalted) در حالت OpenSSL FIPS به کار رود. اگر از مقادیر احراز هویت (auth) استفاده میشود، باید از یک نشست همراه با سالت برای احراز هویت استفاده گردد.
- •
- -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 را دارند و بنابراین از عدم استفاده از 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 و شماره درگاه مورد استفاده شبیهساز را مشخص کرد. مقادیر پیشفرض 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.
مثالها (EXAMPLES)
-
tpm2_createprimary -C o -c prim.ctx -Q tpm2_create -C prim.ctx -c key.ctx -u key.pub -r key.priv -G ecc256:ecdaa tpm2_commit -c key.ctx -t count.er \ --eccpoint-K K.bin --eccpoint-L L.bin -u E.bin
کدهای بازگشتی (RETURNS)
ابزارها میتوانند هر یک از کدهای زیر را برگردانند:
- •
- 0 - موفقیتآمیز.
- •
- 1 - خطای عمومی و نامشخص.
- •
- 2 - خطای پردازش گزینهها.
- •
- 3 - خطای احراز هویت.
- •
- 4 - خطای مربوط به TCTI.
- •
- 5 - طرح پشتیبانینشده. قابل اعمال برای tpm2_testparams.
همچنین ببینید (SEE ALSO)
اشکالات (BUGS)
راهنما (HELP)
مشاهده فهرست پستی (Mailing List).
مجوز (LICENSE)
این اثر تحت مجوز بینالمللی کریتیو کامنز ارجاع ۴.۰ (CC BY 4.0) منتشر شده است.
| tpm2-tools |