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, 三个字段 ...
随机推荐
- Unity3D入门其实很简单
在上次发布拙作后,有不少童鞋询问本人如何学习Unity3D.本人自知作为一名刚入门的菜鸟,实在没有资格谈论这么高大上的话题,生怕误导了各位.不过思来想去,决定还是写一些自己的经验,如果能给想要入门U3 ...
- Maven使用deploy上传jar包到远程库 以Oracle驱动为例
一.首先要得到Oracle JDBC Driver 1.通过Oracle官方网站下载相应版本:http://www.oracle.com/technetwork/database/features/j ...
- tinypng的python批量压缩图片功能
tinypng网站提供的图片压缩功能很不错,但是直接在网站上压缩有限制,大量压缩图片时比较麻烦,还好官方提供了很多脚本的自动化压缩接口.下面简单说下python批量压缩步骤. 1.申请api key ...
- 基于注解的Spring AOP拦截含有泛型的DAO
出错场景 1.抽象类BaseDao public abstract class BaseDao<T> { public BaseDao() { entityClass = (Class&l ...
- [MySQL] 变量(参数)的查看和设置 [转]
[MySQL] 变量(参数)的查看和设置 类似于Oracle的参数文件,MySQL的选项文件(如my.cnf)用于配置MySQL服务器,但和Oracle叫法不一样,在MySQL里, 官方叫变量(Var ...
- tsinsen A1333. 矩阵乘法
题目链接:传送门 题目思路:整体二分(二分的是答案,附带的是操作) 把矩阵中的元素对应成插入操作,然后就有插入和询问操作. 然后根据插入操作对于答案的影响,询问操作所匹配的符合答案个数,将操作分为两段 ...
- 【BZOJ4590】[Shoi2015]自动刷题机 二分
[BZOJ4590][Shoi2015]自动刷题机 Description 曾经发明了信号增幅仪的发明家SHTSC又公开了他的新发明:自动刷题机--一种可以自动AC题目的神秘装置.自动刷题机刷题的方式 ...
- 【BZOJ4621】Tc605 DP
[BZOJ4621]Tc605 Description 最初你有一个长度为 N 的数字序列 A.为了方便起见,序列 A 是一个排列. 你可以操作最多 K 次.每一次操作你可以先选定一个 A 的一个子串 ...
- 第08章—整合Spring Data JPA
spring boot 系列学习记录:http://www.cnblogs.com/jinxiaohang/p/8111057.html 码云源码地址:https://gitee.com/jinxia ...
- ES6通过Set数组去重
一.Set 1.定义 Set对象是ES6中新定义的数据结构,类似于数组,它允许你存储任何类型的唯一值,不管是原始值还是对象引用. 2.语法 new Set([iterable]) iterable:可 ...