| jybox |
2012-09-03 23:57 |
非对称加密算法-RSA笔记
RSA是一种非对称加密算法,即加密和解密使用不同的密钥(密码) RSA可用于协商密钥、高强度的加密、数字签名
RSA基于(大规模)因数分解的复杂性,即,将两个(极大的)质数相乘很容易,但分解一个数的质因数则非常复杂。 这里我们可以认为,RSA(经过一定条件)挑选两个极大的质数,将他们(经过一定处理)作为私钥,在加密时,将这两个质数与要加密的数据一同进行(很复杂的)不可逆的运算(例如相乘). 具体算法可参考Wiki百科
目前还没有一个简单的方法来分解质因数,但也没有证明这种算法不存在。 目前认为分解质因数是解密RSA的唯一方法,但也没有证明没有其他的方法。 尽管不能证明RSA绝对安全,但是它也算是目前公认的,较为可靠的非对称加密算法之一了
##密钥生成 生成密钥需要挑选两个随机的质数,因此必须有随机的、不可预测的随机数来源,否则被选中的两个质数有可能被预测或推算到。 目前256bit长度的密钥已经可以被比较轻易的暴力破解,随着计算机计算能力的提高,这个标准还会慢慢提高 目前1024bit算是一段时间内比较可靠的密钥长度
##速度 RSA速度目前还是比较慢的,大多时候只是用RSA来协商密钥,然后选用对称加密来加密数据
##中间人攻击 如果有一个中间人,可以截获A和B的通讯。那么它可以拦截A发给B的公钥,将自己的公钥告诉B。然后拦截B发给A的公钥,将自己的密钥告诉A。这样,A和B,其实都只是在和中间人通讯,中间人在偷听的同时,在A和B之间中转消息。
目前主要采用数字证书来防范中间人攻击
##数字签名 如果将私钥公布出去,而将公钥保密。那么只有你可以加密数据,而其他任何人都可以解密数据。 那么我们认为,凡是可以用公钥解密的,都是你用私钥加密的。 这样就起到了认证身份的作用
|
|