密码学(下)

非对称加密

1.对称加密的弊端

  • 密钥分发困难,可以结合非对称加密分发密钥,然后用对称加密实现大数据加密

2.RSA-非对称加密

  • x509:密钥对保存的证书规范
  • pem:编码规范
    • base64-将数据编码成可见字符
    • A-Z,a-z,0-9,+,/,=(填充)
    • 一共64位不同字符进行编码转换

2.1.ASN.1抽象语法标记

  • 是一种独立于计算机架构和语言的 描述数据结构的 语法标记。
  • 编码规则有:BER、CER、DER、PER 等
  • DER:- 对数据编码 – 二进制编码

2.2生成私钥步骤

  • 使用rsa中的GenerateKey方法生成私钥
  • 通过x509标准将得到的rsa私钥序列化为 ASN.1 的 DER 编码字符串
  • 组织一个pem.Block块,保存私钥
  • 通过pem将组织好的块编码, 并写入磁盘文件中

2.3生成公钥步骤

  • 从得到的私钥对象中将公钥信息取出
  • 通过x509标准将得到 的rsa公钥序列化为 ASN.1 的 DER 编码字符串
  • 组织一个pem.Block块,保存公钥
  • 通过pem将组织好的块编码 并写入磁盘文件

3.ECC椭圆曲线加密

  • 用go语言生成密钥对的流程跟RSA类似

  • 数学原理 :按照标准,一共有5种素域上的椭圆曲线:P-192,P224,P256,P384,P512

  • 不管是RSA还是ECC或者其它,公钥加密算法都是依赖于某个正向计算很简单(多项式时间复杂度),而 逆向计算很难(指数级时间复杂度)的数学问题。

  • 椭圆曲线依赖的数学难题是: k为正整数,P是椭圆曲线上的点(称为基点), k**P=Q , 已知Q和P,很难计算出k,(这里的*(*)不是数学里面的乘法符号)

消息认证码的使用步骤(hash防篡改)

1.前提条件

  • 发送端和接收端,必须持有同一个共享密钥。
  • 发送端和接收端,必须使用同一个散列函数。

2.流程:

  • 发送者:
    1. 将原始消息,生成散列值
    2. 引入 共享密钥,得到 MAC值
    3. ((原始消息)结合 key)* 散列函数 = MAC值
  • 校验者:
    1. 接收发送者发送的 原始消息、MAC值
    2. 使用原始消息、共享密钥 的到 新的MAC值
    3. 比对新的MAC 值与 发送者发送的 MAC

3.消息认证码 与 单向散列函数比较

  • 单向散列函数:原始消息 – 散列函数 – 散列值
  • 消息认证码:原始消息+key --> 散列函数 --> MAC值

4.弊端

  • 密钥分发困难
  • 无法引入第三方公证
  • 不能防止反悔

5.改良————>数字签名

数字签名(利用椭圆曲线生成密钥对进行签名)

1.流程

  • 签名
    • 发送者 将 消息 生成散列值
    • 使用 私钥 对散列值 “加密” --> 签名
    • 发送 原始消息、签名
  • 验证
    • 接收 原始消息、签名
    • 将 原始消息 生成散列值
    • 将 接收的签名 公钥 解密 --> 散列值
    • 比对

2.无法解决的问题:

  • 当用户在一开始发送公钥给其他人的时候被拦截,盗取方把公钥也篡改了,发送完全假的数据给接收方。

3.数字签名改良————>加入证书CA

证书

1.生成证书和使用流程

  • Bob生成密钥对
  • Bob在认证机构Trent注册自己的公钥
  • 认证机构Trent用自己的私钥对Bob的公钥施加数字签名并生成证书
  • Alice得到带有认证机构Trent的数字签名的Bob的公钥(证书)
  • Alice使用认证机构Trent的公钥验证数字签名,确认Bob的公钥的合法性
  • Alice用Bob的公钥加密消息并发送给Bob
  • Bob用自己的私钥解密密文得到Alice的消息

2.公钥基础设施 - PKI

  • PKI只是一个总称,而并非指某一个单独的规范或规格。
  • PKI组成的要素:
    • 用户
      • 申请证书的人:
        • 生成密钥对, 也可以委托证书颁发机构(可选)
        • 下载公钥证书,部署
        • 发送给客户端
        • 注销证书,当发现私钥泄露、丢失
      • 接收证书的人:
        • 首次访问 web服务器, ssl握手过程中,获取 公钥证书
        • 校验证书的可信度。按照CA证书信任链 去上级颁发机构,用他的公钥验证。
    • CA认证机构:
      • 可以代为生成密钥对(可选)。将私钥发送回给用户。
      • 对用户信息进行审核
      • 将公钥用自己的 私钥签名 。 得到证书。 —— 颁发证书
      • 吊销证书
    • 仓库
      • 存储证书的 数据库
      • 保存吊销证书的 序列号

3.SSL/TLS

  • SSL:安全套接字层,网络传输中的加密协议,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取。
  • TLS:传输层安全协议,用于两个应用程序之间提供保密性和数据完整性。
    • 它建立在SSL 3.0协议规范之上,是SSL 3.0的后续版本,可以理解为SSL 3.1
  • SSL/TLS协议提供的服务主要有:
    1. 认证用户和服务器,确保数据发送到正确的客户机和服务器;—>认证CA证书
    2. 加密数据以防止数据中途被窃取;---->加密算法
    3. 维护数据的完整性,确保数据在传输过程中不被改变。---->hash防篡改
PS:可以使用openssl生成自签名证书
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值