在通过精美的包装盒销售软件的时代,大家使用什么防伪标志等来让用户识别什么是正版软件。但在当今的网络时代,有利的一面是软件开发商可以通过网络不受时间、地域的限制而快速发行软件,但不利的一面,则是用户无法辨认软件的真伪,根本无法确认软件代码的真实身份。在没有间谍软件和木马程序之前,大家可能还都信任某个软件就是软件中声称的开发商开发的软件,但是在今天就不应该这样认为了,互联网的匿名性使得用户根本无法确认此软件是否真的是软件中声称的开发商开发的软件!如何保证软件代码在网络传输过程中不会被非法修改,同时还能让用户非常清楚地识别软件发行者的真实身份( 软件真实来源 ),答案就是代码签名。
以微软代码为例,为了保证微软 Windows系统的安全和用户安全,微软推出了 Microsoft Authenticode 技术,即微软认证码技术,此技术保证了只有使用了 Windows 的受信任的根证书颁发机构颁发的代码签名证书对软件代码数字签名后才允许在 Windows 上运行,从而保证了软件代码来自真实的发行者和保证软件代码没有被非法篡改。
软件开发商在自己电脑上生成私钥 (.pvk) 和证书请求文件 (CSR) 提交给 WoSign, 同时提交有关身份证明文件 ( 如营业执照和第三方证明文件等 ) 给 WoSign 查验, WoSign 验证身份后用自己的私钥给 CSR 文件签名后生成代码签名证书,也就是公钥 (.spc) 给软件开发商。这样就完成了证书的申请和颁发。
软件开发商用代码签名工具 ( 如: SignCode.exe) 给要签名的代码生成一个 Hash 表,再用其私钥加密 Hash 表产生认证摘要,接着就把认证摘要连同其公钥与软件代码一起打包生成签名后的新的软件代码,软件开发商就可以把已经签名的代码放到网上发行了。
最终用户从网上下载已经签名的代码时,浏览器会从签名代码中解读出其签名证书 ( 公钥 ) 和 Hash 表摘要,并与 Windows 的受信任的根证书相比较查验公钥证书的有效性和合法性,验证签名证书正确后,就可以确认此代码确实是来自真实的软件开发商。
接着,再使用签名时使用的同样算法对软件代码生成一个 Hash 表,并使用公钥也同样生成一个 Hash 表认证摘要,比较从代码中解包出来的 Hash 表认证摘要与生成的 Hash 表认证摘要是否一致,如果一致,则表明此代码在传输过程中未有任何修改,从而可以确认代码的一致性。
从以上整个过程的简单介绍,可以看出:
(1) 购买代码签名证书一定要从 Windows 内置的受信任的根证书颁发机构购买 ( 如: WoSign,Thawte, VeriSign),否则无法通过验证。而通过人为的添加根证书到 Windows 受信任的根证书存储区,一来不可能要求所有网上用户在使用代码之前先下载和安装某个根证书,更重要的是,谁都可以人为添加的根证书不能保证签名证书的唯一性和权威性。
(2) 代码签名后不仅保证了软件开发商的真实身份,而且还保证了代码的完整性,以免代码被病毒干扰和被非法篡改。
(3) 只有使用了 Windows 受信任的证书颁发机构 ( 如 WoSign) 颁发的代码签名证书签名的代码才允许下载,所以,如果您要让您的代码能让用户放心地下载,就一定要申请 WoSign 的代码签名证书。
- 大小: 5.7 KB
分享到:
相关推荐
所谓"数字签名"就是通过某种密码运算生成一系列符号及代码组成电子密码进行签名,来代替书写签名或印章,对于这种电子式的签名还可进行技术验证,其验证的准确度是一般手工签名和图章的验证而无法比拟的。"数字签名...
该项目是一个**使用Python语言基于RSA算法实现的数字签名生成软件**。下面是对该软件的详细介绍: 1. **技术实现**: - 该软件使用了Python编程语言,并结合了MySQL数据库来存储密钥和其他相关信息。 - 主要技术...
第二,介绍了RSA数字签名的一些基本概念和数字签名的理论实现过程;第三,对MD5算法基本原理的介绍;第四,详述了RSA数字签名的设计与实现,主要实现的模块包括RSA密钥的产生(一对公钥和私钥),RSA加密算法和解密...
第二,介绍了RSA数字签名的一些基本概念和数字签名的理论实现过程;第三,对MD5算法基本原理的介绍;第四,详述了RSA数字签名的设计与实现,主要实现的模块包括RSA密钥的产生(一对公钥和私钥),RSA加密算法和解密...
本书从技术角度对数字水印的基本状况、理论、主流算法、性能、检测技术和典型应用进行了全面介绍,对水印研究应用中遇到的主要问题进行了系统阐述,并辅以丰富的例子,还在附录部分给出了主要算法的源代码。...
第二,介绍了RSA数字签名的一些基本概念和数字签名的理论实现过程;第三,对MD5算法基本原理的介绍;第四,详述了RSA数字签名的设计与实现,主要实现的模块包括RSA密钥的产生(一对公钥和私钥),RSA加密算法和解密...
4)在本设计中用产生的公钥e根据RSA算法的解密原理对所加密的消息摘要即数字签名进行解密运算,得到对应的消息摘要(在本设计中标示的为解密信息),比较两个消息摘要,验证数字签名者的身份的真实与否; 5)提示...
一类资源描述:Java ASP系统毕业设计资源 ...在借鉴源代码时,重要的是确保学生理解代码的逻辑和工作原理,而不仅仅是简单地复制。 希望这种资源描述能为您提供所需的信息。如有其他问题或需要更多的描述,请告诉我。
加密连接、数字签名和数字证书的核心算法广泛使用RSA。日常应用中,有比较著名的工具包Open SSL(SSL,Security Socket Layer,是一个安全传输协议,在Internet上进行数据保护和身份确认。Open SSL是一个开放源代码的...
数字签名具体的好处就不说了,看了很多文章,网络上各种图,理解起来可能比较麻烦,在这里简单说一下原理,减少大家的误区,纯属个人理解,欢迎纠正
本实验主要是设计加减法指令的实现,将汇编语言程序设计,数字逻辑与或运算原理以及计算机组成原理3方面的知识结合到一起利用此软件平台实现连续几个数的加减法运算,从而了解逻辑运算运算单元的运行过程。...
在学习过程中,我们将通过分析源代码深入了解Python的使用方式和原理,提升对Python技术的理解和熟练度。具体而言,我们将掌握后端开发的关键技能,以及在Web应用程序中如何进行数据库集成,为我们在实践中掌握Web...
环签名是一种特殊类型的数字签名,它证明消息是由一组可能的签名者中的一个签名的,而不会透露该组中的哪个成员创建了签名。 环签名最初是由 Rivest、Shamir 和 Tauman 在题为“如何泄露秘密”的论文中提出的。 环...
关于数字签名:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名的数据传送给签名对象(须在初始化之后),用公钥...
关于数字签名:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名的数据传送给签名对象(须在初始化之后),用公钥...
1、通信的服务端和... 9、报告中的代码页不超过5页,只包括核心代码即可,涉及原理图的需要自己画,不得使用网上的图片; 10、报告符合要求、内容完整、格式规范、没有抄袭,提交电子版的报告和源代码完整无误。
uthenticode(程式化为μthenticode)是用于验证小的跨平台库数字签名。 什么? Authenticode是Microsoft的代码签名技术,旨在允许对程序进行签名和验证。 μthenticode是Authenticode验证方的跨平台重新实现。 ...
关于数字签名:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名的数据传送给签名对象(须在初始化之后),用公钥...