Blake2是一个强调快速、安全与简单的Hash算法,并且目前被用来替代MD5和SHA1。因为它可以在不耗费更多资源的情况下提供更好的安全性,但后来由Keccak获选为SHA3的原因是NIST认为Keccak更具有抗ASIC的能力以及因为Blake的实作类似于SHA2,所以后来才不选择Blake为SHA3标准。Blake2在2012年发表,是Blake的改良版本,列于RFC-7693,其中分为两种类型,BLAKE2b是针对64bits的平台进行优化而BLAKE2s是针对8到32bits的平台。
我们给blake2b算法的定位是目前安全系数最高的哈希函数,从2012年blake2b算法的发布之日至今,我们还没有发现针对blake2b算法的攻击。实际上,blake2b算法是基于BLAKE实现的,BLAKE是2008年被提交至SHA-3竞赛的一种哈希函数,而且全世界最优秀的密码学分析专家对这个哈希函数进行了长达四年的审查,然而并没有发现任何的不安全因素。
除此之外,blake2b算法的内部基于的是ChaCha,而ChaCha是高度可信任的,它不太可能被破解。(注:ChaCha是一种由Daniel
J.Bernstein设计的流密码,它是TLS1.3所使用的三大密码之一,并且符合新的TLS标准。)
由于在设计之初就考虑到了安全和性能方面的优化,blake2b算法在速度方面是要优于SHA-1的。下图显示的是各种不同的哈希函数在一块英特尔CPU(Skylake架构)上的吞吐量测试信息:
你会发现,我们可以方便地用各种不同的编程语言来实现BLAKE2,例如C、Go、Java、JavaScript、Python或Rust。比如说,BLAKE2默认就是Go语言“/x/crypto”包中的一部分。除此之外,目前很多流行的加密代码库都包含有BLAKE2,例如OpenSSL和Sodium等等。
blake2b算法不仅仅只是一个简单的哈希函数而已,首先,BLAKE2有两大主要版本:BLAKE2b和BLAKE2s。BLAKE2b是BLAKE的64位版本,它可以生成最高512位的任意长度哈希。BLAKE2s是BLAKE的32位版本,它可以生成最高256位的任意长度哈希。
为了进一步提升哈希计算的速度,BLAKE的并行版本BLAKE2bp和BLAKE2sp可以在多个计算核心上并行运行,而此时的运行效率将是串行运行的八倍。如果你想在BLAKE2的哈希计算中使用密钥的话,例如伪随机函数(PRF)或消息认证码(MAC),你不需要像使用HMAC一样还要专门去实现这些计算,因为BLAKE2可以接受一个密钥作为可选输入参数,计算完成之后你就可以得到一个跟HMAC一样安全的哈希了。
如果你需要长度高于512位的哈希值,例如实现一个密钥导出函数(KDF)或确定性随机比特生成器(DRBG),我们创建了BLAKE2x,BLAKE2x是对BLAKE2的简单扩展,它可以生成任意长度的哈希值(长度不受限制)。
由此可以看出,blake2b算法在目前的密码学当中是属于安全系数最高的存在,随着它被用于越来越多的领域,它的安全系数将会得到进一步的提高和优化。
免责声明: 文章源于会员发布,不作为任何投资建议
如有侵权请联系我们删除,本文链接:https://www.sws100.com/btc/216971.html