在RSA加密的过程中,如果e选的过小,比如3、5等,则m^e可能小于n,即m^e modn = m^e,那么就可以通过直接对密文开e次方求出明文,这就是小指数加密的缺陷。
通常在ctf题目中,还会遇到小指数加密广播攻击,即同一个消息用同一个小指数e和不同的n进行加密,那么就可以利用n,c的关系建立同余方程组,然后用中国剩余定理解出明文的e次方,最后仅需要开方就可获得明文。
举个例子:
1 | N = 331310324212000030020214312244232222400142410423413104441140203003243002104333214202031202212403400220031202142322434104143104244241214204444443323000244130122022422310201104411044030113302323014101331214303223312402430402404413033243132101010422240133122211400434023222214231402403403200012221023341333340042343122302113410210110221233241303024431330001303404020104442443120130000334110042432010203401440404010003442001223042211442001413004 |
这就是典型的广播攻击,脚本:
1 | from sympy.ntheory.modular import * |
关于中国剩余定理,除了直接调用库也可以自己实现,参考https://www.cnblogs.com/lingxuer/p/15018137.html