网络安全 -------- 加解密

Crypto

1. 常见的加密方式

  • 不可逆

    • 单项散列函数:MD5、SHA 等
  • 可逆

    • 对称加密:DES、3DES、AES 等
    • 非对称加密:RSA 等
  • 单项散列函数(也被称为:消息摘要、哈希函数)

    • 可以根据消息内容计算出散列值

    • 散列值的长度与消息长度无关,无论消息是 1bit、10m、100G,单项散列函数都会计算出固定长度的散列值

    • 根据任意长度,计算出固定长度的散列值

    • 计算速度快

    • 消息不通,散列值不通

    • 输出的散列值也被称为:消息摘要,指纹

    • 常见的几种单项散列函数

      • md4、md5

        • 产生128bit的散列值,MD 就是 Message Digest (消息摘要)的缩写,目前已经不安全
      • SHA-1

        产生 160bit 的散列值,目前已经不安全

      • SHA-2

        SHA-256、SHA-384、SHA-512,散列值长度分别是 256、384、512 bit

      • SHA-3 全新标准

    • 应用场景

      • 通过单项散列函数,将文件生成一个散列值,如果散列值相等就说明文件内容没有变化。比如下载一个软件时,会有一个 md5 文件,可以将下载的软件生成 md5,然后对比下载下来的与自己本地生成的,相等则下载的软件是完整的
      • 输入密码给服务器时,将密码通过散列函数加密后发给服务器,服务器数据库存的密码也是散列值,服务器通过对比散列值是否相等判断密码是否正确(密码丢失给时,点击忘记密码后,通过验证后直接修改密码,并不能返回旧密码)

2. 加解密

将明文加密生成密文,必须通过密钥才能解密,双方协商好使用什么加密算法

2.1 对称加密(Symmetric Cryptograp)

  • 概念:加密用的密钥与解密用的密钥是相同的
  • 特点:简单、加密速度快
  • 常见对称加密算法
    • AES
    • DES
  • 缺点:不安全(密钥配送问题)
    • 我把加过密的内容发送给了 A,A 必须要有我使用的密钥才可以,因此必须将密钥也发给 A,此时如果有人窃听,拿到了密文、密钥,就能解密,双方通信的安全得不到保障
  • 使用对称加密时,一定会遇到密钥配送问题
    • 解决:事先共享,密钥不要走网络
    • 非对称加密

2.2 非对称加密(Asymmetric Cryptography)

  • 概念:加密与解密用的密钥不同

  • 特点:安全

  • 缺点:复杂、加解密速度慢

  • 密钥

    • 公钥:加密密钥,网络传播给消息发送者

    • 私钥:解密密钥,将消息发送者通过公钥加密过的消息解密为明文,不可在网络上传播

    • 公钥与私钥是一一对应的,不能单独生成

    • 由公钥加密的密文,必须使用该公钥对应的私钥才能解密

2.3 混合密码系统

  • 概念:将对称加密与非对称加密的优势相结合的方法
  • 优点:解决了非对称加密速度慢,对称加密的密钥配送问题
  • 加密策略
    • 为本次通信生成一个对称加密的密钥,将明文进行非对称加密,然后将对称加密的密钥进行非对称加密(对称加密的密钥所占字节远小于明文),然后将加密后的密钥与密文结合在一起发送给对方
    • 拿到两部分合在一起的密文后,使用私钥解开使用公钥加密的对称加密的密钥,得到密钥后,通过密钥解开密文

3. 数字签名

  • 解决社么问题?

    • A 给 B 发消息,A 发的内容可能被篡改、或者有人伪装成 A 发消息、或者就是 A 发的,但是 A 不承认
    • 如何确定这段消息的真实性?如何识别篡改、伪装、否认?
  • 解决方案

    • 数字签名
  • 应用场景:

    • 不是为了保证机密性,是为了能够识别内容有没有被篡改
  • 数字签名技术中,有两种行为

    • 生成签名(消息发送者完成,对消息散列值进行签名)
    • 验证签名(消息接收者完成)
  • 发送方将文件通过 单项散列函数 得到一份 128 bit 的摘要,这份摘要相当于该文件的 ”指纹“,能够唯一地识别文件。(只要文件发生改动,经过单项散列函数处理后得到地摘要都会不一样,所以,文件和文件的摘要具有很强的对应关系)

  • 然后发送方使用自己的私钥将单项散列函数生成的摘要进行加密,得到一份加密摘要

  • 然后发送方将文件、加密的摘要发送给接收方

  • 接收方接收后,使用发送方的公钥,将加密的摘要解开,得到 128 bit 的摘要,然后将文件进行单项散列函数,得到摘要,然后与解密出来的摘要进行对比,相等则文件完整。不相等,接收到的文件或者加密的摘要可能被篡改。

  • 报文鉴别:消息接收者可以使用收到的公钥对加密的摘要进行解密,从而核实消息发送者对文件的签名

  • 报文的完整性:消息接收者通过对比摘要判断消息是否完整

  • 消息发送人不可否认:只有发送者拥有私钥,并能使用私钥产生 ”加密的摘要“,这样发送者就不能否认自己发送的消息

4. 证书(Certificate)

​ 只要涉及到将公钥分享出去,就避免不了中间人攻击。

  • 解决的问题:通过证书的方式,让消息发送者确定了公钥确实是消息接收者的
  • 消息接收者将公钥发给权威机构(CA),CA 将公钥进行签名,然后将签名、接收者公钥等信息打包成证书发给消息发送者
  • 消息发送者通过 CA 公钥解开签名得到公钥,然后将该公钥与证书中的公钥进行比较,相等证明该公钥确实是接收方的公钥

你可能感兴趣的:(计算机网络,web安全,服务器,网络)