您的位置:首页 > 大数据 > 人工智能

Blockchain的鱼和熊掌系列(13)Integer Factorization

2017-03-06 14:11 162 查看
A public-key cryptosystem is based on the big integer factorization problem of number theory which will be discussed as follows. In such a system, a message, M, is encrypted to a publicly specified power, e, and divided by the publicly specified product of two large secret prime numbers p and q. Decryption is similar too. The security of this system heavily relies on the mathematical difficulty of factoring the published divisor, pq.

Q1: 基于整数分解(Integer Factorization)的公钥算法啥样?

整数分解是一个数论上经典的难问题,基于这个问题进行构建的公钥算法有很多,这里以经典的RSA为例:

a. 获取两个大质数p和q

b. 产生私钥Pr和公钥Pu

c. 采用Pr加密,采用Pu解密

Q2: 怎么从p和q得到Pr和Pu呢?

一种方法是:在与欧拉函数

互质的数中选取一个候选者,

使之满足:


然后,根据Pr选取Pu,

使二者互逆:


Q3: 为什么要采用欧拉函数?欧拉函数

是什么鬼?


采用欧拉函数的原因是与本方法的前提(采用质数分解)贴切的,

表示于pq互质的数的个数,欧拉函数有非常好的相关性质可以有效地利用计算效率:

性质一:若整数n,m互质,则


性质二:若整数n为质数,则


根据欧拉函数的性质一和性质二,有:


Q4: 怎么在公钥系统中使用Pr和Pu呢?

假设明文M,主方A,拥有私钥Pr;客方B,拥有公钥Pu。


,以及公钥Pu



B成功解密出明文M

Q5: 算法的安全性由谁保证?

我们知道,A,B交互过程中被传输的数据是:pq的乘积,以及Pu。一旦我们能够破解Pr,即意味着算法不安全。那么,我们能通过pq乘积,Pu获取Pr么?答案是时间复杂度,空间复杂度非常高,因为数论上大整数分解属于NP难问题。而且加密函数具有跟哈希函数类似的单向性,即一个输入对应一个输出,很难有两个不同输入对应同一个输出的,这会导致哈希值冲突——说白了:如果你没办法解决大整数分解成两个质素的难问题,即从pq乘积分解出大整数p和q,那么,你就很难获得Pr。

Q6:密钥空间?

可能会问,暴力破解Pr怎么样?如果pq的二进制长度为d,那么,你需要暴力破解

次,换句话说,密钥空间的大小为

,通常d取2048 bits,3078 bits等,如此大的计算量通常小型计算机很难快速地破解,通常需要花费几个月的时间的破解代价。

欢迎关注“Aha实验室”微信公众号

Reference

[1] Rivest R L, Shamir A, Adleman L. A method for obtaining digital signatures and public-key cryptosystems[J]. Communications of the Acm, 1983, 26(2):96-99.

[2] https://en.wikipedia.org/wiki/Euler%27s_theorem
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: