非对称加密、数据加密、数据完整性、数字签名、证书

安全传输要素

  • 机密性
  • 完整性
  • 身份验证 / 操作不可否认

公钥、私钥

  • 加密密钥和解密密钥不一致
  • 私钥仅自己保留,公钥提供给他人
  • 公钥私钥互为加解密关系
  • 公钥和私钥不可相互逆推

加密传输、数据完整性、数字签名

加密传输

​ 公私钥加密传输过程中,假设 A 要将信息传递给 B,A 使用 B 的公钥将数据 data 加密为数据 data1,并将 data1 发送给 B。只有用 B 的私钥才可以解密 data1,获取原数据 data,并且 B 的私钥只有 B 拥有,因此可以完成加密传输功能,且不会像对称加密那样再协商密钥期间会泄露密钥。

非对称加密、数据加密、数据完整性、数字签名、证书_第1张图片

存在问题:B 的公钥任何人都可以获取。若存在中间人截获 data1,将伪造的信息使用 B 的公钥加密成伪造的 data1,发送给 B,B 无法区分此消息是否真正来源于 A。

数据的完整性、身份认证

​ 为了保证消息的完整性和进行身份验证,加入了 hash 和数字签名。

哈希(hash)散列

特点

  • 输入数据的任意微小变化都会导致输出结果的巨大变化
  • 输出长度固定,无论输入数据的长度是多少,输出结果的长度都是固定的
  • 哈希算法是*单向的,即从哈希值无法推导出原始输入数据
  • 哈希算法的计算速度通常很快

数字签名

使用自己的私钥对数据进行加密,其他人只能用相对应的公钥进行解密。而此私钥只有自己拥有,其他人无法伪造,当别人可以成功用你的公钥对密文进行解密时,说明数据就是你加密的,从而实现了数字签名(身份认证)的效果。

完整过程

​ 如果对整个报文进行签名,也就是对整个报文用私钥进行加密,由于非对称密钥系统下,计算比较繁重,性能不高,并且计算结果太长。最终传输数据 data1+使用私钥加密的data1 过于臃肿,可以先对报文进行 hash 计算,使用私钥加密 hash 值。

非对称加密、数据加密、数据完整性、数字签名、证书_第2张图片

A 将数据传递给 B

  1. 使用 B 的公钥将数据 data 加密为 data1
  2. 使用 hash 函数将 data1 散列为 hash 值
  3. 使用 A 的私钥对 hash 值进行签名(加密)
  4. 将 data1 和 A 对 hash 的签名发送给 B

B 接收到内容后

  1. 使用 A 的公钥解密出 hash 值
  2. 使用同样的 hash 算法加密 data1
  3. 验证步骤 1 和步骤 2 的结果是否相同,如果相同则证明了数据的完整性,未被篡改
  4. 使用 B 的私钥对 data1 解密出原数据

此流程实现了

  • 数据的加密传输:

    假如中间人截获了 A 发送给 B 的内容,中间人没有 B 的私钥,无法解密数据 data1。

    中间人使用 A 的公钥解密出 data1 的 hash 值,由于 hash 是单向的,无法逆推出 data1

    所以中间人无法获取数据的内容

  • 防止伪造,保证数据的完整性

    假如中间人对 data1 修改或者将 data1 替换为自己像要修改的数据,并用 B 的公钥加密伪造成假的 data1,对 data1 进行 hash。但中间人没有 A 的私钥,无法对 hash 值进行签名。当 B 使用 A 的公钥进行解密时就露馅了

证书

  • 目的:保证公钥的合法性和正确性,保证公钥传输过程不会被修改篡改

  • 证书需要找权威机构申请(政府部门),没办法互联网上申请,只能线下申请

  • 证书中包含了公钥信息,获取公钥可向权威部门查询证书

  • 权威机构使用私钥加密证书,浏览器自带权威机构的公钥证书

  • 浏览器显示不安全连接是因为没有对应的公钥证书

你可能感兴趣的:(安全,web安全,笔记,网络安全)