对称加密和非对称加密

原创 2015年11月19日 16:07:29

需于沙,小有言,终吉。 —— 需九二

对称加密和非对称加密属于密码学的范畴。说到密码学可能会想起二战时期的密码破译,我个人会想起伪装者中军统截获中统的几组电波以及假的密码本。事实上,自古希腊时代就已经有将文字写成密文的事例,叫做斯巴达密码棒,古罗马也有凯撒密码。

密码学,这里指的是密码编码学(cryptology),而不是密码使用学(cryptography)。

这里写图片描述
密码使用学:
为了达到隐藏消息含义目的而使用的密文(密文是指加密后的数据,相应的,明文是指没有加密的原始数据)书写的科学。
密码分析学:
本身是一种科学,在某些情况下也指一种破译密码体制的技巧。这并不是只有情报部门才会做的事,事实上密码分析在现代密码体制中发挥着重要作用,如果没有人尝试破译我们的加密方法,我们永远也不知道这个系统是否安全。

密码协议是针对密码学算法的应用,可以看成是实现安全Internet通信的基础。密码协议的典型应用就是传输层安全(TLS)方案。

我们今天要讲的对称加密和非对称加密,就属于密码使用学的范畴。

对称加密

双方共享一个密钥,使用相同的加密和解密方法,在1976年前都是使用的对称加密。
对称加密方案也称为对称密钥(Symmetric-key)、秘密密钥(secret-key)、单密钥(single-key)算法。

如果a和b通过不安全的信道进行通信:这个信道可以是Internet、无线局域网或者别的通信媒介,如果C此时是同通过入侵Internet路由器或者监听wifi通信的无线电信号,就可能窃听a和b之间的通信。
这时一种做法,就是通过一个安全的信道,传递密钥过去。举个例子,可以通过在无线LAN中wifi保护访问(wi-fi protected access ,WPA)加密所使用的预共享密钥。
对称加密的加密函数和解密函数一般非常相似,在DES中,加密函数和解密函数基本相同。
伪装者中,明镜和中共地下党通过共同的银行保险箱钥匙,打开同一个保险箱来传递重要情报信息。

简单对称加密

即采用替换密码,将一个字母用另一个字母替换,假设我们的替换表是随机的,窃听者就不容易猜出对应的输出。

比如字母的替换,如果用蛮力攻击的话,第一个字母可以从26个字母中随机选1个,第二个有25种选择,总共存在的不同的替换数为:

26*25*…3*2*1 = 26!

这看起来是非常安全的,因为用高端计算机搜索这个结果可能需要几十年的时间,但是,我们可以结合字母频率的分析,采用更强大的攻击算法。

字母频率分析

每个明文符号总是映射相同的密文符号,这就是说明文中的统计属性在密文中得到了很好的保留。
在实际的字母频率分析中,我们可以:
(1)确定每个密文字母的频率,最常用的字母最容易被认出来,比如e是英文中出现频率最高的字母,大概13%,频率第二高的字母是t :9%。
(2)上面提到的方法可以用来推广查看连续两个、三个或四个等密文的字母,比如u几乎总是跟在q后面
(3)利用单词分隔符,找到高频的短单词,比如the,and等,一旦可以确定短单词,就可以确定对应的字母映射。

非对称加密

1976年Martin Hellman 和Ralph Merkle提出了完全不同的密码类型,与对称加密相同的是,用户也拥有一个密钥,但是它同时还拥有一个公钥。
与诸如AES或DES的对称算法完全不同,绝大多数非对称加密算法(公钥算法)都基于数论函数,这一点与对称密码大不相同——对称加密的目标是让输入和输出之间不存在紧凑的数学描述关系。

具有实用性的公钥算法:

  • 整数分解算法 (RSA)
  • 离散对数方案(DSA Elgamal)
  • 椭圆曲线方案 (ECDSA)

同样我们回到a向b传递信息这一点,b公开了一个大家都知道的密钥,就如同一个信箱,每个人都可以向该信箱投信,然而b同时还有一个用于解密的私密的密钥,就如同是这个信箱的钥匙,也就是说只有b才能取信。
这样,我们就可以公钥算法来加密一个对称密钥,比如AES密钥,一旦b解密了该对称密钥,双方就可以通过对称密码来加密和解密信息。

tablehead 对称加密 非对称加密
常用算法 DES, Blowfish, TEA, Base64 RSA,DSA,ElGamal,ECDSA
特点 简单/速度快 运算复杂、速度慢
使用场合 需要大量加密的场合,比如游戏的资源文件 金融、军事等重大机密
缺点 依靠安全的信道,密钥数目会非常多,不具有不可否认性 计算非常大,速度可能不到对称加密的1000分之一

解释一下:
对称加密的缺点的具体内容为:
1. 必须使用安全的信道建立密钥;
2. 在拥有n个用户的网络中,如果每对用户之间都需要一个单独的密钥对,那么整个网络需要的密钥对数为n(n1)2并且每个密钥对都必须通过安全信道进行传输;
3. 对欺骗机制没有预防,比如在电商领域,a下订单购买了b的商品,随后反悔了,由于b拥有和a相同的能力它确实可以伪造,所以不具有不可否认性

对应的非对称加密

  • 允许在不安全的信道上建立密钥,协议有若干种,比如Diffie-Hellman密钥交换(DHKE)协议,或RSA密钥传输协议。
  • 具有不可否认性
  • 在类似银行智能卡或手机等的应用中,可使用质询-响应协议与数字签名相结合的方法

DES:Data Encryption Standard DES 数据加密标准
最主流的分组密码,尽管它的密钥空间太小,但是使用DES连续三次对数据加密(3DES)——可以得到非常安全的密码。

AES: Advanced Encryption Standard 高级加密标准
拥有3种不同密钥长度抵抗蛮力攻击,分别为128位、192位、256位。目前还没有出现成功破译AES分析攻击。


参考文献

Cryptography for Developers 《程序员密码学》
http://book.51cto.com/art/200903/112749.htm
深入浅出密码学——常用加密技术原理与应用

版权声明:本文为博主原创文章,未经博主允许不得转载。

最全加密算法之对称加密和非对称加密

常见加密算法 : DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合;  3DES(Triple DES):是基于DES,对一块数据用三个不同...
  • shenggaofei
  • shenggaofei
  • 2016年08月27日 10:27
  • 20612

对称加密和非对称加密介绍和区别

转自:http://blog.sina.com.cn/s/blog_56d8ea900100bzpr.html 什么是对称加密技术?   对称加密采用了对称密码编码技术,它的特...
  • csCrazybing
  • csCrazybing
  • 2015年07月28日 20:48
  • 6365

RSA ~ 非对称加密算法

RSA:      非对称加密,加密与解密使用的密钥不是同一密钥,对中一个对外公开,称为公钥,另一个只有所有者知道,称为私钥。      用公钥加密的信息只有私钥才能解开,反之,用私钥加密...
  • zhengchao1991
  • zhengchao1991
  • 2016年12月06日 10:10
  • 4181

Java 加密 AES 对称加密算法

【AES】 一种对称加密算法,DES的取代者。 加密相关文章见: 【代码】 代码比较多,有一部分非本文章内容代码,具体自己看吧。 package com.uikoo9.util.encrypt; ...
  • uikoo9
  • uikoo9
  • 2014年06月01日 20:38
  • 73965

【下】安全HTTPS-全面详解对称加密,非对称加密,数字签名,数字证书和HTTPS

1.  HTTPS 1.1. 什么是HTTPS HTTPS(HypertextTransfer Protocol Secure)即安全的HTTP。HTTPS的安全基础是安全套接层(Secure S...
  • tenfyguo
  • tenfyguo
  • 2014年11月09日 23:06
  • 11793

非对称加密,我终于理解了!

北京的Bob发了一个快递到广州的Alice,途中经过了上海,上海快递中心出现了一个黑客H,他偷偷打开了Bob给Alice的快递,然后偷偷把里边的衣服剪烂,再按照原样包装好发往广州,可以看到对于这样简单...
  • xiaoy20618
  • xiaoy20618
  • 2015年07月27日 13:37
  • 10969

Android安全加密:非对称加密

介绍与对称加密算法不同,非对称加密算法需要两个密钥:公钥(publickey)和私钥(privatekey)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密;如果用私钥对数据进行...
  • axi295309066
  • axi295309066
  • 2016年09月10日 13:48
  • 4312

【安全加密技术】非对称加密

假如现在 你向支付宝 转账,即一些数据信息,为了保证信息传送的保密性、真实性、完整性和不可否认性,需要对传送的信息进行数字加密和签名,其传送过程为: 1.首先你要确认是否是支付宝的数字证书,如果确认为...
  • sk719887916
  • sk719887916
  • 2015年07月08日 23:35
  • 2929

java RSA非对称加密详解

简介RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。1987年首次公布,当时...
  • a394268045
  • a394268045
  • 2016年08月17日 17:26
  • 4968

SSL TLS 学习之一:对称加密和非对称加密

什么是对称加密技术? 对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥,即加密密钥也可以用作解密密钥,这种方法在密码学中叫做对称加密算法,对称加密算法使用起来简单快捷,密钥较短,...
  • Junkie0901
  • Junkie0901
  • 2015年03月20日 15:10
  • 1039
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:对称加密和非对称加密
举报原因:
原因补充:

(最多只允许输入30个字)