| PESIGN(1) | General Commands Manual | PESIGN(1) |
نام (NAME)
pesign —
ابزاری
برای امضای
برنامههای
کاربردی UEFI
خلاصه دستور (SYNOPSIS)
pesign -i
file
[-o file]
[-f]
[-n directory]
[-t token]
[-c nickname]
[-u number]
[-m file]
[-e file]
[-I file]
[-E file]
[-R file]
[-K file]
[-C file]
[-a] [-l]
[-S] [-v]
⟨-s | -D
[-N] | -r |
-h
[-d digest]
[-P | -p]⟩
توضیحات (DESCRIPTION)
pesign یک
ابزار خط
فرمان برای
مدیریت و
دستکاری
امضاها و
خلاصههای
رمزنگاری
برنامههای
کاربردی UEFI
است.
گزینهها (OPTIONS)
-ifile |--infile- فایل PE ورودی برای امضا کردن
-ofile |--outfile- فایل PE خروجی برای امضا کردن
-f|--force- بازنویسی
فایل
موجودِ
مشخصشده
با
--out -ndirectory |--certdirdirectory- استفاده از پایگاهداده NSS در directory (پیشفرض: /etc/pki/pesign)
-ttoken |--tokentoken- استفاده از توکن NSS به نام token
-cnickname |--certificatenickname- استفاده از گواهی با نام مستعار nickname در پایگاهداده NSS
-unumber |--signature-numbernumber- شماره
امضا، با
شروع از
اندیس 0،
برای
استفاده با
--remove-signature،--export-signature،یا--show-signature(پیشفرض: 0) -mfile |--import-signaturefile- وارد کردن امضای Authenticode از file
-efile |--export-signaturefile- صادر کردن امضای Authenticode به file
-Ifile |--import-signed-attributesfile- وارد کردن بخش SignedAttributes در PKCS-7 (بدون هیچ امضایی) از file
-Efile |--export-signed-attributesfile- صادر کردن بخش SignedAttributes در PKCS-7 (بدون هیچ امضایی) به file
-Rfile |--import-raw-signaturefile- وارد کردن خلاصه (digest) امضا از file
-Kfile |--export-pubkeyfile- صادر کردن
کلید عمومی
از
پایگاهداده
NSS مشخصشده
با
--tokenو--certificateبه file -Cfile |--export-certfile- صادر کردن
گواهی از
پایگاهداده
NSS مشخصشده
با
--tokenو--certificateبه file -a|--ascii-armor- هنگام صادر کردن گواهیها، آنها در قالب ascii-armor کدگذاری شوند
-l|--list-signatures- فهرست کردن امضاها
-S|--show-signature- نمایش اطلاعات درباره امضاها
-v|--verbose- نمایش اطلاعات بیشتر و با جزئیات (حالت پرگو)
-s|--sign- ایجاد یک امضای جدید
-D|--daemonize- اجرا به صورت یک دیمن (daemon)
-N|--nofork- هنگام تبدیل به دیمن فرآیند فرعی (fork) ایجاد نشود (دیمن در پیشزمینه اجرا میشود)
-r|--remove-signature- حذف امضا
-h|--hash- نمایش هش Authenticode فایل باینری
-ddigest |--digest-typedigest- استفاده از
digest
رمزنگاری
به همراه
--hash(استفاده از help برای فهرست کردن گزینهها) (پیشفرض: sha256) -P|--padding|-p|--nopadding- تکمیل کردن
یا نکردن (Padding)
فایل
باینری بر
اساس
قوانین PE 9.3
پیش از امضا
یا محاسبه
هش
(پیشفرض:
--padding)پدینگ یا تکمیلسازی (Padding) حتی برای باینریهایی که پیش از مشخصات فعلی PE ایجاد شدهاند توصیه میشود (و در بسیاری از شرایط الزامی است)، و از نسخه pesign 113 به بعد به طور پیشفرض فعال است.
مثالها (EXAMPLES)
امضا با گواهی و کلید خصوصی در فایلهای جداگانه
اگر یک فایل گواهی و یک فایل کلید خصوصی دارید، مراحل زیر میتوانند برای امضای یک ایمیج PE استفاده شوند:
# Create a pkcs12 file from private key and certificate file.
host:~$ openssl pkcs12 -export -out foo_key.p12 \
-inkey signing_key.pem -in xyz_cert.x509.pem
# Import pkcs12 file into pesign db
host:~$ pk12util -i foo_key.p12 -d /etc/pki/pesign
# Do the signing
host:~$ pesign -c my-signing-cert -s \
-i foo.unsigned.efi -o foo.signed.efi
لطفاً توجه داشته باشید که این تنها یک مثال است، و بهترین شیوه توصیهشده این است که کلیدهای خصوصی همیشه در یک ماژول امنیت سختافزاری (HSM) با استاندارد FIPS 140-2، سطح ۲ یا بالاتر ذخیره شوند.
امضا با استفاده از HSM
اگر در HSM خود یک جفتکلید دارید و ارائهدهنده HSM شما یک کتابخانه PKCS-11 ارائه میدهد، میتوانید مستقیماً از آن به همراه NSS استفاده کنید:
# Add the HSM PKCS-11 library to the NSS database
host:~$ modutil -dbdir /etc/pki/pesign -add vendor-engine \
-libfile /usr/lib64/pkcs11/vendor-engine.so
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
'q <enter>' to abort, or <enter> to continue: <type enter here>
Module "vendor-engine" added to database.
# List the added module
host:~$ modutil -dbdir /etc/pki/pesign -list
-----------------------------------------------------------
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
host:~$ certutil -d /etc/pki/pesign \
-h "OpenSC Card (myorg-sb-signer)" -L
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
Enter Password or Pin for "OpenSC Card (myorg-sb-signer)": <type the PIN here>
OpenSC Card (myorg-sb-signer):/CN=My Org's SB Signer u,u,u
# Sign with private key in HSM
host:~$ pesign -t "OpenSC Card (myorg-sb-signer)" \
-c "OpenSC Card (myorg-sb-signer):/CN=My Org's SB Signer" \
-s -i foo.unsigned.efi -o foo.efi
امضا با استفاده از HSM بههمراه موتور OpenSSL
اگر در HSM
خود یک
جفتکلید
دارید اما
نمیتوانید
مستقیماً
به آن
دسترسی
پیدا کنید،
ولی به
ابزار خط
فرمان openssl که
با
کتابخانههای
ارائهدهندهتان
پیکربندی
شده دسترسی
دارید،
همچنان
میتوانید
از pesign
برای امضای
باینریهای
PE خود
استفاده
کنید:
# Import the public certificate into the NSS Database
host:~$ certutil -d /etc/pki/pesign -A -n myorg-sb-signer \
-t ,,u -i myorg-sb-signer.cer
# Export the PKCS-7 SignedAttributes section pesign generates
host:~$ pesign -i foo.unsigned.efi -E foo.sattrs.bin
# Generate a signature using OpenSSL
host:~$ openssl dgst -sha256 -sign $KEY \
--keyform ENGINE --engine $ENGINEID \
-out foo.sattrs.sig foo.sattrs.bin
# Import the signature with the original SignedAttributes into
# the PE binary
host:~$ pesign -c myorg-sb-signer \
-R foo.sattrs.sig -I foo.sattrs.bin \
-i foo.unsigned.efi -o foo.efi
استانداردها (STANDARDS)
B. Kaliski, PKCS #7: Cryptographic Message Syntax v1.5, Internet Engineering Task Force, RFC 2315, https://tools.ietf.org/html/rfc2315 , March 1998.
K. Moriarty, M. Nyström, S. Parkinson, A. Rusch, and M. Scott, PKCS #12: Personal Information Exchange Syntax v1.1, Internet Engineering Task Force, RFC 7292, https://tools.ietf.org/html/rfc7292 , July 2014.
PKCS11 Technical Committee, PKCS#11: Cryptographic Token Interface Standard, OASIS, https://www.cryptsoft.com/pkcs11doc.
M. Nyström, PKCS #15—A Cryptographic-Token Information Format Standard, RSA Laboratories, https://www.usenix.org/legacy/events/smartcard99/full_papers/nystrom/nystrom.pdf , 1999.
Portable Executable, Microsoft, https://docs.microsoft.com/en-us/windows/win32/debug/pe-format , August 26, 2019.
Windows Authenticode Portable Executable Signature Format, Microsoft, https://web.archive.org/web/20130518222430/http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/Authenticode_PE.docx , March 21, 2008.
Federal Information Processing Standard 140-2, United States Department of Commerce, FIPS 140-2, http://csrc.nist.gov/publications/PubsFIPS.html , National Institute of Standards and Technology.
همچنین ببینید (SEE ALSO)
certutil(1), efikeygen(1), modutil(1), opensc-tool(1), openssl(1ssl), openssl-dgst(1ssl), pesign-client(1), pk12util(1), pkcs15-init(1),
نویسندگان (AUTHORS)
Peter Jones Vikas Charak (مثالها)
| June 4, 2020 | Linux |