密码学:公钥密码.(非对称密码)

这篇具有很好参考价值的文章主要介绍了密码学:公钥密码.(非对称密码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

密码学:公钥密码.

公钥密码 (Public Key Cryptography),又称为非对称密码,其最大特征是加密和解密不再使用相同的密钥,而使用不同的密钥。使用者会将一个密钥公开,而将另一个密钥私人持有,这时这两个密钥被称为公钥和私钥。一般来说,公钥和私钥是难以互相计算的,但它们可以互相分别作为加密密明和解密密钥。当信息发送者选择采用接收者的公钥加密时,接收者收到信息后使用自己的私钥解密,这样便可保持信息的机密性;若信息发送者使用自己的私钥对信息摘要进行加密,接收者使用发送者的公钥对摘要进行验证,即可起到签名的作用,可以保证信息的认证性和不可否认性。


目录:

密码学:公钥密码

RSA算法:

RSA的常见攻击: 

(1)因式分解:

(2)低加密指数小明文攻击

(3)共模攻击

(4)广播攻击

(5)低解容指数攻击 (Wiener's Attack)

(6)Coppersmith's High Bits Attack

(7)RSA LSB Oracle

离散对数相关密码学:

(1)EIGamal和ECC

(2)离散对数的计算

1.暴力计算

2.更高效的计算方法


RSA算法:

RSA 算法是目前工程中使用最广泛的公钥密码算法,算法的安全性基于一个简单的数学事实: 对于大素数 p 和 q,计算 n = pxq 非常简单,但是在已知 n 的情况下分解因子得到 p 和 q 则相当困难。

在线RSA算法加密和解密:RSA在线加密解密 - RSA密钥生成器

RSA的基本算法如下: 选取较大的索数 p 和 q(一般大于 512bit,且 p 不等于 q),计算:

n = p x q

密码学:公钥密码.(非对称密码)

密码学:公钥密码.(非对称密码)

该加解密算法的正确性证明如下:

密码学:公钥密码.(非对称密码)

密码学:公钥密码.(非对称密码)

所以:

密码学:公钥密码.(非对称密码)


RSA的常见攻击: 

(1)因式分解:

由于 RSA 的私钥生成过程中只用到了p、g与e,如果p、q被成功求出,那么可使用正常的计算方法将私钥模数 d 算出。如果 n 的大小不太大 (不大于 512 位),建议先行尝试因式分解法。因式分解时常用的辅助工具有 SageMath 、Yafu,以及在线因子查询网站 factordb。 另外,若p和9的差距非常小,由于

密码学:公钥密码.(非对称密码)

即可通过暴力枚举 p - g 的值来分解pq。

例如,对于 RSA 公钥<n,e>=<16422644908304291,65537>,由于的值较小,可以考虑使用因式分解的方法。使用 Yafu 执行 factor (16422644908304291),得到以下输出:

密码学:公钥密码.(非对称密码)

从而得到两个素数 p 和 q 分别为 134235139 和 122342369 。使用Gmpy2 Python库可以计算出私钥 a 的值。

密码学:公钥密码.(非对称密码)


(2)低加密指数小明文攻击

如果被加密的 m 非常小,而且 e 较小,导致加密后的 c 仍然小于 n,那么便可对密文直接开 e 次方,即可获得明文 m。例如,考虑以下情况: n=100000980001501,e=3,m=233,那么pow (m,e) =12649337,仍然小于n。此时,对12649337开3次方即可解出明文233.

如果加密后的 c 虽然大于 n 但是并不太大,由于pow (m,e) =kn+c,可以暴力枚举 k,然后开 e 次方,直到 e 次方可以开尽,解出了正确的 C 为止。例如,当 r 和 e 与上式相同,但 m =233333时,有 C = pow(m,e,n) =3524799146410。

使用 Python 枚举n的系数的代码如下:

密码学:公钥密码.(非对称密码)

当枚举到 k=127 时,3次方可以开尽,解得明文为233333;


(3)共模攻击

如果使用了相同的n,不同的模数e1、 e2,且e1、e2互素,对同一组明文进行加密,得到密文c1、c2那么可以在不计算私钥的情况下计算出明文 m。设

密码学:公钥密码.(非对称密码)

密码学:公钥密码.(非对称密码)

显然,对相同的m使用同一个n和不同的e加密得到了不同的c,且两个e互素,可以尝试用共模攻击的方法解出m。

首先,使用扩展欧几里得算法求出xe1+ye2=1中的x和y:

密码学:公钥密码.(非对称密码)

密码学:公钥密码.(非对称密码)

密码学:公钥密码.(非对称密码)

即可在不分解n的情况下解得明文m。由于扩展欧几里得算法的时间复杂度为O(logn),在n非常大

时,该方法仍然可用。

如果遇到只有一组明文但被多个e加密得到了多个密文的情况,应该先考虑使用共模攻击。


(4)广播攻击

对于相同的明文m,使用相同的指数e和不同的模数n1,n2,···,ni,加密得到i组密文时(i ≥ e),可以使用中国剩余定理解出明文。设

密码学:公钥密码.(非对称密码)

联立方程组,使用中国剩余定理,可以求得一个Cx满足

密码学:公钥密码.(非对称密码)

密码学:公钥密码.(非对称密码)

下面尝试使用广播攻击来解出n。联立三个方程组,使用中国剩余定理:

密码学:公钥密码.(非对称密码)

可以看到,我们成功解出了明文.

若看到使用相同的e不同的n进行了多次加密且e较小,密文组数不小于e组,应当考虑使用此方法。


(5)低解容指数攻击 (Wiener's Attack)

密码学:公钥密码.(非对称密码)


(6)Coppersmith's High Bits Attack

本方法由Don Coppersmith提出,如果已知明文的很大部分,即m=motx,已知mo或组成n中一个大素数的高位,就可以对私钥进行攻击。一般,对于1024位的大素数,只需要知道640位即可成功攻击。攻击的详细实现见:GitHub - mimoo/RSA-and-LLL-attacks: attacking RSA via lattice reductions (LLL)


(7)RSA LSB Oracle

密码学:公钥密码.(非对称密码)

密码学:公钥密码.(非对称密码)

密码学:公钥密码.(非对称密码)


离散对数相关密码学:

(1)EIGamal和ECC

密码学:公钥密码.(非对称密码)

密码学:公钥密码.(非对称密码)


(2)离散对数的计算

1.暴力计算

当 p 的值不太大时,由于离散对数的取值一定在0 ~p-1范围内,显然可以暴力穷举。例如,考虑以下情况:

密码学:公钥密码.(非对称密码)

可以写出以下暴力计算代码:

密码学:公钥密码.(非对称密码)

以下是椭圆曲线离散对数的暴力破解示例。考虑如下曲线和点,求logpQ:

密码学:公钥密码.(非对称密码)

在Sagemath中定义该圆曲线和P、Q两个点,写出循环,即可进行暴力破解:

密码学:公钥密码.(非对称密码)

该方法的时间复杂度为O (n) ,当p小于1e7数量级时,暴力计算是可以考虑的。


2.更高效的计算方法

Sagemath内置了不同种类的离散对数计算方法,适用于各种场合。以下代码介绍了一些常用的计算离散对数的算法,具体使用条件等请参考代码注释。

密码学:公钥密码.(非对称密码)


好用的解密网站:在线AES加密解密、AES在线加密解密、AES encryption and decryption--查错网

         

     

学习书籍:从0到1:CTFer成长之路... 文章来源地址https://www.toymoban.com/news/detail-436333.html

到了这里,关于密码学:公钥密码.(非对称密码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第四章 公钥密码 —— 现代密码学(杨波)课后题答案解析

    4. 用推广的Euclid算法求67 mod 119的逆元 解:初始化:(1,0,119), (0,1,67) 1:Q=119/67=1,(0,1,67) , (1,-1,52) 2:Q=67/52=1,(1,-1,52), (-1,2,15) 3:Q=52/15=3,(-1,2,15), (4,-7,7) 4:Q=15/7=2,(4,-7,7), (-9,16,1) 所以67 -1  mod 119=16 10.设通信双方使用RSA加密体制,接收方的公开钥是( e , n )=(5,35),接收到

    2024年02月05日
    浏览(39)
  • 【密码学复习】第七章 公钥加密体制(二)

    RSA单向陷门函数及其应用 ElGamal单向陷门函数 1)密钥生成 ① 选择一大素数 p ,选取Z p * 的生成元 g ; ② 任选 小于 p 的随机数 x ,计算 y ≡ g x mod p ; ③ ( y , g , p )为公开密钥, ( x , g , p )为秘密密钥. 2)加密: 设待加密明文为 M . ① 随机选一整数 k ,0 k = p -1; ② 计算密文对

    2024年02月05日
    浏览(31)
  • 密码学【第三节:对称密码-DES\AES】

    对称加密     对称加密算法中,数据发送方将明文和密钥一起经过特殊加密算法处理成密文后,将它发送出去。接收方收到密文后,若想解读原文,则需要使用加密用到的相同密钥及相同算法的逆算法对密文进行解密,才能使其恢复成原文。     它的最大优势是加

    2024年02月07日
    浏览(41)
  • 密码学【java】初探究加密方式之非对称加密

    非对称加密算法又称现代加密算法。非对称加密是计算机通信安全的基石,保证了加密数据不会被破解。 与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey) 和私有密(privatekey) 公开密钥和私有密钥是一对。如果用公开密钥对数据进行加密,只有用对应的

    2024年02月03日
    浏览(37)
  • 密码学:一文读懂非对称加密算法 DH、RSA

    我们可能没有在瑞士苏黎世银行存入巨额资产的机会,但相信大多数人都在电影中见到这样一组镜头: 户主带着自己的钥匙来到银行,要求取出自己寄放的物品。银行工作人员验明户主身份后,拿出另一把钥匙同户主一起打开保险柜,将用户寄放物品取出。我们可以把这个保

    2024年01月21日
    浏览(35)
  • 【密码学】为什么不推荐在对称加密中使用CBC工作模式

    这篇文章是我在公司内部分享中一部分内容的详细版本,如标题所言,我会通过文字、代码示例、带你完整的搞懂为什么我们不建议你使用cbc加密模式,用了会导致什么安全问题,即使一定要用需要注意哪些方面的内容。 注:本文仅从安全角度出发,未考虑性能与兼容性等因

    2024年02月06日
    浏览(47)
  • 密码学之对称加密体系(2):AES、SM4的 S 盒具体算法的实现

    🔥点击进入【硬件安全】社区,查看更多精彩内容🔥 🔥点击查看《硬件安全》系列文章🔥 📢  声明 : 🥭 作者主页:【摆渡沧桑的CSDN主页】。 ⚠️ 未经作者允许,禁止转载。 ⚠️ 本文为非盈利性质,目的为个人学习记录及知识分享。因能力受限,存在知识点分析不

    2024年02月16日
    浏览(25)
  • 【11.10】现代密码学1——密码学发展史:密码学概述、安全服务、香农理论、现代密码学

    参考:密码学发展简史 骆婷老师的《现代密码学(32H)》课程,笔记+查找的资料补充 期末为闭卷考试的形式 密码学早在公元前400多年就已经产生,人类使用密码的历史几乎与使用文字的时间一样长,密码学的发展大致可以分为 3 个阶段: 1949年之前的古典密码学阶段; 1949 年

    2024年02月04日
    浏览(35)
  • 【密码学】高级密码学-2

    🍬第⑤部分由L3H_CoLin编写,有一些修改。🍬 Song, Dawn Xiaoding, David Wagner, and Adrian Perrig. “Practical techniques for searches on encrypted data.” Proceeding 2000 IEEE Symposium on Security and Privacy. SP 2000. IEEE, 2000. 数据的安全外包存储 利用密码算法加密明文数据,使得云平台无法获得额外信息 解决

    2024年02月16日
    浏览(23)
  • 【密码学】高级密码学-1

      通信双方使用 同一个密钥 ,通过使用加密算法配合上密钥来加密,解密过程采用加密过程的逆过程配合密钥即可。   常见的对称加密算法有DES、AES等。   对称加密的缺点:不能在不安全的网络上传输密钥,一旦密钥泄露则加密通信失败。   非对称加密使用了一

    2024年02月05日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包