精英盒子 -> 程序设计 -> 非对称加密算法-RSA笔记 [打印本页]

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之间中转消息。


目前主要采用数字证书来防范中间人攻击


##数字签名
如果将私钥公布出去,而将公钥保密。那么只有你可以加密数据,而其他任何人都可以解密数据。
那么我们认为,凡是可以用公钥解密的,都是你用私钥加密的。
这样就起到了认证身份的作用




Powered by phpwind v8.7 Code ©2003-2011 phpwind
Time 0.049464 second(s),query:4 Gzip enabled