举个例子:在一万亿台,每秒可以尝试十亿个密钥的计算机上,要超过二十亿年才能破解出一个AES-128密钥。
128位的都如此了,256的可想而知。
除非密钥长度非常短,否则暴力破解不存在可行性。
B. 关于TLS经验小结(下)
上期我们说到对称加密算法
AES DES
目前使用的几乎都是AES-GCM(DES安全性太差基本处于废弃状态)
那除了这两种还有其他的吗?
答案是有的
ChaCha20
那这种算法与AES-GCM相比有什么特别之处呢?
上图展示的是CHACHA20-Poly1305 与 AES-GCM 两种对称加密算法的加密效率。
从这张图中我们可以看到 ChaCha20的加密速度比AES快了差不多3倍左右。那为什么现在的网站打开都基本上AES-GCM呢?
仔细看图我们可以看到,这是基于ARM架构的移动端CPU的加密速度。CHACHA20虽然在移动端CPU架构上加解密速度非常快,但是在传统>的x86架构上却比AES慢。再加上支持CHACHA20的证书比较难申请的到。所以导致了现在的网站打开都基本上AES-GCM。
不过如果业务主要针对是移动端并且服务端硬件配置比较好且申请到了支持CHACHA20的证书。由于该算法在移动端加解密速度非常快。
所以能够得到较好的用户体验。(虽然从运维的角度来说应该尽量降低服务器的负载,将负载转移到用户端比较好。主要还是看如何取
舍)
首先我们了解下正常的https请求的流程:
从图片中我们可以看到http的延迟时间大概在56ms
而https因为是在http协议上额外增加了tls协议所以延迟时间大概需要168ms(http+tls)
由此可以看出使用https确实会给网站的打开速度产生影响,最直接的就是用户打开网站速度变慢。而且当用户不小心断开之后又要重>新走完这整一套的步骤。那有什么办法可以规避这种办法呢?
session id是一种用户断线重连之后能快速建立连接的一种方法。原理非常简单,当用户与服务器第一次成功完成握手之后,服务器>端生成一个session id 自身保存一份,另外一份发送给客户端。当客户端断线重连之后客户端像服务端发送session id 如果服务端发
现这个id存在。则免去繁琐的tls握手步骤 直接连接。从图中我们也看到采用这样的方式延迟时间降低了50%左右
但是方法不适合分布式架构的业务,原因在于session id 是在每一台服务器中生成的。所以当客户端重连后连接到服务器的另外一台
后端业务服务器就会因为没有id 而重新进行一次完整握手。
session ticket的原理与session id 相同只不过session ticket 不是生成id 而是根据服务器上的ticket key 加密一个数据blob发>送给客户端,然后客户端重连时发送blob给服务器,服务器解密这个blob来判断是否是重连用户从而免去繁琐的tls握手步骤。采取这>样的方式的好处就是我们可以将session key 存储在所有的分布式后端业务服务器上。这样不管用户重连到哪一台服务器都可以通过session key来解密判断是否为重连用户。
那我们有更简单方便的方法吗?
有的,那就是tls1.3!
如上图:
tls1.3是最新的tls协议版本。
废弃了很多年老安全性差的算法并且采用了更优秀的握手机制。
tls1.3 移除了RSA握手机制,采用了(EC)HDE 握手机制(RSA与DH的优缺点在(对称加密模式在 关于TLS经验小结(上) 中有介绍)
移除CBC对称加密模式,采用AEAD模式(对称加密模式在 关于TLS经验小结(中) 中有介绍)
以及其他的特性。 具体详见
其中最瞩目的莫过于新的握手协商机制
TLS1.3
TLS1.2
如上图tls1.3协议将之前tls1.2需要的步骤整合在一起,然后集中传输。减少了握手次数,从而大幅减少了延迟时间。加快了网站访问
速度,使我们再也不用去纠结不上https不安全,上了https访问速度慢的历史性问题。
从之前讲的算法到握手机制。使大家对整个tls协议有了一个大概的认识。从生产环境角度来说,采用ECDH
+ECDSA+AES-GCM的 ECC证书是目前在安全性和性能上都相对平衡的一种证书种类。本站的证书就是采用了ECC证书。
关于ECC证书可以查看
在此感谢峰哥的一次知识分享让我了解到了相关的知识(文章中的一些示例图也源于峰哥的ppt)
想具体了解大佬可以访问以下博客更深入的了解
TLS 1.3 如何用性能为 HTTPS 正名
图解SSL/TLS协议
分组密码工作模式
完
C. AES加密可以破解的吗
没有破解不了的密码,但要看值不值得花费精力去做,AES加密算法目前来说比较安全,真的要去解密的话至少要10几年
D. 有关AesGCM算法的一些总结
AesGCM是微信底层通信协议中使用的一种最为重要的加解密算法,在尝试使用OpenSSL库实现这套算法的过程中,遇到了以下几个值得注意的点:
在ECB/CCB模式下,补位信息是算法实现必须考虑的一个维度。但在GCM模式下,补位信息是完全不需要考虑的,明文与密文有着相同的长度。
在普通的Aes加解密算法中,需要从key/iv/padding/mode这四个维度来考虑算法的实现。而AesGcm算法中却需要从下面这几个维度来实现算法:
微信底层通信协议中,服务端下发的密文数据总是比明文数据长了16个字节,导致这种现象的主要原因是微信实现时将加密使用的tag信息拼接到了密文数据中,客户端使用JAVA接口解密时,在接口的内部能够自动的截取tag信息后再解密出明文数据。我并不能确认这种方式是BouncyCastle的固有实现还是微信自己的独有实现。关于拼接这块的逻辑,可以参见 这里 。
当使用OpenSSL实现解密微信下发的密文数据时,如果不知道拼接tag这层逻辑时,是不可能成功解密出明文数据的。
E. SSL证书算法优缺点
第一种算法就是AES-GCM,AES-GCM是目前很常用的一种分组加密算法,但是这种算法会产生一个缺点:那就是计算量会很大,这一缺点会导致性能和电量开销比较大。因此为了解决这个问题,Intel 推出了名为 AES NI的 x86 指令拓展集,这个拓展集可以从硬件上提供对 AES 的支持,而对于支持AES NI指令的设备来说,使用AES-GCM毫无无疑是最好的选择。
而移动端所需要的ssl证书也是不一样的,针对移动端,谷歌开发的ChaCha20-Poly1305是最好的选择,这也就是我们要讲的第二种算法,Chacha20-Poly1305 是由 Google 专门针对移动端 CPU 优化而采用的一种新式的流式加密算法,它的性能相比普通算法要提高3倍,在 CPU 为精简指令集的 ARM 平台上尤为显着,其中在ARM v8前效果较明显。因此对于移动端的ssl证书,通过使用这种算法,可以大大减少加密解密所产生的数据量,进而可以改善用户体验,减少等待的时间,很好地节省电池寿命等,也由于其算法精简、安全性强、兼容性强等特点,目前 Google致力于全面将其在移动端推广。
F. AES安全性能比TKIP好吗
一、安全性能不同
TKIP本质上是一个WEP补丁,解决了攻击者通过获得少量的路由器流量解析出路由器密钥的问题。TKIP还提供了一个较为完善的安全升级,但是对于保护网络不受黑客攻击上不够全面。
AES是一个完全独立的加密算法,远远优于任何TKIP提供的算法,该算法有128位,192位或256位的分组密码。所以AES安全性能比TKIP好。
二、速度不同
TKIP是一种过时的加密方法,而且除了安全问题,它还会减缓系统运行速度,速度会减慢至54Mbps。
支持WPA2-AES加密的802.11ac理想条件下最大速度为3.46Gbps。所以AES的运行速度相较于TKIP要快。
三、密钥长度不同
TKIP中密码使用的密钥长度为128位,这就解决了WEP密码使用的密钥长度过短的问题。
AES 是一个迭代的、对称密钥分组的密码,它可以使用128、192 和 256 位密钥,并且用 128 位(16字节)分组加密和解密数据。
G. SSL 证书的算法有哪些
根据密钥类型不同将现代密码技术分为两类:对称加密算法(秘密钥匙加密)和非对称加密算法(公开密钥加密)。
对称钥匙加密系统是加密和解密均采用同一把秘密钥匙,而且通信双方都必须获得这把钥匙,并保持钥匙的秘密。非对称密钥加密系统采用的加密钥匙(公钥)和解密钥匙(私钥)是不同的。
对称加密算法用来对敏感数据等信息进行加密,常用的算法包括:
DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。
3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。
AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高;
常见的非对称加密算法如下:
RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的;
DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准);
ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学。
H. AES加密算法原理
一般的加密通常都是块加密,如果要加密超过块大小的数据,就需要涉及填充和链加密模式,本文对对称加密和分组加密中的几种种模式进行一一分析(ECB、CBC、CFB、OFB,CTR)
这种模式是将整个明文分成若干段相同的小段,然后对每一小段进行加密。
优点:
这种模式是先将明文切分成若干小段,然后每一小段与初始块或者上一段的密文段进行异或运算后,再与密钥进行加密。
优点:
计算器模式不常见,在CTR模式中, 有一个自增的算子,这个算子用密钥加密之后的输出和明文异或的结果得到密文,相当于一次一密。这种加密方式简单快速,安全可靠,而且可以并行加密,但是 在计算器不能维持很长的情况下,密钥只能使用一次 。CTR的示意图如下所示:
优点:
优点:
优点:
I. aes-ecb安全吗
aes-ecb安全
AES算法作为DES算法和MD5算法的替代产品,10轮循环到目前为止还没有被破解。
J. WPA2 AES加密方式的安全性如何
WPA2与WPA最大的不同在于WPA2支持AES加密算法,AES能够为信息提供128位加密能力。目前很多服务商都在自己的设备中加入了WPA2支持,而且微软也在Windows XP系统的补丁SP2中集成了对WPA2的支持。然而AES加密算法更像是一柄双刃剑,应用了AES的WPA2失去了WPA的一项重要优点,那就是加密算法的变更使得与旧有设备的兼容变得极其困难。目前大部分设备的处理能力都无法进行128位的加密和解密操作,所以必须进行升级才能支持WPA2标准。 就是说,BT3能破解WEP加密方式,一个原因就是密码比较简单,数据流加密容易用枚举法得到密码 而WPA2 AES加密方式采用128位的加密和解密操作,用枚举法不现实,也无法通过算法直接解析密码,目前唯一的可能办法就是用“密码字典”,这是一种另类的枚举法。 所以“假如你设定的密码在字典里面找不到”,这的确意味着你的安全性有保障