【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.学习__密码学】

 

1.2 什么是加密?

【1.学习__密码学】

 

 

1.3 哈希算法:

 

【1.学习__密码学】

1.4 对称/非对称 加密算法:

 

【1.学习__密码学】

 

1.5 常用算法及实现原理:

 

......