中央银行学数字货币的技术基础
中央银行学数字货币的技术基础
Prong学习记录
DCEP信息加密技术导入
信息加密技术简介
信息加密技术是利用数学或物理手段,对电子信息在传输过程中和存储体内进行保护,以防止泄漏的技术。
保密通信,计算机密钥,防复制软盘等都属于信息加密技术。通信过程中的加密主要是采用密码,在数字通信中可利用计算机采用加密法,改变负载信息的数码结构。计算机信息保护则以软件加密为主。目前世界上最流行的几种加密体制和加密算法有:RSA算法和CCEP算法等。为防止破密,加密软件还常采用硬件加密和加密软盘。
加密就是通过密码算术对数据进行转化,使之成为没有正确密钥任何人都无法读懂的报文。而这些以无法读懂的形式出现的数据一般被称为密文。为了读懂报文,密文必须重新转变为它的最初形式–明文。而含有用来以数学方式转换报文的双重密码就是密钥。在这种情况下即使一则信息被截获并阅读,这则信息也是毫无利用价值的。
而实现这种转化的算法标准,据不完全统计,到现在为止已经有近200多种。在这里,主要介绍几种重要的标准。按照国际上通行的惯例,将这近200种方法按照双方收发的密钥是否相同的标准划分为两大类:
常规算法(对称算法)
一种是常规算法(也叫私钥加密算法或对称加密算法),其特征是收信方和发信方使用相同的密钥,即加密密钥和解密密钥是相同或等价的。
比较著名的常规密码算法有:美国的DES及其各种变形,比如3DES、GDES、NewDES和DES的前身Lucifer;欧洲的IDEA;日本的FEALN、LOKI?91、Skipjack、RC4、RC5以及以代换密码和转轮密码为代表的古典密码等。
在私钥加密算法中,信息的接受者和发送者都使用相同的密钥,所以双方的密钥都处于保密的状态,因为私钥的保密性必须基于密钥的保密性,而非算法上。这在硬件上增加了私钥加密算法的安全性。但同时我们也看到这也增加了一个挑战:收发双方都必须为自己的密钥负责,这种情况在两者在地理上分离显得尤为重要。
私钥算法还面临这一个更大的困难,那就是对私钥的管理和分发十分的困难和复杂,而且所需的费用十分的庞大。比如说,一个 n 个用户的网络就需要派发 n(n-1)/2 个私钥,特别是对于一些大型的并且广域的网络来说,其管理是一个十分困难的过程,正因为这些因素从而决定了私钥算法的使用范围。
而且,私钥加密算法不支持数字签名,这对远距离的传输来说也是一个障碍。另一个影响私钥的保密性的因素是算法的复杂性。现今为止,国际上比较通行的是DES、3DES以及最近推广的AES。
常规密码的优点是有很强的保密强度,且经受住时间的检验和攻击,但其密钥必须通过安全的途径传送。因此,其密钥管理成为系统安全的重要因素。
公钥加密算法(非对称算法)
另外一种是公钥加密算法(也叫非对称加密算法)。其特征是收信方和发信方使用的密钥互不相同,而且几乎不可能从加密密钥推导解密密钥。
比较著名的公钥密码算法有:RSA、背包密码、McEliece密码、DiffeHellman、Rabin、OngFiatShamir、零知识证明的算法、椭圆曲线、EIGamal算法等等。
面对在执行过程中如何使用和分享密钥及保持其机密性等问题,1975年WhitefieldDiffe和MartiHellman提出了公开的密钥密码技术的概念,被称为Diffie-Hellman技术。从此公钥加密算法便产生了。
由于采取了公共密钥,密钥的管理和分发就变得简单多了,对于一个n个用户的网络来说,只需要2n个密钥便可达到密度。同时使得公钥加密法的保密性全部集中在及其复杂的数学问题上,它的安全性因而也得到了保证。但是在实际运用中,公共密钥加密算法并没有完全的取代私钥加密算法。其重要的原因是它的实现速度远远赶不上私钥加密算法。
非对称加密算法是一种密钥的保密方法。非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将公钥公开,需要向甲方发送信息的其他角色(乙方)使用该密钥(甲方的公钥)对机密信息进行加密后再发送给甲方;甲方再用自己私钥对加密后的信息进行解密。甲方想要回复乙方时正好相反,使用乙方的公钥对数据进行加密,同理,乙方使用自己的私钥来进行解密。
加密应用过程:
- 乙方生成一对密钥(公钥和私钥)并将公钥向其它方公开。、
- 得到该公钥的甲方使用该密钥(公钥)对机密信息进行加密后再发送给乙方。
- 乙方再用自己保存的另一把专用密钥(私钥)对加密后的信息进行解密。
在传输过程中,即使攻击者截获了传输的密文,并得到了乙的公钥,也无法破解密文,因为只有乙的私钥才能解密密文。同样,如果乙要回复加密信息给甲,那么需要甲先公布甲的公钥给乙用于加密,甲自己保存甲的私钥用于解密。
对称与非对称密钥加密比较: 非对称密钥加密解决了密钥协定与密钥交换问题,但并没有解决实际安全结构中的所有问题。对称与非对称密钥加密还有其他一些差别,各有所长。
特征 | 对称加密 | 非对称加密 |
---|---|---|
加密/解密使用的密钥 | 加密/解密使用的密钥相同 | 加密/解密使用的密钥不同 |
加密/解密的速度 | 快 | 慢 |
得到的密文长度 | 通常等于或小于明文长度 | 大于明文长度 |
密钥协定与密钥交换 | 大问题 | 没问题 |
所需密钥树与消息交换参与着个数的关系 | 大约为参与者个数的平方,因此伸缩性不好 | 等于参与者个数,因此伸缩性好 |
用法 | 主要用于加密/解密,不能用于数字签名(完整性与不可抵赖检查) | 可以用于加密/解密,和用于数字签名(完整性与不可抵赖检查) |
算法 | 类型 | 密钥说明 | 说明 |
---|---|---|---|
RSA | 非对称分组密码 | 长度可变(通常为512、1024、或者2048位) | 最流行的公钥算法。它的美国专利于2000年9月到期。可以免费使用. |
E1Gamal | 非对称分组密码 | 长度可变(通常为512、1024、或者2048位) | 不如RAS常用,但也用于一些协议,如PGP |
以https的通信建立为例,来分析非对称加密技术的使用,使用的非对称加密算法为RSA:
https例子解析:
- pClient为客户端、Server为服务端
- 第一步:服务端接收客户端的https请求
- 第二步:服务端通过非对称加密算法生成了一对公私钥(crtprivate和crtpublic)
- 第三步:服务端将crtpublic就是服务端的公钥发送给客户端
- 第四步:客户端对服务端的公钥证书进行加密
- 对服务端的公钥证书进行验证
- 验证通过后,生成随机的对称秘钥(randomkey)
- 利用公钥证书对对称秘钥进行加密
- 第五步:将生成的对称秘钥发送给服务端
- 第六步:生成加密的内容
- 用私钥对加密的内容解密
- 获得对称秘钥
- 使用对称秘钥对响应内容进行加密
- 第七步:将加密的响应内容发送给客户端
- 第八步:客户端使用对称秘钥解密响应内容
在这个例子中对对称秘钥的加密使用到了非对称加密算法生成的公私钥,其中对称秘钥对内容加密是为达到效率高的目的,使用非对称加密算法对对称秘钥进行加密是为了达到传输安全的目的。往往在实际的使用中,这两种加密算法是结合使用的。
总结:
- 非对称密钥加密要解决对称密钥加密的密钥交换问题。
- RSA是著名的非对称密钥加密协议。
- 非对称密钥加密中每个通信方要一个密钥对。
- 公钥向每个人提供,而私钥则是个人保密的。
- 数字信封结合了对称密钥加密与非对称密钥加密的好处
公钥、私钥
首先我们需要区分加密和认证这两个基本概念
- 加密是将数据资料加密,使得非法用户即使取得加密过的资料,也无法获取正确的资料内容,所以数据加密可以保护数据,防止监听攻击。其重点在于数据的安全性。
- 身份认证是用来判断某个身份的真实性,确认身份后,系统才可以依不同的身份给予不同的权限。其重点在于用户的真实性。两者的侧重点是不同的。
其次我们还要了解公钥和私钥的概念和作用
在现代密码体制中加密和解密是采用不同的密钥(公开密钥),也就是非对称密钥密码系统,每个通信方均需要两个密钥,即公钥和私钥,这两把密钥可以互为加解密。公钥是公开的,不需要保密,而私钥是由个人自己持有,并且必须妥善保管和注意保密。
公钥私钥的原则
- 一个公钥对应一个私钥。
- 密钥对中,让大家都知道的是公钥,不告诉大家,只有自己知道的,是私钥。
- 如果用其中一个密钥加密数据,则只有对应的那个密钥才可以解密。
- 如果用其中一个密钥可以进行解密数据,则该数据必然是对应的那个密钥进行的加密。
非对称密钥密码的主要应用就是公钥加密和公钥认证,而公钥加密的过程和公钥认证的过程是不一样的
使用电子邮件的方式说明一下公钥和私钥原理。使用公钥与私钥的目的就是实现安全的电子邮件,必须实现如下目的:
- 我发送给你的内容必须加密,在邮件的传输过程中不能被别人看到。
- 必须保证是我发送的邮件,不是别人冒充我的。
要达到这样的目标必须发送邮件的两人都有公钥和私钥。公钥,就是给大家用的,你可以通过电子邮件发布,可以通过网站让别人下载,公钥其实是用来加密/验章用的。私钥,就是自己的,必须非常小心保存,最好加上密码,私钥是用来解密/签章,首先就Key的所有权来说,私钥只有个人拥有。
公钥与私钥的作用是:用公钥加密的内容只能用私钥解密,用私钥加密的内容只能用公钥解密。
比如说,我要给你发送一个加密的邮件。首先,我必须拥有你的公钥,你也必须拥有我的公钥。
首先,我用你的公钥给这个邮件加密,这样就保证这个邮件不被别人看到,而且保证这个邮件在传送过程中没有被修改。你收到邮件后,用你的私钥就可以解密,就能看到内容。
其次我用我的私钥给这个邮件加密,发送到你手里后,你可以用我的公钥解密。因为私钥只有我手里有,这样就保证了这个邮件是我发送的。
当A->B资料时,A会使用B的公钥加密,这样才能确保只有B能解开,否则普罗大众都能解开加密的讯息,就是去了资料的保密性。验证方面则是使用签验章的机制,A传资料给大家时,会以自己的私钥做签章,如此所有收到讯息的人都可以用A的公钥进行验章,便可确认讯息是由A 发出来的了。
SM2国密算法
SM2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法。SM2算法和RSA算法都是公钥密码算法,SM2算法是一种更先进安全的算法,在我们国家商用密码体系中被用来替换RSA算法。该算法是我国自主设计的公钥密码算法,包括SM2-1椭圆曲线数字签名算法,SM2-2椭圆曲线密钥交换协议,SM2-3椭圆曲线公钥加密算法,分别用于实现数字签名密钥协商和数据加密等功能。SM2算法与RSA算法不同的是,SM2算法是基于椭圆曲线上点群离散对数难题,相对于RSA算法,256位的SM2密码强度已经比2048位的RSA密码强度要高。
SM2算法是基于椭圆曲线算法,所以学习SM2算法,首先学习ECC算法:
ECC算法描述
- 用户A选定一条适合加密的椭圆曲线Ep(a,b)(如:y2=x3+ax+b),并取椭圆曲线上一点,作为基点G
- 用户A选择一个私有密钥k,并生成公开密钥(公钥PB)K=kG
- 用户A将Ep(a,b)和点(公钥)K,G传给用户B④用户B接到信息后,将待传输的明文(M)编码到Ep(a,b)上一点M,并产生一个随机整数r(r< n)。加密开始
- 用户B计算点C1=M+rK;C2=rG
- 用户B将C1、C2传给用户A
- 用户A接到信息后,计算C1-kC2,结果就是点M。因为C1-kC2=M+rK-k(rG)=M+rK-r(kG)=M
- 再对点M进行解码就可以得到明文
在密码学中,描述一条Fp上的椭圆曲线,常用到六个参量:T=(p,a,b,G,n,h)
- p 、a 、b 用来确定一条椭圆曲线
- G为基点
- n为点G的阶
- h 是椭圆曲线上所有点的个数m与相除的整数部分
这几个参量取值的选择,直接影响了加密的安全性。参量值一般要求满足以下几个条件:
序号 | 参量 |
---|---|
1 | p 当然越大越安全,但越大,计算速度会变慢,200位左右可以满足一般安全要求 |
2 | p≠n×h |
3 | pt≠1 (mod n),1≤t<20 |
4 | 4a3+27b2≠0 (mod p) |
5 | n 为素数 |
6 | h≤4 |
曲线参数
SM2标准推荐使用256位素域Fp上的椭圆曲线y2=x3+ax+b,其中:
P=FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF
a=FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFC
b=28E9FA9E9D9F5E344D5A9E4BCF6509A7F39789F515AB8F92DDBCBD414D940E93
n=FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF7203DF6B21C6052B53BBF409394C74C7
Gx=32C4AE2C1F1981195F9904466A39C9948FE30BBFF2660BE1715A4589334C74C7
Gy=BC3736A2F4F6779C59BDCEE36B692153D0A9877CC62A474002DF32E52139F0A0
密钥生成算法
- Alice选择随机数dA作为私钥,其中0 < d < n
- Alice计算公钥PA=dA* G
- 输出密钥对(sk=dA,pk=PA)
数字签名算法
- 签名
- 签名者用户A的秘钥对包括其私钥dA和公钥PA=[dA]G=(xA,yA)
- 签名者用户A具有长度为entlenA比特的可辨别标识IDA
- ENTLA是由整数entlenA转换而成的两个字节
- ZA=H256(ENTLA||IDA||a||b||xG||yG||xA||yA)
- 待签名的消息为M
- 数字签名(r,s)
数字货币
数字货币的出现被视为货币形态的又一次重大革命,有望成为数字经济时代的主流通货和重要金融基础设施。根据中国人民银行法定数字货币原型系统实验,探索了二元模式下法定数字货币发行、转移、回笼闭环流程。
设计了DCEP的加密字符串表达形式、通过存款准备金等额兑换的发行回笼机制、DCEP在转移过程中的转换机制以及原型系统的总体架构、系统架构和技术架构,并在局部采用分布式账本技术基础上探讨增强其可用性的改进方法。由央行主导,在保持实物现金发行的同时发行以加密算法为基础的数字货币,即M0的一部分由数字货币构成。目标是构建一个兼具安全性与灵活性的简明、高效、符合国情的数字货币发行流通体系,所以设计过程中尤其注重技术手段、机制设计和法律法规这3个层次的协调统一。
在技术路线上,充分吸收和改造现有信息技术,确保数字货币信息基础设施的安全性与效率性。
- 数字货币系统的发行和回笼环节,主要是中央银行与商业银行之间的DCEP双向兑换过程,具有金额规模大、笔数少的批发业务类型。核心在于数字货币的确权和属主的变更以及数字货币加密字串的形成。
- 面向最终的用户应用,转移过程更主要是小额、高频、实时的零售业务特征。转移过程是将来源币作废,产生去向币的过程,主要包括:旧币验签、旧币作废、生产新币、确权登记这4步,形成原子性的事务。核心是对满足国密SM2规范要求的签名信息进行验签操作。
起源
中国人民银行(以下简称人民银行)高度重视法定数字货币的研究开发。2014 年,成立法定数字货币研究小组,开始对发行框架、关键技术、发行流通环境及相关国际经验等进行专项研究。
2016 年,成立数字货币研究所,完成法定数字货币第一代原型系统搭建。2017 年末,经国务院批准,人民银行开始组织商业机构共同开展法定数字货币(以下简称数字人民币,字母缩写按照国际使用惯例暂定为“e-CNY”)研发试验。目前,研发试验已基本完成顶层设计、功能研发、系统调试等工作,正遵循稳步、安、全可控、创新、实用的原则,选择部分有代表性的地区开展试点测试。
DCEP 本质上就是一种数字支付工具。DCEP 全称是Digital Currency Electronic Payment,DC 指的是数字货币,EP 指的电子支付,即数字货币和电子支付工具。其功能属性与纸钞完全一样,只不过是数字化形态。
国际货币基金组织IMF把央行数字货币称作CBDC,英文是“Central BankDigital Currency”,实际上描述的是同一个概念。本文中使用的CBDC 就是指通常性的央行数字货币(无国家限制),如果使用(DC/EP)则特指中国即将推出的央行数字货币。
2020年7月23日,立陶宛央行在其官方网站上正式发售数字货币LB Coin,宣告了全球首枚央行数字货币诞生。数字货币的诞生,也标志着人类货币发展历程从一般等价物、贵金属、纸币、电子货币之后,又进入了一个全新的历史阶段。
数字货币是基于密码学技术,利用复杂的加密算法所形成的网络货币统称。由于数字货币必须用到数字加密算法,所以也被称为数字加密货币(Crypto Currency)。数字货币与电子货币和虚拟货币有着本质区别。总体而言,电子货币是主权货币的电子化形态。虚拟货币没有实物形态,不由货币当局发行,本质上不是货币,而是网络服务的消费者权益凭证。从数字货币的起源以及与电子货币和虚拟货币的比较来看,数字货币具有以下特征:
- 首先,数字货币特别是基于公有区块链的数字货币,其产生与存在是由分布式记账网络体系而来(公有区块链是指,世界上任何个体或者团体都可以发送交易,且交易能够获得该区块链的有效确认,任何人都可以参与其共识过程。比特币系列的虚拟数字货币均基于公有区块链)。数字货币不同于主权货币和虚拟货币,后两者必须要有相应的实体机构进行信用背书。
- 其次,数字货币具有较高的私密性和安全性。数字货币基于区块链的分布式记账技术,不同于电子货币等需要唯一的机构记录账户信息。相关记账信息分布与所有交易主体之间,每次的交易数据就会创建一个区块。而下一个区块信息,必须通过上一个区块信息计算出来,这样由一个个彼此耦合的区块构成完整的区块链。
- 再次,数字加密货币具有去中心化特征,作为一种权益证明,代表了使用者们之间基于信任产生的内在价值,货币在持有者之间流通不需要依赖特定的机构和支付结算网络,也不需要额外支付手续费。理论上数字货币流通范围可以覆盖全球,持有者不必担心受到潜在金融制裁的影响。
通过以上分析可以看出,数字货币在一定程度上弥补了传统货币形态的缺陷,适应了数字经济的发展需求,是金融科技创新的重要领域,具有时代进步意义。对货币当局而言,发行主权数字货币不仅可以应对私人数字货币冲击和巩固本国法币地位,而且还具有显著的社会效益。
数字货币可以部分替代流通中的纸币现金,节省社会资源;数字货币可以更好地满足居民多样化的金融服务需求;数字货币去中心化特征可以规避灾难事故对支付系统稳定性的破坏;主权数字货币如果最终普及,可以为货币当局实行“零利率”或“负利率”条件下的货币政策提供技术支撑。
为适应数字货币发展的新形势,2014年,中国人民银行成立专门研究小组,正式启动法定数字货币(DCEP)的研发工作。2017年,央行又成立了数字货币研究所,并与数家商业银行联合展开研究,从数字货币方案原型、数字票据等多个维度论证实施数字货币的可行性。历时三年,完成了数字货币发行运作总体方案及相关专利技术储备。
2019年,央行在下半年工作电视会议上明确提出“要加快推进我国法定数字货币的研发进程”。2020年4月,央行进一步提出要本着“先境内后境外”“先简单封闭场景后复杂开放场景”“先零售支付场景后大型批发支付场景”原则,稳步推进DCEP测试工作。
根据央行官方披露,央行数字货币DCEP是由央行主导,在保持实物现金发行的同时发行以加密算法为基础的数字货币,即M0的一部分由数字货币构成。央行数字货币运行框架将呈现“一币、两库、三中心”格局。一币是指由央行担保并签名发行代表具体金额的加密数字串。两库是指中央银行发行库和商业银行银行库。三中心是指认证中心、登记中心和大数据分析中心。
在上述运行框架下,DCEP发行将采用二元体系实现投放与回笼,上层是央行对商业银行等参与发行的代理发行机构,下层是代理发行机构对公众,该体系不会改变流通中的货币债权债务关系,代理发行机构将向央行缴纳全额准备金,以保证DCEP不超发。在技术路线选择上,央行保持技术中性,不干预代理发行机构具体的技术路线选择。央行会设立若干技术指标门槛,确保DCEP满足高并发、安全性和稳定性的要求。在应用终端形态上,DCEP装载于数字钱包程序,采用UTXO模型的非对称加密技术,使用者可以借助类似于手机扫码或近场支付(NFC)等形式完成交易。
- 首先,通过发行DCEP逐步替代纸钞现金,可以大幅减少纸币发行过程中的人力物力成本,同时提高货币发行效率。根据2019年末全国7.7万亿元M0纸币数量,全年在纸币印制、投放、回笼等七大发行环节累计成本投入超过2700亿元。2020年初突发的公共卫生事件,也暴露出纸币流通容易成为病毒传染媒介的弊端。此外,DCEP利用特定算法进行加密,相比纸币更加难以被伪造。
- 其次,有别于一般的数字加密货币,DCEP在记账流程上将是全程单向透明。DCEP所有者标识对其他使用者和发行机构匿名,但对央行数字货币系统后台实名,可以通过系统后台与真实用户对应。因此,DCEP的交易行为各方可以完整被追溯,从而为监管部门进行反洗钱、反诈骗等提供技术支撑。在货币流通过程中,DCEP通过预设的“前瞻触发条件”,可使货币按照预期目标精准投放,从而确保货币政策更加精准高效执行。
- 再次,同其他数字加密货币相类似,DCEP存在于移动终端的数字钱包中,不必与银行账户绑定,也不需借助跨境支付结算网络,可以穿透包括地理、司法和金融主权等管理边界,在中国境外更容易获得和使用。DCEP在境外的广泛流通,有助于加快人民币国际化进程,并丰富跨境人民币支付应用场景。
数字签名
数字签名的定义
- 手写签名:传统的确认方式,如书信、签约、支付、批复等
- 在网络时代,人们通过网络支付费用、买卖股票,为了保证网上商务活动的安全,需要一个很重要的安全机制-数字签名
- 数字签名在信息安全,包括鉴别、数据完整性、抗抵赖性等方面,特别是在大型网络安全通信中的密钥分配、鉴别及电子商务系统中,具有重要作用。
数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。数字签名是非对称密钥加密技术与数字摘要技术的应用。
数字签名的文件的完整性是很容易验证的(不需要骑缝章,骑缝签名,也不需要笔迹专家),而且数字签名具有不可抵赖性(不可否认性)。
简单地说,所谓数字签名就是附加在数据单元上的一些数据,或是对数据单元所作的密码变换。这种数据或变换允许数据单元的接收者用以确认数据单元的来源和数据单元的完整性并保护数据,防止被人(例如接收者)进行伪造。它是对电子形式的消息进行签名的一种方法,一个签名消息能在一个通信网络中传输。基于公钥密码体制和私钥密码体制都可以获得数字签名,主要是基于公钥密码体制的数字签名。包括普通数字签名和特殊数字签名。
- 普通数字签名算法有RSA、ElGamal、Fiat-Shamir、Guillou-Quisquarter、Schnorr、Ong-Schnorr-Shamir数字签名算法、Des/DSA,椭圆曲线数字签名算法和有限自动机数字签名算法等。
- 特殊数字签名有盲签名、代理签名、群签名、不可否认签名、公平盲签名、门限签名、具有消息恢复功能的签名等,它与具体应用环境密切相关。
- DCEP在流转的过程中,涉及到数据的来源、验证、完整性等问题。那么,数字签名技术就起到了关键作用,可以使数据具备归属人的身份,同时来可以对数据进行归属验证;同时,利用非对称加密技术和摘要技术的结合,来保证签名数据的完整性等。
每个人都有一对“钥匙”(数字身份),其中一个只有她/他本人知道(密钥),另一个公开的(公钥)。签名的时候用密钥,验证签名的时候用公钥。又因为任何人都可以落款声称她/他就是你,因此公钥必须向接受者信任的人(身份认证机构)来注册。注册后身份认证机构给你发一数字证书。对文件签名后,你把此数字证书连同文件及签名一起发给接受者,接受者向身份认证机构求证是否真地是用你的密钥签发的文件。在通讯中使用数字签名一般具有以下特点:
- 鉴权
公钥加密系统允许任何人在发送信息时使用私钥进行加密,接收信息时使用公钥解密。当然,接收者不可能百分之百确信发送者的真实身份,而只能在密码系统未被破译的情况下才有理由确信。
鉴权的重要性在财务数据上表现得尤为突出。举个例子,假设一家银行将指令由它的分行传输到它的中央管理系统,指令的格式是(a,b),其中a是账户的账号,而b是账户的现有金额。这时一位远程客户可以先存入100元,观察传输的结果,然后接二连三的发送格式为(a,b)的指令。这种方法被称作重放攻击。 - 完整性
传输数据的双方都总希望确认消息未在传输的过程中被修改。加密使得第三方想要读取数据十分困难,然而第三方仍然能采取可行的方法在传输的过程中修改数据。一个通俗的例子就是同形攻击:回想一下,还是上面的那家银行从它的分行向它的中央管理系统发送格式为(a,b)的指令,其中a是账号,而b是账户中的金额。一个远程客户可以先存100元,然后拦截传输结果,再传输(a,b),这样他就立刻变成百万富翁了。 - 不可抵赖
在密文背景下,抵赖这个词指的是不承认与消息有关的举动(即声称消息来自第三方)。消息的接收方可以通过数字签名来防止所有后续的抵赖行为,因为接收方可以出示签名给别人看来证明信息的来源。
发送报文时,发送方用一个哈希函数从报文文本中生成报文摘要,然后用发送方的私钥对这个摘要进行加密,这个加密后的摘要将作为报文的数字签名和报文一起发送给接收方,接收方首先用与发送方一样的哈希函数从接收到的原始报文中计算出报文摘要,接着再公钥来对报文附加的数字签名进行解密,如果这两个摘要相同、那么接收方就能确认该报文是发送方的。
数字签名有两种作用:一是能确定消息确实是由发送方签名并发出来的,因为别人假冒不了发送方的签名。二是数字签名能确定消息的完整性。因为数字签名的特点是它代表了文件的特征,文件如果发生改变,数字摘要的值也将发生变化。不同的文件将得到不同的数字摘要。一次数字签名涉及到一个哈希函数、接收者的公钥、发送方的私钥。
签名流程
- 发送者对消息计算摘要值
- 发送者用私钥对摘要值进行签名得到签名值
- 发送者将原始消息和签名值一同发给接收者
验签流程
- 接收者接到消息后,拆分出消息和消息签名值A
- 接收者使用公钥对消息进行运算得到摘要值B
- 接收者对摘要值B和签名值A进行比较,如果相同表示签名验证成功,否则就是验证失败