爱丽丝要设计出一把公开钥匙,之所以公开,是为了让每个人都能复制这把钥匙,用来给自己发信息加密用。但这把钥匙,又一定不能解开加密过的信息。
所以这一步,需要一种不可逆的函数运算,只能加密不能解密,这个就可以用我们上节课说的模运算来实现。
爱丽丝本人还得有一把私人钥匙,它是不公开的。而这把钥匙,可以解开用她的公开钥匙加密过的信息。
具体的细节比较难懂,需要公式的辅助,我来说说关键步骤:
爱丽丝展示出来的公开钥匙,是通过两个比较大的素数p和q相乘得到的一个更大的数N得到的。p和q具体是多少,爱丽丝只要自己知道就行,千万不要告诉别人。而乘积N是公开的,谁都可以知道。
凡是要给爱丽丝发消息的人,都需要用N来加密。加密的过程依然用的是模运算,而且模就是N。整个数学过程会保证这个模运算不可逆,所以伊芙就算知道N也没用。
那爱丽丝是怎么解密的呢?她解密时就不需要N了,而是要用到p和q的具体值,而这两个值别人都不知道,只有爱丽丝自己知道。具体来说,爱丽丝私下做的另外一个模运算中的模,不是刚才我们说的N,而是另外一个值(p-1)×(q-1)。你看,在这个公式中就必须要知道p和q到底是多少才行。
至于为什么一定要是(p-1)×(q-1),你不用纠结,数学原理保证这样操作能算出一把新钥匙,这把新的钥匙就是爱丽丝自己的私钥。用这把私钥,一定可以解出原文。
你说,这样做就能保证安全吗?伊芙已经知道了一个大数N,她难道不能利用精巧的算法,找出N到底是由哪两个大的质数相乘得到的吗?
不能的,这种不能是由数学保证的。N越大,找到p和q两个因数的时间就增加得越夸张。现在银行使用的RSA加密,都要求N是一个超过300位的大数。想分解这样一个数,大约需要把全球计算机的算力集中起来算上几亿年才行。
