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

现代密码学——第一章密码学基础

消息鉴别码,通常简称MAC

它的核心思想是:通信双方(A和B)持有同一个密钥。发送方A用这个密钥和一段消息,通过特定的算法,生成一小段固定长度的数据,这就是消息鉴别码

A把消息本身和这个消息鉴别码一起发给B。B收到后,用同一把密钥和收到的消息,重新计算出一个消息鉴别码。如果B计算出来的码和A发过来的码一模一样,就说明两件事:

  • 消息没有被篡改(完整性);

  • 消息确实来自于拥有这把密钥的人(真实性)。

  • 双密钥(非对称加密)支持数字签名:除了加密,它还能用于身份验证。比如,你可以用私钥给文件“签名”,别人用你的公钥就能验证这个文件确实是你发的,且没有被篡改。

被动攻击:即窃听,是对系统的保密性进行攻击,如搭线窃听、对文件或程序的非法拷贝等,以获取他人的信息。

主动攻击:包括对数据流的某些篡改产生某些假的数据流。主动攻击又可分为中断、篡改(有中生变)、伪造(无中生有)、重放等。

c:密文 m:明文 k:解密密钥 z:加密密钥 E:加密 D:解密

密码分析分类

1、唯密文攻击破译者已知:加密算法、待破译的密文 目标:密钥,已经获得的密文对应的明文

2、已知明文攻击破译者已知:加密算法、一定数量的密文和对应的明文目标:密钥,任意密文对应的明文

3、选择明文攻击破译者已知:加密算法、由任意选定的明文可得到对应的密文 目标:密钥,任意密文对应的明文

4、选择密文攻击破译者已知:加密算法、选定的明文和对应的密文、选定的密文和对应的明文 目标:密钥,任意密文对应的明文

目的都要任意密文对应的明文

唯密文攻击是难度最大的

上述攻击的强度是递增的

一个密码体制是安全的,通常是指在前三种攻击下的安全性

一个密码系统是安全的必要条件:穷举密钥搜索将是不可行的

密钥变化量少于2的80的密码算法是不安全的! 密钥变化量为2的128的密码算法是安全的!

加解密算法(E,D)应该是公共的标准算法,是公开的

如果每一次加密/解密过程,都要选择一次加解密密钥(z,k),则加解密方式称为一次一密的。

多次一密的加解密方式使得攻击者增加了集中新的攻击手段,其中包括:已知明文攻击。

古典密码

置换密码

古典密码的基本运算:

置换密码(permutation cipher),又称换位密码(transposition cipher):明文的字母保持相同,但顺序被打乱了。

代换密码(substitution cipher):明文中的每一个字符被替换成密文中的另一个字符。接收者对密文做反向替换就可以恢复出明文。

代换密码

凯撒密码

凯撒密码

加密算法:C=(m+k)mod26 解密算法:m=(C-k)mod26

循环移位密码 —— 加密: 字母向后移动k位; 解密: 字母向前移动k位。

这个函数是欧拉函数

仿射密码(Affine cipher)

加密变换:f(x)=xk_1+k_2 mod q, 0≤x<q 其中k_1,k_2∈Z_q ,(k_1,q)=1,以[k_1,k_2]表示密钥。当k_2=0时就得到乘数密码,当k_1=1时就得到移位密码。 q=26时可能的密钥数为26×φ(26)=26×12=312个。

只要密文中含有q个不同的字母(因此对应的明文中也含有q个不同的字母),则加密变换f被确定。

对于移位代换密码,只要密文中含有1个字母(对应的明文中也含有1个字母),则密钥𝑘被确定。

对于乘法密码,只要密文中含有1个字母(对应的明文也含有1个字母),则密钥𝑘被确定。

对于仿射密码,只要密文中含有2个不同的字母(对应的明文中也含有2个不同的字母),则密钥[k1,k2]被确定。

对于多项式代换密码,只要密文中含有min⁡{𝑡+1,𝑞}个不同的字母(对应明文中也含有min⁡{𝑡+1,𝑞} 个不同的字母),则密钥[k0,… kt]被确定。

多表代换密码

维吉尼亚密码(Vigenere)

可逆映射f_0,f_1,…,f_d−1都是移位代换密码

注意:A为0

例:p=data security k=best c=EELT TIUN SMLR

当d接近于无穷大,vigenere变成了现代密码的一种,我们称之为流密码或序列密码

简单快速协商极长的密钥序列:一种办法取为一本书,只需相互告知书名版本号;另一种办法取为周期序列的一个周期,周期d极大,用长度ln(d)的“密钥种子”采用公开算法递归生成这个周期序列,只需告知密钥种子,这是现代流密码一般构造

流密码和分组密码

流密码 (Stream Cipher)

  • 原理:流密码的核心是生成一个与明文长度相等的、看似随机的密钥流(KeyStream)。然后,将这个密钥流与明文进行逐位(通常是一个比特或一个字节)的异或(XOR)运算,从而得到密文。

  • 类比:想象你有一条很长的秘密消息(明文)。流密码会生成一条与之等长的、一次性使用的乱码纸条(密钥流)。你把消息和乱码纸条对齐,然后按照某种规则(比如字母替换)组合起来,就形成了外人看不懂的密文。接收方只要有同样的乱码纸条生成方法,就能反向操作还原消息。

  • 关键点:加密是无状态的,它处理的是一个连续的流。每个明文位对应一个密钥流位。

分组密码 (Block Cipher)

  • 原理:分组密码将明文分成固定长度的数据块(例如,每128位为一个块)。然后,使用密钥和固定的算法对每个数据块进行加密,输出同样长度的密文块。如果最后一块不足规定长度,则需要使用特定的填充(Padding)技术将其补满

  • 类比:你有一份长电报(明文)。你把它剪成每张固定长度的纸条(比如每张写10个字)。然后,你使用一个复杂的机器和密钥,把每张纸条上的字通过一系列的置换和替换操作,变成完全不同的另一组字(密文块)。最后把这些加密后的纸条串起来发给对方。

  • 关键点:加密是有状态的,它处理的是固定大小的数据块。由于算法复杂,它通常会采用多种模式(如CBC、CTR等)来增强安全性。

http://www.jsqmd.com/news/476590/

相关文章:

  • DeepSeek 与 Gemini:从架构到场景的深度技术选型指南
  • 使用 OpenClaw 时常见问题与解决方法:从安装到接入模型、飞书等工具的完整排查指南
  • Markdown 使用技巧大全:从入门到精通,一篇就够了
  • No.363 S7-200智能控制核心在船舶电站控制系统的应用与组态王软件的研究
  • OpenClaw引爆AI执行革命:低代码的下一个十年,从“拖拽“到“自主开发“
  • OpenClaw在windows中安装
  • 浏览器语音朗读插件:让文字“活”起来的前端黑科技
  • python+selenium 实现UI自动化框架
  • 工业现场的温度控制就像给锅炉装了个“智能体温计“,S7-200 PLC配组态王的组合特别适合中小型锅炉房。咱们直接上干货,先看个PLC端的温度采集程序
  • 双向rrt树路径规划MATLAB实现 双向rrt算法的三维路径规划 加入路径平滑处理 代码有详细注释
  • ARM数据处理指令(ARM处理器指令系统——ARM指令集初学,上篇)
  • 05-RAG 核心概念与向量存储:检索增强生成原理
  • 深度拆解 OpenClaw
  • 【异常】OpenClaw认证 Please carry the API secret key in the ‘Authorization‘ field of the request header
  • 蓝牙学习系列(一):从零认识蓝牙技术体系
  • CrewAI智能体开发:CrewAI 运行自动化工具
  • 锁相环抓取基波相位
  • Flutter 三方库 jsonize 的鸿蒙化适配指南 - JSON 转换的极简流派、在鸿蒙端实现流式序列化实战
  • 基于No.1186 S7-200 PLC与组态王的锅炉水温串级调节系统的设计与实现
  • 升级 Java 21 却把网关压崩了?Spring Boot 虚拟线程与传统线程池的生死冲突揭秘
  • DO-254通读--10.0 硬件设计生命周期数据
  • 基于22三菱PLC与MCGS组态的饮料灌装自动化控制系统设计与实现
  • 智能指针原理、使用和实现——C++11新特性
  • 计算机毕业设计springboot数字化心理健康服务系统的设计与实现 基于SpringBoot的“树洞“心理咨询服务平台的设计与实现 基于SpringBoot的在线心理支持与智慧辅导平台
  • OpenClaw 生态全景:九大类 Open Claw 产品深度横评
  • 收藏!彻底解决RAG系统效果不佳问题:这套组合策略让准确率飙升60%
  • 从岭回归到循环矩阵:KCF算法核心数学工具全解析
  • 改进蚁群算法agv路径规划。 基于matlab的二维栅格地图的精英蚁群算法的路径规划算法仿真
  • 第10章 数据库的安全与保护
  • 基于MATLAB的准Z源NpC三电平逆变器:创新SVPWM调制与中性点平衡算法的研究与实践