Google揭露SHA-1碰撞,加速数据重删字节对比
近期,Google和道荷兰阿姆斯特研究者宣布攻破了世界上第一例公开的SHA-1哈希碰撞实例,业界一片哗然。当两组不同的数据(文件、一段数据)计算出相同的Hash值时,即视为二者发生碰撞;很多声音强调了避免使用SHA-1的必要性。Google自己多年来也是一直主张弃用SHA-1方案,让更多人意识到其已经不再安全可靠。回顾历史,OpenSSL心脏出血Heartbleed漏洞也是引起了业界很大的反应。
SHA-1加密Hash函数在浏览器安全保护、代码库管理、存储数据重复删除等得到广泛应用。SHA-1作为一项被广泛使用的加密算法,其主要特点就是在当前计算能力、存储数据容量上,不同的数据出入无法找到相同Hash输出值。然而随着时间的推移,在未来存储应用中,庞大的数据量已经无法阻止小概率的数据碰撞冲突,在现实世界发生了。
这一系列反应都说明了数据安全的重要性和人们的关注度。在存储重删压缩应用中,厂商通常采用SHA-1算法计算数据指纹,下面我们重点讲讲SHA-1算法原理。
Hash在数据重删的应用
在存储重删算法中,SHA-1算法的输出长度为20Bytes(160bits),对相同的数据,其输出必然相同;对不同的数据,其输出是随机的,在[0,2^160-1]之间均匀分布,两个指纹出现Hash碰撞(不同的数据产生相同Hash值)的概率为2^(-160),对应48个9的可靠性;
最直接的攻击方法就是累积大量的SHA-1值,理论上,只要累积2^80个SHA-1值,就会以很高的概率出现碰撞,以每4KB数据计算一个HASH值来计算,此时的数据量为1DB(10^12 PB)。以总数据量等于4ZB(10^6 PB)为例,此时发生HASH碰撞概率为2^(-40),约为12个9的可靠性。
理论上,2012年IDC预计未来8年全世界才产生40ZB的数据,按照这个增长速率,保守估计,以较高的概率出现HASH碰撞将在几百年之后;但哈希碰撞事件也确有发生,如本次事件,以及利用 MD5 碰撞伪造合法CA证书,进而攻击HTTPS安全体系。
Hash冲突预防方法
所以,为了降低用户的担心,很多存储厂商的重删特性除了支持Hash算法外,还支持逐字节对比。当遇到相同Hash值时,可以再通过逐字节对比功能检验,这样就可以做到绝对的安全,但由于这个功能会增加额外的系统消耗,所以会对重删性能造成一定的影响。
另外,Hash算法也有等级之分,安全从业者比以往更为迫切地需要转而使用更加安全的加密散列算法,例如SHA-256与SHA-3。
强Hash:SHA-1、SHA-3、SHA256;
弱Hash:MurMur3、CRC、MD5;
强Hash与弱Hash的区别是,强Hash发生hash冲突的概率低,就是防冲突的能力强;弱hash发生冲突的概率低,防冲突的能力弱。
数据重删如何应用
数据重删也是有相应的应用场景,针对已经压缩或重删的数据来说,就不适合在进行重删了,因为数据经过专业的编码处理,已经不能再次进行重删了,加密的数据也是不适合再次进行重删的。
在实践中,有些数据格式我们很容易得知其数据时经过压缩处理的,如图片、视频文件等,有些是经过编码的,如PDF文档、Office365、ISO文件和可执行文件等;还有些数据是经过自身压缩实现压缩的,如.rar,.zip等文件。
很多存储产品支持的IO大小重删粒度是4K/8K,与数据库IO大小基本重合,再加上数据库操作会对数据表项的增加一些时间戳或标记,导致不能重删或重删无效果,但是可以使用压缩来节省存储空间。
在存储这一行业,重删压缩是十分火热的词汇,尤其随着闪存浪潮的兴起。所以促使所以与存储相关的软硬件都支持重删和压缩,如备份软件、备份PBBA设备、企业级存储等等。那么我们在实际应用中该如何选择呢,这也让方案设计工程师很头疼。
这就需要我们在选择时,回归到业务本质以备份为例,如备份软件、备份PBBA设备的重删压缩是针对备份场景优化设计,这种场景以带宽要求为高,时延限制不高,所以一般采用变长重删算法,这种算法可以识别出备份数据块中增加、修改的内容,从而可以提升重删率,如DataDomain、HP StoreOnce和飞康VTL等。
企业级存储主要应对主存场景,需要考虑IOPS和时延,重删处理流程不能太繁琐,所以一般采用定长分块算法,采用固定长度分块计算数据Hash,无法识别数据细小变化,以及细小的变化导致增长块的变化,重删率不高但主存性能影响较小。
在实际应用中,如何选择备份软件、备份PBBA设备、企业级存储的重删,完全决定于应用和业务场景。通常还要考虑在线重删和后处理重删,在线重删是数据在写入磁盘之前进行重删;后处理重删是数据先写入磁盘,然后再读出来进行重删,重删之后的数据再写入磁盘中。通常在实际操作时,用户会根据所承载业务的负载,指定系统相对空闲的时间让重删包括压缩功能运行起来。搜索“ICT_Architect”加入微信公众号“架构师技术联盟”获取更多精彩内容。
相关阅读
>数据重删压缩技术分类
>闪存中数据重删技术浅析
>数据重删在主存如何实现
>大数据时代下数据重删的考虑
>数据重删在备份场景应用
Google揭露SHA-1碰撞,加速数据重删字节对比的更多相关文章
- GPU—加速数据科学工作流程
GPU-加速数据科学工作流程 GPU-ACCELERATE YOUR DATA SCIENCE WORKFLOWS 传统上,数据科学工作流程是缓慢而繁琐的,依赖于cpu来加载.过滤和操作数据,训练和部 ...
- WordPress 后台禁用Google Open Sans字体,加速网站
解决方法很简单,安装启用 Disable Google Fonts 或者 Remove Open Sans font Link from WP core 其中之一即可.或者如果你没有使用WP自带的官方 ...
- Fusion Tables 图层用于呈现 Google Fusion Tables 中包含的数据
Google Maps API 允许您使用 FusionTablesLayer 对象将 Google Fusion Tables 中包含的数据呈现为地图上的图层.Google Fusion Table ...
- TypeToken 是google提供的一个解析Json数据的类库中一个类
Type listType = new TypeToken<LinkedList<User>>(){}.getType(); Type是java里的reflect包的Type ...
- Django models .all .values .values_list 几种数据查询结果的对比
Django models .all .values .values_list 几种数据查询结果的对比
- 一个purge参数引发的惨案——从线上hbase数据被删事故说起
在写这篇blog前,我的心情久久不能平静,虽然明白运维工作如履薄冰,但没有料到这么一个细小的疏漏会带来如此严重的灾难.这是一起其他公司误用puppet参数引发的事故,而且这个参数我也曾被“坑过”. ...
- MySQL 笔记整理(13) --为什么数据表删掉一半,表文件大小不变?
笔记记录自林晓斌(丁奇)老师的<MySQL实战45讲> (本篇内图片均来自丁奇老师的讲解,如有侵权,请联系我删除) 13) --为什么数据表删掉一半,表文件大小不变? 我们还是以MySQL ...
- 【Debug】串口发送数据时部分字节被拉长,出现帧错误,原因MCU进入低功耗模式导致串口时钟停了!
串口发送数据时部分字节被拉长,出现帧错误,原因MCU进入低功耗模式导致串口时钟停了!
- 教你如何6秒钟往MySQL插入100万条数据!然后删库跑路!
教你如何6秒钟往MySQL插入100万条数据!然后删库跑路! 由于我用的mysql 8版本,所以增加了Timezone,然后就可以了 前提是要自己建好库和表. 数据库test, 表user, 三个字段 ...
随机推荐
- windows下用Eclipse连接大数据环境得hbase
1.解压hbase安装包 2.将大数据环境得hadoop安装包拷贝到windows(这里以d:/hadoop为例) 3.打开C:\Windows\System32\drivers\etc目录下的hos ...
- django组件整合
session Django中默认支持Session,其内部提供了5种类型的Session供开发者使用: 数据库(默认) 缓存 文件 缓存+数据库 加密cookie Django默认支持Session ...
- Laravel5.1 模型 --多态关联
什么是多态关联? 一个例子你就明白了:好比如说评论 它可以属于视频类 也可以属于文章类,当有个需求是 从评论表中取到视频类的数据,这就需要用到多态关联了. 简单的一句话总结:一张表对应两张表. 1 实 ...
- AWS系列-修改RDS时间(time_zone)
1.1 需求 数据库时间和北京时间相差8小时 开发人员发现app的时间与国内时间相差12小时,需要修改RDS的time_zone参数 1.2 打开RDS参数组 1.3 创建新的参数组 由于默认的参数组 ...
- thrift框架总结,可伸缩的跨语言服务开发框架
thrift框架总结,可伸缩的跨语言服务开发框架 前言: 目前流行的服务调用方式有很多种,例如基于 SOAP 消息格式的 Web Service,基于 JSON 消息格式的 RESTful 服务等.其 ...
- JavaScript-rem字体自适应
给html标签上添加 id=“FontSize”: 你期望满屏的rem值,如: <html font-size:100px></html> 我的主要内容为1200px,那么我的 ...
- 转SpringMVC Controller 返回值的可选类型
spring mvc 支持如下的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void. ModelAndView @RequestMap ...
- HDU 5677 ztr loves substring(回文串加多重背包)
ztr loves substring Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Othe ...
- eclipse中jar file与runnable jar file的区别
直接运行 .class的方法 java -cp . com.network.Chat , 不用加.class后缀 从eclipse中export 的jar file,仅仅是把.class ...
- 前端基础-css(2)
一.标准文档流 宏观的将,我们的web页面和ps等设计软件有本质的区别,web网页的制作,是个“流”,从上而下,像 “织毛衣”.而设计软件 ,想往哪里画东西,就去哪里画. 标准文档流下,有一些现象,比 ...