关于在j2ee开发中进行数字签名的实践与思考

(1)数字签名的基本原理

报文的发送方用自己的私钥加密从报文文本中生成的一个散列值(或报文摘要),来形成发送方的数据签名。然后,这个数据签名将作为报文的附件和报文一起发送给报文的接收方。
报文的接收方:

计算从接收到的原始报文的散列值(或报文摘要),
用发送方的公钥来对报文附加的数字签名进行解密。
如果两个散列值相同,那么接收方就能确认该数字签名是发送方的

在数字签名中有重要作用的数字指纹是通过一类特殊的散列函数(HASH函数)生成的,对这些HASH函数的特殊要求是:
1. 接受的输入报文数据没有长度限制;
2. 对任何输入报文数据生成固定长度的摘要(数字指纹)输出
3. 从报文能方便地算出摘要;
4. 难以对指定的摘要生成一个报文,而由该报文反推算出该指定的摘要;
5. 两个不同的报文难以生成相同的摘要

  • 数字签名
    数字签名是一种电子签名,可以用来验证消息或文档的发件人的身份。数字签名使我们能够确认消息或文档的原始内容没有被改变。数字签名的其它好处包括便于传输以及能够自动打上时间标记。另外,数字签名不允许其他人随便拒绝接受消息。

    数字签名可与不同种类的消息一起使用,而不论这种消息是否具有加密能力。下面更详细地说明数字签名的过程。这一过程的技术术语是不对称密钥加密/公钥基本结构 (PKI)

    数字签名需要同时使用两个密钥。其中一个密钥总是保密的或“私有的”,而另一个密钥是“公用的”。您可以使用每一个密钥进行加密和解密。加密算法从数学上将输入明文 数据与加密密钥 结合起来,生成加密数据(暗文)。

    有了好的加密算法,从计算的角度来讲,仅有暗文是无法逆推加密过程并导出明文数据的;进行这种转换需要解密密钥

    传统上,密钥(或对称密钥) 加密、加密与解密密钥是相同的,因而可以共享敏感数据。对于想要使用密钥加密进行通信的双方,只有安全地交换加密/解密密钥后,才能相互交换加密数据。

    而公钥加密的基本属性则是,加密和解密使用不同的密钥。

    用公钥加密密钥进行的加密是单向 功能;明文转变为暗文,但加密密钥却与解密过程无关。

    要将暗文转换回明文,则需要不同的解密密钥(与加密密钥有关,但不相同)。因此,对于公钥加密,每一方都有一对密钥,即一个 钥和一个钥。

    在公钥可用的前提下,可以让其他人将加密数据发给您,而该数据只能用您的私钥来解密。相似地,可用您的私钥来转换数据,这样,其他人就会验证出该数据是由您发送的。这种能力是数字签名的基础。

    验明身份加密提供了强有力的分布式身份验证服务。实体身份验证 保证数据的发件人就是收件人所认为的那个实体。

    如果 Alice 收到了 Bob 发来的数据,然后给 Bob 发送用他的公钥加密的质询,Bob 随后解码该质询并将它发回给 Alice,证明他拥有与 Alice 用来发出质询的公钥相关的私钥。Alice 也可以发送一个明文质询给 Bob。

    Bob 随后将该质询与其他信息(已有数字签名)结合起来。然后,Alice 就用 Bob 的公钥来验证该签名,并证实 Bob 有与此关联的私钥。该质询能够确保该消息是唯一的,并可防止有敌意的第三方进行重放攻击。这两种情况都称为证明所有权协议,因为发件人在此过程中证明自己有特定的私钥。

  • 数字证书
    数字证书的作用与“信用卡”十分相似。当客户在 Web 上做生意或进行其它交易时,数字证书能够建立客户凭据。数字证书由第三方颁发。为了保证用户身份及其密钥的真实性,公钥系统要求有一个通信双方都信任的且独立于双方的第三方。

    该第三方叫做证书颁发机构 (CA) ,因为证明公钥的所有者名副其实是 CA 的职责。为了证明公钥,CA(如 VeriSign)创建一个由用户标识的详细资料的一部分和该用户公钥组成的证书。然后,该 CA 用其自己的私钥在该证书上进行数字签名,以创建一个公钥证书。

    用户可以通过使用该 CA 的公钥验证证书上的 CA 签名,来检查另一个用户身份的真实性,CA 的公钥对公众是公开的。

    对消息进行解密后,收件人验证发件人的数字签名。为此,需要使用与创建原始签名相同的散列算法创建该文档的摘要。同时,使用发件人的公钥对附加到该文档的数字签名进行解密。这样就创建了该数字签名的摘要。

    然后,比较文档和数字签名的摘要。即使两者之间存在最微小的差别,该签名也会被拒绝。如果两个摘要完全匹配,收件人即可知道该文档在传输过程中没有被改变,并确信发件人的身份。

    由于发件人是唯一知道用来签名该邮件的私钥的人,所以发件人不能拒绝承认其发送了该邮件。

    而公钥加密的基本属性则是,加密和解密使用不同的密钥。

    用公钥加密密钥进行的加密是单向 功能;明文转变为暗文,但加密密钥却与解密过程无关。

    要将暗文转换回明文,则需要不同的解密密钥(与加密密钥有关,但不相同)。因此,对于公钥加密,每一方都有一对密钥,即一个 钥和一个钥。

    在公钥可用的前提下,可以让其他人将加密数据发给您,而该数据只能用您的私钥来解密。相似地,可用您的私钥来转换数据,这样,其他人就会验证出该数据是由您发送的。这种能力是数字签名的基础。

    验明身份加密提供了强有力的分布式身份验证服务。实体身份验证 保证数据的发件人就是收件人所认为的那个实体。

    如果 Alice 收到了 Bob 发来的数据,然后给 Bob 发送用他的公钥加密的质询,Bob 随后解码该质询并将它发回给 Alice,证明他拥有与 Alice 用来发出质询的公钥相关的私钥。Alice 也可以发送一个明文质询给 Bob。

    Bob 随后将该质询与其他信息(已有数字签名)结合起来。然后,Alice 就用 Bob 的公钥来验证该签名,并证实 Bob 有与此关联的私钥。该质询能够确保该消息是唯一的,并可防止有敌意的第三方进行重放攻击。这两种情况都称为证明所有权协议,因为发件人在此过程中证明自己有特定的私钥。

  • 而公钥加密的基本属性则是,加密和解密使用不同的密钥。

    用公钥加密密钥进行的加密是单向 功能;明文转变为暗文,但加密密钥却与解密过程无关。

    要将暗文转换回明文,则需要不同的解密密钥(与加密密钥有关,但不相同)。因此,对于公钥加密,每一方都有一对密钥,即一个 钥和一个钥。

    在公钥可用的前提下,可以让其他人将加密数据发给您,而该数据只能用您的私钥来解密。相似地,可用您的私钥来转换数据,这样,其他人就会验证出该数据是由您发送的。这种能力是数字签名的基础。

    验明身份加密提供了强有力的分布式身份验证服务。实体身份验证 保证数据的发件人就是收件人所认为的那个实体。

    如果 Alice 收到了 Bob 发来的数据,然后给 Bob 发送用他的公钥加密的质询,Bob 随后解码该质询并将它发回给 Alice,证明他拥有与 Alice 用来发出质询的公钥相关的私钥。Alice 也可以发送一个明文质询给 Bob。

    Bob 随后将该质询与其他信息(已有数字签名)结合起来。然后,Alice 就用 Bob 的公钥来验证该签名,并证实 Bob 有与此关联的私钥。该质询能够确保该消息是唯一的,并可防止有敌意的第三方进行重放攻击。这两种情况都称为证明所有权协议,因为发件人在此过程中证明自己有特定的私钥。

  • 数字证书
    数字证书的作用与“信用卡”十分相似。当客户在 Web 上做生意或进行其它交易时,数字证书能够建立客户凭据。数字证书由第三方颁发。为了保证用户身份及其密钥的真实性,公钥系统要求有一个通信双方都信任的且独立于双方的第三方。

    该第三方叫做证书颁发机构 (CA) ,因为证明公钥的所有者名副其实是 CA 的职责。为了证明公钥,CA(如 VeriSign)创建一个由用户标识的详细资料的一部分和该用户公钥组成的证书。然后,该 CA 用其自己的私钥在该证书上进行数字签名,以创建一个公钥证书。

    用户可以通过使用该 CA 的公钥验证证书上的 CA 签名,来检查另一个用户身份的真实性,CA 的公钥对公众是公开的。

    对消息进行解密后,收件人验证发件人的数字签名。为此,需要使用与创建原始签名相同的散列算法创建该文档的摘要。同时,使用发件人的公钥对附加到该文档的数字签名进行解密。这样就创建了该数字签名的摘要。

    然后,比较文档和数字签名的摘要。即使两者之间存在最微小的差别,该签名也会被拒绝。如果两个摘要完全匹配,收件人即可知道该文档在传输过程中没有被改变,并确信发件人的身份。

    由于发件人是唯一知道用来签名该邮件的私钥的人,所以发件人不能拒绝承认其发送了该邮件。

    而公钥加密的基本属性则是,加密和解密使用不同的密钥。

    用公钥加密密钥进行的加密是单向 功能;明文转变为暗文,但加密密钥却与解密过程无关。

    要将暗文转换回明文,则需要不同的解密密钥(与加密密钥有关,但不相同)。因此,对于公钥加密,每一方都有一对密钥,即一个 钥和一个钥。

    在公钥可用的前提下,可以让其他人将加密数据发给您,而该数据只能用您的私钥来解密。相似地,可用您的私钥来转换数据,这样,其他人就会验证出该数据是由您发送的。这种能力是数字签名的基础。

    验明身份加密提供了强有力的分布式身份验证服务。实体身份验证 保证数据的发件人就是收件人所认为的那个实体。

    如果 Alice 收到了 Bob 发来的数据,然后给 Bob 发送用他的公钥加密的质询,Bob 随后解码该质询并将它发回给 Alice,证明他拥有与 Alice 用来发出质询的公钥相关的私钥。Alice 也可以发送一个明文质询给 Bob。

    Bob 随后将该质询与其他信息(已有数字签名)结合起来。然后,Alice 就用 Bob 的公钥来验证该签名,并证实 Bob 有与此关联的私钥。该质询能够确保该消息是唯一的,并可防止有敌意的第三方进行重放攻击。这两种情况都称为证明所有权协议,因为发件人在此过程中证明自己有特定的私钥。

  • 数字证书
    数字证书的作用与“信用卡”十分相似。当客户在 Web 上做生意或进行其它交易时,数字证书能够建立客户凭据。数字证书由第三方颁发。为了保证用户身份及其密钥的真实性,公钥系统要求有一个通信双方都信任的且独立于双方的第三方。

    该第三方叫做证书颁发机构 (CA) ,因为证明公钥的所有者名副其实是 CA 的职责。为了证明公钥,CA(如 VeriSign)创建一个由用户标识的详细资料的一部分和该用户公钥组成的证书。然后,该 CA 用其自己的私钥在该证书上进行数字签名,以创建一个公钥证书。

    用户可以通过使用该 CA 的公钥验证证书上的 CA 签名,来检查另一个用户身份的真实性,CA 的公钥对公众是公开的。

    对消息进行解密后,收件人验证发件人的数字签名。为此,需要使用与创建原始签名相同的散列算法创建该文档的摘要。同时,使用发件人的公钥对附加到该文档的数字签名进行解密。这样就创建了该数字签名的摘要。

    然后,比较文档和数字签名的摘要。即使两者之间存在最微小的差别,该签名也会被拒绝。如果两个摘要完全匹配,收件人即可知道该文档在传输过程中没有被改变,并确信发件人的身份。

    由于发件人是唯一知道用来签名该邮件的私钥的人,所以发件人不能拒绝承认其发送了该邮件。

    (2)java为数字签名提供的支持

     (3)数字签名主要任务

    (4)实践:前台要求用微软capicom控件激发数字签名,在后台用java进行数据完整性验证和证书有效性验证

    (5)实践中的摸索

    (6)解决方法

    (7)思考

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值