• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

加密芯片的摘要算法特点与应用注意事项

Hash摘要算法是密码学算法中非常重要的一个分支,很多时候Hash也被称作散列算法。通俗来讲,它实现了如下功能:输入不同长度、不同内容的数据,经运算后生成长度固定内容唯一的数据。因其对输入长度无限制、摘要结果唯一且不可逆的特性,被广泛应用于数字签名、数据完整性校验等领域。起到防抵赖、防篡改的功能。

Hash只是摘要算法的统称,符合该特性的算法有多种,包括CRC32、MD5,SHA1等。CRC32算法出现时间较长,应用十分广泛,虽然其运算速度快,但其摘要值为4字节(32位),在当今大数据时代略显不够,出现摘要结果碰撞的可能性变大。SHA-1与MD5的最大区别在于其摘要比MD5摘要长32比特。对于强行攻击,产生任何一个报文使之摘要等于给定报文摘要的难度:SHA-1要高于MD5。产生具有相同摘要的两个报文的难度:SHA-1也是要高于MD5。即SHA-1的抗攻击性更强。因此虽然SHA-1的运行速度比MD5稍慢,但我们更推荐使用SHA-1进行数据摘要运算。

LKT绝大多数加密都自带SHA-1算法,我们并非一定要按照标准数字签名那样使用SHA-1算法,如果是版权保护防抄板的客户,可以利用SHA-1对线路传输数据做防篡改保护,举例证明:MCU和加密芯片分别预置8字节密钥KEY,MCU端还需要移植SHA-1算法(凌科芯安可提供源码)。当MCU要发送指令112233给加密芯片。发送前先对112233 + KEY进行SHA-1运算生成20字节数据A,然后将112233+A(注意不包含KEY)发送给加密芯片。后者接收到数据后,使用内部自带的SHA-1接口对接收到的112233+KEY进行摘要获得20字节数据B,如果A等于B,则证明MCU发来的112233为原始值,没有被篡改。然后再对112233进行解析并应用到程序下一步运行中。加密芯片返回数据的时候,也可以做同样操作,这样MCU也可对接收到的数据做防篡改判断。

如果数据加解密需求的客户要应用SHA-1算法就更为简单了,我们COS指令类的加密芯片,同样支持SHA-1算法,受加密芯片通讯协议的限制,用户每次最多能传输255字节数据,因此大于255字节的数据要分次传入加密芯片中,后者实时计算临时摘要结果并丢弃输入数据,因此不必担心芯片内存溢出的问题。

还有最后一点要提醒大家,SHA-1和其他摘要算法一样,它并不是加密算法,所以不要拿它与3DES、AES、RSA等算法横向对比。

全部回复(8)
正序查看
倒序查看
2017-07-14 17:10
按照楼主说的,Hash摘要算法不是加密算法,那他是单向运算的吗?
0
回复
Hex315
LV.5
3
2017-07-17 09:18
@小屁孩456
按照楼主说的,Hash摘要算法不是加密算法,那他是单向运算的吗?
对啊。Hash摘要算法主要是防抵赖、防篡改的功能。
0
回复
114W1
LV.5
4
2017-07-21 16:41
@Hex315
对啊。Hash摘要算法主要是防抵赖、防篡改的功能。
摘要算法主要应用在哪里?
0
回复
邓女士
LV.5
5
2017-07-22 20:18
@114W1
摘要算法主要应用在哪里?
主要适用于数字签名。数字签名内容较多,这里无法详细介绍,可以自己上网查,网上有很多。
0
回复
2017-07-26 21:05
@邓女士
主要适用于数字签名。数字签名内容较多,这里无法详细介绍,可以自己上网查,网上有很多。
怎么实现防抵赖、防篡改的功能?
0
回复
2017-07-27 10:33
@人称福爷
怎么实现防抵赖、防篡改的功能?
摘要算法对于消息会产生一个固定长度的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。只有比对摘要,即可判断消息是否发生改变。
0
回复
Mr_Wang_
LV.4
8
2017-07-28 09:29
@miniminimini
摘要算法对于消息会产生一个固定长度的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。只有比对摘要,即可判断消息是否发生改变。
楼主介绍了几种摘要算法,CRC32,MD5,SHA1,在这几种里,SHA最好是吧?
0
回复
voltage00
LV.2
9
2017-07-28 15:15
@Mr_Wang_
楼主介绍了几种摘要算法,CRC32,MD5,SHA1,在这几种里,SHA最好是吧?
对,是常用的。现在还有SHA256,比SHA1更安全。
0
回复