免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: zuoyuanturing
打印 上一主题 下一主题

[算法] RSA算法的破解 [复制链接]

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
11 [报告]
发表于 2016-03-11 22:18 |只看该作者
zuoyuanturing 发表于 2016-03-11 21:30
htt p://ww w.csdn.ne t/article/2012-02-15/311821
700万份密钥中有27000分重复 设总数为M 则M大约满足 ( ...


原始报道在这:
http://www.cnet.com/news/researc ... pular-cryptography/

原始论文:
http://eprint.iacr.org/2012/064.pdf

Ron was wrong, Whit is right

Arjen K. Lenstra, James P. Hughes

Abstract. We performed a sanity check of public keys collected on the web. Our main goal was
to test the validity of the assumption that different random choices are made each time keys are
generated. We found that the vast majority of public keys work as intended. A more disconcerting
finding is that two out of every one thousand RSA moduli that we collected offer no security.
Our conclusion is that the validity of the assumption is questionable and that generating keys
in the real world for “multiple-secrets” cryptosystems such as RSA is significantly riskier than
for “single-secret” ones such as ElGamal or (EC)DSA which are based on Diffie-Hellman.

论坛徽章:
18
2015年迎新春徽章
日期:2015-03-04 10:16:53操作系统版块每日发帖之星
日期:2016-05-11 06:20:0015-16赛季CBA联赛之佛山
日期:2016-05-06 22:28:4415-16赛季CBA联赛之广夏
日期:2016-04-22 23:24:00操作系统版块每日发帖之星
日期:2016-04-21 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44操作系统版块每日发帖之星
日期:2016-02-03 06:20:00IT运维版块每日发帖之星
日期:2016-01-31 06:20:00IT运维版块每日发帖之星
日期:2016-01-30 06:20:00IT运维版块每日发帖之星
日期:2016-01-24 06:20:00IT运维版块每日发帖之星
日期:2016-01-23 06:20:00操作系统版块每日发帖之星
日期:2015-11-26 06:20:00
12 [报告]
发表于 2016-03-12 00:33 |只看该作者
回复 9# zuoyuanturing


    楼主,我真的是不懂加密解密的,不过看你说了这么多。也讲了这么多理论,实际破解一个呗...

论坛徽章:
223
2022北京冬奥会纪念版徽章
日期:2015-08-10 16:30:32操作系统版块每日发帖之星
日期:2016-05-10 19:22:58操作系统版块每日发帖之星
日期:2016-02-18 06:20:00操作系统版块每日发帖之星
日期:2016-03-01 06:20:00操作系统版块每日发帖之星
日期:2016-03-02 06:20:0015-16赛季CBA联赛之上海
日期:2019-09-20 12:29:3219周年集字徽章-周
日期:2019-10-01 20:47:4815-16赛季CBA联赛之八一
日期:2020-10-23 18:30:5320周年集字徽章-20	
日期:2020-10-28 14:14:2615-16赛季CBA联赛之广夏
日期:2023-02-25 16:26:26CU十四周年纪念徽章
日期:2023-04-13 12:23:10操作系统版块每日发帖之星
日期:2016-05-10 19:22:58
13 [报告]
发表于 2016-03-12 10:23 来自手机 |只看该作者
密码学有一个前提假设,如果你的计算力是无穷的,那么密码就没有意义

论坛徽章:
3
程序设计版块每日发帖之星
日期:2016-03-10 06:20:00每日论坛发贴之星
日期:2016-03-10 06:20:00程序设计版块每日发帖之星
日期:2016-03-12 06:20:00
14 [报告]
发表于 2016-03-12 15:03 |只看该作者
本帖最后由 zuoyuanturing 于 2016-03-12 15:09 编辑

我的电脑1秒只能产生两个2^512素数 一天不超过20W个 要算至少10亿个以上的2^512素数 我的电脑算到何年何月 而且数量是按论文上估计的 可能还要少几个数量级

论坛徽章:
3
程序设计版块每日发帖之星
日期:2016-03-10 06:20:00每日论坛发贴之星
日期:2016-03-10 06:20:00程序设计版块每日发帖之星
日期:2016-03-12 06:20:00
15 [报告]
发表于 2016-03-12 21:30 |只看该作者
循环要比预期小 我一个程序生成N 另一个程序生成P和Q 算法一样 我已经有N多重复的值了
这是生成素数的程序
/****************************************************************************************
产生随机素数
调用方法:N.GetPrime(bits)
返回值:N被赋值为一个bits位(0x100000000进制长度)的素数
****************************************************************************************/
void CBigInt::GetPrime(int bits)
{
    unsigned i;
    m_nLength=bits;
begin:
        for(i=0;i<m_nLength;i++)m_ulValue[i]=rand()*0x10000+rand();
    m_ulValue[0]=m_ulValue[0]|1;
        for(i=m_nLength-1;i>0;i--)
        {
                m_ulValue[i]=m_ulValue[i]<<1;
                if(m_ulValue[i-1]&0x80000000)m_ulValue[i]++;
        }
        m_ulValue[0]=m_ulValue[0]<<1;
        m_ulValue[0]++;
    for(i=0;i<550;i++){if(Mod(PrimeTable[i])==0)goto begin;}
    CBigInt S,A,I,K;
    K.Mov(*this);
        K.m_ulValue[0]--;
    for(i=0;i<5;i++)
        {
        A.Mov(rand()*rand());
            S.Mov(K.Div(2));
            I.Mov(A.RsaTrans(S,*this));
            if(((I.m_nLength!=1)||(I.m_ulValue[0]!=1))&&(I.Cmp(K)!=0))goto begin;
        }
}

产生的原理是这个

    数论学家利用费马小定理研究出了多种素数测试方法,目前最快的算法是拉宾米
勒测试算法,其过程如下:

(1)计算奇数M,使得N=(2**r)*M+1
(2)选择随机数A<N
(3)对于任意i<r,若A**((2**i)*M) MOD N = N-1,则N通过随机数A的测试
(4)或者,若A**M MOD N = 1,则N通过随机数A的测试
(5)让A取不同的值对N进行5次测试,若全部通过则判定N为素数

    若N 通过一次测试,则N 不是素数的概率为 25%,若N 通过t 次测试,则N 不是
素数的概率为1/4**t。事实上取t 为5 时,N 不是素数的概率为 1/128,N 为素数的
概率已经大于99.99%。

    在实际应用中,可首先用300—500个小素数对N 进行测试,以提高拉宾米勒测试
通过的概率,从而提高测试速度。而在生成随机素数时,选取的随机数最好让 r=0,
则可省去步骤(3) 的测试,进一步提高测试速度。

论坛徽章:
3
程序设计版块每日发帖之星
日期:2016-03-10 06:20:00每日论坛发贴之星
日期:2016-03-10 06:20:00程序设计版块每日发帖之星
日期:2016-03-12 06:20:00
16 [报告]
发表于 2016-03-12 21:40 |只看该作者
本帖最后由 zuoyuanturing 于 2016-03-12 22:21 编辑

一共生成了 1344个N 23W的素数 然后得到连续的N和对应的P和Q
因为是连续的P和Q 那么应该就是随机函数并不是随机的了 只是按某个算法固定生成的了 而且不随时间变化 就是说这个数确定 下个数也是确定的
可惜不能上传 不然可以可以把N和素数传上来 因为集合和顺序一定 那么当然是有限集合 当然彩虹表能破解了

论坛徽章:
44
15-16赛季CBA联赛之浙江
日期:2021-10-11 02:03:59程序设计版块每日发帖之星
日期:2016-07-02 06:20:0015-16赛季CBA联赛之新疆
日期:2016-04-25 10:55:452016科比退役纪念章
日期:2016-04-23 00:51:2315-16赛季CBA联赛之山东
日期:2016-04-17 12:00:2815-16赛季CBA联赛之福建
日期:2016-04-12 15:21:2915-16赛季CBA联赛之辽宁
日期:2016-03-24 21:38:2715-16赛季CBA联赛之福建
日期:2016-03-18 12:13:4015-16赛季CBA联赛之佛山
日期:2016-02-05 00:55:2015-16赛季CBA联赛之佛山
日期:2016-02-04 21:11:3615-16赛季CBA联赛之天津
日期:2016-11-02 00:33:1215-16赛季CBA联赛之浙江
日期:2017-01-13 01:31:49
17 [报告]
发表于 2016-03-12 21:44 |只看该作者
回复 14# zuoyuanturing

10亿=10^9,你确定2^512≈10^170个数字里只有这么点素数?一个事实是1~1000里就有168个素数,拍拍脑袋估一下10^170里少说也有10^100个素数吧?你要是真打算把这么多数字都过一遍,我只能提前预祝你及时学会长生不老与天地同寿的法子……

论坛徽章:
3
程序设计版块每日发帖之星
日期:2016-03-10 06:20:00每日论坛发贴之星
日期:2016-03-10 06:20:00程序设计版块每日发帖之星
日期:2016-03-12 06:20:00
18 [报告]
发表于 2016-03-12 22:24 |只看该作者
现在都用快速算法算素数 rand()集合和顺序确定 生成的素数是个有限集合 所以可以彩虹表破解 如果用最慢的算法 肯定难破

论坛徽章:
3
程序设计版块每日发帖之星
日期:2016-03-10 06:20:00每日论坛发贴之星
日期:2016-03-10 06:20:00程序设计版块每日发帖之星
日期:2016-03-12 06:20:00
19 [报告]
发表于 2016-03-12 22:27 |只看该作者
用随机函数取Diffie-Hellman可能也会有破解可能

论坛徽章:
3
程序设计版块每日发帖之星
日期:2016-03-10 06:20:00每日论坛发贴之星
日期:2016-03-10 06:20:00程序设计版块每日发帖之星
日期:2016-03-12 06:20:00
20 [报告]
发表于 2016-03-12 22:33 |只看该作者
这个是我自己实验的结果 没什么吧 没有意愿冒犯任何人
我们在生成了23W个素数和1344个N 对比就有重复的结果了.比如:
N=3471DB828140D20BDC7257F181612CCA8E54727CEE3D7BEE4534433C
2C002D98AC4AAB357D1D0A3FB3111C5E4FDBFACD7E716172EC95564DE543C
C19860B382B0D89BD87930340DD3EC441C88CAD669FA2799301234A34467ABA
1137C1DCE71B0CFE76EC0EDFEBC1AE258680895D0A4365D63F435C5BB98892
3D8D424D063001 PRIME1=3AF43028DD9C86509C88A0F0629E7DC838AA707E756EBD78416AA17E5B10C022EE943F62A6FCDF507CB24178D044739EB676CE869D5C719A40BC38DADE461B1B
PRIME2=E3BC292A8670FAD222E43CCE0398387A5B88B23E80307EBAC582D9C2EA2074BC3C828230A82CF1144CC0B2BABEF26ACC3E3A694EA05A6B0816667564DD945713

接着产生的下一个
N=2A198CC45EDA697AA710272B31155044E8B7D7B328820772FC7F8F87731DFE
2B6D9236968EAAE2F471B0AED01A2C3CBFF923D971FFEE6C04D37350B6C5218
6D8449A743B62619949D0B59F8370AA2255AAC9DEAB2E814C982F444A222225E
744EF596C863C009C410CB8AF9DACB1DAAA43419C6AC62F583DB2732D1E8ED
CAB85
PRIME1=AB1C84FAF5F674D6140AA6B4690CA4A239EE7E9C2ED61F8E1C80B4600C8CFDD0CB247AB4BA78E866F35EC3F86CB25EF2A1C2DF429A50420AED785600FB24BA1B
PRIME2=3EFC4E86A5C436F2EE2A190435CE359C8D2AE1C0068CDC9462A874A64CDE661833F80B8AB264C82ECBDE9A04A474A7B05FC27DC22D90ABF6CB64AB6091648ADF
接着同样有N=PRIME1*PRIME2
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP