tpm2_ecdhkeygen(1) General Commands Manual tpm2_ecdhkeygen(1)

tpm2_ecdhkeygen - ایجاد یک کلید موقت و استفاده از آن برای تولید مقدار راز مشترک با استفاده از پارامترهای یک کلید عمومی ECC

tpm2_ecdhkeygen [گزینه‌ها]

دستور tpm2_ecdhkeygen(1) یک کلید موقت (ephemeral) ایجاد کرده و از آن برای تولید مقدار راز مشترک با استفاده از پارامترهای یک کلید عمومی ECC استفاده می‌کند.

•
-c, --context=FILE:

شیء زمینه که به کلید عمومی ECC اشاره دارد. می‌تواند یک فایل یا شماره هندل (handle number) باشد. بخش «قالب شیء زمینه» (Context Object Format) را ببینید.

•
-u, --public=FILE:

خروجی نقطه عمومی ECC به نام Q.

•
-o, --output=FILE

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

•
--cphash=FILE

مسیر فایل برای ثبت هش پارامترهای دستور. این مقدار معمولاً به عنوان cpHash شناخته می‌شود. نکته: هنگامی که این گزینه انتخاب شود، ابزار در واقع دستور را اجرا نخواهد کرد و صرفاً مقدار cpHash را بازمی‌گرداند.

گزینه‌هایی که الگوریتم دریافت می‌کنند از «نام‌های مناسب» (nice-names) پشتیبانی می‌کنند.

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

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

•
rsa
•
ecc

•
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 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 با اندازه کلید ۴۰۹۶ بیت.

مورد بعدی یک فیلد اختیاری است و می‌توان از آن صرف‌نظر کرد.

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

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

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

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

•
ecdaa برای مثال: ecdaa4-sha256.

اگر مقداری برای شمارش تعیین نشود، پیش‌فرض آن ۴ خواهد بود.

این مشخص‌کننده طرح هیچ آرگومانی نمی‌پذیرد.

•
rsaes

این فیلد اختیاری است و بر اساس نوع شیء در حال ایجاد و ویژگی‌های آن به مقادیر پیش‌فرض تنظیم می‌شود. به‌طور کلی، هر مشخص‌کننده معتبر متقارن از فهرست مشخص‌کننده‌های نوع قابل استفاده است. در صورت عدم تعیین، جزئیات متقارن یک شیء نامتقارن به‌طور پیش‌فرض 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]: صفحه راهنمای ابزار را نمایش می‌دهد. به‌طور پیش‌فرض، تلاش می‌کند صفحه‌بندی‌کننده راهنما (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 یا «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 پیش‌فرض با استفاده از معناشناسی dlopen(3) جستجو می‌شود. ابزارها TCTIهای tabrmd، device و mssim را به همان ترتیب جستجو می‌کنند و نخستین مورد یافت‌شده را به کار می‌برند. می‌توانید با استفاده از گزینه -v برای چاپ اطلاعات نسخه، بررسی کنید که کدام TCTI به عنوان پیش‌فرض انتخاب خواهد شد. جفت کلید-مقدار «default-tcti» مشخص می‌کند که کدام‌یک از TCTIهای یادشده پیش‌فرض است.

هر TCTI که رابط TCTI پویا را پیاده‌سازی کند می‌تواند بارگذاری شود. ابزارها در داخل از dlopen(3) استفاده می‌کنند و مقدار خام tcti-name برای جستجو استفاده می‌شود. بنابراین، این مقدار می‌تواند مسیری به کتابخانه اشتراکی یا نام کتابخانه‌ای باشد که بر اساس معناشناسی dlopen(3) درک می‌شود.

این مجموعه گزینه‌ها برای پیکربندی ماژول‌های مختلف شناخته‌شده 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.

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_ecdhkeygen -u ecdh.pub -o ecdh.priv -c key.ctx

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

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

tpm2_ecdhzgen(1)، tpm2_create(1)، tpm2_createprimary(1)

مسائل گیت‌هاب (Github Issues)

مشاهده فهرست پستی (Mailing List)

این اثر تحت مجوز بین‌المللی ارجاع ۴٫۰ کریپتیو کامانز (CC BY 4.0).

tpm2-tools