RSA

作者: Lou00 | 来源:发表于2018-06-09 19:56 被阅读0次

    了解概念

    相关资料https://www.kancloud.cn/kancloud/rsa_algorithm/48493

    P : 大质数
    Q : 大质数
    N(Modulus) : N=P*Q
    C : 密文
    M : 明文
    C=ME mod N(加密过程)
    M=CD mod N(解密过程)
    公钥(E , N) 私钥(D , N) 密钥对(E , D , N)

    同余定理

    给定一个正整数m,如果两个整数a和b满足(a-b)能够被m整除,即(a-b)/m得到一个整数,那么就称整数a与b对模m同余,记作a≡b(mod m)。
    性质: 1 反身性 a≡a (mod m)
    2 对称性 若a≡b(mod m),则b≡a (mod m)
    3 传递性 若a≡b (mod m),b≡c (mod m),则a≡c (mod m)
    4 同余式相加 若a≡b (mod m),c≡d(mod m),则a+-c≡b+-d (mod m)
    5 同余式相乘 若a≡b (mod m),c≡d(mod m),则ac≡bd (mod m)

    欧拉函数


    φ(pq)= φ(p) φ(q)=(p-1)(q-1)

    欧拉定理

    如果两个正整数a和n互质,则n的欧拉函数 φ(n) 可以让下面的等式成立:
    aφ(n)≡1 (mod n)即1=aφ(n) mod n

    • 费马小定理
      假设正整数a与质数p互质,因为质数p的φ(p)等于p-1,则欧拉定理可以写成
      ap-1≡1 (mod p)

    模反元素

    如果两个正整数a和n互质,那么一定可以找到整数b,使得 ab-1 被n整除,或者说ab被n除的余数是1。
    ab≡1 (mod n)

    • 证明
      aφ(n)=a × aφ(n)-1≡1 (mod n)
      b = aφ(n)-1即可证明存在

    密匙生成过程

    • 随机选择两个不相等的质数p和q。
    • 计算p和q的乘积n。
    • 根据公式:φ(n) = (p-1)(q-1) 计算n的欧拉函数φ(n)
    • 随机选择一个整数e,条件是1到φ(n)
    • 计算e对于φ(n)的模反元素d。公式 ed ≡ 1 (mod φ(n))
      • ed - 1= kφ(n) e,φ(n)已知 对k进行操作使d为整数可利用扩展欧几里得算法
    • 将n和e封装成公钥,n和d封装成私钥

    如何从C=ME mod N 推导 M=CD mod N

    C=ME mod N => C = ME - kN
    假设 M=CD mod N成立
    带入可得(ME - kN)D mod N =M => MED mod N =M
    由于ED ≡ 1 (mod φ(N)) 所以ED = hφ(N)+1
    Mhφ(N)+1 mod N =M

    • 当 M 与 N 互质时根据欧拉定理,此时 Mφ(N) ≡ 1 (mod N)
      则Mhφ(N) × M ≡ 1 (mod N)成立
    • 当 M 与 N 不互质
      此时,由于n等于质数p和q的乘积,所以m必然等于kp或kq。以 m = kp为例,考虑到这时k与q必然互质,则根据欧拉定理,下面的式子成立:
      (kp)q-1≡ 1 (mod q) =>(kp)(q-1)h(p-1) × kp ≡ kp (mod q)=>(kp)ed≡ kp (mod q)
      (kp)ed=kp +tq (t可整除p) => (kp)ed=kp +xpq => med≡m (mod n) 证毕

    后缀名

    • .enc 代表 C
    • .dec 代表 M
    • .pem代表 密钥

    知道C N E解密

    • 思路
      N 分解为 P Q
      h(p-1)(q-1)+1=ed 解得 d
      M=CDmod N
    • 操作
    openssl rsa -pubin -text -modulus -in warmup -in 【public.pem】
    

    可以解出 E 和 N

    #python
    print(0xN)
    

    转化为十进制N
    利用 yafu
    factorr(N)
    解出 p q

    python rsatool.py -o 【private.pem】 -e 【65537】 -p 【123】-q 【123】
    

    得到私钥private.pem

    openssl rsautl -decrypt -in 【flag.enc】 -inkey 【private.pem】
    

    私钥解密

    相关文章

      网友评论

          本文标题:RSA

          本文链接:https://www.haomeiwen.com/subject/xdlteftx.html