SERPENT算法学习心得

本文介绍了SERPENT算法的背景、数据加解密过程,包括初始和最终置换、32轮运算的详细步骤,以及密钥编排的补全和扩展过程。作者提供了C语言实现,并分享了软件实现中每一步的中间数据,以助于硬件实现时的验证。
摘要由CSDN通过智能技术生成
本文原创,转载请注明出处。
douqingl@gmail.com
1. 概述    
    由于工作的原因,我学习了SERPENT算法(注释1),并进行了软件实现,抓取了每一轮、每一步操作的中间数据,在此分享给大家。
    首先,要说明的是,我学习SERPENT算法是为了硬件实现,所以本文不涉及软件实现时要关注的软实现效率、算法优化,只是为了弄清算法的每一步在干什么,提取详尽的标准数据。 来源 http://blog.csdn.net/douqingl
    学习SERPENT算法时,我也查阅了一些资料。发现讲解最详尽的文档就是官方给出的说明文档——Serpent: A Proposal for the Advanced Encryption Standard(注释2)。但是这篇文档作为AES算法的投标文档,过分注重讲解算法设计时的数学原理,强调其安全性,对于数学基础不好的人来说,参照此文进行设计还是有些吃力的。
    撰写本文之前,我阅读了官方给出的说明文档,参照官方文档和代码( 注释3 ),自己写了C语言的实现,并用VS2010运行通过。我的C实现中,每一步运算的结果都打印了出来,方便我在硬件实现SERPENT时,抓取中间步骤的标准数据进行验证。
    我会提供我的VS2010工程的下载方式做为参考(注释4),毕竟算法只靠嘴上说实在是抽象,对照着代码,能更好的理清逻辑关系。
    正文分为 SERPENT算法数据加解密介绍SERPENT算法密钥编排介绍SERPENT软件实现两部分,进行详细阐述。
    
1. SERPENT算法数据加解密介绍
    1.1 SERPENT是一种 分组加密算法(注释5)。当年DES(DATA ENCRYPTION STANDARD)加密性已经无法满足要求了(在摩尔定律的驱动下,硬件快速发展,DES 56bit的密钥在暴力破解面前不堪一击),所以有关部门(NIST)要一个高速、安全的算法,然后SERPENT/TWOFISH/RC6等等算法都被发明出来,参与AES投标 (不过上述三个都没被选中,(*^__^*) 嘻嘻……,中标的是Rijndael)。5个进入最后一轮的算法中,SERPENT的安全性最高,但是由于运算速度等原因落选了(设计者过分注重安全性的开发,性能上向DES看齐了,所以说立项时候要高瞻远瞩啊~)。
    1.2 SERPENT运算时,每个BLOCK的长度是128bit(DES 64bit , Rijndael/  SM4 /  SM1 128bit ),密钥长度 128/192/256bit可选(其实是任意256bit以内,任意长度可选,128、192、256只是算法发明者建议的长度)。
    1.3 SERPENT有两个版本,区别是使用SBOX不同,SERPENT-0使用DES的SBOX,SERPENT-1使用新的SBOX。本文讨论SERPENT-1版本,即通常意义上的SERPENT。
    1.4 SERPENT算法整体结构如下,128bit数据输入后,先进行一次initial permutation(128bit input , 128bit output)打乱顺序,然后进行32轮运算后,进行一次final permutation(128bit input , 128bit output)再打乱一次顺序,输出就是运算结果了。注意,前31轮的运算使用同样的规则,而最后一轮使用特殊的规则,这一点不像DES,DES的16轮运算都是用同样的规则。同DES一样,initial permutation和final permutation互为反函数。
    我们命名initial permutation的输入为P(plain text),输出为B(0),每一轮的输入为B(n),输出为B(n+1),n为轮数,0~31。final permutation的输出为C(
  • 9
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值