块加密

作者: yuan1028 | 来源:发表于2021-01-27 13:31 被阅读0次

    6.1 概述

    块加密(block cipher)指的是用于加密固定长度原文的算法。假设k为密钥,E为加密函数,P为明文,C为密文,则可以表达为
    C=E(k,P)
    明文和密文是一串比特并且长度相等。块加密的块大小(block size)是固定的。密钥空间(Keyspace)指的是所有密钥key的集合。

    一旦我们把明文加密成了密文,之后就可能需要对密文进行解密,得到明文。设D为解密函数
    P=D(k,C)

    image-20210121170821221.png

    块加密是对称密钥加密机制的一个实例。一个密钥即用来加密也用来解密。

    块加密是密钥的一个排列(keyed permutation),因为块加密算法将每个可能的块映射到另一个块。

    举一个例子,假设块大小为4位,那么就有2^4=16种可能的块。因为每个块都可以映射为一个16进制的数,我们用这些数字来表示块,如图6.1。

    image-20210127094236874.png

    一旦选择了一个密钥,块加密就用它来决定任意块的密文。我们用箭头来表示这个关系,箭头从明文开始,经过密钥k和加密函数E加密后,到达箭头指向的是加密后的密文。在图6.4中(一种排列对应),排列不光指的是一个大的圈,它还包含了一个7个元素的小圈(0->6->3->B->4>F->9->7->0),一个4个元素的小圈(1->A->2->C->1),一个2个元素的小圈(5->8->5),和两个映射到自己的圈(D->D,E-E).可以看出这个排列映射为

    0 1 2 3 4 5 6 7 8 9 a b c d e f

    6 a c b f 8 3 0 5 7 2 4 1 d e 9

    image-20210127094318399.png

    当需要解密的时候,块加密需要计算拟排列。不同之处的话就是箭头的方向是反过来的。

    如6.4中例子,解密的排列对应为

    密文 0 1 2 3 4 5 6 7 8 9 a b c d e f

    明文 7 c a 6 b 8 0 9 5 f 1 3 2 d e 4

    明文 0 1 2 3 4 5 6 7 8 9 a b c d e f

    密文 6 a c b f 8 3 0 5 7 2 4 1 d e 9

    明文 0 1 2 3 4 5 6 7 8 9 a b c d e f

    密钥决定了块与块的映射关系,一个不同的密钥就可以得到一个不一样的箭头关系,如图6.4.

    给定一些明文和密文对应该不可以暴露出一些其他对的信息。理想的块加密,应该没有除了暴力枚举密钥之外的其他解密方式。

    本文中给出的示例仅仅只有4位,只有16种块,真实的块加密往往有一个很大的块大小,例如128位,2128约1038.5种块,数学告诉我们n的排列:
    n!=1 * 2 * 3 * ... * (n-1) *n
    排列的增长非常快。5!=120, 10!=3628800。对于128位的块大小,其排列为(2^128)!,是一个天文数字,所以按目前的计算能力来讲,128位可以认为是不可解的。现在常用的块大小一般从128到256位。

    6.2 AES

    当前块加密的主流算法是AES(Advanced Encryption Standard),AES的块大小为128位(16个字节),密钥长度可以为128位,192位和256位。目前没有针对AES的实践性的攻击。但是有一些针对AES减少轮数版本的攻击。

    AES加密算法的详情,后续补充。

    6.3 DES与3DES

    DES(Data Encryption Standard)是最古老的块加密算法之一,其密钥长度为56位(算法中为64位长度,其中有8位是用来校验),目前认为它已不再安全。

    由DES延伸的还有3DES,先加密,再解密然后再加密
    C=E_{DES}(k_1,D_{DES}(k_2,E_{DES}(k_3,p)))
    这一过程提供了两点改进

    • 从密码分析角度看,三次应用算法,增加了攻击的难度。
    • 3重密码增加了密码域,使得暴力枚举密钥变得不实际。

    这里的三个密钥可以完全独立(这样也就是56* 3=168位),或者k3=k1(56 * 2= 112),或者k1=k2=k3(这样会退化为DES)

    针对3DES已经有一些攻击,减少了它的安全性。虽然要破解三个密钥完全独立的情况目前依然是不切实际的,对于现代的密码系统3DES依然不是个好的选择。随着密码学研究攻击和算力的增长,目前的安全边界已经变的很小了。

    更佳的选择是AES,AES不但比3DES更加安全,通常也更加的快速。在相同的硬件和相同的模式下,AES-128通常是每一个字节12.6次循环,然而3DES需要134.5次循环。

    6.4 遗留问题

    • 只能对有限长度的消息加密(block size长度)
    • 尽管密钥长度已经尽量的小了,密钥交换(如何在不安全的信道上交换密钥)依然是个很大的问题。

    相关文章

      网友评论

          本文标题:块加密

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