精华内容
下载资源
问答
  • 数字签名是非对称密钥加密技术与数字摘要技术的应用。 作用 (1)防冒充(伪造)。私有密钥只有签名者自己知道,所以其他人不可能构造出正确的。 (2)可鉴别身份。由于传统的手工签名一般是双方直接见面的,身份自可...
  • 数字签名原理及其应用

    万次阅读 多人点赞 2017-06-25 15:40:34
    签名的作用无非就是证明某个文件上的内容确实是我写的/我认同的,别人不能冒充我的签名(不可伪造),我也不能否认上面的签名是我的(不可抵赖)。 我们知道,手写签名之所以不能伪造,是因为每一个人的...而数字签名

    序言


    签名的作用简单来说就是证明某个文件上的内容确实是我写的/我认同的,别人不能冒充我的签名(不可伪造),我也不能否认上面的签名是我的(不可抵赖)。

    我们知道,手写签名之所以不能伪造,是因为每一个人的笔迹都是独一无二的,即使模仿,也可以通过专家鉴定分别出来。而不可抵赖,是因为每个人的笔迹都有固定特征,这些特征是很难摆脱的。

    正是这两点特性使得手写签名在日常生活中被广泛承认,比如签合同、借条等等。

    而数字签名,它的作用跟手写签名其实是类似的,用来证明某个消息或者文件是本人发出/认同的。我国在2005年就已经施行《电子签名法》,确立了电子签名(包括但不限于数字签名)的法律效力。

    那么数字签名又是靠什么保证不可伪造和不可抵赖两个特性呢?

    答案是利用公钥加密系统。常用的签名算法有

    • RSA,基于大整数分解问题
    • DSA,基于离散对数问题
    • ECDSA,属于DSA的一个变种,基于椭圆曲线上的离散对数问题

    其中RSA是上述几个算法中最容易实现数字签名的。

    公钥加密与数字签名


    数字签名的要求是,只有我自己能签我的名字,其他人能验证我的签名,但是不能伪造我的签名。

    我们知道,公钥加密系统里面,使用公钥加密,就可以使用私钥来解密;使用私钥加密,也可以使用公钥来解密。消息加密利用的是前者,数字签名利用的是后者。

    用私钥对消息进行加密,得到密文,其实就是一个签名的过程。因为私钥顾名思义是私密的,而且是唯一的,只有我自己知道,别人无法在不知道我的私钥的情况下模仿我的签名(不可伪造)。而公钥是公开的,其他人可以很容易地使用公钥去尝试解密生成的密文,然后就可以知道这个签名是不是我签的(不可抵赖)。

    当然,在数字签名的过程中,对原文的保密性没有要求,所以加密、解密这样的名词在这个场景中并不准确,用签名解签会更合适。

    实际应用中,由于直接对原消息进行签名有安全性问题,而且原消息往往比较长,直接使用RSA算法进行签名速度会比较慢,所以我们一般对消息计算其摘要(比如SHA-256等),然后对摘要进行签名。只要使用的摘要算法是安全的(MD5、SHA-1已经不安全了),那么这种方式的数字签名就是安全的。

    一个具体的签名过程如下:

    1. 小明对外发布公钥,并声明对应的私钥在自己手上
    2. 小明对消息M计算摘要,得到摘要D
    3. 小明使用私钥对D进行签名,得到签名S
    4. 将M和S一起发送出去

    验证过程如下:

    1. 接收者首先对M计算摘要,得到D’
    2. 使用小明公钥对S进行解签,得到D
    3. 如果D和D’相同,那么证明M确实是小明发出的,并且没有被篡改过

    应用


    手写签名可以用来签合同,那么数字签名可以用来干什么呢?

    网站认证

    首先最常见的用处就是用来认证一个网站的身份。
    比如我打开百度,百度是怎么保证显示在我眼前的网页就一定是百度生成的,不是其他人修改的呢?就是借助数字签名来实现的。

    用IE浏览器打开百度,点击地址栏旁边的小锁,再点击查看证书,就可以看到百度主页的数字签名证书了。所谓证书,其实是对公钥的封装,在公钥的基础上添加颁发者、有效期等信息。
    网站认证

    “签名算法”一栏可以看到,它使用的是sha256RSA,也就是使用SHA-256计算摘要,然后使用RSA对摘要进行签名。而在“公钥”一栏则保存着该证书的“本体”,用于验证签名的RSA公钥。

    代码签名

    而除此之外,还有个地方我们经常碰到数字签名的——代码签名。

    如果Windows上的可执行程序程序来源于正规公司,那么通常它会有代码签名,用于确保其来源可靠且未被篡改。以QQ为例,它的数字签名是这样的。
    代码签名

    如果某个程序没有数字签名,那么它的安全性往往就没有保证;如果它有数字签名,但是显示“此数字签名无效”,那么这个程序要么被篡改了要么损坏了,不管哪种都不应该尝试执行它。

    但是数字签名不是万能的。事实上不管是浏览器的数字签名还是代码的数字签名,都依赖于系统或者浏览器内置的根证书(公钥),如果电脑本身已经中毒或者被入侵,那么这些根证书可以被轻易添加或者修改,这时的数字签名的安全性可以说是荡然无存了。

    即使是签名有效的软件,并不能保证签名的公司不耍流氓,因为申请合法证书的门槛其实并不高,很多流氓软件都是由一些不知名的小公司搞出来的;或者某些小公司篡改知名软件,加入自己的代码,然后将原来的签名替换成自己的签名,这些数字签名在系统看来也是有效的,但是我相信你不会想运行这些软件的。如果对安全性要求比较高,可以手动或者借助工具吊销那些不太安全的根证书,具体方法已经超出本文讨论范畴,读者可以自行寻找。

    比特币

    比特币是一种匿名的数字货币,它的身份认证是基于ECDSA。比特币的账户地址就是对公钥等信息计算摘要得到的,向全世界公布。比特币账户地址不包含你的个人信息(姓名、住址、电话号码之类的),确认你是账户拥有者的唯一办法就是看你有没有账户对应的私钥。如果账户私钥丢失,那么你将永远地失去里面的钱;一旦私钥被黑客盗取,账户里面的钱就完全归黑客所有。

    #参考文献

    Microsoft TechNet: Digital Signatures
    Wikipedia: Digital Signature Algorithm
    Wikipedia: Elliptic Curve Digital Signature Algorithm

    展开全文
  • 数字签名原理及其应用详解

    万次阅读 多人点赞 2018-02-22 10:35:19
    序言签名的作用无非就是证明某个文件上的内容确实是我写的/我认同的,别人不能冒充我的签名(不可伪造),我也不能否认上面的签名是我的(不可抵赖)。我们知道,手写签名之所以不能伪造,是因为每一...而数字签名,...

    序言


    签名的作用无非就是证明某个文件上的内容确实是我写的/我认同的,别人不能冒充我的签名(不可伪造),我也不能否认上面的签名是我的(不可抵赖)。

    我们知道,手写签名之所以不能伪造,是因为每一个人的笔迹都是独一无二的,即使模仿,也可以通过专家鉴定分别出来。而不可抵赖,是因为每个人的笔迹都有固定特征,这些特征是很难摆脱的。

    正是这两点特性使得手写签名在日常生活中被广泛承认,比如签合同、借条等等。

    而数字签名,它的作用跟手写签名其实是一样的,用来证明某个消息或者文件是本人发出/认同的。我国在2005年就已经施行《电子签名法》,确立了电子签名(包括但不限于数字签名)的法律效力。

    那么数字签名又是靠什么保证不可伪造和不可抵赖两个特性呢?

    答案是利用公钥加密系统。常用的签名算法有

    • RSA,基于大整数分解问题
    • DSA,基于离散对数问题
    • ECDSA,属于DSA的一个变种,基于椭圆曲线上的离散对数问题

    其中RSA是实现数字签名最简单的公钥加密方法。

    RSA签名


    RSA是一个非常神奇的加密算法,它具有一个离散对数和椭圆曲线加密都没有的特性:

    既可以用公钥加密然后私钥解密,也可以用私钥加密然后公钥解密(对称性)。

    公钥加密然后私钥解密,可以用于通信中拥有公钥的一方向拥有私钥的另一方传递机密信息,不被第三方窃听。
    那么私钥加密然后公钥解密是用在什么场合呢?就是数字签名。

    因为RSA中的每一个公钥都有唯一的私钥与之对应,任一公钥只能解开对应私钥加密的内容。换句话说,其它私钥加密的内容,这个公钥是解不开的。

    这样,如果你生成了一对RSA密钥,你把公钥公布出去,并告诉全世界人这个公钥是你的。之后你只要在发送的消息,比如“123456”,后面加上用私钥加密过的密文,其他人拿公钥解密,看解密得到的内容是不是“123456”就可以知道这个“123456”是不是你发的。

    其他人因为没有对应的私钥,所以没法生成公钥可以解密的密文,所以是不可伪造的。
    又因为公钥对应的私钥只有一个,所以只要能成功解密,那么发消息的一定是你,不会是其他人,所以是不可抵赖的。

    当然,在数字签名的过程中,我们不需要对“123456”保密,所以加密、解密这样的名词在这个场景中并不准确,用签名解签会更合适。

    实际应用中,由于直接对原消息进行签名有安全性问题,而且原消息往往比较大,直接使用RSA算法进行签名速度会比较慢,所以我们一般对消息计算其摘要(使用SHA-256等安全的摘要算法),然后对摘要进行签名。只要使用的摘要算法是安全的(MD5、SHA-1已经不安全了),那么这种方式的数字签名就是安全的。

    一个具体的RSA签名过程如下:

    1. 小明对外发布公钥,并声明对应的私钥在自己手上
    2. 小明对消息M计算摘要,得到摘要D
    3. 小明使用私钥对D进行签名,得到签名S
    4. 将M和S一起发送出去

    验证过程如下:

    1. 接收者首先对M使用跟小明一样的摘要算法计算摘要,得到D
    2. 使用小明公钥对S进行解签,得到D’
    3. 如果D和D’相同,那么证明M确实是小明发出的,并且没有被篡改过

    应用


    手写签名可以用来签合同,那么数字签名可以用来干什么呢?

    网站认证

    首先最常见的用处就是用来认证一个网站的身份。
    比如我打开百度,百度是怎么保证显示在我眼前的网页就一定是百度生成的,不是其他人修改的呢?就是借助数字签名来实现的。

    用IE浏览器打开百度,点击地址栏旁边的小锁,再点击查看证书,就可以看到百度主页的数字签名证书了。所谓证书,其实是对公钥的封装,在公钥的基础上添加了诸如颁发者之类的信息。
    这里写图片描述

    “签名算法”一栏可以看到,它使用的是sha256RSA,也就是使用SHA-256计算摘要,然后使用RSA对摘要进行签名。而在“公钥”一栏则保存着该证书的“本体”,用于验证签名的RSA公钥。

    代码签名

    而除此之外,还有个地方我们经常碰到数字签名的——代码签名。

    如果Windows上的可执行程序程序来源于正规公司,那么通常它会有代码签名,用于确保其来源可靠且未被篡改。以QQ为例,它的数字签名是这样的。
    代码签名

    如果某个程序没有数字签名,那么它的安全性往往就没有保证,如果它有数字签名,但是显示“此数字前面无效”,那么这个程序要么被篡改了要么损坏了,不管哪种可能都不应该尝试执行它。

    实际上,验证数字签名并不需要我们手动去查看,如果你没有关闭Windows的UAC(用户账户控制)功能,那么你在执行任何程序的时候系统都会自动验证其签名,如果是签名有效的程序,那么弹出来的UAC对话框是蓝色或者灰色的,如果没有签名,那么会是醒目黄色的。而如果签名被阻止,则会显示红色并且不允许执行。

    但是数字签名不是万能的。事实上不管是浏览器的数字签名还是代码的数字签名,都依赖于系统或者浏览器内置的根证书,如果电脑本身已经中毒或者被入侵,那么这些根证书可以被轻易添加或者修改,这时的数字签名的安全性可以说是荡然无存了。

    即使是正常签名的软件,也不能保证发行公司不耍流氓,很多流氓软件都是由一些不知名的小公司搞出来的;或者某些小公司篡改知名软件,加入自己的代码,然后用自己的私钥进行签名,这些数字签名也都是有效的,但是我相信你不会想运行这些软件的。如果对安全性要求比较高,可以手动或者借助工具吊销那些不太安全的根证书,具体方法已经超出本文讨论范畴,读者可以自行寻找。

    比特币

    比特币是一种完全匿名的数字货币,它的身份认证是基于ECDSA。比特币的账户地址就是对公钥计算摘要得到的,向全世界公布。而确认你是账户拥有者的唯一办法就是看你有没有账户对应的私钥。对于比特币中的任意一个交易记录,只有当其中付款方的签名是有效的,它才是有效的。如果账户私钥丢失,那么你将永远地失去里面的钱;一旦被黑客盗取,里面的钱就完全归黑客所有。

    DSA


    上面说到,RSA是数字签名最简单的算法,为了做对比,大家可以感受一下DSA是如何实现的。

    • 参数生成:

      1. 选取素数q
      2. 选取素数p使得p-1是q的整数倍
      3. 随机选取小于p-1的整数h,计算g=h(p1)/q
      4. 选取小于q的正整数x作为私钥
      5. 计算y=gxmodp 得到公钥
    • 签名(其中H(M)是消息M的摘要):

      1. 对每一条消息随机生成大于1小于q的整数k
      2. 计算r=(gkmodp)modq,如果r=0,重新回到步骤1
      3. 计算s=k1(H(m)+xr)modq,如果s=0,重新回到步骤1
      4. 得到签名(r, s)
    • 验证:

      1. 计算w=s1modq
      2. 计算u1=H(m)wmodq
      3. 计算u2=rwmodq
      4. 计算v=(gu1yu2modp)modq
      5. 如果v=r,则签名有效,否则无效

    可以看到DSA过程明显要比RSA签名复杂不少,除非亲自动手去推导它的正确性,不然很难直观地感受为什么这样是可行的。

    参考文献


    Microsoft TechNet: Digital Signatures
    Wikipedia: Digital Signature Algorithm
    Wikipedia: Elliptic Curve Digital Signature Algorithm

    展开全文
  • 数字签名的原理及其应用

    千次阅读 2018-03-24 00:27:26
    概述 我们日常都亲自签过各种名,...数字签名和这个类似,是用来保证一段信息不可伪造而且使这段信息产生者不可抵赖。 例如小明和二狗互不相识,碰巧在各自家里组局打王者荣耀,小明总抢二狗的蓝爸爸,二狗怒了...

    版权申明】非商业目的注明出处可自由转载
    博文地址:https://blog.csdn.net/ShuSheng0007/article/details/79674177
    出自:shusheng007

    概述

    我们日常都亲自签过各种名,例如你和你的公司签订劳动合同时候会签上你自己的名字。那这个签名有什么用呢?对于公司来说就是将来开除你的时候可以让你不可抵赖。当然合同条款都是不允许涂改的,不然就得重写,这个用来保证合同的不可伪造性。

    数字签名和这个类似,是用来保证一段信息不可伪造而且使这段信息产生者不可抵赖
    例如小明和二狗互不相识,碰巧在各自家里组局打王者荣耀,小明总抢二狗的蓝爸爸,二狗怒了,直接问候了小名妈妈:“xx妈”。假设二狗对这个信息加了数字签名。走到哪里大家都会知道是二狗骂了小明“xx妈”,无论二狗如何狡辩说信息不是他发的,或者说他发的不是“xx妈”而是其他的。

    用途

    保证信息传输的完整性、发送者的身份认证、防止交易中的抵赖发生。

    原理

    要理解数字签名的原理,必须先要对非对称加密数字摘要这两种技术有所了解,不然无法进行。因为数字签名就是对这两种技术的实际应用。

    非对称加密

    非对称加密算法需要两个密钥:公开密钥(public key)和私有密钥(private key)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
    非对称加密算法实现机密信息交换的基本过程是:
    1 A生成一对密钥并将其公钥向B公开;
    2 B使用该密钥对机密信息进行加密后再发送给A
    3 A接到信息后用自己的私钥对加密后的信息进行解密。

    例如大名鼎鼎的RSA非对称加密算法。

    数字摘要

    数字摘要是将任意长度的消息变成固定长度的短消息。数字摘要就是采用单向Hash函数将需要加密的明文“摘要”成一串固定长度的密文,这一串密文又称为数字指纹,不同的明文摘要成密文,其结果总是不同的(严格意义上说存在相同的几率,因为有可能发生哈希碰撞),而同样的明文其摘要必定一致。

    例如MD5 SHA1SHA256SHA384SHA512 等都是摘要算法,被破解难度由左到右逐渐升高。

    签名过程

    假设AB发送信息 HB现在持有A的公钥

    签名
    A对要发送的信息H做数字签名并发送
    1.A将要发送的信息H使用摘要算法(例如SHA256)生成消息摘要M。
    2.A将M用自己的私钥加密生成数字签名 S.
    3.A将消息H与数字签名S一起发送给B
    解签名
    B接收到信息后需要解签名拿到确认拿到正确的信息
    1.BA的公钥对接到的数字签名S2解密获得了消息摘要M2
    2.B使用相同的摘要算法(例如SHA256)将收到的信息H2生成消息摘要M3
    3.B对比M2与M3,如果相同说明消息是从A发过来的,而且没有被篡改。

    整个过程如下图所示
    在这里插入图片描述
    那么以上过程是如何保证信息的不可伪造不可抵赖这两个特性的呢?

    • 保证不可伪造原理
      数字签名通过数字摘要来保证信息的不可伪造性,因为接收者B会使用相同的摘要算法提取接收到信息的消息摘要,然后和接收到的消息摘要做对比,消息摘要算法保证了不同的原始信息的消息摘要一定不同,所以只要发现消息摘要不同即可判定信息被纂改了。

    • 保证不可抵赖原理
      数字签名通过非对称加密来保证信息的不可抵赖性,因为接收者B是使用发送方A的公钥对消息摘要做的解密,而消息摘要是经过发送发方A私钥加密的,而公私钥是成对的,所以只要验证成功(说明钥匙对上了)即可判定消息就是A发的。
      当然我们的前提是假设B持有了A的公钥,那么B如何确定无疑的获得A的公钥也是一个大课题,当前大家采用了数字证书来解决这一问题,有机会再详细述说。

    是不是很神奇,数字签名被广泛应用在了HTTPS协议,区块链等技术上。

    展开全文
  • 针对电子商务或电子竞标系统中需要多人签名的系统,采用一种拥有废止机制的签名,通过把签名验证和废止成员凭证结合起来,提高签名系统的安全性。
  • 安全高效的多重签名及其区块链应用研究 摘 要 随着社会的进步和科学技术的提高数字签名逐渐被深入研究并快速发展出现了 一系列不同类型的数字签名其中多重签名作为数字签名重要的一种变形它能够将 不同签名者对同一...
  • H a s h 算法在信息安全领域中具有文件校验、 数字签名、 鉴权协议等主要应用, 其算法是将任意长度的愉入变 换成固定长度的愉出, 常见的算法有M D 4 , M D 5 , S H A - 1 等; H A S H算法在现代密码学中 有着广泛...
  • 单向散列函数&数字签名&数字证书

    千次阅读 2018-11-12 12:14:32
    iOS中常在哪些场景应用到 支付密码、验证码相关的业务场景 之前个人维护的一个数字证书模块,与密码学相关知识也紧密相关,同时数字证书在我们的业务场景中,是作为指纹支付的基础 iOS的签名机制。常常跟着网上的...

    写于前

    iOS中常在哪些场景应用到

    • 支付密码、验证码相关的业务场景
    • 之前个人维护的一个数字证书模块,与密码学相关知识也紧密相关,同时数字证书在我们的业务场景中,是作为指纹支付的基础
    • iOS的签名机制。常常跟着网上的教程一顿操作,然而却不知道原理是什么。个人觉得,知道原理后续遇到问题也更能快速定位哪个环节的问题,也能学习优秀的技术方案是如何设计的

    写一个系列

    本文概要

    • 白话厘清概念,分析优缺点(不累述算法实现)
    • 看完,能对平常接触的md5,SHA,数字签名及其应用场景,证书等问题有个清晰的脉络

    单项散列函数(One-way Hash Function

    为什么存在?

    • 解决发送的数据是否被篡改。无法解决伪装性!(是否是某人发的)

    基本概念:

    • 又称哈希函数/消息摘要函数/杂凑函数
    • 输出的散列值又称消息摘要(Message Diges,MD)/指纹(Fingerprint)
    • 输入的消息又称原像(pre-image)

    特点:

    • 计算速度快
    • 任意消息长度,计算所得固定长度的散列值
    • 消息不同,散列值也不同
    • 具有单向性,无法通过散列值反推出消息的性质

    常见的单项散列函数

    • 补充一个概念

      • 抗碰撞性:无法随机找到两条不同的消息,使得他们的散列值相同
        • 弱抗碰撞性:给定某个散列值,找到具有相同散列值的另一条消息非常困难
        • 强抗碰撞性:找到散列值相同的两条的不同消息非常困难
        • 单项散列函数必须同时具备这两者特征
      • 常用来表示这个单项散列函数目前是否安全
    • MD4,MD5

      • 产生128bit的散列值
      • 目前强抗碰撞性已被攻破,不安全
    • SHA(Secure Hash Algorithm)-安全散列算法

      • SHA-1

        • 产生160bit的散列值
        • 目前强抗碰撞性已被攻破,不安全
      • SHA-2

        • 存在6个版本,是指上是SHA-256和SHA-512的衍生,后面的数字即散列值长度
        • 目前尚未被攻破
      • SHA-3

        • 区别于SHA-1,SHA-2的全新标准

      补充:

      • SHA-1,SHA-2有不同,但还是共享相同的基本算法,SHA-2更安全主要通过增加散列长度实现
      • 随着时间推移,旧版本算法被攻破只是时间问题
      • SHA-2在2001年成为推荐标准,但软件/硬件设备供应商对SHA-1到SHA-2的迁移大部分工作在2016年和2017年后期才完成。最先吃螃蟹的人总要进行大量的工作,后来者则有更多的经验可借鉴。
      • http://www.sohu.com/a/224156626_750628
    • RIPEMD-160

      • RIPEMD-160是欧盟所设计的RIPEMD的修订版,散列值为160比特。
      • RIPEMD已经被攻破,RIPEMD-160还未被攻破。

    主要应用场景

    • 检测软件/数据是否被篡改:软件发布可以将散列值发布到网站上,使用者可判断是否被篡改
    • 口令加密:最简单的场景就是服务器存储口令的散列值(口令可以理解为日常用的密码),只有用户输入的时候是密文,后面全部以散列值处理存储

      PBE(Password Based Encryption)将口令与salt(随机数)混合计算散列值,作为加密的密钥,来抵御针对口令的字典攻击。

    • 伪随机数生成器:伪随机数需要具备"事实上不可能根据过去的随机数列预测未来的随机数列"这样的性质。为了保证不可预测性,可以利用单向散列函数的单向性。
    • 数字签名:下文会提到

    数字签名

    为什么存在?

    • 单项散列函数解决发送的数据是否被篡改。
    • 数字签名解决不可伪装性(签名不是别人写的),也不可抵赖(否认签名是自己的签名)。(白话:是你自己签名的,签的也是你自己签名)

    How

    • 用私钥来签名(私钥只有一个人有,确保这是我发的消息,只有我能发布这个签名),别人可以用公钥来验证(验签)。
    • 还记得这篇文章里提到的到底公钥私钥哪个用来加密的讨论吗。这里给出解释了

    优化

    • 可优化点:直接对要发送的消息用私钥加密,如果文件较大,那么加密过程会很耗时,且(密文+消息)发送内容也较大

    • 结合单项散列函数的特性,先获得要发送的消息的散列值,再进行加密

    • 流程图如下:

    数字签名存在的问题

    • 在数字证书的流程中,有一个前提,发送者和接受者的私钥公钥必须是配对的。如果在公私钥共享过程中,遭受中间人攻击或公钥被替换等情况如下图

    • 总结就是需要验证公钥的合法性

    • 解决方案:数字证书

    数字证书

    • 数字证书保证公钥合法性

    基本概念

    • CA(Certificate Authority):证书的签发、认证、管理
    • 又称公钥证书(Public-key Certificate,PKC)

    简单流程

    • 注册者A,生成密钥对,并将公钥以及个人信息发给CA
    • CA生成CA的密钥对,公钥公开下载。CA公钥对A的公钥进行数字签名,并包含一系列信息,生成数字证书
    • 为了保证数字证书不被篡改,CA对数字证书进行Hash计算生成Hash值(指纹),并利用CA私钥加密,并放入数字证书(这一点上面的流程图没有画出)
    • 使用者B向CA申请,获得数字证书,下载CA公钥
    • CA公钥解密证书中的指纹获得Hash值,与自己对数字证书进行Hash计算获得Hash值,两者比较,判断证书是否被篡改
    • CA公钥验证数字签名,获得合法公钥

    证书示例

    总结

    • 单项散列函数解决不被篡改
    • 数字签名私钥签名,公钥验签。保证消息不可伪装,不可否认
    • 数字证书保证公钥合法性

    参考文献

    展开全文
  • 前段时间遇到过RSA这里把前段时间学到的东西做一些总结:RSARSA是目前为止应用最为广泛的非对称加密算法。非对称加密算法简单的说就是分成公钥和私钥。加密和解密采用不同的算法实现,这样的好处是不需要像传统对称...
  • 描述了ANSI(1999)颁布的标准椭圆曲线数字签名算法和盲签名技术原理,在结合椭圆曲线密码优越性的基础上,给出了一种新的强盲签名方案,经过分析和验证,新方案具有更好的安全性;最后给出了在电子现金和电子投票系统中的...
  • 电子签名才是最终的应用目的,基于数字签名和数字证书,再辅助身份验证手段和时间戳证书服务,最终成为被法律认可的等同于纸质签名的数据文件。 了解了上面的基本概念之后,在这里汇总一下流程: 服务端向CA机构申请...
  • RSA是目前为止应用最为广泛的非对称加密算法。非对称加密算法简单的说就是分成公钥和私钥。加密和解密采用不同的算法实现,这样的好处是不需要像传统对称加密算法一样将相同算法的密钥分发给对方,从而减少密钥被...
  • 1、引导语/数字证书的应用 提到数字证书,大家首先可能想到这些。 然而其实这些也是数字证书运用很广泛的地方,可以说,数字证书是整个信息时代网络安全及其有力的一种保障。  我们可以简单的用一种很直接的方法...
  • 数字签名的全过程签名与验证

    千次阅读 2019-10-30 11:26:20
    发方将原文用哈希算法求得数字摘要,用签名私钥对数字摘要加密得数字签名,发方将原文与数字签名一起发送给接受方; 收方验证签名,即用发方公钥解密数字签名,得出数字摘要;收方将原文采用同样哈希算法...
  • 基于数字签名与 ECC的理论,将 ECC应用于电子政务安全之中。首先对电子政务的安全进行了分 析,介绍了数字签名的定义及原理,最后介绍了 ECC的原理及其在文件传输中的实现,为系统提供了较好的安 全性保证。
  • ElGamal、Schnorr数字签名方案

    千次阅读 2018-07-11 08:54:59
    数字签名方案-ElGamal、Schnorr数字签名方案 数字签名简介 特征 它必须能验证签名者、签名日期和时间 它必须能够认证被签的消息内容 签名应能由第三方仲裁,以解决争执 因此数字签名具有认证功能 攻击和...
  • 数字签名主要经过以下几个过程:信息发送者使用一单向散列函数(HASH函数)对信息生成信息摘要;信息发送者使用自己的私钥签名信息摘要;信息发送者把信息本身和已签名的信息摘要一起发送出去;信息接收者通过使用与...
  • 数字签名基本概念

    千次阅读 2016-07-31 21:21:26
    1. 概念:数字签名是一种以电子形式存在于数据信息之中的,或作为其附件或逻辑上有联系的数据,可用于辨别数据签署人的身份,并表名签署人对数据信息中包含的信息的认可技术 2. 一个完善的数字签名应该包含以下三...
  • 数字签名(代码签名)流程 出处: http://www.cnblogs.com/itech/archive/2011/07/21/2110924.html Authenticode : 这里翻译为数字认证代码。  code sign : 字面的翻译为代码签名,但是通常的我们...
  •    数字签名的操作过程需要有发方的签名数字证书的私钥及其验证公钥。具体过程如下:首先是生成被签名的电子文件(《电子签名法》中称数据电文),然后对电子文件用哈希算法做数字摘要,再对数字摘要用签名私钥做...
  • 文章目录符号及辅助算法源代码用户A私钥的生成过程签名主公钥的生成数字签名的生成签名的认证总结 符号及辅助算法 下面对在SM9算法中用到的符号及函数进行了声明 源代码 在源程序\GmSSL-master\crypto\sm9\sm9_lcl...
  • 实现数字签名

    千次阅读 2018-05-21 23:11:02
    实现数字签名 数字签名算法(DSA) 数字签名算法(DSA,Digital Signature Algorithm),是一种公开密钥算法,不能用于加密,只能用于数字签名。主要用作为接收者验证数字的完整性和数据发送者的身份,DSA算法的安全...
  • 数字签名和数字证书的原理及应用

    千次阅读 2011-08-11 15:36:08
    数字签名及其作用:   例如,A发送一段信息给B. B怎样才能确认这个信息是A发出并且在接收之前没有被第三方篡改过呢? 这就是数字签名的作用。 A可以用“接要”算法(SHA-1或MD5)对这段信息获取接要,然后再对获得...
  • 今天将给大家介绍8款不错的Windows免费数字签名软件。我们可以使用这些软件对文档进行数字签名,作为真实性的证明。文章较为详细地介绍了软件和使用过程,感兴趣的朋友一起来了解一下。
  • 数字签名与身份认证总结

    千次阅读 2018-11-19 13:41:00
    缺点:密钥需要谨慎保管,密钥更新和交换困难、多人通信密钥数量会出现爆炸性增长、不易于实现数字签名 非对称密码体制的优缺点 优点:可以适用网络的开放性要求,密钥管理相对简单;群组通信下,...
  • XML数字签名及其.NET实现

    千次阅读 2011-01-01 00:52:00
    本文介绍了数字签名的原理和XML数字签名的标准。XML数字签名适应并且利用了XML的特点,除具有其他数字签名保证数据传输的真实性、完整性和不可否认性的功能外,更加适用于因特网和XML文档。最后给出了一个用.NET框架...
  • 数字签名理论与认证应用

    千次阅读 2012-11-15 07:33:36
     为了确保数据传输的安全性,不得不采取一系列的安全技术,如加密技术、数字签名、身份认证、密钥管理、防火墙、安全协议等。其中数字签名就是实现网上交易安全的核心技术之一,它可以保证信息传输的保密性、数据...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,210
精华内容 9,284
热门标签
关键字:

数字签名及其应用