本帖最后由 武汉-就业部 于 2017-9-10 09:27 编辑
密码算法
1. 数字签名
摘要算法,对任意长度的数据,计算出固定长度的16进制字符串。
>MD5:128bit,32位十六进制
>SHA1:160bit,40位十六进制
用途:校验数据的完整性;密码的传输和保存
2. 对称加密
加密算法,加密和解密时使用相同的密钥(或是使用两个可以简单地相互推算的密钥)
常见算法:**DES、AES**、3DES、Blowfish、IDEA、RC5、RC6。
优点:加密解密速度快,对资源消耗小
缺点:无法保证密钥传输过程的安全性
3.非对称加密
加密算法,加密解密由公钥+私钥完成.公钥是公开出去的,私钥是自己保存的。
常见算法:**RSA**
包含
KeyGen:密钥生成算法,PK,SK=KeyGen()
Encrypt:加密算法,X=Encrypt(PK,M)
Decrypt:解密算法,M=Decrypt(SK,X)
Sign:签名算法,sign= Sign(SK,M)。
Verify:验证算法,b= Verify(PK,sign,M)
注:PK:公钥。SK:密钥。M:明文。X:密文。sign:明文的签名
用途:
a:公钥加密,私钥解密。用于传输数据的加密。
b: 私钥签名,公钥验签。用于传输数据的完整性校验。
优点:加密解密使用不同的密钥
缺点:加密解密速度慢,资源消耗大
HTTP数据传递的加密
HTTP对称加密
1. 客户端生成对称密钥K
2. 明文传输K到服务端
3. 服务端接收到K,明文加密为密文返回
4. 客户端通过K,将密文解密。
缺点:密钥传输过程安全性无法保证,会被嗅探。
HTTP非对称加密
1. 客户端随机生成非对称加密密钥PK1,SK1
2. 客户端把PK1明文发送给服务端。
3. 服务端随机生成对称加密K,并用PK1加密后发送给客户端
4. 客户端拿到通过PK1加密后的K,通过SK1解密后,获取到服务端发来的对称加密密钥。
5. 双方完成对称加密密钥的交换,接下来就可以用 k 来进行数据加密传输。
缺点:缺乏身份认证机制,容易受到中间人攻击。
HTTPS传输
CA:证书管理机构。负责发放证书,确保证书申请者的身份和合法性等。
1. 客户端发出请求,告诉服务器支持的加密算法,SSL/TLS协议版本号等
2. 服务端选出最终算法和协议回复客户端,并带上服务器的证书(包含PK)
3. 客户端校验证书的合法性并取出服务器PK,使用最终算法生成对称密钥K,
4. 客户端使用服务端的PK加密K后发送给服务端
5. 服务端使用SK解密出对称密钥K,并校验数据的完整性。然后使用K加密数据返回给客户端
6. 客户端使用K解密数据并校验数据的完整性,握手完毕
7. 双方完成对称加密密钥的交换,接下来就可以用 k 来进行数据加密传输。
相关术语解释
SSL/TLS
SSL:(Secure Socket Layer,安全套接字层),网景公司开发,目前3.0版本
TLS:(Transport Layer Security,传输层安全协议),国际互联网工程任务组(IEEF)基于SSL3.0标准化,为SSL的继任者
作用:在传输层对数据进行加密,定义传输规则。
HTTPS
Http上加了SSL/TLS的外壳,用来保证数据传输的安全性。端口为443。
OpenSSL
实现了SSL/TLS协议的的包含加密算法,密码库等相关开发工具的软件开发包,
SSH
SSH,Secure Shell。IETF制定,应用层和传输层基础上的安全协议。端口号为22
作用:常用于远程登录和其他相关网络服务通讯安全通道的建立。说白了,也是验证客户端的合法性.
客户端与服务端为了安全做的校验操作基本跟SSL类似,对称与非对称and数字签名轮番上阵。
多了一个流程就是服务端验证客户端的合法性操作。
验证方式:
1. 帐号密码登录 ssh seny@192.168.0.100
a.客户端给服务器发送登录请求,服务器会返回其公钥
b.[询问是否信任该服务器]客户端如果选择信任,则将公钥保存到本地known_hosts
c.[输入密码登录],数据会被服务器的公钥加密传输
d.服务端收到数据解密后验证密码成功,建立登录会话。
缺点:每次登录需要输入口令,并且服务器的公钥的合法性不容易验证。(不像SSL一样有CA证书)
2. 公钥登录
ssh 192.168.0.100
a. 客户端[本地生成公钥私钥],将[PK上传到服务器端]保存到PK列表authorized_keys
b. 客户端请求登录时带着PK请求服务器验证。服务器去authorized_keys查看是否匹配
c. 如果有匹配的,则将随机生成的数据用该PK加密后发送给客户端。
d. 客户端将收到的密文用SK解密后发送回服务器
e. 服务器验证数据是否正确,如果正确则建立登录会话。
缺点:登录验证时间较长。
注:
如果登录者的帐号与服务器帐号不一样,客户端可以在.ssh/config里进行配置
Host 192.168.0.179
user seny
另外要求authorized_keys的权限为600,.ssh为700
OpenSSH
SSH协议的开源实现工具包。跟OpenSSL角色类似,但是毛关系没有。
VPN(Virtual Private Network)
虚拟专用网络,在公网上通过VPN技术相关协议建立虚拟网络,同时加密压缩传输数据。
1. VPN服务器公网IP为1.1.1.1,建立VPN网关192.168.0.1
2. 客户端连接配置服务器公网IP,通过账号密码连接到VPN网关
3. VPN网关给客户端分配ip 192.168.0.101.此时客户端就相当于处于VPN服务器所在的内网
该操作比较常见于员工出差通过VPN访问公司内网资源。
常见协议:PPTP,L2TP,IPSec等
VPN代理
单独配置VPN服务器,只是用来与访问VPN服务器所在的内网资源。如果配合代理转发,则可以将VPN服务器作为跳板访问外网。
在上面三个步骤基础上增加
4.配置IPv4转发,将访问VPN网关的数据转发到另外一个可以访问公网的网卡上。
此时,通过该VPN通道连接到VPN网关的客户端,不仅可以访问内网资源,还可以通过VPN服务器连接外网(FQ)。
Proxy
访问者与最终目标服务器之间的中转站。
常见协议:HTTP代理,sock5代理。
通讯流程:
1. 访问者将访问请求发送给本地的代理客户端
2. 代理客户端将数据发送给远程的代理服务器
3. 代理服务器将数据发送给最终访问服务器
4. 代理服务器将返回的数据发送回代理客户端
5. 代理客户端将数据返回给访问者
注:一般代理软件会增加PAC(Proxy auto-config)模式,会根据配置文件决定是否需要将此请求转发。
云主机
常见国外提供商:AWS,Azure,Linode,Digital Ocean。
|
|