📜  什么是RC4加密?

📅  最后修改于: 2021-08-29 02:48:13             🧑  作者: Mango

RC4是Ron Rivest在1987年为RSA Security发明的Rivest Cipher 4。它是流密码。流密码器逐字节地对数据流进行操作。 RC4流密码由于其简单性和操作速度而成为最广泛使用的流密码之一。它是具有面向字节操作的可变密钥大小的流密码。它使用64位或128位密钥大小。它通常用于安全套接字层(SSL),传输层安全性(TSL)等应用程序中,并且还用于IEEE 802.11无线LAN std。

为什么加密很重要?

通过加密可以防止未经授权的数据访问。如果我们执行加密,则第三方将无法访问我们共享或接收的数据。加密是通过使用秘密密钥来完成的,或者可以说是通过使用公共密钥和私有密钥来进行的。发送者和接收者都具有其公共密钥和私有密钥,通过它们执行明文的加密和密文的解密。

RC4加密的历史

RC4由Ron Rivest于1987年设计。他在RSA Security下工作。 Rivest Cipher 4是官方名称,也称为Ron’s Code。最初,RC4是商业机密,但一旦代码在公共领域传播,它就不再是商业机密。尽管Ron直到2014年在英语维基百科上描述RC4的历史时才公开RC4算法。

RC4的应用

RC4用于各种应用程序,例如1997年的WEP和2003年的WPA。我们还发现RC4在1995年以来在SSL中得到了应用,它是1999年TLS的后继产品。RC4由于其简单性,速度和灵活性而在各种应用程序中使用。简化了软件和硬件的实现。

RC4的类型

有各种类型的RC4,例如Spritz,RC4A,VMPC和RC4A。

  1. SPRITZ: Spritz可用于构建加密哈希函数,确定性随机位生成器(DRBG),这是一种加密算法,支持对关联数据进行身份验证的加密(AEAD)。
  2. RC4A: Souraduyti Paul和Bart Preneel提出了RC4变体,他们称之为RC4A,它比RC4更强。
  3. VMPC: VMPC是RC4的另一种变体,代表可变修改排列组合。
  4. RC4A +: RC4A +是RC4的修改版,具有更复杂的三相密钥调度,它的耗时是RC4的三倍,并且其输出功能更复杂,该函数在S数组中为每个字节输出执行四个额外的查找,大约需要1.7倍于基本RC4。

算法

该算法对用户选择的1到256字节(8到2048位)的可变长度密钥(K)进行操作,通常在5到16字节之间。为了生成一个256字节的状态向量S,使用了主密钥。
第一步是数组初始化。它是大小为256的字符数组,即S [256]。之后,对于数组的每个元素,我们将S [i]初始化为i。

Code for array initialization:
Char S[256];
int i;
for(i=0;i<256;i++)
S[i] = i
The array will look like -
S[] = {0, 1, 2, 3, ------, 254, 255}

之后,我们将运行KSA算法-

KSA将使用秘密密钥对该阵列进行加扰。 KSA是一个简单的循环,其中有两个变量i和j。我们正在使用这些变量重新排列数组。重新排列阵列是通过使用密钥完成的。

Code for KSA (Key Scheduling Algorithm ) :
int i, j=0;
for(i=0;i<256;i++)
{
j=( j + S[i] + T[i]) mod 256;
Swap(S[i], S[j]);
}

KSA已被加密,S [256]数组用于生成PRGA(伪随机生成算法)。这是实际的密钥流。

Code for PRGA ( Pseudo Random Generation Algorithm ):
i=j=0;
while(true)
{
i = ( i + 1 ) mod 256;
j = ( j + S[i] ) mod 256;
Swap( S[i], S[j] );
t = ( S[i] + S[j] ) mod 256 ; 
k = S[t]; 
}

这是加扰的下一步。

RC4框图

RC4框图

RC4的工作

加密程序

  1. 用户输入纯文本文件和密钥。
  2. 然后,加密引擎使用KSA和PRGA算法生成密钥流。
  3. 现在,此密钥流将与纯文本进行异或,此异或将逐字节完成以生成加密的文本。
  4. 然后将加密的文本发送到预期的接收者,然后预期的接收者将对文本进行解密,解密后,接收者将获得原始的纯文本。

解密程序

解密是通过对密文执行相同的按字节X-OR操作来实现的。

示例:假设A为纯文本,B为密钥流(A xor B)xor B = A

好处

  1. RC4流密码易于使用。
  2. 与其他密码相比,RC4中的运算速度更快。
  3. RC4流密码编码能力强,易于实现。
  4. RC4流密码不需要更多的内存。
  5. RC4流密码在大型数据流上实现。

缺点

  • 如果不将RC4与强大的MAC一起使用,则加密容易受到位翻转攻击的攻击。
  • RC4流密码不提供身份验证。
  • RC4算法在包含新系统之前需要进行其他分析。
  • RC4流密码无法在小型数据流上实现。
  • RC4无法丢弃输出密钥流的开头,或者无法对算法使用非随机或相关密钥。