基于LFSR和NFSR的流密码算法Grain v1

基于LFSR和NFSR的流密码算法Grain v1

0x0简介

Grain算法是由瑞典的 Hell,Johansson 和瑞士的 Meier 共同设计的一种面向硬件实现的流密码算法。Grain算法面向硬件实现,具有运行速度快、安全性高、灵活输出密钥流等优点,并已成为eSTREAM(欧洲流密码算法计划)的7个优胜算法之一。

Grain算法共有三个版本:Grain v0Grain v1Grain-128,这三个版本的结构基本相同,其中Grain v0和Grain v1的LFSRNFSR均为80位,内部状态变量为160位;而Grain-128的LFSR和NFSR均为128位,其内部状态变量为256位。本文介绍到的是Grain v1算法。

0x1 Grain v1算法模型

Grain v1算法面向比特,其密钥K长度为80比特,表示为(k0,k1,...,k79),初始向量IV长度为64比特,表示为(IV0,IV1,...,IV63)。Grain v1结构由三个部分组成,包括线性反馈移位寄存器LFSR、非线性反馈移位寄存器NFSR和非线性布尔过滤函数h(x),其中LFSR表示为(s0,s1,....,s78,s79),NFSR表示为(b0,b1,...b78,b79)。LFSR的更新函数f(x)和NFSR的更新函数g(x)以及过滤函数h(x)和密钥流输出函数表示如下所示:

0x1.1 LFSR

0x1.2 NFSR

0x1.3 过滤函数

0x1.4 密钥流输出函数

0x2初始化(不输出密钥)

把80bit的密钥K=(k0,k1,...,k79)依次填充到NFSR的内部状态;把64bit的初始量IV=(iv0,iv1,...,iv63)填充到LFSR的前64位,而LFSR的后16位用全1填充。然后运行160轮,将得到的密钥流比特反作用于两个移位寄存器的更新,最终完成初始化阶段。

Grain v1算法初始化结构图

0x3密钥生成(输出密钥)

算法初始化过程执行完毕之后,每更新一轮,输出1bit的密钥。具体实现过程如下图所示。

Grain v1算法密钥输出结构图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黄金龙PLUS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值