因特网密钥交换( IKE )协议的文档中提到了PRF这个术语。
发布于 2014-05-10 13:44:07
PRF代表伪随机函数。PRF将以确定的方式将输入映射到输出(对于同一个PRF,相同的输入总是映射到相同的输出),对于不知道PRF的内部结构的攻击者来说,这与随机性没有区别(而且没有看到PRF已经处理了完全相同的输入,即使他们已经看到PRF处理了许多类似的输入)。
一般来说,PRF是从PRF家族随机抽取的。您可以认为PRF家族是一个函数,它接受额外的输入(随机种子,有时也称为随机键),它选择特定的PRF (将输入映射到输出)。因此,如果你有一个128位种子在你的PRF家族,那么有2^128个(340,282,366,920,938,463,463,374,607,431,768,211,456)可能的PRF,你可以使用从该家族。这与散列函数形成了对比,在哈希函数中只有几十个常用的散列函数(MD5、SHA-1、SHA-256、SHA-512等)。
假设您知道"Hello"映射到8b1a9953c4611296a827abf8c47804d7 (以十六进制表示)。攻击者可以很快发现我正在使用MD5,然后可以为他们想要的任何输入生成输出。
然而,基于HMAC哈希的MAC是一个PRF家族.因此,如果采用HMAC结构:H(K1 ++ H(K2 ++ m)),其中++表示连接,H是一个普通的散列函数,而K1和K2是两个键,它们被定义为使用K1 = K XOR 0x5c5c...5c和K2 = K XOR 0x3636...36从相同的键派生出来。现在,如果我告诉您,我的PRF (使用特定密钥K的HMAC )将"Hello"映射到53a7e60d93a6853780d622f3b5bd641f,那么攻击者(不知道K,但可能知道我正在使用HMAC-MD5)为他们从未见过的输入生成输出是不可能的。
在IKE协议中使用的实际PRF是在客户端和服务器之间协商的。用于IKEv2的RFC中指定的是HMAC_MD5、HMAC_SHA1、HMAC_TIGER (从不同的哈希函数生成的三个HMAC)和AES128_XCBC。在最初的IKE RFC中,未定义要使用的PRF:“目前还没有定义伪随机函数”。
注意,PRF和PRF家族之间的区别通常不会显式地进行。在文献中,通常会有两个输入(一个键,一个明文)并生成一个输入。
密码学中出现了两个相关的概念--PseudoRandom置换和PseudoRandom生成器。
伪随机置换(PRP)是一种一对一的PRF,它是一种特定类型的PRF,其中PRF的每个输出(使用相同的键)只能从一个输入产生。这允许一个人反转其应用程序的功能并撤销其应用程序的效果--因此您可以将PRP (需要知道一个秘密密钥)应用于明文,以创建一个密文,然后将PRP的逆序应用于密文(使用秘密密钥)来解密它。例如,像AES-128这样的分组密码是一个PRP --它接受128位和128位密钥的输入块,并将明文块映射到唯一的128位密文块。然后,可以反转这些操作将密文块映射到原始明文块(使用使用该密钥的AES-128的逆)。
伪随机产生器(PRG)是一个函数,它根据一些初始种子(例如,随机密钥)发射出现随机的比特流。这个比特流可以是XORed,有一个长的明文消息来加密它(所以密文看起来是随机的),然后你可以用密文对它进行解密,XORing是PRG的比特流。产生PRG的一种方法是采用像AES-128这样的分组密码,并在CTR模式下使用它。也就是说,您用相同的密钥对递增的连续块进行加密,然后将输出连接在一起,例如PRG(K) = AES(K, 0) ++ AES(K, 1) ++ AES(K, 2) ++ AES(K, 3) ++ ... ( ++的意思是级联)。
https://security.stackexchange.com/questions/57656
复制相似问题