密码学学习笔记(十四):SHA-3 & Sponge Construction - 海绵结构

SHA-3算法满足了哈希函数的三个安全属性,并且和SHA-2的变体达到同样级别的安全性。此外,SHA-3算法不容易受到长度扩展攻击,并可用于计算秘密消息的哈希值。

SHA-3是一种建立在Permutation(置换)之上的密码算法。

置换就是假设有两个数组a和b,a中的任意一个元素可以指向(只能指向一个)b中的任意一个元素,这样元素之间就进行了置换。任何置换都是可逆的,也就是说可以根据输出找到其对应的输入。

海绵结构

在密码学中海绵结构是一种创建函数的操作方法,该函数使用固定长度排列(或变换)和填充规则将可变长度输入映射到可变长度输出。海绵函数接受z_{2}的元素或任意长度的二进制串作为输入,并返回z^{n}_{2}的元素或用户提供值为n的二进制串。海绵函数是具有固定输入长度的流密码和具有固定输出长度的哈希函数的推广。它通过在输入或检索输出时对有限状态重复应用内部排列来工作。

假设有一个基于8比特置换创建的映射函数

...

一个使用特定置换函数f的海绵结构,通过依次输入所有可能的8比特串,示例中的置换可以创建一个从8比特输入到8比特输出的映射。

置换函数f将大小为8比特的输入随机化为长度相同的输出。在海绵结构中,这种置换的输入和输出都分为两个部分:比率(长度为r)和容量(长度为c)

容量也可以看作秘密值,容量越大,海绵结构就越安全。

将哈希函数的输入和置换输入的比率进行异或操作来计算消息的哈希值。

 

实现对输入的随机化

 

 如果想要计算更长输入的哈希值:

  • 对输入进行填充,然后将输入分成与比率比特串长度相等的分组
  • 迭代调用置换函数,比如使用多个置换函数对应多个消息分组。

SHA-3

SHA-3使用的海绵结构允许数据被“吸收”(Abosorbing)到海绵中,然后被“挤压”(Squeezing)。在吸收阶段,消息块被异或为状态的子集,随后使用置换函数f完全改变。在“挤压”阶段,状态转换函数f与从状态的同一子集读取输出块交替,并创建摘要。状态的可写和可读部分的大小被称为“速率”(表示为r),而不受输入/输出影响的部分的大小则称为“容量”(表示c)。系统的安全性由容量决定。

SHA-2、SHA-1、MD5和其他基于Merkle-Damgrd架构的哈希函数在长度扩展攻击中的漏洞通过内部状态S在发送给Z的数据之外还包含c个额外的数据位来消除。
在SHA-3中,状态S由5-5个字阵列组成,每个字长w位(w=64),总共给出1600位。此外,Keccak被指定为小到1位(总状态为25位)的2次方字大小。小状态大小(从w=8200位到w=32800位)可用于评估密码分析攻击,而中等状态大小(来自这些值)可应用于现实世界中的轻量级应用。

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Sponge结构的密码杂凑函数是一种常见的密码学原语,它可以用于构建安全的密码杂凑算法。下面是对使用Sponge结构的密码杂凑函数的详细描述: 1. Sponge结构概述: - Sponge结构是一种基于置换和固定输入长度的可逆函数结构。它由两个主要部分组成:置换函数(Permutation)和吸收函数(Absorption)。 - 置换函数是一个可逆的变换函数,将输入数据进行置换和混淆,以增加密码杂凑算法的安全性。 - 吸收函数接受输入数据,并将其分成固定长度的块,然后通过与置换函数的迭代运算来混合和处理这些块。 2. Sponge结构的工作方式: - 吸收阶段:输入数据被分成固定长度的块,然后通过与置换函数的迭代运算进行混合和处理。每个块都会与当前状态进行异或运算,然后通过置换函数更新状态。 - 挤压阶段:在吸收阶段完成后,继续进行一些迭代运算,以生成输出数据。输出数据的长度可以根据需要进行调整。 - 迭代次数:Sponge结构的安全性和性能取决于迭代次数。较高的迭代次数可以提供更高的安全性,但也会增加计算成本。 3. 安全性和应用: - 使用Sponge结构的密码杂凑函数,如Keccak和SHA-3,被广泛应用密码学领域,如数字签名、消息认证码、密钥派生等。 - Sponge结构具有较好的安全性特性,如抗碰撞、抗第二前像和抗预像等性质。 - 由于其灵活性和可扩展性,Sponge结构还可以用于构建其他密码学原语,如伪随机数生成器(PRNG)和可扩展认证(eXtensible Authentication Protocol,EAP)等。 总体而言,使用Sponge结构的密码杂凑函数是一种有效且安全的密码学原语,它通过吸收和挤压阶段的迭代运算来处理输入数据,并提供了多种应用中所需的安全性特性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值