This commit is contained in:
Estom
2021-06-15 23:21:46 +08:00
parent f017a8bde3
commit f060b3c369
20 changed files with 356 additions and 17 deletions

View File

@@ -0,0 +1,120 @@
# 公钥秘钥加密原理
> 加密协议的主要目标:
> * 实现两个主体之间的加密数据传输。
> * 防止数据被篡改。签名----数据被篡改后签名不匹配。
> * 防止数据被截获。加密----数据被截获后,无法解密。
## 1 基本概念
### 加密算法
* 对称加密算法:加密和解密都是使用的同一个密钥。因此对称加密算法要保证安全性的话,密钥要做好保密,只能让使用的人知道,不能对外公开。又称私钥加密或会话密钥加密算法,即信息的发送方和接收方使用同一个密钥去加密和解密数据。它的最大优势是加/解密速度快,适合于对大数据量进行加密,但密钥管理困难。
* 非对称加密算法:加密使用的密钥和解密使用的密钥是不同的。 公钥密码体制就是一种非对称加密算法。信息发送者用公开密钥去加密,而信息接收者则用私用密钥去解密。公钥机制灵活,但加密和解密速度却比对称密钥加密慢得多。
### 秘钥概念
* 密钥:一般就是一个字符串或数字,在加密或者解密时传递给加密/解密算法。
* 密钥对,在非对称加密技术中,有两种密钥,分为私钥和公钥,私钥是密钥对所有者持有,不可公布,公钥是密钥对持有者公布给他人的。
* 公钥,公钥用来给数据加密。
* 私钥,用来解密公钥加密的数据。
### 加密与解密概念
* 公钥和私钥是通过秘钥生成算法得到的一个密钥对(即一个公钥和一个私钥),将其中的一个向外界公开,称为公钥;另一个自己保留,称为私钥。通过这种算法得到的密钥对能保证在世界范围内是唯一的。
* 使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。比如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功。
### 签名与签名验证概念
* 摘要对需要传输的文本做一个HASH计算一般采用SHA1SHA2来获得。
* 签名,使用私钥对需要传输的文本的摘要进行加密,得到的密文即被称为该次传输过程的签名。(看最下面的一部分就明白了)
* 签名验证数据接收端拿到传输文本但是需要确认该文本是否就是发送发出的内容中途是否曾经被篡改。因此拿自己持有的公钥对签名进行解密密钥对中的一种密钥加密的数据必定能使用另一种密钥解密。得到了文本的摘要然后使用与发送方同样的HASH算法计算摘要值再与解密得到的摘要做对比发现二者完全一致则说明文本没有被篡改过。
### 秘钥算法目标
* 加密,肯定是不希望别人知道我的消息,所以只要我才能解密。所以得出,公钥负责加密,私钥负责解密。
* 签名,那肯定是不希望有人冒充我发消息,只有我才能发布这个签名, 所以得出,私钥负责签名,公钥负责验证。
## 2 非对称加密RSA实现
![](image/2021-06-15-22-27-16.png)
有两组四个密钥A的公钥PUB_AA的私钥PRI_AB的公钥PUB_BB的私钥PRI_B。公钥一般用来加密私钥用来签名。通常公钥是公开出去的但是私钥只能自己私密持有。
1. 这时A向B发送信息的整个签名和加密的过程如下
1. A先用自己的私钥PRI_A对信息一般是信息的摘要进行签名。
2. A接着使用B的公钥PUB_B对信息内容和签名信息进行加密。
2. 这样当B接收到A的信息后获取信息内容的步骤如下
1. 用自己的私钥PRI_B解密A用B的公钥PUB_B加密的内容
2. 得到解密后的明文后用A的公钥PUB_A解签A用A自己的私钥PRI_A的签名。
保证了整个过程发送的信息的防止截获PUB_B加密防止篡改PRI_A签名
## 3 对称加密AES实现
![](image/2021-06-15-22-28-36.png)
AES加密算法涉及4种操作字节替代SubBytes、行移位ShiftRows、列混淆MixColumns和轮密钥加AddRoundKey。下图给出了AES加解密的流程从图中可以看出1解密算法的每一步分别对应加密算法的逆操作2加解密所有操作的顺序正好是相反的。正是由于这几点再加上加密算法与解密算法每步的操作互逆保证了算法的正确性。加解密中每轮的密钥分别由种子密钥经过密钥扩展算法得到。算法中16字节的明文、密文和轮子密钥都以一个4x4的矩阵表示。
## 4 非对称加密RSA+对称加密AES
![](image/2021-06-15-22-28-00.png)
![](image/2021-06-15-22-23-53.png)
### RSA加密算法
* 一种公钥密码体制,公钥公开,私钥保密,它的加密解密算法是公开的。 RSA的这一对公钥、私钥都可以用来加密和解密并且一方加密的内容可以由并且只能由对方进行解密。
* 是公开密钥系统的代表安全性建立在具有大素数因子的合数其因子分解困难这一法则之上处理速度慢密钥管理加解密过程中不必网络传输保密的密钥密钥管理优于AES算法RSA加解密速度慢不适合大量数据文件加密
### AES加密算法
* Rijndael算法是新一代的高级加密标准运行时不需计算机有非常高的处理能力和大的内存操作可以很容易的抵御时间和空间的攻击在不同的运行环境下始终保持良好的性能
* AES密钥长度最长只有256bit可用软件和硬件实现高速处理
* 密钥管理:要求在通信前对密钥进行秘密分配,解密的私钥必须通过网络传送至加密数据接收方;
* AES加密速度很快
### AES+RSA加密算法
* 使用AES对称密码体制对传输数据加密同时使用RSA不对称密码体制来传送AES的密钥就可以综合发挥AES和RSA的优点同时
* 避免它们缺点来实现一种新的数据加密方案
## 5 数字证书
### 概念
为了保证公钥的可信性,提供第三方的认证。保证公钥没有被篡改。相当于由第三方可信机构发起的一次摘要----签名----签名验证过程。主要确认了目标公钥的证书的可信性。
一个证书包含以下内容:
* 可信的证书的发布机构
* 证书的有效期
* 证书所有者Subject
* 公钥
* 指纹和指纹算法
* 签名算法
### 指纹和指纹算法
这个是用来保证证书的完整性的,也就是说确保证书没有被修改过。 其原理就是在发布证书时,发布者根据指纹算法(一个hash算法)计算整个证书的hash值(指纹)并和证书放在一起使用者在打开证书时自己也根据指纹算法计算一下证书的hash值(指纹)如果和刚开始的值对得上就说明证书没有被修改过因为证书的内容被修改后根据证书的内容计算的出的hash值(指纹)是会变化的。
### 签名算法
就是指的这个数字证书的数字签名所使用的加密算法,这样就可以使用证书发布机构的证书里面的公钥,根据这个算法对指纹进行解密。指纹的加密结果就是数字签名
> 指纹和指纹算法与RSA生成摘要的方法几乎一致。
> 签名算法,即用服务器的私钥进行签名的方法。
### 流程
* 证书中心用自己的私钥,对公钥和一些相关信息一起加密,生成"数字证书"Digital Certificate。相当于服务器用自己的私钥生成一份签名。
* 拿到数字证书以后,就可以放心了。签名方只要在签名的同时,再附上数字证书(包含验证的公钥)就行了。
* 接收方对证书进行确认,验证公钥的可信性。(证书没有被篡改,没有过期)。即可使用该公钥对数据进行加密传输了。

139
加密/2 TSL加密协议.md Normal file
View File

@@ -0,0 +1,139 @@
## 1 简介
SSL/TLS是一种密码通信框架他是世界上使用最广泛的密码通信方法。SSL/TLS综合运用了密码学中的对称密码消息认证码公钥密码数字签名伪随机数生成器等可以说是密码学中的集大成者。
SSL(Secure Socket Layer)安全套接层是1994年由Netscape公司设计的一套协议并与1995年发布了3.0版本。
TLS(Transport Layer Security)传输层安全是IETF在SSL3.0基础上设计的协议实际上相当于SSL的后续版本。
## 2 应用
SSL/TLS是一个安全通信框架上面可以承载HTTP协议或者SMTP/POP3协议等。下层基于TCP可靠数据连接实现。
![](image/2021-06-15-20-11-58.png)
## 3 架构
![](image/2021-06-15-20-12-34.png)
TLS主要分为两层
* 底层的是TLS记录协议主要负责使用对称密码对消息进行加密。
* 上层的是TLS握手协议主要分为握手协议密码规格变更协议和应用数据协议4个部分。
* 握手协议负责在客户端和服务器端商定密码算法和共享密钥包括证书认证是4个协议中最最复杂的部分。
* 密码规格变更协议负责向通信对象传达变更密码方式的信号
* 警告协议负责在发生错误的时候将错误传达给对方
* 应用数据协议负责将TLS承载的应用数据传达给通信对象的协议。
## 4 握手协议
握手协议是TLS协议中非常重要的协议通过客户端和服务器端的交互和共享一些必要信息从而生成共享密钥和交互证书。
![](image/2021-06-15-23-09-52.png)
![](image/2021-06-15-20-41-00.png)
### 1 客户端请求SSL内容
* client hello客户端向服务器端发送一个client hello的消息包含下面内容
1. 可用版本号
2. 当前时间
3. 客户端随机数
4. 会话ID
5. 可用的密码套件清单
6. 可用的压缩方式清单
我们之前提到了TLS其实是一套加密框架其中的有些组件其实是可以替换的这里可用版本号可用的密码套件清单可用的压缩方式清单就是向服务器询问对方支持哪些服务。
客户端随机数是一个由客户端生成的随机数,用来生成对称密钥。
### 2 服务器响应SSL内容
* server hello服务器端收到client hello消息后会向客户端返回一个server hello消息包含如下内容
1. 使用的版本号。使用的版本号使用的密码套件使用的压缩方式是对步骤1的回答。
2. 当前时间
3. 服务器随机数。服务器随机数是一个由服务器端生成的随机数,用来生成对称密钥。
4. 会话ID
5. 使用的密码套件
6. 使用的压缩方式
* 可选步骤:certificate服务器端发送自己的证书清单因为证书可能是层级结构的所以处理服务器自己的证书之外还需要发送为服务器签名的证书。客户端将会对服务器端的证书进行验证。如果是以匿名的方式通信则不需要证书。
* 可选步骤:ServerKeyExchange。如果第三步的证书信息不足则可以发送ServerKeyExchange用来构建加密通道。ServerKeyExchange的内容可能包含两种形式
* 如果选择的是RSA协议那么传递的就是RSA构建公钥密码的参数EN。我们回想一下RSA中构建公钥的公式密文=明文^E\ mod\ N密文=明文EmodN 只要知道了E和N那么就知道了RSA的公钥这里传递的就是EN两个数字。具体内容可以参考RSA算法详解
* 如果选择的是Diff-Hellman密钥交换协议那么传递的就是密钥交换的参数具体内容可以参考更加安全的密钥生成方法Diffie-Hellman
* 可选步骤:CertificateRequest如果是在一个受限访问的环境比如fabric中服务器端也需要向客户端索要证书。如果并不需要客户端认证则不需要此步骤。
* server hello done 服务器端发送server hello done的消息告诉客户端自己的消息结束了。
### 3 客户端交换秘钥证书
* 可选步骤:Certificate。对步骤5的回应客户端发送客户端证书给服务器
* ClientKeyExchange还是分两种情况
* 如果是公钥或者RSA模式情况下客户端将根据客户端生成的随机数和服务器端生成的随机数生成预备主密码通过该公钥进行加密返送给服务器端。
* 如果使用的是Diff-Hellman密钥交换协议则客户端会发送自己这一方要生成Diff-Hellman密钥而需要公开的值。具体内容可以参考更加安全的密钥生成方法Diffie-Hellman这样服务器端可以根据这个公开值计算出预备主密码。
* 可选步骤:CertificateVerify客户端向服务器端证明自己是客户端证书的持有者。
* ChangeCipherSpec(准备切换密码)ChangeCipherSpec是密码规格变更协议的消息表示后面的消息将会以前面协商过的密钥进行加密。
* finished(握手协议结束)客户端告诉服务器端握手协议结束了。
### 4 服务器交换秘钥证书
* ChangeCipherSpec(准备切换密码)服务器端告诉客户端自己要切换密码了。
* finished(握手协议结束)服务器端告诉客户端,握手协议结束了。
* 切换到应用数据协议。这之后服务器和客户端就是以加密的方式进行沟通了。
### 主密码和预备主密码
* 上面的步骤8生成了预备主密码主密码是根据密码套件中定义的单向散列函数实现的伪随机数生成器+预备主密码+客户端随机数+服务器端随机数生成的。
* 主密码主要用来生成称密码的密钥消息认证码的密钥和对称密码的CBC模式所使用的初始化向量。详见分组密码和模式
## 5 记录协议
TLS记录协议主要负责消息的压缩加密及数据的认证
![](image/2021-06-15-20-59-12.png)
消息首先将会被分段然后压缩再计算其消息验证码然后使用对称密码进行加密加密使用的是CBC模式CBC模式的初始向量是通过主密码来生成的。
得到密文之后会附加类型,版本和长度等其他信息,最终组成最后的报文数据。
## 6 加密算法
### 对称密码
### 消息认证码
### 公钥密码
### 数字签名
### 伪随机数生成器
## 7 协议关系
### 协议概念
* TCP
TCPTransmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,是七层协议中的第四层传输层的协议之一,大名鼎鼎的三次握手就发生在这里。
* HTTPS
HTTPS全称Hyper Text Transfer Protocol over Secure Socket Layer是以安全为目标的HTTP通道简单讲是HTTP的安全版。
* SSL
SSL(Secure Sockets Layer 安全套接层)是为网络通信提供安全及数据完整性的一种安全协议。
* TLS
安全传输层协议TLSTransport Layer Security用于在两个通信应用程序之间提供保密性和数据完整性。该协议由两层组成 TLS 记录协议TLS Record和 TLS 握手协议TLS Handshake是更新、更安全的SSL版本。
### 关系说明
* HTTPS是应用层的安全协议TCP是传输层的协议但是它不安全因为它是明文传输的所以SSL的诞生就是给TCP加了一层保险使HTTPS和TCP之间使用加密传输。而TLS只是SSL的升级版他们的作用是一样的。
* SSL 凭证安装于伺服器例如网站服务器但是在浏览器上使用者仍可看到网站是否受到SSL 的保护。首先如果SSL 出现在网站上使用者看到的网址会是以https:// 开头而不是http:// 多出的一个s 代表「安全」)。按照企业所获得的验证或凭证等级,安全连接会通过挂锁图标或绿色地址栏来显示。
* HTTPS会在网站受到SSL凭证保护时在网址中出现。该凭证的详细资料包括发行机构与网站拥有人的企业名称可以通过按一下浏览器列上的锁定标记进行检视。
* 应用最广泛的是TLS1.0接下来是SSL3.0 。但主流浏览器都已经实现了TLS 1.2 的支持。TLS 1.0有时被标示为SSL 3.1TLS 1.1为SSL 3.2TLS 1.2为SSL 3.3。TLS和SSL协议理论上属于传输层在应用层实现所以我们可以在浏览器中设置是否使用此协议使用哪一版本的协议。

View File

51
加密/4 HTTPS协议.md Normal file
View File

@@ -0,0 +1,51 @@
# HTTPS 协议
## 1 HTTPS
### 认证过程
HTTPS在传输数据之前需要客户端浏览器与服务端网站之间进行一次握手在握手过程中将确立双方加密传输数据的密码信息。TLS/SSL协议不仅仅是一套加密传输的协议更是一件经过艺术家精心设计的艺术品TLS/SSL中使用了非对称加密对称加密以及HASH算法。握手过程的具体描述如下
![](image/2021-06-15-23-00-51.png)
1. 浏览器将自己支持的一套加密规则发送给网站。
2. 网站从中选出一组加密算法与HASH算法并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址加密公钥以及证书的颁发机构等信息。
3. 浏览器获得网站证书之后浏览器要做以下工作:
1. 验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等),如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示。
2. 如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机数的密码,并用证书中提供的公钥加密。
3. 使用约定好的HASH算法计算握手消息并使用生成的随机数对消息进行加密最后将之前生成的所有信息发送给网站。
4. 网站接收浏览器发来的数据之后要做以下的操作:
1. 使用自己的私钥将信息解密取出密码使用密码解密浏览器发来的握手消息并验证HASH是否与浏览器发来的一致。
2. 使用密码加密一段握手消息,发送给浏览器。
5. 浏览器解密并计算握手消息的HASH如果与服务端发来的HASH一致此时握手过程结束之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密。
### 相关加密算法
* 非对称加密算法RSADSA/DSS
* 对称加密算法AESRC43DES
* HASH算法MD5SHA1SHA256
## 2 证书签发
### SSL 证书大致分三类:
* 认可的证书颁发机构(如: VeriSign), 或这些机构的下属机构颁发的证书.
* 没有得到认可的证书颁发机构颁发的证书.
* 自签名证书, 自己通过JDK自带工具keytool去生成一个证书分为临时性的(在开发阶段使用)或在发布的产品中永久性使用的两种.
### CA机构颁发的证书有3种类型
* 域名型SSL证书DV SSL信任等级普通只需验证网站的真实性便可颁发证书保护网站
* 企业型SSL证书OV SSL信任等级强须要验证企业的身份审核严格安全性更高
* 增强型SSL证书EV SSL信任等级最高一般用于银行证券等金融机构审核严格安全性最高同时可以激活绿色网址栏。
## 3 HTTPS协议和HTTP协议的区别
* https协议需要到ca申请证书一般免费证书很少需要交费。
* http是超文本传输协议信息是明文传输https 则是具有安全性的ssl加密传输协议。
* http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。
* http的连接很简单,是无状态的 。
* HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比http协议安全。

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 431 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 433 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

View File

@@ -55,14 +55,13 @@
### 三次阅读
1. 泛读评分
1. 泛读中文
1. 摘要、引言、结论、图表
2. 黄色、红色、summary、comment标注
3. 星级&评价。content context。读完之后给出
4. 删除不想相关的论
2. 精读3星
1. 精读原理
2. 精读实验
2. citavi黄色、红色、summary、comment标注
3. citavi星级&评价。content context。读完之后给出
2. 精读英
1. 原理、实验
2. citavi论文笔记
3. 引用4星
1. category与论文关系
2. quotation引用方式

View File

@@ -3,12 +3,6 @@
> 包括其指针、计划、加密、worker仿真与实现。我发现这些代码的设计都非常优秀。日后方便自己完成整个系统。
- [ ] 指针模块
- [ ] 计划模块
- [ ] 加密模块
- [ ] 训练模块util.fed_avg)
- [ ] worker通信模块仿真与通信的实现封装

View File

@@ -0,0 +1,37 @@
## 任务
- [x] 1. Personalized Cross-Silo Federated Learning on Non-IID Data
- [ ] 2. 之前在群里讨论的非独立同分布问题的文章。
- [ ] A generic framework for privacy preserving deep learning
- [ ] FEDFMC: SEQUENTIAL EFFICIENT FEDERATED LEARNING ON NON-IID DATA
## 收获
* 论文阅读的五个方面
* 管理组织
* keywords
* categories
* groups
* 信息数据
* title/authro/year
* priodical/conference
* 阅读笔记
* quotations
* comments
* 归纳总结
* 方法
* 模型
* 结论
* 问题
* 相关这了
* local file
* internet address

View File

@@ -0,0 +1,2 @@

View File

@@ -13,11 +13,8 @@
- [ ] 完成数据预处理工作,和对恶意软件的分析工作!!!(已经拖了两个月了)
## 计划
- [ ] 阅读九月份以来的工作,完成毕业论文的框架。
- [ ] A generic framework for privacy preserving deep learning
- [ ] Personalized Cross-Silo Federated Learning on Non-IID Data
- [ ] FEDFMC: SEQUENTIAL EFFICIENT FEDERATED LEARNING ON NON-IID DATA
## 收获