基于ARX结构(模加运算&循环移位&异或运算)的密码杂凑算法Lemon512

基于ARX结构(模加运算&循环移位&异或运算)的密码杂凑算法Lemon512

黄金龙

QQ1435271638

密码杂凑算法

密码杂凑算法也称作“散列算法”或“哈希算法”,现在的密码行业标准统称其为密码杂凑算法,简称“杂凑算法”或“杂凑函数”。密码杂凑算法对任意长度的消息进行压缩,输出定长的消息摘要或杂凑值,可用于数字签名、完整性保护、安全认证、口令保护等。用于完整性保护时,杂凑算法常常与密钥一同使用,生成的杂凑值称为MAC,这样的杂凑算法称为带密钥的杂凑算法(Keyed-hash Message Authentication Code,HMAC)。目前比较常见的密码杂凑算法有MD5HAVAL、RIPEMD、SHA-0、SHA-1、SHA-2、SHA-3和SM3等。

ARX结构型密码算法

采用ARX结构的密码算法仅使用模加运算&循环移位&异或运算,它的代数结构非常简单,非常易于软硬件实现。模加运算作为唯一的非线性运算,它提高了算法的非线性复杂度。循环移位从字层面为ARX密码提供了扩散能力,而异或操作从比特层面为ARX密码提供了混淆能力,模加运算提高了对 ARX 型密码算法的分析的困难程度。ARX类型算法具有良好的扩散和混淆性质,传统的差分攻击、线性攻击和代数攻击等密码分析方法针对该类算法的攻击效果通常并不理想。由于在效率、安全性和易实现性等方面的优势,ARX 型密码得到了广泛应用,多个国际对称密码标准都采用了ARX型设计。

Lemon512算法简介

Lemon512为基于ARX结构设计的密码杂凑算法,消息分组长度为512,杂凑值长度为512位,Lemon512的输入为长度不大于2^64的消息值,输出为512位的摘要值。

其中iv为链接变量初始值,hi-1为当前链接变量,mi-1为当前消息块,cf为压缩函数。

Lemon512算法使用ARX结构作为压缩函数的基本部件,因为仅仅使用了模加运算&循环移位&异或运算,这使得Lemon512算法在提高效率的同时安全性也得到了保证。Lemon512算法交替使用模加运算和异或运算,这比单纯使用模加运算或者异或运算更加复杂和更加能抵抗各种分析。

Lemon512算法的亮点

(1)压缩函数的每一轮状态更新都使用到了全部的16个32位消息字,这使得算法的抗碰撞性大大增强,这使得模减差分分析和比特追踪法对本算法均难以奏效。

(2)压缩函数中的轮函数使用ARX结构作为混淆扩散组件,这使得压缩函数轮函数的扩散性好,同时使用ARX结构很容易构造满足双射特性的轮函数。

(3)典型密码杂凑算法的将每一块消息输入压缩函数,而本算法将前i轮的消息累加和输入压缩函数,这使得算法的扩散性更强,雪崩效应更好。

(4)由于步函数H3=H3FFFF1(H0,H1,H2,M3)M3(y=f(M)+M),步函数中含有两个消息字,故步函数无法表示成消息字的显示形式(M=f(x)),在差分分析时增加了消息修改的困难性。该算法有效地增加了运用消息修改技术的困难,并且得到良好的差分扩散特性。

Lemon512密码杂凑算法描述

  • 29
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
基于期望最大化算法的有源自回归(ARX)型参数估计是通过最大化型对观测数据的可能性来估计型的参数。ARX型是一种线性自回归型,常用于时间序列分析和预测。 ARX型可以表示为: y(t) = a1*y(t-1) + a2*y(t-2) + ... + an*y(t-n) + b1*u(t-1) + b2*u(t-2) + ... + bn*u(t-n) + e(t) 其中,y(t)是系统的输出,u(t)是系统的输入,a1到an是型的自回归系数,b1到bn是型的外部输入系数,e(t)是系统的随机噪声。 基于期望最大化算法ARX型参数估计的步骤如下: 1. 初始化型参数a和b的初值。 2. 使用当前参数估计值计算预测输出y(t)。 3. 根据预测输出和观测数据计算误差e(t)。 4. 根据误差e(t)和观测数据计算参数估计的期望值。 5. 更新参数估计值。 6. 重复步骤2到5,直到参数估计收敛。 下面是基于期望最大化算法ARX型参数估计的MATLAB程序实现示例: ```matlab % 输入数据 u = [1 2 3 4 5]; % 外部输入 y = [0 2 4 6 8]; % 输出 % 初始化参数估计值 a = [0.5 0.5]; % 自回归系数 b = [0.5 0.5]; % 外部输入系数 % 迭代计算参数估计 epsilon = 0.001; % 设定收敛阈值 converged = false; while ~converged y_hat = zeros(size(y)); for t = 3:length(y) y_hat(t) = a(1)*y(t-1) + a(2)*y(t-2) + b(1)*u(t-1) + b(2)*u(t-2); % 计算预测输出 end e = y - y_hat; % 计算误差 a_new = (y(3:end)'*[y(2:end-1) y(1:end-2)]') / (y(2:end-1)'*[y(2:end-1) y(1:end-2)]'); % 更新自回归系数 b_new = (y(3:end)'*[u(2:end-1) u(1:end-2)]') / (u(2:end-1)'*[u(2:end-1) u(1:end-2)]'); % 更新外部输入系数 if max(abs(a_new - a), abs(b_new - b)) < epsilon % 判断是否收敛 converged = true; end a = a_new; % 更新参数估计值 b = b_new; end % 输出参数估计结果 disp("自回归系数: " + a) disp("外部输入系数: " + b) ``` 以上MATLAB程序是通过迭代计算最大化ARX型的可能性函数来估计型的参数。程序根据输入数据和初始参数估计值,重复计算预测输出和误差,并更新参数估计值,直到参数收敛。最终输出估计得到的自回归系数和外部输入系数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

黄金龙2333

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

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

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

打赏作者

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

抵扣说明:

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

余额充值