首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >流密码、XOF、种子扩展器、KDF等的功能差异

流密码、XOF、种子扩展器、KDF等的功能差异
EN

Cryptography用户
提问于 2018-02-08 04:09:56
回答 2查看 760关注 0票数 10

这是一个要求澄清术语的问题。

  1. 在规范的XOF接口中,输出可以根据需要进行扩展,但是在某些构造中,输入必须是可变长度还是可以固定长度?

based{128-256}是第一个著名的标准化XOFs,它之前有许多自组织结构,如OAEP-MGF、AES-CTR、基于RC4/CTR 20的arc4random()函数。

  1. 对于AES-CTR和RC4/ they 20,它们在任何意义上也是XOF吗?如果不是,他们严格地说是什么?
  2. 种子膨胀器是做什么的?它是否以固定/可变长度的位串作为输入,并生成另一个固定/可变长度的位串作为输出?
  3. 到底什么是XOF,种子-扩展程序之间的关系(可选地提出KDF)。
EN

回答 2

Cryptography用户

回答已采纳

发布于 2018-02-08 05:56:27

在我们开始回答这些子问题之前,让我们先提出一些背景知识。

海绵结构最初是由Keccak小组提出的,作为较老的RadioGatún散列函数的安全证明中的桥接元素。在他们的网页上,他们将其描述为哈希函数(var->fix)和流密码(fix->var)的推广。

因为奶昔-128/256是直接基于海绵结构的,我们现在假设作者打算用XOF作为他们商标产品Sponge的通用术语。

代码语言:javascript
代码运行次数:0
运行
复制
type                input                  output
stream cipher       fixed-length key       variable-length key-stream
xof                 variable-length data   variable-length data
hash function       variable-length data   fixed-length digest

所以问题1可以这样回答:不,这违反了XOF的定义。

问题2:否。它们是流密码,其中两个使用计数器构造。

如果您在2018-02年在Bing上搜索“加密种子扩展器”,那么与Crypto.SE无关的前几个结果将引用NIST页面进行后量子加密。故事是这样的:

在为竞赛做准备的早期,NIST指定提交者使用libc ()获得他们的keygen签名加密函数的随机源。官方邮件清单上的显著参与者正确地对此提出了抗议。

经过讨论,决定对1有单独的随机性要求。)生成少量的密钥材料,足以满足给定的安全级别和2。将键控材料扩展为较长的位串,从中提取数学对象。

后者在NIST的官方文件中被称为“种子膨胀器”,大致相当于DRBG。

因此,问题3的回答如下:它所做的就像DRBG/PRNG所做的那样。应用DRBG的接口。

我想回答问题4如下:比较它们是没有意义的,因为它们的目的是不同的。这一不同的目的也使得它们的编程接口也不同。例如,XOF函数的典型接口比DRBG的接口简单得多,而且比KDF有更少的参数可调。

票数 13
EN

Cryptography用户

发布于 2018-11-07 19:20:04

XOF:输入是从某个消息空间(通常是任意长度)提取的消息;输出是一个非常长的位字符串(用户截断到他们想要的长度)。XOFs具有与传统密码散列函数相对应的安全性要求:即使没有秘密输入,也必须抵抗预图像和碰撞攻击。

流密码:输入是一个统一的随机密钥,通常也是一个随机密钥;输出是一个长比特字符串,它是伪随机的--攻击者在任何合理的时间内都不能将其与随机位字符串区分开来。

种子扩展器:我不知道这里有什么精确的定义,但是它听起来像一个函数,它接受一个统一的随机种子,输出一个长的伪随机位字符串。本质上类似于流密码,除非它的含义是每个随机种子只使用一次。

KDF:在最强烈的意义上,这是一个接受非均匀随机输入的函数,产生接近一致的伪随机输出。还有一种更弱的感觉:一个函数,它接受统一的随机键,产生更长、更强的派生伪随机键。(第一种意义体现在香港发展基金-摘录中,第二种含义体现在香港发展基金-扩展-这是香港发展基金计划的两部分。)

到目前为止,我想说的最重要的概念是随机秘密输入的函数和没有随机秘密输入的函数。这使得XOFs与列表的其他部分的区别超过了输入或输出长度。您可以将包含随机密钥的输入输入到XOF,但这是您使用它的方式的一个偶然细节;该函数的设计是为了在没有任何秘密的情况下抵抗攻击(例如,对数字签名的散列消息)。

相反,您必须将随机密钥提供给流密码,该密钥的设计并不是为了在没有攻击的情况下抵抗攻击。它回答了一个常见的新手问题:“我可以使用流密码作为散列吗?”一般情况下不会,因为作为流密码的适应度并不能保证作为散列的适合性。

票数 5
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/55462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档