代码证书签名

证书签名  时间:2021-04-29  阅读:()
代码签名白皮书它是什么,最佳的做法以及作用性https://casecurity.
org介绍代码签名是对可执行文件和脚本进行数字签名的过程,以确认软件发布者的身份,并确保代码自签名以来没有被更改或破坏.
公开受信任的证书颁发机构(CA)确认签名者的身份,并将其公钥绑定到代码签名证书.
该证书用于支持在广泛分布的应用程序(例如Windows或Java)中对可信根证书的代码签名进行验证.
CA和浏览器已经开发了管理和颁发代码签名证书的标准.
这些标准确保了应用程序得到验证,并且代码签名规范满足最新的加密要求.
本文讨论了代码签名的工作流程以及执行代码签名的最佳实践2|代码签名白皮书内容为什么要代码签名4什么是代码签名5验证代码的真实性.
6如何对代码进行数字签名.
7代码安装决策.
8什么是时间戳9自签证书与公开可信的代码签名证书.
10代码证书签名标准.
11应用程序信誉.
12代码签名:最佳实践.
13结论14参考文献15代码签名白皮书|3为什么要代码签名今天售出的大多数大众市场计算设备都预装了软件,但是设备"开箱即用"的软件并不是设备整个使用寿命所需要的全部软件.
在其他情况下,通常会通过设备或所访问站点上的应用程序向用户建议,为了体验或使用所提供的服务,他们需要升级,修补或扩展其当前软件.
要求用户做出现场决定:"运行或不运行","安装或不安装"或"运行或取消"在这种情况下,"运行/不运行"会询问用户是否运行下载的代码.
用户如何决定用户或用户代理(通常是"浏览器")如何知道是否信任该软件答案是代码签名.
为了帮助用户在安装软件之前确定他们是否可以信任软件,软件发布者可以对其代码进行数字签名.
数字签名可验证是谁对代码进行了签名,并且该代码有没有被篡改.
数字签名的代码由作为受信任第三方的CA颁发的证书支持,比未签名的代码具有更高的可靠性,通常,未签名的代码不应该被信任,因为它不提供任何来源或文件完整性的证据,这意味着发布者无法对错误负责,并且代码可能遭到篡改.
借助数字签名提供的信息,用户可以做出更明智的"运行/不运行"决定.
4|代码签名白皮书什么是代码签名代码签名是对可执行文件和脚本进行数字签名的过程,以确认软件作者的身份,并确保代码自签名以来没有被更改或损坏.
为了对代码进行签名,软件发布者需要生成一对密钥(公钥和私钥)并将公钥提交给CA,请求颁发代码签名证书.
CA验证发布者的身份并验证发布者的数字签名证书请求.
如果此审核和密钥验证过程成功,CA将发行者的身份与公钥绑定在一起进行签名,从而创建代码签名证书.
拥有代码签名证书,发布者就可以对代码进行签名了.
当代码被签名时会将几条信息添加到保存可执行代码的原始文件中.
该捆绑信息由软件发布者的用户用来验证发布者并检查代码是否被篡改.
捆绑数字签名代码的整个过程如下:产生代码的哈希公钥算法对大型对象签名效率低下,因此代码通过哈希算法传递,从而创建文件的固定长度摘要哈希是文件密码的唯一表示只能通过使用未更改的文件和用于创建哈希的哈希算法来产生哈希哈希是使用发布者的私钥签名的哈希通过使用发布者的私钥作为输入的签名算法传递有关发布者和CA的信息是从代码签名证书中提取的,并已合并到签名中原始代码,签名和代码签名证书捆绑在一起将代码签名证书密钥添加到包中(因为验证时需要使用公钥来对代码进行身份验证)代码代码哈希代码签署的哈希签署的哈希该代码现在可以发布了,并以允许用户验证其真实性的形式打包.
.
代码签名白皮书|5哈希是用私钥进行签名的使用哈希算法对代码进行哈希处理哈希与数据和证书一起打包代码证书验证代码的真实性当用户代理加载代码后,会使用打包的签名者的公钥,签名和文件的哈希值检查软件的真实性.
如果签名验证成功,则用户代理接受该代码为有效代码.
如果签名没有被成功验证,用户代理将根据所使用的安全级别作出反应,要么警告用户,要么拒绝代码.
签名验证如下:哈希认证原始代码通过哈希算法传递以创建哈希从包中提取发布者的公钥并将其应用于签名信息;应用公钥可以显示文件签名时计算的哈希值两个哈希值进行比较;如果相等,则代码未被修改,证明签名有效验证代码签名证书检查代码签名证书,确保它是由受信任的CA机构签名的检查代码签署证书的有效期根据吊销列表检查代码签名证书,以确保其有效如果哈希和代码有效,则该代码被视为有效.
因此,它已被用户代理接受并提出进行安装.
如果该文件无效,则用户代理将显示警告消息.
签署的哈希哈希代码Comparehashes,代码ifequalthesignatureisvalid使用哈希算法哈希代码进行代码哈希代码6|代码签名白皮书签署的哈希使用证书的公钥验证哈希如果相等,则比较哈希值,签名有效证书如何对代码进行数字签名各种应用程序平台支持代码签名并提供不同的工具来执行签名.
下面是一个常见的代码签名类型列表,并提供了每个给定应用程序的指南的参考.
AdobeAIRDigitallysigninganAIRfileAppleMacOSXDeveloperLibraryCodeSigningandApplicationSandboxingGuideMicrosoftWindowsMacroandVisualBasicSigningSigningaVBAProjectJavaHowtoSignAppletsUsingRSA-SignedCertificatesandSigningCodeandGrantingitPermissionsMicrosoftAuthenticodeSigningandCheckingCodewithAuthenticodeFirefoxXPISigninganXPI代码签名白皮书|7代码安装决策该代码已签名,用户已开始安装并已进行验证.
用户如何知道是否接受代码用户必须根据以上消息来决定是否信任该软件.
该声明规定如下:程序名称:"AdobeFlashPlayer安装程序"发布者名称:Adobe系统注册代码签名证书:.
用户需要点击"显示详细信息"下拉按钮,它将显示一个链接以查看证书用户可以通过以下五个简单的步骤来判断软件是否可信::1.
检查是否计划安装软件.
2.
.
检查文件名以查看它是否是您打算安装的软件,在这种情况下,用户正在安装AdobeReader10,该名称表明了这一点3.
检查发布者名称,看是否与您认为编写该软件的人匹配.
这可能很困难,因为软件下载站点可能与发布者的站点不同.
4.
检查代码签名证书,以查看发布者的名称是否在证书中.
5.
检查证书是否由公开受信任的CA颁发的.
相反,这是关于不可信代码的对话:程序名称为"Install.
exe",尚不足以确定要安装的.
代码发布者的名称为"未知",这意味着受信任的CA未验证此代码签名证书.
该代码可能不是有害的,但很可能已使用自发行的代码签名证书进行了签名.
这意味着用户不能信任签署代码的人.
8|代码签名白皮书什么是时间戳当代码签名过期时,已签名的代码会怎样在许多情况下,证书过期意味着签名验证将失败,并且信任警告将出现在用户代理中.
时间戳就是为了缓解这一问题.
这样的想法是,如果用户知道代码签名的时间并且证书被确认为有效,那么用户还将在软件发布时知道签名是有效的.
换句话说,时间戳类似于经过公证的手写签名,其中包括第三方对文档签署时间的确认.
时间戳的主要好处是,它将代码信任扩展到了代码签名证书的有效期之后.
只要用户可以运行它,代码就保持良好状态.
同样,代码签名证书可能会在将来被吊销或过期,但是代码仍可被信任.
请注意,对于某些客户端软件,时间戳证书过期后,代码验证可能无效.
.
下文讨论的新的《代码签名最低要求》将要求时间戳授权机构(TSA)使用最大有效期为135个月的时间戳证书,此证书每15个月更新一次.
因此,预计时间戳证书的寿命至少为10年.
时间戳的签名实现如下:签名发送到TSA.
TSA将时间戳添加到绑定的信息中,并计算新的哈希TSA使用其私钥在新哈希上签名,从而创建新的信息包.
时间戳包,原始包(已发送到TSA)和时间戳将与原始代码重新绑定在一起.
收到带时间戳的签名后,用户代理将完成以下步骤以进行验证(除了在代码本身上对签名进行验证):检查TSA证书以确保它是从受信任的根证书颁发的,并且其状态有效.
将TSA的公钥应用于带时间戳的签名块,以显示由TSA计算的哈希值.
通过检查TSA的到期日期并查阅吊销清单以确保TSA的公钥是否有效,来验证其有效性.
比较两个哈希.
如果哈希值相等,则认为时间戳是有效的.
如果代码签名证书由于折衷而必须撤销,则将根据特定日期进行撤销.
这样做的原因是,在撤销日期之前发出的代码签名将保持有效,并且软件应仍可运行.
代码签名白皮书|9自签证书与公开可信的代码签名证书在大多数情况下,软件发行商必须对其代码进行签名才能将其安装在操作系统上.
发布者可以使用自签名证书或使用由公开信任的CA颁发的证书对其代码进行签名.
由于从公开信任的CA购买代码签名证书的成本较高,某些发布者可能会决定尝试使用自签名证书,但应考虑的两种类型的证书之间存在差异.
自签证书由公开信任的CA颁发的证书颁发者提供自己的身份,该身份不会作为代码验证安全消息的一部分发布CA执行身份验证,该身份验证显示在代码验证安全消息中发行人提供自己的政策和质量CA根据行业政策和质量标准颁发证书签名将提供警告,指示该软件是由"未知发行者"创建的签名将清楚地标识发布者的姓名损坏的证书无法撤消,并可能损害软件用户受损的证书可以被撤销,如果使用了时间戳,那么在撤销之前签名的代码仍将保持可信为确保用户信任和代码寿命长,建议软件发布者使用从公开信任的CA颁发的证书10|代码签名白皮书代码证书签名标准到2016年,只对管理和签发EV代码签名证书有要求自2017年2月起,将支持非EV代码签名证书的新标准.
此标准是Microsoft要求的,因此所有公开信任的CA都将颁发证书以满足要求.
代码签名的最低要求CA/Browser论坛未发布代码签名的最低要求,但是许多要求来自其基准要求.
对于代码签名,最低要求还涉及其他项目,例如:发布者身份:通用名称是发布者的法定名称,其中组织名称也可以是发布者的法定名称或DBA名称.
最小密钥大小:2048位RSA或ECC曲线P-256,P-384或P-521.
有效期:最长有效期为39个月.
高风险请求:CA应检查数据库,以确保未向已知的可疑代码发布者发出代码签名证书.
私钥保护:由于可疑代码是使用已泄露的密钥签名的,因此需要使用私钥.
在硬件上加密或保存在与签名软件功能主机分开的设备上.
接管攻击:具有接管攻击历史的发布者将需要更高级别的私钥保护证书吊销:已建立特定的吊销和过程,其中包括来自应用程序软件供应商(例如Microsoft)的吊销请求.
时间戳:证书颁发机构,时间戳证书和时间戳颁发机构(TSA)要求已经定义.
扩展验证(EV)代码签名证书与根据"代码签名最低要求"标准颁发的证书相比,EV代码签名证书具有两个明显的优势:发布者的身份和授权必须按照CA/Browser论坛EV代码签名准则来完成.
只能在满足FIPS140-22级或同等要求的硬件中管理私钥.
EV代码签名证书的好处是用户知道发布者是谁,并且已为私钥提供了合理的保护以减轻未经授权的签名.
由于更信任EV代码签名证书,因此,验证产品的开发人员可以提高发布者或已签名代码的信誉级别.
请注意,Windows10要求提交用于内核模式签名的驱动程序使用EV代码签名证书进行签名.
代码签名白皮书|11应用程序信誉社会工程攻击比针对安全漏洞的攻击更为普遍.
传统的恶意软件防御措施是基于URL的筛选器,用于筛选出已知的恶意软件网站.
微软还推出了一种名为SmartScreen应用程序信誉.
应用程序信誉使发布者及其应用程序可以通过以下原则逐步建立良好的声誉:知名的"好"应用程序比新应用程序具有更好的声誉知名的"好"出版商比不知名的出版商具有更好的声誉由首次发布的知名"好的"发布者签署的新应用程序可以享有较高的声誉可以为未签名和已签名的应用程序建立信誉.
已签名的应用程序可以以未签名的应用程序两倍的速度建立信誉.
基于签名的信誉取决于可信的证书颁发机构对发布者的标识以及代码签名证书的颁发.
信誉是通过对"好的"应用程序进行签名而建立的,但是如果使用证书对恶意软件进行签名,则信誉很容易丢失.
传统上,浏览器会为每个应用程序下载显示一个"用户帐户控制"对话框.
如果应用程序建立了良好的声誉,则SmartScreen筛选器不会显示"用户帐户控制"对话框.
这样做的好处是,将安装信誉良好的应用程序,而无需用户决定是否信任该软件-他们只需选择"保存"或"运行"即可.
此更新可防止用户对"用户帐户控制"对话框不敏感,并鼓励用户在信誉不明的应用程序中出现这些对话框时做出更好的决策.
12|代码签名白皮书代码签名:最佳实践代码签名的最大问题是与代码签名证书关联的私有签名密钥的保护.
如果密钥被盗用,证书将失去信任和价值,从而危及您已经签名的软件.
七个代码签名最佳实践包括:1.
最小化对私钥的访问允许通过按键最小限度地连接计算机尽量减少拥有密钥访问权限的用户数量使用物理安全控制来减少对密钥的访问2.
使用加密硬件产品保护私钥加密硬件不允许将私钥导出到可能受到攻击的软件中使用FIPS1402级认证的产品(或更高版本)使用EV代码签名证书,该证书要求生成私钥并将其存储在硬件中3.
时间戳记代码时间戳允许证书过期或吊销后验证代码4.
了解测试签名和发布签名之间的区别测试签名私钥和证书比生产代码签名私钥和证书需要更少的安全访问控制测试签名证书可以是自签名的,也可以来自内部测试CA测试证书必须链接到完全不同的证书的根证书,而不是用于签署公开发布的产品;此预防措施有助于确保仅在预期的测试环境中信任测试证书建立单独的测试代码签名基础结构以对软件的预发布版本进行签名5.
验证要签名的代码提交并签名的任何代码都应经过严格的身份验证,然后再进行签名和发布实施代码签名提交和批准过程,以防止未经批准或恶意的代码签名记录所有代码签名活动以进行审核和/或事件响应6.
签名前的病毒扫描代码代码签名不能确认代码的安全性或质量;它确认发布者以及代码是否已更改合并其他来源的代码时要小心实施病毒扫描以帮助提高已发布代码的质量7.
不要过度使用任何一个密钥(将风险分配给多个证书)如果发现代码存在安全漏洞,则发布者可能希望在以后安装代码时提示出现"用户帐户控制"对话框;这可以通过撤消代码签名证书来完成,因此将发生撤消的提示.
如果具有安全漏洞的代码是在发布更多良好代码之前发布的,则吊销证书也将影响良好代码经常更改密钥和证书将有助于避免这种冲突代码签名白皮书|13结论在许多平台上安装代码都需要代码签名,因为它可以确保真实性和来源.
当签署代码软件发布者必须做出保护其部署产品的决定时,可以做出的最重要决定是是否使用受信任的证书颁发机构.
支持受信任的证书颁发机构颁发的代码签名证书是确保最终用户信任的最佳方法.
自签名证书仅应用于测试,而不能用于生产版本.
第二个最重要的决定是是否对代码加时间戳.
如果密钥被泄露,即使证书需要撤销,时间戳也可以确保代码受到保护.
最佳实践部分提供了其他重要提示,可以保护代码签名私钥和已签名代码的质量.
"代码签名的最低要求"将通过设置新的标准来保护私钥免遭破坏,从而提高Internet安全性.
这些要求还提供了一种更好的机制,可以撤销代码签名证书以限制恶意软件的扩散.
扩展验证码签名证书是可用于建立对用于签名代码的私钥安全性的信任的最佳工具,并且可以对软件发布者的身份提供更高的保证.
由于EV代码签名可提供有关软件来源的更好信息,因此某些带有恶意软件安全筛选器的平台可在安装过程中在用户对话框中为EV签名软件提供更好的处理.
14|代码签名白皮书参考文献1.
CA/浏览器论坛EV代码签名指南,https://www.
cabforum.
org/documents.
html2.
发行和管理公共信任代码签名证书的最低要求,https://casecurity.
org/resources/3.
Microsoft开发人员网络–代码签名简介,http://msdn.
microsoft.
com/en-us/library/ms537361.
aspx4.
MicrosoftWindows代码签名最佳实践,http://msdn.
microsoft.
com/en-us/windows/hardware/gg487309.
aspx5.
MicrosoftTechnet-使用加密硬件部署Authenticode以进行安全软件发布,http://technet.
microsoft.
com/en-us/library/cc700803.
aspx6.
MicrosoftTechnet–KillBits,http://blogs.
technet.
com/b/srd/archive/2008/02/06/the-kill_2d00_bit-faq_3a00_-part-1-of-3.
aspx7.
MicrosoftSmartScreen和扩展验证(EV)代码签名证书,https://blogs.
msdn.
com/b/ie/archive/2012/08/14/microsoft-smartscreen-amp-extended-validation-ev-code-signing-certificates.
aspx代码签名白皮书|15Webwww.
是安全理事会CASC由领先的全球证书颁发机构组成,这些证书颁发机构致力于探索和推广最佳实践,以促进可信任的SSL部署和CA操作以及整个Internet的安全性.

MineServer:洛杉矶CN2 GIA VPS/512MB内存/20GB NVME/800GB流量/200Mbps/KVM,58元/季

mineserver怎么样?mineserver是一家国人商家,主要提供香港CN2 KVM VPS、香港CMI KVM VPS、日本CN2 KVM VPS、洛杉矶cn2 gia端口转发等服务,之前介绍过几次,最近比较活跃。这家新推出了洛杉矶CN2 GIA VPS,512MB内存/20GB NVME/800GB流量/200Mbps/KVM,58元/季,并且进行了带宽升级,同时IP更改为美国IP。点击...

香港2GB内存DIYVM2核(¥50月)香港沙田CN2云服务器

DiyVM 香港沙田机房,也是采用的CN2优化线路,目前也有入手且在使用中,我个人感觉如果中文业务需要用到的话虽然日本机房也是CN2,但是线路的稳定性不如香港机房,所以我们在这篇文章中亲测看看香港机房,然后对比之前看到的日本机房。香港机房的配置信息。CPU内存 硬盘带宽IP价格购买地址2核2G50G2M1¥50/月选择方案4核4G60G3M1¥100/月选择方案4核8G70G3M4¥200/月选择...

CUBECLOUD:香港服务器、洛杉矶服务器、全场88折,69元/月

CUBECLOUD(魔方云)成立于2016年,亚太互联网络信息中心(APNIC)会员,全线产品均为完全自营,专业数据灾备冗余,全部产品均为SSD阵列,精品网络CN2(GIA) CU(10099VIP)接入,与当今主流云计算解决方案保持同步,为企业以及开发者用户实现灵活弹性自动化的基础设施。【夏日特促】全场产品88折优惠码:Summer_2021时间:2021年8月1日 — 2021年8月8日香港C...

证书签名为你推荐
sns平台什么是SNS?css加载失败个别网站加载CSS文件老是出错是怎么回事?支付宝调整还款日月底30号用花呗到时候下个月什么时候还款?特朗普吐槽iPhone为什么iphone x卖的这么好的是cuteftp客服电话各银行的客服电话是多少?腾讯公司电话腾讯总公司服务热线是多少科创板首批名单2019年房产税试点城市名单美国独立美国独立时不是只有13个洲吗?后来的领土都是怎么得来的。如何发帖子怎么发帖子啊?
fc2最新域名 187邮箱 空间打开慢 gitcafe 360抢票助手 英文站群 gg广告 电子邮件服务器 hostloc 泉州电信 paypal注册教程 空间登录首页 便宜空间 云营销系统 linode支付宝 vul lamp兄弟连 江苏双线 阿里云邮箱怎么注册 聚惠网 更多