420 likes | 584 Views
分组密码及其应用. 张平. Contents. 分组算法简介 数据加密标准 DES 高级加密标准 AES 其他标准 分组密码的工作模式 加 密工作模式 认证工作模式 认证加密 模式 其他模式 分组密码的应用. 分组算法简介. 对称加密算法可分为:流密码和分组密码。 分组密码: 通常以大于等于 64 位的数据块为处理单位 密文与 算法和密钥 有关 例如 : DES 、 AES 等 。 流密码 : 以 明文比特或字节为单位 密文不仅与算法和密钥有关,也与明文数据的位置有关 例如:一次一密系统、 AutoKey 等。. 数据加密标准 DES.
E N D
分组密码及其应用 张平
Contents • 分组算法简介 • 数据加密标准DES • 高级加密标准AES • 其他标准 • 分组密码的工作模式 • 加密工作模式 • 认证工作模式 • 认证加密模式 • 其他模式 • 分组密码的应用
分组算法简介 • 对称加密算法可分为:流密码和分组密码。 • 分组密码: • 通常以大于等于64位的数据块为处理单位 • 密文与算法和密钥有关 • 例如:DES、AES等。 • 流密码: • 以明文比特或字节为单位 • 密文不仅与算法和密钥有关,也与明文数据的位置有关 • 例如:一次一密系统、AutoKey等。
数据加密标准DES • 数据加密标准(DES,Data Encryption Standard)是一种使用密钥加密的块密码,1976年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),随后在国际上广泛流传开来。它基于使用56位密钥的对称算法。这个算法因为包含一些机密设计元素,相对短的密钥长度以及怀疑内含美国国家安全局(NSA)的后门而在开始时有争议。 • 民间研究显示DES安全性很强,广泛应用在金融业如银行等领域。 • 虽然差分攻击和线性分析攻击在理论上有效,但实现起来计算量仍很大。 • DES现在已经不是一种安全的加密方法,主要因为它使用的56位密钥过短。为了提供实用所需的安全性,可以使用DES的派生算法3DES来进行加密,虽然3DES也存在理论上的攻击方法。在2001年,DES作为一个标准已经被高级加密标准(AES)所取代。
DES算法 • 整体结构
扩展置换E :将32位的半块扩展到48位,其输出包括8个6位的块,每块包含4位对应的输入位,加上两个邻接的块中紧邻的位。 • 将32位输入分为8组,每组4位 • 从相邻两组的邻近位置各取1位 • S盒:在与子密钥混合之后,块被分成8个6位的块,然后使用“S盒” 处理。 • S盒为4行16列的矩阵,每行定义一个可逆置换 • 输入6位,输出4位
密钥调度—产生子密钥的算法。 • 首先,使用选择置换1(PC-1)从64位输入密钥中选出56位的密钥—剩下的8位要么直接丢弃,要么作为奇偶校验位。 • 然后,56位分成两个28位的半密钥;每个半密钥接下来都被分别处理。 • 在接下来的回次中,两个半密钥都被左移1或2位(由回次数决定),紧接着通过选择置换2(PC-2)产生48位的子密钥。
DES的安全性 • 密钥长度问题 • 56 bits 密钥有2^56 = 72,057,584,037,927,936 ≈ 7.2亿亿之多 • 蛮力搜索( brute force search )似乎很困难,20世纪70年代估计要1000到2000年. • 技术进步使蛮力搜索成为可能。1997年网络合作破译耗时96天。1998年在一台专用机上(EFF)只要三天时间即可。1999年在超级计算机上只要22小时! • S盒问题 • 其设计标准没有公开 • 迄今没有发现S盒存在致命弱点 • 至少有4个“弱密钥”及6对“半弱密钥”,每字节的最低位都用作奇偶校验位 • DES有良好的雪崩效应:明文或密钥的一比特的变化,引起密文许多比特的改变 • DES能很好的抵抗计时攻击。 • 存在能量攻击。
DES解密 • 解密是加密的逆过程 • 采用相同的Feistel结构,使用子密钥次序正好相反 • DES的密码分析 • DES不能抵御差分分析、线性分析等 • 差分分析、线性分析、相关密钥攻击等攻击,本质上是统计分析。
高级加密标准AES • AES的起源 • DES不够安全 • 3DES(或称T-DES)安全,但速度慢 • 1997年9月,美国国家标准技术协会(NIST)公开征集新的密码方案 • 1998年6月,15个候选算法通过第一轮评估 • 1999年8月,5个候选算法通过第二轮评估 • 2000年10月,Rijndael算法被选中,作为AES算法 • 2001年11月,发布最终标准FIPS PUB 197
AES标准:分组长度128位,秘钥长度128、192或256位。轮数:10、12或14轮。AES标准:分组长度128位,秘钥长度128、192或256位。轮数:10、12或14轮。 • 密码长度128, 160, 192, 224, 与 256 比特为 Rijndael 算法所支持,然而只有 128, 192, 与 256 比特长度密码为 AES 标准所明定。 • 分组长度 128, 160, 192, 224, 与 256 比特为 Rijndael 算法所支持,不过只有 128 比特区块长度为 AES 标准所明定。 • 特性: • 对所有已知的攻击免疫 。 • 在各种平台上,执行速度快且代码紧凑 。 • 设计简单。
AES结构 • 输入分组以正方形矩阵State描述 • 密钥扩展为矩阵 • 进行9/11/13轮迭代 • 字节代换 • 行移位 • 列混淆 • 轮密钥加 • 最后一个不完整轮 • 矩阵State转换为输出分组 • 不是Feistel结构
AES加密过程是在一个4×4的字节矩阵上运作,这个矩阵称为state,其初值就是一个明文区块。加密时,各轮AES加密循环(除最后一轮外)均包含4个步骤:AES加密过程是在一个4×4的字节矩阵上运作,这个矩阵称为state,其初值就是一个明文区块。加密时,各轮AES加密循环(除最后一轮外)均包含4个步骤: • 字节替换SubBytes:通过一个非线性的替换函数,用查找表的方式把每个字节替换成对应的字节。查找S盒提供了非线性变换的能力。 • 行移位ShiftRows:将矩阵中的每个横列进行循环式移位。采用左循环偏移量。
列混淆MixColumns:为了充分混合矩阵中各个直行的操作。这个步骤使用线性转换来混合每内联的四个字节。列混淆MixColumns:为了充分混合矩阵中各个直行的操作。这个步骤使用线性转换来混合每内联的四个字节。 • 轮密钥加AddRoundKey:矩阵中的每一个字节都与该次轮密钥(round key)做XOR运算;每个子密钥由密钥生成方案产生。 最后一个加密循环中省略MixColumns步骤,而以另一个AddRoundKey取代。
AES解密 • 解密过程中各变换的顺序与加密中变换的顺序不同。 • AES的安全性 • 对所有已知的攻击免疫 。 • 截至2006年,针对AES唯一的成功攻击是旁道攻击。但旁道攻击不攻击密码本身,而是攻击那些基于不安全系统(会在不经意间泄漏信息)上的加密系统。 • 2005年4月,D.J. Bernstein公布了一种缓存时序攻击法,他以此破解了一个装载OpenSSL AES加密系统的客户服务器。 • 2005年10月,Eran Tromer和另外两个研究员发表了一篇论文,展示了数种针对AES的缓存时序攻击法。其中一种攻击法只需要800个写入动作,费时65毫秒,就能得到一把完整的AES密钥。但攻击者必须在运行加密的系统上拥有运行程序的权限,方能以此法破解该密码系统。 • 然而,对于那些不安全的系统,可以采取一些对策来避免信息的泄露。
AES算法实现 • 在8位处理器上 • 字节代换可用查表实现,需要256字节 • 行移位是简单的字节移位 • 轮密钥加是异或操作 • 列混淆可以用查表取代,需要4张256字节的表 • 在32位处理器上 • 将操作定义在32位的字上 • 预先计算4张256字的表 • 每轮迭代中,每列需要4次查表和4次异或操作 • 需要4KB空间存储表格
其他标准 • ISO/IEC分组密码标准:如TDEA,MISTY1,SEED等 • NESSIE建议分组密码:SHACAL2 • 日本CRYPTREC计划:Hierocrypt-L1,Hierocrypt-3,SC2000等 • 韩国ARIA标准 • 行业或企业标准:IDEA,SMS4,RC6等
中国商密SMS4 • 无线局域网产品使用 • 我国第一个公开商用密码标准 • 分组长度128比特,密钥长度128比特 • 加密算法与密钥扩展算法都采用32轮非线性迭代结构 • 解密算法与加密算法结构相同,轮密钥的使用顺序相反
分组密码的工作模式 • 分组密码处理明文的长度是固定的,但在实际中处理的消息通常是任意长度的,且要求密文尽量不确定,所以产生了使用分组密码来处理任意长度的消息的技术,这就是分组密码的工作模式。 • 工作模式的评价指标有3个方面: • 安全性指标:包括抵抗现有的分析、可证明安全、随机性、合理的数学背景 • 性能指标:计算有效性、空间需求、可并行、预处理能力 • 模式/执行特点指标:灵活、抗错性、可提供密码的服务、简单性 其中安全性是所有评价指标中最重要的。
分组密码保密工作模式 • 是利用分组密码实现数据私密性的密码方案。 • 典型分组密码保密工作模式:
电子密码本模式ECB 优点:并行运算,速度快,易于标准化,适用于随机存储的数据,错误不扩散 缺点:不能隐蔽数据格式,不能抵抗重放攻击、存在组的重放、嵌入、删除等攻击。
应用场景: • 可以用于随机数的加密如会话密钥的加密、单分组明文加密。 • 在数据库中,可以独立的加解密任意一个记录,也可以独立增加或删除任意记录。 • 假设2个银行之间的转账系统如下: 用户名、银行账号等信息都是采用独立的分组或几个分组,由于明文数据一般具有固定的格式,如转账有固定的数据报头,内含发送者、接受者等信息,这些数据格式和统计特征会在ECB模式下的密文中暴露出来,那么敌手截获传输的密文,只要将对应的用户名和银行账号替换为自己的用户名和银行账号的密文,即可将别人的存款存入自己的账号。
密码分组链接模式CBC • 优点:引入了随机的初始向量,避免了ECB的缺点,隐藏了明文的数据格式,在一定程度上能防止数据的篡改。 • 缺点:错误扩散,不能纠正传输中的同步差错,串行效率低。
应用场景: • 数据加密 • 完整性认证和身份认证 • 电脑彩票的防伪技术: • (1)选择一个分组密码算法和一个认证密钥,将他们存于售票机内; • (2)将电脑彩票上的重要信息,如彩票期号、彩票号码、彩票股量、售票单位代号等重要信息按某个约定的规则作为彩票资料明文; • (3)对彩票资料明文扩展一个校验码分组后,利用认证密钥和分组密码算法对之加密,并将得到的最后一个分组密文作为认证码打印于彩票上面; 认证过程: • 执行(3),并将计算出的认证码与彩票上的认证码比较,二者一致时判定该彩票是真彩票,否则判定该彩票是假彩票。
短块处理 • 在电码本模式和密文链接模式中,都要求明文长度是明文分组规模的整数被倍.否则就会出现最后一个明文分组是短块的情形. • 方法1: 分组填充,对明文扩充,使最后一个分组不是短块,但需在文件头或最后一个明文分组中指明文件所含的字节数. • (A) 添充全0比特或其它固定比特,或计算机内存中自然存放的数据。 • (B) 添充随机数。 相对而言,方法(A)简单,易实现,但安全性没有(B)方法好. • 方法2:在有些应用中,如数据库加密、磁盘信息加密等,不允许密文的长度比明文的长度大,这就用到密文挪用方法。
密文反馈模式CFB • 优点:防篡改、自同步、存在有限的数据扩散,可用于认证、适应用户不同数据格式的需要,分组密码当作序列密码的一种方式 • 缺点:效率低、对信道错误敏感且存在错误传播、每条信息IV需不同。
应用场景 • 在CBC模式下,整个数据分组在接收完之后才能进行加密。这对许多网络应用来说是个问题。例如,在一个安全的网络环境中,当从某个终端输入时,它必须把每一个字符马上传给主机,当数据在字节大小的分组里进行处理时,CBC模式就不适用了。为了适应这种情况,我们需要使用密文反馈模式CFB或者输出反馈模式OFB。 • 若待加密消息需按字符、字节或比特处理时,可采用CFB模式。 • 适应于数据库加密、无线通信加密等对数据格式有特殊要求或密文信号容易丢失或出错的应用环境。 • 适用于低误码率网络中流数据加密、认证
输出反馈模式OFB • 优点:错误传播小、可以预处理和在线处理,是分组密码作序列密码的一种方式。 • 缺点:不能实现报文的完整性认证、乱数序列的周期可能有短周期现象。
应用场景: • 适用于明文的冗余度特别大,信道不好但不易丢信号,明文错些信号也不影响效果的情形。如图象加密,语音加密等。 • 噪声环境下流数据加密。
计数器模式CTR • 优点:高效、并行、结构简单可随机解密、可预处理、可用于产生伪随机序列等 • 缺点:同一密钥下,计数器值不应重复使用 • 应用场景:适用于高速网络数据加密。
分组密码的认证工作模式 • 保密性和完整性是信息安全的两个核心目标。保密性是对抗对手的被动攻击,保证信息不泄露给未经授权的人。完整性是对抗对手的主动攻击,防止数据被未经授权的第三方篡改。 • 对消息加密只能提供数据的保密性,不能提供完整性保护。 • 场景:假设S产生一消息M给银行B,要求从S的账户上转200元到A的账户,而攻击者A想把200改为2000。如果M以明文发送,A则很容易做到;如果采用分组密码CTR模式加密,假设M的最后16比特表示要转账的金额,那么M的最后16位就是200的二进制表示0000000011001000。S传输的密文C=<r>y,y=Ek(r+1)⊕M,A知道转账金额,A得到密文C后可以发起攻击:令y’=y⊕(0…0)0000011100011000,得到C’=<r>y’传送给B,则解密后的密文 M’=Ek(r+1)⊕y’=Ek(r+1) ⊕ y ⊕(0…0)0000011100011000 =M ⊕(0…0)0000011100011000=(M-prefix)0000011111010000 若使用的是AES加密,则M-prefix表示原始消息M的前112位,M’的最后16位的二进制表示是战术2000,这样攻击者A就达到了目的,使得银行B转账给A从200变成2000元。
上面的例子说明对消息进行加密只能提供数据的保密性,不能提供完整性保护,攻击者可以通过修改密文达到篡改明文的目的。因此消息的认证也是必需的。上面的例子说明对消息进行加密只能提供数据的保密性,不能提供完整性保护,攻击者可以通过修改密文达到篡改明文的目的。因此消息的认证也是必需的。 • 消息认证码MAC是实现认证的一种重要的方法。 消息认证码是用对称密码算法来实现数据完整性的密码方案,使得消息的接受者可以验证该消息确实来自所声称的消息源、且在传输过程中未受到未授权的修改。 • 典型分组密码认证工作模式: • CBC-MAC • CMAC • 3GPP-MAC • XOR MAC • PMAC • ……
P2 P3 Pm P1 ⊕ ⊕ ⊕ • CBC-MAC • 优点:构造简单,底层加密算法方便替换。 • 缺点:并行性差,相对于其他MAC速度慢, 对变长消息不安全。 MSB σ
分组密码的认证加密模式 • 实际生活中如电子支付、电子邮件、移动支付等情况下,信息在传输时不但需要保密,同时接受者收到信息后还需要进行认证。认证加密模式就是利用分组密码同时实现数据的保密性和认证的功能。 • 典型认证加密模式: • 合成认证加密模式 • One-pass认证加密模式:IAPM、IACBC、OCB、AESKW等 • Two-pass认证加密模式:CCM、GCM等 • 两类特殊的认证加密模式:基于Nonce的认证加密模式、带关联数据的认证加密模式(AEAD) • 典型AEAD模式:EAX、CWC等 • ……
其他模式 • 保长加密模式 • CMC • EME • ABL • XCB • HCTR • 可调分组密码 • 小分组可调加密方案LRW-AES • 大分组可调加密方案EME-32-AES • Hash模式 • 单倍长度构造 • 双倍长度构造
分组密码的应用 • TDEA:2个密钥的三重DES • 广泛使用在银行、密钥管理标准ANS X9.17和ISO 8732、保密增强邮递PEM、基于Internet的应用PGP和S/MIME 中。 • 国际数据加密算法IDEA • 分组密码中较为优秀的一个,在多种商业产品中使用,如PGP(Pretty Good Privacy)中。 • 应用于文件加密、电子邮件加密等。 • AES • AES算法在车辆远程无钥进入(RKE)系统、收费系统、数据库加密、PLC等多项领域中都已经得到了应用。原因主要是因为AES加密算法对系统中的敏感信息能够能够通过语言比较方便的实现,并且在很长一段时间内,AES算法是安全的。 • 磁盘加密:加密软件loop-AES、Truecrypt、dm-crypt等。 • 适用于无线局域网,如移动手机使用的WiFi中的WPA2。
AES加密算法在无线网络安全中的应用 随着人们对WLAN安全性的不断研究,2006年,国际标准组织批IEEE802.11i为更安全无线协议的基础。IEEE802.11i在数据加密方面定义了TKIP、CCMP和WRAP三种加密机制。 WPA(无线局域网受保护访问协议)是一种新型的无线安全技术,它是IEEE802.11i的一个子集。 • AES加密算法在CCMP加密机制中的应用 CCMP是一种基于AES加密算法和CCM认证机制,可以大大提高无线网络的安全程度。CCMP首先用CBC-MAC数据源认证模式对消息中的明文头、明文头长度和负载计算出一个MIC (信息完整性检查码),然后使用计数模式对负载和MIC进行加密,产生128比特的密匙,其中计数模式的核心算法就是AES加密算法。 • AES加密算法在WRAP加密机制中的应用 无线健壮安全认证协议(WRAP),是一种基于128比特AES-OCB模式的加密算法。
AES加密算法在身份识别中的应用 • 电子邮件系统,网上银行系统,甚至个人计算机等等,都要应用到身份识别系统。这些系统的身份识别大都使用“用户名+固定密码”的认证方式,用户直接在登录界面输入用户名和密码,然后提交服务器端认证。这种身份识别方式的优点是简单、方便、便于记忆,但是却隐藏着很多的安全隐患,非法用户只要知道合法用户的用户名和密码,就可获得合法用户的使用权限,从而窃取相关资料。 • 在身份识别系统的应用中,我们先设计一种加密计算器用于生成动态密码,该计算器中存有用户ID(数字)和原始密码。在每次需要身份认证之前,登录系统给用户6-8位的随机数,用户将随机数输入至加密计算器中,计算器将用户ID、原始密码和随机数按照一定的规则组成128位的明文,再将其按不同的规则组成128位的密钥,利用AES加密算法将明文和密钥计算得到128位的密文。 • 为了方便用户,我们再将计算器计算得到的128位的密文用哈希函数进行压缩至3字节,该3字节压缩密文即作为每次身份认证的动态密码。将该动态密码输入至身份识别系统,在身份识别系统中运用同样的算法生成3字节的密文,若用户输入的密文同身份识别系统生成的密文一致,则认为该用户为合法用户,否则为非法用户,拒绝其登录。