CLEVIS-ENCRYPT-TPM(1)   CLEVIS-ENCRYPT-TPM(1)

clevis-encrypt-tpm2 - رمزنگاری با استفاده از شیوه‌نامهٔ پیوند به تراشهٔ TPM2.0

clevis encrypt tpm2 CONFIG < PT > JWE

دستور clevis encrypt tpm2 با استفاده از یک تراشهٔ Trusted Platform Module 2.0 (TPM2) داده‌ها را رمزنگاری می‌کند. تنها آرگومان آن شیء پیکربندی JSON است.

هنگام استفاده از پین tpm2، یک کلید تصادفی جدید و از نظر رمزنگاری قدرتمند ایجاد می‌شود. این کلید با استفاده از تراشهٔ TPM2 رمزنگاری می‌شود. سپس در زمان رمزگشایی، کلید دوباره با استفاده از تراشهٔ TPM2 رمزگشایی می‌گردد.

$ clevis encrypt tpm2 '{}' < PT > JWE

این پین مقادیر پیش‌فرض معقولی برای پیکربندی خود دارد، اما در صورتی که مقادیر پیش‌فرض مناسب نباشند، می‌توان سلسله‌مراتب (hierarchy)، درهم‌سازی (hash) و الگوریتم‌های کلید متفاوتی را انتخاب کرد:

$ clevis encrypt tpm2 '{"hash":"sha1","key":"rsa"}' < PT > JWE

برای رمزگشایی داده‌ها، کافی است متن رمزشده (JWE) را فراهم کنید:

$ clevis decrypt < JWE > PT

توجه داشته باشید که همانند سایر پین‌ها، هیچ پیکربندی خاصی برای رمزگشایی استفاده نمی‌شود؛ چرا که clevis کلیدهای عمومی و خصوصی را جهت بازگشایی (unseal) شیء رمزنگاری‌شدهٔ TPM2 در JWE ذخیره می‌کند تا بتواند آن اطلاعات را از همان‌جا واکشی کند.

این پین همچنین از پلمب کردن (sealing) داده‌ها به وضعیت ثبات‌های پیکربندی پلتفرم (PCR) پشتیبانی می‌کند. به این ترتیب، داده‌ها تنها در صورتی بازگشایی (unseal) می‌شوند که مقادیر هش‌های PCR با شیوه‌نامهٔ استفاده‌شده در هنگام پلمب مطابقت داشته باشند.

برای مثال، جهت پلمب کردن داده‌ها به PCR با شناسه‌های 0 و 1 برای بانک sha1:

$ clevis encrypt tpm2 '{"pcr_bank":"sha1","pcr_ids":"0,1"}' < PT > JWE

مقادیر چکیدهٔ PCR از مقادیر هش فعلی ثبات‌های PCR استعلام می‌شوند؛ با این حال، اگر لازم باشد داده‌ها با مقادیری متفاوت از مقادیر فعلی پلمب شوند، می‌توان با فرستادن هش باینری کدگذاری‌شده در base64 نیز یک چکیده (digest) تعیین کرد:

$ clevis encrypt tpm2 '{"pcr_ids":"0","pcr_digest":"xy7J5svCtqlfM03d1lE5gdoA8MI"}' < PT > JWE

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

در بیشتر پین‌های Clevis، کلید رمزگشایی به صورت محلی ذخیره نمی‌شود، بنابراین شیوه‌نامهٔ رمزگشایی تنها در صورتی برآورده می‌گردد که بتوان به کلید رمزگشایی از راه دور دسترسی داشت. برای نمونه، این کلید می‌تواند در یک سرور راه دور یا در یک دستگاه احراز هویت سخت‌افزاری که باید به سیستم متصل شود، ذخیره گردد.

پین tpm2 از این نظر متفاوت است، زیرا کلید توسط یک تراشهٔ TPM2 که همواره در سیستم حضور دارد محافظت (wrap) می‌شود. این موضوع بدین معنا نیست که هیچ مورد کاربردی برای این پین وجود ندارد، اما درک این واقعیت مهم است که مهاجمی با دسترسی هم‌زمان به داده‌های رمزنگاری‌شده و تراشهٔ TPM2 محلی، قادر به رمزگشایی داده‌ها خواهد بود.

این دستور از ویژگی‌های پیکربندی زیر استفاده می‌کند:

•hash (رشته) : الگوریتم درهم‌سازی استفاده‌شده در محاسبهٔ نام شیء (پیش‌فرض: sha256)
باید یکی از موارد زیر باشد:
•sha1
•sha256
•sha384
•sha512
•sm3_256
•key (رشته) : نوع الگوریتم برای کلید تولیدشده (پیش‌فرض: ecc)
باید یکی از موارد زیر باشد:
•rsa
•keyedhash
•ecc
•symcipher
•pcr_bank (رشته) : بانک الگوریتم PCR مورد استفاده در شیوه‌نامه (پیش‌فرض: اولین مورد پشتیبانی‌شده توسط TPM)
نمونه‌هایی از بانک‌های الگوریتم PCR (پشتیبانی بستگی به تراشهٔ TPM دارد):
•sha1
•sha256
برای مشاهدهٔ فهرست کامل الگوریتم‌های پشتیبانی‌شده توسط تراشهٔ TPM، خروجی
دستور `tpm2_getcap pcrs` را بررسی کرده و از الگوریتمی استفاده کنید که فهرستی
غیرخالی از شماره‌های PCR را نمایش می‌دهد.
•pcr_ids (رشته) : فهرستی جداشده با کاما از PCRهای مورد استفاده برای شیوه‌نامه. در صورت عدم وجود، هیچ شیوه‌نامه‌ای اعمال نمی‌شود
•pcr_digest (رشته) : هش‌های باینری PCR کدگذاری‌شده در base64. در صورت عدم وجود، مقادیر هش استعلام می‌شوند

clevis-decrypt(1)

08/23/2026