我无论做什么,始终在想着,只要我的精力允许我的话,我就要首先为我的祖国服务。——《巴甫洛夫选集》

本文已经收录至我的GitHub,欢迎大家踊跃star 和 issues。

https://github.com/midou-tech/articles

点关注,不迷路!!!

 继上一期的流密码之后,我们就趁热打铁赶紧来看看分组密码是怎么一回事呢?

 在常用的一些密码系统中,分组密码在维护系统安全中仍然扮演着一个重要角色,同流密码一样,分组密码的使用也有许许多多需要我们注意的问题。

 分组密码是什么呢?分组分组顾名思义就是将明文消息分成来进行加密,也就是说,加密器每次只能处理特定长度的一组数据,这里的"一组数据"就被称之为分组。我们也将每一个分组的比特数就称为分组长度

噔噔噔噔!画重点来喽!


 看完分组密码的解释,你就能明白流密码和分组密码的加密器中是否含有记忆元件的解释了:对于分组密码,它处理完一个分组就结束一次加密进程,因此不需要通过内部状态来记录加密的进度;相反的是,对于流密码来说,它是对一个数据流进行连续的加密处理,因此需要加密其中的记忆元件来记录加密器内部的状态。

分组密码:

 分组密码,就是将明文消息编码表示后的数字序列 x0 , x1 , …, xi , …,将其划分成长为 n 的组 x = ( x0 , x1 , …, xn - 1 ),各一个长度为 n 的分组都分别在密钥 k = ( k0 , k1 , …, kt - 1 ) 控制下,变换成长度为m的等长的输出数字序列 y = ( y0 , y1 , …, ym - 1 ),其加密函数 E: Vn× K→ Vm,Vn和Vm分别是 n 维和 m 维矢量空间,K为密钥空间。


 在图中可以看到,输入一个长度为n的明文分组,经过加密器后输出一个长度为m的密文,但是在一般情况下,我们取m=n,如果遇到n>m,则说明在数据加密中存在数据压缩,若n<m,则在数据加密中有数据扩展。

 下面来看看几种简单的设计分组密码常用的方法。

代换:

 如果明文和密文的分组长度都为 n 比特, 则明文的每一个分组都有2的n次方个可能的取值。

  为保证加密后得到的密文可以通过解密运算还原成为明文消息,明文的每一个分组都应产生惟一的一个密文分组,我们把这样的变换称为可逆的, 称明文分组到密文分组的可逆变换为代换。

 我们以n=4为例,来看看分组密码到底数怎样加密的?


 对于分组长度为4的代换结构,我们可以依据代换表给出代换以后的密文。


 但是,这种代换结构在实际应用中还有一些问题需要考虑。

 如果分组长度太小,如 n = 4,系统则等价于古典的代换密码,容易通过对明文的统计分析而被攻破。

 这个弱点不是代换结构固有的,只是因为分组长度太小。如果分组长度n足够大,而且从明文到密文可有任意可逆的代换,明文的统计特性就不会太过明显,这样以来,利用代换结构就不容易被攻破。

feistel结构:

Feistel,基本上使每一个刚接触密码学的小伙伴们最头疼的部分了,别怕别怕,今天龙叔跟你细说Feistel结构。

 其实对于很多分组密码来说,它们的结构从本质上说都是基于一个称为 Feistel 网络的结构。Feistel 提出利用乘积密码可获得简单的代换密码,目的是为了使最后结果的密码强度高于每个基本密码系统产生的结果。

乘积密码:依次使⽤两个或两个以上基本密码。

下来我们看看真正的feistel结构。


 上图为整个feistel的n轮结构,但其实每一轮都是进行同样的操作,接下来我们就分析在一轮中到底都做了些什么?


  • Feistel加密1轮的迭代过程

​ - 明⽂2w⽐特,被分为等⻓的两部分

​ - 第i轮⼦密钥由初始密钥K推导出的

​ - ⼀般来说,每轮⼦密钥与K不同,也互不相同

​ - F称为轮函数(每轮都⼀样)


 在每一轮中,都要进行左右的一次运算,并将运算结果传递给下一轮。

 再来看看我们的feistel解密过程。


  • Feistel解密1轮迭代过程

​ - 被解密的数据左右交换

​ - 解密过程按照与加密过程相反顺序使⽤密钥


 解密同加密一样,也需要进行左右消息分组的运算,并且要将运算结果传递给下一轮。

 通过feistel结构的加密和解密,我们可以发现在明文消息在经过加密以后的密文,可以通过解密算法将其还原为原始的明文,也就是说该加密算法是可逆的。

 分组密码的应用非常广泛,它易于构造伪随机数生成器、流密码、消息认证码(MAC)和杂凑函数等,还可进而成为消息认证技术、数据完整性机制、实体认证协议以及单钥数字签字体制的核心组成部分。

 实际应用中对于分组密码可能提出多方面的要求,除了安全性外,还有运行速度、存储量(程序的长度、数据分组长度、高速缓存大小)、实现平台 (硬件、软件、芯片)、运行模式等限制条件。 这些都需要与安全性要求之间进行适当的折中选择。

 今天就先和大家说到这里,下一期呢,本应按照计划讲讲DES算法,但是DES算法在之前我们就已经说过啦,还有不明白的小伙伴可以翻回去再看看,链接给大家,请尽情暴击! 聊聊密码学中的DES算法

历史文章:

  • 懂点密码学

  • 信息安全威胁

  • 聊聊密码学中的DES算法

  • 《密码学系列》—— 流密码

求点赞

《密码学系列》—— 分组密码相关推荐

  1. 密码学系列之:SAFER

    简介 分组密码是一个非常优秀的加密结构,很多常用加的加密算法使用的都是分组算法,比如DES.SAFER表示的也是一种分组密码算法.一起来看看吧. SAFER简介 SAFER的全称是Secure And ...

  2. 密码学系列 - 国密算法SM1/SSF33

    国密分组密码 SM1分组密码和SSF33分组密码均为国密分组密码标标准,SM1和SSF33的密钥长度和分组长度均为128比特. 目前这两个分组密码标准的算法尚未公开,其实现仅可以通过硬件芯片的方式获得 ...

  3. 密码学系列(一):密码行业、政策介绍

    密码学系列(一):密码行业.政策介绍 管理部门 <密码法>(19年) <密码法>具体章节 第3章 商用密码 第4章 法律责任 相关零散知识 管理部门 国家密码管理局--商密办- ...

  4. 密码学:分组密码.(块密码:是一种对称密码算法)

    密码学:分组密码. 分组加密(Block Cipher) 又称为分块加密或块密码,是一种对称密码算法,这类算法将明文分成多个等长的块 (Block) ,使用确定的算法和对称密钥对每组分别加密或解密.分 ...

  5. 密码学系列 - 椭圆曲线签名的基本原理

    ECDSA 涉及到三个重要的概念 第一个是私钥,私钥是一个只有我自己知道的数字,我可以用私钥去生成签名,比特币使用的私钥是一个256 bit 的整数. 第二个是公钥,公钥是跟私钥配对的一个数,是根据私 ...

  6. 密码学系列 - 椭圆曲线 ECC - ED25519

    密码学 - 椭圆曲线 ECC ED25519 椭圆曲线是一系列满足如下方程的点: y^2 = x^3 + ax + b 并且 4a^3 + 27b^2 != 0 特性 封闭性:因为椭圆曲线上的点相加, ...

  7. 密码学系列 - 国密算法

    国密即国家密码局认定的国产密码算法.主要有SM1,SM2,SM3,SM4,SM9.密钥长度和分组长度均为128位. 国密算法种类 SM1 为对称加密.其加密强度与AES相当.该算法不公开,调用该算法时 ...

  8. 密码学系列 - 棱镜门

    prime256v1 (即 secp256r1) NSA对SECP256r1曲线安置了后门陷阱, 被美国情报人员破解可能性非常大 2013年发生了震惊世界的棱镜门事件.这一年,前中情局(CIA)职员爱 ...

  9. 密码学系列 - 默克尔路径

    默克尔树 (merkle tree) 默克尔树,也称为哈希二叉树,是一种用于有效地汇总和验证大型数据集完整性的数据结构. 默克尔路径 可用于证明在一个很大字节数的区块中上千笔交易中的具体某一笔交易的存 ...

最新文章

  1. User Profile Service 服务未能登录转载自(sailing的新浪博客)
  2. Java并发编程(3):线程挂起、恢复与终止的正确方法(含代码)
  3. php mysql数据库简介,mysql数据库
  4. uboot流程——命令行模式以及命令处理介绍
  5. idea中新建分支并且切换到新建的分支上
  6. Visual Studio 20周年软件趋势随想
  7. 【nyoj-456】 邮票分你一半 (dp,0-1背包的中点问题)
  8. CCF 201412-2 Z字形扫描
  9. C语言CASE如何用switch,switch case 中如何使用枚举
  10. 区块链溯源系统架构---区块链工作笔记002
  11. 扫描40亿可路由的 IPv4 地址后发现这些打印机的 IPP 端口遭暴露
  12. 产生滚动条时JPanel的大小发生变化
  13. c语言题库及详解答案 免费下载,C语言题库(带详解答案).pdf
  14. 【单例模式、多例模式、工厂模式和枚举】
  15. 使用Scrapy爬取图书网站信息
  16. 让用户无法在微信中举报的代码
  17. host key has just been changed
  18. 数据集下载(OTB2015、VOT2018、UAV123、DET、VID、COCO、Youtube-BB、LaSOT、GOT-10k)
  19. 如何在cad中导入谷歌地图_如何在Google地图中设置出发和到达时间
  20. C#发送企业内部邮件

热门文章

  1. thymeleaf 的 th:onclick,慢慢采坑
  2. 面向大模型微调的instruction指令自动化生成技术:SELF-INSTRUCT指令自动化生成框架工作介绍...
  3. 升级最新版本Android Studio Arctic Fox 遇到的问题
  4. (zz)[分享]配置CPU温度.风扇转速,硬盘温度监控(附加Athlon/Duron系统安全度夏指南)...
  5. 做一个PMC需要懂得哪些知识?PMC的流程又是什么?工作重点内容是什么?
  6. 在命令框(cmd)中对数据库进行“增删改查”
  7. 【数据结构与算法】Manacher算法
  8. Android集成Nets支付
  9. 微慕小程序开源版A标签优化说明
  10. 计算机台式硬件排名价格,CPU天梯图2018年1月最新版 台式电脑处理器天梯排行 (全文)...