CTF-密码学基础

概述

在这里插入图片描述

  • 密码学(Cryptolopy):是研究信息系统安全保密的科学

  • 密码学研究的两个方向:

    • 密码编码学(Cryptography):主要研究对信息进行编码,实现对信息的隐蔽
    • 密码分析学(Cryptanalytics):主要研究加密信息的破译或消息的伪造
  • 具体作用:

    • 提供保密性——密码技术可用于加解密
    • 用于鉴别——解决身份冒充的问题
      • 消息的接收者能够确认消息的来源,发送者不可能伪装成他人
      • 发送者也要能够确认接收者是否是自称的,接收者不可能伪装成他人
    • 提供完整性——解决篡改问题
      • 消息的接收者应该能够验证在传递过程中消息没有被修改
    • 抗抵赖
      • 发送者或接收者事后不可虚假地否认其发送或接收到的信息

古典密码

  • 古典密码体制比较简单,容易破解,但了解它们的设计原理对理解、设计和分析现代密码体制十分重要
  • 古典密码体制的核心思想:代替和置换
    • 代替:将明文中的每一个字符替换成另一个字符从而形成密文
    • 置换:重新排列明文消息中元素的位置而不改变元素本身从而形成密文

单表代换密码

  • 明文中所有字母的加密都使用同一个映射关系
    • S p S_p Sp是明文字母空间, S c S_c Sc是密文字母空间
    • 映射关系 f : S p − > S c f:S_p->S_c f:Sp>Sc
    • 一般情况下,f是一一映射,即对相同的明文字母映射为相同的密文字母

棋盘密码

在这里插入图片描述

——这只是其中一个例子,这里棋盘排列是可以随意按加密人的想法进行排列

在这里插入图片描述

移位密码

在这里插入图片描述

在这里插入图片描述

当key=3时的移位密码,又称为“凯撒密码

代换密码

在这里插入图片描述

仿射密码

在这里插入图片描述

  • k 1 k_1 k1 k 2 k_2 k2是后续需要选定的值

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

多表代换密码

维吉尼亚密码

在这里插入图片描述

  1. 先得到密钥字和对应的key
  2. 明文按密钥字长度进行划分
  3. 明文本身的数字+密钥对应数字 mod 26得到对应的字母

在这里插入图片描述

由于引入的密钥字,因此同一个明文字母可以被映射为不同的密文字母

希尔密码

  • 一种基于矩阵运算的加密算法

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

比较分析

  • 单表代换密码体制中,明文中单字母出现的频率分布与密文中相同。这会带来密码的安全性问题,比如我们就可以通过频率分布来推测对应的字母是什么
  • 在维吉尼亚密码和希尔密码体制中,将明文进行分组,对每组成组进行替换,使得同一个明文字母可以对应不同的密文,改变了单表代换密码中密文的唯一性

置换密码

  • 在代换密码中,可以认为明文中各字母的相对顺序在加密成密文后仍保持不变,只是将它们用其他符号代替
  • 置换密码是,通过改变明文中各元素的相对位置来进行加密,但元素本身的取值或内容形式不变

在这里插入图片描述

  1. 按m个数,将明文分组,每组m个字符
  2. 然后按照pai的位置放置,比如i放3号位,n放1号位,f放4号位,o放2号位,依次得到密文

密码学抽象概念

  • 香农在论文《保密系统的通信理论》中提出的保密通信模型:

在这里插入图片描述

  • 通信中的参与者

    • 发送者:在双方交互中合法的信息发送实体
    • 接收者:在双方交互中合法的信息接收实体
    • 分析者:破坏通信接收和发送双方正常安全通信的其他实体
  • 明文和密文

    • 明文或消息(plaintext,message):
      • 尚未隐藏或未被加密的信息,用P或M表示
      • 明文的集合称为明文信息空间,用 S p S_p Sp表示
    • 密文(ciphertext):
      • 被加密(encryption)后的消息称为密文,用C表示
      • 所有密文构成密文信息空间,用 S c S_c Sc表示
  • 密钥

    • 明文到密文的转换由一些特殊函数完成,控制这些函数的参数称为密钥key,用K表示
    • 一般是由用户事先选定的较短的字符或数字序列
    • 所有的密钥集合构成密钥空间,用 S k S_k Sk表示
    • 密钥空间中不相同密钥的个数称为密钥体制的密钥量,它是衡量密码体制安全性的一个重要指标
    • 一般情况下,密钥长度越大,密文越安全,但是加密速度越慢
  • 加密

    • 在密钥K的作用下,把明文P从Sp对应到Sc的一种变换
      E k : S p − > S c E_k:S_p->S_c Ek:Sp>Sc

    • 则明文和密文的关系可表示为
      C = E k ( P ) C=E_k(P) C=Ek(P)

  • 解密

    • 加密变换的逆变换,把密文C从Sc对应到Sp
      D k : S c − > S p P = D k ( C ) = D k ( E k ( P ) ) D_k:S_c->S_p\\ P=D_k(C)=D_k(E_k(P)) Dk:Sc>SpP=Dk(C)=Dk(Ek(P))

    • 信息的保密性依赖于密钥K的保密性

  • 密码体制:

    一个完整的密码体制(cryptosystem)由5部分组成

    • 明文信息空间Sp
    • 密文信息空间Sc
    • 密钥空间Sk
    • 加密变换族Ek
    • 解密变换族Dk
  • 信道:

    从一个实体向另一个实体传递信息的通路

    • 安全信道:分析者没有能力对其上的信息进行阅读、删除、修改、添加的信道
    • 公共信道:分析者可以任意对其上的信息进行阅读、删除、修改、添加的信道

攻击手段

在这里插入图片描述

现代密码

在这里插入图片描述

  • 古典密码:数据的安全基于算法的保密
  • 现代密码:数据的安全基于密钥,算法公开
  • 判断现代密码的标准:加密算法应建立在算法公开不影响明文和密钥安全的基础上

现代密码体制的一种分类方法

根据对明文的处理方法不同分为分组密码流密码

  • 分组密码:将明文分成固定长度的组,用同一密钥和算法对每一组加密,输出也是固定长度的密文
  • 流密码:每次加密一位或一字节的明文

散列哈希函数

在这里插入图片描述

MD算法家族

  • MD5目前主要的用途:
    1. 一致性验证
    2. 数字签名
    3. 安全访问认证
    4. ……

SHA家族

  • 与MD5类似
  • 美国国家标准密码体系
  • 主要应用领域:
    • 主要用于SSL\TTL等证书数字签名,用于可信第三方签发身份验证信息

SM家族

  • 中国国家标准密码体系
  • SM1是对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用
  • SM2是非对称加密,基于ECC
  • SM3信息摘要,可以用MD5作为对比理解,算法已公开,校验结果为256位
  • SM4无线局域网标准的分组数据算法。对称加密,密钥长度和分组长度均为128位

MD5算法详解

雪崩效应

  • 虽然Hash函数的散列值空间远小于输入空间,但是哈希函数对于数据的改变具有极高的敏感性
  • 1Bit数据的改变会造成散列值极大的改变

具体流程

  1. 处理原文,对原文进行数据填充,使得消息长度对512取模得到448
    设消息长度为 X ,即满足 X m o d 512 = 448 设消息长度为X,即满足Xmod \ 512=448 设消息长度为X,即满足Xmod 512=448
    填充方法在原文后面进行填充,填充第一位为1,其余为0

  2. 添加消息长度,在第一步结果之后再填充上原消息的长度,可用来进行存储的长度为64位(512-448)

    如果消息长度大于 2 64 2^{64} 264,则只使用其低64位的值,即消息长度对2^64取模

    在此步骤进行完毕后,最终消息长度就是512的整数倍

在这里插入图片描述

  1. 设置初始值,MD5的散列值长度位为128位,按每32位分成一组,一共4组

    这4组的结果是由4个初始值A/B/C/D经过多轮(轮数由输入的信息长度决定)不断演变得到

  2. 循环运算(MD5算法核心)

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

对称加密算法

  • 分组密码就是对称密码体制的一种形式,加解密的密钥相同

在这里插入图片描述

在这里插入图片描述

n是输出块的长度,m是输入块的长度

  1. 若n>m,则为有数据扩展的分组密码
  2. 若n<m,则为有数据压缩的分组密码
  3. 若n=m,则为无数据扩展也无压缩的分组密码

DES密码

  • 总体结构
    • 分组长度为64位
    • 循环次数位16
    • 密钥长度位64位(包括8位奇偶校验位)

在这里插入图片描述

  • 总体描述
    • 初始置换IP,将64位明文分为两个部分
    • 之后进行16轮加密运算,称为函数f
    • 最后进行末尾置换 I P − 1 IP^{-1} IP1为初始置换的逆运算

在这里插入图片描述

非对称加密算法

RSA算法

先阐述几个概念

  • 质数:只能被1和他本身整除的自然数
  • 互质数:公约数只有1的两个数
  • 同余运算:给定正整数m,如果两个整数a和b满足a-b能被m整除,即 ( a − b ) m o d m = 0 (a-b)mod\ m=0 (ab)mod m=0,那么就称整数a与b对模m同余

在这里插入图片描述

在这里插入图片描述

加密示例

在这里插入图片描述

解密示例

在这里插入图片描述

密钥生成算法

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

CTF常见编码

BASE家族

在这里插入图片描述

Base16编码之后的特征:还有字符A~F还有数字0~9

在这里插入图片描述

Base32编码之后的特征:有数字A~Z,还有数字2~7,还有=号

在这里插入图片描述

URL编码

  • URL编码是一种浏览器用来打包表单输入的格式

  • URL编码就是一个字符ASCII码的十六进制。需要前面加上%

    比如”\“,它的ASCII码是92,92的十六进制是5c,所以”\“的URL编码是%5c

  • URL编码的特征就是”%“加上2位16进制数

Unicode编码

  • Unicode是计算机科学领域里的一项业界标准,包括字符集、编码方案等
  • 你好 ——>\u4f60\u597d
  • Unicode编码的特征就是”\u“加上4位16进制数

莫斯密码

  • 具体内容可以查看隐写术中涉及的音频隐写部分

    CTF-隐写术-CSDN博客

在这里插入图片描述

CTF密码学实战

编码题解题思路

  • 一般没有密钥的就是编码题
  • 编码题对密文的特征进行分析
  • 通常不会作为单独的考题出现,一般是出现在其中的某一步

在这里插入图片描述

因为密文中有大写字母,小写字母,因此第一反应可以通过Base64进行解码,最后得到flag

在这里插入图片描述

根据题目回旋13的提示,移位算法rot13解码,即可得到答案

在这里插入图片描述

RSA算法解题

在这里插入图片描述

  • 压缩包文件有两个,一个flag.enc是密文的二进制文件,一个是pubkey.pem是公钥
  • 通过公钥来获取私钥,来解密这个加密之后的二进制文件
  1. 私钥第一步要解决的是,如何求到p和q

    我们先用openssl工具把公钥文件进行解析

    在这里插入图片描述

  2. 获取到了16进制的相乘的值,我们可以利用python等工具,将十进制转换出来

    在这里插入图片描述

  3. 获取到十进制数后,我们利用工具yafu来寻找p和q,这一步一般需要比较长的时间

    GitHub - bbuhrow/yafu: Automated integer factorization

    .\yafu-Win32.exe factor(放入十进制数)
    

    在这里插入图片描述

  4. 然后我们知道了p,q,n,e 现在求解d——可以在网上找,也可以自己写脚本文件

    import gmpy2
    import rsa
    p=
    q=
    n=相乘的大n数
    e=65537
    d=int(gmpy2.invert(e,(p-1)*(q-1)))
    privatekey=rsa.PrivateKey(n,e,d,p,q)
    with open("密文二进制文件地址","rb") as f:print(rsa.decrypt(f.read(),privatekey).decode())
    

未知编码方式解题思路

  1. 使用搜索引擎搜索部分密文,可能能够搜索到编码方式(抽象)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多客陪玩系统源码APP小程序H5陪玩开发伴游源码游戏陪玩平台源码陪玩平台开发约单源码线下陪玩接单平台app小程序H5源码游戏陪玩app小程序H5开发

出售成品陪玩app小程序H5源码&#xff0c;免费搭建部署和售后服务&#xff0c;并提供源码二开、定制开发等相关服务。 一、陪玩app源码的功能介绍 1、语音聊天: 陪玩app小程序H5源码用户随时创建语音聊天室&#xff0c;实现多用户上麦功能&#xff0c;提高互动聊天体验。 2、游…

【Qt 开发基础体系】字符串类应用和常用的数据类型

文章目录 1. Qt 字符串类应用1.1 操作字符串1.2 QString::append()函数1.3 QString::sprintf()函数1.4 QString::arg()函数 2. 查询字符串2.1 函数 QString::startsWith()2.2 函数 QString::contains()2.3 函数 QString::toInt()2.4 函数 QString::compare()2.5 将 QString 转换…

攻克《模版进阶》 全方位了解

目录 前言&#xff1a; 非类型模板参数 按需实例化 模板的特化 概念&#xff1a; 函数模板特化&#xff1a; 类模板特化&#xff1a; 1、全特化 2、偏特化 3、类模板特化应用示例 模板分离编译 什么是分离编译 模板的分离编译 解决方法 总结 前言&#xff1a; 我…

PostgreSQL和openGauss优化器对一个关联查询的SQL优化改写

PostgreSQL和openGauss数据库优化器在merge join关联查询的SQL优化改写 PostgreSQL 查询计划openGauss 查询计划拓展对比 看腻了文章就来听听视频讲解吧&#xff1a;https://www.bilibili.com/video/BV1oH4y137P7/ 数据库类型数据库版本PostgreSQL16.2openGauss6.0 创建测试表…

Python语言基础与由来介绍【自我维护版】

各位大佬好 &#xff0c;这里是阿川的博客 &#xff0c; 祝您变得更强 个人主页&#xff1a;在线OJ的阿川 大佬的支持和鼓励&#xff0c;是我成长路上最大的动力 阿川水平有限&#xff0c;如有错误&#xff0c;欢迎大佬指正 本篇博客是在已有的博客的基础上进行的维护。 主要…

知识付费系统怎么搭建_轻松拥有知识付费平台

在信息爆炸的时代&#xff0c;知识的获取已不再局限于传统的课堂和书籍。随着科技的进步和互联网的普及&#xff0c;我们迎来了一个全新的知识获取方式——知识付费。今天&#xff0c;就让我们一起探讨如何搭建一个专属于您的知识付费系统&#xff0c;开启智慧的大门&#xff0…

常见C语言基础说明二:位运算问题

一. 简介 前面一篇文章学习了 常见的 C语言基础题&#xff0c;文章如下&#xff1a; 常见C语言基础题说明一-CSDN博客 本文继续上一篇C语言基础题的学习。 二. C语言中 -> 位运算问题 1. 数据在计算机中的存储方式 当前的计算机系统使用的基本上是二进制系统&#…

楼宇自控远程I/O革新BACnet/IP模块在暖通空调系统

在现代智能建筑的浪潮中&#xff0c;BACnet/IP分布式远程I/O控制器正逐步成为暖通空调&#xff08;HAVC&#xff09;系统升级转型的得力助手。本文将以某大型商业综合体为例&#xff0c;揭示BACnet/IP I/O模块如何在复杂多变的环境中发挥其独特优势&#xff0c;实现HVAC系统的智…

libcity笔记:添加新模型(以RNN.py为例)

创建的新模型应该继承AbstractModel或AbstractTrafficStateModel 交通状态预测任务——>继承 AbstractTrafficStateModel类轨迹位置预测任务——>继承AbstractModel类 1 AbstractTrafficStateModel 2 RNN 2.1 构造函数 2.2 predict 2.3 calculate_loss

互联网洗鞋工厂实现新时代下的家庭洗护服务;

互联网洗鞋工厂实现新时代下的家庭洗护服务; 拽牛科技洗护系统以智慧城市系统为依托&#xff0c;洗鞋工厂为中心&#xff0c;利用互联网&#xff0b;社区服务商模式&#xff0c;实现了新时代下的家庭洗护服务&#xff0c; 将客户&#xfe63;&#xfe63;社区服务商&#xfe63…

基于Spring Boot框架实现大学生选课管理系统

文章目录 源代码下载地址项目介绍项目功能界面预览 项目备注源代码下载地址 源代码下载地址 点击这里下载源码 项目介绍 项目功能 教务处管理 开课、开班审批&#xff0c;排课处理&#xff0c;班级操作&#xff0c;选课时间段管理** 使用了sql解决了开课开班的时间段的冲突…

水电抄表方案是什么?

1.概述&#xff1a;水电抄表方案的重要性 水电抄表方案是现代城市管理中不可或缺的一部分&#xff0c;它涉及到了能源管理、费用结算和公共服务等多个领域。传统的抄表方式需要工作人员上门服务&#xff0c;费时费力且效率低下。随着科技的发展&#xff0c;智能化的水电抄表方…

【高阶数据结构】图--邻接矩阵、邻接表、BFS、DFS、Kruskal、Prime

图--邻接矩阵、邻接表、BFS、DFS、Kruskal、Prime 一、图的概述1、概述&#xff08;纯理论部分&#xff09;2、邻接矩阵&#xff08;实现一个添加边的图&#xff09;&#xff08;1&#xff09;思路介绍&#xff08;2&#xff09;代码部分&#xff08;3&#xff09;测试部分 3、…

类和对象test

一、初始化列表 引言&#xff1a; 虽然上述构造函数调用之后&#xff0c;对象中已经有了一个初始值&#xff0c;但是不能将其称为对对象中成员变量 的初始化&#xff0c;构造函数体中的语句只能将其称为赋初值&#xff0c;而不能称作初始化。因为初始化只能初始 化一次&#x…

【华为】AC直连二层组网隧道转发实验配置

【华为】AC直连二层组网隧道转发实验配置 实验需求拓扑配置AC数据规划表 AC的配置顺序AC1基本配置(二层通信)AP上线VAP组关联--WLAN业务流量 LSW1AR1STA获取AP的业务流量 配置文档 实验需求 AC组网方式&#xff1a;直连二层组网。 业务数据转发方式&#xff1a;隧道转发。 DHC…

SpringBoot 使用 @RequiredArgsConstructor(onConstructor_ = @Autowired) 报错解决

若使用 RequiredArgsConstructor(onConstructor_ Autowired) 启动报错&#xff0c;或者爆红可以使用以下方法解决 1. 安装或启用 Lombok插件 2. 检查 Lombok 版本 3. 若 onConstructor_ 爆红&#xff0c; 可能是IDEA中文软件包冲突 4. 若以上还是不行&#xff0c;可以添加…

模方已经安装了3dmax,也装了插件,为什么一直显示没有插件?

答&#xff1a;主要是联动2018版本&#xff0c;然后插件在模方安装时候&#xff0c;会有选项自动安装联动插件&#xff0c;SketchUp&#xff08;建议版本为2019&#xff09;&#xff0c;3dsMax&#xff08;建议版本为2018&#xff09; 模方是一款针对实景三维模型的冗余碎片、…

SpringBoot框架如何接入RocketMQ?

目录 一、SpringBoot框架介绍 二、RocketMQ介绍 三、RocketMQ的应用场景 四、SpringBoot框架如何接入RocketMQ 一、SpringBoot框架介绍 Spring Boot是一个开源的Java框架,它基于Spring框架,旨在简化Java应用程序的开发。Spring Boot通过自动化配置和约定优于配置的原则,大…

AVFilterLink的channels设置

下面这样一条命令 ffmpeg -i /Users/user/video/mp4/output.wav -ac 1 /Users/user/video/mp4/output1.wav 我们会形成下面这样的图 图1 现在有个问题link4的channel怎么设置的&#xff1f; static int pick_format(AVFilterLink *link, AVFilterLink *ref){link->cha…

猫头虎分享已解决Bug || Node.js安装失败Error: unable to connect to https://nodejs.org/猫头虎

猫头虎分享已解决Bug || Node.js安装失败Error: unable to connect to https://nodejs.org/猫头虎 博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — …