aes加密简介

AES算法全称Advanced Encryption Standard,是DES算法的替代者,旨在取代DES成为广泛使用的标准,于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。

AES是典型的对称加密算法,对称加密不同于md5 sha的哈希摘要算法,对称加密是可逆的,通常是明文+密钥,再利用算法来加密成密文,如果要还原也很简单,只要根据密钥+密文+生成算法的逆运算,即可解出,对称加密特点为可逆,并且加密解密都是使用同一个密钥,而非对称加密则是公钥私钥加解密模式这里不做讨论。

aes加密五种模式

aes加密的方式有五种工作体制。

1.电码本模式(Electronic Codebook Book (ECB))

这种模式主要是将明文划分为几个明文段,分块加密,但是加密密钥是相同的。

2.密码分组链接模式(Cipher Block Chaining (CBC))

这种模式是先将明文切分成若干小段,然后每一小段与初始块或者上一段的密文段进行异或运算后,再与密钥进行加密。

3.计算器模式(Counter (CTR))

4.密码反馈模式(Cipher FeedBack (CFB))

5.输出反馈模式(Output FeedBack (OFB))

其中分组如,aes-128-ecb即为16字节为一组,16字节即为128位。

其他三种模式较为复杂,本文仅讨论前两种加密的安全性。

aes-ecb加密

aes-ecb加密是将一段明文,按照固定长度分组,然后对每一个分组,按照算法使用固定的密钥进行加密。假设123456加密。那么123为一组加密,456为一组加密,然后两段明文加密后的密文拼在一起,就算完整的密文。

注意:这里每一组的加密都是使用相同的密钥,相同的算法,所以在这种机制下,很可能出现安全问题。

比如:在身份认证中,查询用户是否是管理员还是普通用户,如果is_root=1则为管理员,如果不为1则为普通用户,如果采用aes-ecb加密,对原文进行分组加密。

明文:user_id:1.000000 is_root:0(其中is_root来判断是否为管理员。) 然后用一段密钥加算法进行加密。

这种提交的加密数据是在cookie中提交,明文不可控,但是密文是可控的,但由于是进行分组进行,所以我们可以推算出每一分组明文对应的密文,假设明文八个一组来进行加密,分组后变为 (提示:仅仅是假设理想情况八位,实际并不是)

第一组:is_user 第二组:1.000000 第三组: is_root: 第四组: 0(不够的八位自动填充)其中user_id 通常情况下我们前端可以修改,进行修改为1.000000,此时原文被加密之后为四组 每组为八个数字的密文假设加密后密文为 c4ca4238a0b923820dcc509a6f75849b 在cookie中被提交,将密文分为四组c4ca4238a0b923820dcc509a6f75849b

此时密文我们是可控的,如果正常提交,服务器解密之后为user_id:1.000000 is_root:0,很显然我们不是管理员,但是如果将第二组密文和第四组密文替换呢,那么user_id就是0,is_root就是1.000000。服务器就解析为user_id:0xxxxxxx(xx为填充字符) is_root:1.000000,显然我们不需要知道密钥,同样可以进行绕过。

还有一则在转账中,如果采用aes-128-ecb加密,在cookie中使用ecb分组加密,比如

付款人账户:

XXX //假设密文abc

收款人账户:

XXX //假设密文efg

试想一下,一旦这个分组是刚好分为四组,我们仅仅将abc与efg交换,那不就造成了支付收款反转,几乎不需要什么技术就可以造成严重的攻击。

ctf-案例

接下来以真实题目来进行详解。

ctf address:https://mixer-f3834380.challenges.bsidessf.net/(国外的一道ctf)

首先尝试输入admin admin 登陆。

返回内容重点为红色框内的东西,需要使得第三个参数 is_admin=1即可获得flag,但是session cookie并不是这个题关注的点,接下来就是抓包分析参数。修改参数。

经测试修改url,get cookie post传参都不能改变is_admin的值,所以只有一种可能,是在cookie里的user参数里加密了,然后传递给服务器,我们get参数传入的账号密码被服务器端加密,然后服务器返回来加密后的user信息。

接下来测试是何种加密,测试为aes-ecb加密,那么是如何确定的呢,由于ecb是分组加密,所以一旦一组的密文我们修改了,其他组的密文解密之后是正常的,而被我们修改了的密文解密会是乱码,所以我们随便修改下user参数。

可以看到报错,并且第一组的密文解密后是乱码,而其他组的加密解密后为正常,所以猜测这一定是aes-ecb的分组加密的方式,此时,我们应该先确定分组,几个为一组,先破坏第一组加密然后破坏第二组加密,然后确定解密后json数据为,

{"first_name":"admin

jmeter 加密解密_AES加密的安全问题相关推荐

  1. java android aes加密解密_AES加密解密在JAVA和ANDROID下互通

    昨天外包安卓的那个人说AES的加解密结果不一样.于是百度搜索发现还真是! 贴上AES加密核心: Cipher cipher = Cipher.getInstance("AES/CBC/PKC ...

  2. 国密SM4,layui前端 和.net core后台 加密解密 .net加密解密

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.本文做用?? 二.SM4介绍 三.使用步骤 1.前台实现加密 2.后台实现解密 四 总结 前言 第一次分享,我是个 ...

  3. 在线RSA加密解密,RSA2加密解密(SHA256WithRSA)

    为什么80%的码农都做不了架构师?>>>    bejson增加 在线RSA加密解密,RSA2加密解密(SHA256WithRSA) 地址:http://www.bejson.com ...

  4. oracle加密 解密,oracle加密encrypt,解密decrypt

    本文将为您描述oracle加密encrypt,解密decrypt,教程操作步骤:oracle加密encrypt,解密decrypt 目录 oracle加密encrypt,解密decrypt 加密 解密 ...

  5. 服务器文件加密解密,刀片加密服务器的文件如何加密和解密

    为了解决信息传输到信息存储过程中的存在的信息安全问题,我们应用到了一种刀片加密服务器,那么什么是刀片加密服务器,刀片加密服务器中的文件如何加密和解密,我们今天就来看一下. 一.刀片加密服务器 1.刀片 ...

  6. java rsa 文件加密解密_RSA 加密、解密(自己生成加密解密文件)

    本文是自己阅读了网上的高人们的文章之后,实现功能后总结出来的,方便自己方便他人,不喜勿喷 加密解密需要生成公钥.私钥文件步骤 1.打开终端 输入 openssl 5F88AA4A-3913-4CBC- ...

  7. 加密解密-对称加密与非对称加密

    目录 加密-Encryption Symmetric-Key Encryption(对称密钥加密) 凯撒密码-对称加密的例子-aesarCipher 例子 Kercos原理-Kerckhoff's P ...

  8. python rsa加密解密_RSA加密解密(python版)

    RSA的算法涉及三个参数,n.e.d. 其中,n是两个大质数p.q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度. e1和d是一对相关的值,e可以任意取,但要求e与(p-1)*(q-1)互质: ...

  9. php中文加密解密,php加密解密详解

    不知道大家对于php加密解密有多少了解,本文主要和大家分享php加密解密相关知识,希望能帮助到大家. 一 对称加密 1.mycyrpt的对称加密:/** * @param $key //数据加密密钥 ...

最新文章

  1. 电脑记事本_办公便签记事本
  2. exit命令的返回值
  3. 小波的秘密2_MATLAB图像多尺度分析
  4. Colaboratory下载Kaggle数据
  5. 08函数的参数 进阶
  6. 一道关于Promise应用的面试题
  7. linux 程序返回值 139,Linux系统监控之ssh登陆自动139邮件短信提醒
  8. 解决jupyter notebook的kernel error内核启动失败问题
  9. php实现微信公众号半匹配,半全局块匹配(Semi-Global Block Matching)算法
  10. 语言用符号打印出落叶的图案_普通语言学概要(第一章第二节,语言是符号系统)...
  11. 人工智能:模型与算法2搜索求解之启发式搜索
  12. python:实现峰值信噪比算法(附完整源码)
  13. WinAPI WinMain函数
  14. 康托尔集合论-罗素悖论-公理化集合论-不完全性定理
  15. 通过Matplotlib画sin(x)
  16. 金属学复习【5】--- 金属及合金的塑性变形与再结晶
  17. M2 MacBookAir售价是多少 M2 MacBookAir配置如何
  18. Hive(2)——使用总结
  19. SQL日期时间常用格式化方法
  20. KA算法:一种低复杂度的预编码/接收机设计思路

热门文章

  1. 《深入浅出DPDK》读书笔记(三):NUMA - Non Uniform Memory Architecture 非统一内存架构
  2. 用QEMU构建嵌入式LINUX系统
  3. 基于Linux内核红黑树的TR069参数解析工具:树形结构+CPE RPC支持
  4. 《计算机网络》第六章:传输层(The Transport Layer)
  5. leetcode题库:6. Z字形变换
  6. git 如何忽略掉文件夹_#PY小贴士# 我的git仓库为什么每次提交都有很多改动?
  7. postman怎么传对象list_postman 传递json的参数里面带了List对象
  8. 数学打比方(函数和卷积)
  9. win10设置禁止系统更新
  10. scala集合day03