目录
数字证书开发笔记
开发笔记之数字证书(一):数字证书介绍
前话
开发windows软件,对于数字证书是否会被360等一些杀毒防御软件杀掉进行研究,同时介绍、熟悉以及当前数字证书行情(主要是软件端的代码签名证书)。
数字证书签名基本问题
什么是代码签名证书?
随着互联网上活跃的内容越来越多,最终用户需要有一种方法来验证可下载网络内容的合法性。
代码签名是一种置于软件和其他可执行文件和脚本中的数字签名。代码签名可以提供软件作者的身份,并验证软件自最初分发以来未经过篡改。
代码签名不会更改软件,它只是为您的最终用户提供额外一层可信度。
如果从商店购买软件,很容易就可以知道软件的发布者,并可以了解软件包是否被篡改。不幸的是,如果在线购买软件,这些因素则不明显。因此,当在互联网上下载 Java 小程序、插件、Microsoft® ActiveX® 控件和其他可执行文件时,最终用户会承担一定的风险。
代码签名证书有助于获得与客户在商店中购买时相同的信任级别。
利用数字签名提高您的软件安全性。利用 GoDaddy 代码签名证书验证代码的来源和完整性,以提升用户信心。
哪些人需要代码签名证书?
网络安全警惕意识空前高涨。除非您能证明软件的合法性,否则大部分网络用户都不会下载。代码签名证书可以激发客户的信心,并提供您验证代码所需的证明。
软件开发人员可以使用代码签名证书为客户提供额外的保证,让他们知道内容的生产商并且保证没有被篡改。签名的代码还可以防止代码
在分发前被身份不明的第三方篡改。
内容发布者可以对软件组件、宏、固件映像、病毒更新、配置文件或者其他类型的内容进行数字签名,来确保通过互联网或其他机制进行安全交付。
当指定代码片段(例如 Active X 控件、Java 小程序以及其他活动的网络脚本代码)的源码可能不明显时,代码签名尤其重要。
大多数网络用户都了解通过互联网下载内容涉及的潜在风险。重要的是,您的最终用户可以信任您在互联网上发布的代码。代码签名证书
有助于客户确认软件的安全性与保障。
代码签名如何运作?
较新的操作系统和互联网浏览器通常设置为较高的网络安全级别,因此往往需要签名内容。例如,Internet Explorer® 利用
Authenticode® 技术来识别签名软件的发布者并确认它没有被篡改。
当从某网站下载代码签名文件时,可以从文件中提取证书。浏览器通过证书颁发机构的内部列表反复检查此信息,然后验证证书中的签名。
一旦签名软件以任何方式被他人篡改,数字签名将会被破坏,并向客户发出警告:代码已被修改,不再值得信任。
别人如何知道我的签名是可信的呢?
当有人试图下载或运行未签名的代码时,其浏览器会尝试验证已下载内容的安全性。弹出安全警告或无法加载网页内容,具体取决于浏览器的安全设置。这些警告让用户产生怀疑和困惑。
当最终用户希望运行签名的应用程序或可执行文件时,电子签名代码会防止出现不必要的警告对话框。
购买代码签名证书之后,我需要做什么?
购买代码签名证书之后,您需要通过为代码提供签名的计算机提供证书签名申请 (CSR)。根据证书的使用情况,您可以自动创建 CSR,或者可以使用 OpenSSL 之类的工具生成 CSR。
提交您的申请后,我们会确认您所提供的公司信息。如果需要,注册局 (RA) 可能会联系您,要求您提供附加信息。您可以通过您的账户监视验证过程的进展。
代码签名证书一旦签发后,我们会给您发送一封电子邮件,其中包括一个链接,可以单击此链接下载并安装证书文件和任何相关的中间证书。您甚至可以在代码签名时于签名处加上时间戳,使用 Authenticode 显示证书的有效性。
数字证书(数字签名)
概述
数字证书(又称数字标识)是指在互联网通讯中标志通讯各方身份信息的一个数字认证,人们可以在网上用它来识别对方的身份。
数字证书对网络用户在计算机网络交流中的信息和数据等以加密或解密的形式保证了信息和数据的完整性和安全性。
数字证书这一名词并非是我国原有,而是来自于英文digital certificate的翻译。数字证书从本质上来说是一种电子文档,是由电子商务认证中心(以下简称为CA中心)所颁发的一种较为权威与公正的证书,对电子商务活动有重要影响,例如我们在各种电子商务平台进行购物消费时,必须要在电脑上安装数字证书来确保资金的安全性。
CA中心采用的是以数字加密技术为核心的数字证书认证技术,通过数字证书,CA中心可以对互联网上所传输的各种信息进行加密、解密、数字签名与签名认证等各种处理,同时也能保障在数字传输的过程中不被不法分子所侵入,或者即使受到侵入也无法查看其中的内容。
如果用户在电子商务的活动过程中安装了数字证书,那么即使其账户或者密码等个人信息被盗取,其账户中的信息与资金安全仍然能得到有效的保障。数字证书就相当于社会中的身份证,用户在进行电子商务活动时可以通过数字证书来证明自己的身份,并识别对方的身份,在数字证书的应用过程中CA中心具有关键性的作用,作为第三方机构,必须要保证其具有一定的权威性与公平性。
当前阶段认证现状
当前阶段国内的CA中心的从业资格是由国家工业与信息化部所颁发,全国范围内只有约30家企业具有数字认证的从业资格。
原理
数字证书的基本架构是公开密钥PKI,即利用一对密钥实施加密和解密。其中密钥包括私钥和公钥,私钥主要用于签名和解密,由用户自定义,只有用户自己知道;公钥用于签名验证和加密,可被多个用户共享。
数字证书的基本工作原理主要体现在:
- 发送方在发送信息前,需先与接收方联系,同时利用公钥加密信息,信息在进行传输的过程当中一直是处于密文状态,包括接收方接收后也是加密的,确保了信息传输的单一性,若信息被窃取或截取,也必须利用接收方的私钥才可解读数据,而无法更改数据,这也有利保障信息的完整性和安全性。
- 数字证书的数据签名类似于加密过程,数据在实施加密后,只有接收方才可打开或更改数据信息,并加上自己的签名后再传输至发送方,而接收方的私钥具唯一性和私密性,这也保证了签名的真实性和可靠性,进而保障信息的安全性。
数字证书有很多格式版本,主要有X.509v3(1997)、X509v4(1997)、X.509v1(1988)等。比较常用的版本是TUTrec.x.509V3,由国际电信联盟制定,内容包括证书序列号、证书有效期和公开密钥等信息。不论是哪一个版本的数字证书,只要获得数字证书,用户就可以将其应用于网络安全中。
特征
安全性
用户申请证书时会有两份不同证书,分别用于工作电脑以及用于验证用户的信息交互,若所使用电脑不同,用户就需重新获取用于验证用户所使用电脑的证书,而无法进行备份,这样即使他人窃取了证书,也无法获取用户的账户信息,保障了账户信息。
唯一性
数字证书依用户身份不同给予其相应的访问权限,若换电脑进行账户登录,而用户无证书备份,其是无法实施操作的,只能查看账户信息,数字证书就犹如“钥匙”一般,所谓“一把钥匙只能开一把锁”,就是其唯一性的体现。
便利性
用户可即时申请、开通并使用数字证书,且可依用户需求选择相应的数字证书保障技术。用户不需要掌握加密技术或原理,就能够直接通过数字证书来进行安全防护,十分便捷高效。数字证书是由CA中心所签发的,CA中心是一个具权威性、依赖度极高的第三方,其资格证书经国家颁发,可有效保障网络数据信息的安全性,使数据信息处国家掌握当中。用户在浏览网络数据信息或进行网上交易时,利用数字证书可保障信息传输及交易的安全性。
下载安装
用户需先于中国数字证书认证网进行登录,若是首次登录,系统会自动提示用户安装根证书,用户只需依提示完成安装即可;若未提示或根证书遗失,则需用户手动操作完成安装,这时,就需用户于数字证书网页选择“根CA证书”进行安装,依所弹出的对话框所选择要安装的文件夹位置,点击确定即可。下载好之后,即可双击打开,选择所要安装的位置即可;安装成功后,可于浏览器中直接选择Internet,然后选择所需内容,依提示完成所有操作。
举例:使用百家云终端软件进行数字签名,再windows端就会弹出如下提示,带有发布者的名称。
颁发
数字证书的颁发即是用户对自己密钥和公钥以及自身身体信息传输至验证中心进行验证的过程,验证中心在经核对后,即会给申请者发送相应的数字证书。所改善的数字证书当中包含了用户基本信息及公钥信息,部分还会附上经认证中心签名的相关信息。在获得数字证书后,用户即可利用数字证书实施一些自己想要实施的活动。
每个数字证书都是不同的,且每个证书的可信度也存在一定差异,因此,申请者所获得的数字证书都是唯一的。
应用
安全电子邮件
电子邮件中使用数字证书可以建构安全电子邮件证书,主要用户加密电子邮件的传输,保护电子邮件在传输和接收过程中的安全。安全电子邮件证书主要有证书持有者的CA机构的签名、电子邮件地址和公开密钥这些信息。一方面,数字证书与电子邮件结合后,就可以在安全电子邮件证书的加密和数字签名技术的保护下,实现电子邮件的安全传输和接收,保证了电子邮件的安全性和完整度。同时,也保证了电子邮件传输方和接收方信息的真实性。另一方面,安全电子邮件证书中包括公开密钥这一信息,就能够确保电子邮件不被更改,因为只有知道公开密钥才能使用电子邮件。
安全终端保护
随着计算机网络技术的发展,电子商务的发展也越来越快,在人们生活和生产中的应用也越来越广泛,用户终端和数据的安全问题也日益受到重视。为了避免终端数据信息的损坏或者是泄露,数字证书作为一种加密技术,可以用于终端的保护。
首先,使用正版的软件和硬件,正确配置系统和网络并定期进行检查,防止终端配置被非法篡改。其次,利用网络安全技术如防火墙对内外网络进行实质性的隔离。同时,及时更新病毒库和防病毒软件,对终端系统实时进行病毒和安全漏洞的扫描,加强对终端系统的安全保护。一旦发现可疑信息,就要立即重点监控,防止其带来的影响和破坏。最后,加强访问终端的控制,利用加密和认证等手段加强信息破解的难度。用户可以设置一个以数字证书为主的系统登录方式,加上动态加密,就可以实现对系统的验证,没有权限的用户就无法进入终端系统的访问,拥有权限的用户就符合了访问的要求,保证了访问终端的一致性。另外还要做到终端网络和主网络的分离,减少两者之间的数据交叉和结合,也避免了终端网络和主网络的相互影响,减少风险。
代码签名保护
网络信息推广对很多用户来说,便捷有经济,但对软件的安全是不确定的。比如,用户对软件进行分享时,软件的接收和使用过程中存在着很多不安全因素,即使软件供应商能够保证软件自身的安全性,但也无法抵制盗版软件和网络本身存在的不安全因素带来的不利影响。
可信网站服务
我国网站的数量伴随着计算机网络技术的发展呈现出日益增长的趋势,其中的恶意网站、钓鱼网站和假冒网站也越来越多,这就增加了用户对它们识别的难度,一不小心就会将自身的数据信息泄漏,严重影响了网络的安全。当用户对所使用的网站存在疑虑,不确定其中是否有被篡改和侵袭时,就可以利用数字证书的技术。通过数字证书技术,就可以对不确定的网站先进行验证和检查,增加了使用安全网站的机率,也避免了恶意网站、钓鱼网站和假冒网站等对网络造成的损失。
身份授权管理
授权管理系统是信息系统安全的重要内容,对用户和程序提供相对应的授权服务,授权访问和应用的方法,而数字证书必须通过计算机网络的身份授权管理后才能被应用。因此,要保证身份授权管理工具的安全性。当系统双方相互认同时,身份授权系统的工作才能展开。同时,正确使用数字证书,适当授权,完成系统的用户认证,才能切实保护身份授权管理系统的安全性。
数字证书通俗解释
概述
数字证书分带私钥的证书和不带私钥的证书:
- 带私钥的证书:即P12格式证书(后缀名为.pfx);
- 不带私钥的证书:有多种格式,通常使用的是cer格式证书(后缀名未.cer);
通俗解释
数字签名,在网络安全领域用的比较多,可实现用户身份的真实可靠性;实现信息的完整性,确保数据在存储、传输和处理的过程中免遭任何非授权的或非预期的修改、插入、删除、重发等破坏,从而实现数据的真实性、有效性和一致性。
用一段密码与原文进行加密,检测原文有没有被篡改。或者理解为就是对这些数据与原文数据比对是否修改过,如果有说明您的原文被篡改过,否则是你的原文。一般是用自己的私钥对数据进行签名,然后用公钥去验证这个数据是否修改过
- 签名:个人用“私钥”进行签名
- 验签:用“公钥”进行验签
- 加密:用公共的“公钥”加密
- 解密:用“私钥”进行解密
数字签名的目的
用户下载软件时,能通过数字签名验证软件来源可信,确认软件没有被非法篡改或植入病毒木马,保护用户不会被病毒、恶意代码和间谍软件所侵害,也保护了软件开发者的利益,让软件能在互联网上快速安全地发布。
未使用数字签名的软件可能无法正常运行,以Windows系统为例,如果用户下载运行未签名的软件, Windows系统会发出红色安全警告;而未签名的ActiveX控件, Windows会直接拦截不允许运行。因此,数字签名是软件发行前必不可少的一道工序。
颁布
数字证书(代码签名证书)是由权威CA机构(沃通CA)认证开发者身份颁发,开发者使用WoSign代码签名证书和代码签名精灵对软件进行数字签名,可以防止软件被植入病毒木马,减少Windows系统拦截,让用户可以顺畅地安装使用。
数字签名与360等杀毒软件的关系推断
软件不使用数字签名证书,软件有一定可能会被360等杀毒软件拦截,还从其它渠道网友大佬公司得到一些信息,笔者主观推断:
- 推断一:
某杀毒软件存在证书白名单:该白名单保存了证书白名单,通过数字签名的方式实现,当检测到一个软件则获取其数字签名,该数字签名在某杀毒软件的白名单内,则不拦截。
数字签名本身也能验证exe的完整性,某杀毒等杀毒软件再做二次过滤以达到更高的安全性,措施也就是不在名单内的很可能就进行拦截,至于用户自己可以手动添加到某杀毒软件等本地白名单中放行。
- 推断二(从笔记二中的数字证书厂家得到验证该推断是最接近于正确):
某杀毒软件等杀毒软件存在软件白名单:该白名单保存了软件的名称(还有其他什么细信息),在杀毒软件开放平台后端去申请过白名单(后台免费申请过审批就行),对应的也有黑名单,因为有案例说数字签名被检测到疑似有木马后,使用该数字签名的其它软件也会被拦截。
以上只是笔者的主观推断,需要进一步论证,只可作为参考。