深入理解密码技术

作者: 十三亿少女梦丶 | 来源:发表于2016-05-20 11:48 被阅读321次

对称加密:

DES

DES是1977年美国联邦信息处理标准中使用的一种对称密码技术,曾今被美国和其他国家政府银行使用。
不过现在已被暴力破解,我们除了用它解密以前的密文外,已不再使用DES了。不过这里我们可以用它来了解下什么是对称加密。

加密和解密

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

分组密码

DES以64比特明文为一个单位进行加密,这64比特单位称为分组。so,以分组为单位处理密码的算法称为分组密码。DES属于分组密码。
DES每次只能加密64比特数据,如果明文较长,就需要对DES加密进行迭代,迭代的具体方式称为模式。后文会描述。
图DES加密与解密流程

三重DES

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

AES

目前很安全
。。。。。

分组密码模式

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

非对称加密

公钥密码

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

密钥配送问题:
Diffie-Hellman

基于口令的密码(PBE)

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

PBE加密PBE加密

3个步骤:

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

PBE解密过程:
个人觉得是不是箭头反了?

PBE解密PBE解密

随机数

随机数的用途
  • 生成密钥
    用于对称密码和消息认证码

  • 生成密钥对
    用于公钥密码和数字签名

  • 生成初始化向量(IV)
    用于分组密码的CBC,CFB和OFB模式

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

  • 生成盐
    用于基于口令的密码(PBE)等

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

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

如图

随机数的性质随机数的性质
伪随机数生成器

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

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

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

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

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

伪随机数生成器的种子

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

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

用PGP加密

用PGP加密用PGP加密

用PGP解密

用PGP解密用PGP解密

用PGP生成数字签名

用PGP生成数字签名用PGP生成数字签名

PGP验证数字签名

PGP验证数字签名PGP验证数字签名

PGP生成数字签名并加密

PGP生成数字签名并加密PGP生成数字签名并加密

PGP解密并验证数字签名

PGP解密并验证数字签名PGP解密并验证数字签名

相关文章

  • 深入理解密码技术

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

  • iOS签名机制,梳理各种加密算法

    什么是数字签名 小苹果的签名机制 密码学深入理解 ---demo含全图 密码学是研究编制密码和破译密码的技术科学...

  • 密码相关技术梳理

    团队新人比较多,总体培训一下密码相关技术点,密码相关技术很庞杂,深入也很难,我们开发中对密码学的细节不需要太多深入...

  • 今日份打卡 204/365

    技术文章深入理解mysql

  • 密码技术的理解

    第一部分:密码学技术 一、对称密码—用相同的密钥进行加解密 (1)分类 AES128、AES192、AES256 ...

  • 深入理解Ajax技术

    Ajax get和post请求区别 post请求: xmlHttp.setRequestHeader("Conte...

  • 深入理解Servlet技术

    1. 什么是servlet servlet Servlet是javax.servlet.Servlet包中定义的一...

  • 学习jvm参考资料

    1、《java虚拟机规范》2、《深入理解java虚拟机》 密码:g77d

  • go学习资源

    书 《The Garbage Collection Handbook》《深入理解linux网络技术内幕》《redi...

  • 从零学习 CA 系列 (一) -- 密码算法分类

    本文参考《PKI/CA 与数字证书技术大全》书籍,如有理解bug, 请大家指正。 密码算法分类 密码算法主要分为三...

网友评论

    本文标题:深入理解密码技术

    本文链接:https://www.haomeiwen.com/subject/glknrttx.html