EFISECDB(1) General Commands Manual EFISECDB(1)

efisecdb - ابزار مدیریت پایگاه‌داده و فهرست‌های امضای UEFI

efisecdb [-s SORT] [-i file [-i file] ...]   [-g guid ⟨-a | -r⟩ ⟨[-t hash-type] -h hash | -c file⟩   [-g guid ⟨-a | -r⟩ ⟨[-t hash-type] -h hash | -c file⟩] ...] ⟨-d [-A] | -o file | -L⟩

دستور efisecdb یک ابزار خط فرمان برای مدیریت فهرست‌های امضای UEFI در فایل‌های مستقل و جداگانه است. به بیان دیگر، این ابزار برای ایجاد و مدیریت فایل‌هایی با قالب KEK، DB و DBX در خط فرمان طراحی شده است.

عملکرد این ابزار در سه مرحله انجام می‌شود:

۱.
بارگذاری پایگاه‌های داده امنیتی مشخص‌شده با گزینه --input
۲.
پردازش چپ‌به‌راست سایر گزینه‌ها، با استفاده از --hash-type، --owner-guid، --add و --remove به عنوان وضعیت جهت ساخت گزینش‌گرها برای افزودن یا حذف هش‌ها و گواهینامه‌های مشخص‌شده توسط --hash و --certificate.
۳.
تولید خروجی

وضعیت انباشته‌شده پایدار است؛ یعنی هنگامی که یک GUID مالک، عملیات افزودن یا حذف، یا نوع هش مشخص شود، این مقادیر تا زمان مشخص‌شدن دوباره حفظ می‌شوند و تنها برای تغییر عملیات‌های بعدی نیاز به تکرار آن‌ها است. عملیات‌ها زمانی به فهرست پردازش افزوده می‌شوند که -h hash یا -c cert مشخص گردند، و دقیقاً به همان ترتیبی که در خط فرمان وارد شده‌اند پردازش می‌شوند. علاوه بر این، حداقل یک آرگومان -g و یکی از گزینه‌های --add یا --remove باید پیش از نخستین استفاده از -h hash یا -c cert آورده شوند.

⟨-s | --sort⟩ ⟨all | data | none | type⟩
مرتب‌سازی بر اساس داده پس از دسته‌بندی و مرتب‌سازی انواع ورودی‌ها (all)، مرتب‌سازی بر اساس داده‌های ورودی (data)، بدون مرتب‌سازی (none)، یا بر پایه نوع ورودی (type).
⟨-s | --sort⟩ ⟨ascending | descending⟩
مرتب‌سازی به ترتیب صعودی (ascending) یا نزولی (descending).
خواندن پایگاه‌داده امنیتی EFI از file.
استفاده از GUID مشخص‌شده یا ارجاع نمادین (مانند {empty}) برای عملیات‌های افزودن و حذف بعدی.
انتخاب عملیات افزودن (add) یا حذف (remove) برای عملیات‌های بعدی.
انتخاب نوع الگوریتم هش (hash-type) برای عملیات‌های افزودن و حذف بعدی (پیش‌فرض: sha256).

برای مشاهده فهرست انواع هش‌های پشتیبانی‌شده از مقدار help به عنوان نوع هش استفاده کنید.

افزودن یا حذف هش مشخص‌شده.
افزودن یا حذف گواهینامه مشخص‌شده.
تولید خروجی هگزادسیمال (hex dump) از داده‌ها.
حاشیه‌نویسی و تفسیر خروجی هگزادسیمال تولیدشده توسط --dump.
نوشتن پایگاه‌داده امنیتی EFI در file.
نمایش فهرست GUIDهای شناخته‌شده.

خروجی به صورت ستون‌های تفکیک‌شده با نویسه تب (Tab) است: شناسه GUID، نام کوتاه، توضیحات (GUID short_name description).

host:~$ efisecdb -d -A -i /sys/firmware/efi/efivars/dbx-d719b2cb-3d3a-4596-a3bc-dad00e67656f
00000000  26 16 c4 c1 4c 50 92 40  ac a9 41 f9 36 93 43 28  |&...LP.@..A.6.C(|  esl[0].signature_type = {sha256}
00000010  60 00 00 00                                       |....|              esl[0].signature_list_size = 96
00000014              00 00 00 00                               |....|          esl[0].signature_header_size = 0
00000018                           30 00 00 00                      |0...|      esl[0].signature_size = 48
0000001c                                                                        esl[0].signature_header (end:0x0000001c)
0000001c                                       bd 9a fa 77              |...w|  esl[0].signature[0].owner = {microsoft}
00000020  59 03 32 4d bd 60 28 f4  e7 8f 78 4b              |Y.2M.`(...xK|
0000002c                                       fe cf b2 32              |...2|  esl[0].signature[0].data (end:0x0000004c)
00000030  d1 2e 99 4b 6d 48 5d 2c  71 67 72 8a a5 52 59 84  |...KmH],qgr..RY.|
00000040  ad 5c a6 1e 75 16 22 1f  07 9a 14 36              |...u."....6|
0000004c                                       bd 9a fa 77              |...w|  esl[0].signature[1].owner = {microsoft}
00000050  59 03 32 4d bd 60 28 f4  e7 8f 78 4b              |Y.2M.`(...xK|
0000005c                                       fe 63 a8 4f              |.c.O|  esl[0].signature[1].data (end:0x0000007c)
00000060  78 2c c9 d3 fc f2 cc f9  fc 11 fb d0 37 60 87 87  |x,..........7`..|
00000070  58 d2 62 85 ed 12 66 9b  dc 6e 6d 01              |X.b...f..nm.|
0000007c

# Figure out the original cert... the easy way
host:~$ strings KEK-* | grep microsoft.*crt
Dhttp://www.microsoft.com/pki/certs/MicCorThiParMarRoo_2010-10-05.crt0
# Find it, because --export isn't implemented yet
host:~$ wget \
        --user-agent='Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko' \
        http://www.microsoft.com/pki/certs/MicCorThiParMarRoo_2010-10-05.crt
--2020-06-04 20:41:27--  http://www.microsoft.com/pki/certs/MicCorThiParMarRoo_2010-10-05.crt
Resolving www.microsoft.com (www.microsoft.com)... 2600:141b:800:287::356e, 2600:141b:800:2a0::356e, 23.43.254.254
Connecting to www.microsoft.com (www.microsoft.com)|2600:141b:800:287::356e|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1539 (1.5K) [application/octet-stream]
Saving to: ‘MicCorThiParMarRoo_2010-10-05.crt’
MicCorThiParMarRoo_ 100%[===================>]   1.50K  --.-KB/s    in 0s
2020-06-04 20:41:27 (177 MB/s) - ‘MicCorThiParMarRoo_2010-10-05.crt’ saved [1539/1539]
# Pick a GUID-like object, any GUID-like object...
host:~$ uuidgen
aab3960c-501e-485e-ac59-62805970a3dd
# Remove the old KEK entry and add a different one
host:~$ efisecdb -i KEK-8be4df61-93ca-11d2-aa0d-00e098032b8c \
        -g {microsoft} -r -c MicCorThiParMarRoo_2010-10-05.crt \
        -g aab3960c-501e-485e-ac59-62805970a3dd -a -c pjkek.cer \
        -o newkek.bin

host:~$ efisecdb -L | grep shim
{605dab50-e046-4300-abb6-3dd810dd8b23}	{shim}	shim

گروه کاری مشخصات UEFI، Unified Extensible Firmware Interface (UEFI) Specification Version 2.8، Unified Extensible Firmware Interface Forum، https://uefi.org/specifications ، مارس ۲۰۱۹.

authvar(1)، efikeygen(1)، pesign(1)

Peter Jones

دستور efisecdb در حال حاضر فاقد چندین قابلیت کاربردی است:

•
برون‌ریزی موقعیتی (positional exporting) گواهینامه‌ها
•
گزینه‌های --dump و --annotate عرض خروجی را متناسب با اندازه ترمینال تنظیم نمی‌کنند
•
نمی‌توان گواهینامه‌ها را بر اساس هش ToBeSigned برای حذف مشخص کرد
7 January 2021