【1.学习__密码学】
最近开始了新的工作,进入了一家做 安全 和 证书 类的公司,目前需要学习一些东西,感觉跟 Java 没有什么关系,总是会怀疑 这一年的学习工作 对以后是不是有帮助。也总想不明白。还是认真学习吧! 没准做得好了,有机会去360参观呢,还有极棒大会。
学习一周了,主要掌握了三个 重点概念: 数字签名、数字证书、加密算法(常用实现)
数字签名:
数字签名用来 认证数据信息的来源。
应用的场景: 假设有 A B C三个人要通信,
1. A生成一个 **对,并将公钥给 B,
2. A写了一封信,然后使用哈希算法对信的内容进行哈希处理,得到一个数字摘要,
3.A使用 自己的私钥对数字摘要进行加密处理,得到一个密文,称为A的数字签名(因为只有A才能产生)
A将 明文 + 数字签名 发送给 B(发送过程涉及到 对称加密 和 非对称加密)
4.B接收到数据信息,使用B的公钥对数字签名进行解密,得到数字摘要
5.B使用同一个哈希算法 对 明文进行哈希处理, 得到 一个数字摘要
6. B将两个数字摘要做对比,确定数据信息是否来自于 A
数字证书:(CA 与 RA之间传输也是加密的,也有签名证书存在)
此时,C加入了通信,且C带有恶搞的兴致。C在机缘巧合下接触到B的电脑,并将A的公钥替换成自己的公钥,这样C就可以用A的身份写信给B,并使用自己的私钥加密,而C依然认为信息来自于A。
这样,就失去了安全性。所以我们引入第三方管理机构来管理 那些公开的**。
1. A要通信,首先生成一个**对,然后将自己的身份信息 和 公钥提交给 RA,
2. RA对 A 的身份进行核实,提交给 CA,
3.CA印发签名证书,包含:主题的身份信息、公钥、颁发机构的签名和一些信息,
4.CA将证书发送给RA,RA将证书发送给A,
5. A在写信给B的时候,在信的末尾加上,数字签名 和 数字证书,
6. B在接收到 数据之后,查询证书管理系统, 使用CA的公钥对证书进行解密,得到A的公钥,
7. 使用A的公钥对数字签名进行解密,得到数字摘要,
8. 使用同一个哈希算法 对明文进行哈希处理,得到数字摘要,
9. B 对得到的两个数字摘要做对比,判断 来自于A
这样做的好处是,改善了 获取 公钥的方式,由本地存储变成第三方认证,会更加的安全。
加密传输:(通常使用 对称加密 和 非对称加密算法结合)
假设 A要向B发送数据:
1. A准备好要发送的明文,
2. A产生一个随机**,使用随机**对明文进行加密处理,得到密文,
3. A使用B的公钥对 随机**进行加密,得到 被加密的**,称为数字信封,
A将 密文 + 被加密的** 发送给 B,
4. B使用B的私钥对 被加密的**进行解密,得到 随机**,
5. B使用随机**对密文进行解密,得到 明文,
其中,随机**加解密 称为 对称**方式,多用来加密数据量大的文件或者信息,
使用B的**对进行加解密 属于 非对称**算法,用来解密数据量小的信息。
搞清楚这三个概念,再看密码学的东西,就会轻松很多。以下的内容,还有来得及更新,可能有误,请自行甄别。
1. 密码学的基础
1.1 什么是签名?
1.2 什么是加密?
1.3 哈希算法:
1.4 对称/非对称 加密算法:
1.5 常用算法及实现原理:
......