.Dd $Mdocdate: Jun 4 2020$ .Dt PESIGN 1 .Os Linux .Sh "نام (NAME)" .Nm pesign .Nd ابزاری برای امضای برنامه‌های کاربردی UEFI .Sh "خلاصه دستور (SYNOPSIS)" .Nm .Bk -words .Cm Fl i Ar file .Op Fl o Ar file .Op Fl f .Op Fl n Ar directory .Op Fl t Ar token .Op Fl c Ar nickname .Op Fl u Ar number .Op Fl m Ar file .Op Fl e Ar file .Op Fl I Ar file .Op Fl E Ar file .Op Fl R Ar file .Op Fl K Ar file .Op Fl C Ar file .Op Fl a .Op Fl l .Op Fl S .Op Fl v .Ek \& .Ao .Fl s | .Fl D Op Fl N | .Fl r | .Ek .Bk -words .Fl h .Op Fl d Ar digest .Op Fl P | Fl p .Ek .Ac .Sh "توضیحات (DESCRIPTION)" .Nm یک ابزار خط فرمان برای مدیریت و دستکاری امضاها و خلاصه‌های رمزنگاری برنامه‌های کاربردی UEFI است. .Sh "گزینه‌ها (OPTIONS)" .Bl -tag .It Fl i Ar file | Fl Fl in Ar file فایل PE ورودی برای امضا کردن .It Fl o Ar file | Fl Fl out Ar file فایل PE خروجی برای امضا کردن .It Fl f | Fl Fl force بازنویسی فایل موجودِ مشخص‌شده با .Fl Fl out .It Fl n Ar directory | Fl Fl certdir Ar directory استفاده از پایگاه‌داده NSS در .Ar directory .Po پیش‌فرض: .Pa /etc/pki/pesign .Pc .It Fl t Ar token | Fl Fl token Ar token استفاده از توکن NSS به نام .Ar token .It Fl c Ar nickname | Fl Fl certificate Ar nickname استفاده از گواهی با نام مستعار .Ar nickname در پایگاه‌داده NSS .It Fl u Ar number | Fl Fl signature-number Ar number شماره امضا، با شروع از اندیس 0، برای استفاده با .Fl Fl remove-signature\fR، .Fl Fl export-signature\fR، یا .Fl Fl show-signature .Po پیش‌فرض: \fI0\fR .Pc .It Fl m Ar file | Fl Fl import-signature Ar file وارد کردن امضای \fBAuthenticode\fR از .Ar file .It Fl e Ar file | Fl Fl export-signature Ar file صادر کردن امضای \fBAuthenticode\fR به .Ar file .It Fl I Ar file | Fl Fl import-signed-attributes Ar file وارد کردن بخش \fISignedAttributes\fR در \fBPKCS-7\fR (بدون هیچ امضایی) از .Ar file .It Fl E Ar file | Fl Fl export-signed-attributes Ar file صادر کردن بخش \fISignedAttributes\fR در \fBPKCS-7\fR (بدون هیچ امضایی) به .Ar file .It Fl R Ar file | Fl Fl import-raw-signature Ar file وارد کردن خلاصه (digest) امضا از .Ar file .It Fl K Ar file | Fl Fl export-pubkey Ar file صادر کردن کلید عمومی از پایگاه‌داده NSS مشخص‌شده با .Fl Fl token و .Fl Fl certificate به .Ar file .It Fl C Ar file | Fl Fl export-cert Ar file صادر کردن گواهی از پایگاه‌داده NSS مشخص‌شده با .Fl Fl token و .Fl Fl certificate به .Ar file .It Fl a | Fl Fl ascii-armor هنگام صادر کردن گواهی‌ها، آن‌ها در قالب \fIascii-armor\fR کدگذاری شوند .It Fl l | Fl Fl list-signatures فهرست کردن امضاها .It Fl S | Fl Fl show-signature نمایش اطلاعات درباره امضاها .It Fl v | Fl Fl verbose نمایش اطلاعات بیشتر و با جزئیات (حالت پرگو) .It Fl s | Fl Fl sign ایجاد یک امضای جدید .It Fl D | Fl Fl daemonize اجرا به صورت یک دیمن (daemon) .It Fl N | Fl Fl nofork هنگام تبدیل به دیمن فرآیند فرعی (fork) ایجاد نشود .Po دیمن در پیش‌زمینه اجرا می‌شود .Pc .It Fl r | Fl Fl remove-signature حذف امضا .It Fl h | Fl Fl hash نمایش هش \fBAuthenticode\fR فایل باینری .It Fl d Ar digest | Fl Fl digest-type Ar digest استفاده از .Ar digest رمزنگاری به همراه .Fl Fl hash .Po استفاده از .Ar help برای فهرست کردن گزینه‌ها .Pc .Po پیش‌فرض: \fIsha256\fR .Pc .It Fl P | Fl Fl padding | Fl p | Fl Fl nopadding تکمیل کردن یا نکردن (Padding) فایل باینری بر اساس قوانین \fBPE 9.3\fR پیش از امضا یا محاسبه هش .Po پیش‌فرض: .Fl Fl padding .Pc پدینگ یا تکمیل‌سازی (Padding) حتی برای باینری‌هایی که پیش از مشخصات فعلی PE ایجاد شده‌اند توصیه می‌شود (و در بسیاری از شرایط الزامی است)، و از نسخه pesign 113 به بعد به طور پیش‌فرض فعال است. .El .Sh "مثال‌ها (EXAMPLES)" .Ss امضا با گواهی و کلید خصوصی در فایل‌های جداگانه اگر یک فایل گواهی و یک فایل کلید خصوصی دارید، مراحل زیر می‌توانند برای امضای یک ایمیج PE استفاده شوند: .Bd -literal -offset 1 -compact # Create a pkcs12 file from private key and certificate file.\p host:~$ \fBopenssl pkcs12 -export -out foo_key.p12 \e -inkey signing_key.pem -in xyz_cert.x509.pem\fR # Import pkcs12 file into pesign db\p host:~$ \fBpk12util -i foo_key.p12 -d /etc/pki/pesign\fR # Do the signing\p host:~$ \fBpesign -c my-signing-cert -s \e -i foo.unsigned.efi -o foo.signed.efi\fR .Ed لطفاً توجه داشته باشید که این تنها یک مثال است، و بهترین شیوه توصیه‌شده این است که کلیدهای خصوصی همیشه در یک ماژول امنیت سخت‌افزاری (HSM) با استاندارد \fIFIPS 140-2\fR، سطح ۲ یا بالاتر ذخیره شوند. .Ss امضا با استفاده از HSM اگر در HSM خود یک جفت‌کلید دارید و ارائه‌دهنده HSM شما یک کتابخانه PKCS-11 ارائه می‌دهد، می‌توانید مستقیماً از آن به همراه NSS استفاده کنید: .Bd -literal -offset 1 -compact # Add the HSM PKCS-11 library to the NSS database\p host:~$ \fBmodutil -dbdir /etc/pki/pesign -add vendor-engine \e -libfile /usr/lib64/pkcs11/vendor-engine.so\fR WARNING: Performing this operation while the browser is running could cause corruption of your security databases. If the browser is currently running, you should exit browser before continuing this operation. Type\p \(aqq \(aq to abort, or to continue: \fB\fR Module "vendor-engine" added to database. # List the added module\p host:~$ \fBmodutil -dbdir /etc/pki/pesign -list\fR ----------------------------------------------------------- 1. NSS Internal PKCS #11 Module uri: pkcs11:library-manufacturer=Mozilla%20Foundation;library-description=NSS%20Internal%20Crypto%20Services;library-version=3.52 slots: 2 slots attached status: loaded slot: NSS Internal Cryptographic Services token: NSS Generic Crypto Services uri: pkcs11:token=NSS%20Generic%20Crypto%20Services;manufacturer=Mozilla%20Foundation;serial=0000000000000000;model=NSS%203 slot: NSS User Private Key and Certificate Services token: NSS Certificate DB uri: pkcs11:token=NSS%20Certificate%20DB;manufacturer=Mozilla%20Foundation;serial=0000000000000000;model=NSS%203 2. opensc-pkcs11.so library name: /usr/lib64/pkcs11/opensc-pkcs11.so uri: pkcs11:library-manufacturer=OpenSC%20Project;library-description=OpenSC%20smartcard%20framework;library-version=0.20 slots: 1 slot attached status: loaded slot: Generic Smart Card Reader Interface [Smart Card Reader Interf... token: OpenSC Card (myorg-sb-signer) uri: pkcs11:token=OpenSC%20Card%20(myorg-sb-signer);manufacturer=OpenSC%20Project;serial=56516a130f35;model=PKCS%2315 ----------------------------------------------------------- # List certs in tokens\p host:~$ \fBcertutil -d /etc/pki/pesign \e -h "OpenSC Card (myorg-sb-signer)" -L\fR Certificate Nickname Trust Attributes\p SSL,S/MIME,JAR/XPI\p Enter Password or Pin for "OpenSC Card (myorg-sb-signer)": \fB\fR\p OpenSC Card (myorg-sb-signer):/CN=My Org's SB Signer u,u,u\p # Sign with private key in HSM host:~$ \fBpesign -t "OpenSC Card (myorg-sb-signer)" \e -c "OpenSC Card (myorg-sb-signer):/CN=My Org's SB Signer" \e -s -i foo.unsigned.efi -o foo.efi\fR .Ed .Ss امضا با استفاده از HSM به‌همراه موتور OpenSSL اگر در HSM خود یک جفت‌کلید دارید اما نمی‌توانید مستقیماً به آن دسترسی پیدا کنید، ولی به ابزار خط فرمان openssl که با کتابخانه‌های ارائه‌دهنده‌تان پیکربندی شده دسترسی دارید، همچنان می‌توانید از .Nm برای امضای باینری‌های PE خود استفاده کنید: .Bd -literal -offset 1 -compact # Import the public certificate into the NSS Database\p host:~$ \fBcertutil -d /etc/pki/pesign -A -n myorg-sb-signer \e -t ,,u -i myorg-sb-signer.cer\fR # Export the PKCS-7 SignedAttributes section pesign generates\p host:~$ \fBpesign -i foo.unsigned.efi -E foo.sattrs.bin\fR # Generate a signature using OpenSSL\p host:~$ \fBopenssl dgst -sha256 -sign $KEY \e --keyform ENGINE --engine $ENGINEID \e -out foo.sattrs.sig foo.sattrs.bin\fR # Import the signature with the original SignedAttributes into # the PE binary host:~$ \fBpesign -c myorg-sb-signer \e -R foo.sattrs.sig -I foo.sattrs.bin \e -i foo.unsigned.efi -o foo.efi .Sh "استانداردها (STANDARDS)" .Rs .%A B. Kaliski .%R RFC 2315 .%B PKCS #7: Cryptographic Message Syntax v1.5 .%I Internet Engineering Task Force .%D March 1998 .%U https://tools.ietf.org/html/rfc2315\ \& .Re .Rs .%A K. Moriarty .%A M. Nystr\[u00F6]m .%A S. Parkinson .%A A. Rusch .%A M. Scott .%R RFC 7292 .%B PKCS #12: Personal Information Exchange Syntax v1.1 .%I Internet Engineering Task Force .%D July 2014 .%U https://tools.ietf.org/html/rfc7292\ \& .Re .Rs .%A PKCS11 Technical Committee .%B PKCS#11: Cryptographic Token Interface Standard .%I OASIS .%U https://www.cryptsoft.com/pkcs11doc .Re .Rs .%A M. Nystr\[u00F6]m .%B PKCS #15\[u2014]A Cryptographic-Token Information Format Standard .%I RSA Laboratories .%D 1999 .%U https://www.usenix.org/legacy/events/smartcard99/full_papers/nystrom/nystrom.pdf\ \& .Re .Rs .%B Portable Executable .%I Microsoft .%D August 26, 2019 .%U https://docs.microsoft.com/en-us/windows/win32/debug/pe-format\ \& .Re .Rs .%B Windows Authenticode Portable Executable Signature Format .%I Microsoft .%D March 21, 2008 .%U https://web.archive.org/web/20130518222430/http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/Authenticode_PE.docx\ \& .Re .Rs .%R FIPS 140-2 .%B Federal Information Processing Standard 140-2 .%Q National Institute of Standards and Technology .%I United States Department of Commerce .%U http://csrc.nist.gov/publications/PubsFIPS.html\ \& .Re .Sh "همچنین ببینید (SEE ALSO)" .Xr certutil 1 , .Xr efikeygen 1 , .Xr modutil 1 , .Xr opensc-tool 1 , .Xr openssl 1ssl , .Xr openssl-dgst 1ssl , .Xr pesign-client 1 , .Xr pk12util 1 , .Xr pkcs15-init 1 , .LP .Sh "نویسندگان (AUTHORS)" .An Peter Jones .An Vikas Charak \fR(مثال‌ها)