| 介绍解决数据传输的安全性问题 要解决的问题四个问题 窃听○ 加密:如 共享,公开,混合,交换等都是解决窃听的问题,而不管其他问题
假冒○ 消息认证码(不👌),而且比数字证书更弱一点,无法解决事后否认的问题
 ○ 数字签名(不👌)
 ○ 数字证书(比较👌)
篡改○ 消息认证码(👌)
 ○ 数字签名(👌)
事后否认○ 数字签名(👌)
 其中数字签名存在 “无法确认公开密钥的制作者” 的问题,需要使用 数字证书 技术数字证书 相比较于 数字签名,也就是引入了第三方认证而已
 Hash特征 定长内容相同,Hash 值相同内容相似,不导致 Hash 值相似Hash 冲突不可逆算法相对简单,求取效率高
 一些 Hash 算法MD5,SHA-1,SHA-2其中 MD5 和 SHA-1 有安全隐患,不推荐使用
 共享密钥加密(对称加密)加密和解密都用相同的密钥 不安全:传输密钥,不是很安全 一些共享密钥加密算法凯撒密码,AES,DES,动态口令 公开密钥加密(非对称加密)使用公钥和私钥可以使用 数字证书 来防止中间人攻击,确认公钥发送方的身份
 不安全:会发生中间人攻击,替换公钥,因为无法确定公钥是谁发的 其他问题:不容易找到相应的加密算法加密比较耗时,这个问题可以使用混合加密解决
 加密算法需要满足的条件:可以使用某个数值对数据进行加密可以使用另一个数值对数据进行解密两个数值不能相互推算得出
 一些公开密钥加密算法RSA(较为广泛),椭圆曲线加密算法 混合加密主要用来解决:共享加密密钥传输不安全
 公开加密计算速度慢的问题
 使用公开加密的公钥加密共享密钥的密钥,以保证共享加密的密钥的传输安全然后信息的加密使用共享密钥
 SSL 协议就使用了这样的混合加密方法SSL 协议进行升级后正式命名为 TLS,也常被称为 SSL/TLS 协议
 相应的 HTTPS 也使用了该混合加密方法
 迪菲-赫尔曼密钥交换用来交换密钥,其实本质上并没有交换密钥,所以又被称为 “迪菲-赫尔曼密钥协议”是另一种解决共享密钥传输不安全的方法
 我感觉可以称为 合成密钥加密 主要步骤:传输 PA,B 为两个私钥,为甲和已所持有甲合成 AP,已合成 BP相互传输 AP,BP甲合成 ABP,已合成 ABP,将 ABP 作为共享密钥来使用
 传输的为 P,AP,BP,无法合成 ABP,所以传输是安全的 当然,需要有相应的算法来保证: 可以合成,且可以多次合成合成后就无法获取合成的因子,也就是 AP 无法获取单独的 A 或 P合成不用按照顺序,而只和因子有关,也就是 AP+B = BP+A
 数学原理:离散对数问题目前没有解根据素数 P、生成元 G 和 “GX % P” 求出 X
 消息认证码实现 认证 和 检测篡改 两个功能,但无法解决 事后否认 的问题,因为 A 和 B 双方都可以生成认证码● 类似于 Hash 校验,而且在 Hash 里参杂了密钥
 步骤安全传输一个共享密钥,可以使用混合加密,或是迪菲-赫尔曼进行传输A 在发送的时侯,使用算法计算:密文+密钥 = 认证码,将认证码一起发送B 收到消息,使用相同的算法计算,比较认证码是否和 A 发送的相同其中认证码计算的方法有:HMAC(最广泛),OMAC,CMAC
 数字签名主要处理 事后否认 的问题,也可以防止 篡改,假冒但是由于不知道公钥的制作者到底是谁,所以无法彻底防止假冒,那其实 消息认证码 也有这样的问题
 使用 公开密钥加密 来进行数字签名,只是现在私钥是用来加密的,公钥是用来解密的
 严格来说,也有使用加密运算以外的计算方法来生成签名的情况
 使用私钥加密,公钥解密,并不是所有的公开密钥加密都可以反着用,但是 RSA 可以
 过程A 准备公开密钥,将公钥发送给 BA 使用私钥对消息或是消息的 Hash 值进行加密,并将结果一起发送给 BB 对密文使用公钥进行解密,比较 A 发送的消息如果一样则说明一定是 A 发送的,无法事后否认,否则就可能发生了 篡改,假冒的情况
 数字证书其中网站有 服务器证书,其实就是数字证书,其中使用的个人信息就是域名目的是在数字签名的基础上,让第三方(CA认证中心)证明某个公钥的身份信息
 过程A 向 CA 申请证书,想让 CA 证明一个公钥是自己的A 将自己的信息和公钥交给 CA 认证中心,CA 使用自己的私钥根据 A 的信息为 A 生成数字签名CA 将A的信息和生成的数字签名放在一起,这就是 A 的数字证书,然后提供自己的公钥,供 B 去验证B 收到 A 提供的数字证书,使用 CA 的公钥进行解密验证,对照信息,并且确认解密后的信息确实是 A
 问题:B 怎么确认 CA 的公钥就是 CA 的?CA 的公钥也是一个证书,是由更高级的 CA 颁发的,这样一层一层,最上层的 CA 为 root CA,也就是根认证中心,根证书是CA认证中心给自己颁发的证书,是信任链的起始点。安装根证书意味着对这个CA认证中心的信任。
 这样的一层一层认证机构,这一系列的技术规范被统称为 公钥基础设施 。
 |