现代网络通信中网络安全是至关重要,安全的最基本的当然就是加密与解密了,今天跟大家分享一下加密与解密的基础。
安全的目标:
保密性:confidentiality
完整性:integrity
可用性:availability
***类型:
威胁保密性的***:窃听、通信量分析;
威胁完整性的***:更改、伪装、重放、否认;
威胁可用性的***:拒绝服务(DoS);
解决方案:
技术方面:加密和解密;
传统加密方法:替代加密方法、置换加密方法
现代加密方法:现代块加密方法
服务方面:用于抵御***的服务,也即是为了上述安全目标而特地设计的安全服务;
认证机制
访问控制机制
加密算法和协议:
1、单向加密:即提出数据指纹;
特性:定长输出、有雪崩效应;
功能:完整性验证;
缺陷:只能加密,不能解密;
常用算法:MD5(128bits)、sha1(160bits)、sha224、sha256、sha384、sha512...
2、对称加密:加密和解密使用同一个密钥;
特性:(1)加密和解密使用同一个密钥;(2)将原始数据分割成为固定大小的块,逐个进行加密;
功能:加密性好,加密速度快;
缺陷:(1)密钥过多;(2)密钥分发困难;
常用算法:3DES(Triple DES)、AES(128bits, 192bits, 256bits, 384bits)、Blowfish、RC6...
3、公钥加密:密钥分为公钥与私钥;
私钥:secret key,通过工具创建,使用者自己留存,必须保证其私密性;
公钥:pubkey,从私钥中提取产生,可公开给所有人;
特性:用公钥加密的数据,只能使用与之配对儿的私钥解密;反之亦然;
功能:
数字签名:主要在于让接收方确认发送方的身份;
密钥交换:发送方用对方公钥加密一个对称密钥,并发送给对方;
数据加密:不常用,比对称加密要慢3个数量级;
常用算法:RSA(即可签名,也可加解密)、DSA(只能签名,不可加解密)、ELGamal...
介绍了以上三种加密算法,下面来具体说一下加密和解密的过程:
加密过程:
1、数字签名:
(1)发送者使用单向加密技术,提取原数据特征码;
(2)发送者使用自己私钥加密特征码,并附加于原数据后方;
2、密钥交换:
(1)发送者使用对称加密技术对附有数字签名的数据进行加密,并生成一个临时对称密钥;
(2)发送者使用接收者的公钥加密生成的临时对称密钥,并附加于加了密的数据后方;
解密过程:
1、密钥交换:
(1)接收者用自己私钥解密加了密的对称密钥,得到临时密钥;
(2)接收者使用得到的临时对称密钥,解密数据,得到附有数字签名的数据;
2、身份认证:接收者使用发送者的公钥解密数字签名,验证发送者身份,并得到原特征码;
3、数据完整性验证:接收者用单向加密技术,提取数据特征码,并与原特征码比较,验证数据完整性
这种加密和解密的过程即能保证数据的安全性与完整性,也能保证通信双方身份的认证。但由于公钥是所有人可以拿到的,所有这样的安全机制还是有安全隐患,即中间人欺骗。不过别担心,有CA机构可以解决此问题,CA机构将在后面再做详细介绍。下面我们继续介绍最后一种加密协议:密钥交换。
4、密钥交换:IKE:Internet Key Exchange
实现方法有两种:
(1)公钥加密,在讲公钥加密与加密、解密过程已说到过,不再多说;
(2)DH:Deffie-Hellman
通信双方无需在网络上传送公钥,通过协商生成随机数并在网络上传送随机数,
通过计算随机数生成密钥。下面举例说明:
(1)A和B为通信双方,双方先协商生成两个随机数m和n,并在网络上传送;
现在状态:A和B同时拥有两个随机数m和n;
(2)A和B再各自生成一个私有的随机数,不在网络上传送,只有自己知道自己私有随机数;
比如:A生成x随机数,B生成y随机数,且只有自己知道自己的私有随机数;
现在状态:A拥有3个随机数:m、n、x,其中x只有自己知道,m和n和B共享;
B拥有3个随机数:m、n、y,其中y只有自己知道,m和n和B共享;
(3)计算随机数,并将结果发送对方。
A: --> m^x%n ==> B
B: --> m^y%n ==> A
(4)收到对方的结果,再用自己私有的随机数和结果计算,得到相同的密钥;
A: (m^y%n)^x = m^xy%n
B: (m^x%n)^y = m^xy%n
m^xy%n即为双方协商后计算出的密钥,提高了安全性,即使别人获取了m和n两个数值,
也无法计算出x和y的数值。
接下来我们再介绍一下防止中间人欺骗CA机构,CA机构是一个第三方可信机构,为通信方颁发证书,可让通信方可靠获取对方公钥的基础保证机制。他是由PKI一套架构体系来完成的。
PKI:Public Key Infrastructure
公钥基础设施,以CA为核心生成的一套架构体系,提供证书服务,保证证书的合法性。组成部分如下:
签证机构:CA
注册机构:RA
证书吊销列表:CRL
证书存取库:CB
通过X.509v3定义了证书的结构以及认证协议标准,结构及标准如下:
版本号
序列号
签名算法ID
发行者名称
有效期限
主体名称
主体公钥
发行者的惟一标识
主体的惟一标识
扩展
发行者的签名
那么CA是如何来保证通信双方证书的合法性及通信双方可靠获取对方公钥的呢?CA工作过各如下:
1、自签证书:CA先给自己颁发一个证书,证书内容如X.509v3所规定,并将证书发送给有需要的通信方。取得通信方对CA的信任,通信方并可从证书中获取CA的公钥;
2、CA颁发证书:通信方向CA申请注册证书,CA将签署好证书并在证书后方加数字签名,再将证书颁给申请方;
3、通信方获取并验证证书:
(1)通信方获取自己证书或获取对方证书后,可用CA公钥解密证书后方数字签名,确认证书确实是自己所信任的CA所颁发;
(2)用同样的单向加密算法计算证书特征码,对比原特征码,验证证书完整性;
(3)检查证书有效期,看证书是否在有效期内;
(4)验证证书内主体名称,是否是通信对方的名称;
(5)检查证书是否被吊销;
至此我们再来总结一下通信双方通信过程:
1、通信方获取CA证书,并申请取得自己证书;
2、通信双方协商各加密算法;
3、通信双方协商获取对方公钥并验证证书;
4、发送方加密数据,并发送;
5、接收方接收数据,并解密验证;
具体过程以上都介绍过,此处不再详细说明了。
至此有关安全加密解密基础的内容就结束了。只是个人总结,希望相互学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。