块加密

作者: 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长度)
  • 尽管密钥长度已经尽量的小了,密钥交换(如何在不安全的信道上交换密钥)依然是个很大的问题。

相关文章

  • 块加密

    6.1 概述 块加密(block cipher)指的是用于加密固定长度原文的算法。假设k为密钥,E为加密函数,P为...

  • AES加密算法原理

    简介 一般的加密通常都是块加密,如果要加密超过块大小的数据,就需要涉及填充和链加密模式,本文对对称加密和分组加密中...

  • 加密算法分类

    对称加密 块式加密,流式加密,可变秘钥长度加密 块式,明文按分组加密 常用和特点 DES: 密钥短,使用时间长,硬...

  • Android网络数据传输安全——AES加密解密(ECB模式)

    AES介绍ECB是最简单的块密码加密模式,加密前根据加密块大小(如AES为128位)分成若干块,之后将每块使用相同...

  • 加解密基础及openssl命令

    加密算法和协议: 对称加密:。加解密使用同一个密钥;将数据分割成固定大小的块,逐块加密;且块与块之间有关联关系;。...

  • DES加密与3DES加密

    DES 数据加密标准(英语:Data Encryption Standard,缩写为 DES)是一种对称密钥加密块...

  • 密码那些事儿|(三十一)寻找一套独特的“钥匙和锁”

    在密码学中,Lucifer加密算法是一种分组加密(英语:Block cipher),又称分块加密或块密码,在迭代的...

  • 块链经济入门

    加密货币的基础是块链,而块链是去中心化的数字账本。块链技术的支持者们梦想建立一个基于块链的制度化的加密经济,一个不...

  • DES加密算法原理及使用Java不导包的实现

    一. DES概述 数据加密标准(Data Encryption Standard),一种使用密钥加密的块算法,19...

  • iOS AES和DES加密

    DES DES(全程Data Encryption Standard)即数据加密标准,是一种使用密钥加密的块算法,...

网友评论

      本文标题:块加密

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