安全加密认证基础知识

安全概述

在典型的场景中,安全主要用于解决4类需求:

  • 保密(Security/Confidentiality)
  • 鉴别/认证(Authentication)
  • 完整性(Integrity)
  • 不可否认性(non-repudiation)

对称加密概述

密钥:分为加密密钥和解密密钥
明文:没有进行加密,能够直接代表原文含义的信息
密文:经过加密处理之后,隐藏原文含义的信息
加密:将明文转换成密文的实施过程
解密:将密文转换成明文的实施过程
Mark-Down

对称还是非对称,只是K与K’是否相等

加密的方式

  • 置换加密
  • 转置加密
  • 乘积加密
    置换加密:原文的字母替换成一个另一个字母, 如:原文:abc 密文:xyz
    转置加密:字母还是那些字母,位置交换,如:abc 密文:cab
    乘积加密:置换加密和转置加密的乘积:如:abc 密文:zxy

非对称加密(公钥密码)概述

公钥和密钥都有一个产生,公钥公开,私钥保密。
公开密钥的算法的最重要两大数学基础:

  • 建立在分解大数的困难度
  • 建立在以大素数为模来计算离散对数的困难度

RSA

建立在分解大数的困难度
公钥/私钥长度 至少1024bit

密钥交换概述

对称加密的特点

  • 高效
  • 密钥交换的问题
  • 不如RSA的加密安全程度高,但是当选择256bit的AES,仍然能够胜任绝大多数的安全领域

非对称加密的特点

  • 安全性足够高
  • 没有密钥交换的问题
  • 效率低,对于大数据加密很慢

实际的保密会话应用场景

  • 基于高效的对称加密算法对会话进行加密(AES,256Bit Shared Key)
  • 会话密钥实时产生且周期性变化
  • 基于其他足够安全的方式进行会话密钥的传输和交换

利用公钥密码来交换会话密钥

  • 实时随机的会话密钥产生
  • 使用对端的公钥对产生的会话密钥加密并传递给对端
  • 对端使用私钥解密获取会话密钥
  • 双方开始基于共享多线程会话密钥进行对称加密的保密会话同性

Diffie-Hellman密钥交换协议

  • 基于以大素数为模计算离散对数的困难度
  • 双方各自选定Key,然后以一定算法变换(使得key不以明文传输)后传输给对方
  • 双方利用对方交换来的数据和自己选定的key做变换,获得一个一致的结果,作为会话密钥

Hash算法

Hash(散列)函数(算法)的定义是:变长的输入变换成定长的输出。
常见的Hash算法:MD5(128bit) 、 SHA1(160bit)
Hash的特点:

  • 易变性:即便原始信息发生1bit的变化,Hash的输出将会有不可预知的巨大变化
  • 不可逆:通过hash结果构造出满足的输入信息是不可能的或者及其困难的。
    实例:
    *文件下载时的MD5
  • 消息传送时尾部额外传MD
  • CRC校验的作用和不足
  • MD检验消息恶劣环境传输的完整性和未受损坏
  • 应用程序中对于核心文件/数据库读写的鲁棒性保护,防止掉电和Crash

HMAC (Hash-based Message Authentication Code)

遇到的问题:
直接尾部附带消息摘要的问题(篡改内容的同时篡改摘要)
直接对密码做Hash传输的认证的问题(重放攻击)
HMAC如何解决这个问题:
HMAC就是使用Key对原始消息变换后再进行HASH

电子签名

RSA利用私钥签名

HASH+公钥密码术:成就电子签名

  • RSA的低效率特性,导致即便是签名也不适合直接对原始信息进行签名
  • 利用HASH先完成消息摘要和完整性鉴别的作用
  • 而后对简单的消息摘要进行基于公钥密码术的签名
  • 签名一般附着于原始消息尾部或者头部一起发送

数字证书和PKI

公钥作为一个字段存储于数字证书中
证书的交换和传输即可传输/交换公钥
利用签名来保护数字证书本身
数字时代的信任关系: 一个受信任的证书列表

证书链和PKI

人的信任链: 孔子->孔子的徒弟->孔子徒弟的徒弟
数字时代的信任链:证书链
证书签名的不同点:根证书自签名,非根证书父签名
证书的限制:

  • 约束
  • 用途
  • 有效期

基于可信任证书的认证方式被广泛的应用在现代安全领域,比如:WIFI、HTTPS
在HTTPS中,典型的Client对Server的认证和鉴别基于可信任列表