欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

对称加密和非对称加密

程序员文章站 2024-03-16 20:32:58
...

对称加密

对称**是双方使用相同的** 。
对称加密的要求
  (1)需要强大的加密算法。算法至少应该满足:即使分析人员知道了算法并能访问一些或者更多的密文,也不能译出密文或得出密匙。通常,这个要求以更强硬的形式表达出来,那就是:即使分析人员拥有一些密文和生成密文的明文,也不能译出密文或者发现密匙。即,加密算法应足以抵抗已知明文类型的破译。
  (2)发送方和接收方必须用安全的方式来获得保密密匙的副本,必须保证密匙的安全。如果有人发现了密匙,并知道了算法,则使用此密匙的所有通信便都是可读取的。
从数学角度理解
  以一个具体例子来说明有助于真正理解对称加密这概念。假设A需要把一份明文为M的资料发给B,但是因为怕资料在传输的中途被窃听或者篡改,A用了对称加密法将M经过一个加密函数Fk处理后生成M'加密文,而B接受到加密文后通过事先商定好的Fk再次处理M'便可以还原成明文M,从而达到安全传输信息的目的。

  A处: M' = Fk(M)
  B处: M = Fk(M')

对于普通的对称密码学,加密运算与解密运算使用同样的**。通常,使用的对称加密算法比较简便高效,**简短,破译极其困难,由于系统的保密性主要取决于**的安全性,所以,在公开的计算机网络上安全地传送和保管**是一个严峻的问题。正是由于对称密码学中双方都使用相同的**,因此无法实现数据签名和不可否认性等功能。

非对称加密

非对称加密为数据的加密与解密提供了一个非常安全的方法,它使用了一对**,公钥(public key)和私钥(private key)。私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。非对称加密使用这对**中的一个进行加密,而解密则需要另一个**。
比如,你向银行请求公钥,银行将公钥发给你,你使用公钥对消息加密,那么只有私钥的持有人--银行才能对你的消息解密。与对称加密不同的是,银行不需要将私钥通过网络发送出去,因此安全性大大提高。
签名证书:
签名证书的用途:加入有A用户向B用户发送了信息“A love you”,B接收到之后怎么确定就是A发送的呢(因为中间人攻击中,假如C截获了A发送的信息后,改成“C love you”,B是无法确定这两个信息的发送者,因他她们都同样用B的工要加密),于是产生了签名证书技术。
签名证书是由CA用自己的私钥对用户的信息进行加密,并把发给用户的,用户可以在发送信息的过程中附加上自己的签名证书,让接受者验证信息的来源。当接受者接受到发送者的签名证书后即可用ca的公钥解密验证发送者的身份信息。

信息传输:
  过程:

 (1) Alice需要在银行的网站做一笔交易,她的浏览器首先生成了一个随机数作为对称**。
(2) Alice的浏览器向银行的网站请求公钥。
(3) 银行将公钥发送给Alice。
(4) Alice的浏览器使用银行的公钥将自己的对称**加密。
(5) Alice的浏览器将加密后的对称**发送给银行。
(6) 银行使用私钥解密得到Alice浏览器的对称**。
(7) Alice与银行可以使用对称**来对沟通的内容进行加密与解密了。

采用数字签名,能完成这些功能:
(1)确认信息是由签名者发送的;
(2)确认信息自签名后到收到为止,未被修改过;
(3)签名者无法否认信息是由自己发送的。

总结

(1) 对称加密加密与解密使用的是同样的**,所以速度快,但由于需要将**在网络传输,所以安全性不高。
(2) 非对称加密使用了一对**,公钥与私钥,所以安全性高,但加密与解密速度慢。
(3) 解决的办法是将对称加密的**使用非对称加密的公钥进行加密,然后发送出去,接收方使用私钥进行解密得到对称加密的**,然后双方可以使用对称加密来进行沟通。