330 likes | 573 Views
HASH —— 精炼的艺术. ——PPCA2014 自主选题演讲. 徐亦飞 ACM Honored Class 2014 年 7 月 24 日. 何为哈希 ……. Hash 函数是把任意长度的二进制串映射到特定长度的二进制串的函数。 我们写过 HashMap 上上周机考题似乎 能用 hash ?. 图片 太 大被删了. 期待我讲题 ……. 才不会被你们打脸呢 ……. HASH —— 精炼的艺术. —— 通俗易懂的科普其应用. 徐亦飞 ACM Honored Class 2014 年 7 月 24 日. 哈希的精髓是?. 1 、单向性. 2 、摘要性.
E N D
HASH——精炼的艺术 ——PPCA2014自主选题演讲 徐亦飞 ACM Honored Class 2014年7月24日
何为哈希…… • Hash函数是把任意长度的二进制串映射到特定长度的二进制串的函数。 • 我们写过HashMap • 上上周机考题似乎 能用hash? 图片太大被删了
期待我讲题…… • 才不会被你们打脸呢……
HASH——精炼的艺术 ——通俗易懂的科普其应用 徐亦飞 ACM Honored Class 2014年7月24日
哈希的精髓是? 1、单向性 2、摘要性 每条信息对应唯一的Hash值;而且很短(相对于信息本身) 不同信息的Hash值(几乎)不相同。 应用 (低成本的)匹配/校验 从所有其他信息到有限地址的映射 • 我们不能从输出的Hash值中反向得出结果。(除了暴力枚举) • 应用:信息加密
感知哈希算法 鲁棒性 越低越好 无所谓 越高越好 加密/校验 寻址 此部分参见柏爷的prensentation (一致性哈希算法等等)
鲁棒性 任何一个二进制位的修改都会全盘改变哈希值的输出 加密/校验 越低越好 越高越好 “李佳俊”的MD5码: E33AF7E4911BFCF2F6A84000FB41CF1C “李佳骏”的MD5码: 2ADE18D10F502D533F5895A1E9168A5A
常见的加密算法(Hash Based) 图片太大被删了
图片太大被删了 1、补全 Message Digest Algorithm MD5 “李佳骏” “李佳骏000000000” 2、分块 “李佳|骏00|0000|000” 以上分块为每512位分块,最后一块为448位
图片太大被删了 4、4个辅助函数 3、一些初始变量 A=(01234567)16,B=(89ABCDEF)16,C=(FEDCBA98)16,D=(76543210)16 FF(a,b,c,d,Mj,s,ti)表示a=b+((a+F(b,c,d)+Mj+ti)<<<s) GG(a,b,c,d,Mj,s,ti)表示a=b+((a+G(b,c,d)+Mj+ti)<<<s) HH(a,b,c,d,Mj,s,ti)表示a=b+((a+H(b,c,d)+Mj+ti)<<<s) II(a,b,c,d,Mj,s,ti)表示a=b+((a+I(b,c,d)+Mj+ti)<<<s)
第一轮a=FF(a,b,c,d,M0,7,0xd76aa478)b=FF(d,a,b,c,M1,12,0xe8c7b756)c=FF(c,d,a,b,M2,17,0x242070db)d=FF(b,c,d,a,M3,22,0xc1bdceee)a=FF(a,b,c,d,M4,7,0xf57c0faf)b=FF(d,a,b,c,M5,12,0x4787c62a)c=FF(c,d,a,b,M6,17,0xa8304613)d=FF(b,c,d,a,M7,22,0xfd469501)a=FF(a,b,c,d,M8,7,0x698098d8)b=FF(d,a,b,c,M9,12,0x8b44f7af)c=FF(c,d,a,b,M10,17,0xffff5bb1)d=FF(b,c,d,a,M11,22,0x895cd7be)a=FF(a,b,c,d,M12,7,0x6b901122)b=FF(d,a,b,c,M13,12,0xfd987193)c=FF(c,d,a,b,M14,17,0xa679438e)d=FF(b,c,d,a,M15,22,0x49b40821)第二轮a=GG(a,b,c,d,M1,5,0xf61e2562)b=GG(d,a,b,c,M6,9,0xc040b340)c=GG(c,d,a,b,M11,14,0x265e5a51)d=GG(b,c,d,a,M0,20,0xe9b6c7aa)a=GG(a,b,c,d,M5,5,0xd62f105d)b=GG(d,a,b,c,M10,9,0x02441453)c=GG(c,d,a,b,M15,14,0xd8a1e681)d=GG(b,c,d,a,M4,20,0xe7d3fbc8)a=GG(a,b,c,d,M9,5,0x21e1cde6)b=GG(d,a,b,c,M14,9,0xc33707d6)c=GG(c,d,a,b,M3,14,0xf4d50d87)d=GG(b,c,d,a,M8,20,0x455a14ed)a=GG(a,b,c,d,M13,5,0xa9e3e905)b=GG(d,a,b,c,M2,9,0xfcefa3f8)c=GG(c,d,a,b,M7,14,0x676f02d9)d=GG(b,c,d,a,M12,20,0x8d2a4c8a)第三轮a=HH(a,b,c,d,M5,4,0xfffa3942)b=HH(d,a,b,c,M8,11,0x8771f681)c=HH(c,d,a,b,M11,16,0x6d9d6122)d=HH(b,c,d,a,M14,23,0xfde5380c)a=HH(a,b,c,d,M1,4,0xa4beea44)b=HH(d,a,b,c,M4,11,0x4bdecfa9)c=HH(c,d,a,b,M7,16,0xf6bb4b60)d=HH(b,c,d,a,M10,23,0xbebfbc70)a=HH(a,b,c,d,M13,4,0x289b7ec6)b=HH(d,a,b,c,M0,11,0xeaa127fa)c=HH(c,d,a,b,M3,16,0xd4ef3085)d=HH(b,c,d,a,M6,23,0x04881d05)a=HH(a,b,c,d,M9,4,0xd9d4d039)b=HH(d,a,b,c,M12,11,0xe6db99e5)c=HH(c,d,a,b,M15,16,0x1fa27cf8)d=HH(b,c,d,a,M2,23,0xc4ac5665)第四轮a=II(a,b,c,d,M0,6,0xf4292244)b=II(d,a,b,c,M7,10,0x432aff97)c=II(c,d,a,b,M14,15,0xab9423a7)d=II(b,c,d,a,M5,21,0xfc93a039)a=II(a,b,c,d,M12,6,0x655b59c3)b=II(d,a,b,c,M3,10,0x8f0ccc92)c=II(c,d,a,b,M10,15,0xffeff47d)d=II(b,c,d,a,M1,21,0x85845dd1)a=II(a,b,c,d,M8,6,0x6fa87e4f)b=II(d,a,b,c,M15,10,0xfe2ce6e0)c=II(c,d,a,b,M6,15,0xa3014314)d=II(b,c,d,a,M13,21,0x4e0811a1)a=II(a,b,c,d,M4,6,0xf7537e82)b=II(d,a,b,c,M11,10,0xbd3af235)c=II(c,d,a,b,M2,15,0x2ad7d2bb)d=II(b,c,d,a,M9,21,0xeb86d391)第一轮a=FF(a,b,c,d,M0,7,0xd76aa478)b=FF(d,a,b,c,M1,12,0xe8c7b756)c=FF(c,d,a,b,M2,17,0x242070db)d=FF(b,c,d,a,M3,22,0xc1bdceee)a=FF(a,b,c,d,M4,7,0xf57c0faf)b=FF(d,a,b,c,M5,12,0x4787c62a)c=FF(c,d,a,b,M6,17,0xa8304613)d=FF(b,c,d,a,M7,22,0xfd469501)a=FF(a,b,c,d,M8,7,0x698098d8)b=FF(d,a,b,c,M9,12,0x8b44f7af)c=FF(c,d,a,b,M10,17,0xffff5bb1)d=FF(b,c,d,a,M11,22,0x895cd7be)a=FF(a,b,c,d,M12,7,0x6b901122)b=FF(d,a,b,c,M13,12,0xfd987193)c=FF(c,d,a,b,M14,17,0xa679438e)d=FF(b,c,d,a,M15,22,0x49b40821)第二轮a=GG(a,b,c,d,M1,5,0xf61e2562)b=GG(d,a,b,c,M6,9,0xc040b340)c=GG(c,d,a,b,M11,14,0x265e5a51)d=GG(b,c,d,a,M0,20,0xe9b6c7aa)a=GG(a,b,c,d,M5,5,0xd62f105d)b=GG(d,a,b,c,M10,9,0x02441453)c=GG(c,d,a,b,M15,14,0xd8a1e681)d=GG(b,c,d,a,M4,20,0xe7d3fbc8)a=GG(a,b,c,d,M9,5,0x21e1cde6)b=GG(d,a,b,c,M14,9,0xc33707d6)c=GG(c,d,a,b,M3,14,0xf4d50d87)d=GG(b,c,d,a,M8,20,0x455a14ed)a=GG(a,b,c,d,M13,5,0xa9e3e905)b=GG(d,a,b,c,M2,9,0xfcefa3f8)c=GG(c,d,a,b,M7,14,0x676f02d9)d=GG(b,c,d,a,M12,20,0x8d2a4c8a)第三轮a=HH(a,b,c,d,M5,4,0xfffa3942)b=HH(d,a,b,c,M8,11,0x8771f681)c=HH(c,d,a,b,M11,16,0x6d9d6122)d=HH(b,c,d,a,M14,23,0xfde5380c)a=HH(a,b,c,d,M1,4,0xa4beea44)b=HH(d,a,b,c,M4,11,0x4bdecfa9)c=HH(c,d,a,b,M7,16,0xf6bb4b60)d=HH(b,c,d,a,M10,23,0xbebfbc70)a=HH(a,b,c,d,M13,4,0x289b7ec6)b=HH(d,a,b,c,M0,11,0xeaa127fa)c=HH(c,d,a,b,M3,16,0xd4ef3085)d=HH(b,c,d,a,M6,23,0x04881d05)a=HH(a,b,c,d,M9,4,0xd9d4d039)b=HH(d,a,b,c,M12,11,0xe6db99e5)c=HH(c,d,a,b,M15,16,0x1fa27cf8)d=HH(b,c,d,a,M2,23,0xc4ac5665)第四轮a=II(a,b,c,d,M0,6,0xf4292244)b=II(d,a,b,c,M7,10,0x432aff97)c=II(c,d,a,b,M14,15,0xab9423a7)d=II(b,c,d,a,M5,21,0xfc93a039)a=II(a,b,c,d,M12,6,0x655b59c3)b=II(d,a,b,c,M3,10,0x8f0ccc92)c=II(c,d,a,b,M10,15,0xffeff47d)d=II(b,c,d,a,M1,21,0x85845dd1)a=II(a,b,c,d,M8,6,0x6fa87e4f)b=II(d,a,b,c,M15,10,0xfe2ce6e0)c=II(c,d,a,b,M6,15,0xa3014314)d=II(b,c,d,a,M13,21,0x4e0811a1)a=II(a,b,c,d,M4,6,0xf7537e82)b=II(d,a,b,c,M11,10,0xbd3af235)c=II(c,d,a,b,M2,15,0x2ad7d2bb)d=II(b,c,d,a,M9,21,0xeb86d391) 5、跑!
难以反编译出源码 单向性——数据加密 1、用于敏感信息的保存 (用以校验身份/正确性)
当然还是可以暴力破解的 图片太大被删了
进一步…… 将明文密码混入“随机因素”,然后进行单向哈希后存储,也就是所谓的“Salted Hash”。 这个方式相比上面的方案,最大的好处是针对每一个数据库中的密码,都需要建立一个完整的rainbow table进行匹配。 因为两个同样使用“passwordhunter”作为密码的账户,在数据库中存储的摘要完全不同。 图片太大被删了
再进一步…… 图片太大被删了 目前普遍的加密算法速度都是O(N)的,我们可以把他搞慢一点……
修改会改变Hash值→恶意修改会被发现→保证了文件的安全!修改会改变Hash值→恶意修改会被发现→保证了文件的安全! 唯一性——文件校验 图片太大被删了
更多应用:发现相同的文件;节约储存容量;云盘的极速秒传!更多应用:发现相同的文件;节约储存容量;云盘的极速秒传! 唯一性——文件校验
合二为一——数字签名 图片太大被删了
数字签名的简单原理 • 每个人都有一对“钥匙”(数字身份),其中一个只有她/他本人知道(密钥),另一个公开的(公钥)。签名的时候用密钥,验证签名的时候用公钥。 • 鉴权完整性不可抵赖 • 种类: • RSA签名 DSS签名 Hash签名
它是具有法律效应的! • 第 十八 号《中华人民共和国电子签名法》已由中华人民共和国第十届全国人民代表大会常务委员会第十一次会议于2004年8月28日通过,自2005年4月1日起施行。 图片太大被删了
感知哈希算法 鲁棒性 越低越好 越高越好 数据的小范围改动不会影响输出的Hash值 图片太大被删了
最熟悉的例子——识图搜索 图片太大被删了
感知哈希算法 • “多媒体信息区别于一般数据的特性 ,是由人类认知 多媒体的心理过程所决定的.根据认知心理学理论 ,该心 理过程是对多媒体信息的加工过程 ,有以下几个阶段:感觉输入、知觉内容、提取和认知辨识。” ” • 总之,感知哈希算法的强鲁棒性,让人感觉相似的东西能够有较为相似的hash值;人分辨不出区别/没多大区别的东西能够有相同的hash值。 • 于是搜索引擎可以通过搜索相似的Hash值实现各种识别。 图片太大被删了
感知哈希算法 • 图形感知哈希:识图搜索 • 音乐感知哈希:哼歌识别 • 视频感知哈希:目标追踪 • 生物感知哈希:人体生物信息
图形感知哈希 • aHashpHashdHash • SIFT ………… 图片太大被删了
aHash 1、缩小尺寸 图片太大被删了
2、简化色彩 3、计算平均 4、转变黑白 5、编码哈希 =8A2BC94E02FF539478D2FF5394788ABD5E0F9A
问题 图片太大被删了
2、简化色彩 3、计算DCT (不要问我那是啥,我不知道) 4、计算平均 5、编码哈希 =8A2BC94E02FF539478D2FF5394788ABD5E0F9A
更多问题…… 图片太大被删了
再次合二为一——更多的验证方式 图片太大被删了 • 面部识别 • 声纹验证 • 生物识别 • (指纹/手掌几何学/声音/视网膜/虹膜/签名/面部/基因/静脉/步态/人物) • ……(所以其实这只是比较像哈希实际不是哈希……参见zyy的pre.)
未来…… 万物 皆可Hash…… 图片太大被删了
谢谢……是不是过于简单了……这样最好,才不给你们打脸谢谢……是不是过于简单了……这样最好,才不给你们打脸 • Reference: • Baidu • Wikipedia • Csdn • Cnki • ………… • Thanks to: • Myself • Myself • Myself • Myself • ……