公钥密码学

来源:互联网 发布:ibm软件测试招聘 编辑:程序博客网 时间:2024/05/17 01:43

公钥密码学兴起于上个世纪七十年代。为了解决密钥配送的问题。一定要记住,密钥和明文其实是等效的,如果不能保证密钥的安全性,那么就无法保证密文的安全性,因为我们追求的是公开的安全。

举一个例子,你在图书馆预定了一个Locker,图书馆把钥匙寄到你的寝室,任何截获钥匙的人都能打开Locker然后看里面的东西。這面的问题就是对称密码学的密钥配送问题。而现在的Locker都是这样的,你投一个硬币进去,柜子会给你一个二维码(私钥),这样就不存在密钥配送的问题了,你直接用硬币就可以打开柜子,而不是用钥匙,这样就解决了密钥配送的问题。

下面我们拿RSA公钥加密算法来举一个例子。



上面两个公式是RSA的加密和解密公式。我们可以发现有三个数字是关键的在这个算法的。(E,D,N) 那这样的话我们接着讨论如何生成这三个数字。


通过上图我们可以想到我们如何求出(E,D,N)


这个算法里面,我们要关注的就是gcd

int gcd(int a,int b)  {      int r;      while(b>0)      {           r=a%b;           a=b;           b=r;      }      return a;  }  
辗转相除法。

这样的话我们可以构建了RSA的保密算法。

通过以上的算法我们可以看到,算法的核心在于公钥-私钥算法对

而公钥私钥算法对是密切相关的,(E,N) (D,N) ,由于一个公钥和一个私钥是配对的,所以想实现密钥之间解耦是不可能的。

那么我们看一下如何保证算法的安全。


大数mod算法


五个可能针对RSA的算法。


攻击方法






0 0