博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
非对称加密算法的本质
阅读量:5792 次
发布时间:2019-06-18

本文共 1428 字,大约阅读时间需要 4 分钟。

非对称加密算法的本质就是利用了一些数学难题,比如rsa利用了大数分解的难题,dh利用了离散对数的难题,而ecc利用了椭圆曲线域上的理论,这些被成为难题,仅仅是难而已,理论上是有解并且可解的,比如大数分解问题,我估计c语言或java语言第一学期的课程的作业中肯定会有一道题,该题就是求出一个数的所有因数,当时最直接的方法就是一个一个试,对于大数来讲,一个一个试会使你或者计算机发疯,如果你有足够的时间等待,那么最终是可以得到答案的...

     密码学从本质上说并不是很严密,加密数据的安全性总是相对的而不是也不可能是绝对的,破解加密数据从理论上说绝不是不可能的,加密数据之所以安全,靠的不是算法的无懈可击,考得是人类包括人类的机器的能力的相对弱小,如果人类的平均寿命为10000岁,那么现如今的加密算法都将是不安全,如果一个人平均要用10年以上的时间才能对数据进行解密,那么这个加密算法以及密钥将被认为是很安全,理论上一个人可以用毕生精力去揭秘一段密文,如果不成则让儿子孙子继续,但是这样做的现实意义并不大,另一方面,人或者机器完全有可能一次就能猜中密钥是什么,但是这种事在现实中的概率却很小,所以在确定算法和密钥的时候,尽可能让破解时间变长,从而让破解本身变得没有意义,同时在确定密钥的时候,尽可能让密钥位数很大,从而让猜中密钥或者穷举的概率和时间变得很小和很长。这就是密码学的本质,千万不要认为加密的数据一定是绝对安全的,密码学更多的是社会学和心理学的意义,而不是纯粹计算机和数学的意义。人们被枪击的概率很小,因此几乎所有的衣饰都不防弹,地震的几率很小,所以人们投资房地产,并且认为房子里很舒适,如果追求安全的话,我认为住草房在地震时起码不会被埋或者被砸。

     如果说密码学有数学上的意义,那么它利用的就是数学上的“难解”理论,这个在计算复杂性中有涉及,所有的能在问题大小规模的多项式时间内解决的问题,我们认为是易解的,称作P问题,所以能在问题规模多项式时间内被验证的问题,我们称为是NP问题,注意是被验证,也就是说首先你要给一个你认为的答案,算法本身仅仅告诉你你的答案是否正确,具体怎样能给出一个答案,算法是不管的,密码学利用的就是这个,比如一个很大的素数,求出它的因数,如果你随意给一个数,只需要除一下(不要小看这个除法,一般计算机并不是直接支持大数运算的,一个数超过比如一般的32位或者64位就要编程要计算了)就知道它是否是一个因数,但是穷举本身会使得计算者发疯,如果用了几十年或者几百年破解了一个密文,有意义吗?什么密文如此重要呢,一战前的协约国们有些在二战后都不存在了,或者说你在明天破解了纳粹进攻苏联的密文,但是它也只能是历史文献了,而你也不会是什么向图灵那样的功臣了,充其量是个数学家或者历史学者。
     计算复杂性本身有很多内容,密码学仅仅利用了它的一些结论罢了。NP问题到底能否最终归结为P问题,这本身就可能研究一辈子的了,研究它的人和搞密码学的人并不是一类人,搞密码学的人和编程的人也不是一类人,懂c语言的人不一定能看懂openssl,看懂了openssl的也不一顶知道des置换的含义,精通加密解密api的家伙们能被成为程序员或者工程师,他们可能不知道也没有必要知道rsa或者ecc的理论,而我,什么也不懂,什么也不成...

 本文转自 dog250 51CTO博客,原文链接:http://blog.51cto.com/dog250/1271922

转载地址:http://kbzfx.baihongyu.com/

你可能感兴趣的文章
网页图片缩放(js)
查看>>
在有限的时间内,专注于一件事,重复直至成为优秀的程序员(转)
查看>>
ECMAScript 基础 [完]
查看>>
EF 下如何更新数据表数据
查看>>
epoll学习
查看>>
myeclipse中的HTML页面在浏览器中显示为乱码
查看>>
python for 循环迭代语句
查看>>
虚拟机网络不通
查看>>
spring源码-自定义标签-4
查看>>
软件测试职业规划
查看>>
如何用Fiddler对Android应用进行抓包
查看>>
iOS为所需要的视图添加模糊效果--UIVisualEffectView
查看>>
Kibana登录认证设置
查看>>
volley 应用 GET POST请求 图片异步加载
查看>>
BZOJ-4325: NOIP2015 斗地主 (搜索神题)
查看>>
HDU-1222 Wolf and Rabbit (欧几里得定理)
查看>>
Camera Calibration 相机标定:原理简介(五)
查看>>
ClassCastException:ColorDrawable cannot be cast to RoundRectDrawableWithShadow
查看>>
ehcache实例
查看>>
Linux多线程与同步
查看>>