首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从随机数中导出随机数

从随机数中导出随机数
EN

Cryptography用户
提问于 2021-09-25 18:03:13
回答 3查看 92关注 0票数 1

如果我有一个“真正随机数”K of L位(不管“真正随机”的意思是什么).它是正态分布的一个值--一个真正的随机数,还是只有均匀分布被认为是“真正随机的”?)和TM \le L位的“真正随机数”,

KT之间的哪种算术/位算法能产生新的真正随机数?如果是M=LK + TK\ xor\ T是一个真正的随机数吗?或者,如果是M\lt L,像HKDF-expand-labelHKDF-extract或者仅仅是KT上的sha256这样的方法会产生真正的随机数吗?(例如,将K划分为L/M块的M位,应用其中的一些方法并将它们的输出连接起来)。

我想知道更多关于确定性算法需要哪些属性才能产生真正的随机数,只要它的输入是真正的随机数。

有几个猜测(假设M=L是简单的),K + T是一个真正的随机数,但K\ bitwise\_and\ T不是。

注意:我的问题是关于一次性便携密码的上下文。我想分别存储密码文本和K,并且只在需要解密时才通过安全通道传输它,而不是传输K本身,因为它必须匹配明文长度(可能很长),我正在考虑通过从J ( size L)和T of size M派生出来的方法计算K,两者都是随机数。J存储在客户端,T存储在服务器端并通过安全通道获取,K最终在客户端派生,解密后立即从内存中丢弃。最后,我的问题是,如果KT是真正的随机数,那么使用哪个派生函数就不能与真正的随机数区分开来。

EN

回答 3

Cryptography用户

回答已采纳

发布于 2021-09-26 00:28:19

你在这个问题上问了很多问题,但有三个问题很突出:-

不管“真正的随机”是什么意思。它是正态分布的一个值,是一个真正的随机数,还是只有均匀分布才被认为是“真正随机的”?

不是的。一个真正的随机数(分布)是简单的非代数,不可预测的,但遍历性。它没有种子,也没有生成公式。它只能用非常基本的组统计数据来分类。现实生活中的示例是来自基于齐纳二极管的设备的这种分布:-

该发行版有不是常用的名称。它有一个平均和标准差,但没有代数分位数,偏度或熵。它只是经验性地存在(有H_\infty \approx 6位/字节)。

我想知道更多关于确定性算法需要哪些属性才能产生真正的随机数,只要它的输入是真正的随机数。

唯一的主要属性是\operatorname{X}: \{0,1\}^n \to \ \{0,1\}^m m \lt n X可以是很多东西,如von提取器、CRC函数、矩阵、LFSR和一般(通用)哈希函数。但是,重要的一点是,X没有任何形式的加密功能。这是一个错误的想法,但安全性来自真正的随机输入位长度n

我正在考虑在客户端存储长度为L的随机数J,将预先生成的“真正随机令牌”T(唯一地与特定明文相关联)转换为T,并生成K客户端.

你实际上是在改进一次性键盘:-(除非你说的是量子密钥分发,那是不可能的,但这是在这个论坛上的共同尝试。)我对你的提议不太清楚,但赠与是产生效果的一种说法。一次pads不是在客户端生成的,而是集中在一对一或一对多的体系结构中。其他任何东西都是伪随机过程或流密码构造。

票数 3
EN

Cryptography用户

发布于 2021-09-25 21:28:55

关于均匀分布的独立随机数上的位算术/位算子(密码学通常使用均匀随机,但在格密码学中也有例外),XOR给出了均匀分布,+给出了三角分布,并给出了P(N)=0.25^{w(N)}0.75^{L-w(N)}分布,其中w是Hamming重量,乘积是复杂,差分是三角形,OR给出了类似的分布,但是随着w(N)L-w(N)的作用发生逆转,并且分布也与OR分布相同。

密码散列函数对统一输入的影响通常不知道是一致的,但通常是这样建模的。

对于一次性衬垫,您将需要一个统一的分布在所有键的长度相同的纯文本。一个通用的散列函数应该实现这一点,但是要确保输入是秘密的、适当的分布并且只使用一次。

票数 2
EN

Cryptography用户

发布于 2021-09-25 20:39:22

您提到的所有算法(HKDF和SHA-256)都是伪随机的。一般来说,你要用的任何方法把一些真正的随机数扩展到其他序列中也是伪随机的。这是因为这些算法是确定性的:如果你把相同的数据(熵)放进去,你就会得到同样的结果。

真正的随机数来自一个物理来源,并不是确定性的。这可能是放射性衰变,热噪音,自由运转的振荡器,或其他类型的来源.因为这些不一定会产生相同数量的1和零,并且失败也不是未知的,通常会有某种过滤和处理,这可能是一种密码算法,比如AES-CBC-MAC或SHA-256,或者某种偏置消除或缩小,比如XORing或Von去偏,或者两者兼而有之。

如果您使用TRNG并产生随机位,您可以使用TRNG中的更多位来异或它们,并获得相同的安全性,但这将是愚蠢的,因为您使用TRNG中的两倍多的位而没有增加安全性。类似地,您可以对具有两个TRNG值的字节执行模块化加法,但这同样具有相同的限制。按位和偏置输出,因此会削弱安全性。

由于任何扩展TRNG输出的算法都将是伪随机的,而不是真正的随机,所以您所提出的建议听起来就像一个基于TRNG的预先共享密钥的流密码。然而,这是完全可以作为一个设计!只要您选择一个安全的流密码,这是一个合法和安全的设计。然而,流密码不是一次性的垫子,也不能证明是安全的,但是在现实生活中使用起来要方便得多。

如果您确实选择了这种方法,我强烈建议您选择一个现有的、设计良好的库来构建这个库。TLS支持预共享密钥,当然还有其他库也可以用于消息。

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

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

复制
相关文章

相似问题

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