网易视频云分享:RC4加密算法

       这次网易视频云的每日分享,将给大家带来RC4加密算法的介绍,同时也有一些代码示例供大家参考。

  在密码学领域,RC4(又名ARC4或者ARCFOUR)是应用最广泛的流加密算法,应用在安全套接字层(SSL)(用来保护网络上传输的数据)和WEP(无线网络数据保护)上。

  虽然它的最大亮点是算法的简单性和运行速度,但是因为它存在的弱点,在新的系统中使用时是有所争论的。

  使用起始的输出keystream,使用非随机的或者相关性的keys,一个keysteream连续两次使用,这些使用方法都能使RC4加密方法显得特别脆弱,

  比如在WEPRC4的一些使用方式就导致了非常不安全的情况。

  历史

  RC4是由RSASecurityRonRivest1987年开发出来的,虽然它的官方名是“RivestCipher 4”,但是首字母缩写RC也可以理解为Ron'sCode

  RC4开始时是商业密码,没有公开发表出来,但是在949月份的时候,它被人匿名公开在了Cypherpunks邮件列表上,很快它就被发到了sci.crypt新闻组上,

  随后从这儿传播到了互联网的许多站点。随之贴出的代码后来被证明是很有水平的,因为它的输出跟取得了RC4版权的私有软件的输出是完全的。

  由于算法已经公开,rc4也就不再是商业秘密了,只是它的名字“RC4”仍然是一个注册商标。

  RC4经常被称作是“ARCFOUR”或者"ARC4"AllegedRC4,所谓的RC4,因为RSA从来没有官方公布这个算法),这样来避免商标使用的问题。

  它已经成为一些广泛使用的协议和标准的一部分,比如,包括WEPWPA的无线网卡和TLS

  让它如此广泛分布和使用的主要因素是它不可思议的简单和速度,不管是软件还是硬件,实现起来都十分容易。

  描述

  RC4产生一个伪随机比特流(akeystream),加密的时候,把它跟明文进行比特级别的异或处理,解密时进行一样的步骤(因为异或操作是对称的)。

  (这个类似于Vernamcipher,只不过后者不使用伪随机比特流而直接使用随机比特流)。

  为了产生keystream,本密码算法使用时需要两个数据的私有空间来保存内部状态:

  1.总共256个字节的序列(下面用“S"代替)

  2.两个8比特的索引指针(下面用“i”“j”代替)

  比特流序列的初始化是根据key的长度(key的长度通常在40256比特之间),使用key-scheduling算法来进行的(KSA)

  一旦完成了初始化,比特流就可以根据伪随机生成算法(PRGA)来产生。

  Thekey-scheduling algorithm (KSA)

  key-scheduling算法用来初始化数组“S”中的字节序列,“keylength”定义了key的字节长度,可能的范围是[1,256],典型的值是516之间,相应的key长度就是40-128比特。

  首先,数组“S”被初始化成identitypermutation(身份鉴别的序列),随后在PRGA的算法中进行256为周期的循环列举出来,每次处理的方式都是一样的,是联合key的字节进行的。

  网易视频云分享:RC4加密算法_第1张图片

  伪随机生成算法(PRGA)

  对于尽可能多的每个列举过程,PRGA算法修改内部的状态并输出keystream的一个字节。

  在每次循环中,PRGAi加一,并把i所指向的S值加到j上去,然后交换S

  S

  的值,最后输出S

  S

  的和(256的模)对应的S值。

  至多经过256次,S每个位置上的值都被交换一次。

  

  The lookupstage of RC4. The output byte is selected by looking up the valuesof S(i) and S(j), adding them together modulo 256, and then usingthe sum as an index into S; S(S(i) S(j)) is used as a byte of thekey stream, K.

  实现

  许多流加密算法都是基于Linear feedback shiftregisterLFSRs,线性反馈移位寄存器),虽然在硬件上有效率但是在软件实现上却可能比较慢。

  RC4的设计避免了LFSRs的使用,对于软件实现是相当理想的,它只需字节操作,使用了256字节的状态数组(从S[0]S[255],k字节的key内存(从key[0]key[k-1]),整数i,jk

  进行256的取模操作可以用255的字节AND来进行(在有些平台上,只需简单地进行字节相加,忽略掉溢出即可)。

  以上就是网易视频云关于R4加密算法的分享,欢迎大家关注网易视频云博客和官方微信查看更多干货。背后的技术和具体实现也欢迎大家进入网易视频云官网,与技术人员一起探讨。

你可能感兴趣的:(云计算,网易,技术开发,互联网科技)