Blake3哈希算法的介绍、特点、原理与Blake3.Net的特点

news/2024/10/12 14:14:02
1. Blake3的介绍与特点

哈希函数专为文件完整性验证等应用而设计,加密数字签名的消息认证和数据生成。 Blake3不是为散列密码而设计的,因为它旨在尽可能快地计算散列(对于密码,建议使用慢散列和escrypt、bcrypt、scrypt 或Argon2函数)。

所讨论的散列函数对正在处理的数据大小不敏感,并且可以防止冲突搜索和原像攻击。

该算法是由著名密码学家开发并继续开发Blake2算法并使用Bao机制对区块链树进行编码。与Blake2(Blake2b、BlakeE2s)不同,Blake3 为所有平台提供单一算法 这与位宽和哈希大小无关。

至于块拆分,在Blake3 中,流被拆分为1KB块每个哈希片段都是独立的。大哈希是在基于Merkle二叉树的碎片哈希的基础上形成的。

这种分离可以解决并行化数据处理的问题计算散列时; 例如,您可以使用4线SIMD指令同时计算4块哈希。传统的SHA-*哈希函数按顺序处理数据。

Blake3 的特点是:
  • 在 PRF、MAC、KDF、XOF模式和普通哈希中的应用;
  • 适用于所有体系结构的算法,在x86-64系统和32位ARM处理器上都很快。

2. Blake3、Blake2Fast、SHA256哈希算法效率比较
2.1 在Intel Ice Lake 或 AMD Zen 之前的CPU没有英特尔SHA的CPU扩展。

在这种情况下,Blake3比内置的SHA256快大约5倍到10倍。

以下基准测试是在英特尔酷睿i7-4980HQCPU2.80 GHz(Haswell)上运行的:
// Benchmarks
// BenchmarkDotNet=v0.12.1, OS=Windows 10.0.18363.1139 (1909/November2018Update/19H2)
// Intel Core i7-4980HQ CPU 2.80GHz (Haswell), 1 CPU, 8 logical and 4 physical cores
// .NET Core SDK=5.0.100
// [Host] : .NET Core 5.0 (CoreCLR 5.0.20.51904, CoreFX 5.0.20.51904), X64 RyuJIT
// DefaultJob : .NET Core 5.0.0 (CoreCLR 5.0.20.51904, CoreFX 5.0.20.51904), X64 RyuJIT
算法 字节数 耗时 最大误差 平均误差 平均耗时
Blake3 4 85.06 ns 1.704 ns 2.154 ns 83.55 ns
Blake2Fast 4 138.30 ns 0.755 ns 0.670 ns 138.36 ns
SHA256 4 531.82 ns 0.842 ns 0.778 ns 531.85 ns
Blake3 100 145.12 ns 2.899 ns 4.064 142.56
Blake2Fast 100 153.41 ns 3.057 ns 4.760 ns 150.66 ns
SHA256 100 803.32 ns 11.420 ns 8.916 ns 797.37 ns
Blake3 1000 999.01 ns 19.658 ns 26.908 ns 984. 60 ns
Blake2Fast 1000 789.41 ns 15.814 ns 18.825 ns 784.82 ns
SHA256 1000 4,489.81 ns 84.032 ns 78.603 ns 4,525.27 ns
Blake3 10000 4,099.92 ns 49.985 ns 46.756 ns 4,121.94 ns
Blake2Fast 10000 7,593.55 ns 127.193 ns 112.753 ns 7,609,07 ns
SHA256 10000 40,799.82 ns 769.102 ns 1386.850 ns 41,460.32 ns
Blake3 100000 28,491.58 ns 394.692 ns 369.195 ns 28,498.05 ns
Blake2FAST 100000 78,732.84 ns 648.124 ns 606.255 ns 78,887.56 ns
SHA256 100000 408,581.45 ns 2,359.416 ns 2,207.000 ns 409,059.91 ns
Blake3 1000000 138,481.22 ns 1,300.797 ns 1,216.767 ns 1,38.460.16 ns
Blake2Fast 1000000 724,092.30 ns 6,995.547 ns 6,543.639 ns 720,115.33 ns
SHA256 1000000 3,6999,812.03 ns 37,739.460 ns 35,301.514 ns 3,678,276.17 ns

2.2 使用SHA CPU扩展的结果

如果你的CPU有Intel SHA CPU扩展,那么Blake3的~平均比SHA256快2倍。

以下基准测试是在AMD锐龙9 3900X上运行的:
// Benchmarks
// BenchmarkDotNet=v0.12.1, OS=Windows 10.0.19041.630 (2004/?/20H1)
// AMD Ryzen 9 3900X, 1 CPU, 24 logical and 12 physical cores
// .NET Core SDK=5.0.100
// [Host] : .NET Core 5.0 (CoreCLR 5.0.20.51904, CoreFX 5.0.20.51904), X64 RyuJIT
// DefaultJob : .NET Core 5.0.0 (CoreCLR 5.0.20.51904, CoreFX 5.0.20.51904), X64 RyuJIT
算法 字节数 耗时 最大误差 平均误差
Blake3 4 77.86 ns 0.332 ns 0.310 ns
Blake2Fast 4 123.57 ns 0.939 ns 0.879 ns
SHA256 4 244.31 ns 1.157 ns 1.082 ns
Blake3 100 125.60 ns 0.497 ns 0.440
Blake2Fast 100 124.48 ns 1.053 ns 0.985 ns
SHA256 100 279.82 ns 1.853 ns 1.734 ns
Blake3 1000 888.90 ns 0.873 ns 0.681 ns
Blake2Fast 1000 790.85 ns 4.364 ns 3.645 ns
SHA256 1000 700.81 ns 2.078 ns 1.842 ns
Blake3 10000 3,508.37 ns 23.411 ns 21.899 ns
Blake2Fast 10000 7,569.91 ns 40.661 ns 38.034 ns
SHA256 10000 4,922.90 ns 14.360 ns 13.432 ns
Blake3 100000 22,109.48 ns 47.699 ns 39.830 ns
Blake2FAST 100000 75,937 ns 223.972 ns 209.503 ns
SHA256 100000 48,655.78 ns 102.273 ns 246.435 ns
Blake3 1000000 117,936.94 ns 263.454 ns 246.435 ns
Blake2Fast 1000000 768,752.03 ns 1,836.783 ns 1,718.128 ns
SHA256 1000000 485,944.26 ns 1,326.657 ns 1,240.956 ns

3. Blake3原理

Blake3一种安全、快速且可并行的加密哈希函数

Blake3加密哈希函数的特点是比MD5、SHA-1、SHA-2、SHA-3和BLAKE2快得多,而且它更安全,不像MD5和SHA-1。 与 SHA-2不同,可安全防止长度扩展。

它可以跨任意数量的线程和SIMD通道高度并行化,因为它内部是一个Merkle树,并且具有无变量算法,在x86-64和较小的体系结构上都很快。

Blake3依赖于已建立的哈希函数 BLake2的优化实例,并在原始的宝树模式下。 Blake3论文中提供了规范和设计论证。 默认输出大小为256位。

在16KB文件的哈希生成测试中,Blake3使用256位密钥超过SHA3-256 17倍,超过SHA-256 14 倍, SHA-512 9次,SHA-1 6次和 Blake2b 5次。

这是一个即使在处理大量数据时仍然存在的重大差距,例如,在计算3GB随机数据的哈希时,Blake8比SHA-256快1倍。

哈希算法效率图

通过将轮数从10轮减少到7轮并将块分别散列到1KB 块中,实现了性能提升。根据创作者的说法,他们找到了令人信服的数学证明,证明你可以用7轮而不是10轮来完成,同时保持相同水平的可靠性。

同时,也有研究人员表示怀疑,认为即使目前7轮足以应对所有已知的哈希攻击,如果未来检测到新的攻击,额外的3轮可能会有用。


4. 关于Blake3和Blake2的主要区别:

在哈希计算中使用二叉树结构实现无限并行。

将回合数从 10 减少到 7。

三种操作模式:散列、键控散列 (HMAC) 和密钥生成 (KDF)。

由于使用了先前由密钥的参数块占用的区域,因此在对密钥进行散列时没有额外的开销。

以可扩展输出函数 (XOF) 的形式工作的内置机制,允许它并行化和定位搜索。


5. Blake3.Net的一些特征

Blake3.NET是一个围绕Blake3加密哈希函数的SIMD Rust实现的一个快速托管包装器。

Blake3.NET支持以平系统平台:
  • win-x64, win-x86, win-arm64, win-arm
  • linux-x64, linux-arm64, linux-arm
  • osx-x64, osx-arm64

Blake3.Net的特点:
  • 兼容。净7.0+。(当前最新.net版本:.net8.0)
  • 快速互操作与跨度友好的API。
  • API类似于Blake3生锈的API。
  • CPU SIMD硬件加速与动态CPU特性检测。
  • 支持多个平台。
  • 增量更新API,通过Hasher进行增量更新API。
  • 支持通过Hasher进行的多线程散列。更新退出加入。

总结

Blake3现在的多数hash算法效率高,如果是大进行文件hash计算,或者对效率有较高要求的程序,那么Blake3是个不错的选择。


Blake3.Net的下载
Github:https://github.com/xoofx/Blake3.NET/tree/master

Blake3其它编程语言版本:
Github:https://github.com/BLAKE3-team/BLAKE3

参考:
BLAKE3 一种安全、快速且可并行的加密哈希函数原文地址:Blake3哈希算法的介绍、特点、原理与Blake3.Net的特点
https://www.awaterbloom.com/ArticleDetail?id=5

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/70651.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Ubuntu Server 24 安装 Prometheus

Ubuntu Server 24 安装 Prometheus 安装 docker 如果需要卸载: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done添加 docker 源: sudo apt-get install ca-certificates curl sudo ins…

Nuxt.js 应用中的 ready 事件钩子详解

title: Nuxt.js 应用中的 ready 事件钩子详解 date: 2024/10/12 updated: 2024/10/12 author: cmdragon excerpt: ready 钩子是 Nuxt.js 中一个重要的生命周期事件,它在 Nuxt 实例初始化完成后被调用。当 Nuxt 已经准备好并准备开始处理请求或渲染页面时,这一钩子会被触发。…

Pywebview 5.2 storage_path传递参数参数无效

### 背景pywebview 5.2在我测试数据目录时,发现在启动界面后 webview 目录仍然为空```python def test_storage_dir():wind背景 pywebview 5.2 在我测试数据目录时,发现在启动界面后 webview 目录仍然为空 def test_storage_dir():window = webview.create_window(Storage Di…

E65 树形DP P3237 [HNOI2014] 米特运输

视频链接:E65 树形DP P3237 [HNOI2014] 米特运输_哔哩哔哩_bilibili P3237 [HNOI2014] 米特运输 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)// 树形DP O(n) #include <bits/stdc++.h> #define int long long using namespace std;const int N=500005,mod=1e9+7; …

MathType安装及使用教程

本文介绍了MathType的安装方法及一些使用技巧。MathType安装及使用教程 安装下载压缩包MathType_Crack_7.8.0.0.rar 百度云盘 提取码:81at 解压软件包,得到如下文件右键以管理员方式运行MathType-win-zh-7.8.0.0.exe;选择目标文件夹,可更换其他文件夹;选择中文语言;替换…

windows一些dos命令整理

说明: 1.打开文件方式,输入文件的绝对或者相对路径dos命令启用扩展下 cd chdir 格式:CHDIR [/D] [drive:][path] /d 除了改变驱动器的当前目录之外,还可改变当前驱动器。cd / 或者 cd \根目录 cd .. 上一层目录 切换盘符:如直接 d:或者c: 切换目录:cd 绝对或相对路径 CHD…

windows问题记录1

隐藏启动分区 1、win+R运行命令diskmgmt.msc 2、选择要隐藏的系统盘符,右键——更改驱动器号和路径3、将当前盘的驱动器号删除,删除时会提示两次,删除后电脑将不能访问此盘。不要将c盘取消驱动器号,负责可能系统无法启动。 关闭系统自动播放 需求:挂载cd盘,cd盘内容自动…

安全帽穿戴检测人脸闸机联动系统

安全帽穿戴检测人脸闸机联动系统结合安全帽穿戴检测技术和人脸识别技术,安全帽穿戴检测人脸闸机联动系统实现对进入工地施工区域人员是否穿戴安全帽进行精准监测和身份识别,安全帽穿戴检测人脸闸机联动系统通过摄像头对人员进行安全帽穿戴检测和人脸识别,只有在满足这两个条…