SKINNY加密算法详解(无代码,仅加密)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了SKINNY加密算法详解(无代码,仅加密),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1781字,纯文字阅读大概需要3分钟。
内容图文
![SKINNY加密算法详解(无代码,仅加密)](/upload/InfoBanner/zyjiaocheng/834/bea0cfa6b463441e92b2ebefd6b1551e.jpg)
原作者论文请参考《The SKINNY Family of Block Ciphers and Its Low-Latency Variant MANTIS》
地址为:https://link.springer.com/chapter/10.1007/978-3-662-53008-5_5
代码及资源分析等参见:https://sites.google.com/site/skinnycipher/home
SKINNY 和 AES 类似,都是SPN结构的加密算法。
本文中截图多来自上述论文。
一、整体流程
其中包括5个步骤,分别为字节替换、轮加常数、轮加密钥、行移位、列混淆。
SKINNY有一下几种模式:
其中,n为明文长度,有64位和128位两种;对于每种明文,密钥有3种形式n/2n/3n,即64/128位、64/128 * 2位、64/128 * 3位;对应的模式下,分别运行32、36、40...轮。
首先,将明文划分为16份,若明文为64位,则每份半个字节;若为128,每份一个字节。
可变长度的密钥为以下形式,tk = tk0 tk1 ... tk16z-1 ,这里 z = 1, 2, 3。令0≤i≤15,当 z = 1 有TK1i = tki,当 z = 2 有TK1i = tk16+i,当 z = 3 有TK1i = tk32+i。
1. 字节替代(Subbyte)
字长有4bit和8bit两种,分别有对应的SBOX,对于4bit形式,有如下SBOX,
上述4-bit SBOX可以用或非门和异或门实现,如下操作:
对于4-bit和8-bit S盒,有如下结构:
对于8-bit S盒有以下操作,首先,
然后进行位置换,
重复以上步骤4次,但是在最后一次时仅对x1和x2置换。
2. 加常数(AddConstants)
6位的线性反馈移位寄存(LFSR)来产生常数,按以下方式更新:
LFSR的初始值为000000,在进行AddConstants操作前,进行更新。如进行第一轮AddConstants操作前,先进行000000→000001。
然后,
得到矩阵,将此矩阵加到状态矩阵上。
3. 轮密钥加(AddRoundTweakey)
密钥的第一行和第二行和状态矩阵相应的位置异或,对于 i = {0,1} 和 j={0,1,2,3},有以下操作:
然后将密钥按下图更新:
其中,置换函数PT 为:
即(0,...,15)→ (9,15,8,...,5,6,7),其中数字代表密钥矩阵的单元;
4. 行移位(ShiftRows)
矩阵第0行不变,第1行循环右移1个字节,第2行循环右移2个字节,第3行循环右移3个字节,可等效为以下字节置换操作;
5. 列混淆(MixColumns)
M * IS,其中,
若NSi表示更新后的第i行,Si表示更新前的第i行,参考以上形式,有
内容总结
以上是互联网集市为您收集整理的SKINNY加密算法详解(无代码,仅加密)全部内容,希望文章能够帮你解决SKINNY加密算法详解(无代码,仅加密)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。