对称加密与非对称加密

对称加密(Symmetric Cryptography)

  对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key)。对称加密有很多种算法,由于它效率很高,被广泛使用在很多加密协议的核心当中。


对称性算法的安全性?
  加密算法可以很复杂,但加密算法再复杂,也存在被窃听的可能,当我们的密文被监听,它可以被穷举,不断地试各种的算法,还可以统计数字出现的频率,只要截取到足够多的密文,一次又一次的尝试,是可以把秘钥给试出来,所以秘钥是不保险的。
  那我们可不可以用一个很大的秘钥,比如1MB的秘钥,黑客可能永远也无法破解,但这样加密、解密都需要很长的时间,秘钥的大小既要照顾到安全性,也要照顾到效率。
  既然秘钥有可能被破解,那能不能每次加密都用不同的秘钥,这样秘钥的分发又成了问题,现在很流行的一种非对称加密解决了秘钥的分发问题。

非对称加密(Asymmetric Cryptography)

  非对称加密为数据的加密与解密提供了一个非常安全的方法,它使用了一对密钥,公钥(public key)和私钥(private key)。私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。比如,你向银行请求公钥,银行将公钥发给你,你使用公钥对消息加密,那么只有私钥的持有人--银行才能对你的消息解密。与对称加密不同的是,银行不需要将私钥通过网络发送出去,因此安全性大大提高。、
  目前最常用的非对称加密算法是RSA算法,是Rivest, Shamir, 和Adleman于1978年发明,他们那时都是在MIT。


RSA算法原理
1、找到两个质数p,q
2、做乘法,t = p * q
3、欧拉函数φ(t) = (p-1) * (q-1)
4、取一个数字公钥m,是整数,满足1 5、使(m*n) / φ(t)的余数为1,得到私钥n

加密过程:找到一个数字v,然后vm/t,求得余数c。
解密过程:cn/t,得余数,该值一定是v。

RSA算法的安全性?
  银行分发给个人公钥m以及t,加密可以得到c,解密需要t,c,秘钥n。
假如传输过程密文c、公钥m,t被截获了,想要解密,需要知道秘钥n,根据第5步,也就是需要知道φ(t),也就是需要知道p,q。
  t = p * q,也就是需要由t分解成p,q,这就是质因数分解问题。
  也就是说如果一个窃听者他具有一种能力,可以把数字t进行质因数分解成p,q,那他就可以求出欧拉函数φ(t),就可以由公钥m求出私钥n,就可以解密。比如21=3*7,这很容易分解,但是当一个数字很大时,RSA常用的是1024位的二进制数,目前人类的技术是做不到这么大数的质因数分解,基于这个原因,认为RSA算法保密性很好。

你可能感兴趣的:(对称加密与非对称加密)