密码学复习

server/2025/1/8 18:59:32/

目录

  • 密码体系相关概念
  • 传统密码
    • 替换技术
      • 单表替换密码
      • 双表替换密码playfair密码
      • 多表替换密码维基密亚密码
    • 置换技术
      • 栅栏密码
      • 列移位密码
  • 对称密码(block cipher)
    • DES
    • 工作模式
    • AES
    • 近现代的一些对称密钥
      • Trible-DES
      • IDEA
      • blowfish
  • 对称密码(stream cipher)
    • RC4
  • 应用层部署(端到端加密)和链路层部署
    • 流量分析
  • 公钥密码
    • RSA
    • DH密码
    • ECC
  • MAC&HASH
    • MAC消息认证码
    • HASH哈希函数![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/5243e5b2a62441209a18e046262c82e7.png)
      • 生日攻击

密码体系相关概念

  • CIA:安全的三个关键目标
    保密性:信息没有出现非授权泄露
    完整性:信息没有出现非授权修改或破坏
    可用性:信息能够及时可靠地访问和使用
  • OSI安全架构
    安全攻击: 任何危及信息系统安全的行为
    安全机制:检测、阻止、恢复的过程
    安全服务:加强系统安全性的服务
  • 安全攻击分为被动攻击主动攻击,被动攻击是指通过监测或窃听获取加密信息的手段,而主动攻击有消息篡改,重放攻击,伪装,拒绝服务
  • 密码学分为密码分析学密码编码学
  • 攻击类型:唯密文攻击,已知密文攻击,选择明文攻击(假设有一台加密机,放入特定的明文会产生对应的密文),选择密文攻击,攻击难度依次递增
  • 分类标准:stream与block,对称密钥与非对称密钥,替换与置换等
    在这里插入图片描述
  • 约束关系其实只要满足(1)即可,即从明文到密文可以不唯一,但是不管是哪种密文一定要能还原成唯一的明文

传统密码

替换技术

  • 凯撒密码的形式化五元组
    在这里插入图片描述

单表替换密码

通过其中一个字母的对应关系就可以确定一张唯一的明密文对应表,但是密钥空间太小,无法保证密码的安全性,于是产生了单表替换密码,即一张没有任何规律的表,但是满足明密文之间一一对应的关系,从而使密钥空间提升到26!,但是因为人类自然语言的使用频率不一样,所以可以通过词频分析破解

  • 转轮机:转 26 ∗ 26 ∗ 26 26*26*26 262626次(第一个转26次第二个转1次)回到原点,字母的顺序是固定不变的,每转一次字母对应新的内部物理连接,从而产生不一样的输出在这里插入图片描述

双表替换密码playfair密码

在这里插入图片描述
5*5的矩阵, i / j i/j i/j同位,遵循三个规则进行加密(简单理解就是有对角线看对角线,没对角线整体向右下偏移),明文分组时用X填充,同样存在词频分析的问题,同时密钥不能过短,否则某一段相同的明文恰好遇上密钥,产生相同的密文,密钥就会被推断出来,这个问题在替换密码中都存在在这里插入图片描述

多表替换密码维基密亚密码

每一个密钥字母都对应了一张表,因此在破解密文时,每一个字母都要猜测26种可能,并不存在固定的明密文间一一对应的关系在这里插入图描述

置换技术

栅栏密码

  • 如图,两栏的栅栏密码按下图写出,再按行读出重新排列,也可以理解为隔一位选一个字母
    在这里插入图片描述

列移位密码

按照所给密钥重新排列列的顺序
在这里插入图片描述

对称密码(block cipher)

DES

在这里插入图片描述

  • 密钥中每八位有一位校验位,所以密钥的有效长度只有56位,密钥的产生过程:
    1. 从64位中选出56位

    2. 置换选择1在这里插入图片描述

    3. 循环左移(每一轮的密钥左移的位数不同)在这里插入图片描述

    4. 置换选择2(从56位密钥选出48位进行异或)
      在这里插入图片描述

  • DES在进入轮前做ip置换,出轮做ip逆置换,每一轮做的事情:采取feistel结构,进行扩展,异或,s盒选择,置换操作在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
  • 这里介绍两种分析,差分密码分析和线性密码分析,尽管对于DES都是无效的,差分密码分析是指每次改变明文的一点点(可能是1bit),然后去观察密文,进而发现明密文之间的关系,线性密码分析是指设出明文和密文之间的方程,找到足够多的方程进而求解

工作模式

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

AES

  • AES的基本结构:128bit明文,128/192/256bit密钥,从10轮开始,每增加64bit密钥轮数就增加两轮
  • 加密流程:明文进来先进行轮密钥加,接着进行字节替换,行移位,列混合,轮密钥加(此时的密钥已经经过特殊的扩展规则生成了40组用来应对10轮加密)
  • 解密流程:与加密相似,不过区别在于解密时所做的都是加密操作的逆操作
    在这里插入图片描述
  • 密钥的扩展机制:对W[0,4]数组扩充40个新列,构成总共44列的扩展密钥数组。新列以如下的递归方式产生:
  1. 如果i不是4的倍数,那么第i列由如下等式确定:
    W [ i ] = W [ i − 4 ] ⨁ W [ i − 1 ] W[i]=W[i-4]⨁W[i-1] W[i]=W[i4]W[i1]
  2. 如果i是4的倍数,那么第i列由如下等式确定:
    W [ i ] = W [ i − 4 ] ⨁ T ( W [ i − 1 ] ) W[i]=W[i-4]⨁T(W[i-1]) W[i]=W[i4]T(W[i1])
    其中,T是一个有点复杂的函数。
    函数T由3部分组成:字循环、字节代换和轮常量异或,这3部分的作用分别如下。
    a. 字循环:将1个字中的4个字节循环左移1个字节。即将输入字[b0, b1, b2, b3]变换成[b1,b2,b3,b0]。
    b. 字节代换:对字循环的结果使用S盒进行字节代换。
    c. 轮常量异或:将前两步的结果同轮常量Rcon[j]进行异或,其中j表示轮数。

近现代的一些对称密钥

Trible-DES

  • 出于历史遗留数据的问题,采用k1加密,k2解密,k1再加密的模型会更好
  • 两次加密或多次加密得到的明密文对应关系不可能由一次加密得到

IDEA

在这里插入图片描述

blowfish

  • 特点:在算法运行时,根据输入密钥的不同,每一轮用输出结果更新s盒和p盒的两个参数,所以算法在跑起来之前需要先跑五百多次来更新参数,这就使加密的参数与密钥高度相关,每个人的blowfish都是不一样的,从而极大地提高了算法地安全性,同时,blowfish采取模加运算和异或运算,因此效率特别高在这里插入图片描述

对称密码(stream cipher)

RC4

  • 面向字节流处理数据,S数组有256个数据,因而每个数据出现的概率都是相等的在这里插入图片描述
  • S数组初始化为0-255
  • T数组初始化为密钥的重复填入
  • 第二步进行密钥的初始化 j = j + S [ i ] + T [ i ] j=j+S[i]+T[i] j=j+S[i]+T[i]每次选一个数组值出来,和当前值做一个交换,做一个数组下标和数组值的共同运算,造成逻辑上的混乱,依然实现了一个字节0-255的完美覆盖,但是换了一种排列方式在这里插入图片描述
  • 第三步进行加密操作在这里插入图片描述

应用层部署(端到端加密)和链路层部署

在这里插入图片描述

  • 端到端加密:就是在应用层就将数据加密,传输数据永远处于密文状态,而ip地址,mac地址等信息对于攻击者来说都是可见的,也就是说攻击者可以看到信息发送的结点
  • 链路层加密:信息一直打包到链路层才进行加密操作,对于攻击者监听到的任何信息都是以密文的形式存在,每一个结点具有解密还原,加密发送的能力。

流量分析

  • 除了流量的分析,流量本身的特征,大小本身也是一种信息
  • 采用流量填充的技术解决

公钥密码

RSA

DH密码

  • 诞生之初解决了如何安全分发密钥的问题,基于离散对数问题逆向求解的困难性
  • 如果p 是一个素数,g 和x 是整数,计算 y = g x m o d p y = g^x mod p y=gxmodp 非常快。但是相反的过程:先知道 p, g 和y,要求某个x(离散对数),满足等式 y = g x m o d p y = g^x modp y=gxmodp,通常十分困难。此相反求离散对数的过程称为“离散对数问题”在这里插入图片描述
  • A,B分别将公钥给到对方,再用自己的私钥和对方的公钥,就可以创建一个安全的传输通道

ECC

  • ECC是定义在阿贝尔群上的,即满足交换律的群
  • ECC上的DH问题,a计算 k a ∗ p k_a*p kap发给b,b计算 k b ∗ p k_b*p kbp发给a,二者再利用已有的公私钥计算出公共通信密钥 k a ∗ k b ∗ p k_a*k_b*p kakbp
  • 加解密过程:A生成一个随机树K,每一次会话都可以改变,用B的公钥和K加密信息,并将KG和密文发给B,B用自己的私钥和KG即可解密
    在这里插入图片描述

MAC&HASH

  • 消息在传输过程中关注的一些特点:能不能验证消息的来源,消息可不可以被伪造

MAC消息认证码

在这里插入图片描述

  • 作用,验证消息的完整性,但解决不了争议
  • 特点:采用一个密钥,生成定长的数据,通常使用DES-CBC模式的最后一块加密数据(如果数据不够64位就用0填充),在第三个模型中,要验证明文的完整性,就必须计算与之对应的密文的MAC码,因此必须保证密文的唯一性

HASH哈希函数在这里插入图片描述

  • 类似于MAC码,输入消息产生定长的摘要,第三个模型更普遍用于数字签名,既能验证消息的完整性,又能验证消息来源

生日攻击

在这里插入图片描述

  • 实际上要达到0.5的概率去发生碰撞,所需要的数据量远小于数据的一半,甚至能达到开二次根号的级别

http://www.ppmy.cn/server/156856.html

相关文章

【计算机组成原理课程设计】:实验0 ROM仿真、实验1 验证74L181运算和逻辑功能、实验2 运算器 2、实验 3 跑马灯、实验4 模拟微程序实现指令

下面文件都放在 gitee 中,大家可以自行选择拿取 course_design: 课程设计 - Gitee.comhttps://gitee.com/island0920/course_design/tree/master/%E8%AE%A1%E7%BB%84 前言 -- 如何使用 Multisim 1. 如何使用元器件 2. 常用元器件 VCC 接地 key space &#xf…

若依中Feign调用的具体使用(若依微服务版自身已集成openfeign依赖,并在此基础上定义了自己的注解)

若依中Feign调用具体使用 注意:以下所有步骤实现的前提是需要在启动类上加入注解 EnableRyFeignClients 主要是为开启feign接口扫描 1.创建服务提供者(provider) 导入依赖(我在分析依赖时发现若依本身已经引入openfeign依赖,并在此基础上自定义了自己的EnableRyF…

【微服务】5、服务保护 Sentinel

Sentinel学习内容概述 Sentinel简介与结构 Sentinel是Spring Cloud Alibaba的组件,由阿里巴巴开源,用于服务流量控制和保护。其内部核心库(客户端)包含限流、熔断等功能,微服务引入该库后只需配置规则。规则配置方式有…

【wiki知识库】08.添加用户登录功能--后端SpringBoot部分

目录 一、今日目标? 二、SpringBoot后端实现 2.1 新增UserLoginParam 2.2 修改UserController 2.3 UserServiceImpl代码 2.4 创建用户上下文工具类 2.5?通过token校验用户(重要) 2.6 创建WebMvcConfig 2.7 用户权限校验拦截器 一、今日目标 上…

c++程序设计(第3版)系列教程

c程序设计(第3版)系列笔记 预备知识 在c当中,避免字符串被截断的输入为gets(S),但是由于c语言新标准的推行和部分删除,在使用gets(S)时只能通过宏定义#define gets(S) fgets(S,sizeof(S),stdin)处理之后使用。 在c当中,面对难以处…

k8s技术架构

Kubernetes(简称k8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它通过提供一组强大的工具和API,使得在分布式环境中管理容器变得高效和可靠。以下是Kubernetes的技术架构的主要组成部分: ### 1. **集群架构** Kubernetes集群是Kubernetes的核…

PyQt5 UI混合开发,控件的提升

PromoteLabelTest.py 提升的类import sys from PyQt5.QtWidgets import QApplication, QWidget,QVBoxLayout,QTextEdit,QPushButton,QHBoxLayout,QFileDialog,QLabelclass PromoteLabel(QLabel):def __init__(self,parent = None):super().__init__(parent)self.setText("…

Spring 中注入 Bean 的方式推荐

在 Spring 中,注入 Bean 的方式有多种,每种方式适用于不同的场景。一般来说,可以选择以下几种注入方式:构造器注入、setter 注入、字段注入(即使用 Autowired)以及基于注解的注入(如 Qualifier&…