`
javafun
  • 浏览: 62112 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

代码签名和安全邮件的使用

阅读更多

     如果你使用IE申请过客户证书,你会注意到在申请证书的页面的Advance Setting中有一项Usage选项,这是X.509数字证书的标准扩展,它指定所申请证书的用途。在这个选项中除了客户验证和服务器验证之外还有E-Mail保护,代码签名和时间戳签名。E-Mail保护用来对电子邮件签名和加密的即用于安全电子邮件S/MIME协议,代码签名是用来对exe,ocx或cab签名的,时间戳签名是用来产生时间戳的。

     安全电子邮件提供邮件的加密和签名,利用公钥算法保证你的签名邮件不会被篡改,而你的加密邮件除了邮件接收者以外(甚至你自己)的任何人无法阅读其中的内容。邮件签名很加密的使用方法相对比较简单,申请一个E-Mail保护证书,在E-Mail一栏中输入你的POP3Mail帐号(不能用基于HTTP的邮件帐号),在安装好证书后打开Outlook Express,在帐号属性中选择“安全”一栏。这里你可以将你的邮件帐号同你的数字证书绑定,需要注意的是,证书中的邮件地址必须同绑定的邮件帐号一致。这样你就可以对自己的邮件签名和加密了。打开邮件编辑界面,在工具栏的最右边有两个按钮,那就是签名和加密按钮。

     对邮件签名使用的是你的私有密钥,在完成邮件后按下该按钮,Outlook会自动以附件方式在邮件中添加一个签名PKCS#7 Signature,在这个签名中同时还包含了你的证书(S/MIME),当别人收到你的邮件后如果他使用的邮件工具支持S/MIME(如Outlook Express和Netscape Messenger)就会自动对邮件的签名进行验证。验证签名需要对证书链进行验证,这就需要已经安装颁发你的S/MIME证书的CA的证书(就是安装Certificate Server时产生的那个证书即根证书),通常别人不会有你的根证书,所以你必须首先将你的根证书发给别人并安装,否则你的签名邮件将无法验证。根证书安装方法同SSL根证书的安装,通常SSL和S/MIME根证书会是同一个,因为CA证书一般是不分用途的,它只有一个用途就是签发证书。

     别人收到你的签名邮件后,通过查看邮件属性可以看到你的证书(包含在你的签名中的),他可以把你的证书添加到地址簿中去,并同地址簿中的邮件地址绑定。这样他就可以你发送加密邮件了,这是因为加密邮件使用的是邮件接收方的公钥即数字证书。加密操作同样只要按一个按钮就可以了。加密邮件的前提是在你的地址簿中有与发送地址绑定的数字证书。

     除了通过邮件发送你的S/MIME证书(不是根证书),你还可以通过文件方式,以PKCS#7证书链方式将证书导出到文件并发给别人,那他就可以通过打开文件将你的证书添加到通讯簿中。此外还有一种情况就是你希望给一个人发一个加密的邮件,但又没有对方的证书,这时就需要一个类似黄页的工具来查询某人的证书,目前主要是通过目录查询来实现的。点击NT/98的开始按钮,选择“查找|用户”菜单,在服务商中选择Verisign,然后在名字一栏中输入Frank然后按查找,双击某个输出结果查看其属性,你会发现这个人的证书,将其添加到通讯簿中后,你就可以给他发送加密邮件了。

     现在来讲一下代码签名,如果你编写一个ActiveX 控件并放在网页中,别人通过Internet下载时通常会出现一个安全警告,提示代码没有签名。在你的Certificate Server安装目录下找到xenroll.cab,并查看其属性,你会发现多了一栏数字签名,这里你可以查看签名验证情况以及相关证书。要给自己的程序签名其实也很简单,Microsoft有一个Authenticode工具专名用来给代码签名,你可以从Microsoft站点下载到,里面有许多工具,但通常你只要用到signcode.exe就够了。首先你需要有一个代码签名证书,然后使用signcode.exe使用过程很方便,基本是wizard方式的,在提示选择使用的签名证书时按“从存储器选择”按钮选择签名证书。你可以选择将所以证书放入签名,也可以不将根证书放入签名,建议不要将根证书放入签名,还是应让用户从你的站点下载根证书,因为带根证书的签名是没有意义的,虽然这会给用户带来一些麻烦(他需要先安装根证书才能正确验证你的签名)。在提示加入时间戳时选择不加入时间戳。完成签名后你可以从文件属性验证其签名和证书。

     时间戳的作用在于证明某一段数据在该时间的存在性。比如你有一个重大发现,希望用它来争取诺贝尔奖,你用Word编写你的论文,但是为了证明你是第一个发现者,你需要证明你写论文的时间,由于文件的时间可任意修改,不能作为证明,所以你需要有一个时间戳,你通过某个Hash算法计算出你的Word文件的摘要并发送给一个权威的时间戳签名服务商(DTS),DTS对摘要和签发时间进行签名形成时间戳发还给你,你将文件时间戳合并,作为将来证明你撰写论文时间的依据。时间戳服务需要很高的权威性,所以对私钥存储,时间来源都有很高的要求。目前这方面应用不多,好象Office 2000似乎支持时间戳功能。

     无论是SSL也好,安全电子邮件也好,代码签名也好都是Netscape最先提出和使用的,在Netscape中使用这些技术,方法都很相似(Microsoft学的还真象),所以这里不再多说了。IE5.0以后,Microsoft的这些技术和产品已经比较成熟,在功能上部分超越了Netscape,但Netscape毕竟是原创,在这方面的文档资料比较全面,讨论组和邮件列表也比较多,所以在技术支持方面会比较好一点。

分享到:
评论

相关推荐

    发送数字签名和加密邮件-实验报告.pdf

    数字签名和加密邮件发送实验报告 本实验报告旨在介绍如何使用 Outlook Express 发送带数字签名和加密的电子邮件。...我们应该在日常生活中更加关注电子邮件的安全性,使用加密和数字签名来保护电子邮件的安全。

    代码签名证书制作工具.zip

    总之,代码签名证书对于软件开发者来说,是提高软件安全性和信誉度的重要手段。通过使用"代码签名证书制作工具",你可以轻松地为你的代码添加这一层保护,确保你的软件在分发时保持完整性和可信度。尽管免费证书可能...

    BlackBerry代码签名工具申请及安装介绍

    ### BlackBerry代码签名工具申请及安装详解 #### 一、背景与概述 在BlackBerry平台的开发过程...通过上述详细步骤和注意事项,开发者可以顺利完成BlackBerry代码签名工具的申请及安装流程,确保应用程序的安全发布。

    密码学课设安全邮件系统.zip

    在安全邮件系统中,这个库将用于实现邮件的加密和数字签名,确保邮件内容的完整性和机密性。 在设计这样一个系统时,通常会采用端到端加密(E2EE)策略,即只有发送者和接收者可以解密邮件内容,即使邮件在传输过程...

    发送数字签名和加密邮件 实验报告.docx

    实验报告的主题是“发送数字签名和加密邮件”,其目的是让学生理解和掌握数字签名和加密技术在电子邮件通信中的应用,以及如何使用Outlook Express这一常见的电子邮件客户端进行相关操作。实验的环境是配备了Windows...

    数字签名的生成和使用说明

    本文将以SHECA数字签名为例,详细解析数字签名的生成和使用过程,特别是针对代码签名证书的具体操作流程。 ### 数字签名的概念 数字签名是一种基于公钥加密技术的安全机制,用于确认信息的来源及其完整性。通过...

    Java邮件开发源代码

    此外,JavaMail API还提供了许多其他功能,例如支持S/MIME(安全/多用途互联网邮件扩展)用于加密和签名邮件,以及支持JAF(JavaBeans Activation Framework)用于处理邮件附件的不同类型。 在Java邮件开发源代码中...

    pgp50(1).zip_mime_pgp_电子签名_电子邮件_邮件 加密

    PGP是一种广泛使用的加密软件,主要用于保护电子邮件的安全,实现数据的隐私和完整性。它结合了对称加密和非对称加密技术,提供了强大的数据安全解决方案。 “mime”是Multipurpose Internet Mail Extensions的缩写...

    电子邮件安全技术研究

    电子邮件安全技术研究是当下IT领域中的一个重要议题,随着互联网的普及和电子邮件的广泛应用,确保电子邮件在传输过程中的安全变得日益紧迫。电子邮件作为一种高效便捷的信息传递工具,其安全性不仅关乎个人隐私,更...

    Python-一个用于邮件安全和过滤解决方案的测试框架

    使用“mail-security-tester-master”这个项目的源代码,开发者和安全专业人员可以深入了解邮件安全的测试方法,自定义测试方案,或者将其整合到现有的开发流程中,提高邮件系统的安全性。这个工具的开源性质也意味...

    C#实现数字签名算法

    总之,C#中的数字签名算法是基于非对称加密和哈希函数的组合,通过源代码的学习和实践,开发者可以增强对网络安全的理解,提升应用程序的安全性。在实际项目中,数字签名常用于电子合同、电子邮件、软件更新等场景,...

    RSA数字签名

    5. **应用场景**:RSA数字签名常用于电子邮件安全、软件代码签名、电子合同签署、HTTPS协议等,确保数据在传输过程中的完整性和发送者的身份认证。 6. **标准与实现**:RSA算法有多种实现,如OpenSSL库提供了RSA...

    RSA非对称签名、验签测试代码

    在描述中提到的“RSA非对称签名、验签测试代码”是指使用RSA算法进行数字签名和验证签名的代码示例。数字签名是一种用于验证数据完整性和发送者身份的技术,它利用了非对称加密的特点。在RSA中,私钥用于创建数字...

    数字签名文件,数字签名文件

    在IT领域,数字签名是一种重要的安全技术,它用于验证文件的完整性和来源的可靠性...正确理解和使用数字签名,对于保护个人和组织的信息安全至关重要。而AddSign.exe这样的工具则为我们提供了实现这一安全机制的途径。

    数字签名添加器 数字签名添加器

    数字签名在IT行业中扮演着至关重要的角色,尤其是在软件开发、数据安全和电子交易等领域。它是一种先进的加密技术,用于验证文件或代码的...在日常工作中,正确使用数字签名添加器可以大大提升文件和通信的安全水平。

    rsa数字签名

    RSA数字签名是一种在信息安全领域广泛使用的公钥加密技术,它基于数学难题的RSA算法,用于确保数据的完整性和来源的真实性。在本程序源代码中,我们可能会看到如何使用RSA算法来实现数字签名的过程。 首先,我们...

    学会利用加密方法保障电子邮件系统安全

    PGP Desktop Professional则可以保护电子邮件、硬盘数据和即时通讯,同时提供数字签名功能。PGP Whole Disk Encryption能全面加密整个硬盘,确保所有数据的安全。 在考虑电子邮件加密时,企业应选择能够随业务发展...

    RSA数字签名算法的具体实现

    它在信息安全领域扮演着至关重要的角色,特别是在电子交易、电子邮件安全、软件更新验证等方面。本项目实现了RSA数字签名算法,使用Java语言编程,并能在Eclipse环境中顺利运行。以下是关于RSA数字签名算法及其Java...

Global site tag (gtag.js) - Google Analytics