详解维吉尼亚密码(附四种攻击策略)

目录

一. 介绍

二. 破解维吉尼亚密码

2.1 频率统计

2.2 提高型频率统计法

2.3 Kasiski攻击法

2.4 重合指数攻击法(index of coincidence method)

三. 小结


一. 介绍

我们知道英语字母的出现频率是有规律的,比如像下表:

掌握了这些规律后,像凯撒密码等单表置换密码就不安全了。因为固定的密文字母一定对应着同样的明文字母。这个时候就出现了,略微高级的维吉尼亚密码。

维吉尼亚密码(Vigenere cipher)又叫做多表置换密码(poly-alphabetic shift cipher)。举个例子,明文字母为ab,可能对应密文DZ;明文字母是ac,可能对应密文TY。我们发现同一个明文字母a,在密文中有的时候是D,有的时候是T

首先说明下,这些密码都是把字母a~z对应0~25,密钥字母相加对应数字相加,必要时需要模26。举个例子,比如密钥是cafe,加密过程如下表:

明文tellhimaboutme
密钥cafecafecafeca
密文VEQPJIREDOZXOE

需要注意的是密钥cafe是会被重复利用的,以4为循环。也就是说加密第一个字母,加密第五个字母,加密第9个字母使用的同一个密钥c;以此类推。

观察下密文,我们发现密文E有的时候对应明文e,有的时候对应明文a,看起来似乎毫无规律。另外,当密钥足够长时,破解起来就更加难了。

维吉尼亚密码是在16世纪提出了,直到过了200多年,人们才陆续发现了破解的方法。

二. 破解维吉尼亚密码

2.1 频率统计

假定密钥长度为t,也就是密钥k包含t个字母,可以写做:

k=k_1\cdots k_t

借此,我们把密文可以分成t组。比如把第一个密文,第t+1个密文,第2t+1个密文放一起,等等。这些密文所使用的密钥是一样的,如下:

c_j,c_{j+t},c_{j+2t},\cdots

这些密文都使用同一个私钥k_j。密码学中很喜欢把一组叫做一流(stream),第j组,也就是第j流。

首先,最傻的穷搜攻击(brute-force search),一共有t组,每一组的密钥都有26种可能性(26个英文字母),如果直接穷搜的话,也就是26^t,这显然是不可行的。

那应该怎么做?

我们可以统计每一组密文字母的频率,比如我们发现在某一组密文中P出现的频率最高,那么它对应的明文大概率是e(看上面英文字母频率统计表)。由此就可以推导出这一组的密钥,这样其它的字母也就可以解决了。这种攻击方法的时间复杂度为26t。

2.2 提高型频率统计法

以上统计字母概率的方法误差太大了,比如如果你发现两个字母频率一样,咋办?

所以,实际利用的时候大都采用频率平方和的数字分析方法。还是一样,把英文字母a~z跟整数0~25对应起来。令p_i代表第i个字母的概率,注意是概率。根据字母表,我们发现:

\sum_{i=0}^{25}p_i^2\approx 0.065

在同一组密文中,使用的密钥是相同的。也就是对于密文来讲,令q_i代表第i个字母的频率,假定该组的密钥为k,那么明文p_i应该与q_{i+k}相对应,由此计算:

I_j=\sum_{i=0}^25 p_iq_{i+j}

密钥有26种可能性,只需要最多计算26次,当发现这个计算结果也接近0.065时,这个密钥就是正确的。

这个在现代密码学中可以被看成密钥恢复攻击(key recovery attack)。

2.3 Kasiski攻击法

Kasiski算法最早于19世纪中期被提出,该方法可以用来猜测密钥具体长度。我们知道英语中会经常出现“the”这个单词,加密形成密文后,很有可能对应相同的密文字母。

假如某维吉尼亚密码的密钥是beads,我们来看一个例子:

密文中重复出现了LII,它们都对应着明文the,说明这两个明文使用的是同一个密钥字母。我们把密钥的长度看成周期,两个LII之间的距离为30,说明30是密钥周期的倍数。

2.4 重合指数攻击法(index of coincidence method)

这种方法主要也是用来猜测密钥长度的,比上一个方法更加准确,利用代码也更容易实现。

假定密钥长度为t,在给定密文的情况下,我们希望通过重合指数攻击法,导出t的具体值。

按照之前分组的思想,第一组(stream)密文使用同一个密钥,如下:

c_1,c_{1+t},c_{1+2t},\cdots

同一个密钥代表同一种移位的加密方式。

q_i代表第i个明文字母的频率,假设此组密文的移位为j,也就可以得到:

q_{i+j}\approx p_i

其中p_i代表明文第i个字母的概率。也就是q_0,\cdots,q_{25}就是把p_0,\cdots,p_{25}移位j得到的,这种移位其实很类似于抽象代数中循环群。比如假设明文a的概率为0.01,那么移3位的话,密文中C的频率应该接近0.01。考虑一个字母的话,误差太大。

所以:

\sum_{i=0}^{25}q_i^2\approx\sum_{i=0}^{25}p_i^2\approx 0.065

由此便可以大致确定移位的多少。假定候选的密钥长度\tau=1,2,\cdots,T,攻击的步骤如下:

  1. 抽取第一组密文c_1,c_{1+\tau},c_{1+2\tau},\cdots
  2. 形成直方图,统计每个字母的频率q_0,\cdots,q_{25}
  3. 接着计算:

S_{\tau}=\sum_{i=0}^{25}q_i^2

如果此时的\tau恰好为密钥长度t时,最终S_{\tau}的计算结果必定接近0.065.

如果密钥长度分析不对的话,每个字母出现的频率会均匀相等。因为是乱码,相当于均匀随机取,所以q_i\approx 1/26,也就可以得到:

S_{\tau}\approx \sum_{i=0}^{25}(\frac{1}{26})^2\approx 0.038

总结下就是,当密钥正确时,计算出的结果接近0.065;当密钥不对时,计算出的结果接近0.038.

也可以拿第二组密文来验证此时的密钥长度分析是否正确。

三. 小结

维吉尼亚密码的攻击算法需要密文的长度足够长,因为只有这样才能利用频率来代替概率。

可以想到如果密钥长度足够长,这个密码方案可以实现香农意义上的完美安全。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/282583.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2023-12-23 LeetCode每日一题(移除石子使总数最小)

2023-12-23每日一题 一、题目编号 1962. 移除石子使总数最小二、题目链接 点击跳转到题目位置 三、题目描述 给你一个整数数组 piles ,数组 下标从 0 开始 ,其中 piles[i] 表示第 i 堆石子中的石子数量。另给你一个整数 k ,请你执行下述…

2024任务驱动Java程序设计讲课提纲

文章目录 为何采用任务驱动?任务驱动Java程序设计课程概述项目一:踏上Java开发之旅任务1:安装配置JDK并开发第一个Java程序1、安装JDK2、配置JDK环境变量3、开发第一个Java程序 任务2:搭建Java集成开发环境IntelliJ IDEA1、安装In…

研究:同样的C++模板在多个cpp里出现,编译器是否要重复生成?

2023年就要过去,马上要跨如2024年。祝大家在新的一年,有个好收成。 一直以来不是很确定: 同样的的模板,在各个cpp分别出现,编译器要实现几份? 研究一下。 用命令行的编译方法,参考&#xff1a…

【xdma】 pcie.bar设置

FPGA优质开源项目– PCIE通信 xdma 两者保持一致 FPGA开源项目 – PCIE I/O控制卡 xdma PCIe的XDMA应用 读写部分分为两种,一种是数据的读写,另一种是配置数据的读写,在数据读写部分,DMA通过MIG控制DDR完成数据读写。配置数据…

Ubuntu 22.04 安装ftp实现与windows文件互传

Ubuntu 22.04 安装ftp实现与windows文件互传 1、配置安装 安装: sudo apt install vsftpd -y使能开机自启: sudo systemctl enable vsftpd 启动: sudo systemctl start vsftpd创建ftp工作目录: sudo mkdir -p /home/ftp/uftp…

Elasticsearch-8.11.1 (2+1)HA(高可用)集群部署

目录 一、环境描述 二、安装 ES 2.1 下载Elasticsearch 2.2 解压Elasticsearch 2.3 创建es服务账号/密码 2.3 修改服务器配置 2.4 配置节点 2.4.1 配置说明 2.4.2 配置高可用集群 2.4.2.1 maser节点服务配置 2.4.2.2 node1 节点服务配置 2.4.2.3 node2 节点服务配置…

ARCGIS PRO SDK GeometryEngine处理独立几何图形

1、面积类:pol为Polygon 1).Area:获取几何图形的面积。这是使用二维笛卡尔数学来计算面积的平面测量 double d GeometryEngine.Instance.Area(pol) 2).GeodesicArea:获取几何图形的椭球面积 …

SLAM学习入门--机器学习

文章目录 机器学习逻辑回归(LR)基本原理为什么 LR 要使用 sigmoid 函数?LR 可以用核函数么?为什么 LR 用交叉熵损失而不是平方损失?LR 能否解决非线性分类问题?LR为什么要离散特征?逻辑回归是处…

【JavaScript】垃圾回收与内存泄漏

✨ 专栏介绍 在现代Web开发中,JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性,还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言,JavaScript具有广泛的应用场景&#x…

SPI机制原理+使用

一、概述 SPI全称(Service Provider Interface),是JDK内置的一种服务提供发现机制;SPI机制提供了组件发现和注册方式,可以为应用程序提供灵活的插件机制, 主要原理:接口 反射 配置文件。 二、…

软件测试/测试开发丨Python常用数据结构学习笔记

Python常用数据结构 list 列表 列表定义 列表是有序的可变元素的集合,使用中括号[]包围,元素之间用逗号分隔列表是动态的,可以随时扩展和收缩列表是异构的,可以同时存放不同类型的对象列表中允许出现重复元素 列表使用&#x…

python练习2【题解///考点列出///错题改正】

一、单选题 【文件】 *1.【单选题】 ——文件:读取方法 下列哪个选项可以从文件中读取任意字节的内容?(C )A A.read() B.readline() C.readlines() D.以上全部 A\B\C三种方法都是可以读取文件中任意的字节内容的&#xff0…

消息队列基础知识

学一点,整一点,基本都是综合别人的,弄成我能理解的内容 https://blog.csdn.net/BenJamin_Blue/article/details/125946812 https://blog.csdn.net/qq_46119575/article/details/129794304 📌导航小助手📌 生产者-消费者…

JS作用域:全局作用域,函数作用域,块级作用域

JS作用域:全局作用域,函数作用域,块级作用域 背景作用域全局作用域函数作用域块级作用域通过调用栈分析块级作用域开发者工具查看作用域选项卡示例 背景 由于 JavaScript 存在变量提升这种特性,从而导致很多与直觉不符的代码&…

详解数组的轮转

𝙉𝙞𝙘𝙚!!👏🏻‧✧̣̥̇‧✦👏🏻‧✧̣̥̇‧✦ 👏🏻‧✧̣̥̇:Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - :来于“云”的“羽球人”。…

Git 分布式版本控制系统(序章1)

第一章 Git 分布式版本控制系统 为什么学Git? 某些企业面试需要掌握Git,同时,也方便管理自己的Qt项目。 一、Git 客户端下载(Windows) 下载地址 https://gitee.com/all-about-git#git-%E5%A4%A7%E5%85%A8 二、Git 的特点 分支…

vue3引入百度地图(两种方法)

首先要有百度开放平台并进行注册&#xff0c;不懂看这里 ### 第一种方法 地图引入流程 安装vue-baidu-map-3x插件 参考官网地址&#xff1a;快速上手 | vue-baidu-map-3x npm install vue-baidu-map-3x --save 在public/index.html文件中引入 <!-- 百度地图 --> &…

微软开源,全平台通用:Shell 自动补全工具 | 开源日报 No.132

microsoft/inshellisense Stars: 7.6k License: MIT inshellisense 是一个为 Shell 提供 IDE 风格自动补全的工具。它是一个终端本地运行时自动完成&#xff0c;支持 600 多个命令行工具&#xff0c;并且可以在 Windows、Linux 和 macOS 上使用。主要功能包括安装后可通过运行…

HTML教程(1)——概述和第一个网页

一、什么是HTML HTML 是用来描述网页的一种语言。 HTML 指的是超文本标记语言 (Hyper Text Markup Language)HTML 不是一种编程语言&#xff0c;而是一种标记语言 (markup language)标记语言是一套标记标签 (markup tag)HTML 使用标记标签来描述网页 二、什么是HTML 标签 H…

设计模式:工厂方法模式(讲故事图文易懂)

目录 简单工厂工厂方法模式 简单工厂 定义&#xff1a;简单工厂由一个工厂根据参数类型决定创建哪种产品的实例。 简单工厂不包含在23种设计模式之内&#xff08;简单工厂不满足开闭原则&#xff0c;后面会详细讲&#xff09; 举例&#xff1a;张三去4S店买了车&#xff0c;显…