加密解密技术基础及PKI

为了保证网络通信安全,就对其数据进行加密和解密,涉及了密钥分发;

网警公司为http协议通信安全研发了一个库,放在应用层和传输层中间,这个库就叫ssl安全的套接字层,ssl是一个库,是公共功能,加密解密也是协议实现的;

只要应用层的程序在研发时加入了调用ssl这个库,在通信时就会自动完成加解密,实现后续网络通信;

SSL: Secure Sockets Layer

http --> ssl --> https

http协议调用ssl后,就变成了https协议,两者实现方式差别很大,但是加密解密也带来了cpu的开销;

安全的目标:

保密性:confidentiality

完整性:integrity(不产生信息丢失)

分为数据完成性和系统完整性

可用性:availability

攻击类型:(被动攻击、主动攻击)

威胁保密性的攻击:窃听、通信量分析;

威胁完整性的攻击:更改(modification)、伪装()、重放(replaying)、否认(denial)

威胁可用性的攻击:拒绝服务(DoS)

ddos分布式拒绝服务攻击

解决方案:

技术(加密和解密)、服务(用于抵御攻击的服务,也即是为了上述安全目标而特地设计的安全服务)

加密和解密:

传统加密方法:替代加密方法(例如奇数字符后移3位,偶数字符前移3位)、置换加密方法

现代加密方法:现代块加密方法

(把数据切割正固定大小的块,对每一块进行加密,且块之间有关联)由置换单元、替换单元、异或运算单元、位移要素、对换要素等等一系列组成;例如把第一块加密后发给对方,再把第二块与第一块的一行运算发给对方,截取不到完整数据包也不可能查看数据,过程非常复杂;

任何未加密的数据就是明文,加密就是使用某种算法转换成另一种形式的数据就称为密文;解密就是把密文使用解密算法,就得到了明文;所以加密安全性不能依赖于算法本身,而要依赖于参与者;算法是可能被人分析出来的;

通信对端通过何种方式拿到对端的密钥,就显得非常重要;

服务:

认证机制

访问控制机制

密钥算法和协议:

就是为了解决密钥交换的服务;是在加密和解密、服务中用到的密钥算法和协议;

(1)对称加密算法:

(2)公钥加密(非对称加密)算法:

(3)单向加密算法:

(4)认证协议:

Linux系统:可通过OpenSSL(ssl协议), GPG(pgp协议)两种工具完成上述解决方案;

OpenSSL由三部分组成:

libencrypto(加密解密)库:专门实现加密解密功能;

libssl库:用于实现ssl安全通信机制的库;

openssl多用途命令行工具

加密算法和协议:四种

(1)对称加密:加密和解密使用同一个密钥;加密算法和解密算法可能不同;

常见对称加密算法: DES、 3DES、 Blowfish加密算法、 Twofish加密算法、  IDEA、RC6、 CAST5

特性:

1、加密、解密使用同一个密钥;

2、将原始数据分割成为固定大小的块,逐个进行加密;

缺陷:

1、密钥过多;

2、密钥分发困难;

(2)公钥加密:密钥分为公钥与私钥,成对儿出现;

公钥:是从私钥中提取出来的;可公开给所有人;pubkey

私钥:是通过工具创建的,使用者自己留存,必须保证其私密性;secret key;

特点:用公钥加密的数据,只能使用与之配对儿的私钥解密;反之亦然;

公钥加密的工作原理:

每个密钥都成对儿出现,公钥加密有两重作用是数字签名和密钥交换,公钥的公开的,私钥自己留存,但是公钥和私钥都能用于加密和解密,就有了2种发送方式;第一种是通信双方即A和B,A发送数据给B,A使用B的公钥加密后发送给B,只能用B的私钥才能解密,当有C从中截取数据时,C也不能看的数据内容;

如果B用私钥加密后发送给A,当有C从中截取数据时,C也能看的数据内容,因为公钥是公共的,能解密,这样加密的意义,在于验证发送者的身份验证;

公钥加密有两重功能,数字签名和密钥交换;

数字签名的实现原理:

就是验证发送者身份,公钥加密比对称加密的速度要慢很多,当文件很大时,会很浪费资源,只是为了进行身份验证,不会对整个文件进行加密,而是使用md5或sha1等单向加密算法对文件(加密)提取特征码,(单向加密特性是无论文件大小,加密后定长输出一般md5是128位输出,sha1是160位,还有sha256,sha384,sha256,sha512等),因此,B用自己的私钥加密这个特征码后,把文件和文件的特征码一并发送给A;

,A收到后第一步先用B的公钥解密这个特征码,进行身份验证确认是A发过来的,第二步还能验证完整性,能解密出来得出特征码,A使用相同的单向加密算法计算文件的特征码,与解密出来的特征码进行比较,相同则认为数据没有被修改过,从而验证的了数据完整性;因此,这种方式能保证两个层面的验证即第一身份验证,第二完整性验证;

但是数据的保密性没能保证,数据在传输过程中任何人都能看到,当然C也能看到甚至还能验证文件是B发送的,就是保密性没有得到保证;

为了增加保密性又多了一个机制:(见下图)

B要发送数据给A,B用单向加密算法先计算出数据的特征码,并使用自己的私钥加密这个特征码生成数字签名这就叫数字签名,即加密特征码的过程就是数字签名的过程;主要用于保证接收方能验证发送方的身份和数据完整性,但不能保证数据保密性;

下一步,B用对称加密算法(这个对称密钥是B自己生成的一次性对称密钥),结合密钥来加密整个数据(数据+特征码)成为密文,为了保证让A能解密,B用A的公钥加密这个对称加密的密码并附加在文件数据后面,发送给A;(用A的公钥加密的信息只能用A的私钥解密)

解密过程:

A收到密文后,先用自己与公钥配对儿的私钥解密这个文件,解密后得到密码,这个过程就叫密钥交换(用对方的公钥加密一个密码发送给对方,只有对方能解密这个密码);这个密码是用来实现对称加密和解密的密码,所以A就得到了密钥,继续解密这个数据(数据+特征码);

当在传输过程中C得到B发送给A的文件后,首先C没有A的私钥解密不了里面的密码,其次也没有对称加密密钥,就解密不了加密的数据;

从而A拿到文件数据后用自己的私钥解密密钥,用密钥解密数据,得到数据,然后用B的公钥来解密这个签名即特征码,验证身份,再用单向加密算法计算文件特征码与解密的特征码进行比较,进行完整性验证;

以上仅是点到点的通信机制;这样就保证了身份验证,完整性验证和保密性,三种加密算法全用到了:单向加密、对称加密、公钥加密;这个过程公钥加密算法的两种作用:身份验证,密钥交换;

梳理:

身份认证的实现:

发送方用自己的私钥加密数据特征码,接收方用对方的公钥解密,如果加密成功即可实现身份认证,因为公钥的成对出现的,私钥只有自己有,公钥所有人都有;

数字签名的实现:

在身份验证中就依赖到了数字签名,发送方用自己的私钥加密数据特征码这个结果就叫数字签名;

因此,数据签名就为了完成身份验证的;

密钥交换的实现:

自己先生成一个密码,要用对方的公钥加密这个自己生成的密码,然后发送给对方,只有对方能解密,对方解密出来的就得到密码了;所以就能使用这个密码来解密使用对称加密方式加密的数据了;

如AB双方要进行通信,不可能使用公钥加密数据来通信,因为公钥加密性能太差,安全性很高,双方要使用对称加密,双方拿到对方的公钥(密钥),取决于谁是客户端,谁是服务端;请求者拿到对方的公钥,自己生成一个密码用对方的公钥加密后,再发给对方,对方使用自己私钥解密即可,所以密钥就知道了,接下来整个通信过程就使用这个密钥来加密解密了;

总结描述整个过程:

B与A通信:

B加密数据,发送给A:

第一步:B先用单向加密算法计算出数据的特征码;

第二步:B用自己的私钥加密这个特征码,并将结果附加在数据后面;

第三步:B生成一个临时对称密钥,并使用对称密钥加密整个数据;

第四步:B获取A的公钥,并使用A的公钥加密这个临时的对称密钥,将结果附加在整个数据后发送给A;

A收到数据,解密:

第五步:A先用自己是私钥解密这个加密的对称密钥;

第六步:A用对称密钥解密整个加密的数据;

第七步:A用B的公钥解密数据的特征码;验证了B的身份;

第八步:A再用同样的对称加密算法计算数据的特征码,并与解密出来的特征码进行比较;验证了B发送的数据的完整性;从而使用这种手段保证了保密性和完整性还同时完成了身份验证;

以上过程存在一个巨大风险,如果C把自己的公钥提供给了AB双方,C伪装成B,让A认为C就B,这样A就把自己的公钥发送给C,C再伪装成A,让B认为C就A,B就把自己的公钥也发送给了C;这样AB双方的每次通信,都是经过中间的C看过一遍了,这叫做中间人攻击;因为AB双方无法相互确认对方的身份;

如何避免中间的环节;问题在于如何可靠获取对方的公钥环节上,就有了认证CA;

CA就是双方都认可的第三方可信机构;

A把自己的公钥提请给CA,由CA对这个公钥做一些特殊防伪技术处理后即称为证书,再发给A;以后任何人与A通信,A就把着这个经过CA加工过的公钥发给对方;

如B向A要公钥时,A就把证书(公钥)发给B,B会第一验证这个证书的内容是正常合法的,第二且是自己所信任的CA颁发的;以上两步得到验证即证书(公钥)得到验证;

证书里包括了拥有者的公钥,还包括拥有者各种信息;此时C要想冒充伪装成A或B,则不能成功;

找到信任的CA是重要的,那么如何验证CA;

证书中包括:拥有者名称、公钥、证书有效期,最重要的是CA会用自己的私钥加密这个证书的特征码,即数字签名;放在证书最后;

假如B收到A的公钥时,先用CA的公钥解密这个A的公钥特征码,还要用同样的加密算法计算特征码与之加密出来的特征码进行比较;一样则证明证书的内容没问题是可信的;

B如何可靠获得CA的证书;CA为了让别人能验证它所发的证书是CA所发的,所以CA把自己的公钥提请给每一个信任它的人;为了使得整个法则是完整的,所以CA就先给自己发了一个证书(包括CA的信息和CA的公钥);因此,只有拿到CA的证书才能获得CA的公钥,才能解密CA的签名,才能验证CA发给它人的证书;

所以,只有当面交易CA的证书才可靠;申请证书时CA要审查各种信息;CA在全球有很多从属关系,是有信任关系可传递的;有根CA,下面有很多派出CA信任关系可传递;

CA是让通信双方能够可靠的获取到对方公钥的一种基础保证机制;如果有人私钥丢失,向CA申请吊销证书作废;还有别人如何知道证书作废等一系列过程;

公钥加密用途:

数字签名:主要在于让接收方确认发送方的身份;

密钥交换:发送方用对方公钥加密一个对称密钥,并发送给对方,以实现密钥交换;

数据加密:功能同数字签名;

公钥加密算法:RSA(是公司名、创建者首字母、算法名), DSA, ELGamal(商业算法)

DSS: Digital Signature Standard:仅能实现签名;

DSA:Digital Signature Algorithm:即能签名又能加解密;

(3)单向加密:即提出数据指纹(特征码);只能加密,不能解密;

特性:定长输出、雪崩效应;

功能:实现完整性验证;

常见算法:

md5:Message Digest 5, 128bits

sha1:Secure Hash Algorithm 1, 160bits

sha224, sha256, sha384, sha512

密钥算法:

密钥交换: IKE(Internet Key Exchange)

1、公钥加密:实现密钥交换;

密钥是在网上发送的;

2、DH(Deffie-Hellman)算法

不发送密钥就能使双方完成密钥交换;

(4)认证PKI:Public Key Infrastructure

公钥基础设施:包括四部分

签证机构:CA

注册机构:RA

证书吊销列表:CRL

证书存取库:

X.509v3:国际标准化组织定义了证书的结构以及认证协议标准,x.509有三版本;

版本号:x.509的版本号;

序列号

签名算法ID:签名的使用算法;

发行者名称:CA的名称

有效期限

主体名称:证书拥有者名称;

主体公钥:

发行者的惟一标识

主体的惟一标识:证书拥有者

扩展

发行者的签名:CA的签名;

加入CA的通信过程描述:

A和B通信,检查证书:

通信之前双方都要获得彼此的公钥,因此事先要获得对方的公钥,协商使用加密算法;

双方要验证对方的公钥,第一,用CA的公钥解密CA的签名,能解密说明证书的来源可靠;第二,用同样的加密算法加密证书,计算出的特征码与解密出的特征码比较,相同说明证书的完整性可靠;第三,检查证书有效期;第四,验证主体名称是否为对方的名称;第五,检查证书是否被吊销;

注意:CA的证书是自己发的叫自签名证书;任何CA要想给别人发证书第一步先要给自己发证书,才能给别人发证书;

在不同主机间进程通信时,通过ssl加密,自动完成通信加密的,无需人工手动操作;

ssl的认证过程:

第一阶段:安全握手

1.客户端生成一个随机数RNc,并同client_hello信息发送给服务器端;

2.服务器收到后,会生成一个随机数RNs,并同server_hello信息发送给客户端;

此时双方都得到了对方的随机数;协商双方各自共同使用的算法,如;公钥加密算法、单向加密算法、对称加密算法、密钥交换的方法;

第二阶段:

3.服务器把自己的证书发给客户端;

4.并且请求客户端的证书;

5.客户端检查服务器的证书(检查证书的签发者CA、证书内容没问题、证书有效期、证书的主体名称是否一致、证书没有吊销、服务器端的公钥);

第三阶段:

6.客户端把自己的证书发给服务器端;服务器端还要检查客户端的证书(方式同上);

(一般客户端都没有证书,除非使用网银,要使用电子密码当证书来验证客户端)

7.都没问题,客户端把前面信息进行hash方式做计算,使用自己的私钥签名后发给服务器端;服务器端检查hash算法和签名;

8.都没问题,客户端生成随机的对称加密密钥(pre-master-secret)PMS,于是用服务器端的公钥(从证书中得到的服务器端的公钥)加密这个对称加密密钥后,发送给服务器端;服务器端用自己的私钥解密,得出密钥,服务器端就用这个密码加密客户端请求的网页内容,发送给客户端了;

第四阶段:

9.客户端请求通信结束,会话断开;

10.服务器端会话断开;

双方通信结束;

时间: 2024-10-05 21:51:01

加密解密技术基础及PKI的相关文章

加密解密技术基础、PKI及创建私有CA

加密解密技术基础.PKI及创建私有CA 一.背景 随着互联网的快速发展,整个互联网中涌入了大量的用户,正所谓林子大了什么鸟都有,随之而来的就是数据的安全性得不到保障:因此就有了对数据的加密及解密. 二.安全的目标 1.目标: 信息加密的目的是为了确保所传输的信息具有保密性,不被其他人所劫持后篡改信息:如果被篡改后接收方也应该能知道,而且也应该确保没被劫持的信息接收方可以读取. 2.数据在网络中传输过程中要保证三个要点: (1)数据的完整性:防止数据在传输过程中遭到未授权用户的破坏或篡改. (2)

加密解密技术基础,PKI以及创建私有CA

加密解密技术基础,PKI以及创建私有CA 加密算法和协议:1.对称加密:加密和解密使用同一个密钥 DES:Data Encryption Standard; 3DES:Triple DES; AES:Advanced Encryption Standard; (128bits, 192bits, 256bits, 384bits) Blowfish Twofish IDEA RC6 CAST5 特性: (1)加密.解密使用同一个密钥: (2)将原始数据分割成为固定大小的块,逐个进行加密: 缺陷:

加密解密技术基础、PKI、及创建私有CA

一.加密解密技术基础 (一) 安全的目标:      1.保密性,confidentiality      2.完整性,integrity         系统完整性,数据完整性      3.可用性,avaliability(二) 攻击类型:     1. 威胁保密性的攻击:窃听.通信量分析     2. 威胁完整性的攻击:更改.伪装.重放.否认     3. 威胁可用性的攻击:拒绝服务(DoS)(三) 解决方案:      技术(加密和解密).服务(用于抵御攻击的服务以及为了实现上述目标而特

加密解密技术基础,pki以及自建私有CA

网络安全议题,几乎是业内人士避不开的话题,要做到网络安全,主要旨在三个方面的目标:保密性,完整性和可用性.本文在此主要对基础的加密和解密技术,ssl协议,以及ssl协议的实现实例做一些简要描述和梳理. 加密和解密: 目前对于网络安全的攻击,很大部分集中在"威胁保密性的攻击",也就是我们进场所说的数据泄露,加密和解密是目前最为直观的解决保密性问题的手段. 几种加密方式: 对称加密: 特点:加密和解密使用同一个密钥:将数据分割成多个固定大小的块,逐个加密: 缺点:密钥过多(对于服务器端,需

加密解密技术基础、PKI及创建私有私有CA

Linux基础中的加密.解密及openssl 数据为什么要加密?      由于互联网刚开始时使用的人非常少,在互联网中交流信息的人都比较"单纯"几乎没有安全问题:但随着互联网的快速发展,整个互联网中涌入了大量的用户,正所谓林子大了什么鸟都有,随之而来的就是数据的安全性得不到保障:因此就有了对数据的加密及解密. 安全的目标       信息加密的目的是为了确保所传输的信息具有保密性,不被其他人所劫持后篡改信息:如果被篡改后接收方也应该能知道,而且也应该确保没被劫持的信息接收方可以读取.

加密和解密技术基础、PKI及创建私有CA

一.数据加密和解密概述 数据加密和解密是一门历史悠久的技术,从古代就已经出现了,一直发展到当代.其中,数据加密的目的有很多,可以是为了保证本地数据存取的安全性,可以是为了保证数据流在网络传输过程中的保密性,也可以是为了验证数据的完整性,还可以通过数据加密来实现密钥的交换等. 数据加密依赖于某种加密算法和加密密钥,而数据解密则依赖于某种解密算法和解密密钥.而在当代加密解密技术中,加密密钥既可以与解密密钥相同,也可以和解密密钥不同,这取决于使用什么方法进行加解密. 二.安全的目标 就信息传输过程来说

linux关于加密解密技术基础、KPI及创建私有CA

linux加密和解密技术基础.KPI及创建私有CA 一.加密方式分为:1.对称加密:加密和解密使用同一个密钥:      对称加密:采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,在对称加密算法中常用的算法有:DES. 3DES.TDEA.AES.    Blowfish.Twofish          IDE.ARC6.CAST5等.    特性:      1.加密.解密使用同一个密钥:      2.强原始数据分割成固定大小的块,逐个进行加密

加密解密技术基础以及公钥基础设施(PKI)

网络之间的通信通过传递报文的方式实现,在传递这些报文的过程中,为了保护报文内容不随意被窃取和修改,对报文进行加密就起到了至关重要的作用. 加密和解密:传统加密方法.现代加密方法. 传统加密算法:替换加密算法.置换加密算法. 现代加密方法:现代块加密方法. 加密和解密都依赖于算法的实现,但加密的安全性不能依赖于算法本身,因为算法是公开的,人人都可以知道.所以就需要通过另一种更安全的方式实现对数据报文的封装,这就需要密钥来实现. 密钥算法和协议:对称加密.公钥加密.单向加密.认证协议. 对称加密:加

加密和解密技术基础与OpenSSL

加密和解密技术基础与OpenSSL 加密和解密技术基础(01) 1.了解Linux  service  and  securityOpenSSL:为网络通信提供安全及数据完整性的一种安全协议 2.一般都是C/S通信,此种通信客户端有什么特性?服务端有什么特性呢?(1)两台主机上的通信方式?主机通信实际是进程间通信.通信方式:socket (套接字)ip:port          客户端cip:port<-->服务器端 scip:port(2)如何让客户知道自己的主机和端口呢?把某些众所周知的