RSA
RSA加密算法是现在广泛使用的现代加密的第一代加密算法,它是基于大素数分解难的数学问题来保证加密算法的安全性。设计一个加密算法需要满足一个条件,就是能够找到一个满足trapdoor的函数,也就是在计算上保证在一个方向是计算容易而在另一个方向上计算困难的特性,RSA刚好满足这一特性。随着硬件的发展,为了继续保证RSA的安全性,RSA现在的密钥长度要求越来越大了,密钥长度的变大虽然能够保证安全性,但是对于之前容易的乘法运算因为数据的变大而变的计算不容易和需要消耗更多的能量,而现在发展的潮流是移动端,移动端本身是一个低能耗的设备因此使用越来越大RSA密钥来保证安全性就可能不会是一个好的办法了。
ECC
Elliptic Curve Cryptography是ECC的全称表示基于椭圆曲线的加密算法,既然是加密算法肯定需要有一个trapdoor函数,ECC是基于椭圆曲线的,可以由椭圆曲线的特性得到,一个点A做dot操作n次后得到一个点Z,我们不能由点A和点Z的已知来得到n次操作经过的所有点,这就满足了在一个方向上dot操作容易而找到参与操作的点是难的特性。ECC的私钥是priv,在g做priv次的乘法运算后得到公钥pub。我们知道了pub而不能容易的知道私钥priv这是基于椭圆曲线上计算离散对数是困难的数学问题。ECC的key=256位的密钥就能跟RSA的key=2048位密钥保证相同的安全性,ECC相对于RSA既能保证安全性又能节约计算资源。
现在广泛使用的还是RSA而ECC没有广泛的发展起来原因有
ECC找到合适的椭圆曲线是一个问题,NIST(美国国家安全技术和标准)提供的Dual Elliptic Curve Deterministic Random Bit Generator