安全矩阵

 找回密码
 立即注册
搜索
楼主: ethereel

李文艺学习日记

[复制链接]

5

主题

40

帖子

215

积分

中级会员

Rank: 3Rank: 3

积分
215
 楼主| 发表于 2020-4-20 03:17:58 | 显示全部楼层
本帖最后由 ethereel 于 2020-4-21 01:57 编辑

占坑:破解aes五种模式的技术要点
由于数学知识不过关,最近一直在纠结aes的原理,比如有限域的四则运算的编程问题,所以就没写日记orz
回复

使用道具 举报

5

主题

40

帖子

215

积分

中级会员

Rank: 3Rank: 3

积分
215
 楼主| 发表于 2020-4-21 01:57:58 | 显示全部楼层
本帖最后由 ethereel 于 2020-4-22 01:47 编辑

整理了弱AES与CBC翻转
2/6

ps.发文后会将学习与进度删除

回复

使用道具 举报

5

主题

40

帖子

215

积分

中级会员

Rank: 3Rank: 3

积分
215
 楼主| 发表于 2020-4-22 01:52:07 | 显示全部楼层
整理了OFB和TCR,4/6
找资料的时候发现freebuf4.15发过一篇分别破解对称密钥的五种模式在CTF中的应用的文章,于是不打算把这篇记录投稿了,之后整理整理涉及到的CTF题当做题库吧
回复

使用道具 举报

5

主题

40

帖子

215

积分

中级会员

Rank: 3Rank: 3

积分
215
 楼主| 发表于 2020-4-23 01:03:42 | 显示全部楼层
整理6/6,CFB,OFB
密码学以及复现堆喷过ASLR的实验
回复

使用道具 举报

5

主题

40

帖子

215

积分

中级会员

Rank: 3Rank: 3

积分
215
 楼主| 发表于 2020-4-24 05:23:28 | 显示全部楼层
安卓开发
回复

使用道具 举报

5

主题

40

帖子

215

积分

中级会员

Rank: 3Rank: 3

积分
215
 楼主| 发表于 2020-4-25 01:15:30 | 显示全部楼层
4.25 平方乘算法,RSA的计算过程
回复

使用道具 举报

5

主题

40

帖子

215

积分

中级会员

Rank: 3Rank: 3

积分
215
 楼主| 发表于 2020-4-27 03:43:12 | 显示全部楼层
4.26 循环群与ElGamal加密

该算法安全性依赖于计算有限域上离散对数难题:求解离散对数(目前)是困难的,其逆运算指数运算简单。

算法思路:
假设有2个用户Alice 和 Bob,Bob欲使用ElGamal加密算法向Alice发送信息。
对于Alice,首先要选择一个素数q, α是素数q的本原根。 [本原根的概念对应模q乘法群(需循环群)中的生成元。]

Alice产生一个XA, XA∈(1, q - 1)
计算YA = αXA mod q
A的私钥为XA, 公钥为 {q, α, YA}
公钥存在于某个可信公开中心目录,任何用户都可访问

对于Bob, 首先去上述中心目录访问得Alice的公钥 {q, α, YA}
然后将自己欲发送的明文M, (M ∈ [1, q - 1])洗干净备好。

选一个随机整数k, k ∈ [1, q - 1]
计算可解密自己密文的秘钥 PrivateK = (YA)k mod q (即αXA*k mod q)
将M加密成明文对(C1, C2) 其中
C1 = αk mod q , C2 = PrivateK * M mod q
明文对发送给Alice
Alice收到明文对:

PrivateK = (C1)XA mod q(即αk*XA mod q)
M = C2 * PrivateK-1 mod q
到这里..发现算法大多就是一些乘法,求幂之类的运算。剩下个关键内容就是如何寻找素数p的本原根,或者说如何找有限域GF(p)中的生成元。
我们在群这个概念里讨论。
p是素数,令Zp = {1, 2, 3, ..., p - 1},因为考虑乘法,去掉了0元素。
2个定理:

Euler定理:设P和a是互素的两个整数,则有aφ(p)=1 mod p
拉格朗日定理: 设 G 是有限群, H 是 G 的子群,|H| 整除 |G|
回顾这样2个概念:设G是群, a∈G, 使得等式ak = e成立的最小整数k称为元素a的阶。而群的阶是指该群中的元素个数。值得留意的是,以某个生成元去生成某个子群,该子群的阶就是该元素的阶(当然了)。

因Zp中所有元素与p互素,由欧拉定理,Zp中所有元素的阶不超过p-1,(因为群的阶φ(p)是p-1,而至少有aφ(p)=1 mod p)。
对于Zp中的任一元素,以该元素为生成元形成的一个循环群,设为S(群S的阶在数值上即该元素的阶),根据群的封闭性可知S必然为Zp的子群,根据拉格朗日定理,可知Zp的元素的阶必然是|Zp| (即p-1)的因子。

于是可以得到这样一个结论:若有这样一个元素a,其阶为Ka, Ka是p-1的平凡因子(即因子1 或者因子p-1), 那么a或者是单位元,或者是生成元。 又知Zp的单位元是1,那么根据单位元的唯一性,可知若a非1,则a必为生成元。问题在于,p-1的因子可能很多,我们还不是得一个个去找到阶是p-1的平凡因子的元素?

为此,我们构造一种特殊的素数,使得p-1的因子数量很少。取p - 1 = 2 * Q ,其中p是素数,Q也是素数。 因为Q是素数,因子仅1, Q。所以p - 1的因子只有 {1, 2, Q, p - 1}四个。
到此已经非常明朗,我们找到满足上述条件的素数p,然后在Zp中寻找这样一个元素a,a的阶非2,非Q,即a^2 mod p != 1 && a^Q mod p != 1,若a又非单位元1,那么a必然是生成元。

留意Zp未必一定有生成元, 若1 到 (p - 1)经上述检验都不满足, 考虑另取一个素数p。至于代码实现上出现的问题:若mpz_probab_prime_p(tmp.mt, 6) == 1 改为 mpz_probab_prime_p(tmp.mt, 6) == 2,p一旦较大,程序运行速度很慢。取2为真素数检验,速度很慢,1为概率素数检验,速度快。
回复

使用道具 举报

5

主题

40

帖子

215

积分

中级会员

Rank: 3Rank: 3

积分
215
 楼主| 发表于 2020-4-28 01:11:58 | 显示全部楼层
4.27 椭圆曲线的基本概念

a,b,c,d,e是满足某些简单条件的实数。定义中包含一个称为无穷点的元素,记为O
如果其上的3个点位于同一直线上,那么它们的和为O
O为加法单位元,即对ECC上任一点P,有
设P1=(x, y)是ECC上一点,加法逆元定义为P2=-P1=(x, y)
P1,P2连线延长到无穷远,得到ECC上另一点O,即P1,P2,O三点共线,所以P1+P2+O,P1+P2=O,P1=-P2
O+O=O,O=-O
Q,R是ECC上x坐标不同的两个点,Q+R定义为:画一条通过Q,R的直线与ECC交于P1(交点是唯一的,除非做的Q,R点的切线,此时分别取P1=Q或P1=R)。由Q+R+P1=O,得Q+R=-P1
点Q的倍数定义如下:在Q点做ECC的一条切线,设切线与ECC交于S,定义2Q=Q+Q=-S。类似可定义3Q=Q+Q+Q…
优点:
1. 安全性高
2. 密钥量小
3. 灵活性好
回复

使用道具 举报

5

主题

40

帖子

215

积分

中级会员

Rank: 3Rank: 3

积分
215
 楼主| 发表于 2020-4-30 01:11:12 | 显示全部楼层
0429

验证码常见漏洞
1.图片验证码
2.短信验证码
3.邮箱验证码
一、图片验证码
1.验证码复用,有条件不生效
(1)在密码正确前未对验证码做验证解决办法:
只有当同一http请求内所有触发因子都为正确时,验证码才生效,且下一次验证码销毁
2.验证码易识别
(1)验证码杂点太少或者没有杂点导致可以用程序识别出验证码的内容,如PKAV的HTTP Fuzzer。(2)使用打码平台调用验证码接口获取验证码进行识别,返回验证码
3.验证码前端
(1)验证码是用js做的,用js生成点随机字符填充到前端dom
(2)验证码在cookie中
(3)验证码在源码中
二、邮箱验证码
1.没有基于客户端session进行次数限制,制定合适的锁定策略
2.进行敏感数据操作时对比账号和绑定的手机邮箱是否匹配,做多次验证
3.服务器生成的验证码返回到页面前端,导致前端可以看到产生验证信息泄露5.由4位数字组成的验证码,如果服务端没次数限制可以枚举出来进行登录或者注册
三、短信验证码
1.请求用户名和手机不匹配但依旧发送验证码,导致可以向任意号码发短信2.有单个手机号次数限制,使用大量不同手机号或调用验证码平台短时间内发送数万级短信。



回复

使用道具 举报

5

主题

40

帖子

215

积分

中级会员

Rank: 3Rank: 3

积分
215
 楼主| 发表于 2020-4-30 01:15:34 | 显示全部楼层
0429

验证码常见漏洞
1.图片验证码
2.短信验证码
3.邮箱验证码
一、图片验证码
1.验证码复用,有条件不生效

(1)在密码正确前未对验证码做验证
解决办法:
只有当同一http请求内所有触发因子都为正确时,验证码才生效,且下一次验证码销毁
2.验证码易识别
(1)验证码杂点太少或者没有杂点导致可以用程序识别出验证码的内容,如PKAV的HTTP Fuzzer。
(2)使用打码平台调用验证码接口获取验证码进行识别,返回验证码
3.验证码前端
(1)验证码是用js做的,用js生成点随机字符填充到前端dom
(2)验证码在cookie中
(3)验证码在源码中
二、邮箱验证码
1.没有基于客户端session进行次数限制,制定合适的锁定策略
2.进行敏感数据操作时对比账号和绑定的手机邮箱是否匹配,做多次验证
3.服务器生成的验证码返回到页面前端,导致前端可以看到产生验证信息泄露5.由4位数字组成的验证码,如果服务端没次数限制可以枚举出来进行登录或者注册
三、短信验证码

1.请求用户名和手机不匹配但依旧发送验证码,导致可以向任意号码发短信
2.有单个手机号次数限制,使用大量不同手机号或调用验证码平台短时间内发送数万级短信。




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2020-7-11 07:24 , Processed in 0.029687 second(s), 17 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表