深入理解密码技术

对称加密:

DES

DES是1977年美国联邦信息处理标准中使用的一种对称密码技术,曾今被美国和其他国家政府银行使用。

不过现在已被暴力破解,我们除了用它解密以前的密文外,已不再使用DES了。不过这里我们可以用它来了解下什么是对称加密。

<!--more-->

加密和解密

DES是一种把64比特明文加密成64比特的密文的对称密码算法,密钥长度56位,其中每隔7比特有个错误检查比特。结果DES密钥总长度为64比特。

分组密码

DES以64比特明文为一个单位进行加密,这64比特单位称为分组。so,以分组为单位处理密码的算法称为分组密码。DES属于分组密码。

DES每次只能加密64比特数据,如果明文较长,就需要对DES加密进行迭代,迭代的具体方式称为模式。后文会描述。

图DES加密与解密流程

三重DES

三重DES只是将DES重复3次,为了增加DES强度

AES

目前很安全

。。。。。

分组密码模式

.....好多.....

非对称加密

公钥密码

在对称密码中,由于加密解密的密钥是相同的,因此密钥配送就成了问题。如过使用公钥密码,就解决了配送问题。

密钥配送问题:

解决密钥配送有多个方法,但都很难处理

  1. 双方通信时如果要加密,密钥不能在通信内容中。否则会被中间人窃听。
  2. 双方可以事先共享密钥,如果双方离得很近自然好说。但如果离得很远就不能在消息里传播密钥,因为可能会被窃听。邮寄存储卡也可能会被窃取。假如一个公司有1000人需要彼此加密通信,那密钥数可能会达到50万个,这个不现实。
  3. 如果有个密钥分配中心存储密钥,那1000人的数据库会有1000个密钥。但如果员工增加,密钥也要增加,数据库负荷会加大,如果数据库瘫痪,全公司的通信就会瘫痪。密钥分配中心也可能会遭到攻击.
  4. Diffie-Hellman密钥交换。是个方案。我们在后续会讨论
公钥密码解决配送问题

两种密钥。一种是加密密钥,一种是解密密钥

这里有公钥和私钥,公钥和私钥既可以当做加密密钥,也可以做解密密钥。只是使用场景不同

你既可以用公钥加密,私钥解密。也可以用公钥解密,私钥加密。区别只是在于使用场景。

公钥和私钥是一一对应的,一对公钥和私钥统称为密钥对

我们来看一种公钥加密,私钥解密的情景。

Alice要发消息给Bob

  1. Bob要接受消息,生成密钥对。私钥自己保管,公钥发给Alice
  2. 公钥被截获也没关系。因为公钥只负责加密
  3. Alice用公钥对消息加密,发送给Bob。
  4. 即使密文中间被截获也没关系,公钥无法解密
  5. Bob用自己私钥揭秘

如图所示

公钥密码的问题
  1. 公钥是否是正确合法的.假如中间人给你换了个公钥呢?
  2. 处理速度要比对称加密慢很多,大约只有百分之一

我们后面讨论这两个问题

RSA

RSA加密

密文 = 明文 E mod N (mod是取模的意思)

E和N的组合就是公钥 简称 “公钥是(E,N)”

RSA解密

明文 = 密文 D mod N

D和N的组合就是私钥

中间人攻击

这个逻辑很简单,中间人替换掉了接受者得公钥,向对方提供了自己的公钥。结果发送者用的中间人的公钥加密消息发送出去,中间人接受到消息并用自己私钥解密得到明文。再伪造一个假消息用接受者的公钥加密还给接受者。具体流程如图:

混合密码技术

组成机制:

  • 用对称密码加密消息
  • 通过伪随机数生成器生成对称密码加密中使用的会话密钥
  • 用公钥加密会话密钥
  • 从混合密码系统外部赋予公钥密码时使用的密钥
# 混合密码系统加密解密过程

加密:

  • 使用伪随机生成器生成会话密钥 ,会话密钥加密明文生成密文
  • 用接受者的公钥加密会话密钥
  • 两个密文组合后发送出去

解密:

  • 收到消息先解密会话密钥,用接受者的私钥解密,得到会话密钥
  • 用会话密钥解密加密过得密文,即可得到消息

认证

单向散列函数

输入称为消息,输出称为散列值。

单向散列函数可以根据消息的内容计算出散列值,而散列值就可以被用来检查消息的完整性。

单向散列函数的性质:
  • 根据任意长度的消息计算出固定长度的散列值
  • 能够快速计算出散列值
  • 消息不同散列值也不同
    • 两个不同消息产生同一个散列值的情况称为碰撞
    • 要找到和该消息具有相同散列值的另外一条消息是非常困难的。这一性质称为弱抗碰撞性
    • 要找到散列值相同的两条不同消息是非常困难的。称为强抗碰撞性
  • 具备单向性
关于术语

单项散列函数又称为消息摘要函数,哈希函数或者杂凑函数

实际应用
  • 检测软件是否篡改
  • 基于口令的加密(PBE):原理是将口令和炎(伪随机数)混合后计算其散列值,然后将这个散列值用作加密密钥
  • 消息认证码:检测并防止通信过程中得错误,篡改和伪装
  • 数字签名
  • 伪随机数生成器
  • 一次性口令

消息认证码

消息的认证是指:“消息来自正确的发送者”。通过使用消息认证码,我们就可以同时识别出篡改和伪装,既可以确认消息完整性,也可以进行认证。

消息认证码的输入包括任意消息的长度和一个接受者和发送者之间的共享密钥,输出是固定长度,这个数据称为MAC值。

消息认证码是一种与密钥相关联的单项散列函数。

如图:

使用步骤:如图

数字签名

数字签名就是将公钥反过来用实现的。

公钥加密就是用公钥加密消息,用私钥解密密文。

而数字签名是用私钥对消息生成签名,传输数字签名的密文,最后用公钥解密验证签名。

如图所示:

解释一下:用私钥加密所得的密文,只能用公钥才能解密。这就是说,如果某个公钥成功解密了密文,那就证明这段密文是由与他配对的私钥进行加密所得的。

数字签名方法
  • 直接对消息签名
  • 对消息的散列值签名

    如图:

    消息签名

    散列值签名

    散列值签名,验证签名

通过RSA实现数字签名

签名 = 消息的D次方 mod N
D和N就是签名者的私钥
有签名求得的消息 = 签名的E次方 mod N
E和N就是签名者的公钥
数字签名无法解决的问题

公钥必须属于真正的发送者。即使数字签名算法再强大,如果你得到的公钥是伪造的,那么数字签名也会完全失败。我们需要使用一种社会性的基础设施,即公钥基础设施。简称PKI。

见下文。

证书

公钥证书和身份证,驾照很相似,里面有姓名,证件号,地址等个人信息,以及属于此人的公钥,由认证机构施加数字签名。只要看到公钥证书,我们就可以知道认证机构认定该公钥的确属于此人。公钥证书简称证书。

证书应用场景

如图:

证书应用

公钥基础设施(PKI)

公钥基础设施是为了能够更有效地运用公钥而制定的一系列规范和规格的总称。

PKI的组成要素
  • 用户———使用PKI的人
  • 认证机构————颁发证书的人
  • 仓库————保存证书的数据库
用户

分两种:1.一种是使用PKI注册自己的公钥的人。

2.另一种是使用已注册的公钥的人。

认证机构(CA)

认证机构接受对证书进行管理的人。认证机构具体行为如下:

  • 生成密钥对
  • 在注册公钥时对本人进行身份认证
  • 生成并颁发证书
  • 作废证书
仓库

保管证书的数据库,也叫证书目录

PKI组成要素

PKI组成要素

密钥,随机数与应用技术

什么是密钥

  • 密钥本身就是一个巨大的数字,数字大小不重要,重要的是密钥空间的大小,也就是说可能出现密钥的总数量。因为密钥空间越大,暴力破解就越困难。密钥空间大小有密钥长度决定。
  • 密钥与明文是等价的,假如明文具有100万的价值,那么这段密钥也具有100万的价值;假如明文值1亿,密钥也值1亿。
  • 不要使用自己开发的密码算法进行加密,而是使用一个经过全世界密码雪茄共同验证的密码算法。如果你使用了自己的密钥,可能会出现你的密钥被长时间破解了,你依然无法知晓。 信息的机密性不应该依赖密码算法本身,而是依赖于妥善保管的密钥。

Diffie-Hellman 密钥交换

Diffie-Hellman 密钥交换算法,通信双方仅通过交换一些可以公开的信息就能够生产出共享密钥的

Diffie-Hellman

基于口令的密码(PBE)

基于口令的密码就是一种根据口令生成的密钥并用该密钥进行加密的方法。其中加密和解密使用同一种密钥

PBE加密过程如图:

PBE加密

3个步骤:

  1. 生成KEK
  2. 生成会话密钥并加密
  3. 加密消息

PBE解密过程:

个人觉得是不是箭头反了?

PBE解密

随机数

随机数的用途
  • 生成密钥

    用于对称密码和消息认证码

  • 生成密钥对

    用于公钥密码和数字签名

  • 生成初始化向量(IV)

    用于分组密码的CBC,CFB和OFB模式

  • 生成nonce

    用于防御重放攻击以及分组密码的CTR模式等

  • 生成盐

    用于基于口令的密码(PBE)等

其中生成密钥和生成密钥对是最重要的,即使密码强度再高,只要攻击者知道了密钥,就会立刻变得形同虚设。因此我们需要用随机数来生成密钥,使之无法被攻击者看穿。

随机数的性质
  • 随机性
  • 不可预测性
  • 不可重现性

如图

随机数的性质

伪随机数生成器

通过硬件生成的随机数列是根据传感器收集的热量,声音的变化等事实上是无法预测的。像这样的设备就称为随机数生成器。

而可以生成随机数的软件则称为伪随机数生成器。因为软件无法生成真随机数。

伪随机数生成器具有“内部状态”,并根据外部输入的“种子”来生成伪随机数列

伪随机数生成器的结构

伪随机数生成器的内部状态

伪随机数生成器的内部状态,是指伪随机数生成器岁管理的内存中的数值。

当有一条伪随机数的请求时,伪随机数生成器会根据内存中的数值进行技术,并将结果输出。随后改变自己的内部状态。因此,根据内部状态计算伪随机数的方法和改变内部状态的方法组合起来,就是伪随机数生成的算法。

伪随机数生成器的种子

伪随机数的种子是用来对伪随机数生成器的内部状态进行初始化。伪随机数生成器是公开的,但种子是需要自己保密的。由于种子不可以被攻击者知道,因此不可以使用容易被预测的值。

PGP---密码技术的完美组合

用PGP加密

用PGP加密

用PGP解密

用PGP解密

用PGP生成数字签名

用PGP生成数字签名

PGP验证数字签名

PGP验证数字签名

PGP生成数字签名并加密

PGP生成数字签名并加密

PGP解密并验证数字签名

PGP解密并验证数字签名

时间: 2024-08-08 13:58:48

深入理解密码技术的相关文章

密码技术之认证

第二部分:认证 当比较两条消息是否一致时,我们不必直接对比消息本身的内容,只要对比它们的“指纹”就行了. 一.单向散列函数(one-way hash function) 单向散列函数也称为消息摘要函数(message digest function).哈希函数或者杂凑函数. 单向散列函数有一个输入和一个输出,其中输入称为消息(message),输出称为散列值(hash value)也称为消息摘要(message digest)或者指纹.单向散列函数可以根据消息的内容计算出散列值,而散列值就可以被

图解密码技术一些笔记

因为明年的工作可能要涉及到加密的问题,所以要看一下加密方面,刚好之前对于web开发方面的加密,https也一直有疑问,于是就买了本图解密码技术来看看 1.如何保证数据只能单向解密: 比较流行的一个就是公钥和私钥,公钥负责加密,私钥负责解密,只要私钥没有被拿到,数据就不会被破解,比较流行的 就是RSA算法,公司项目也用过,不过当时搞不清公钥和私钥,迷迷糊糊的 2.如何保证收到的数据没有被修改过利用私钥加密,然后用公钥解密 这个就是数字签名,在发送给客户端的时候,除了原有的数据以外,还要再发送一个对

《图解密码技术》[01] 密码概述

<图解密码技术>(点击查看详情) 1.写在前面的话 因为接触了微信公众号开发,之中涉及支付功能时用到了大量签名加密之类的东西,对于密码安全这一块,其实一直不是很明白,大部分方法自己在用到时也是去直接google,然后复制粘贴,可以说完全不知其所以然. 加密这一块查了下有很多人推荐这本书,于是就决定看看.我个人涉及到真正的加密技术的实际应用可能不算那么多,所以这里笔记准备记录一些浅显和核心的东西. 2.加密和解密 发送信息和接受信息的过程中,因为传递过程涉及多方,可能会存在窃听者.就像你给别人写

什么是私有密钥密码技术——密钥加密算法采用同一把密钥进行加密和解密

什么是私有密钥密码技术 私有密钥(Symmetric Key),又叫对称密钥.密钥加密算法采用同一把密钥进行加密和解密.它的优点是加密和解密速度非常快,但密钥的分发和管理比较困难.信息的发送者和接收者必须明确同一把密钥.因此,必须进行密钥交流,这通常需要其他更安全的信道来传送密钥.另外,每一对用户都需要有自己的一个独一无二的密钥.因此,如果一个发送者与很多人通信,就需要管理很多密钥.主要的对称密钥加密算法有DES.3DES.RC2.RC4.RC5.Blowtish和CAST等.在VPN中常用的有

《图解密码技术》-1.环游密码世界

1.对称密码和公钥密码 对称密码:是指在加密和解密时使用同一秘钥的方式 公钥密码:又称非对称加密,指在加密和解码时使用的不是用一秘钥的方式 2.混合密码系统 将对称密码和非对称密码结合起来的密码方式称为混合密码系统, 这种系统结合了对称加密和非对称加密的优势. 3.其他密码技术 1.单项散列函数:是一种保证完整性的密码技术. 2.消息认证码:消息认证码是一种能够保证完整性和提供认证的密码技术. 3.数字签名:能够防止伪装.篡改.和否认等威胁的技术. 4.伪随机数生成器:是一种能够模拟产生出随机数

《图解密码技术》——记录1

[MENU] 主要角色 名称 说明 Alice 一般角色 Bob 一般角色 Eve 窃听者,可窃听通讯内容 Mallory 主动攻击者,可妨碍通信.伪造消息等 Trent 可信的第三方 Victor 验证者 关键词 加密前的消息称为明文,加密后的消息称为密文. 对称密码是指在加密和解密时使用同一密钥的方式. 对称密码的别名:公共密钥密码.传统密码.私钥密码.共享密钥密码等. 首次见到此书.读此书,是在学校的图书馆. 参考资料 图解密码技术,结城浩 著 原文地址:https://www.cnblo

阅《图解密码技术》一笔记1

1.密码保证了消息的机密性 2.密码算法:由将明文生成密文的加密算法和由密文解密成明文的解密算法组成. 密钥是密码算法中进行运算的key. 3.对称密码(symmetric cryptography):是指在加密和解密时使用同一密钥的方式. 4.公钥密码(public-key crypography):是指在加密和解密时使用不同密钥的方式.也称非对称密码(asymmetric cryptography) 5.其它密码技术 a.单向散列函数    ------>不保证机密性,保证完整性,用于检测数

密码技术小总结

密码技术与编码技术不同,但现在很多人把两者的技术混在一起,但两者某些地方界限确实有些模糊.密码技术与信息隐藏也不同,密码技术是让你看得到但是看不懂,信息隐藏是让你看不到找不到 参考和查看更多内容推荐 本文只是简要总结 http://www.mamicode.com/info-detail-2252602.html https://blog.csdn.net/pdsu161530247/article/details/75667218 <码书 解码与编码的战争> <图解密码技术 第三版&g

理解SSL必须要理解的密码技术

要理解SSL就必须理解密码系统.消息摘要函数(单向或散列函数)和数字签名,这些技术是许多文献所讨论的主题(比如[AC96),提供了保密性.完整性和认证的基础. 密码系统 假设Alice想给她的银行发一个消息以划转资金,并希望这个消息是保密的,因为其中含有她的帐号和划转金额等信息.一种方案是使用密码系统,将要 传输的信息转变为加密形式,从而只能为希望他读懂的人读懂.一旦加密为这种形式,这条消息也许只能用一个密钥来破译,如果没有,那么这条信息毫无用处,因 为好的密码系统可以使破译难度高到入侵者认为原