SSL证书安全散列算法编年史
- 格式:docx
- 大小:95.04 KB
- 文档页数:5
sha算法标准-回复SHA算法标准是指安全哈希算法(Secure Hash Algorithm)的规范和标准化。
SHA算法是一类密码散列函数,用于在计算机和密码学中,将任意长度的输入数据转换为固定长度的哈希值。
它是由美国国家安全局(NSA)和国家标准技术研究所(NIST)联合开发,于1995年首次发布。
SHA算法标准的目标是确保数据的完整性和安全性,广泛应用于数据完整性校验、数字签名、密码学中等领域。
SHA算法标准有多个版本,常见的有SHA-0、SHA-1、SHA-2和SHA-3。
其中,SHA-1是最广泛应用的版本,被广泛用于数字证书、SSL/TLS协议等领域。
然而,由于SHA-1存在安全性问题,已经被建议不再使用。
SHA-2是SHA家族中较新的版本,包括SHA-224、SHA-256、SHA-384、SHA-512等多个变种,使用更长的哈希值和更强的安全性。
至于SHA-3,它在2015年发布,是一个全新的设计,相对于SHA-2来说,更加高效和安全。
接下来,我们将一步一步回答有关SHA算法标准的问题:问题1:SHA算法的工作原理是什么?SHA算法采用了迭代的方式生成哈希值。
它首先将原始数据进行填充和分块操作,每个分块都通过一系列的数据处理步骤生成一个中间哈希值,并通过迭代地将这些哈希值串接起来,最终生成最终的哈希值。
整个过程包括了位操作、逻辑函数、加法运算、循环左移等操作,确保了哈希的强度和安全性。
问题2:SHA算法标准的主要特点是什么?SHA算法标准的主要特点包括:1. 安全性:SHA算法标准通过采用更长的哈希值和更复杂的计算流程,提供了较强的安全性,抵抗了多种密码分析攻击。
2. 独立性:SHA算法标准的哈希值与原始数据之间呈无规律的关联,即使原始数据的微小变化也会导致哈希值的显著变化,确保了数据的独立性。
3. 可靠性:SHA算法标准经过广泛的研究和验证,已经成为公认的密码散列函数,被广泛应用于各个领域。
安全套接层SSL协议简介SSL(Secure Sockets Layer)协议最先是由著名的Netscape公司开发的,现在被广泛用于Internet上的身份认证与Web服务器和用户端浏览器之间的数据安全通信。
制定SSL协议的宗旨是为通信双方提供安全可靠的通信协议服务,在通信双方间建立一个传输层安全通道。
SSL使用对称加密来保证通信保密性,使用消息认证码(MAC)来保证数据完整性。
SSL主要使用PKI在建立连接时对通信双方进行身份认证。
IETF的传输层安全(TLS)协议(RFC 2246 1999)及无线访问协议(WAP)论坛的无线传输层安全协议(WTIS)都是SSI的后续发展。
协议包括两个层次:其较低的SSL记录层协议位于传输协议TCP/IP之上。
SSL记录协议用来对其上层的协议进行封装。
握手协议就在这些被封装的上层协议之中,它允许客户端与服务器彼此认证对方;并且在应用协议发出或收到第一个数据之前协商加密算法和加密密钥。
这样做的原因就是保证应用协议的独立性,使低级协议对高级协议是透明的。
目前,Internet上对7层网络模型的每一层都已提出了相应的加密协议。
在所有的这些协议中,会话层的SSL和应用层的SET与电子商务的应用关系最为密切。
因此,SSL已成为用户与Internet之间进行保密通信的事实标准,支持SSL也已经成为每个浏览器的内置功能。
SSL包括握手和记录两个子协议。
这两个子协议均可以提供与应用尤其是与HTTP的连接。
这种连接经过了认证和保密,可以防止篡改。
SSL可以嵌入Internet的处理栈内,位于TCP/IP之上和应用层之下,而不会对其他协议层造成太大影响。
SSL同样能够与其他Internet应用一起使用,如Intranet和Extranet访问、应用安全、无线应用及Web服务等。
通过对离开浏览器的数据进行加密,并在其进入数据中心之后进行解密,SSL实现对Internet的数据通信进行保护。
HTTPS加密算法的选择与配置在网络传输中,数据的安全性是一个非常重要的问题。
为了保护数据的隐私和完整性,HTTPS加密算法成为了互联网传输中的首选方案。
本文将探讨HTTPS加密算法的选择与配置,以帮助读者更好地了解和应用该技术。
一、HTTPS加密算法概述HTTPS(Hyper Text Transfer Protocol Secure)是在HTTP基础上加入了SSL/TLS协议进行加密传输的协议。
它通过使用加密算法对传输的数据进行加密和认证,确保数据在传输过程中不被窃取或篡改。
二、HTTPS加密算法的选择1. 对称加密算法对称加密算法使用同一个密钥进行加密和解密,加密速度快而且效率高。
常见的对称加密算法有DES、3DES、AES等。
在HTTPS中,AES是最常用的对称加密算法,其具有较高的安全性和性能。
2. 非对称加密算法非对称加密算法使用公钥和私钥进行加密和解密,公钥用于加密,私钥用于解密。
常见的非对称加密算法有RSA、DSA、ECC等。
在HTTPS中,RSA是最常用的非对称加密算法,其公钥用于对传输中的数据进行加密,私钥用于对接收到的数据进行解密。
3. 散列算法散列算法用于对数据进行摘要,生成一个固定长度的散列值。
常见的散列算法有MD5、SHA-1、SHA-256等。
在HTTPS中,SHA-256是更安全的散列算法,这是因为SHA-1等算法存在碰撞漏洞,已经不再推荐使用。
三、HTTPS加密算法的配置1. 配置服务器证书为了实现HTTPS加密传输,服务器需要配置SSL证书。
证书包含了服务器的公钥和服务器域名等信息。
证书的申请可以通过第三方认证机构(如Symantec、Let's Encrypt等)或自签名的方式。
配置证书后,服务器将能够使用非对称加密算法与客户端进行通信。
2. 选择合适的加密套件加密套件是由对称加密算法、非对称加密算法和散列算法组成的集合。
服务器和客户端在握手过程中协商选择合适的加密套件。
ssl 国密双证实现原理
SSL证书通过在客户端浏览器和web浏览器之间建立一条SSL安全通道,
对传送的数据进行加密和隐藏,确保数据在传送中不被改变,保证数据的完整性。
国密双证则是指基于国家密码标准的证书体系,包括SM2、SM3、SM4等密码算法和相关标准。
SSL证书的原理是通过使用非对称加密算法(如RSA、ECC等)生成一对
公钥和私钥,其中公钥用于加密数据,私钥用于解密数据。
在建立SSL连接时,服务器会向客户端发送自己的证书,其中包含服务器的公钥、证书颁发机构(CA)的公钥等信息。
客户端使用CA的公钥验证服务器证书的真实性,并生成一个随机数。
然后,客户端使用服务器的公钥加密这个随机数,并将加密后的随机数发送给服务器。
服务器使用自己的私钥解密这个随机数,确认客户端的真实性。
此后,客户端和服务器使用这个随机数生成对称密钥,用于加密和解密数据。
国密双证的原理是基于国家密码标准,使用SM2、SM3、SM4等密码算法实现数据的加密、解密、签名和验证等功能。
其中,SM2是一种基于椭圆
曲线的公钥密码算法,用于实现数字签名、密钥协商和加密解密等操作;SM3是一种密码杂凑算法,用于生成数字签名和消息认证码;SM4是一种分组密码,用于实现数据的加密解密和完整性校验。
在实际应用中,国密双证可以与SSL证书结合使用,实现更加安全的数据传输和身份认证。
例如,在SSL/TLS协议中,可以使用国密SM2算法替换RSA算法,实现更加安全的公钥加密和数字签名操作。
同时,国密双证也可以用于身份认证和数据完整性校验等方面,提高系统的安全性。
TLS协议的演变与应用TLS(Transport Layer Security)是一种加密通信协议,常用于保护网络传输中的敏感信息。
自1999年起,TLS协议成为SSL协议的继任者,经历了多个版本的演变和更新。
本文将重点介绍TLS协议的演变过程以及其在现代通信中的应用。
一、SSL协议的起源TLS协议的前身是SSL(Secure Sockets Layer)协议,最早由网景公司于1995年发布。
当时,互联网上的通信很容易受到窃听和篡改的风险,因此急需一种能够保护数据传输安全的协议。
二、TLS 1.0的发布与改进TLS 1.0于1999年发布,作为SSL 3.0的继任者,TLS 1.0引入了一些重要的改进和加密算法。
它支持更安全的密钥交换算法,如RSA和Diffie-Hellman等,同时还提供了更强大的数据完整性校验和身份验证机制。
三、TLS 1.1的改进相比于TLS 1.0,TLS 1.1在安全性和性能方面进行了一些改进。
例如,TLS 1.1禁用了一些较旧且不安全的加密算法,增加了更强的密钥交换算法选项,并引入了更强大的数据完整性校验机制。
四、TLS 1.2的创新TLS 1.2于2008年发布,是TLS协议的重大升级版本。
它进一步增强了协议的安全性和性能,提供了更多的加密算法选项。
TLS 1.2引入了GCM(Galois/Counter Mode)模式,提供了更好的认证和数据完整性保护,同时还改进了握手协议的效率。
五、TLS 1.3的革新TLS 1.3是目前最新版本的TLS协议,于2018年发布。
它对传输安全进行了彻底改进,并且进一步提升了性能和安全性。
TLS 1.3简化了握手过程,减少了握手时间和数据传输延迟,同时引入了更强大的加密算法和密钥交换机制。
六、TLS协议在现代通信中的应用TLS协议在现代通信中广泛应用于保护敏感数据的传输。
它被用于保护网页浏览、电子邮件、即时通信等互联网应用的安全通信。
SSLTLS协议详解SSL/TLS协议详解SSL(Secure Socket Layer)和TLS(Transport Layer Security)协议是用于保护网络通信安全的协议。
本文将详细解释SSL/TLS协议的工作原理和相关技术。
一、SSL/TLS协议简介SSL/TLS协议是一种加密技术,用于在网络上安全地传输数据。
它使用了对称加密、非对称加密和散列函数等多种密码学技术来保护数据的机密性、完整性和认证性。
SSL/TLS协议被广泛应用于HTTP、SMTP、POP3等应用层协议之上,确保了数据在网络传输过程中的安全性。
二、SSL/TLS协议的工作原理1. 握手阶段(Handshake)在握手阶段,客户端和服务端交换参数,建立安全连接。
具体步骤如下:a. 客户端发送“ClientHello”消息给服务端,包括SSL/TLS的版本号、加密套件列表等信息。
b. 服务端收到“ClientHello”消息后,发送“ServerHello”消息给客户端,包括选择的加密套件、证书等信息。
c. 客户端验证服务端的证书,并生成一个随机数“pre-master secret”。
客户端使用服务端的公钥加密“pre-master secret”,发送给服务端。
d. 服务端使用私钥解密客户端发来的“pre-master secret”,生成“master secret”。
e. 客户端和服务端使用“master secret”生成加密密钥,并生成随机数作为后续加密的种子。
2. 认证阶段(Authentication)在认证阶段,客户端和服务端进行身份验证。
具体步骤如下:a. 服务端发送包含数字证书的“Certificate”消息给客户端。
b. 客户端验证服务端的数字证书是否合法。
c. 客户端使用服务器的公钥加密一个随机数,发送给服务器。
d. 服务端使用私钥解密客户端发来的随机数。
3. 密钥交换阶段(Key Exchange)在密钥交换阶段,客户端和服务端交换密钥,用于后续通信的加密。
⼀⽂看懂HTTPS、证书机构(CA)、证书、数字签名、私钥、公钥说到https,我们就不得不说tls/ssl,那说到tls/ssl,我们就不得不说证书机构(CA)、证书、数字签名、私钥、公钥、对称加密、⾮对称加密。
这些到底有什么⽤呢,正所谓存在即合理,这篇⽂章我就带你们捋⼀捋这其中的关系。
对称加密对称加密是指双⽅持有相同的密钥进⾏通信,加密速度快,但是有⼀个安全问题,双⽅怎样获得相同的密钥?你总不能总是拿着U盘把密钥拷贝给对⽅吧。
常见的对称加密算法有DES、3DES、AES等⾮对称加密⾮对称加密,⼜称为公开密钥加密,是为了解决对称加密中的安全问题⽽诞⽣,⼀个称为公开密钥(public key),即公钥,另⼀个称为私钥(private key),即私钥。
但是它的加密速度相对于对称加密来说很慢。
公钥(public key)是对外开放的,私钥(private key)是⾃⼰拥有的。
公钥(public key)加密的数据,只能⽤私钥(private key)解密。
私钥(private key)加密的数据,只能⽤公钥(public key)解密。
信息安全问题在信息安全性问题中,我们常常要做到三点才能保证信息的安全:1. 信息的保密性2. 信息的完整性3. ⾝份识别信息的保密性(加密算法)信息的保密性我们可以使⽤对称加密和⾮对称加密来完成,使⽤对称加密来完成,速度相对⾮对称加密很快,但是存在⼀个安全问题,密钥如何传递?由此通⽤的⽅法是使⽤⾮对称加密+对称加密来完成。
客户端使⽤公钥对对称加密的密钥进⾏加密,然后传递给服务端,服务端使⽤私钥进⾏解密确认密钥,开始传输数据。
信息的完整性(数字签名)信息传输的途中,我们的信息很有可能被第三⽅劫持篡改,所以我们需要保证信息的完整性,通⽤⽅法是使⽤散列算法如SHA1,MD5将传输内容hash⼀次获得hash值,即摘要。
客户端使⽤服务端的公钥对摘要和信息内容进⾏加密,然后传输给服务端,服务端使⽤私钥进⾏解密获得原始内容和摘要值,这时服务端使⽤相同的hash算法对原始内容进⾏hash,然后与摘要值⽐对,如果⼀致,说明信息是完整的。
背景介绍最近在看《密码学与网络安全》相关的书籍,这篇文章主要详细介绍一下著名的网络安全协议SSL。
在开始SSl介绍之前,先给大家介绍几个密码学的概念和相关的知识。
1、密码学的相关概念•密码学(cryptography):目的是通过将信息编码使其不可读,从而达到安全性。
•明文(plain text):发送人、接受人和任何访问消息的人都能理解的消息。
•密文(cipher text):明文消息经过某种编码后,得到密文消息。
•加密(encryption):将明文消息变成密文消息。
•解密(decryption):将密文消息变成明文消息。
•算法:取一个输入文本,产生一个输出文本。
•加密算法:发送方进行加密的算法。
•解密算法:接收方进行解密的算法。
•密钥(key):只有发送方和接收方理解的消息•对称密钥加密(Symmetric Key Cryptography):加密与解密使用相同密钥。
•非对称密钥加密(Asymmetric Key Cryptography):加密与解密使用不同密钥。
2、相关的加密算法介绍DES算法即数据加密标准,也称为数据加密算法。
加密过程如下:在SSL中会用到分组DES、三重DES算法等加密算法对数据进行加密。
当然可以选用其他非DES加密算法,视情况而定,后面会详细介绍。
3、密钥交换算法使用对称加密算法时,密钥交换是个大难题,所以Diffie和Hellman提出了著名的Diffie-Hellman密钥交换算法。
Diffie-Hellman密钥交换算法原理:(1)Alice与Bob确定两个大素数n和g,这两个数不用保密(2)Alice选择另一个大随机数x,并计算A如下:A=gx mod n(3)Alice将A发给Bob(4)Bob选择另一个大随机数y,并计算B如下:B=gy mod n(5)Bob将B发给Alice(6)计算秘密密钥K1如下:K1=Bx mod n(7)计算秘密密钥K2如下:K2=Ay mod nK1=K2,因此Alice和Bob可以用其进行加解密RSA加密算法是基于这样的数学事实:两个大素数相乘容易,而对得到的乘积求因子则很难。
密码学在电子支付安全中的应用随着互联网的普及和电子商务的发展,越来越多的人开始使用电子支付进行购物和转账等交易。
然而,电子支付的安全性一直是人们关注的焦点。
为了保障用户的资金安全,密码学技术在电子支付中得到了广泛应用。
本文将探讨密码学在电子支付安全中的应用。
一、对称加密算法对称加密算法是一种将明文和密钥作为输入,通过加密算法生成密文的方法。
在电子支付中,对称加密算法常被用于对用户的敏感信息进行加密传输。
其中,DES(Data Encryption Standard)算法是应用最为广泛的对称加密算法之一,其通过将明文分块加密,再将密文传输给收款方来确保交易信息的安全。
二、非对称加密算法非对称加密算法是一种使用公钥和私钥进行加密和解密的方法。
公钥是公开的,用于加密明文,而私钥则只能由收款方持有,用于解密密文。
在电子支付过程中,非对称加密算法常被用于验证支付方的身份和进行数字签名。
RSA(Rivest, Shamir, Adleman)算法是应用最为广泛的非对称加密算法之一,其通过生成一对公钥和私钥,来实现对交易信息的加密和身份验证。
三、数字签名数字签名是电子支付中常用的一种技术,用于验证消息的真实性和完整性。
数字签名基于非对称加密算法,支付方使用私钥对交易信息进行加密,生成数字签名,并将其发送给收款方。
收款方收到数字签名后,使用支付方的公钥进行解密和验证,以确认消息的真实性。
数字签名技术可以有效防止支付信息被篡改和伪造。
四、安全散列算法安全散列算法是一种将任意长度的数据映射为固定长度散列值的算法。
在电子支付中,安全散列算法常被用于保护用户的密码和敏感信息。
通过对用户的密码进行散列运算,可以确保即使在数据泄露的情况下,攻击者也无法直接获得用户的原始密码。
MD5(Message Digest Algorithm 5)算法和SHA(Secure Hash Algorithm)算法是常用的安全散列算法,它们被广泛应用于电子支付系统中的用户密码保护。
SSL证书安全散列算法编年史了解数字摘要的本质现在我们假设这么一个情况,如果有个游戏客户端有20G大小,文件上传下载的大小有限制,所以分开为8段5G的来下载,下载完了之后,安装过程中提示安装出错。
于是问题来了,要重新把8段下下来呢,还是单独下在出错的。
结果显然是只要下载出错的那段就可以了,但是如何来判断这哪段没下载完整呢。
这里就可以用数字摘要来解决这个问题,官方可以用一种指定的方法,把5G的大小的数据,通过某种方法得到一串较短的数据,这段新数据的特点包括:新数据较短,易读取识别;原数据任意修改都使其有巨大变化,原数据推得新数据,反之不行;新数据不容易产生相同的。
这样,安装发生错误时,可以通过相同的方法来分别演算这8段大数据,再把演算得到的小数据和官方通过演算给出的小数据进行比较,如果一致的话,则说明这段大数据是完整的,无需重新下载;而不一致,则就是我到的不完整文件。
上文中通过原数据生成小数据的方法就是数字摘要算法。
摘要算法是一种能计算出一个数字消息所对应到的,长度固定的字符串的算法。
它们对应到不同字符串的机率很高。
摘要算法有很多,md数字摘要,sha安全算列等。
其中SHA是FIPS所认证的五种安全散列算法。
这些算法之所以称作“安全”是基于以下两点(根据官方标准的描述):l 由消息摘要反推原输入消息,从计算理论上来说是很困难的。
l 想要找到两组不同的消息对应到相同的消息摘要,从计算理论上来说也是很困难的。
任何对输入消息的变动,都有很高的机率导致其产生的消息摘要迥异。
SHA家族成员SHA家族的五个算法,分别是SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512,由美国国家安全局(NSA)所设计,并由美国国家标准与技术研究院(NIST)发布;是美国的政府标准。
后四者有时并称为SHA-2。
SHA-1在许多安全协议中广为使用,包括TLS和SSL、PGP、SSH、S/MIME和IPsec,曾被视为是MD5(更早之前被广为使用的散列函数)的后继者。
但SHA-1的安全性如今被密码学家严重质疑;虽然至今尚未出现对SHA-2有效的攻击,它的算法跟SHA-1基本上仍然相似;因此有些人开始发展其他替代的散列算法。
缘于最近对SHA-1的种种攻击发表,“美国国家标准与技术研究院(NIST)开始设法经由公开竞争管道(类似高级加密标准AES的发展经过),发展一个或多个新的散列算法。
”2012年10月2日,Keccak被选为NIST散列函数竞赛的胜利者,成为SHA-3。
SHA-3并不是要取代SHA-2,因为SHA-2目前并没有出现明显的弱点。
由于对MD5出现成功的破解,以及对SHA-0和SHA-1出现理论上破解的方法,NIST感觉需要一个与之前算法不同的,可替换的加密散列算法,也就是现在的SHA-3。
设计者宣称在Intel Core 2的CPU上面,此算法的性能是12.5cpb(每字节周期数,cycles per byte)。
不过,在硬件实做上面,这个算法比起其他算法明显的快上很多。
SHA-0与SHA-1最初载明的算法于1993年发布,称做安全散列标准(Secure Hash Standard),FIPS PUB 180。
这个版本现在常被称为SHA-0。
它在发布之后很快就被NSA撤回,并且由1995年发布的修订版本FIPS PUB 180-1(通常称为SHA-1)取代。
SHA-1和SHA-0的算法只在压缩函数的消息转换部份差了一个比特的循环位移。
根据NSA的说法,它修正了一个在原始算法中会降低散列安全性的弱点。
然而NSA并没有提供任何进一步的解释或证明该弱点已被修正。
而后SHA-0和SHA-1的弱点相继被攻破,SHA-1似乎是显得比SHA-0有抵抗性,这多少证实了NSA当初修正算法以增进安全性的声明。
SHA-0和SHA-1可将一个最大2^64比特的消息,转换成一串160位的消息摘要;其设计原理相似于MIT教授Ronald L. Rivest所设计的密码学散列算法MD4和MD5。
SHA-0的破解在CRYPTO 98上,两位法国研究者提出一种对SHA-0的攻击方式:在2^61的计算复杂度之内,就可以发现一次碰撞(即两个不同的消息对应到相同的消息摘要);这个数字小于生日攻击法所需的2^80,也就是说,存在一种算法,使其安全性不到一个理想的散列函数抵抗攻击所应具备的计算复杂度。
2004年时,Biham和Chen也发现了SHA-0的近似碰撞,也就是两个消息可以散列出几乎相同的数值;其中162比特中有142比特相同。
他们也发现了SHA-0的完整碰撞(相对于近似碰撞),将本来需要80次方的复杂度降低到62次方。
2004年8月12日,Joux, Carribault, Lemuet和Jalby宣布找到SHA-0算法的完整碰撞的方法,这是归纳Chabaud和Joux的攻击所完成的结果。
发现一个完整碰撞只需要2^51的计算复杂度。
他们使用的是一台有256颗Itanium2处理器的超级电脑,约耗80,000 CPU工时。
2004年8月17日,在CRYPTO 2004的Rump会议上,王小云,冯登国(Feng)、来学嘉(Lai),和于红波(Yu)宣布了攻击MD5、SHA-0和其他散列函数的初步结果。
他们攻击SHA-0的计算复杂度是2^40,这意谓的他们的攻击成果比Joux还有其他人所做的更好。
请参见MD5安全性。
2005年二月,王小云和殷益群、于红波再度发表了对SHA-0破密的算法,可在2^39的计算复杂度内就找到碰撞。
SHA-1的破解鉴于SHA-0的破密成果,专家们建议那些计划利用SHA-1实现密码系统的人们也应重新考虑。
在2004年CRYPTO会议结果公布之后,NIST即宣布他们将逐渐减少使用SHA-1,改以SHA-2取而代之。
2005年,Rijmen和Oswald发表了对SHA-1较弱版本(53次的加密循环而非80次)的攻击:在2^80的计算复杂度之内找到碰撞。
2005年二月,王小云、殷益群及于红波发表了对完整版SHA-1的攻击,只需少于2^69的计算复杂度,就能找到一组碰撞。
(利用生日攻击法找到碰撞需要2^80的计算复杂度。
)这篇论文的作者们写道;“我们的破密分析是以对付SHA-0的差分攻击、近似碰撞、多区块碰撞技术、以及从MD5算法中查找碰撞的消息更改技术为基础。
没有这些强力的分析工具,SHA-1就无法破解。
”此外,作者还展示了一次对58次加密循环SHA-1的破密,在2^33个单位操作内就找到一组碰撞。
完整攻击方法的论文发表在2005年八月的CRYPTO会议中。
殷益群在一次面谈中如此陈述:“大致上来说,我们找到了两个弱点:其一是前置处理不够复杂;其二是前20个循环中的某些数学运算会造成不可预期的安全性问题。
”2005年8月17日的CRYPTO会议尾声中王小云、姚期智、姚储枫再度发表更有效率的SHA-1攻击法,能在2^63个计算复杂度内找到碰撞。
2006年的CRYPTO会议上,Christian Rechberger和Christophe De Cannière宣布他们能在容许攻击者决定部分原消息的条件之下,找到SHA-1的一个碰撞。
在密码学的学术理论中,任何攻击方式,其计算复杂度若少于暴力搜索法所需要的计算复杂度,就能被视为针对该密码系统的一种破密法;但这并不表示该破密法已经可以进入实际应用的阶段。
就应用层面的考量而言,一种新的破密法出现,暗示着将来可能会出现更有效率、足以实用的改良版本。
虽然这些实用的破密法版本根本还没诞生,但确有必要发展更强的散列算法来取代旧的算法。
在“碰撞”攻击法之外,另有一种反译攻击法(Pre-image attack),就是由散列出的字符串反推原本的消息;反译攻击的严重性更在碰撞攻击之上,但也更困难。
在许多会应用到密码散列的情境(如用户密码的存放、文件的数字签章等)中,碰撞攻击的影响并不是很大。
举例来说,一个攻击者可能不会只想要伪造一份一模一样的文件,而会想改造原来的文件,再附上合法的签章,来愚弄持有私密密钥的验证者。
另一方面,如果可以从密文中反推未加密前的用户密码,攻击者就能利用得到的密码登录其他用户的账户,而这种事在密码系统中是不能被允许的。
但若存在反译攻击,只要能得到指定用户密码散列过后的字符串(通常存在影文件中,而且可能不会透露原密码信息),就有可能得到该用户的密码。
SHA2步入视野NIST发布了三个额外的SHA变体,这三个函数都将消息对应到更长的消息摘要。
以它们的摘要长度(以比特计算)加在原名后面来命名:SHA-256,SHA-384和SHA-512。
它们发布于2001年的FIPS PUB 180-2草稿中,随即通过审查和评论。
包含SHA-1的FIPS PUB 180-2,于2002年以官方标准发布。
2004年2月,发布了一次FIPS PUB 180-2的变更通知,加入了一个额外的变种SHA-224",这是为了符合双密钥3DES所需的密钥长度而定义。
SHA-256和SHA-512是很新的散列函数,前者以定义一个word为32位,后者则定义一个word 为64位。
它们分别使用了不同的偏移量,或用不同的常数,然而,实际上二者结构是相同的,只在循环运行的次数上有所差异。
SHA-224以及SHA-384则是前述二种散列函数的截短版,利用不同的初始值做计算。
这些新的散列函数并没有接受像SHA-1一样的公众密码社区做详细的检验,所以它们的密码安全性还不被大家广泛的信任。
Gilbert和Handschuh在2003年曾对这些新变种作过一些研究,声称他们没有找到弱点。
SHA所定义的长度下面是sha一些相关参数。
SHA-1的攻击的代价在2005年,密码学家证明SHA-1的破解速度比预期提高了2000倍。
但是破解仍然是极其困难和昂贵的。
但是随着计算机变得越来越快和越来越廉价,在互联网上停止使用SHA-1算法只是时间的问题。
后来,互联网继续使用SHA-1。
在2012年,Jesse Walker写了一份评估报告,关于伪造一个SHA-1证书所花费的成本。
该评估参照亚马逊Web服务的价格和摩尔定律。
当时沃克预计一个SHA-1的碰撞在2012年需花费2,000,000美元,在2015年需花费700,000美元,在2018年需花费173,000美元,在2021年需花费43,000美元。
基于这些数字,施奈尔暗示到2018年就会有犯罪集团能够伪造证书,到2021年就会有科研院校具备这种能力。
在有关更替SHA-1的规划和争论中,沃克的评估和施奈尔的推断被广泛的引用。
一个由主流CA 组成的组织:CA安全理事会(CA Security Council),近来使用沃克和施奈尔的结论来抱怨谷歌的时间表。