对称密码体制是从传统的简单换位发展而来的。其主要特点是:加解密双方在加解密过程中要使用完全相同的一个密钥。使用最广泛的是DES(Data Encryption Standard)密码算法。
从1977年美国颁布DES密码算法作为美国数据加密标准以来,对称密钥密码体制得到了广泛的应用。对称密钥密码体制从加密模式上可分为序列密码和分组密码两大类。
1.序列密码
序列密码一直是作为军事和外交场合使用的主要密码技术之一。它的主要原理是:通过有限状态机产生性能优良的伪随机序列,使用该序列加密信息流,得到密文序列。所以,序列密码算法的安全强度完全决定于它所产生的伪随机序列的好坏。产生好的序列密码的主要途径之一是利用移位寄存器产生伪随机序列。目前要求寄存器的阶数大于100阶,才能保证必要的安全。序列密码的优点是错误扩展小、速度快、利于同步、安全程度高。
2.分组密码
分组密码的工作方式是将明文分成固定长度的组,如64比特一组,用同一密钥和算法对每一块加密,输出也是固定长度的密文。
对称密钥密码体制存在的最主要问题是:由于加/解密双方都要使用相同的密钥,因此在发送、接收数据之前,必须完成密钥的分发。所以,密钥的分发便成了该加密体系中的最薄弱,也是风险最大的环节,所使用的手段均很难保障安全地完成此项工作。这样,密钥更新的周期加长,给他人破译密钥提供了机会。在历史上,破获他国情报不外乎两种方式:一种是在敌方更换“密码本”的过程中截获对方密码本;另一种是敌人密钥变动周期太长,被长期跟踪,找出规律从而被破解。在对称算法中,尽管由于密钥强度增强,跟踪找出规律破解密钥的机会大大减小了,但密钥分发的困难问题几乎无法解决。例如,设有n方参与通信,若n方都采用同一个对称密钥,一旦密钥被破解,整个体系就会崩溃;若采用不同的对称密钥则需n(n-1)个密钥,密钥数与参与通信人数的平方数成正比,可见,大系统密钥的管理几乎成为不可能。
然而,由于对称密钥密码系统具有加解密速度快和安全强度高的优点,目前被越来越多地应用在军事、外交以及商业等领域。
非对称密钥密码体制
非对称密钥密码体制,即公开密钥密码体制,是现代密码学最重要的发明和进展。一般理解密码学就是保护信息传递的机密性,但这仅仅是当今密码学的一个方面。对信息发送与接收人的真实身份的验证,对所发出/接收信息在事后的不可抵赖以及保障数据的完整性也是现代密码学研究的另一个重要方面。公开密钥密码体制对这两方面的问题都给出了出色的解答,并正在继续产生许多新的思想和方案。
1976年,Diffie和Hellman为解决密钥的分发与管理问题,在他们奠基性的工作“密码学的新方向”一文中,提出一种密钥交换协议,允许在不安全的媒体上通过通讯双方交换信息,安全地传送秘密密钥。在此新思想的基础上,很快出现了公开密钥密码体制。在该体制中,密钥成对出现,一个为加密密钥(即PK公开密钥),另一个为解密密钥(SK秘密密钥),且不可能从其中一个推导出另一个。加密密钥和解密密钥不同,可将加密密钥公之于众,谁都可以使用;而解密密钥只有解密人自己知道,用公共密钥加密的信息只能用专用密钥解密。由于公开密钥算法不需要联机密钥服务器,密钥分配协议简单,所以极大地简化了密钥管理。除加密功能外,公钥系统还可以提供数字签名。目前,公开密钥加密算法主要有RSA、Fertezza、EIGama等。
迄今为止的所有公钥密码体系中,RSA系统是最著名、使用最广泛的一种。RSA公开密钥密码系统是由R.Rivest、A.Shamir和L.Adleman三位教授于1977年提出的,RSA的取名就是来自于这三位发明者姓氏的第一个字母。
RSA算法研制的最初目标是解决利用公开信道传输分发 DES 算法的秘密密钥的难题。而实际结果不但很好地解决了这个难题,还可利用 RSA 来完成对电文的数字签名,以防止对电文的否认与抵赖,同时还可以利用数字签名较容易地发现攻击者对电文的非法篡改,从而保护数据信息的完整性。
公用密钥的优点就在于:也许使用者并不认识某一实体,但只要其服务器认为该实体的CA(即认证中心Certification Authority的缩写)是可靠的,就可以进行安全通信,而这正是Web商务这样的业务所要求的。例如使用信用卡购物,服务方对自己的资源可根据客户 CA的发行机构的可靠程度来授权。目前国内外尚没有可以被广泛信赖的CA,而由外国公司充当CA在我国是非常危险的。
公开密钥密码体制较秘密密钥密码体制处理速度慢,因此,通常把这两种技术
对称加密就是指,加密和解密使用同一个密钥的加密方式。需要用到的有加密算法和加密秘钥。例如加密算法可以类似这样的加密规则(a -b,b-w,c-a)
发送方使用密钥将明文数据加密成密文,然后发送出去,接收方收到密文后,使用同一个密钥将密文解密成明文读取。
优点:加密计算量小、速度快,效率高,适合对大量数据进行加密的场景。
缺点:(1)密钥不适合在网上传输(容易被截取),(2)密钥维护麻烦
DES 、3DES、Blowfish、IDEA、RC4、RC5、RC6和AES。
数据加密标准DES属于常规密钥密码体制,是一种分组密码。加密前,先对整个明文进行分组,每一组长为64位,然后对每一个64位二进制数据进行加密处理,产生一组64位密文数据。最后将各组密文串接起来,即得出整个的密文。使用的密钥为64位(实际密钥长度为56位,有8位用于奇偶检验)
DES的保密性取决于密钥的保密,而算法是公开的。尽管人们在破译DES方面取得了许多进展,但至今仍未能找到比穷举搜索密钥更有效的方法。DES是世界上第一个公认的实用密码算法标准,它曾对密码学的发展做出了重大贡献。目前较为严重的问题是DES的密钥长度,现在已经设计出搜索DES密钥的专用芯片。
DES算法安全性取决于密钥长度,56位密钥破解需要3.5到21分钟,128位密钥破解需要5.4 * 10^18次方年
注意的是:这里是没有密钥的情况下,直接穷举密钥尝试破解。如果密钥在传送过程中被人截取了,就相当于直接知道加密规则了,根本不需要破解,因此密钥在网络中传送还是不安全。
与对称加密算法不同,非对称加密算法需要密钥对,即两个密钥:公开密钥(公钥)和私有密钥(私钥)。
公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
公钥和私钥是怎么来的?
操作系统随机生成一个随机数,将这个随机数通过某个函数进行运算,分成两部分,公钥和私钥
优点:安全性高
缺点:加密与解密速度慢。
RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)。
答案是不能
鉴于非对称加密的机制,我们可能会有这种思路:服务器先把公钥直接明文传输给浏览器,之后浏览器向服务器传数据前都先用这个公钥加密好再传,这条数据的安全似乎可以保障了! 因为只有服务器有相应的私钥能解开这条数据 。
然而 由服务器到浏览器的这条路怎么保障安全? 如果服务器用它的的私钥加密数据传给浏览器,那么浏览器用公钥可以解密它,而这个公钥是一开始通过明文传输给浏览器的,这个公钥被谁劫持到的话,他也能用该公钥解密服务器传来的信息了。所以 目前似乎只能保证由浏览器向服务器传输数据时的安全性 (其实仍有漏洞,下文会说)。
1、先通过非对称加密技术,把对称加密的密钥X传给对方,使得这个对称加密的密钥X是安全的
2、后面再通过对称加密技术进行数据传输
详细流程
(1)服务器端拥有用于非对称加密的 公钥A 、 私钥A’ 。
(2)客户端向网站服务器请求,服务器先把 公钥A 明文给传输浏客户端
(3)客户端随机生成一个用于对称加密的 密钥X ,用 公钥A 加密后传给服务器端。
(4)服务器端拿到后用 私钥A’ 解密得到 密钥X 。
(5)这样双方就都拥有 密钥X 了,且别人无法知道它。之后双方所有数据都用 密钥X 加密解密。
数字签名是基于公钥密码体制(非对称密钥密码体制)的。
数字签名必须保证以下三点:
上图位用户A使用数字签名向用户B传输一份文件的过程:
什么时候使用这种不对文件加密,而对文件的摘要加密(对文件进行签名)的技术呢?
注意: 这里强调的是只有“A公钥” 上有认证机构CA的数字签名,意思是CA用它的私钥对“A公钥”的内容进行单向散列函数得到的 加密摘要(数字签名) ,该签名放在“A公钥”中(左上角那个),对于B用户来说,它从可靠的路径拿到CA的公钥,使用CA的公钥解密“A公钥”的内容得到的128位的摘要 和 “A公钥”的内容通过单向散列函数计算出来的是否一致,如果是表示认可这个“A公钥”
当用户A遗失或泄露了CA颁发的证书后,为了避免他人使用该证书冒充用户A,用户A向认证机构CA "挂失" 该证书。于是认证机构CA把该证书放入该认证机构的证书吊销列表(CRL)中,并在网上公示。
用户B在收到用户A的公钥时,除了要验证该公钥是否位认证机构颁发的,还要登录认证机构的网站查看该公钥是否已被认证机构吊销变为无效证书。
认证机构CA的作用:
1、http连接很简单,是无状态的,明文传输。https协议 = http协议 + SSL,可以进行加密传输,身份认证
2、http连接的是80端口,https连接的是443端口
3、https协议需要服务器端到CA申请SSL证书,即客户端请求的时候,服务器端发送SSL证书给客户端,SSL证书内容包括公钥、CA机构的数字签名。验证了服务器端的身份以及公钥的可靠性。 (注意:混合加密那里“将公钥A给客户端”,严格的来说是把SSL证书给客户端)
SSL提供以下三个功能
1、 SSL服务器鉴别。允许用户证实服务器的身份。 具有SSL功能的浏览器维持一个表,上面有一些可信赖的认证中心CA和它们的公钥
2、 SSL客户鉴别。允许服务器证实客户的身份。
3、 加密的SSL会话,通过混合加密实现的 。客户和服务器交互的所有数据都是发送方加密,接受方解密
SSL的位置
(1)方法:get,post,head,put,delete,option,trace,connect
(2)URL字段
(3)HTTP协议版本
User-Agent:产生请求的浏览器类型
Aceept:客户端可识别的内容类型列表
Host:主机地址
200:请求被成功处理
301:永久性重定向
302:临时性重定向
403:没有访问权限
404:没有对应资源
500:服务器错误
503:服务器停机
HTTP协议的底层使用TCP协议,所以HTTP协议的长连接和短连接在本质上是TCP层的长连接和短连接。由于TCP建立连接、维护连接、释放连接都是要消耗一定的资源,浪费一定的时间。所对于服务器来说,频繁的请求释放连接会浪费大量的时间,长时间维护太多的连接的话又需要消耗资源。所以长连接和短连接并不存在优劣之分,只是适用的场合不同而已。长连接和短连接分别有如下优点和缺点:
注意: 从HTTP/1.1版本起,默认使用长连接用以保持连接特性。 使用长连接的HTTP协议,会在响应消息报文段加入: Connection: keep-alive。TCP中也有keep alive,但是TCP中的keep alive只是探测TCP连接是否活着,而HTTP中的keep-alive是让一个TCP连接获得更久一点。
1、性质不同:RSA公开密钥密码体制是一种使用不同的加密密钥与解密密钥。DES算法为密码体制中的对称密码体制,是1972年美国IBM公司研制的对称密码体制加密算法。
2、特点不同:密钥事实上是56位参与DES运算分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。RSA算法是由已知加密密钥推导出解密密钥在计算上是不可行的密码体制。
3、密钥数字不同:RSA允许选择公钥的大小。512位的密钥被视为不安全的;768位的密钥不用担心受到除了国家安全管理(NSA)外的其他事物的危害,1024位的密钥几乎是安全的。DES算法把64位的明文输入块变为64位的密文输出块,所使用的密钥也是64位。
扩展资料:
注意事项:
当改变明文的前8字节时,只会影响密文的前8字节,密文后8字节不变。因此,在应用3DES算法对线路传输数据加密过程中,若想保证密文的整体变化,要保证每块明文数据都是变化的。
使用者在设置密钥的时候应注意,密钥的前后8字节不要完全一样,否则就变为了DES算法,安全强度就会下降(用户可根据Cn=Ek3(Dk2(Ek1(Mn)))公式自行推导)。需要特别留意的是,密钥每字节中的最后一位是检验位,不会参与到加密运算中。
参考资料来源:百度百科-RSA算法
参考资料来源:百度百科-des算法
des属于对称密码体制。
DES算法为密码体制中的对称密码体制,又被称为美国数据加密标准,是1972年美国IBM公司研制的对称密码体制加密算法。明文按64位进行分组,密钥长64位,密钥事实上是56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位,使得每个密钥都有奇数个1)分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。
其入口参数有三个:key、data、mode。key为加密解密使用的密钥,data为加密解密的数据,mode为其工作模式。当模式为加密模式时,明文按照64位进行分组,形成明文组,key用于对数据加密,当模式为解密模式时,key用于对数据解密。实际运用中,密钥只用到了64位中的56位,这样才具有高的安全性。
DES (Data Encryption Standard)是分组对称密码算法。
DES算法利用 多次组合替代算法 和 换位算法 ,分散和错乱的相互作用,把明文编制成密码强度很高的密文,它的加密和解密用的是同一算法。
DES算法,是一种 乘积密码 ,其在算法结构上主要采用了 置换 、 代替 、 模二相加 等函数,通过 轮函数 迭代的方式来进行计算和工作。
DES算法也会使用到数据置换技术,主要有初始置换 IP 和逆初始置换 IP^-1 两种类型。DES算法使用置换运算的目的是将原始明文的所有格式及所有数据全部打乱重排。而在轮加密函数中,即将数据全部打乱重排,同时在数据格式方面,将原有的32位数据格式,扩展成为48位数据格式,目的是为了满足S盒组对数据长度和数据格式规范的要求。
一组数据信息经过一系列的非线性变换以后,很难从中推导出其计算的过程和使用的非线性组合;但是如果这组数据信息使用的是线性变换,计算就容易的多。在DES算法中,属于非线性变换的计算过程只有S盒,其余的数据计算和变换都是属于线性变换,所以DES算法安全的关键在于S盒的安全强度。此外,S盒和置换IP相互配合,形成了很强的抗差分攻击和抗线性攻击能力,其中抗差分攻击能力更强一些。
DES算法是一种分组加密机制,将明文分成N个组,然后对各个组进行加密,形成各自的密文,最后把所有的分组密文进行合并,形成最终的密文。
DES加密是对每个分组进行加密,所以输入的参数为分组明文和密钥,明文分组需要置换和迭代,密钥也需要置换和循环移位。在初始置换IP中,根据一张8*8的置换表,将64位的明文打乱、打杂,从而提高加密的强度;再经过16次的迭代运算,在这些迭代运算中,要运用到子密钥;每组形成的初始密文,再次经过初始逆置换 IP^-1 ,它是初始置换的逆运算,最后得到分组的最终密文。
图2右半部分,给出了作用56比特密钥的过程。DES算法的加密密钥是64比特,但是由于密钥的第n*8(n=1,2…8)是校验(保证含有奇数个1),因此实际参与加密的的密钥只有 56比特 。开始时,密钥经过一个置换,然后经过循环左移和另一个置换分别得到子密钥ki,供每一轮的迭代加密使用。每轮的置换函数都一样,但是由于密钥位的重复迭代使得子密钥互不相同。
DES算法 利用多次组合替代算法和换位算法,分散和错乱的相互作用,把明文编制成密码强度很高的密文,它的加密和解密用的是同一算法。
DES算法详述:DES对64位明文分组(密钥56bit)进行操作。
1、 初始置换函数IP:64位明文分组x经过一个初始置换函数IP,产生64位的输出x0,再将分组x0分成左半部分L0和右半部分R0:即将输入的第58位换到第一位,第50位换到第2位,…,依次类推,最后一位是原来的第7位。L0、R0则是换位输出后的两部分,L0是输出的左32位,R0是右32位。例,设置换前的输入值为D1D2D3…D64,则经过初始置换后的结果为:L0=D58D50…D8;R0=D57D49…D7.其置换规则如表1所示。
DES加密过程最后的逆置换 IP^-1 ,是表1的 逆过程 。就是把原来的每一位都恢复过去,即把第1位的数据,放回到第58位,把第2位的数据,放回到第50位。
2、 获取子密钥 Ki :DES加密算法的密钥长度为56位,一般表示为64位(每个第8位用于奇偶校验),将用户提供的64位初始密钥经过一系列的处理得到K1,K2,…,K16,分别作为 1~16 轮运算的 16个子密钥 。
(1). 将64位密钥去掉8个校验位,用密钥置换 PC-1 (表2)置换剩下的56位密钥;
(2). 将56位分成前28位C0和后28位D0,即 PC-1(K56)=C0D0 ;
(3). 根据轮数,这两部分分别循环左移1位或2位,表3:
(4). 移动后,将两部分合并成56位后通过压缩置换PC-2(表4)后得到48位子密钥,即Ki=PC-2(CiDi).
子密钥产生如图2所示:
3、 密码函数F(非线性的)
(1). 函数F的操作步骤:密码函数F 的输入是32比特数据和48比特的子密钥:
A.扩展置换(E):将数据的右半部分Ri从32位扩展为48位。位选择函数(也称E盒),如表5所示:
B.异或:扩展后的48位输出E(Ri)与压缩后的48位密钥Ki作异或运算;
C.S盒替代:将异或得到的48位结果分成八个6位的块,每一块通过对应的一个S盒产生一个4位的输出。
(2)、D、P盒置换:将八个S盒的输出连在一起生成一个32位的输出,输出结果再通过置换P产生一个32位的输出即:F(Ri,Ki),F(Ri,Ki)算法描述如图3,最后,将P盒置换的结果与最初的64位分组的左半部分异或,然后,左、右半部分交换,开始下一轮计算。
4、密文输出:经过16次迭代运算后,得到L16、R16,将此作为输入,进行逆置换,即得到密文输出。逆置换正好是初始置的逆运算。例如,第1位经过初始置换后,处于第40位,而通过逆置换,又将第40位换回到第1位,其逆置换规则如表8所示:
图4为DES算法加密原理图:
DES算法加密和解密过程采用相同的算法,并采用相同的加密密钥和解密密钥,两者的区别是:(1)、DES加密是从L0、R0到L15、R15进行变换,而解密时是从L15、R15到L0、R0进行变换的;(2)、加密时各轮的加密密钥为K0K1…K15,而解密时各轮的解密密钥为K15K14…K0;(3)、加密时密钥循环左移,解密时密钥循环右移。
DES加密过程分析:
(1)、首先要生成64位密钥,这64位的密钥经过“子密钥算法”换转后,将得到总共16个子密钥。将这些子密钥标识为Kn(n=1,2,…,16)。这些子密钥主要用于总共十六次的加密迭代过程中的加密工具。
(2)、其次要将明文信息按64位数据格式为一组,对所有明文信息进行分组处理。每一段的64位明文都要经过初试置换IP,置换的目的是将数据信息全部打乱重排。然后将打乱的数据分为左右两块,左边一块共32位为一组,标识为L0;右边一块也是32位为一组,标识为R0.
(3)、置换后的数据块总共要进行总共十六次的加密迭代过程。加密迭代主要由加密函数f来实现。首先使用子密钥K1对右边32位的R0进行加密处理,得到的结果也是32位的;然后再将这个32位的结果数据与左边32位的L0进行模2处理,从而再次得到一个32位的数据组。我们将最终得到的这个32位组数据,作为第二次加密迭代的L1,往后的每一次迭代过程都与上述过程相同。
(4)、在结束了最后一轮加密迭代之后,会产生一个64位的数据信息组,然后我们将这个64位数据信息组按原有的数据排列顺序平均分为左右两等分,然后将左右两等分的部分进行位置调换,即原来左等分的数据整体位移至右侧,而原来右等分的数据则整体位移至左侧,这样经过合并后的数据将再次经过逆初始置换IP^-1的计算,我们最终将得到一组64位的密文。
DES解密过程分析:DES的解密过程与它的加密过程是一样的,这是由于DES算法本身属于对称密码体制算法,其加密和解密的过程可以共用同一个过程和运算。
DES加密函数f:在DES算法中,要将64位的明文顺利加密输出成64位的密文,而完成这项任务的核心部分就是加密函数f。加密函数f的主要作用是在第m次的加密迭代中使用子密钥Km对Km-1进行加密操作。加密函数f在加密过程中总共需要运行16轮。
十六轮迭代算法:它先将经过置换后的明文分成两组,每组32位;同时密钥也被分成了两组,每组28位,两组密钥经过运算,再联合成一个48位的密钥,参与到明文加密的运算当中。S盒子,它由8个4*16的矩阵构成,每一行放着0到15的数据,顺序各个不同,是由IBM公司设计好的。经过异或运算的明文,是一个48位的数据,在送入到S盒子的时候,被分成了8份,每份6位,每一份经过一个S盒子,经过运算后输出为4位,即是一个0到15的数字的二进制表示形式。具体运算过程为,将输入的6位中的第1位为第6位合并成一个二进制数,表示行号,其余4位也合并成一个二进制数,表示列号。在当前S盒子中,以这个行号和列号为准,取出相应的数,并以二进制的形式表示,输出,即得到4位的输出,8个S盒子共计32位。
DES算法优缺点:
(1)、产生密钥简单,但密钥必须高度保密,因而难以做到一次一密;
(2)、DES的安全性依赖于密钥的保密。攻击破解DES算法的一个主要方法是通过密钥搜索,使用运算速度非常高的计算机通过排列组合枚举的方式不断尝试各种可能的密钥,直到破解为止。一般,DES算法使用56位长的密钥,通过简单计算可知所有可能的密钥数量最多是2^56个。随着巨型计算机运算速度的不断提高,DES算法的安全性也将随之下降,然而在一般的民用商业场合,DES的安全性仍是足够可信赖的。
(3)、DES算法加密解密速度比较快,密钥比较短,加密效率很高但通信双方都要保持密钥的秘密性,为了安全还需要经常更换DES密钥。
参考链接 :