zoukankan      html  css  js  c++  java
  • 03.openssl密码实现技术

    3.1 密钥管理技术
    一个好的密码通信系统依赖的不是算法的机密性,而是密钥的机密性。在一个使用的密码通信系统中,安全地产生、保存、分发和使用密钥是整个系统安全性得到保证的前提。
    3.1.1 密钥生成
    *如何安全地生成密钥。即如何生成可信任的密钥,保证用户得到的密钥是安全的,生成密钥的及其或程序是可信的。
    *如何生成安全的密钥。安全的密钥没有同一的定义,但一般来说是指密钥抗猜测和抗穷举等针对密钥攻击的能力。
    3.1.2 密钥分发
    通信双方要进行安全的通信,首先需要协商密钥,尤其对于对称加密算法,双方必须先去的同样的加密密钥(会话密钥),无论这个密钥怎样产生,都需要进行密钥信息的交换。
    密钥加密密钥是用来加密数据密钥的密钥。
    3.1.3 密钥验证
    密钥验证包括两个方面的内容:一是验证密钥的发送方是可信的;二是验证密钥确实是正确的和完整的。
    怎样验证发送密钥的人确实是可信的,怎么肯定密钥确实是由所声称的发送人发送的呢?
    3.1.4 密钥使用
    使用密钥总的来说有两种方式,一种是使用软件进行加密,一种是使用硬件进行加密。
    3.1.5 密钥存储
    3.1.7 公钥管理
    *从通信的对方获取
    *从公开的公开密钥数据库获取
    *从通信对方的朋友处获取
    *从自己已有的数据库中获取
    通常签发数字证书可信任第三方机构陈伟证书验证中心(CA).
    3.2 分组加密模式
    分组加密和序列加密。分组加密又称为块加密,是将要处理的数据分成固定长度,然后在这固定长度的数据上使用密码算法进行计算。序列加密模式又称为流加密方式,是对要处理的数据按位(或字节)逐个进行加密处理。
    3.2.1 电子密码本模式
    电子密码本模式(ECB)是最简单的分组加密模式,也是最能体现分组该奶奶的加密。他将加密的数据分成若干组,每组大小跟加密密钥长度相同,然后每组都用相同的密钥进行加密。
    综上所述,电子密码本模式有以下特点:
    a.每次加密的数据长度固定。
    b.各个分组相互独立,可以并行加密和解密
    c.相同的明文使用相同的密钥总是产生相同的密文
    d.一个位的错误只对所在的明文块产生影响,但是增加或删除一个位会导致气候整个密文序列没有办法正确解密。
    3.2.2 加密分组链接模式
    加密分组链接模式(CBC)可以解决电子密码本模式容易受到分组替换攻击的问题.加密分组链接模式首先也是将明文分成固定长度的分组,然后将前面一个加密分组输出的密文与下一个要加密的明文分组进行异或操作计算,将计算结果再用密钥进行加密得到密文。
    综上所述,加密分组链接具有一下的一些特点
    *每次加密的数据长度固定
    *当相同的明文使用相同的密钥和出事向量的时候CBC模式总是产生相同的密文。
    *链接操作使得密文分组要依赖当前和以前处理过的明文分组,密文分组顺序不能进行重新排列,也不能进行进行操作。
    *可以使用不同的初始化向量来避免相同的明文产生相同的密文,能一定程度上抵抗字典攻击等密文分析
    *一位发生错误后,悔对当前机后一个分组的明文产生明文发生错误,增加或删除一个位会导致其后整个密文序列没有办法正确解密。
    *不能实时解密,必须等到8个字节都接受到之后才能开始解密,否则得不到正确的结果。
    3.2.3 加密反馈模式
    在加密分组链接模式下,必须等整个分组的数据接收完之后才能进行解密,不能实时解密,这在很多网络应用中是不适应的。加密反馈模式(CFB)正是为了适应这种要求作的改进。
    加密反馈模式具有以下特点:
    *每次加密的数据不超过64位
    *当使用相同的密钥和初始向量的时候,相同明文使用CFB模式加密输出相同的密文。
    *链接操作的方法使得密文数据依赖当前和以前所有的数据,所以数据都应该按顺序组织在一起,不能进行并行计算操作。
    *可以使用不同的初始化变量使用的明文产生不同的密文,防止字典攻击等密文分析行为。
    *CFB模式的强度依赖于密钥的长度,强度最大的情况是每次加密的数据长度和密钥长度相同的情况
    *当每次加密的数据长度的取值比较小的时候,相同的明文一般需要更多的循环来完成加密,者可能会导致过大的开销。
    *一旦某位数据出错,会影响到目前和其后一些字节的加密数据的正确解密,但是对同步错误具有字恢复功能。
    *数据可以试试传输,每接收到一位都可以随即进行解密。
    3.2.4 输出反馈模式
    输出反馈模式的特点如下:
    *每次加密的数据不超过64位
    *当使用相同的密钥和初始化向量的时候,相同明文使用OFB模式加密输出相同密文。
    *因为没有使用链接操作,数据相关性小,所以使得OFB模式跟容易受到攻击。
    *可以使用不同的初始化变量产生不同的密钥流,从而使得相同的明文使用相同密钥产生不同的密文。
    3.2.5 三重分组加密的模式
    Openssl常用的有三重电子密码本模式(3ECB)和三重加密分组链接模式(3CBC)
    三重分组加密模式使用了不止一个密钥,对明文分组进行了基于基本分组加密模式的加密、解密和加密操作。
    3.2.6 其他分组加密模式
    a.计数器模式
    在输出反馈模式镇南关,移位寄存器的输入是从加密输出分组中最左端的值取出的。
    b.分组链接模式
    分组链接模式将分组密码算法的输入与前面所有密文分组的异或值相异或。
    3.2.7 数据填充方式
    电子密码本模式和加密分组链接模式的分组算法都要求加密输入的分组是固定长度的,但是大多数输入明文可能都不是分组长度的整数倍。
    3.3 序列加密模式
    分组加密模式每次对一组数据进行加密处理,而序列加密模式则不同,他每次一位明文进行简单运算(一般是异或运算)从而得到密文。一个续写加密模式结构一般由密钥序列发生器、运算单元、明文输出组成。
    一个密钥序列发生器理论上可以抽象为三部分:内部状态、状态转移函数及输出函数。
    3.3.1 自同步序列加密模式
    自同步序列加密模式又称为密文自动密钥,他的主要思想是密钥序列跟以前一定数量的密文位相关,即密钥序列是以前一定数量密文位的函数。
    特点:
    *内部状态是前面n为固定长度密文的函数
    *算法的安全性依赖于输出函数的复杂性和安全性
    *会产生密文错误扩散,密文中意味发生错误,会导致其后n为密文不能正确解密。
    *解密的时候具有密钥序列和密文自动同步的功能,具有同步错误字恢复功能
    *明文长度和密文长度相同
    *容易受到回放攻击。
    3.3.2 同步序列加密模式
    同步序列加密模式又称为密钥自动密钥加密,他的特点是密钥序列的产生跟处理的消息不向关,相互独立的。
    3.4 加密模式选择
    两大类加密算法模式:分组加密模式和序列加密模式。它们之间最大的区别在于分组加密模式每次对一组数据进行加密运算处理,而序列加密模式则逐位对数据进行加密运算处理。
    分组加密模式和序列加密模式各有优势。
    分组加密模式
    序列加密模式
    安全性能
    密文之间相关性大,抵抗密文分析能力强
    安全性汉族要依赖加密算法本身
    密文之间相关性小,安全性主要依赖于
    密钥序列发生器
    容错性能
    除了输出反馈模式外,都会产生密文错误扩散
    加密分组反馈模式具有同步错误回复功能
    自同步序列加密模式会产生密文错误扩散
    弹具有同步错误恢复功能;
    同步序列加密模式不会产生错误扩散,
    但是没有同步错误回复能力
    算法效率
    明文长度跟密文长度不一定相同,适于软件实现
    明文长度跟密文长度相同,
    适用于硬件实现
    实时性能
    电子密码本模式和加密分组链接模式不鞥实现解密
    可以实时解密
    电子密码本
    加密分组链接
    加密反馈
    输出反馈
    安全性能
    相同明文产生相同密文
    分组可被替换
    相同明文可以产生不同 密文,
    分组之间具有相同性
    替换困难
    相同明文可以产生不同
    密文,分组之间具有相同
    替换坤看
    相同明文可以产生不同密文
    分组之间具有相关性
    替换困难
    容错性能
    产生错误扩散,
    同步错误不能恢复
    产生错误扩散
    同步错误不能恢复
    产生错误扩散
    同步错误可以恢复
    不产生错误扩散
    同步错误不能恢复
    算法效率
    不会降低分组加密算法速度,
    可并行计算,
    密文长度大于明文长度
    不会降低分组加密算法速度,
    不可并行计算,
    密文长度大于明文长度
    不会降低分组加密算法速度
    不可并行计算
    密文长度等于明文长度
    不会降低分组加密算法速度
    不可并行计算
    密文长度等于明文长度
    实时性能
    不能实时解密
    不能实时解密
    能实时解密
    能实时解密
    3.5 加密算法应用
    3.5.1 传输数据加密
    a.物理信道加密
    物理信道加密方式的加密设备或程序防止的链路层和物理层之间,也就是说,所有经过物理设备的数据都将被加密保护,无论是数据还是上层的协议信息。这种数据保护方式非常有利于使用硬件加密设备,因为一般的物理接口都是工业标准化。
    b.链路加密
    链路加密方式的加密设备放置在链路层和网络层(IP)之间,他将通过IP传输的所有数据(包括原始IP头部)都进行加密保护,然后添加新的IP头发往设定的目标地址。
    c.终端加密
    终端加密的加密设备放置在网络层(IO)和传输层(TCPUDP等传输协议)之间,他对传输层的数据和协议及协议进行了加密保护,然后发往制定的目标终端。目标终端接收到该信息之后,同样需要对IP层传送上的数据进行解密,然后在交给传输层响应的协议模块进行处理。
    d.会话密钥
    会话加密的加密设备放置在传输层和应用协议(如HTTP,FTP)之间,他对上层特定应用协议的数据进行加密保护,然后在交给传输层处理。
    e.应用加密
    应用加密的加密设备或程序是放置在应用网络协议之上的,他对真正的信息数据进行加密保护,而对应用协议信息不做任何保护,是一种字上层的数据加密保护方式。
    3.5.2 存储数据加密
    加密算法还经常被用于加密存储的数据
    特点:
    *密文和密钥存储时间长,需要安全可靠的方式保管密钥
    *因为针对存储设备,要求快速进行数据的加密和解密,甚至采用硬件加密设备或者特殊算法
    *对于数据库这样的加密应用,因为数据库每个字段的长度可能比加密算法的数据快长度小,所以会导致密文长度比明文大,这样会导致需要更多的存储空间。
    *密钥管理更加复杂,因为不同的人可能需要存取不同的文件或者同一个数据库的不同部分
    *安全管理非常重要。
    3.5.4 硬件加密和软件加密
    硬件加密
    a.速度优势。
    b.安全性
    c.容易使用
    3.6 本章小结
    密钥管理技术:密钥的生成、分发、验证、使用、存储及销毁,并对公钥的管理做了特别的介绍。
    分组加密算法的几种加密模式,包括电子密码本模式、加密分组链接模式、加密反馈模式和输出反馈模式。
    序列加密算法的两种主要序列加密模式:同步序列加密模式和同步序列加密模式。
  • 相关阅读:
    DataTable、GridView、DataList导出至Word或Excel
    实现字符串转换为图片
    Sina App Engine与Google App Engine区别对比
    C/C++反序输出字符串总结
    NAND flash和NOR flash详解
    [转载]看完《python简明教程》笔记及第一个python程序
    Python写爬虫——抓取网页并解析HTML
    ACM HDU 1004 Let the Balloon Rise
    有向图的强连通分量
    ACM HDU 1005 Number Sequence
  • 原文地址:https://www.cnblogs.com/aixiaoxiaoyu/p/8387348.html
Copyright © 2011-2022 走看看