.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man 5.0102 (Pod::Simple 3.45) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "VIRT-WHAT-CVM 1" .TH VIRT-WHAT-CVM 1 2024-09-28 virt-what-1.27 "Virtualization Support" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "نام (NAME)" virt\-what\-cvm \- تشخیص اجرای سیستم در یک ماشین مجازی محرمانه .SH "خلاصه دستور (SYNOPSIS)" .IX Header "SYNOPSIS" virt-what-cvm [options] .SH "توضیحات (DESCRIPTION)" .IX Header "DESCRIPTION" \&\f(CW\*(C`virt\-what\-cvm\*(C'\fR ابزاری است که می‌توان از آن برای تشخیص اجرای برنامه در یک ماشین مجازی محرمانه (confidential virtual machine) استفاده کرد. .PP این برنامه فهرستی از «حقایق» (facts) را درباره ماشین مجازی محرمانه بر اساس روش‌های اکتشافی (heuristics) چاپ می‌کند. در هر سطر یک حقیقت چاپ می‌شود. .PP اگر چیزی چاپ نشود و اسکریپت با کد خروج 0 (بدون خطا) خاتمه یابد، می‌تواند به این معنی باشد که برنامه \fIیا\fR روی سخت‌افزار واقعی (bare-metal) در حال اجرا است، \fIیا\fR درون یک ماشین مجازی غیرمحرمانه اجرا می‌شود، \fIیا\fR درون نوعی از ماشین مجازی محرمانه قرار دارد که ناشناخته است یا امکان تشخیص آن وجود ندارد. .SH "حقایق (FACTS)" .IX Header "FACTS" .IP \fBamd-sev\fR 4 .IX Item "amd-sev" این یک مهمان محرمانه است که با فناوری AMD SEV اجرا می‌شود. .Sp وضعیت: آزمایش‌شده روی Fedora 37 QEMU+KVM .IP \fBamd-sev-es\fR 4 .IX Item "amd-sev-es" این یک مهمان محرمانه است که با فناوری AMD SEV-ES اجرا می‌شود. .Sp وضعیت: آزمایش‌شده روی Fedora 37 QEMU+KVM .IP \fBamd-sev-snp\fR 4 .IX Item "amd-sev-snp" این یک مهمان محرمانه است که با فناوری AMD SEV-SNP اجرا می‌شود. .Sp وضعیت: آزمایش‌شده روی Microsoft Azure SEV-SNP CVM .Sp وضعیت: آزمایش‌شده روی Fedora 38 QEMU+KVM SEV-SNP (devel snapshot) .IP \fBintel-tdx\fR 4 .IX Item "intel-tdx" این یک مهمان محرمانه است که با فناوری Intel TDX اجرا می‌شود. .Sp وضعیت: آزمایش‌شده روی Microsoft Azure TDX CVM .IP \fBhyperv-hcl\fR 4 .IX Item "hyperv-hcl" این یک مهمان محرمانه است که به صورت ناآگاه (unenlightened) تحت لایه سازگاری میزبان HyperV (Azure) HCL (Host Compatibility Layer) اجرا می‌شود. این گزینه با \fBamd-sev-snp\fR همراه خواهد بود. .Sp وضعیت: آزمایش‌شده روی Microsoft Azure SEV-SNP & TDX CVM .IP \fBs390\-protvirt\fR 4 .IX Item "s390-protvirt" این یک مهمان محرمانه است که روی معماری s390x با فناوری Protected Virtualization (Secure Execution) اجرا می‌شود. .SH "وضعیت خروج (EXIT STATUS)" .IX Header "EXIT STATUS" برنامه‌هایی که از \f(CW\*(C`virt\-what\-cvm\*(C'\fR استفاده می‌کنند یا آن را در بر می‌گیرند، باید پیش از تلاش برای پردازش خروجی دستور، بررسی کنند که وضعیت خروج 0 باشد. .PP وضعیت خروج غیرصفر نشان‌دهنده بروز خطا است؛ به عنوان مثال، یک آرگومان خط فرمان ناشناخته. اگر وضعیت خروج غیرصفر باشد، حقایق خروجی (در صورت چاپ هر موردی) قابل تضمین نبوده و باید نادیده گرفته شوند. .PP وضعیت خروج \fIهیچ\fR ارتباطی با اینکه برنامه روی سخت‌افزار واقعی اجرا می‌شود یا تحت مجازی‌سازی محرمانه ندارد، و همچنین ربطی به اینکه آیا \f(CW\*(C`virt\-what\-cvm\*(C'\fR تشخیص را «به‌درستی» انجام داده است یا خیر (که با توجه به تنوع بسیار زیاد سیستم‌های مجازی‌سازی موجود اساساً غیرقابل تعیین است) ندارد. .SH "اجرای VIRT-WHAT-CVM از برنامه‌های دیگر (RUNNING VIRT-WHAT-CVM FROM OTHER PROGRAMS)" .IX Header "RUNNING VIRT-WHAT-CVM FROM OTHER PROGRAMS" \&\f(CW\*(C`virt\-what\-cvm\*(C'\fR به‌گونه‌ای طراحی شده است که بتوانید آن را به آسانی از برنامه‌های دیگر اجرا کرده یا در قالب یک کتابخانه بسته‌بندی کنید. .PP برنامه شما باید وضعیت خروج را بررسی کند (بخش بالا را ببینید). .SH "نکته مهم (IMPORTANT NOTE)" .IX Header "IMPORTANT NOTE" این برنامه احتمال اجرای سیستم درون یک ماشین مجازی محرمانه شناخته‌شده را تشخیص می‌دهد، اما قابل‌اعتماد بودن محیط را اثبات \fIنمی‌کند\fR. دستیابی به اعتماد به محیط نیازمند گزارش تصدیق (attestation report) برای ماشین مجازی است که سپس توسط یک طرف سوم مورد اعتماد بررسی و تأیید شود. .PP ویژگی‌های سخت‌افزاری که این برنامه برای احراز حقایق درباره محیط مجازی‌سازی محرمانه به آن‌ها تکیه می‌کند، همان ویژگی‌هایی هستند که رفتار آن‌ها با تأیید اعتبار یک گزارش تصدیق اثبات خواهد شد. .PP این برنامه \fIممکن است\fR مثبت کاذب (false positive) داشته باشد؛ به این معنی که ممکن است آن را یک ماشین مجازی محرمانه گزارش کند در حالی که در واقعیت یک ماشین مجازی غیرمحرمانه است که ادای آن را درمی‌آورد. .PP این برنامه \fIنباید\fR منفی کاذب (false negative) داشته باشد؛ به این معنی که نباید در گزارش وجود یک ماشین مجازی محرمانه ناکام بماند. با این هشدار که این قاعده تنها برای محیط‌هایی معتبر است که به طور صریح آزمایش شده‌اند. .PP اگر این برنامه حقیقتی را چاپ کند، بر اساس اینکه آیا قابلیت‌های خاص برای یک محیط محرمانه مناسب هستند یا خیر، می‌توان از آن برای فعال یا غیرفعال کردن آن‌ها استفاده کرد. با این حال، تا زمانی که یک گزارش تصدیق تأیید نشده باشد، به ماشین مجازی \fIنباید\fR اعتماد کرد. .PP به عنوان راهکاری جهت محافظت در برابر منفی‌های کاذب این ابزار، محیط‌هایی که نیازمند ضریب اطمینان بالایی هستند باید یک یا چند مورد از این اقدامات را در نظر بگیرند: .PP .Vb 7 \& * حقایق گزارش‌شده توسط این برنامه باید در یکی از PCRهای TPM \& اندازه‌گیری و ثبت (measure) شوند \& * گزارش تصدیق باید حقایق گزارش‌شده توسط این برنامه را \& پوشش دهد \& * گزارش تصدیق باید وضعیت فعال‌سازی هر قابلیتی که تحت تأثیر \& تصمیم‌گیری‌های مبتنی بر حقایق گزارش‌شده توسط این ابزار است \& را پوشش دهد .Ve .SH "همچنین ببینید (SEE ALSO)" .IX Header "SEE ALSO" , , .SH "نویسندگان (AUTHORS)" .IX Header "AUTHORS" Daniel P. Berrangé .SH "کپی‌رایت و تکثیر (COPYRIGHT)" .IX Header "COPYRIGHT" (C) Copyright 2023 Red Hat Inc., .PP این برنامه یک نرم‌افزار آزاد است؛ شما می‌توانید آن را تحت شرایط «پروانه عمومی همگانی گنو» (GNU General Public License) همان‌طور که توسط بنیاد نرم‌افزارهای آزاد منتشر شده است؛ چه نسخه ۲ پروانه و چه (به انتخاب خودتان) هر نسخه بعدی دیگری، بازتوزیع کرده یا تغییر دهید. .PP این برنامه با این امید توزیع شده است که مفید واقع شود، اما بدون هرگونه ضمانت؛ حتی بدون ضمانت ضمنی قابل فروش بودن یا مناسب بودن برای یک هدف مشخص. برای جزئیات بیشتر به پروانه عمومی همگانی گنو مراجعه کنید. .PP شما باید به همراه این برنامه نسخه‌ای از پروانه عمومی همگانی گنو را دریافت کرده باشید؛ در غیر این صورت به آدرس زیر مکاتبه کنید: Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. .SH "گزارش باگ‌ها (BUGS)" .IX Header "REPORTING BUGS" اشکالات را می‌توان در صفحه Bugzilla مربوط به Red Hat مشاهده کرد: .PP اگر اشکالی در virt-what-cvm پیدا کردید، لطفاً این مراحل را برای گزارش آن دنبال کنید: .IP "1. بررسی گزارش‌های باگ موجود" 4 .IX Item "1. Check for existing bug reports" به بروید و اشکالات مشابه را جستجو کنید. ممکن است فرد دیگری پیش‌تر همین باگ را گزارش کرده باشد و حتی ممکن است برطرف شده باشد. .IP "2. ثبت پیام‌های اشکال‌زدایی و خطا" 4 .IX Item "2. Capture debug and error messages" دستور زیر را اجرا کنید: .Sp .Vb 1 \& virt\-what\-cvm \-d > virt\-what\-cvm.log 2>&1 .Ve .Sp و فایل \fIvirt\-what\-cvm.log\fR را نگه دارید. این فایل ممکن است حاوی پیام‌های خطایی باشد که باید همراه با گزارش باگ خود ارسال کنید. .IP "3. دریافت نسخه virt-what-cvm" 4 .IX Item "3. Get version of virt-what-cvm." دستور زیر را اجرا کنید: .Sp .Vb 1 \& virt\-what\-cvm \-\-version .Ve .IP "4. ارسال یک گزارش باگ" 4 .IX Item "4. Submit a bug report." به رفته و یک باگ جدید ثبت کنید. لطفاً مشکل را با حداکثر جزئیات ممکن شرح دهید. .Sp به یاد داشته باشید که شماره‌های نسخه (مرحله ۳)، فایل پیام‌های اشکال‌زدایی (مرحله ۲) و تا جای ممکن سایر جزئیات را ضمیمه کنید. .IP "5. انتساب باگ به rjones @ redhat.com" 4 .IX Item "5. Assign the bug to rjones @ redhat.com" باگ را به \fBrjones @ redhat.com\fR (بدون فاصله‌ها) منتسب یا دوباره منتسب کنید. همچنین اگر مایل به دریافت پاسخ سریع‌تری هستید، می‌توانید یک ایمیل حاوی شماره باگ به من ارسال کنید.