吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 13777|回复: 13
收起左侧

[原创] [新人原创]针对RSA的攻击之 Coppersmith定理攻击

  [复制链接]
Windy_sec 发表于 2017-10-19 13:28
第一次发主题帖,格式排版啥的大家将就着点

一、rsa算法简介
和rsa相关的参数无非就是n、p、q、e、c、m、d。
p、q为素数,p*q=n,d由p和q求出。c是密文,m是明文。
(n、e)就是公钥(n、d)是私钥。公钥是给其他人加密用的,只有有私钥才能解密。

(1)假设p=61、q=53
(2)n = 61×53 = 3233
(3)计算n的欧拉函数   φ(n) = (p-1)(q-1)
        φ(3233)等于60×52,即3120。
(4)选择e 随机选择一个整数e,条件是1< e < φ(n),且e与φ(n) 互质。
(5)使用扩展欧几里得算法求得d
(6)n=3233,e=17,d=2753,所以公钥就是 (3233,17),私钥就是(3233, 2753)。

rsa的可靠性就在于n如果十分大,不可分解p*q相乘的形式。

这里附上一段rsa解密用的python脚本


#coding:utf-8
def gcd(a, b):   #求最大公约数
    if a < b:
        a, b = b, a
    while b != 0:
        temp = a % b
        a = b
        b = temp
    return a
def egcd(a, b):
    if a == 0:
        return (b, 0, 1)
    else:
        g, y, x = egcd(b % a, a)
        return (g, x - (b // a) * y, y)
def modinv(a, m):
    g, x, y = egcd(a, m)
    if g != 1:
        raise Exception('modular inverse does not exist')
    else:
        return x % m

if __name__ == "__main__":
    c = 
    p = 49891
    q = 18443
    n = p*q
    e = 19
    d = modinv(e, (p - 1) * (q - 1))
    m=pow(c,d,n)
    print m


二、Coppersmith定理攻击

下面开始正题,Coppersmith定理攻击,也是针对n

Coppersmith定理指出在一个e阶的mod n多项式f(x)中,如果有一个根小于n^1/e,就可以运用一个O(log n)的算法求出这些根。

这个定理可以应用于rsa算法。如果e = 3并且在明文当中只有三分之二的比特是已知的,这种算法可以求出明文中所有的比特。


下面根据一个题目来讲解攻击方法


20171019150838799262401.png



题目中一个加密的enc文件,一个私钥文件。使用openssl查看密钥中的信息。

20171019150838806747812.png



但是我们发现,奇怪的是在两个素数p、q中只给出了一个,并且这一个后面还有好多0,看来是一个不完整的数。我们带入Coppersmith定理,满足,则可以使用该攻击方法。

这里附上sage脚本、sage是基于python的一个数学处理库


n=0x985CBA74B3AFCF36F82079DE644DE85DD6658A2D3FB2D5C239F2657F921756459E84EE0BBC56943DE04F2A04AACE311574BE1E9391AC5B0F8DBB999524AF8DF2451A84916F6699E54AE0290014AFBF561B0E502CA094ADC3D9582EA22F857529D3DA79737F663A95767FDD87A9C19D8104A736ACBE5F4A25B2A25B4DF981F44DB2EB7F3028B1D1363C3A36F0C1B9921C7C06848984DFE853597C3410FCBF9A1B49C0F5CB0EEDDC06D722A0A7488F893D37996F9A92CD3422465F49F3035FEA6912589EFCFB5A4CF9B69C81B9FCC732D6E6A1FFCE9690F34939B27113527ABB00878806B229EC6570815C32BC2C134B0F56C21A63CA535AB467593246508CA9F9
p=0xBCF6D95C9FFCA2B17FD930C743BCEA314A5F24AE06C12CE62CDB6E8306A545DE468F1A23136321EB82B4B8695ECE58B763ECF8243CBBFADE0603922C130ED143D4D3E88E483529C820F7B53E4346511EB14D4D56CB2B714D3BDC9A2F2AB655993A31E0EB196E8F63028F9B29521E9B3609218BA0000000000000000000000000
p_fake = p+0x10000000000000000000000000
pbits = 1024
kbits = pbits-576
pbar = p_fake & (2^pbits-2^kbits)
print "upper %d bits (of %d bits) is given" % (pbits-kbits, pbits)
PR.<x> = PolynomialRing(Zmod(n))
f = x + pbar
x0 = f.small_roots(X=2^kbits, beta=0.4)[0]  # find root < 2^kbits with factor >= n^0.4
print x0 + pbar


http://sagecell.sagemath.org/  一个在线运行sage脚本的网站

其实在这里只需要知道576bit,即144位十六进制数便可以解出。

>>> len("BCF6D95C9FFCA2B17FD930C743BCEA314A5F24AE06C12CE62CDB6E8306A545DE468F1A23136321EB82B4B8695ECE58B763ECF8243CBBFADE0603922C130ED143D4D3E88E483529C820F7B53E4346511EB14D4D56CB2B714D3BDC9A2F2AB655993A31E0EB196E8F63028F9B29521E9B3609218BA")
231


这里还多给了不少。记得后面需要补0到1024bit。

20171019150838982770520.png



求得p、然后n/p=q,知道了p和q,就可以生成私钥,来解密文件了

p=0xbcf6d95c9ffca2b17fd930c743bcea314a5f24ae06c12ce62cdb6e8306a545de468f1a23136321eb82b4b8695ece58b763ecf8243cbbfade0603922c130ed143d4d3e88e483529c820f7b53e4346511eb14d4d56cb2b7b3060a902751b836e36d4ce17042a2b4022b306e43f7b79b5fdf1bd216a24e4e6ec2b9a5c6d3b77f7cdL
q=0xce69cb9edfdd2fb10ba9604a3d62372a4c66cfa9a4d3fcab0cfb84c73542005eaa0c74fba8d6683b5448c25fa01fe6a7aac4fbc124b1a5cf09e42417b43924251a9a86edfedd9a3fdea47d9334b0d8771fee872a218dbec5d5dd760a8cb08e7b7903bce7e66c21ebdfe454edf98cb852a44caf29196caa089070efd6ff10b6ddL

生成私钥

20171019150839013534772.png



解密文件

20171019150839061430524.png



rsa.zip

4.23 KB, 下载次数: 77, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 5威望 +1 吾爱币 +13 热心值 +5 收起 理由
SomnusXZY + 1 + 1 热心回复!
黑的思想 + 1 + 1 用心讨论,共获提升!
arryboom + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
wahx1314 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
Poner + 1 + 8 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

dahaij 发表于 2018-4-22 22:34
研究了好几个软件都是rsa,一直想研究研究,但看不懂呀,大神能不能指点什么资料可以学习,或者弄个工具什么的。
lelandyang 发表于 2017-10-21 09:42
yanghaiyan168 发表于 2017-10-21 21:14
fghtiger 发表于 2017-10-21 21:37
太高深了,看不懂。
都同学 发表于 2017-10-22 00:26
学习了,谢谢分享!!!
gongyong728125 发表于 2017-10-25 13:05
学习了,一直想学习下加密算法
xiaohong 发表于 2017-11-19 17:37
学习了,一直想学习下,加密算法tai fu za
star2k 发表于 2017-11-24 07:42

学习了,一直想学习下加密算法
oo小博士oo 发表于 2018-3-18 14:47
谢谢楼主,学习了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-19 12:32

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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