密码编码学与网络安全(3):对称密码之分组密码和数据加密标准

news/2024/9/23 6:37:15/

分组密码和数据加密标准

  • 流密码与分组密码
    • 传统分组密码结构
      • Feistel密码原理
      • 混淆和扩散
      • Feistel密码结构
    • DES(数据加密标准)
      • DES加解密
      • DES强度
    • 分组密码设计原理

流密码与分组密码

流密码每次加密数据流的一位或一个字节,如果密钥流是随机的,除非获得密钥流,否则这个密码是不可破的。然而,密钥流必须提前以某种独立、安全的信道提供给双方。如果待传递的数据流量很大,这就带来了一个不可逾越的障碍。相应地,出于实用的原因,位流必须以算法程序的方式实现,从而双方都可以生产具有密码学意义的位流。
在这里插入图片描述
分组密码是将一个明文分组作为整体加密并且通常得到的是与明文等长的密文分组。典型的分组大小是64位或128位。与流密码一样,两个用户要共享以恶对称加密密钥。

传统分组密码结构

Feistel密码原理

分组密码作用在n位明文分组上,而产生n位密文分组。共有2n个不同的明文分组,且由于加密是可逆的(即可以解密),每一个明文分组将唯一对应一个密文分组。这样的变换称为可逆变换,或非奇异变换。下图表示了n=2时的非奇异变换和奇异变换。
在这里插入图片描述
n=4时,4位的输入有16种可能的输入状态,每一种被代替密码映射成16种可能输出状态中的唯一一个,每一个表示4位的密文输出。这是分组密码的最一般形式,能用来定义明文之间的任意可逆变换。Feistel称这种密码为理想分组密码,因为它允许生产最大数量的加密映射来映射明文分组。然而,从现实和运行角度看,采用大规模分组的任何可逆代替密码(即理想分组密码)时不可行的。因为对于这样的变换,映射本身就是密钥。考虑到这些困难,Feistel指出我们所需的是对理想分组密码体制(分组长度n较大)的一种近似体制而已。
Feistel建议使用乘积密码的概念来逼近理想分组密码。乘积密码是指依次使用两个或两个以上基本密码,所得结果的密码强度将强于所有单个密码的强度。这种方法的本质是开发一个分组密码,密码长为k位,分组长位n位,采用2k个变换,而不是理想分组密码的2n个可用变换。
Feistel建议使用这样的密码:该种密码交替地使用代替和置换。
代替:每个明文元素或元素组被唯一地替换为相应地密文元素或元素组。
置换:明文元素的序列被替换为该序列的一个置换。也就是说,序列里没有元素被添加、删除或替换,但序列里元素出现的顺序改变了。

混淆和扩散

Shannon引进混淆和扩散这两个术语来刻画任何密码系统的两个基本构建。它用来对付统计分析破解密码的方法。
混淆和扩散:扩散就是指使明文的统计特征消散在密文中,这可以通过让每个明文数字尽可能地影响多个密文数字获得,等价于说每个密文数字被许多明文数字影响。扩散的方法是尽可能地使明文和密文间地统计关系变得复杂,以挫败推导出密钥的企图。混淆则是尽可能使密文和加密密钥间的统计关系更加复杂,以阻止攻击者发现密钥。

Feistel密码结构

Feistel密码结构:下图展示了Feistel加密和解密(16轮),加密算法的输入是长为2w位明文分组和密钥k。明文分组被分为等长的部分:L0和R0。这两半数据经过n轮迭代后组合成密文分组。第i轮迭代的输入Li-1和Ri-1来自于上轮迭代的输出;而输入的子密钥Ki是由整个密钥K推导出的。一般地,Ki不同于K,也互不相同。
Feistel密码的解密过程本质上与加密过程一致。其规则是:将密文作为算法的输入,但是逆序使用了子密钥Ki。也就是说,第一轮使用Kn,第二轮使用Kn-1,直到最后一轮使用K1.
在这里插入图片描述
Feistel结构的具体实现依赖于以下参数和特征:

  • 分组长度:分组长度越长意味着安全性越高(其他数据不变),但是会降低加、解密的速度。这种安全性的增加来自更好的扩散性。传统上,64位的分组长度比较合理,在分组密码设计里很常用。然而,高级加密标准使用的是128位的分组长度。
  • 密钥长度:密钥较长同样意味着安全性较高,但会降低加、解密速度。这种安全性的增加来自更好的抗穷尽攻击能力和更好的混淆性。现在一般认为64位的密钥还不够,通常使用的密钥长度是128位的。
  • 迭代轮数:Feistel密码的本质在于单轮不能提供足够的安全性而多轮加密可取得很高的安全性。迭代数的典型值是16。
  • 子密钥产生算法:子密钥产生越复杂,密码分析就越困难。
  • 轮函数F:同样,轮函数越来越复杂,抗攻击的能力就越强。
    设计Feistel密码还有两个其他方面的考虑:
  • 快速软件加/解密:许多情况下,加密算法被嵌入到应用程序中,以避免硬件实现的麻烦。因此,算法执行的速度很重要。
  • 简化分析难度:尽管我们喜欢吧算法设计得是密码分析尽可能困难,然而将算法设计的容易分析也有它的好处。也就是说,如果算法描述起来简洁清楚,那么分析其脆弱性也就容易一些,因而可以开发出更强的算法。

DES(数据加密标准)

DES(Data Encryption Standard),即数据加密标准。在2001年高级加密标准(AES,Advanced Encryption Standard)提出之前,DES一直是使用最广泛的加密方案。(AES和DES都是美国国家标准局NBS,现在称为美国国家标准和技术学会NIST采纳位美国联邦信息处理标准)。

DES加解密

DES采用了64位的分组长度和56位的密钥长度。它将64位的输入经过一系列变换得到64位输出。解密则使用了相同的步骤和相同的密钥。
下图表示了DES加密的整个机制。对于任意加密方案,总有两个输入:明文和密钥。
在这里插入图片描述
上图左半部分,可见明文处理经过3个阶段:首先,64位的明文经过初始置换IP而被重新排列。然后进行16轮相同函数的作用,每轮作用都有置换和代替。最后一轮迭代的输出有64位,它是输入明文和密钥的函数。其左半部分和右半部分互换产生预输出。最后预输出在被与初始置换的IP互逆的置换IP-1产生64位的密文。上图右半部分给出了56位密钥的过程。首先,密钥经过一个置换后,在经过循环左移和一个置换分别得到各轮的子密钥Ki用于各轮的迭代。每轮的置换函数都一样,但是由于密钥的循环移位使得各轮子密钥互不相同。
Feistel密码的解密算法与加密算法是相同的,只是子密钥的使用次序相反。此外,初始置换和最终置换是相反的。

DES强度

  • 穷尽攻击:在目前计算机的技术条件下,DES容易被穷尽攻击找到密钥。但随着密钥的加长,这种方式会非常困难,比如使用AES或者3DES。
    在这里插入图片描述
  • DES算法性质:目前为止,仍然没有发现DES算法S盒子存在致命的弱点(S盒子指DES每轮迭代所使用的8个代替表)。
  • 计时攻击:本质上计时攻击时通过观察算法的一个既定实现对多种密文解密所需时间,来获得关于密钥或明文的信息。计时攻击所利用的事实是加密或解密算法对于不同的输入所花的时间有着细微的差别。目前为止,计时攻击还不能成功的攻击DES。

分组密码设计原理

Feistel密码的强度来自于3个方面:迭代轮数,函数F,密钥使用的算法。

  • 迭代轮数:迭代轮数越多,密码分析就越困难,即使F相对较弱也同样适用。一般来说迭代轮数的选择标准是使密码分析的难度大于简单穷举攻击的难度。
  • 函数F的设计:Feistel密码的核心是函数F。函数F给Feistel密码注入混淆的成分。因此难以破解由F实现的这个代替密码函数的作用。F的明显标准是非线性的,F的非线性成分越多,任何形式的分析就越困难。算法的设计应该考虑遵循SAC和BIC。
    • 学崩效应:明文或密钥的某一位发生变化会导致密文的很多位发生变化。
    • SAC(Steict Avalanche Criterion),雪崩效应准则:对于所有的i和j,它要求若S盒子的输入的任意一位i发生变化,输出的任意一位j发生变化的可能性位1/2。
    • BIC(bit independent criterion),位独立准则:对任意的i,j,k,当输入中的一位i发生变换时,输出中的j和weik的变化应时彼此无关的。
  • 密钥扩展算法:对于任何的Feistel分组密码,密钥被用来为每轮迭代产生一个子密钥。一般来说,子密钥的选择应该加大推导子密钥及密钥种子的难度。建议密钥扩展算法至少应保证密钥和密文符合严格的雪崩效应和位独立标准。

说明:该篇内容引用自《密码编码学与网络安全》


http://www.ppmy.cn/news/814578.html

相关文章

网络安全基础知识

网络安全分类: 窃听:例如搭线窃听、安装通信监视器来读取网上信息。 假冒:一个实体假扮成另一个实体进行网络活动时就是假冒。 重放:重复一份报文或报文的一部分,以便产生一个被授权效果。 流量分析:对…

无线网络安全技术复习重点

无线网络安全技术复习重点 第一章 无线网络概述 1、无线网络技术是实现5W/6A梦想、移动计算和普适计算的核心技术。5W是指Whoever、 Whenever、Wherever、Whomever、Whatever,6A 是 Anyone、Anytime、Anywhere、 Any means、Any other、Anything。 2、无线通信技术…

网络安全之密码学与加密技术

密码技术 一、密码学1.1 加密技术分组密码技术流密码技术信息摘要算法(单向杂凑Hash算法)新兴加密技术 1.2 对称、非对称密码体制对称密码体制非对称密码体制 1.3 信息摘要算法1.4 国密算法1.5 公钥基础设施PKI(Public Key Infrastructure&am…

计算机网络原理恺撒密码/列置密码总结

前言 这几天写试卷遇到了这到题目,百度谷歌都找不到通俗易懂的解法,今天我就分享一下我自己的解法(加密、解密) 开始 试卷要求是写出明文,但是我们肯定是明文密文都要会的,下面会讲解。 题目 Bob给Ali…

计算机网络安全——密码学

一.古典密码 1.代换和置换 代换:将明文中的一个字母由其它字母、数字或符号替代 单表代换:一个明文对应的密文是确定的多表代换:一个明文对应的密文可以是多个密文字母 置换:将明文字符按照某种规律重新排列 2.单表代换密码 …

网络安全----密码学

密码学 数据有哪些安全需求? 需确保数据的保密性、完整性、不可否认性和可认证性。基础是现代密码学。通过加密将可读的信息变换成不可理解的乱码,从而起到保护信息的作用。 密码学的发展史 自人类社会出现战争便产生了密码 ,Phaistos圆盘&a…

网络安全 密码学

密码学 1、 密码学概述 二战时期美军截获了日军密码,日军当时使用的是JN25密码,因此,美军在在中途岛战役中取得了巨大成功 密码学发展史: 古代密码学: 天书、象形文字、矾书、凯撒密码…… 公元前5、6世纪,…

win10 创建网络位置\映射网络驱动器 提示错误: 指定网络密码不正确

远端服务器为centos 服务器,搭建了samba服务器,新增用户配置如下 [username] comment username Directories path /mnt/disk5/username writable yes 在window下映射网络驱动器: 地址:\\服务器地址\username\ 然后提示输…