加密解密技基础

一.加密算法

1.对称加密

1.对称加密:加密和解密使用同一个密钥

对称加密算法
1.DES:Data Encryption Standard
2.3DES:Triple ES(比DES高三个安全级别)
3.AES:Advanced Encryption Standard(128bits,192bits,256bits,384bits)
4.Blowfish
5.Twofish
6.IDEA
7.RC6
8.CAST5
对称加密算法特性:
   1)加密,解密使用同一个密钥
   2)将原始数据分割成为固定大小的块,逐个加密
对称加密算法缺陷:
   1)密钥过多(每一次加密都需要一个密钥)
   2)密钥分发困难(无法确保密钥分发过程的安全性)

2.公钥加密

1.公钥加密:其密钥分为公钥和私钥

1.公钥:从私钥中提取产生,可公开给所有人;pub key
2.私钥:通过工具创建,使用者自己留存,必须保证其私密性;secret key
3.特点:用公钥加密的数据,只能使用与之配对的私钥解密,反之亦然
4.用途:
   1)数字签名:主要在于让接收方确认发送方的身份
   2)密钥交换:发送方用对方公钥加密一个对称密钥,并发送给对方
   3)数据加密:不常用,比对称加密要慢3个数量级
5.算法:RSA,DSA,ELGmal
   1)DSS:Digital Signature Standard(用于数字签名)
   2)DSA:Digital Signature Algorithm
公钥加解密过程实现(A用户需要向B用户传输一段数据)
加密过程
1.A用户首先使用单项加密算法计算出数据的特征码,再使用自己的私钥加密此特征码,附在数据之后
2.A用户再生成一个对称密钥加密整个数据及其特征码
3.A用户此时获取到B用户的公钥,使用其公钥加密生成的对称密钥,并附加在刚使用对称加密过的数据及特征码后,使其成为密文
4.发送给B用户
解密过程
1.B用户收到A用户发送的数据后,首先使用自己的私钥解密加密后数据的整体,由此可获得对称加密的密钥,由此完成密钥交换
2.B用户再使用获得的对称加密密钥,解密对称加密算法,获得数据及其特征码
3.使用A用户的公钥解密数据特征码,由此确定数据的合法性
4.再使用与A用户相同的单项加密算法,计算出数据特征码,以此确认数据的完整性

2.CA证书

1.为使通信双方确认彼此身份需要使用CA证书
2.CA自己也拥有一个自签证书(内含有公钥和私钥),网上的用户需要通过验证CA的数字签名去验证并信任CA,任何人都可以得到CA的证书(及公钥),用以验证它自身所签发的证书

3.单项加密

1.单项加密:即提出数据指纹,只能加密,不能解密

1.特性:定长输出,细微的更改会引起巨大的改变
2.功能:完整性
3.算法
   1)md5:Message Digest 5;128bits
   2)sha1:Secure Hash Algorithm 1;160bits(sha224,sha256,sha384,sha512)

4.密钥交换

1.密钥交换:IKE(internet key exchange)

实现方法
1.公钥加密
2.DH(Deffie-Hellman)
   A:生成p,g(一个很大素数p,一个生成器g也为数字,都为公开数字)
   B:生成p,g(同理)
   但是A会生成一个私有的数据:x
   B会生成一个私有的数据:y
   A:x
      -->第一步:p^x%g==>B(计算p的x次方并对g取模发送给B)
      -->第二步:(p^y%g)^x=p^yx%g
   B
      -->第一步:p^y%g==>A(计算p的y次方并对g取模发送给A)
      -->第二步:(p^x%g)^y=p^xy%g
     ps:由此A,B会收到相同的数据,即使中途数据被截获,也无法通过已知数据区获得到x,y实现保密性

2.常用算法

1.RSA
2.DH
3.ECDH(椭圆曲线DH)
4.ECDHE(临时椭圆曲线DH)

5.PKI

1.pki:Public Key Infrastructure

公钥基础设施组成
1.签证机构:CA(实际下发证书)
2.注册机构:RA(接收用户注册申请)
3.证书吊销列表:CRL(若用户私钥丢失,需要进行证书吊销)
4.整数存取库(公共存取库)

2.X.509v3:定义了证书的结构以及认证标准

证书标准
1.版本号
2.序列号
3.签名算法ID:使用什么算法进行签名
4.发行者名称
5.有效期限
6.主体名称:个人信息
7.主体公钥
8.发行者的唯一标识
9.主体的唯一标识
10.扩展
11.发行者的签名:把证书整个内容进行单项加密,把加密的特征码结果使用自己的私钥进行加密附加加证书之后,生成发行者签名
ps:最重要两项为主体名称及主体公钥

3.用户通信前进证书交换

通信前拿到对方证书后,进行证书验证
1..使用CA的公钥去解密CA的签名,解密成功说明证书来源可靠
2..使用同一的加密算法去计算证书的特征码,与解密的特征码进行比较,若相同则完整性确认
3.检查证书有效期限
4.验证通信双方个人信息
5.检查证书是否被吊销

4.基础SSL的通信(客户端及服务端的通信)

1.客服端及服务端互相发送"hello"信息,确认需要进行SSL会话(需要协商通信时各使用哪种加密算法)
2.服务端会把CA证书发送给客户端,客户端进行验证证书(一般客户端不会像服务端提供证书,网银类需要证书)
3.客户端选择确认的加密算法(生成密码),并将密码使用服务端的公钥进行加密,发送给服务端
4.服务器端使用此密码进行加密客户端请求的网页,发送给客户端
.
.
n:客户端请求会话终止,服务端会话断开,通信终止
ps:需要验证服务端证书中的信息完全符合,正常情况时访问是不被允许的,否则会提示使用有风险

6.SSL

1.SSL:Secure sockets Layer

1.Netscape:1994年推出
2.版本:v1.0,v2.0,v3.0(一般使用v2.0)

2.TLS: Transport Layer Security(类似于SSL)

1.IETF: 1999年发布
2.版本:V1.0, V1.1, V1.2, V1.3
3.分层设计
   1)最底层:基础算法原语的实现,aes,rsa,md5的相关功能
   2)向上一层:各种算法的实现
   3)在向上一层:组合算法实现的半成品
   4)用各种组件拼装而成的各种成品密码学协议软件
 ps:可供诸多应用程序在不同级别进行调用
4.协议的开源实现:OpenSSL

二.SSL

1.SSL/TLS

1.SSL:安全套接字层(版本:ssl 1.0,ssl 2.0,ssl 3.0)

OpenSSL组件
1.libcrypto
2.libssl
3.openssl

2.TLS:传输层安全(版本:tls 1.0,tls1.1,tls1.3)

2.SSL会话

1.SSL会话主要三步

1.客户端向服务器端索要并验证证书
2.双方协商生成"会话密钥"
3.双方采用"会话密钥"进行加密通信

2.SSL Handshake Protocol:SSL握手协议;即SSL会话前两步

第一阶段:ClientHello;客户端向服务器端发送"Hello"信息,其中包括
1.支持的协议版本,例如tls 1.2;
2.客户端生成一个随机数,用于后面生成"会话密钥"
3.支持的加密算法,例如AES,3DES,RSA
4.支持的压缩算法
第二阶段:ServerHello,服务器端向客户端发送"Hello"信息,其中包括
1.确认使用的加密通信协议版本,例如tls 1.2,若无法统一通信协议版本,则双方无法进行通信
2.服务器端生成一个随机数,用于后面生成"会话密钥"
3.确认使用的加密方法
4.发送服务器证书
第三阶段:客户端验证操作
1.客户端验证服务器证书,在确认其证书无误之后取出其公钥;验证信息包含
   1)发证机构
   2)证书的完整性
   3)证书的持有者
   4)证书有效期
   5)吊销列表
2.并发送以下信息至服务器端
   1)一个随机数
   2)编码变更通知,即之后的信息都将使用双方商定的加密方法和密钥进行发送
   3)客服端握手结束通知
第四阶段:服务器端执行步骤
1.收到客户端发来的两个随机数pre-master-key,并且结合服务器端自身生成的随机数之后,用于计算本次会话所用到的"会话密钥"
2.并向客户端发送以下信息
   1)编码变更通知,即之后的信息都将使用双方商定的加密方法和密钥进行发送
   2)服务器端握手结束通知
"ps:此过程所生成的三个随机数,是为了确保会话密钥的随机性"

3.PKI:公钥基础设施

1.签证机构:CA
2.注册机构:RA
3.证书吊销列表:CRL
4.证书存取库

3.OpenSSL

1.OpenSSL组件
1)libcrypto,libssl主要由开发者使用

2)openssl:一般使用多用途命令行工具

3.1openssl命令

1.openssl命令类别:
1)标准命令:enc,ca,req,genrsa…
2)消息摘要命令(dgst子命令)
3)加密命令(enc子命令)
ps:使用openssl ?即可查看openssl命令相关命令

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值