1.1 信息摘要算法简介 |
您所在的位置:网站首页 › 单向函数加密算法有哪些特点 › 1.1 信息摘要算法简介 |
信息摘要技术介绍
数据摘要算法(信息摘要)是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名、数据完整性校验等功能,由于算法具有其不可逆性,有时候也会被用做敏感信息加密。 数据摘要算法也被称为哈希(Hash)算法、散列算法; 特点消息摘要算法(杂凑算法,哈希算法)的主要特征是加密过程不需要密钥,并且经过加密的数据无法被解密,只有输入相同的明文数据经过相同的消息摘要算法才能得到相同的密文。 长度固定:无论输入的消息有多长,计算出来的消息摘要的长度总是固定的; 随机性:消息摘要看起来是“随机的”,一般随机都是伪随机; 碰撞:一般地,只要输入的消息不同,对其进行摘要以后产生的摘要消息也必不相同(潜在意思是可以相同);但相同的输入必会产生相同的输出; 单向不可逆:消息摘要函数是无陷门的单向函数,即只能进行正向的信息摘要,而无法从摘要中恢复出任何的消息,甚至根本就找不到任何与原信息相关的信息; 缺陷:好的摘要算法,没有人能从中找到"碰撞",但是“碰撞”是肯定存在的。信息摘要算法的单向不可逆、长度固定两个特点比较明显和重要; 应用:一般地,把对一个信息的摘要称为该消息的指纹或数字签名,信息摘要算法的主要用途是信息完整性校验,就好比我们接到一个快递,肯定都会先确定快递包装是否完整,有没有被人打开过,里面的东东有没有被人动过。 在计算机领域,我们也希望能知道别人传递的消息是否完整、是否有被篡改,这里就用到信息摘要算法。 信息摘要算法常常被用来保证信息的完整性,防止信息在传输过程中被篡改(无法确定信息是否被监听),也就常说的验签。 举例:我们传递password时,需要将password加salt后做信息摘要,接收方核对摘要,相同则接受处理,不相同则认为本次的password传输过程中被篡改,拒绝本次请求。 算法家族:信息摘要算法来源于CRC算法,最初CRC算法是用来验证数据完整性的,即我们常见的奇偶校验码、循环冗余校验,在CRC基础上发展出了MD和SHA两大算法家族,CRC比这些算法都要早,MD算法比SHA算法早,SHA算法是对MD算法的改进。再后来则发展出了可以带有密码的信息摘要算法-MAC算法。 信息摘要算法包括三大类,MD、SHA和MAC算法,MD的分类是按照版本规定的,SHA一般是按照产生的消息长度分类的,但是SHA系列算法在学术上会按照算法版本区分SHA-0、SHA-1、SHA-2、SHA-3, MAC算法是Hmac加融合的其他算来命名的。 MD系列算法: Message Digest Algorithm ,目前主流的是MD5算法,为第五版算法,之前有MD2、MD3、MD4算法。 SHA系列算法:安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA); MAC系列算法:带有密码信息的信息摘要算法,学名:密钥散列消息认证码,是对MD和SHA算法的演变和改进,包括Hmac-MD2、Hmac-MD4、Hmac-MD5、Hmac-SHA-256等。下表是主要的信息摘要算法的特点比较,关于MD5、SHA1等算法的具体过程,非安全、算法专业人士可不学习,如有需要可以参考下面的维基百科: MD5 算法介绍:https://zh.wikipedia.org/wiki/MD5 SHA算法介绍:https://zh.wikipedia.org/wiki/SHA家族 Hmac-MD5 算法介绍:https://www.zhihu.com/question/19816240 信息摘要算法的主要特点是设计一个函数f(n),所有数据经过这个函数后产生我们的摘要信息。 算法供应商美国对于算法出口有着严格的限制,Sun公司(现在应该是甲骨文了)限于美国算法出口法律的限制和本身的一些原因,并有提供特别全面的算法支持,不过java的加密模块被设计为:以SPI方式提供算法具体实现,可以用来透明的接入其他算法供应商,通过SPI机制可以直接使用其他算法供应商的jar包工具。 在Java中主要的算法供应商有三类:Sun本身的算法,包含在JDK中,大部分在JDK 1.6之后,Bouncy Castle和Commons Codec。 Sun算法:sun的算法也使用Java SPI机制提供,通过Securty.addProvider()可以注册算法实现; Bouncy Castle:开源加密组件,提供了很多JDK不支持的算法。 Commons Codec:也是开源组件,是Apache的项目,Apache的Commons项目应该广泛,简单易用,目标是提高Java Api的易用性。 算法选择 CRC算法不属于加密算法,比较古老,但是在数据压缩领域被广泛使用作为完整性校验; MD算法中MD5算法最流行,也是目前最流行的信息摘要算法,是大部分系统的首先,虽然MD算法破解门槛越来越低,但是一般应用足够了; SHA算法枝繁叶茂,比MD算法安全性高,尝尝用在一些安全性系数要求较高的环境,目前也逐渐替代MD5算法,用在注册、登录模块,在数字证书的签名算法中,SHA算法更广泛。 MAC算法是带有密钥信息的信息摘要算法,吸收了MD和SHA的精髓,安全程度更高。关于信息摘要算法的安全性讨论比较广泛,如何选取适合自己系统的算法要结合应用场景,就目前来说 MD系列算法都已经被成功碰撞出来,SHA-0和SHA-1系列算法也在理论上被找出了破解方法。 但是需要加密的场景的信息安全性要求应该先尝试寻找:国际标准 -> 国家标准 -> 行业标准 ,最后再自行决定采用哪种算法。比如金融行业国家要严格的信息安全加密要求,采用国密标准会比较合适。 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |