当前位置: 首页 > news >正文

信息安全-古典密码学简介

目录

C. D. Shannon: 

一、置换密码

二、单表代替密码

① 加法密码

② 乘法密码

③密钥词组代替密码

三、多表代替密码

代数密码

四、古典密码的穷举分析

1、单表代替密码分析

五、古典密码的统计分析

1、密钥词组单表代替密码的统计分析        

2、英语的统计规律        

C. D. Shannon: 

采用混淆、扩散和乘积的方法来设计密码; 

混淆:使密文和明文、密钥之间的关系复杂化

扩散:将每一位明文和密钥的影响扩大到尽可能多的密文位中。

乘积和迭代:多种加密方法混合使用对一个加密函数多次迭代

古典密码编码方法:置换,代替,加法

古典密码学举例:

一、置换密码

把明文中的字母重新排列,字母本身不变,但其位置改变了,这样编成的密码称为置换密码。最简单的置换密码是把明文中的字母顺序倒过来,然后截成固定长度的字母组作为密文。

明文:明晨5点发动反攻。MING CHEN WU DIAN FA DONG FAN GONG

密文:GNOGN AFGNO DAFNA IDUWN EHCGN IM

理论上:①、置换密码的加密钥是置换矩阵 p,解密钥是置换矩阵 p-1 。②、置换密码经不起已知明文攻击。           

           

二、单表代替密码

① 加法密码

A和B是有 n个字母的字母表。定义一个由A到B的映射:f: A→B。f(ai )= bi=aj;j=i+k mod n;加法密码是用明文字母在字母表中后面第 k个字母来代替。K=3 时是著名的凯撒密码。

② 乘法密码

A和B是有n个字母的字母表。定义一个由A到B的映射:f: A→B。f(ai )= bi= aj      j=ik mod n。其中,(n,k)=1。注意:只有(n,k)=1,才能正确解密。

③密钥词组代替密码

随机选一个词语,去掉其中的重复字母,写到矩阵的第一行,从明文字母表中去掉这第一行的字母,其余字母顺序写入矩阵。然后按列取出字母构成密文字母表。

举例:密钥: HONG YE 

 矩阵:    HONGYE   选出顺序:按列

                ABCDFI

                JKLMPQ   改变密钥、矩阵大小

                RSTUVW  和取出序列,得到不同的

                XZ        密文字母表。

密文字母表 :  B={ HAJRXOBKSZNCLTGDMUYFPVEIQW }

三、多表代替密码

单表代替密码的安全性不高,一个原因是一个明文字母只由一个密文字母代替。

构造多个密文字母表,在密钥的控制下用相应密文字母表中的一个字母来代替明文字母表中的一个字母。一个明文字母有多种代替。Vigenere密码:著名的多表代替密码

代数密码

① Vernam密码

     明文、密文、密钥都表示为二进制位:

      M=m1,m2,… ,mn K =k1,k2,… ,kn C =c1,c2,… ,cn

② 加密 : c1= mi⊕ ki  ,i=1,2,… ,n   

     解密 : m1= ci⊕ ki  ,i=1,2,… ,n

③ 因为加解密算法是模2加,所以称为代数密码。

④ 对合运算:f=f-1,模 2加运算是对合运算。

      密码算法是对和运算,则加密算法=解密算法,工程实现工作量减半。

⑤ Vernam密码经不起已知明文攻击。

⑥ 如果密钥序列有重复,则Vernam密码是不安全的。

⑦一种极端情况:一次一密

               • 密钥是随机序列。

               • 密钥至少和明文一样长。

               • 一个密钥只用一次。

⑧一次一密是绝对不可破译的,但它是不实用的。

⑨ 一次一密给密码设计指出一个方向,人们用序列密码逼近一次一密。

四、古典密码的穷举分析

首先了解下什么是安全?

如果把一封信锁在保险柜中,把保险柜藏起来,然后告诉你去看这封信,这并不是安全,而是隐藏

相反,如果把一封信锁在保险柜中,然后把保险柜及其设计规范和许多同样的保险柜给你,以便你和世界上最好的开保险柜的专家能够研究锁的装置,而你还是无法打开保险柜去读这封信,这才是安全

柯克霍夫原则(Kerckhoffs‘s principle密码系统的加密算法和解密算法应该是公开的,密码系统的安全性要取决于密钥的安全性。密码分析学是基于己知密码算法但不知道密钥的情况下,试图从密文中破译出明文的科学

1、单表代替密码分析

① 加法密码

因为f(ai )= bi=aj  j=i+k mod n

所以k=1,2,... ,n-1,共n-1种可能,密钥空间太小。以英文为例,只有25种密钥。经不起穷举攻击。

② 乘法密码

因为f(ai )= bi=aj   j=ik mod n,且(k,n)=1。所以k共有(n)种可能,密钥空间更小。

对于英文字母表,n=26,k=1,3,5,7,9,11,15,17,19,21,23,25 取掉1,共11种,比加法密码更弱。经不起穷举攻击。

③ 密钥词语代替密码

因为密钥词语的选取是随机的,所以密文字母表完全可能穷尽明文字母表的全排列。 以英文字母表为例,n=26,所以共有26!种可能的密文字母表。26!≈4×10^26用计算机也不可能穷举攻击。

注意:穷举不是攻击密钥词语代替密码的唯一方法。

五、古典密码的统计分析

统计攻击(频率攻击)

假设:根据分析假设某些结论。

推断:在假设的前提下,推断出一些结论

验证发展:填上破译出的字母,根据词义、词规则不断发展

当攻者能窃听到密文时,否有其它更有效攻击方法?

1、密钥词组单表代替密码的统计分析        

任何自然语言都有自己的统计规律。如果密文中保留了明文的统计特征,就可用统计方法攻击密码。由于单表代替密码只使用一个密文字母表,一个明文字母固定的用一个密文字母来代替,所以密文的统计规律与明文相同。因此,单表代替密码可用统计分析攻破。

2、英语的统计规律        

每个单字母出现的频率稳定。

  最高频率字母      E

  次高频率字母      T A O I N S H R

  中高频率字母      D L

  低频率字母        C U M W F G Y P B

  最低频率字母     V K J X Q Z

频率最高的双字母组:

  TH HE IN ER AN RE ED ON

  ES ST EN AT TO NT HA ND

  OU EA NG AS OR TI IS ET

  IT AR TE SE HI OF

频率最高的三字母组:

   THE ING AND HER ERE ENT THA WAS

  ETH FOR DHT HAT SHE ION HIS ERS

  VER

其中THE的频率是ING的3倍!

英文单词以E,S,D,T为结尾的超过一半。英文单词以T,A,S,W为起始字母的约占一半。还有其它统计规律!教科书上有一个完整的统计分析例子。经得起统计分析是对近代密码的基本要求!

相关文章:

信息安全-古典密码学简介

目录 C. D. Shannon: 一、置换密码 二、单表代替密码 ① 加法密码 ② 乘法密码 ③密钥词组代替密码 三、多表代替密码 代数密码 四、古典密码的穷举分析 1、单表代替密码分析 五、古典密码的统计分析 1、密钥词组单表代替密码的统计分析 2、英语的统计规…...

面试题 01.05. 一次编辑

字符串有三种编辑操作:插入一个英文字符、删除一个英文字符或者替换一个英文字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。 示例 1: 输入: first "pale" second "ple" 输出: True示例 2: 输入: first &qu…...

针对头疼的UDP攻击如何定制有效的防护措施

分布式拒绝服务攻击(Distributed Denial of Service)简称DDoS,亦称为阻断攻击或洪水攻击,是目前互联网最常见的一种攻击形式。DDoS攻击通常通过来自大量受感染的计算机(即僵尸网络)的流量,对目标…...

怎么制作流程图?介绍制作方法

怎么制作流程图?在日常生活和工作中,流程图已经成为我们不可或缺的工具。无论是项目规划、流程优化,还是学习理解复杂系统,流程图都能帮助我们更直观地理解和表达信息。然而,很多人可能并不清楚,其实制作流…...

棱镜七彩参编《网络安全技术 软件供应链安全要求》国家标准发布

据全国标准信息公共服务平台消息显示,《网络安全技术 软件供应链安全要求》(GB/T 43698-2024)国家标准已于2024年4月25日正式发布,并将于2024年11月1日正式实施。棱镜七彩作为主要编制单位之一参与该国家标准的编制,为…...

Keepalived实现LVS高可用

6.1 KeepalivedLVS集群介绍 Keepalived和LVS共同构建了一个高效的负载均衡和高可用性解决方案:LVS作为负载均衡器,负责在集群中的多个服务器间分配流量,以其高性能和可扩展性确保应用程序能够处理大量的并发请求;而Keepalived则作…...

【力扣】1089.复写零

原题链接:. - 力扣(LeetCode) 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 给你一个长度固定的整数数组 arr ,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。 注意:请不…...

Golang实践录:gin框架使用自定义日志模块

本文介绍在 Golang 的 gin 框架中使用自定义日志模块的一些方法。 背景 很早之前就实现并使用了自己封装的日志模块,但一直没有将gin框架内部的日志和日志模块结合。gin的日志都是在终端上打印的,排查问题不方便。趁五一假期,集中研究把此事…...

Django之配置数据库

一,创建项目 二,将项目的setting.py中的 DATABASES {default: {ENGINE: django.db.backends.sqlite3,NAME: BASE_DIR / db.sqlite3,} }替换成如下(以mysql为例) DATABASES {default: {ENGINE: django.db.backends.mysql,NAME: …...

Ajax 笔记02

01 jq中的ajax方法中的dataType属性 dataType属性的属性值有以下几种: xml 返回数据按照xml解析 json 返回的数据按照json代码解析 script 返回的数据按照js代码解析 text 把返回的数据按照普通文本解析 jsonp 跨域 json: javascript object notation(js对象简谱) json整体…...

【隧道篇 / WAN优化】(7.4) ❀ 03. WAN优化的原理 ❀ FortiGate 防火墙

【简介】相信对WAN优化感兴趣的人都会有疑问,WAN优化真的有作用吗?如果真的有作用,那是根据什么原理呢?让我们来更深入的了解一下。 客户端和服务器端 其实很多人在一开始看到WAN优化这个词,就自然的以为上网速度太慢&…...

网络爬虫概述与原理

网络爬虫概述与原理 网络爬虫简介狭义上理解功能上理解常见用途总结 网络爬虫分类通用网络爬虫聚焦网络爬虫增量网络爬虫深度网络爬虫 网络爬虫流程网络爬虫采集策略深度有限搜索策略广度优先搜索策略 网络爬虫简介 通过有效地获取网络资源的方式,便是网络爬虫。网…...

可视化实验三 Matplotlib库绘图及时变数据可视化

1.1 任务一 1.1.1 恢复默认配置 #绘图风格,恢复默认配置 plt.rcParams.update(plt.rcParamsDefault)#恢复默认配置 或者 plt.rcdefaults() 1.1.2 汉字和负号的设置 import matplotlib.pyplot as plt plt.rcParams["font.sans-serif"]"SimH…...

开启多线程下变量共享与私有问题

开启多线程下变量共享与私有问题 🌵ThreadLocal和Atomic是Java中用于多线程编程的两个重要工具。 ThreadLocal是一个线程局部变量,它为每个线程提供了独立的变量副本,确保每个线程都可以访问自己的变量副本而不会影响其他线程的变量。在多线…...

Qt模型视图代理之QTableView应用的简单介绍

往期回顾 Qt绘图与图形视图之绘制带三角形箭头的窗口的简单介绍-CSDN博客 Qt绘图与图形视图之Graphics View坐标系的简单介绍-CSDN博客 Qt模型视图代理之MVD(模型-视图-代理)概念的简单介绍-CSDN博客 Qt模型视图代理之QTableView应用的简单介绍 一、最终效果 二、设计思路 这里…...

第七届精武杯部分wp

第一部分:计算机和手机取证 1.请综合分析计算机和手机检材,计算机最近一次登录的账户名是 答案:admin 创建虚拟机时直接给出了用户名 2. 请综合分析计算机和手机检材,计算机最近一次插入的USB存储设备串号是 答案&#xff1a…...

3.2Java全栈开发前端+后端(全栈工程师进阶之路)-前端框架VUE3框架-企业级应用- Vuex

Vuex简介 Vuex概述 Vuex是一个专门为Vue.js应用程序开发的状态管理模式, 它采用集中式存储管理所有组件的公共状态, 并以相应的规 则保证状态以一种可预测的方式发生变化. 试想这样的场景, 比如一个Vue的根实例下面有一个根组件名为App.vue, 它下面有两个子组件A.vue和B.vu…...

整合 Java, Python 和 Scrapy 爬虫以传递和使用参数

这篇博客将详细说明如何从 Java 应用程序调用一个 Python 脚本,并在此过程中传递参数给一个 Scrapy 爬虫。最终目标是让 Java 控制爬虫的行为,如爬取数量和特定的运行参数。 一、Scrapy 爬虫的修改 首先,我们需要确保 Scrapy 爬虫能接收从命…...

Android 蓝牙实战——蓝牙音乐播放进度(二十)

对于蓝牙音乐的开发来说,播放进度是一个比较重要的数据参数,这里我们就来分析一下蓝牙音乐播放进度的相关回调。 一、回调流程 1、AvrcpControllerService 源码位置:/packages/apps/Bluetooth/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerService.java /…...

SQL注入实例(sqli-labs/less-1)

初始网页 从网页可知传递的参数名为 id,并且为数字类型 1、得知数据表有多少列 1.1 使用联合查询查找列数(效率低) http://localhost/sqli-labs-master/Less-1/?id1 union select 1,2 -- 1.2 使用order by查找列数(效率高&…...

PLSQLDeveloper配置OracleInstantClient连接Oracle数据库

PL/SQLDeveloper配置Oracle Instant Client连接Oracle数据库 文章目录 PL/SQLDeveloper配置Oracle Instant Client连接Oracle数据库 1. Oracle Instant Client下载与配置1. Oracle Instant Client下载2. Oracle Instant Client解压配置1. 解压2. 配置 2. PL/SQL Developer下载、…...

自定义事件wpf

// 自定义控件 public class MyCustomControl : Control { public static readonly RoutedEvent MyCustomEvent EventManager.RegisterRoutedEvent( "MyCustom", RoutingStrategy.Bubbling, typeof(RoutedEventHandler), typeof(MyCustomControl) ); public event R…...

ArcGIS Pro 3.4 二次开发 - 宗地

环境:ArcGIS Pro SDK 3.4 + .NET 8 文章目录 宗地1 宗地1.1 向地图添加宗地图层1.2 获取活动记录1.3 设置活动记录1.4 创建新记录1.5 将标准线要素复制到宗地类型1.6 将宗地线复制到宗地类型1.7 将要素分配给活动记录1.8 创建宗地种子1.9 构建地块1.10 重复地块1.11 设置地块为…...

前端原生构建交互式进度步骤组件(Progress Steps)

在现代网页设计中,进度步骤(Progress Steps) 是一种常见的 UI 模式,常用于引导用户完成注册流程、多步表单、教程或任何需要分步骤操作的场景。本文将带你从零开始构建一个美观且功能完整的 “进度步骤”组件,并详细讲…...

机器学习实验八--基于pca的人脸识别

基于pca的人脸识别 引言:pca1.pca是什么2.PCA算法的基本步骤 实例:人脸识别1.实验目的2.实现步骤3.代码实现4.实验结果5.实验总结 引言:pca 1.pca是什么 pca是一种统计方法,它可以通过正交变换将一组可能相关的变量转换成一组线…...

python版若依框架开发:项目结构解析

python版若依框架开发 从0起步,扬帆起航。 python版若依部署代码生成指南,迅速落地CURD!项目结构解析 文章目录 python版若依框架开发前端后端 前端 后端...

基于RK3568的多网多串电力能源1U机箱解决方案,支持B码,4G等

基于RK3568的多网多串电力能源1U机箱解决方案,结合B码对时和4G通信能力,可满足电力自动化、能源监控等场景的高可靠性需求。核心特性如下: 一、硬件配置 ‌处理器平台‌ 搭载RK3568四核Cortex-A55处理器,主频1.8GHz-2.0GHz&#…...

Redis持久化模式RDB与AOF

RDB持久化 RDB也被叫做Redis数据快照。简单来说就是把内存中的所有数据记录到磁盘中。当Redis实例故障重启后重磁盘中读取快照文件进行数据恢复(快照文件默认保存在当前运行目录); 演示Redis正常停机自动执行一次RDB操作 配置Redis触发RDB机制 RDB其它配置也可在red…...

Neovim - LSP 底层原理,难点配置(二)

Neovim LSP 的工作原理 基本概念 LSP(Language Server Protocol)可以理解成是一个"语言助手"。每种编程语言都有自己的"语言助手"(比如 TypeScript 的 tsserver),这些助手能告诉你: 哪写错了(语法错误)哪能跳转(方法定义,引用)哪可以补全(自…...

Linux共享内存原理及系统调用分析

shmget 是 System V 共享内存的核心系统调用之一,其权限位(shmflg 参数)决定了共享内存段的访问控制和创建行为。以下是权限位的详细解析: 权限位的组成 shmflg 参数由两部分组成: 权限标志(低 9 位&…...