标签:
DES是1977年美国联邦信息处理标准中使用的一种对称密码技术,曾今被美国和其他国家政府银行使用。
不过现在已被暴力破解,我们除了用它解密以前的密文外,已不再使用DES了。不过这里我们可以用它来了解下什么是对称加密。
<!--more-->
DES是一种把64比特明文加密成64比特的密文的对称密码算法,密钥长度56位,其中每隔7比特有个错误检查比特。结果DES密钥总长度为64比特。
DES以64比特明文为一个单位进行加密,这64比特单位称为分组。so,以分组为单位处理密码的算法称为分组密码。DES属于分组密码。
DES每次只能加密64比特数据,如果明文较长,就需要对DES加密进行迭代,迭代的具体方式称为模式。后文会描述。
图DES加密与解密流程
三重DES只是将DES重复3次,为了增加DES强度
目前很安全
。。。。。
.....好多.....
在对称密码中,由于加密解密的密钥是相同的,因此密钥配送就成了问题。如过使用公钥密码,就解决了配送问题。
解决密钥配送有多个方法,但都很难处理
两种密钥。一种是加密密钥,一种是解密密钥
这里有公钥和私钥,公钥和私钥既可以当做加密密钥,也可以做解密密钥。只是使用场景不同
你既可以用公钥加密,私钥解密。也可以用公钥解密,私钥加密。区别只是在于使用场景。
公钥和私钥是一一对应的,一对公钥和私钥统称为密钥对
我们来看一种公钥加密,私钥解密的情景。
Alice要发消息给Bob
如图所示
我们后面讨论这两个问题
RSA加密
密文 = 明文 E mod N (mod是取模的意思)
E和N的组合就是公钥 简称 “公钥是(E,N)”
RSA解密
明文 = 密文 D mod N
D和N的组合就是私钥
这个逻辑很简单,中间人替换掉了接受者得公钥,向对方提供了自己的公钥。结果发送者用的中间人的公钥加密消息发送出去,中间人接受到消息并用自己私钥解密得到明文。再伪造一个假消息用接受者的公钥加密还给接受者。具体流程如图:
组成机制:
加密:
解密:
输入称为消息,输出称为散列值。
单向散列函数可以根据消息的内容计算出散列值,而散列值就可以被用来检查消息的完整性。
单项散列函数又称为消息摘要函数,哈希函数或者杂凑函数
消息的认证是指:“消息来自正确的发送者”。通过使用消息认证码,我们就可以同时识别出篡改和伪装,既可以确认消息完整性,也可以进行认证。
消息认证码的输入包括任意消息的长度和一个接受者和发送者之间的共享密钥,输出是固定长度,这个数据称为MAC值。
消息认证码是一种与密钥相关联的单项散列函数。
如图:
使用步骤:如图
数字签名就是将公钥反过来用实现的。
公钥加密就是用公钥加密消息,用私钥解密密文。
而数字签名是用私钥对消息生成签名,传输数字签名的密文,最后用公钥解密验证签名。
如图所示:
解释一下:用私钥加密所得的密文,只能用公钥才能解密。这就是说,如果某个公钥成功解密了密文,那就证明这段密文是由与他配对的私钥进行加密所得的。
对消息的散列值签名
如图:
签名 = 消息的D次方 mod N
D和N就是签名者的私钥
有签名求得的消息 = 签名的E次方 mod N
E和N就是签名者的公钥
公钥必须属于真正的发送者。即使数字签名算法再强大,如果你得到的公钥是伪造的,那么数字签名也会完全失败。我们需要使用一种社会性的基础设施,即公钥基础设施。简称PKI。
见下文。
公钥证书和身份证,驾照很相似,里面有姓名,证件号,地址等个人信息,以及属于此人的公钥,由认证机构施加数字签名。只要看到公钥证书,我们就可以知道认证机构认定该公钥的确属于此人。公钥证书简称证书。
如图:
公钥基础设施是为了能够更有效地运用公钥而制定的一系列规范和规格的总称。
分两种:1.一种是使用PKI注册自己的公钥的人。
2.另一种是使用已注册的公钥的人。
认证机构接受对证书进行管理的人。认证机构具体行为如下:
保管证书的数据库,也叫证书目录
PKI组成要素
Diffie-Hellman 密钥交换算法,通信双方仅通过交换一些可以公开的信息就能够生产出共享密钥的
基于口令的密码就是一种根据口令生成的密钥并用该密钥进行加密的方法。其中加密和解密使用同一种密钥
PBE加密过程如图:
3个步骤:
PBE解密过程:
个人觉得是不是箭头反了?
生成密钥
用于对称密码和消息认证码
生成密钥对
用于公钥密码和数字签名
生成初始化向量(IV)
用于分组密码的CBC,CFB和OFB模式
生成nonce
用于防御重放攻击以及分组密码的CTR模式等
生成盐
用于基于口令的密码(PBE)等
其中生成密钥和生成密钥对是最重要的,即使密码强度再高,只要攻击者知道了密钥,就会立刻变得形同虚设。因此我们需要用随机数来生成密钥,使之无法被攻击者看穿。
如图
通过硬件生成的随机数列是根据传感器收集的热量,声音的变化等事实上是无法预测的。像这样的设备就称为随机数生成器。
而可以生成随机数的软件则称为伪随机数生成器。因为软件无法生成真随机数。
伪随机数生成器具有“内部状态”,并根据外部输入的“种子”来生成伪随机数列
伪随机数生成器的内部状态,是指伪随机数生成器岁管理的内存中的数值。
当有一条伪随机数的请求时,伪随机数生成器会根据内存中的数值进行技术,并将结果输出。随后改变自己的内部状态。因此,根据内部状态计算伪随机数的方法和改变内部状态的方法组合起来,就是伪随机数生成的算法。
伪随机数的种子是用来对伪随机数生成器的内部状态进行初始化。伪随机数生成器是公开的,但种子是需要自己保密的。由于种子不可以被攻击者知道,因此不可以使用容易被预测的值。
用PGP加密
用PGP解密
用PGP生成数字签名
PGP验证数字签名
PGP生成数字签名并加密
PGP解密并验证数字签名
标签:
原文地址:http://blog.csdn.net/liangliang103377/article/details/51460601