IPv6详解:SHA1算法实现及详解

SHA-1的算法属于密码学的知识,但是这个地方主要是由于在IPv6生成stable address的时候用到,所以在IPv6的模块进行介绍。


安全哈希算法(Secure Hash Algorithm)

SHA1是一种数据加密的算法,其思想就是将一段明文加密成一个不可逆的密文。 因为是不可逆的,所以是无法通过密文推测出明文的内容,所以这个算法不会被用来进行传输,一般主要是用来进行数据完整性校验。在数字签名之中应用比较广泛,  数字签名的原理是将要传送的明文通过一种函数运算(Hash)转换成报文摘要(不同的明文对应不同的报文摘要),报文摘要加密后与明文一起传送给接受方,接受方将接受的明文产生新的报文摘要与发送方的发来报文摘要解密比较,比较结果一致表示明文未被改动,如果不一致表示明文已被篡改。如下图展示下载软件的时候提供的SHA1用于验证下载数据包是否被破坏。


SHA1算法描述[FIPS 180-4]

网络中有很多这样的加密工具,可以先通过在线工具尝试一下效果,如下图所示:输入一段明文,然后选择SHA1(支持好多加密算法)输出一段密文ae5b5072d6bf792cb9398e28f01b656594b08046,可以看到输出是一个160位的消息摘要


SHA1把消息当成一个位(bit)字符串来处理。本文中,一个字(Word)是32位,而一个字节(Byte)是8位。比如,字符串“abc”可以被转换成一个位字符串

01100001 01100010 01100011。它也可以被表示成16进制字符串: 0x616263.

简单来讲:SHA-1算法是把输入二进制串分成512位的块,把二进制串的位数存储在最后64位,二者之间填充为0,依次对每个块进行一些列高深的数学运算,最后得到一个160位的二进制串

下面说明下整个算法的过程

1. 补位 

先进行填充,保证数据是512或者其倍数,SHA-1要求是512,。消息必须进行补位,以使其长度在对512取模以后的余数是448
补位是这样进行的:先补一个1,然后再补0,直到长度满足448。 如下图所示
比如abc 原始的比特字符串为:01100001 01100010 01100011 (长度为24bit)
在后面加一个1, 后面填0,到448bit,然后后面的64保持数据的真正bit长度,为24
这样就组成了一个512bit的填充消息

2.初始化Hash Value
在使用Hash进行计算之前,需要初始化Hash Value, H(0),一共160bit,每个32bit

3)SHA-1算法
计算W0~W79,这一部将每一个输入分组,计算80个32位值(W0~W79),首先将输入的512bit字串分成16个32位的组,命名为W0~W15

从上述公式中可以看出:在t属于(0~15)的时候,W(t)为 512bit分成的16个分组, 当t为(16~79)的时候:
W(t) = W(T-3) xor W(T-8) xor W(T-14) xor W(T-16)  循环左移一位  [ROTL的解释可以参考下图]

经过上述计算能够得到 W0~W79的值(根据要认证的数据块计算而得出)
4) SHA-1分组处理
通过上一步计算出W0~W79,这步主要是对这80个双字进行处理,首先要有一些计算使用的常量K(t)

在T不同的范围下,使用不同的分段函数

有了常量和函数,可以对t(0~79)内进行运算
先初始化A,B,C,D,E

在循环使用0~79 执行如下步骤

计算结果得到 a,b,c,d,e与原始的初始化的值相加

组成一个160bit摘要,上面就描述的是对一个512 块的SHA-1算法,如果是多个512块,进行循环即可。 组成的160位摘要信息:H0H1H2H3H4
算法的C语言实现可以参考: http://blog.csdn.net/c_duoduo/article/details/43889743

SHA-1算法结论

1. SHA-1使用big- endian
2. 没有发现两个不同的512块在相同的算法下产生相同的消息摘要
3. 速度慢于MD5
4.安全性高于MD5

参考资料


IPv6的时代即将到来! 《IPv6详解.卷1:核心协议实现》由开源的IPv6标准参考实现KAME的核心开发人员撰写,沿袭了被奉为经典的Richard Steverls的《TCP/IP详解》的写作方式和风格,覆盖了IPv6技术的全部内容,是毋庸置疑的IPv6权威参考书。书中详尽剖析了IPv6协议及其实现的技术细节,逐行诠释了KAME每一行代码的作用,并结合阐述了弥足珍贵的设计体会,对网络研究、设计和开发人员都有极高的参考价值。 全书分为两卷,第1卷介绍核心协议的实现。第2卷主要介绍高级协议的实现。《IPv6详解.卷1:核心协议实现》适合网络设计和开发人员阅读,对于下一代网络产品研发人员尤其具有参考价值。Qin9 Li 8Iue Coat系统公司资深架构师,负责领导下一代支持IPv6安全代理应用系统的设计和 开发工作:他曾在风河系统公司工作8年,是风河嵌入式IPv6产品的首席架构师:他拥有多项美国专利。并著有Real-Time Concepts forEmbedded Systems等畅销书。他还是FreeBSD操作系统项目活 跃的开发者: Tatuya Jinmei (神明达哉)东芝公司研究与开发中心的科学家。KAME项目核心开发人员。2003年在日本庆应义塾大学获得博士学位,Keiichi Shima(岛庆一)日本Internel lnitiative公司的资深研究人员。他的研究领域是IPv6IPv6移动性。KAME项目核心开发人员,开发了移动IPv6/NEMO基本支持协议栈:现在正致力于BSD操作系统中新的移动栈(SHISA栈)的研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值