什么是hash函数

哈希函数(Hash Function),也称为散列函数,给定一个输入x,它会算出相应的输出H(x)。哈希函数的主要特征是:

  • 输入x可以是任意长度的字符串
  • 输出结果即H(x)的长度是固定的
  • 计算 H(x) 的过程是高效的(对于长度为 n 的字符串 x ,计算出 H(x) 的时间复杂度应为 O(n) )

另外哈希函数一般还要求以下两种特点:

1、免碰撞:即不会出现输入 x≠y ,但是H(x)=H(y) 的情况,其实这个特点在理论上并不成立,比如目前比特币使用的 SHA256 算法,会有 2^256 种输出,如果我们进行 2^256 + 1 次输入,那么必然会产生一次碰撞,事实上,通过 理论证明 ,通过 2^130 次输入就会有99%的可能性发生一次碰撞,不过即使如此,即便是人类制造的所有计算机自宇宙诞生开始一直运算到今天,发生一次碰撞的几率也是极其微小的。

2、隐匿性:也就是说,对于一个给定的输出结果 H(x) ,想要逆推出输入 x ,在计算上是不可能的。如果想要得到 H(x) 的可能的原输入,不存在比穷举更好的方法。

hash 算法的原理是试图将一个空间的数据集映射到另外一个空间(通常比原空间要小),并利用质数将数据集能够均匀的映射。目前主流的 hash 算法有:md4md5sha系列

MD4

MD4是麻省理工学院教授 Ronald Rivest 于1990年设计出来的算法。其摘要长度为128位,一般用32位的十六进制来表示。

2004年8月清华大学教授王小云,指出在计算MD4时可能发生杂凑冲撞。不久之后,Dobbertin 等人发现了MD4在计算过程中第一步和第三步中的漏洞,并向大家演示了如何利用一部普通电脑在几分钟内找到MD4中的冲突,毫无疑问,MD4就此被淘汰掉了。

MD5

1991年,Rivest 开发出技术上更为趋近成熟的MD5算法,它在MD4的基础上增加了"安全-带子"(safety-belts)的概念。虽然 MD5 比 MD4 复杂度大一些,但却更为安全。这个算法很明显的由四个和 MD4 设计有少许不同的步骤组成。

MD5 拥有很好的抗修改性,即对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。

MD5很好的用在了大文件的断点续传上:如果有一个 5MB 的文件 客户端把它分割成5片 1MB 的文件 在上传的时候上传两个 MD5 值,一个是当前上传的文件片的 MD5 还有一个就是拼接之后的 MD5 (如果现在上传的是第二片 这个MD5就应该是第一片加上第二片的MD5), 通过这样的方式能保证文件的完整性。

当如果文件传到一半断了,服务器可以通过验证文件 MD5 值就可以得知用户已经传到了第几片,并且知道之前上传的文件有没有发生变化,就可以判断出用户需要从第几片开始传递。

不过在2004年8月的国际密码学会议(Crypto’2004),王小云提出了一种快速找到 MD5 碰撞的方法(参见其论文),降低了 MD5 的安全性,人们开始寻求更加可靠的加密算法。

SHA系列

SHA的全称是Secure Hash Algorithm(安全hash算法),SHA系列有五个算法,分别是 SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512,由美国国家安全局(NSA)所设计,并由美国国家标准与技术研究院(NIST)发布,是美国的政府标准。后四者有时并称为 SHA-2。SHA-1在许多安全协定中广为使用,包括 TLS/SSL 等,是 MD5 的后继者。

SHA-1

最初该算法于1993年发布,称做安全散列标准 (Secure Hash Standard),最初这个版本被称为"SHA-0",它在发布之后很快就被NSA撤回,因为有很大的安全缺陷,之后在1995年发布了修订版本,也就是SHA-1。

SHA-0 和 SHA-1 会从一个最大 2^64 位元的讯息中产生一串 160 位元的摘要,然后以 MD4 及 MD5 算法类似的原理来加密。

2017年,谷歌发布了最新的研究成功,宣布攻破了SHA-1,并详细描述了成功的SHA1碰撞攻击方式,使用这种方式,可以在亚马逊的云计算平台上,耗时10天左右创建出SHA-1碰撞,并且成本可以控制在11万美元以内。

即使如此,对于单台机器来说攻击的成本依然很高,发生一次SHA-1碰撞需要超过9,223,372,036,854,775,808个SHA1计算,这需要使用你的机器进行6500年计算。

SHA2

SHA2包括了SHA-224、SHA-256、SHA-384,和SHA-512,这几个函数都将讯息对应到更长的讯息摘要,以它们的摘要长度(以位元计算)加在原名后面来命名,也就是说SHA-256会产生256位长度摘要。

SHA-2相对来说是安全的,至今尚未出现对SHA-2有效的攻击!

由于目前大量的网站使用的SSL数字证数都是使用SHA-1签名的,而SHA-1又已经不安全,各大浏览器厂商均宣布了弃用SHA-1的时间表:


可以看出,在时间表之后,如果检测到网站的证书使用的还是SHA-1,就会弹出警告:


为了防止网站因出现上面的警告而显得不专业,我们需要尽快的申请使用跟安全放心的基于SHA-2签名的证书。


待调查的问题:

  • 生日彩虹表攻击
  • 字典攻击
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343