精华内容
下载资源
问答
  • 数字签名的原理及其应用

    千次阅读 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协议,区块链等技术上。

    展开全文
  • 图解数字签名过程

    千次阅读 2018-05-27 20:58:13
    数字签名,它的作用跟手写签名其实是一样的,用来证明某个消息或者文件是本人发出/认同的,利用公钥加密系统保证不可伪造不可抵赖两个特性 使用的签名算法有: RSA,基于大整数分解问题 DSA,基于离散对数问题 ...

    数字签名,它的作用跟手写签名其实是一样的,用来证明某个消息或者文件是本人发出/认同的,利用公钥加密系统保证不可伪造不可抵赖两个特性
    使用的签名算法有:

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

    我们以RSA做简单分析,如果你生成了一对RSA密钥,你把公钥公布出去,并告诉别人这个公钥是你的。之后你只要在发送的消息后面加上用私钥加密过的密文,其他人拿公钥解密,看解密得到的内容是不是你发的内容,就可以知道这个内容是不是你发的。
    那么怎么体现两大特性呢?

    不可伪造

    其他人因为没有对应的私钥,所以没法生成公钥可以解密的密文,所以是不可伪造的。

    不可抵赖

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

    具体签名过程如下
    一个具体的RSA签名过程如下:
    1.服务器外发布公钥,并声明对应的私钥在自己手上
    2.服务器对消息M计算摘要,得到摘要D
    3.服务器使用私钥对D进行签名,得到签名S
    4.将M和S一起发送出去
    验证过程如下:
    1客户端首先对M使用跟服务器一样的摘要算法计算摘要,得到摘要D
    2.使用服务器公钥对S进行解签,得到摘要D’
    3.如果D和D’相同,那么证明M确实是服务器发出的,并且没有被篡改过
    数字签名过程图by hj

    用到的部分名词解释

    消息摘要:

    消息摘要就是将消息哈希转换成一个固定长度的值唯一的字符串,该过程不可逆,基本上做不到通过消息摘要转换成消息的。
    实际应用中,由于直接对原消息进行签名有安全性问题,而且原消息往往比较大,直接使用RSA算法进行签名速度会比较慢,所以我们一般对消息计算其摘要(使用SHA-256等安全的摘要算法),然后对摘要进行签名。只要使用的摘要算法是安全的(MD5、SHA-1已经不安全了),那么这种方式的数字签名就是安全的。

    非对称加密:

    在通信双方,如果使用非对称加密,一般遵从这样的原则:公钥加密,私钥解密。同时,一般一个密钥加密,另一个密钥就可以解密。
    因为公钥是公开的,如果用来解密,那么就很容易被不必要的人解密消息。因此,私钥也可以认为是个人身份的证明。
    如果通信双方需要互发消息,那么应该建立两套非对称加密的机制(即两对公私钥密钥对),发消息的一方使用对方的公钥进行加密,接收消息的一方使用自己的私钥解密。

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

    千次阅读 2020-12-15 09:15:05
    1.数字签名的原理 在日常生活中,签名的意义就是签完你的名后,别人可以知道这件事是你做的,而由于每个人笔迹不同,你也无法否认这个名字是你签的。同真实的签名一样,数字签名也是用来证明某条信息是本人发的,...

    1.数字签名的原理

    在日常生活中,签名的意义就是签完你的名后,别人可以知道这件事是你做的,而由于每个人笔迹不同,你也无法否认这个名字是你签的。同真实的签名一样,数字签名也是用来证明某条信息是本人发的,而且本人不可抵赖,他人不可伪造。

    通常是用非对称加密(RSA)实现数字签名,分为以下几个步骤:
    1.计算消息的摘要M
    2.发送方用自己的私钥d对M进行加密,得到S(这里叫作签名,因为M不是一个需要加密的信息,加密的目的是签名),随消息一起发出
    3.消息发送之后,接收方对消息计算摘要M,再用发送方的公钥对S解密de’da,如果S==M,则说明是发送方发的,由于其他人不知道d的值,所以其他人无法仿造这个加密,而只有发送方知道d,他也无法否认这条信息是他发的

    2.先加密还是先签名?

    在上面这个过程中,如果在传输过程,发送方想要对M加密,只让接收方知道这个信息,那他就要对M用接收方的公钥加密,那是先签名还是先加密嘞?
    1.假设先加密再签名
    这时候中间人出现了,他截取到这个信息,用发送方的公钥解密后,得到消息摘要,这时候,中间人就可以用自己的私钥对这个信息再重新签名了啊!这就是中间人攻击,接收方收到的消息是正确的,但是他却无法判断消息的发送者是谁。
    2.假设先签名再加密
    显然更安全,只有接收方能得知这个签名后的消息摘要M2,可以保证不会被篡改。

    3.应用

    1.网站认证使用数字签名
    我们访问csdn网站,那怎么知道这个网站是不是真的是csdn呢?
    在这里插入图片描述
    就是使用数字签名了,csdn将自己的公钥公开出去,并声明只有自己持有私钥,那用户就可以用公钥对签名解密,比对是否与摘要相同,来判断该网站是否为真正的csdn

    2.保证数据完整性
    软件厂商为了保证自己代码不被他人更改,会对数据计算摘要后签名。在运行时先检查是否解密后的S与当前数据的摘要相同,如果代码或数据被篡改过,那么解密后的签名显然不会与当前摘要相等。同时,其他人不知道我们的私钥,也无法修改后重新签名。

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

    实际上不止rsa一种方法实现数字签名,非对称加密中还有DSA(基于离散对数问题),ECDSA(DSA的一个变种,基于椭圆曲线上的离散对数问题)也可用于签名,但过程较rsa更为复杂,不作讨论

    展开全文
  • 本代码主要用于实现RSA数字签名算法,用java进行编程,能够完整的在eclipse上运行,具体可用于密码学的课程设计等。
  • 数字签名过程详解

    千次阅读 2020-06-07 16:21:38
    数字签名过程详解1. 数字证书的概念2. 数字签名过程3. 加密的过程4. 数字签名两大特性5. 用到的部分名词解释 1. 数字证书的概念 数字证书又叫“数字身份证”、“网络身份证”,是由证书认证中心CA发放并经认证...

    1. 数字证书的概念

    数字证书又叫“数字身份证”、“网络身份证”,是由证书认证中心CA发放并经认证中心数字签名,包含公开密钥拥有者以及公开密钥相关信息的一种电子文件,可以用来证明数字证书持有者的真实身份。数字证书的格式一般采用X.509国际标准。

    2. 数字签名的过程

    用户A将待发送的信息原文经散列函数运算生成摘要信息,并用自己的私有密钥对摘要信息进行加密,将形成的密文和原文传送给用户B。用户B接收到密文后,使用A的公开密钥验证密文,得到摘要信息,并按照约定的摘要算法对原文进行摘要运算,再将两个摘要值进行比对,一致则表明数据未被篡改。

    数字签名实现了用户的身份认证,保证了数据在传输过程中的完整性、和交易的不可否认性;但是,任何拥有发送方公开密钥的人都可以验证数字签名的正确性,因此无法保证数据的机密性

    3. 加密的过程

    加密:A首先要用B的公钥对信息原文进行加密,形成密文,发送给B;B在收到密文后用自己的私钥进行解密,将密文恢复为原文。该过程实现了信息的保密性以及对信息接收方B的认证

    由于加密和数字签名都只保证了信息在传输过程中的完整性、保密性、不可否认性和真实性的一部分,只有将两者相结合才能实现所有安全特性

    所以真正AB信息传递过程中,完整的情况如下:

    A的行为

    1、A把信息原文进行哈希运算,得到信息的数字摘要

    2、A用自己私钥,采用非对称加密算法,对数字摘要进行加密,得到数字签名

    3、A用对称算法的密钥,采用对称算法,对信息原文和数字签名和A的公钥一起加密,得到加密信息

    4、A用B的公钥,采用非对称算法,把对称密钥加密,形成信封。就像是对称密钥装到了B公钥加密的信封里面

    5、A把加密信息和数字信封一起发给B

    B的行为

    1、B收到数字信息,用自己的私钥解密信封,拿到对称密钥

    2、B用对称密钥,把加密信息解密,得到信息原文和数字签名和A的公钥

    3、B用A的公钥解密数字签名,得到数字摘要1

    4、B将原文用同样的哈希算法,得到数字摘要2

    5、将摘要1和摘要2对比。如果相等,则原文没有被修改,签名是真实的

    详细图解:
    在这里插入图片描述

    4. 数字签名两大特性

    数字签名,它的作用跟手写签名其实是一样的,用来证明某个消息或者文件是本人发出/认同的,利用公钥加密系统保证不可伪造和不可抵赖两个特性。

    不可伪造
    其他人因为没有对应的私钥,所以没法生成公钥可以解密的密文,所以是不可伪造的。

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

    5. 用到的部分名词解释

    消息摘要:

    消息摘要就是将消息哈希转换成一个固定长度的值唯一的字符串,该过程不可逆,基本上做不到通过消息摘要转换成消息的。
    实际应用中,由于直接对原消息进行签名有安全性问题,而且原消息往往比较大,直接使用RSA算法进行签名速度会比较慢,所以我们一般对消息计算其摘要(使用SHA-256等安全的摘要算法),然后对摘要进行签名。只要使用的摘要算法是安全的(MD5、SHA-1已经不安全了),那么这种方式的数字签名就是安全的。

    非对称加密:

    在通信双方,如果使用非对称加密,一般遵从这样的原则:公钥加密,私钥解密。同时,一般一个密钥加密,另一个密钥就可以解密。
    因为公钥是公开的,如果用来解密,那么就很容易被不必要的人解密消息。因此,私钥也可以认为是个人身份的证明。
    如果通信双方需要互发消息,那么应该建立两套非对称加密的机制(即两对公私钥密钥对),发消息的一方使用对方的公钥进行加密,接收消息的一方使用自己的私钥解密。

    展开全文
  • 详细介绍了区块链使用的不对称加密在数字证书数字签名应用
  • 在如今这个以电子信息技术、计算机网络...本文中,我们将介绍一种基于IC卡加密算法结合的数字签名技术在卷烟物流配送过程中经营户收货后的确认应用系统。  目前贵阳市烟草专卖局(公司)卷烟物流配送中心在卷烟送
  • 数字签名原理及其应用详解

    万次阅读 多人点赞 2018-02-22 10:35:19
    序言签名的作用无非就是证明某个文件上的内容确实是我写的/我认同的,别人不能冒充我的签名(不可伪造),我也不能否认上面的签名是我的(不可抵赖)。我们知道,手写签名之所以不能伪造,是因为每一...而数字签名,...
  • 摘要:针对当前物流行业高成本的纸质签名,本文分析数字签名的优点,以液晶显示控制芯片SED1335触摸屏控制芯片ADS7846为例,提出一种在手持式设备上实现数字签名采集的方法,给出硬件软件的实现过程。...
  • 数字签名过程

    千次阅读 2019-06-21 10:45:05
    数字签名 编辑讨论3 数字签名(又称公钥数字签名)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个...
  • 数字签名原理及其应用

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

    千次阅读 2021-06-01 09:48:34
    如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。 数字签名过程 发送报文时,发送方用一个HASH从报文文本中生成报文摘要,然后用自己的...
  • 针对当前物流行业高成本的纸质签名,本文分析数字签名的优点,以液晶显示控制芯片SED1335触摸屏控制芯片ADS7846为例,提出一种在手持式设备上实现数字签名采集的方法,给出硬件软件的实现过程
  • 上期谈了关于数字签名的原理以及作用方式,接下来我们接聊一下数字签名在使用中的具体方式以及步骤一些要关注的问题。  当然通过数字签名的第一步就是生成一对密钥对,包括一个公钥一个私钥
  • 图片理解数字签名和验签过程

    千次阅读 2018-01-26 10:39:25
    【1】数字签名是什么? 数字签名(又称公钥数字签名、电子签章)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于...
  • 数字签名过程及数字证书

    万次阅读 多人点赞 2017-09-23 13:02:46
    数字签名是什么? 作者:David Youd 翻译:阮一峰 原文网址:http://www.youdzone.com/signature.html 1. 鲍勃有两把钥匙,一把是公钥,另一把是私钥。 2. 鲍勃把公钥送给他的朋友们—-帕蒂、道格、苏珊...
  • 3.5.1 数字签名技术 数字签名技术是公钥加密算法的典型应用数字签名应用过程是数据源发送方使 用自己的私钥对数据校验或其他与数据内容有关的变量进行加密处理完成对数据的合 法签名数据接收方则利用对方的公钥...
  • 第三章 数字签名技术与应用 3.1 数字签名的基本原理 3.2 几种常用的数字签名技术 3.3 美国数字签名标准 (DSS) 3.1 数字签名的基本原理 ? 数字签名的要求 1 收方能够确认或证实发方的签名但不能伪造 2 发方发出签名的...
  • Go语言代码实现数字签名过程

    千次阅读 2018-11-23 18:12:02
    直接使用百度百科中关于数字签名应用例子,如下: 假如现在 Alice 向 Bob 传送数字信息,为了保证信息传送的保密性、真实性、完整性不可否认性,需要对传送的信息进行数字加密签名,其传送过程为: 1.Alice ...
  • 针对网络信息安全需求的特点,利用PKI(PublicKeyInfrastructure公钥基础设施)技术,以Windows2000为平台,在VisualBasic6.0开发环境下,使用加密应用程序接口CrytoAPICAPICOM,实现对信息传输过程中数据的数字签名和...
  • Android--数字签名和数字证书

    千次阅读 2017-12-08 10:18:19
    数字签名是非对称加密与数字摘要的组合应用 2. 应用场景 校验用户身份(使用私钥签名,公钥校验,只要用公钥能校验通过,则该信息一定是私钥持有者发布的)校验数据的完整性(用解密后的消息摘要跟原文的消息...
  • 目录创建数字签名创建自签名证书确定待打包应用的颁发者(Subject)使用 New-SelfSignedCertificate 命令创建证书导出证书打包应用程序使用SignTool进行签名使用SignTool确定哈希算法对APP进行签名常见错误及解决 ...
  • 散列函数和数字签名概念

    千次阅读 2018-11-17 09:58:01
     如下图,通过对消息进行散列,然后把消息散列值hashA一起发送出去,当接受者收到消息散列值后,先对消息进行散列,如果散列值hashB接收到的hashA相同,说明数据没有被更改过,从而保证数据的完整性。...
  • 本文将详细介绍什么是数字签名,并采用Signtool工具对EXE文件进行签名,后续深入分析数字签名的格式及PE病毒内容。这些基础性知识不仅系统安全相关,同样与我们身边常用的软件、文档、操作系统紧密联系,希望这些...
  • 数字签名在OpenType字库中的研究与应用,赵青,唐英敏,介绍了数字签名的方法和过程,分析了OpenType矢量字库的表结构数字签名相关的表的内容。结合数字证书技术,应用于OpenType矢量字��
  • 证书(Certificate,也称public-key certificate)是用某种签名算法对某些内容(比如公钥)进行数字签名后得到的、可以用来当成信任关系中介的数字凭证。证书发行机构通过发行证书 告知证书使用者或实体其公钥(public-...
  • 本文从数字签名的意义出发,详细介绍了数字签名中涉及到的内容与算法,并自行结合进行改进。  引言  RSA密码系统是较早提出的一种公开钥密码系统。1978年,美国麻省理工学院(MIT)的Rivest,ShamirAdleman在题为...
  • 数字签名过程

    千次阅读 2015-02-25 16:55:13
    1,用户A将明文通过hash运算(散列)生成数字...2,用户A将明文+数字签名1+A用户的公钥(证书),准备将这些信息发到B用户,但是这个过程中,用户A明文是不安全的是可见的,我们需要对这三个文件进行加密。 3,用户A

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 72,267
精华内容 28,906
关键字:

数字签名的过程和应用