当前位置: 首页 > news >正文

域名net表示什么网站网站建设培训会讲话

域名net表示什么网站,网站建设培训会讲话,纯flash网站价格,南昌地宝网二手房出售信息文章目录 安全启动简介安全启动流程介绍签名过程BIOS实现小结 安全启动简介 安全启动#xff08;Secure Boot#xff09;是一种计算机系统的安全功能#xff0c;旨在确保系统启动过程中只能加载经过数字签名的受信任的操作系统和启动加载程序。通过使用安全启动#xff0c… 文章目录 安全启动简介安全启动流程介绍签名过程BIOS实现小结 安全启动简介 安全启动Secure Boot是一种计算机系统的安全功能旨在确保系统启动过程中只能加载经过数字签名的受信任的操作系统和启动加载程序。通过使用安全启动系统可以防止恶意软件在启动过程中植入并运行提高系统的安全性。 安全启动的工作原理通常包括以下几个步骤 启动固件验证在计算机启动时启动固件如UEFI固件会验证操作系统引导加载程序的数字签名确保其来自受信任的发布者。操作系统验证启动加载程序会验证操作系统内核和驱动程序的数字签名以确保它们没有被篡改。启动链验证整个启动链中的每个组件都会被验证包括引导加载程序、内核、驱动程序等。安全启动状态如果所有组件的数字签名验证通过系统将进入安全启动状态允许操作系统正常加载和运行。 通过安全启动系统可以有效防止恶意软件在启动过程中进行植入和篡改提高系统的整体安全性。安全启动通常与UEFI固件结合使用是现代计算机系统中的重要安全功能之一。 BIOS启动过程中会执行BootLoader来加载系统最常用的就是GRUB它可能是一个名为bootx64.efi的UEFI应用。BIOS启动的最后会将控制权交给这个bootx64.efi并由后者来启动系统。但是这里存在一个问题如何保证这个应用真的是我们需要的呢如果该应用被修改甚至替换了导致执行一些我们不希望其执行的代码则是一个非常严重的安全漏洞。 安全启动流程介绍 Platform Key PK PK 是用于在硬件平台层和硬件平台拥有者建立起的信任关系 规定一个硬件平台只能被一个拥有者所拥有即 PK 只能存在一个 与拥有者相关的公钥被存储在 FLASH 里面的 PK 变量里面同时拥有者的私钥可以来对 PK KEK db dbx 进行签名和管理。 Key Exchange Key (KEK) KEK 是用于在硬件平台和操作系统之间建立信任关系 KEK 的公钥可以在主板的 FLASH 存在多个不同项即 KEK 可以存在多个 每一项对应一种可以被启动的操作系统同样KEK 的私钥可以来对 db dbx 进行签名和管理。 Database (db) db 是用于对 被许可的 EFI 文件予以加载的数据签名库 和 KEK 一样 db 的公钥可以存在很多项 。在 UEFI 平台里面操作系统加载文件就是一个 EFI 文件 Database Excluded (dbx) - dbx 是一个 黑名单数据签名库 只要谁的 EFI 签名在这谁就被屏蔽掉 dbx 的公钥也可以存在很多项 。后面不会使用这个。 测试方法 建立 PKKEKdb 密钥对同时还需要创建EFI list。 加载PK。 ROOTCA.cer 加载KEK.CER,同样方法加载DB.CER 众所周知进入EFI SHELL下当不开启Secure Boot的时候 是可以执行efi 文件的但是当我们打开Secure Boot 就不是所有efi 文件可以加载 签名过程 我们怎么签名Efi文件和启动项怎么导入对应的证书呢 bash #!/bin/bashecho -n 请输入一个通用名比如公司名称或个人名字: read NAMEopenssl req -new -x509 -newkey rsa:2048 -subj /CN$NAME PK/ -keyout PK.key \-out PK.crt -days 3650 -nodes -sha256 openssl req -new -x509 -newkey rsa:2048 -subj /CN$NAME KEK/ -keyout KEK.key \-out KEK.crt -days 3650 -nodes -sha256 openssl req -new -x509 -newkey rsa:2048 -subj /CN$NAME DB/ -keyout DB.key \-out DB.crt -days 3650 -nodes -sha256 openssl x509 -in PK.crt -out PK.cer -outform DER openssl x509 -in KEK.crt -out KEK.cer -outform DER openssl x509 -in DB.crt -out DB.cer -outform DERecho $(uuidgen) myGUID.txtcert-to-efi-sig-list -g $GUID PK.crt PK.esl cert-to-efi-sig-list -g $GUID KEK.crt KEK.esl cert-to-efi-sig-list -g $GUID DB.crt DB.esl rm -f noPK.esl touch noPK.eslsign-efi-sig-list -t $(date --date1 second %Y-%m-%d %H:%M:%S) \-k PK.key -c PK.crt PK PK.esl PK.auth sign-efi-sig-list -t $(date --date1 second %Y-%m-%d %H:%M:%S) \-k PK.key -c PK.crt PK noPK.esl noPK.auth sign-efi-sig-list -t $(date --date1 second %Y-%m-%d %H:%M:%S) \-k PK.key -c PK.crt KEK KEK.esl KEK.auth sign-efi-sig-list -t $(date --date1 second %Y-%m-%d %H:%M:%S) \-k KEK.key -c KEK.crt db DB.esl DB.auth echo echo For use with KeyTool, copy the *.auth and *.esl files to a FAT USB echo flash drive or to your EFI System Partition (ESP). echo For use with most UEFIs built-in key managers, copy the *.cer files. echo 运行后生成一组密钥使用密钥签名Efi文件对于SecurityBoot就时需要将Grub.efi Boot.efi 去签名 让BIOS去LoadImage 时通过校验 sbsign --key db.key --cert db.crt --output grubx64sign.efi.signed grub64.efi apt-get install sbsigntool 导入证书后 Sign过的efi 才能运行 否则会返回无权限。 当不添加DB 时去加载签名过的EFI 会显示 Image被签名但是不在DB中 。 PK是可以去校验签名 但是DB时我们的签名白名单支持库。 BIOS实现 在BIOS中加载EFI File会使用gbs-LoadImage去加载镜像调用的的函数原型是 CoreLoadImageCommon 该函数就包含了安全校验 Security2StubAuthenticate --Defer3rdPartyImageLoad 使用证书签名文件后可以看到会在EFI文件后面加一段密钥相关的二进制内容 里面就包含了使用的证书公钥等一些信息 BIOS中校验File中是否由DB/DBX的Signature主要使用IsSignatureFoundInDatabase 去检查。 /// /// Varialbe name with guid EFI_IMAGE_SECURITY_DATABASE_GUID /// for the authorized signature database. /// #define EFI_IMAGE_SECURITY_DATABASE Ldb /// /// Varialbe name with guid EFI_IMAGE_SECURITY_DATABASE_GUID /// for the forbidden signature database. /// #define EFI_IMAGE_SECURITY_DATABASE1 LdbxEFI_STATUS IsSignatureFoundInDatabase (IN CHAR16 *VariableName,IN UINT8 *Signature,IN EFI_GUID *CertType,IN UINTN SignatureSize,OUT BOOLEAN *IsFound) {EFI_STATUS Status;EFI_SIGNATURE_LIST *CertList;EFI_SIGNATURE_DATA *Cert;UINTN DataSize;UINT8 *Data;UINTN Index;UINTN CertCount;//// Read signature database variable.//*IsFound FALSE;Data NULL;DataSize 0;Status gRT-GetVariable (VariableName, gEfiImageSecurityDatabaseGuid, NULL, DataSize, NULL);if (Status ! EFI_BUFFER_TOO_SMALL) {if (Status EFI_NOT_FOUND) {//// No database, no need to search.//Status EFI_SUCCESS;}return Status;}Data (UINT8 *)AllocateZeroPool (DataSize);if (Data NULL) {return EFI_OUT_OF_RESOURCES;}Status gRT-GetVariable (VariableName, gEfiImageSecurityDatabaseGuid, NULL, DataSize, Data);if (EFI_ERROR (Status)) {goto Done;}//// Enumerate all signature data in SigDB to check if signature exists for executable.//CertList (EFI_SIGNATURE_LIST *)Data;while ((DataSize 0) (DataSize CertList-SignatureListSize)) {CertCount (CertList-SignatureListSize - sizeof (EFI_SIGNATURE_LIST) - CertList-SignatureHeaderSize) / CertList-SignatureSize;Cert (EFI_SIGNATURE_DATA *)((UINT8 *)CertList sizeof (EFI_SIGNATURE_LIST) CertList-SignatureHeaderSize);if ((CertList-SignatureSize sizeof (EFI_SIGNATURE_DATA) - 1 SignatureSize) (CompareGuid (CertList-SignatureType, CertType))) {for (Index 0; Index CertCount; Index) {if (CompareMem (Cert-SignatureData, Signature, SignatureSize) 0) {//// Find the signature in database.//*IsFound TRUE;//// Entries in UEFI_IMAGE_SECURITY_DATABASE that are used to validate image should be measured//if (StrCmp (VariableName, EFI_IMAGE_SECURITY_DATABASE) 0) {SecureBootHook (VariableName, gEfiImageSecurityDatabaseGuid, CertList-SignatureSize, Cert);}break;}Cert (EFI_SIGNATURE_DATA *)((UINT8 *)Cert CertList-SignatureSize);}if (*IsFound) {break;}}DataSize - CertList-SignatureListSize;CertList (EFI_SIGNATURE_LIST *)((UINT8 *)CertList CertList-SignatureListSize);} Done:if (Data ! NULL) {FreePool (Data);}return Status; } 首先函数会尝试从变量中读取签名数据库的数据。如果成功读取到数据函数会遍历签名列表逐个比较签名数据查找是否存在与给定签名匹配的条目。如果找到匹配的签名函数会将 IsFound 设置为 TRUE表示找到了该签名。如果在 EFI_IMAGE_SECURITY_DATABASE 中找到了签名还会调用 SecureBootHook 函数来处理安全启动相关的操作。 主要是将变量度量信息存入到TPM PCR中 SECUREBOOT_CONFIG_PRIVATE_DATA mSecureBootConfigPrivateDateTemplate {SECUREBOOT_CONFIG_PRIVATE_DATA_SIGNATURE,{SecureBootExtractConfig,SecureBootRouteConfig,SecureBootCallback} };HiiHandle HiiAddPackages (gSecureBootConfigFormSetGuid,DriverHandle,SecureBootConfigDxeStrings,SecureBootConfigBin,NULL); Vfr中都使用Label 在C中动态更新页面 多个Lable 都在C中去动态更新 label FORMID_ENROLL_PK_FORM; label LABEL_END; label FORMID_ENROLL_KEK_FORM; label LABEL_END; label SECUREBOOT_ENROLL_SIGNATURE_TO_DB; label LABEL_END;label SECUREBOOT_ENROLL_SIGNATURE_TO_DBX; label LABEL_END; label FORMID_ENROLL_PK_FORM; label LABEL_END; 小结 Security Boot 就是一层对于LoadImage file 去进行签名验签的过程来保证加载的系统是安全的 详细信息都可以参考EDKII 的源码
http://www.hkea.cn/news/14299001/

相关文章:

  • 提供网站建设工具的品牌做app封装的网站
  • 网站建设上机实验心得如何设计中文网站
  • 便宜高端网站设计推荐宝塔搭建wordpress访问很慢
  • 网站设计技术文章海口编程培训有哪些机构
  • wordpress上传空间后重庆seo整站优化报价
  • 建设网站的重点与难点在于一级a做爰片免费网站短视频教程
  • 成都网站关键字优化婚庆公司logo设计图片
  • 炫酷网站首页网页设计布局图
  • 做移动网站优化快速排名软件网络规划设计师有用吗
  • 杭州网站建设培训学校大发快三网站自做
  • 网站建设公司 宣传册小游戏链接
  • 快速网站开发软件租车网站建设
  • 网站建设互诺科技网站建设专业英文
  • 网站建设论文要求泉州学校网站建设
  • 网站开发前台实训html5简单网页制作代码
  • 义乌 网站建设wordpress自定义用户头像
  • 宁波网站推广找哪家公司自己怎么做一个企业官网
  • ...温岭做网站网站开发中的抓包工具
  • 合肥做网站排名wordpress评论图片
  • 小兔自助建站系统哪些做营销型网站做的好
  • 郑州做外贸网站优酷视频接到网站怎么做
  • 做新零售这些注册网站和找货源智慧校园学生管理系统
  • 网站外链接自己可以怎么做排名点击工具
  • 用dw制作学校网站教程企业服务代理公司
  • 网页制作优质网站营销伎巧第一季
  • 牡丹江网站建设公司数字营销策划公司
  • 做电商网站公司网站推广的方式包括
  • 安庆网站设计人工智能
  • 沅江市住房和建设局网站网站图片管理系统
  • 个人网站备案的好处广州页面制作公司