tpm2_makecredential(1) General Commands Manual tpm2_makecredential(1)

tpm2_makecredential - تولید داده‌های رمزنگاری‌شده انتخابی کاربر و کلید پیچیده‌شده برای صدور اعتبارنامه شیء TPM

tpm2_makecredential [گزینه‌ها]

دستور tpm2_makecredential(1) - تراشه TPM از یک پروتکل با حفظ حریم خصوصی برای توزیع اعتبارنامه‌های کلیدها روی TPM پشتیبانی می‌کند. این فرآیند تضمین می‌کند که شیء اعتبارنامه‌دار TPM (کلید AIK) روی همان TPM بارگذاری شده است که شیء کلید عمومی شناخته‌شده (EK) قرار دارد، بدون آنکه نیازی به آگاهی از ویژگی‌های عمومی خاص شیء اعتبارنامه‌دار TPM (AIK) باشد. حفظ حریم خصوصی به این دلیل تضمین می‌شود که تنها نام شیء اعتبارنامه‌دار TPM (AIK) به اشتراک گذاشته می‌شود و نه خود کلید عمومی شیء اعتبارنامه‌دار TPM.

عملیات ساخت اعتبارنامه (Make-credential) نخستین مرحله در این فرآیند است که در آن، پس از دریافت کلید عمومی شیء کلید عمومی (EK) مربوط به TPM و نام شیء اعتبارنامه‌دار TPM (AIK)، داده‌های رمزنگاری‌شده انتخابی کاربر تولید می‌شود و کلید رمزنگاری داده‌های محرمانه ایجاد و با استفاده از فرآیندهای رمزنگاری اختصاصی فعال‌سازی اعتبارنامه پیچیده (wrap) می‌شود؛ این سازوکار تضمین می‌کند که شیء اعتبارنامه‌دار TPM (AIK) بر روی TPM همراه با شیء کلید عمومی شناخته‌شده (EK) بارگذاری شده است.

می‌توان از tpm2_makecredential برای تولید داده‌های رمزنگاری‌شده انتخابی کاربر و کلید پیچیده‌شده رمزنگاری داده‌های محرمانه بدون نیاز به TPM، با استفاده از گزینه TCTI به صورت none استفاده کرد.

•
-e, --encryption-key=FILE:

منسوخ شده است (DEPRECATED)، به جای آن از -u یا –public استفاده کنید.

•
-u, --public=FILE:

یک کلید عمومی TPM که برای پیچیدن (wrap) سید (seed) استفاده شده است. نکته: این گزینه همانند -e است و برای شباهت و یکدستی با سایر ابزارهایی که کلید عمومی را تعیین می‌کنند اضافه شده است. گزینه قدیمی برای سازگاری با نسخه‌های پیشین حفظ شده است.

•
-G, --key-algorithm=ALGORITHM:

الگوریتم کلید مرتبط با کلید عمومی TPM. یکی از مقادیر RSA یا ECC را مشخص کنید. هنگام استفاده از این گزینه، انتظار می‌رود کلید عمومی ورودی در قالب PEM باشد و از الگوی پیش‌فرض TCG EK برای ویژگی‌های کلید استفاده می‌شود.

•
-s, --secret=FILE یا STDIN:

داده محرمانه‌ای که توسط کلید مشتق‌شده از سید تصادفی محافظت خواهد شد. می‌تواند به صورت یک فایل مشخص شود یا از طریق ورودی استاندارد (stdin) فرستاده شود.

•
-n, --name=FILE_OR_HEX:

نام کلیدی که قرار است گواهی برای آن ایجاد شود. می‌تواند مسیر یک فایل یا یک رشته هگزادسیمال باشد.

•
-o, --credential-blob=FILE:

مسیر فایل خروجی برای ثبت داده‌های رمزنگاری‌شده انتخابی کاربر و کلید پیچیده‌شده رمزنگاری داده‌های محرمانه.

این مجموعه گزینه‌ها میان بسیاری از برنامه‌ها مشترک هستند و اطلاعاتی را ارائه می‌دهند که اغلب کاربران انتظار دارند.

•
-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 (کوتاه‌شده‌ی 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)، فایل دستگاه نویسه‌ای 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 مترادف یکدیگرند.

tpm2 createek -Q -c 0x81010009 -G rsa -u ek.pub
tpm2 createak -C 0x81010009 -c ak.ctx -G rsa -g sha256 -s rsassa -u ak.pub \
-n ak.name -p akpass> ak.out
file_size=`ls -l ak.name | awk {'print $5'}`
loaded_key_name=`cat ak.name | xxd -p -c $file_size`
tpm2 readpublic -c 0x81010009 -o ek.pem -f pem -Q
echo "12345678" | tpm2 makecredential -Q -u ek.pem -s - -n $loaded_key_name \
-o mkcred.out -G rsa

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

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

tpm2_activatecredential(1), tpm2_createek(1), tpm2_createak(1), tpm2_readpublic(1)

گزارش اشکالات در گیت‌هاب (Github Issues)

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

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

tpm2-tools