加密类型及相关算法

加密算法与SSL及创建私有CA

标签(空格分隔): Linux 运维 加密解密 算法


三个维度验证数据

  • 机密性: 其安全依赖算法与密钥
  • 完整性: 单向加密保证
  • 身份验证: 也称来源合法性 私钥加密公钥解密保证

加密算法

对称加密: 加密与解密都通过同一种转换规则(即密钥).保证了数据的机密性 (DES 56位 3DES AES Blowfish)示例如下:

 加密过程: plaintext --> 密钥 --> ciphertext
 解密过程: ciphertext --> 密钥 --> plaintext

单向加密: 提取数据特征码(即16进制的指纹).保证了数据的完整性 (MD4 MD5 SHA1 SHA192 SHA256 SHA384 CRC-32)示例如下:

A: plaintext:footprint --> B

单向加密的几个特性:

  • 输入一样,输出必然相同
  • 雪崩效应,输入的微小改变,将会引起结果的巨大改变
  • 定长输出,无论原始数据是多大,结果大小都是相同的
  • 不可逆,无法根据特征码还原原来的数据

Diffie-Hellman协议 密钥交换(协商生成密码)(但无法解决身份验证)

A --> B
p,g (大素数,生成数)都是公开的
A:x (A私有)
B:y (B私有)
A:  g^x%p --发送--> B
B:  g^y%p --发送--> A

A得到 (g^y%p),然后计算: (g^y%p)^x = g^xy%p
B得到 (g^x%p),然后计算: (g^x%p)^y = g^xy%p(即密钥)   

公钥加密(也称非对称加密算法)RSA DSA ELGamla

密钥对:公钥 私钥
密钥对:公钥(由私钥生成)/ 私钥(非常长)

  • 发送方用自己的私钥加密数据,可以实现身份验证(即数据来源合法性)。
  • 发送方用对方的公钥加密数据,可以实现数据的机密(安全)性。
    公钥加密使用场景因为公钥加密解密时速度太慢所以很少用来加密数据,主要只用其保证数据的机密性即身份验证。
加密类型及相关算法_第1张图片
公钥加密过程

如上图,数据的完整性与来源合法性都得到了保证,但不能保证文件的机密性.但此图的基础是bob需要得到Alice的公钥,而Alice的公钥又需要通过网络传输给bob,如何解决这个鸡生蛋蛋生鸡的问题?这又引入了第三方机构(发证)来实现了.如现实生活中公安局给你发身份证,民证局给你发结婚/离婚证等一样.

最佳(安全)数据传输方式:

由于非对称加密(密钥对)只做身份验证,那数据的机密性如何解决呢?方式如下(假设A传数据data给B)
1.A借助于第三方机构的公证(如现实中的公安局等具有公信力的机构)将自己的公钥发送给这个机构。这个发证机关也有自己的密钥对,会用其私钥对A的公钥做加密以生成一个完整证书。 然后A将“公证”过的公钥发送给B,B用公证机关的公钥解密即可确定A发送过来的公钥是否有问题。反之亦然,B也通过相同的方式拿到A的公钥。双方都拿到对方的公钥的同时通过ike协议生成对称密钥(dcmy)
2.A用单向加密算法给其生成的数据data加密生成特征码(tzm)。数据完整性验证
3.A用自己的私钥给这特征码加密这段特征码(tzm)。 身份验证
4.A再用对称密钥(dcmy)将data与tzm整体再加密。
4.A将数据data与加密过的特征码再传给B。

PKI: Public Key Infrastructure
CA: Certificate Authority
证书常见的格式: x509 pkcs12
x509:
公钥及其有效期限
证书的合法拥有者
证书该如何被使用
CA的信息
CA签名的校验码

SSL: Secure Socket Layer 是介于应用层与传输层的一层协议或库
iso制订的TLS(Transport Layer Security)功能与SSL类似.

加密类型及相关算法_第2张图片
SSL会话示意图

OpenSSL(SSL的开源实现)

组成部分:

libcrypto: 加密库
libssl: TLS/SSL的实现,基于会话的实现了身份认证 数据机密性和会话完整性的TLS/SSL库
openssl命令: 多用途,可以实现私有证书颁发机构

未完待续

你可能感兴趣的:(加密类型及相关算法)