本文目录一览:
公钥真实性两种机制
一、基础知识:
1、互联网上中间人攻击通常用的三种方式:1)窃听 2)数据篡改 3)会话劫持
2、数据加密的常用的三种方式有:对称加密、非对称加密、单向加密。
3、ssl:secure socket layer,安全的套接字层。
4、TLS:Transport Layer Security,功能类似于ssl。
5、随机数生成器:/dev/random 和 /dev/urandom 。 -salt:依赖于随机数生成器。
6、随机数的来源:熵池和伪随机数生成器。熵池中的随机数来自块设备中断和键盘和鼠标的敲击时间间隔;伪随机数生成器中的随机数来自于熵池和软件产生。
7、openssl rand [base64] num 也可以用来生成随机数。
8、echo –n “QQ”|openssl base64,表示对QQ做base64编码。
二、对称加密:
1、加密方和解密方使用同一个密钥。
2、加密解密的速度比较快,适合数据比较长时的使用。
3、密钥传输的过程不安全,且容易被破解,密钥管理也比较麻烦。
4、加密算法:DES(Data Encryption Standard)、3DES、AES(Advanced Encryption Standard,支持128、192、256、512位密钥的加密)、Blowfish。
5、加密工具:openssl、gpg(pgp工具)
三、非对称加密(公钥加密):
1、每个用户拥用一对密钥加密:公钥和私钥。
2、公钥加密,私钥解密;私钥加密,公钥解密。
3、公钥传输的过程不安全,易被窃取和替换。
4、由于公钥使用的密钥长度非常长,所以公钥加密速度非常慢,一般不使用其去加密。
5、某一个用户用其私钥加密,其他用户用其公钥解密,实现数字签名的作用。
6、公钥加密的另一个作用是实现密钥交换。
7、加密和签名算法:RSA、ELGamal。
8、公钥签名算法:DSA。
9、加密工具:gpg、openssl
四、单向加密:
1、特征:雪崩效应、定长输出和不可逆。
2、作用是:确保数据的完整性。
3、加密算法:md5(标准密钥长度128位)、sha1(标准密钥长度160位)、md4、CRC-32
4、加密工具:md5sum、sha1sum、openssl dgst。
5、计算某个文件的hash值,例如:md5sum/shalsum FileName,openssl dgst –md5/-sha1 FileName。
五、密钥交换的两种机制:
1、公钥加密实现:发送方用接收方的公钥加密自己的密钥,接收方用自己的私钥解密得到发送方的密钥,逆过来亦然,从而实现密钥交换。
2、使用DH算法:前提发送方和接受方协商使用同一个大素数P和生成数g,各自产生的随机数X和Y。发送方将g的X次方mod P产生的数值发送给接收方,接受方将g的Y次方mod P产生的数值发送给发送方,发送方再对接收的结果做X次方运算,接受方对接收的结果做Y次方运算,最终密码形成,密钥交换完成。
六、同时实现数据的完整性、数据加密和身份验证所使用到的机制如下:
假设Bob和Rose进行通信:
1】加密过程:
Bob使用单向加密算法得出发送数据的特征码(用于数据完整性检测),Bob用自己的私钥加密此特征码(实现身份验证),并将此特征码置于数据的后面。Bob再生成一个密码D,用此密码加密加密过的特征码和数据(实现数据加密),此时生成的数据我们称其为Q,最后用Rose的公钥加密该密码D,并将D置于Q的后面。
2】解密过程:
Rose用自己的私钥解密得到D,然后用D解密得到数据和加密过得特征码,再用Bob的公钥解密此特征码,如果可以解密,则说明该数据是Bob发送的,反之,则不是。最后用单向加密算法计算该段数据的特征码,通过比较发送过来的特征码和Rose通过计算得到的特征码来确定此数据是否被篡改掉,如果特征码一致,则数据未发生改变;如果特征码不一致,则数据发生过改变。
七、openssl:
1)组件:libcrypto:加密库。
libssl:实现ssl功能的库。
openssl:多用途的加密工具,能够提供对称加密、公钥加密、单向加密,且可以作为一个简单的本地CA用。
2)在对称加密中,使用openssl实现对某个文件加密:
openssl enc -des3 -salt -a -in plaintext -out ciphertext.des3
使用openssl实现解密:
openssl enc -d -des3 -salt -a -in ciphertext.des3 -out plaintext
3)openssl version:查看openssl的版本信息。
4)openssl :进入openssl的命令行模式。
5)openssl speed:测试某种加密算法加密不同长度密钥的速率。
6)在公钥加密中,openssl可以用来生成私钥。
openssl genrsa 指定生成的私钥长度 保存到的文件名
openssl genrsa [des3] -out 保存到的文件名 指定生成的私钥长度
在生成密钥文件的同时修改密钥文件的权限:(umask 077; openssl genrsa 指定生成的私钥长度 保存到的文件名)
openssl genrsa 指定生成的私钥长度 [-des3](加密私钥文件) 保存到的文件名。
openssl genrsa [-des3] -out 保存到的文件名 指定生成的私钥长度
当私钥在生成的时候,文件未加密,则可以使用如下格式对未加密的私钥文件进行加密并保存:openssl rsa in 未加密私钥存放的文件 –des3 -out 保存到的文件名
解密私钥:openssl rsa in 需要解密的私钥文件 –out 保存到的文件名。
7)公钥在私钥中提取出:openssl rsa –in my.key -pubout 指定保存公钥的文件名。
在 diffie-hellman 密钥交换过程中,什么是 man-in-the-middle 攻击
密钥管理密钥是一种读取、修改或验证保护数据的保密代码或数字。密钥与算法(一个数学过程)结合在一起以保护数据。Windows XP 自动处理密钥生成并执行以下可以最大化保护的密钥属性:
动态重生成密钥
IPSec 策略通过一种称为动态重新加密的方法来控制通讯期间生成新密钥的频率。通讯是以块的形式发送的,每个数据块都使用不同的密钥来加以保护。这样可防止已经获取部分通讯与相应的会话密钥的攻击者获取其余部分的通讯。该请求安全协商与自动密钥管理服务是通过使用 RFC 2409 中定义的“Internet 密钥交换 (IKE)”来提供的。
IPSec 策略允许您控制生成新密钥的频率。如果未配置值,则以默认时间间隔自动重新生成密钥。
密钥长度
每当密钥的长度增加一位,可能的密钥数会加倍,使得破解密钥的难度也会成倍加大。IPSec 策略提供了多种允许使用短的或长的密钥长度的算法。
密钥材料生成:Diffie-Hellman 算法
要启用安全通讯,两台计算机必须能够获取相同的共享密钥(会话密钥),而不必通过网络发送密钥,也不会泄密。
Diffie-Hellman 算法 (DH) 先于 Rivest-Shamir-Adleman (RSA) 加密出现,可提供较好的性能。它是用于密钥交换的最古老且最安全的算法之一。双方可以公开交换密钥信息,而 Windows XP 还通过哈希功能签名对该信息进行进一步保护。任何一方都不交换实际密钥,但是,在交换密钥材料之后,每一方都能够生成相同的共享密钥。
双方交换的 DH 密钥材料可以基于 768 位或 1024 位密钥材料,即 DH 组。DH 组提供的安全性与从 DH 交换计算的密钥提供的安全性相称。提供很强安全性的 DH 组与较长的密钥长度结合使用,增加了试图确定密钥的计算难度。
IPSec 使用 DH 算法为所有其他加密密钥提供密钥材料。DH 不提供验证。在 Windows XP IPSec 实施中,进行 DH 交换之后,会对标识进行验证,以防中间人 (man-in-the-middle) 攻击。
什么是DH协议的中间人
DH协议的中间人是Diffie-Hellman密钥协议算法是一种确保共享密钥KEY安全穿越不安全网络的方法,它是OAKLEY的一个组成部分,由Whitefield与Martin Hellman在1976年提出。这个机制的巧妙在于需要安全通信的双方可以用这个方法确定对称密钥。然后可以用这个密钥进行加密和解密。但是注意,这个密钥交换协议/算法只能用于密钥的交换,而不能进行消息的加密和解密。双方确定要用的密钥后,要使用其他对称密钥操作加密算法实际加密和解密消息。
如何改进DH算法,使其抵御中间人攻击
改进DH算法使其抵御中间人攻击的方法是:在途中根据需要修改它们的密文,使得A和B都不知道他们在和C共享通信。
DH算法的缺点是没有提供双方身份的任何信息.。它是计算密集性的,因此容易遭受阻塞性攻击,即对手请求大量的密钥。受攻击者花费了相对多的计算资源来求解无用的幂系数而不是在做真正的工作.,没办法防止重演攻击。
容易遭受中间人的攻击,第三方C在和A通信时扮演B;和B通信时扮演A.A和B都与C协商了一个密钥,然后C就可以监听和传递通信量。
扩展资料:
基于原根的定义及性质,可以定义Diffie-Hellman密钥交换算法.该算法描述如下:
1、有两个全局公开的参数,一个素数q和一个整数a,a是q的一个原根。
2、假设用户A和B希望交换一个密钥,用户A选择一个作为私有密钥的随机数XA(XAq),并计算公开密钥YA=a^XA mod q。A对XA的值保密存放而使YA能被B公开获得。类似地用户B选择一个私有的随机数XBq,并计算公开密钥YB=a^XB mod q。B对XB的值保密存放而使YB能被A公开获得。
3、用户A产生共享秘密密钥的计算方式是K = (YB)^XA mod q.同样,用户B产生共享秘密密钥的计算是K = (YA)^XB mod q.这两个计算产生相同的结果:
K = (YB)^XA mod q = (a^XB mod q)^XA mod q = (a^XB)^XA mod q = a^(XBXA) mod q = (a^XA)^XB mod q = (a^XA mod q)^XB mod q = (YA)^XB mod q 因此相当于双方已经交换了一个相同的秘密密钥。
参考资料来源:百度百科-Diffie-Hellman