| tpm2_rsaencrypt(1) | General Commands Manual | tpm2_rsaencrypt(1) |
نام (NAME)
tpm2_rsaencrypt - انجام عملیات رمزنگاری RSA با استفاده از TPM
خلاصه دستور (SYNOPSIS)
tpm2_rsaencrypt [OPTIONS] [ARGUMENT]
توضیحات (DESCRIPTION)
دستور tpm2_rsaencrypt(1) عملیات رمزنگاری RSA را بر روی محتوای دادههای فایل با استفاده از طرح پدینگ مشخصشده مطابق با IETF RFC 3447 (PKCS#1) انجام میدهد. در صورت عدم تعیین، ورودی به طور پیشفرض STDIN خواهد بود.
کلیدی که توسط key-context ارجاع داده میشود الزاماً باید دارای شرایط زیر باشد:
- 1.
- یک کلید RSA باشد
- 2.
- صفت encrypt در ویژگیهای آن فعال (SET) شده باشد.
گزینهها (OPTIONS)
- •
- -c, --key-context=OBJECT:
شیء زمینه که به بخش عمومی کلید RSA جهت استفاده در رمزنگاری اشاره میکند.
- •
- -o, --output=FILE:
مسیر اختیاری فایل خروجی برای ذخیره دادههای رمزنگاریشده. پیشفرض، چاپ دادههای رمزنگاریشدهٔ باینری در stdout است.
- •
- -s, --scheme=FORMAT:
اختیاری، طرح پدینگ را تعیین میکند (پیشفرض rsaes است).
- •
- null - TPM_ALG_NULL در صورت تنظیم بودن، از طرح کلید استفاده میکند.
- •
- rsaes - TPM_ALG_RSAES که همان RSAES_PKCSV1.5 است.
- •
- oaep - TPM_ALG_OAEP که همان RSAES_OAEP است.
- •
- -l, --label=FILE یا STRING:
اختیاری، دادههای برچسب را تعیین میکند. میتواند یک رشته یا مسیر فایل باشد. واحد TPM الزام میداند که آخرین بایت برچسب صفر باشد؛ این موضوع در داخل ابزار مدیریت میشود. هیچ بایت صفر درونگذاریشدهٔ دیگری نمیتواند وجود داشته باشد، در غیر این صورت TPM برچسب شما را کوتاه خواهد کرد.
- •
- ARGUMENT این آرگومان خط فرمان، مسیر فایل حاوی دادههای مورد نظر برای رمزنگاری را مشخص میکند.
مراجع (REFERENCES)
قالب شیء زمینه (CONTEXT OBJECT FORMAT)
نوع یک شیء زمینه، چه یک دستگیره (handle) باشد یا نام فایل، طبق منطق زیر و بهترتیب تعیین میشود:
- •
- اگر آرگومان مسیر یک فایل باشد، آنگاه فایل به عنوان یک شیء گذرا (transient object) بازیابیشدهٔ TPM بارگذاری میشود.
- •
- اگر آرگومان یک تطابق پیشوندی با یکی از موارد زیر باشد:
- •
- owner: سلسلهمراتب مالک (owner hierarchy)
- •
- platform: سلسلهمراتب بستر (platform hierarchy)
- •
- endorsement: سلسلهمراتب تایید (endorsement hierarchy)
- •
- lockout: شیء پایدار کنترل قفل (lockout control persistent object)
- •
- اگر آرگومان بتواند به صورت یک عدد بارگذاری شود، به عنوان یک دستگیره تلقی شده (مانند 0x81010013) و مستقیماً استفاده میشود._OBJECT_..SH "قالببندی احراز هویت (Authorization Formatting)" احراز هویت برای استفاده از یک شیء در TPM2.0 میتواند به ۳ شکل مختلف باشد: ۱. گذرواژه ۲. HMAC ۳. نشستها (Sessions)
نکته: “در صورت عدم تعیین، مقدار پیشفرض احراز هویت، گذرواژه خالی (EMPTY PASSWORD) در نظر گرفته میشود”.
برای اعتبارسنجی با مقادیر auth، دستورات ابزار به طور ضمنی یک نشست HMAC ایجاد میکنند. بنابراین گذرواژهها به صورت رمزگذارینشده منتقل نمیشوند. این موضوع برای گذرواژههای تعریفشده برای اشیاء صدق نمیکند. در این حالت، باید از یک نشست HMAC استفاده شود (نگاه کنید به tpm2_startauthsession(1)).
گذرواژهها (Passwords)
گذرواژهها با استفاده از شناسههای پیشوندی به اَشکال زیر تفسیر میشوند.
نکته: به صورت پیشفرض، چنانچه گذرواژهها فاقد پیشوند باشند در قالب رشته متنی (string) در نظر گرفته میشوند.
رشته (String)
یک گذرواژه رشتهای، که با پیشوند “str:” یا عدم وجود آن (رشته خام بدون پیشوند) مشخص میشود، تفسیر نشده و مستقیماً برای احراز هویت استفاده میشود.
مثالها
-
foobar str:foobar
رشته هگزادسیمال (Hex-string)
یک گذرواژه رشته هگز، که با پیشوند “hex:” مشخص میشود، از فرم هگزادسیمال به فرم آرایه بایت تبدیل میشود، و بدین ترتیب امکان استفاده از گذرواژههای حاوی نویسههای غیرقابلچاپ و/یا ناسازگار با ترمینال را فراهم میکند.
مثال
-
hex:1122334455667788
فایل (File)
یک گذرواژه مبتنی بر فایل، که با پیشوند “file:” تعیین میشود، باید مسیر فایلی حاوی گذرواژه جهت خوانده شدن توسط ابزار یا یک “-” برای استفاده از stdin باشد. ذخیره گذرواژهها در فایل از نشت اطلاعات جلوگیری میکند؛ گذرواژههایی که به عنوان گزینه (option) ارسال میشوند میتوانند از طریق فهرست فرآیندها یا قابلیتهای متداول تاریخچه شل خوانده شوند.
مثالها
-
# جهت استفاده از stdin و دریافت اعلان ورودی file:- # جهت استفاده از یک فایل از طریق مسیر file:path/to/password/file # جهت ارسال یک گذرواژه با دستور echo از طریق stdin: echo foobar | tpm2_tool -p file:- # جهت استفاده از bash here-string از طریق stdin: tpm2_tool -p file:- <<< foobar
نشستها (Sessions)
هنگام استفاده از یک نشست پالیسی (policy session) جهت احراز هویت برای استفاده از یک شیء، به ابتدای آرگومان گزینه کلمه کلیدی session را به عنوان پیشوند اضافه کنید. سپس مسیری به یک فایل نشست که با tpm2_startauthsession(1) ایجاد شده است را مشخص کنید. به عنوان یک امکان اختیاری، اگر نشست نیاز دارد که یک مقدار auth به همراه هندل نشست ارسال شود (مانند policy password)، یک علامت + و یک رشته متنی را طبق توضیحات بخش گذرواژهها (Passwords) به انتهای آن الحاق نمایید.
مثالها
برای استفاده از یک فایل زمینه نشست با نام session.ctx.
-
session:session.ctx
برای استفاده از یک فایل زمینه نشست با نام session.ctx و ارسال authvalue با مقدار mypassword.
-
session:session.ctx+mypassword
برای استفاده از یک فایل زمینه نشست با نام session.ctx و ارسال authvalue هگز (HEX) با مقدار 0x11223344.
-
session:session.ctx+hex:11223344 میتوانید یک سیاست PCR را با استفاده از پیشوند “pcr:” و ریززبان (minilanguage) PCR برآورده کنید. ریززبان PCR به شرح زیر است: <pcr-spec>=<raw-pcr-file>
مشخصات PCR در بخش “PCR bank specifiers” مستند شده است.
آرگومان raw-pcr-file یک آرگومان اختیاری است که شامل خروجی محتویات خام PCR بازگرداندهشده توسط tpm2_pcrread(1) میباشد.
مشخصکنندههای بانک PCR
مثالها (EXAMPLES)
برای برآورده کردن یک سیاست PCR با الگوریتم sha256 روی بانکهای ۰، ۱، ۲ و ۳ از مشخصکنندهای به شکل زیر استفاده کنید:
-
pcr:sha256:0,1,2,3
با تعیین AUTH.
گزینههای مشترک (COMMON OPTIONS)
این مجموعه از گزینهها میان بسیاری از برنامهها مشترک هستند و اطلاعاتی را ارائه میدهند که بسیاری از کاربران ممکن است انتظار داشته باشند.
- •
- -h، --help=[man|no-man]: نمایش صفحهٔ راهنمای (manpage) ابزار. بهطور پیشفرض، تلاش میکند صفحهبند راهنما (manpager) را برای ابزار فراخوانی کند؛ با این حال، در صورت شکست خلاصهای کوتاه از ابزار را نمایش خواهد داد. این رفتار مشابه زمانی است که آرگومان گزینهٔ “man” مشخص شده باشد، اما اگر صراحتاً “man” درخواست شود، ابزار خطاهای ناشی از man را در stderr ارائه میدهد. اگر گزینهٔ “no-man” مشخص شده باشد، یا فراخوانی manpager شکست بخورد، گزینههای کوتاه در stdout نمایش داده خواهند شد.
استفادهٔ موفقیتآمیز از ویژگی manpages مستلزم آن است که صفحات راهنما نصب شده باشند یا در مسیر 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 استفاده شوند، باید از یک نشست salted برای احراز هویت استفاده شود.
- •
- -R، --autoflush: فعال کردن پاکسازی خودکار (autoflush) برای شیءهای گذرا (transient objects) ایجادشده توسط دستور. اگر یک شیء والد از یک فایل زمینه (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 مشخص نشده باشد، TCTI پیشفرض با استفاده از معناشناسی dlopen(3) جستجو میشود. ابزارها به دنبال TCTIهای tabrmd، device و mssim دقیقاً به همین ترتیب گشته و از نخستین موردِ یافتشده استفاده میکنند. میتوانید با استفاده از گزینهٔ -v برای چاپ اطلاعات نسخه، بررسی کنید که کدام TCTI به عنوان پیشفرض انتخاب خواهد شد. جفت کلید-مقدار “default-tcti” نشان خواهد داد که کدامیک از TCTIهای یادشده پیشفرض است.
TCTIهای سفارشی
هر 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)
ساخت یک کلید RSA و بارگذاری آن
-
tpm2_createprimary -c primary.ctx tpm2_create -C primary.ctx -Grsa2048 -u key.pub -r key.priv tpm2_load -C primary.ctx -u key.pub -r key.priv -c key.ctx
رمزنگاری با استفاده از RSA
-
echo "my message" > msg.dat tpm2_rsaencrypt -c key.ctx -o msg.enc msg.dat
-
tpm2_rsadecrypt -c key.ctx -o msg.ptext msg.enc cat msg.ptext my message
کدهای بازگشتی (RETURNS)
ابزارها میتوانند هر یک از کدهای زیر را بازگردانند:
- •
- 0 - موفقیت.
- •
- 1 - خطای عمومی و نامشخص.
- •
- 2 - خطای پردازش گزینهها.
- •
- 3 - خطای احراز هویت.
- •
- 4 - خطای مرتبط با TCTI.
- •
- 5 - طرحواره (scheme) پشتیبانینشده. قابل اعمال برای tpm2_testparams.
گزارش باگها (BUGS)
راهنما (HELP)
به فهرست پستیمراجعه کنید.
مجوز (LICENSE)
این اثر تحت مجوز بینالمللی Creative Commons Attribution 4.0 (CC BY 4.0) منتشر شده است.
| tpm2-tools |