从数学到密码学(三)

2023年 2月 15日23:12:22 发表评论

密码学模型与密码算法

前已得知,用密钥处理明文的过程称为加密,加密过程在计算机上的实现称为加密算法。同理,解密过程在计算机上的实现称为解密算法,加/解密算法和后面将提到的签名/验证等算法统称为密码算法。

对于保护明文的密钥自然需要通信双方加以保密,不能泄露。剩下的问题是:加/解密算法需不需要保密?

乍一想,你可能会说,算法如果不保密,岂不是能够被不怀好意的第三方把明文还原出来?

错!请注意,我们还有密钥。回顾前面讲到的异或的例子,假设E截获了A发给B的密文,虽然E知道加/解密算法,但是E不知道A、B之间共享的密钥,因而E仍无法得到原始的明文。

所以只要保证共享密钥(此处是对称密钥)的安全性,就保证了明文的安全性。稍后我们将看到,对于公钥密码体制,这个原则仍然是成立的。

事实上,密码学上的有一个Kerckhoffs原则,它的大意是:公开密码系统的任何细节(即公开加/解密算法),只要密钥未泄漏,该系统也应该是安全的。

换句话说,密钥决定了密码体制的安全性。
 
我们再从另一个角度去思考:密码算法到底是公开好还是不公开好?我的理解:总体讲,公开比不公开要好。

两个角度解释:一、算法公开,将经受全世界专家的检验(通常一有漏洞,就会被公开),剔除那些有漏洞的密码算法,剩下的都是安全性较高的算法,可以放心使用。二、不公开,仍然有可能被泄露。RC4算法就是一个典型的例子,感兴趣的同学可以google一下。

对于搞研究的人来说,还有一个Publish or perish的问题,你有了成果不拿出来公布,就会灭亡(没有拿得出手的东西,自然得不到研究经费,学术生涯必然危险)。关于这一点,密码学中大名鼎鼎的RSA算法也给我们上了生动的一课--你不发表出来,自然有人发表,感兴趣的同学,请再google之。

此外,公开算法后,理论上任何人都可以依据算法的标准进行代码实现,有利于互联互通。提示:你用别人给你的应用程序进行通信放心,还是用自己写的应用程序进行通信放心?

最后一点,公开算法符合开放的世界潮流。想想开放源码运动的蓬勃发展。我们平常见到的各种加/解密算法、网络安全协议都是算法公开的,这就是最好的见证。

基于以上理由,现在社会中大多数民用/商用密码算法都使用公开的算法。 但还是有例外,用于政府或军事机密的密码算法通常就是保密的。为啥要保密?有一点可以解释,如果公安部使用了公开的加/解密算法,假设有人发现该算法有个漏洞,却不公开指出,则此人就可以利用该漏洞干些自己的私事(是否会造成损失取决于漏洞的严重性),而公安部还蒙在鼓里。基于此,干脆就不公开算法算了,同时辅以管理上的严格措施,使密码体制保持较高的安全性。

在继续讨论密码学内容前,我们再描述这方面研究的一个基本共识。

Dolev-Yao模型

该模型认为:通信双方发出的数据包可被攻击者监听(截获)、阻止、篡改。攻击者甚至可以控制整个通信网络,唯一不被攻击者控制的是通信双方(及其控制的计算机)。

你可能会问:攻击者为什么不能控制通信双方?因为这是终端安全的范畴。比如说计算机被植入木马了,等等。均不属于密码学或网络安全的研究范围内。

模型还假定,攻击者熟知通信双方间进行的各种密码算法和协议。具有密码分析的知识和能力,能够进行各种攻击(后面会讲到),例如重放攻击。

总之,一句话,攻击者除了不知道双方的密钥之外,其他的什么能力都具备。

这什么要搞得这么可怕?难道真的有这么厉害的攻击者吗?首先我们注意到的是其中的某些条件,攻击者在现实生活中已经具备,比如监听对方的通信(现在到处都是无线上网,很容易通过软件实现监听)。另外这里要解释下,这是理论上的最恶劣假设。我们可以认为,如果一个密码算法/协议在这种模型下(证明)是安全的,那它在现实生活中也是比较安全的。最后问一句:有没看过电影《1984》?

密码学中的行话:对于正常通信的双方,一般分别用A(Alice)、B(Bob)表示,对于怀有恶意的攻击者,通常用E(Eve)来表示

原文链接:https://www.cnblogs.com/efzju/archive/2011/07/26/2116734.html

  • 版权声明:内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 1936370309@qq.com 举报,一经查实,本站将立刻删除。
  • 转载请注明:从数学到密码学(三) 紫林博客

发表评论

您必须才能发表评论!