签名的作用电脑吗_电脑上签名
本文主要是简单介绍了常见的加密类型、各自的运用场景、为什么需要数字签名和数字证书、HTTPS涉及到的加密流程等。这里主要从使用者的角度出发,对算法本身不做过多介绍。
对称/非对称加密均属于 可逆加密,可以通过密钥将密文还原为明文 。
有时候,我们希望明文一旦加密后,任何人(包括自己)都无法通过密文逆推回明文,不可逆加密就是为了满足这种需求。
不可逆加密主要通过 hash算法实现:即对目标数据生成一段特定长度hash值 ;无论你的数据是1KB、1MB、1GB,都是生成特定长度的一个Hash值(比如128bit)。这里大家应该能感受到一点 不可逆 的味道,加密后128bit的hash值显然无法还原出1个G甚至更大的不规则数据的, hash可以看做是原来内容的一个摘要 。
常见算法:
小明给小红写信:
经过九转十八弯后,信的内容有可能:1. 被窥视 2. 被篡改(冒充小明发送消息) :
小红先 生成对称加密的密钥key1 ,然后通过一个安全的渠道交予小明。
传输数据时,小明 使用key1加密 ,而小红收到后再 使用key1解密 。
这时候 中间者既看不到原来的内容,也没办法篡改 (因为没有密钥):
对称加密实现简单,性能优秀 ,算法本身安全级别高。然而对 密钥的管理 却是个很头疼的问题:一旦密钥交到对方手里,对方对密钥的保管能力 我方是没办法控制 的,一旦对方泄露的话,加密就形同虚设了。
相对而言,非对称加密的公钥就没有这个忧虑,因为 公钥 的设计就是为了 可以公开的 ,尽管对方泄露,我方也不会有任何损失。
小红生成一对公私钥,自己持有私钥(pri_key1),将公钥(pub_key1)交予小明。
传输数据时,小明使用 公钥加密 ,小红使用 私钥解密 。
因为 中间者没有私钥,公钥加密的内容是无法获取的 。此时达到了 防窥视 的效果:
然而因为 公钥是可以公开的 ,如果 中间者知晓公钥 的话,尽管没有办法看到原来的内容,却 可以冒充小明发送消息 :
这时小红在想,如果小明发送消息时,能带上 只有他自己才能生成 的数据(字符串),我就能 验证是不是小明发的真实消息 了。
通常这个 能证实身份的数据(字符串) 被称之为 数字签名(Signature)
小明再生成一对公私钥 ,自己持有私钥(pri_key2),将公钥交予小红(pub_key2)。
当小明传输数据时(可能很大),除了公钥加密明文之外,还要带上签名:(1) 对明文做一个hash摘要 (2)对摘要进行私钥加密,加密结果即签名(传输内容=内容密文+签名)
小红收到后:(1) 解密签名获取hash (2)解密内容密文,对解密后的明文进行hash;如果两个hash一致,说明验签通过。
尽管中间者修改了传输内容,但因为签名无法冒认(没有私钥),小红验签失败,自然不会认可这份数据:
通常 非对称加密要做到防窥视和防篡改,需要有两对公私钥 :对方的公钥用于内容加密,自己的私钥用于签名(让对方验证身份)。
因为HTTP协议明文通信的安全问题,引入了HTTPS:通过建立一个安全通道(连接),来保证数据传输的安全。
服务器是 没办法直接将密钥传输到浏览器的 ,因为在 安全连接建立之前,所有通信内容都是明文的 ,中间者可窥视到密钥信息。
或许这时你想到了非对称加密,因为公钥是不怕公开的:
然而在第2步, 中间者可以截取服务器公钥,并替换成了自己的公钥 ,此时加密就没意义了:
为了 防止公钥被冒,数字证书(digital certificate )便诞生了 。
当服务器需要告诉浏览器公钥时,并不是简单地返回公钥,而是响应 包含公钥信息在内的数字证书 。
证书主要包含以下内容:
浏览器通过 颁发机构的公钥进行解密验签 ,验签通过即说明证书的真实性,可以放心取 证书拥有者的公钥 了。( 常用CA机构的公钥都已经植入到浏览器里面 )
数字证书只做一件事: 保证 服务器响应的 公钥是真实的 。
以上保证了 [浏览器?服务器] 是加密的,然而 [服务器?浏览器] 却没有(上图第4步);另外一个是 性能问题 ,如果所有数据都使用非对称加密的话,会消耗较多的服务器,通信速度也会受到较大影响。
HTTPS巧妙地结合了非对称加密和对称加密,在保证双方通信安全的前提下,尽量提升性能。
HTTPS(SSL/TLS)期望 建立安全连接后,通信均使用对称加密 。
建立安全连接的任务就是让 浏览器-服务器协商出本次连接使用的对称加密的算法和密钥 ;协商过程中会使用到非对称加密和数字证书。
特别注意的是:协商的密钥必须是不容易猜到(足够随机的):
其中比较核心的是随机数r3(pre-master secret),因为之前的r1、r2都是明文传输的, 只有r3是加密传输 的。至于为什么需要三个随机数,可以参考:
以上是一个比较简单的HTTPS流程,详细的可以参考文末的引用。
参考资料:
[1] 数字证书应用综合揭秘
[2] SSL/TLS协议运行机制的概述
[3] 图解SSL/TLS协议
[4] 《图解HTTP》
电子签名是指数据电文中以电子形式所含、所附用于识别签名人身份并表明签名人认可其中内容的数据。
通俗点说,电子签名就是通过密码技术对电子文档的电子形式的签名,并非是书面签名的数字图像化,它类似于手写签名或印章,也可以说它就是电子印章。电子签名的用途:在电子版的中秋贺卡,结婚请帖,建筑合同上签名。
/iknow-pic.cdn.bcebos/0b7b02087bf40ad1932fd6e4582c11dfa8ecceea"target="_blank"title=""class="ikqb_img_alink">/iknow-pic.cdn.bcebos/0b7b02087bf40ad1932fd6e4582c11dfa8ecceea?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto"esrc="s://iknow-pic.cdn.bcebos/0b7b02087bf40ad1932fd6e4582c11dfa8ecceea"/>
从电子签名的定义中,可以看出电子签名的两个基本功能:
(1)识别签名人
(2)表明签名人对内容的认可
法律上在定义电子签名时充分考虑了技术中立性,关于电子签名的规定是根据签名的基本功能析取出来的,认为凡是满足签名基本功能的电子技术手段,均可认为是电子签名。
由电子签名和数字签名的定义可以看出,二者是不同的:电子签名是从法律的角度提出的,是技术中立的,任何满足签名基本功能的电子技术手段,都可称为电子签名;数字签名是从技术的角度提出的,是需要使用密码技术的,主要目的是确认数据单元来源和数据单元的完整性。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。