CN1973481B - 用于进行rc4加密的装置、网络系统和方法 - Google Patents
用于进行rc4加密的装置、网络系统和方法 Download PDFInfo
- Publication number
- CN1973481B CN1973481B CN2005800211069A CN200580021106A CN1973481B CN 1973481 B CN1973481 B CN 1973481B CN 2005800211069 A CN2005800211069 A CN 2005800211069A CN 200580021106 A CN200580021106 A CN 200580021106A CN 1973481 B CN1973481 B CN 1973481B
- Authority
- CN
- China
- Prior art keywords
- byte
- bytes
- array
- buffer memory
- storage assembly
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/065—Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/125—Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
Abstract
提供一种用于执行RC4加密的方案。所述方案包括基于被称为S-box的字节状态阵列来流水线化密钥流的生成的装置和方法,所述S-box初始形成自被网络系统中的接收方和传送方共享的密钥。所述S-box被储存在储存组件中,所述储存组件可以是具有两个读端口和一个写端口的寄存器文件。AI缓存被用来储存读取自所述S-box储存组件的多个字节。
Description
版权声明:本专利文件的公开的一部分所包含的材料是受版权保护的。版权的拥有者不反对任何人以在美国专利商标局的专利文件或档案中出现的方式对本专利文献或专利公开进行复制,但是在其他不管什么方面都保留与版权有关的全部权利。
背景
1、领域
本公开一般地涉及网络安全,并且更具体地,涉及用于执行RC4加密的装置和方法。
2、描述
网络使计算机和其他设备能够进行通信。例如,网络可以运载代表视频、音频、电子邮件等等的数据。然而,网络系统面临包括泄密、丧失数据完整性、身份欺骗和拒绝服务攻击在内的很多威胁。为了解决这些威胁,已经开发和采用了很多手段来提高网络通信的安全性。例如,Rivest Cipher 4(RC4)算法被IEEE 802.11标准的组成部分——有线等效私密性(wired equivalent privacy,WEP)选择来保护无线保真(“WiFi”)网络,并且被安全套接字层(Secure Sockets Layer,SSL)通信协议选择来提高因特网上通信的安全性。
RC4算法是一种对称密钥流加密算法。对称密钥算法是使用同一加密密钥来对消息进行加密和解密的密码学算法。对称密钥算法可以被分成流加密和块加密。流加密对消息的位一次加密一位,而块加密取多个位并且将它们作为单个单元进行加密。RC4加密处理工作为从一多至256字节的密钥初始化的伪随机数生成器。RC4加密处理生成被称为密钥流的字节序列。输入文本数据(“纯文本”)是通过在所述纯文本和密钥流之间执行异或(“XOR”)操作被加密的。所述XOR操作的结果是与所述输入文本数据对应的加密文本。解密是通过产生相同的密钥流并且将其与所述加密文本进行XOR以重新产生所述纯文本来执行的。如果RC4加密处理以硬件实现,则更期望使用较不复杂的硬件部件而不是较复杂的硬件部件,因为较不复杂的部件可能更普遍可获得。同样地,在硬件实现中,较小的管芯(die)面积导致较低的成本、较高的产量以及通常较低的功率,这些对于网络通信来说是有益的。
附图简要说明
从本公开的以下详细描述中,本公开的特征和优点将变得清楚,其中:
图1是图示一般网络系统的图;
图2示出伪码,所述伪码图示RC4加密处理如何加密纯文本;
图3是图示RC4加密处理的示例性实现的图;
图4是根据本发明的实施方案,图示RC4加密处理的流水线化(pipelining)的表;
图5是根据本发明的实施方案,图示RC4加密处理的另一示例性实现的图;
图6是根据本发明的另一实施方案,图示RC4加密处理的流水线化的表;以及
图7是网络系统的图。
详细描述
本发明的实施方案包括用于执行RC4加密的装置和方法。RC4加密处理通过产生被称为密钥流的字节序列来进行操作。纯文本是通过将所述纯文本的每个字节与密钥流的每个字节进行XOR以产生加密文本来被加密的。解密是通过产生相同的密钥流并且将其与所述加密文本进行XOR以重新产生所述纯文本来执行的。RC4加密处理以256-字节状态阵列(被称为S-box(状态盒))的形式维护内部状态和两个索引变量i和j。S-box的初始值产生自共享的秘密密钥(接收方和传送方两者必须具有该相同的密钥)。密钥流是通过处理S-box的值和i、j变量被产生的。在RC4加密处理的典型硬件实现中,S-box被储存在寄存器文件(register file)中。因为密钥流的一个字节的产生涉及对S-box储存组件(S-box storage device)的三个读操作和两个写操作,所以具有三个读端口和两个写端口的寄存器文件(“3-读/2-写寄存器文件”)对于S-box来说是期望的。通过连同流水线化技术使用3-读/2-写寄存器文件来储存S-box,密钥流产生可以达到每时钟周期一个字节的吞吐量。然而,3-读/2-写寄存器文件并非普遍可获得的,因为比之具有较少读/写端口的寄存器文件,它们复杂并且更昂贵。根据本发明的实施方案,可以使用缓存来储存从S-box储存组件读取得多个字节。以这样的方式,每时钟周期所要求的从S-box储存组件的读操作数量可以被减少,从而具有两个读端口和一个写端口的寄存器文件(“2-读/1-写寄存器文件”)可以被用来储存S-box。2-读/1-写寄存器文件比3-读/2-写寄存器文件更普遍且更廉价。在一个实施方案中,通过连同流水线化技术来使用缓存和2-读/1-写寄存器文件,RC4加密处理可以比使用3-读/2-写寄存器文件更高效地以硬件实现,而不会显著地牺牲密钥流生成处理的吞吐量。
在本说明书中提及本公开的“一个实施方案”或“实施方案”意味着结合该实施方案描述的特定特征、结构或特性被包括在本公开的至少一个实施方案中。因此,短语“在一个实施方案中”在整篇说明书中不同地方的出现不一定全是指同一实施方案。
图1描绘支持多个终端的一般网络系统110。网络系统110可以包括例如路由器、交换机和网桥的多种设备,以便从一个终端到另一个的数据传递。所述网络系统可以是无线系统、以太网系统、任何其他系统,或者不同网络系统的组合。所述网络系统可以采用卫星120来帮助将一个终端连接到另一个终端。网络系统的终端可以包括服务器130、桌面型计算机140、个人目录助理(PDA)150、蜂窝电话160、膝上型计算机170或其他设备。在不同终端之间通信的数据可以包括视频、音频、消息(message)和其他数据。所述网络系统可以使用WEP、SSL或用于通信安全性的其他标准。作为WEP、SSL或其他标准的组成部分,RC4加密处理可以被用于加密数据以保证保密通信和通信的完整性。
图2示出伪码,所述伪码图示纯文本是如何使用RC4加密处理被加密的。RC4加密处理基于S-box逐字节生成密钥流。S-box的初始值生成自共享密钥。在图2示出的伪码中,S[i]代表S-box的第i字节的值,并且S[j]代表S-box的第j字节的值。K代表生成的密钥流的一个字节,Ptext是纯文本的一个字节而Ctext是加密文本的一个字节。在行1中,索引变量i和j被初始化为0。行2开始逐字节加密所述纯文本的循环。在行3中,索引变量i的值通过将其前一值增加1被更新。在行4中,S-box的第i字节从S-box储存组件中被读取;并且索引变量j的值基于其前一值和S-box的第i字节的值S[i]被更新。在行5,S-box的第i字节的值和第j字节的值被交换,这涉及从S-box储存组件读取S-box的第j字节,以及将S[i]和S[j]分别作为第j字节和第i字节写回S-box储存组件。在行6中,通过将S[i]和S[j]加在一起获得第三索引t。因为S-box具有总共256个字节,所以任何索引i、j或t的值必须在0到255之间(包括0和255)。这解释了为什么在行3、4和6中获得i、j或k时需要“模(mod)256”操作。在行7中,S-box的第t字节从S-box储存组件中被读取,并且被用作生成的密钥流的当前字节K。在行8中,通过将K与纯文本的当前字节Ptext进行XOR,生成针对Ptext的加密字节Ctext。行2和行8之间的操作被迭代,直到纯文本中的所有字节被加密。当纯文本中所有字节被处理了时,加密循环在行9中结束。解密处理与加密处理相同,除了在行8中所描述的之外,即Ctext与K进行XOR以生成Ptext。
图3根据本发明的实施方案,描绘使用RC4加密处理的加密处理的示例性实现。S-box储存组件310储存256字节的S-box。在一个实施方案中,S-box储存组件可以是寄存器文件。在另一个实施方案中,S-box储存可以由触发器构成。当使用触发器时,可能需要约2048个触发器来储存该256S-box。比之寄存器文件,具有2048个触发器的实现可能要求更大的管芯面积。密钥流生成器320通过执行如从图2的行3到行7所图示的操作来逐字节生成密钥流。所述操作可以包括增加第一索引变量i、从S-box储存组件读取S-box的第i字节,运算第二索引变量j,交换S-box储存组件中S-box的第i字节和第j字节,运算第三索引t以及从S-box储存组件读取S-box的第t字节。控制器330控制S-box储存组件和密钥流生成器以每次一字节的方式产生密钥流。控制器可以指明S-box储存组件何时使一特定字节针对读/写来说可获得。S-box储存组件还可以通知控制器一特定字节何时准备好用于读/写操作,从而所述控制器可以指示密钥流生成器执行从S-box储存组件的读/到S-box储存组件的写。此外,控制器可以帮助为任何读/写操作解决抵触或纠正错误。XOR机制(mechanism)340在输入数据342和密钥流344之间执行XOR操作,以从输入数据产生加密的数据346。XOR机制在控制器的指示下以每次一字节的方式执行XOR操作。因此,输出的加密数据346以逐字节的方式被产生。
在很多应用中,期望具有较快的加密速度,因为较慢的加密速度导致较长的延迟,并且限制网络通信的带宽。为了通过RC4加密处理提高加密速度,在一个实施方案中,密钥流生成处理可以被流水线化。使用流水线化技术的密钥流生成器可以每个时钟周期产生密钥流的一个字节,即,密钥流生成器可以达到每周期一个字节的吞吐量。图4图示5级流水线可以如何被用来为RC4加密处理生成密钥流。为了流水线化RC4加密,密钥生成器和控制器(如图3中所示)可能需要被修改,以支持流水线化方案。在图4中,“Raddrnm”表示从S-box储存组件读取S-box的第nm字节来生成密钥流的第m字节Km的操作。类似地,“Waddr nm”表示在S-box的第nm字节处向S-box储存组件进行写操作来生成密钥流的第m字节Km的操作。为了方便,图4未示出伴随每个读操作的任何额外的操作。
密钥流的第一字节K1的生成开始于周期1,在周期1期间索引变量i1的值通过将初始值i0增加1获得,并且S-box的第i1字节S[i1]从S-box储存组件中被读取。在周期2中,索引变量j1的值通过将j的前一值(即j的初始值j0)和S[i1]相加而被运算(即j1=(j0+S[i1])mod 256),并且随后S-box的第j1字节S[j1]从S-box储存组件中被读取。此外,K2的生成开始于周期2,在周期2期间i2通过将i1增加1获得,并且S[i2]从S-box储存组件中被读取。在周期3中,S[j1]被写回S-box储存组件以替代S-box的第i1字节;j2被获得(j2=j1+S[i2])mod256),并且S[j2]从S-box储存组件中被读取;并且K3的生成以获得i3(=(i2+1)mod 256)和从S-box储存组件读取S[i3]开始。在周期4中,S[i1]被写回S-box储存组件以替代S-box的第j1字节;S[j2]被写回S-box储存组件以替代S-box的第i2字节;j3被获得(j3=(j2+S[i3])mod 256),并且S[j2]从S-box储存组件中被读取;并且K4的生成以获得i4(=(i3+1)mod 256)和从S-box储存组件读取S[i4]开始。在周期5中,索引变量t1的值被获得(t1=S[i1]+S[j1]mod 256),并且S[t1]从S-box储存组件被读取;S[i2]被写回S-box储存组件以替代S-box的第j2字节;S[j3]被写回S-box储存组件以替代S-box的第j3字节;j4被获得(j4=(j3+S[i4])mod256),并且S[j4]从S-box储存组件中被读取;并且K5的生成以获得i5(=(i3+1)mod 256)和从S-box储存组件读取S[i5]开始。在周期5结束时,密钥流的第一字节K1(=S[t1])被生成,所述K1可以被用来在周期6中加密输入数据的第一字节。从周期5之后(包括周期5),在每个周期上三个读操作和两个写操作被同时执行。此外,从周期5再往后,在每个周期结束时,密钥流的一个字节被生成。当要被生成的密钥流包括很多字节时,密钥流生成处理的吞吐量约为每周期一字节(在头4个周期内没有密钥流的字节被生成)。
如图4中所示,通过使用五级流水线,RC4加密处理的实现可以达到对于密钥流生成器来说每周期一字节的吞吐量。这样的途径要求每个周期三个读操作和两个写操作。典型地,用于RC4算法的S-box被储存在寄存器文件中。使用如图4所图示的五级流水线将要求具有三个读端口和两个写端口的寄存器文件(“3-读/2-写寄存器文件”)。3-读/2-写寄存器文件并非普遍可获得的,因为比之具有较少读/写端口的寄存器文件,它们是复杂的,并且耗费大量的管芯面积。3-读/2-写寄存器文件可能甚至限制RC4加密处理可以在其上工作的频率。替换性途径是使用于RC4加密处理的密钥流生成流水线化,而使用2-读/1-写寄存器文件来储存S-box。然而,这样的替换性途径可能显著地降低密钥流生成的吞吐量。
从图2中注意到,索引变量i的值在每次迭代后递增,这意味着在连续的迭代上S[i]从S-box储存组件中的连续位置(字节)被读取/被写到S-box储存组件中的连续位置(字节)。同样地,使用RC4算法的加密操作通常是在多字节消息上被执行的,并且因此如图2所示的该算法的多次迭代被执行以生成具有多个字节的密钥流。因此,可以每次从寄存器文件中读取S-box的几个字节并且储存在缓存中。每次从寄存器文件中被读取的字节数量可以不同(例如,它可以是4或8)。缓存可以由触发器构成。为了描述的方便,假设缓存的大小为8字节,即每次可以从S-box储存组件读取S-box的8个字节。这将允许密钥流生成器从缓存读取/向缓存写用于之后8次迭代(如图2中所示)的S[i],以生成密钥流的8个字节。在第8次迭代结束时,缓存中的8个字节在一次操作中被写回寄存器文件。使用该途径,2-读/1-写寄存器文件可以被用来储存S-box,并且RC4算法可以仍旧能够达到对于密钥流生成来说接近每周期一字节的吞吐量。
图5描绘连同N-字节缓存(N可以为任何数)使用2-读/1-写寄存器文件的RC4加密处理的实现的实施方案。S-box储存组件510可以是2-读/1-写寄存器文件。S-box储存组件具有两个读端口512和514以及一个写端口516。用于读端口512、514和写端口516的地址分别由控制器540通过线502、504和506提供。缓存写机制520可以从S-box储存组件读取N个字节并且将它们写到缓存530。在一个实施方案中,缓存写机制可以被集成到缓存中。缓存储存从S-box储存组件读取的、用于生成密钥流的N个字节的S-box的N个字节。在连续的迭代上,S[i]从S-box中连续的位置被读取并且被写到S-box中连续的位置。因为S[i]在RC4加密处理的连续迭代之间的可预测性,S-box的N个连续字节可以从S-box储存组件被读取,并且被储存在缓存530中,从而对于RC4加密处理的后N次迭代来说,S[i]可以直接从缓存被读取并且直接被写到缓存。
图5中的密钥生成器在每次迭代结束时生成密钥流的一个字节。控制器540控制S-box储存组件、缓存写机制、缓存、密钥生成器和XOR机制590,从而它们可以一起工作来为输入数据以逐字节的方式产生加密的输出数据。密钥生成器550包括第一选择器555、第二选择器560、第三选择器565、第一加法器570、第二加法器575、交换机制585和调度器580。在来自控制器的指示下,第一选择器555在来自缓存530的N个S-box字节532之间为RC4加密处理的当前迭代选择S[i]。在来自控制器的指示下,第一加法器570将来自前一迭代的j值584与由第一选择器所选择的S[i]的值562相加,以产生用于当前迭代的j值588。在来自控制器的指示下,调度器580可以在第一迭代之前将i和j的值初始化为0;通过递增来自前一迭代的i值来向第一选择器提供用于当前迭代的i值582;并且向第一加法器提供来自前一迭代的j值584。此外,由第一加法器产生的用于当前迭代的j值588被发送到调度器,从而调度器可以请求控制器540获得用于当前迭代的S[j]。S[j]当前在缓存中是可能的。因为储存在缓存中的S-box的N个字节代表这些字节的最新版本,所以如果缓存和S-box储存组件两者均包含S[j],则控制器将指示从缓存而不是从S-box储存组件中读取S[j]。在控制器的控制下,第二选择器560在储存于缓存中的多个字节和读取自S-box储存组件的那个字节(如果存在任何的话)中选择一个字节作为S[j]。
在控制器的控制下,由第二选择器选择的S[j]562随后通过交换机制585与由第一选择器选择的S[i]552交换。在交换处理期间,S[j](在图5中被示为564)通过缓存写机制520被写到缓存530,以替代S[i]。与此同时,如果用于当前迭代的S[j]是来自S-box储存组件,则S[i](在图5中被示为554)被写回S-box储存组件以替代S[j]。另一方面,如果S[j]曾读取自缓存,则S[i]被写回缓存以替代S[j]。此外,分别由第一和第二选择器所选择的S[i]和S[j]的值被加在一起以产生用于第三索引变量t的值586。t值586被发送到调度器580,从而调度器可以请求控制器获得用于当前迭代的S[t]。S[t]当前在缓存中是可能的。因为储存在缓存中的S-box的N个字节代表这些字节的最新版本(缓存中的字节在密钥流生成处理期间被更新),所以如果缓存和S-box储存组件两者均包含S[t],则控制器将指示从缓存而不是从S-box储存组件中读取S[t]。在控制器的控制下,第三选择器565在储存于缓存中的多个字节和读取自S-box储存组件的那个字节(如果存在任何的话)中选择一个字节作为S[t]。由第三选择器选择的S[t]592是密钥流的用于当前迭代的字节K。随后,K通过XOR机制590与输入数据的对应字节594进行XOR,以产生针对输入数据的该字节的加密的字节596。
因为所有S-box索引变量i、j和t的值在0和255之间,包括0和255(假设S-box具有总共256个字节;并且如果S-box具有总共M个字节,则j的值应该在0和M-1之间),所以由调度器执行的递增操作和由第一和第二加法器执行的加法操作全部都是以256为模(“mod 256”)或“mod M”的操作。在N次迭代之后,缓存中的N个字节可以被写回S-box。注意,被写回的N个字节的值可以与N次迭代开始之前从S-box储存组件最初读取的N个字节的值不同。
图6图示三级流水线可以如何被用来为图5中示出的实施方案生成密钥流。为了流水线化密钥流生成,如图5中示出的控制器540和密钥生成器550(特别地,调度器580)可能需要被修改,从而当可能时,每次迭代可以在每个时钟周期上开始。在图6中,“Raddrnm”表示从S-box储存组件读取S-box的第nm字节来生成密钥流的第m字节Km的操作。“Waddrnm”表示在S-box的第nm字节处向S-box储存组件进行写操作来生成密钥流的第m字节Km的操作。“Raddrnm-nl”表示从S-box储存组件读取S-box的从第nm字节开始的N个顺序字节到缓存来生成密钥流的第m到第l字节Km到Kl的操作(其中N是缓存的大小,并且l=m+N-1)。“Waddr nm-nl”表示将N个字节从缓存写到S-box储存组件来替代最初读取自S-box储存组件的N个顺序字节以生成Km到kl的操作(其中N是缓存的大小,并且l=m+N-1)。为了方便,图6未示出伴随每个读操作的任何额外的操作。典型地,缓存的大小与寄存器文件的行大小(line size)相同,所述行大小可以为4字节、8字节、16字节或任何其他数。图6假设缓存的大小为8字节,从而每次可以读取来自S-box储存组件的8个顺序字节,并且储存在缓存中。
如图6中所示,在周期1中,索引变量i1的值通过将初始值i0增加1获得;并且S-box储存组件中从第i1字节开始的8个顺序字节被读到缓存。在周期2中,索引变量j1的值通过将j的前一值(即j的初始值j0)和S[i1]相加而被运算(即j1=(j0+S[i1])mod 256),并且随后如果S-box的第j1字节S[j1]在缓存中,则S[j1]从缓存中被读取,否则S[j1]从S-box储存组件中被读取。在周期3中,S[j1]被写到缓存以替代S-box的第i1字节,并且如果S[j1]曾是在周期2中从缓存读取的,则S[i1]被写到缓存以替代S[j1],否则S[i1]被写回S-box储存组件以替代S[j1];j2被获得(j2=(j1+S[i2])mod 256),并且如果S[j2]在缓存中,则S[j2]从缓存中被读取,否则S[j2]从S-box储存组件中被读取;并且索引变量t1的值被获得(t1=S[i1]+S[j1]mod 256),并且如果S[t1]在缓存中,则S[t1]从缓存中被读取,否则S[t1]从S-box储存组件中被读取。在周期3结束时,密钥流的第一字节K1(=S[t1])被生成,所述K1可以被用来加密输入数据的第一字节。从周期3到周期10(包括周期3和周期10),在每个周期上两个读操作和一个写操作被同时执行;并且在每个周期结束时,密钥流的一个字节被生成。
在周期9之后,缓存中的所有8个字节已经被读取并被用来生成用于索引变量j的值,所述8个字节是曾在周期1中读取自S-box储存组件。在周期10中,S-box中从第i9字节(i9=i8+1=i1+8)开始的另外8个顺序字节通过缓存写机制从S-box储存组件读到缓存,在当前处于缓存中的字节被写回S-box储存组件之前,所述缓存暂时保存这些新近读取的8个字节。同样地,在周期10中,S[j8]被写到缓存以替代S-box的第i8字节,并且如果S[j8]曾是在周期9中从缓存读取的,则S[i8]被写到缓存以替代S[j8],否则S[i8]被写回S-box储存组件以替代那里的S[j8];并且t8被获得(t8=S[i8]+S[j8]mod 256),并且如果S[t8]在缓存中,则S[t8]从缓存中被读取,否则S[t8]从S-box储存组件中被读取。在周期11中,当前处于缓存中的8个字节可以被写回S-box储存组件以替代从第i1到第i8的字节(由于交换操作,正被写回的字节可以不是与最初读取自S-box储存组件中相同位置的那些字节相同的)。随后,在周期9中新近读取的8个顺序字节可以从缓存写机制被移动到缓存。同样地,在周期11中,j9被获得(j9=(j8+S[i9])mod256,在周期9中当8个字节曾读取自S-box储存组件时,S[i9]的值可以被获得),并且S[j2]从S-box储存组件被读取。在从周期12开始的下8个周期中,两个读操作和一个写操作将被执行,并且在每个周期中密钥流的一个字节可以被生成。总之,使用如图6中所图示的三级流水线,本发明的实施方案可以达到对于密钥流生成来说每9个周期8个字节的吞吐量。该吞吐量接近每周期一个字节。
图7描绘可以执行RC4加密的网络系统。所述系统可以包括通过交换结构710(例如纵横结构或共享的存储器交换结构)互连的线卡集合720(“刀片(blade)”)。各个线卡可以位于相同的物理位置或不同的物理位置(例如,不同城市)。所述交换结构例如可以遵循通用交换接口(CSIX)或其他结构技术,例如HyperTransport、Infiniband、外设部件互连(PCI)、基于SONET(同步光网络)的分组传输、RapidIO和/或UTOPIA(用于ATM的通用测试和操作PHY(物理层)接口)。
各个线卡(例如720A)可以包括一个或更多个处理网络连接上的通信的物理层(PHY)设备722(例如光、有线和无线PHY)。PHY在不同网络介质运载的物理信号和数字系统所使用的位(例如“0”和“1”)之间进行翻译。线卡720还可以包括成帧器设备(例如,以太网、同步光网络(SONET)、高级数据链路(HDLC)成帧器或其他的“层2”设备)724,所述成帧器设备可以对帧进行例如检错和/或纠错的操作。示出的线卡720还可以包括一个或更多个网络处理器726,所述网络处理器726对通过一个或多个PHY 722接收到的分组(packet)执行分组处理操作,并且经由交换结构710将该分组引导到提供出口接口的线卡以转发该分组。潜在地,一个或多个网络处理器726可以代替成帧器设备724来履行“层2”的职责。
一个或多个网络处理器726可以是Intel因特网交换网络处理器(IXP)或其他以不同设计为特征的网络处理器。所述网络处理器以在单个集成电路上的分组处理引擎集合为特征。各个引擎可以提供多个执行线程。另外,网络处理器包括核心处理器(所述核心处理器通常被编程来完成在网络操作中所涉及的“控制面”的任务。然而,核心处理器也可以处理“数据面”的任务。网络处理器726还以至少一个可以在处理器和其他网络部件之间运载分组的接口为特征。例如,所述处理器可以以交换结构接口710为特征,所述交换结构接口710使得处理器726能够向与所述结构相连的其他处理器或电路发送分组。处理器726还可以以使得处理器能够与物理层(PHY)和/或链路层设备(例如MAC或成帧器设备)通信的接口为特征。处理器726还包括例如与主机或其他网络处理器进行通信的接口(例如,外设部件互连(PCI)总线接口)。此外,处理器726还可以包括被引擎共享的其他部件,例如存储器控制器、哈希引擎和内部便笺式存储器。
如图7中所示,每个线卡720可以以可操作的方式与至少一个执行RC4加密的RC4模块730(例如730A)耦合。在一个实施方案中,RC4模块可以与线卡分离。在另一个实施方案中,RC4模块可以与线卡集成。同样,在一个实施方案中,RC4模块可以是网络处理器726的部分或PHY 722的部分。在再一个实施方案中,RC4模块可以位于诸如链路层、网络层和/或应用层的其他的网络层次中。
虽然参考图1-7描述了本公开的示例性实施方案,但是本领域的普通技术人员将容易明白,可以替换地使用实现本公开的很多其他方法。例如,可以改变功能块或处理过程的执行顺序,和/或可以改变、取消或组合所描述的功能块或处理过程的一些。
在以上描述中,已经描述了本发明的不同方面。出于解释的目的,阐述了具体的数量、系统和配置,以提供对本发明的完整理解。然而,获知本公开的本领域的技术人员将会清楚,没有这些具体的细节也可以实践本公开。此外,为了不使本公开变得模糊,省略、简化、组合或分离了公知的特征、部件或模块。
这里所描述的本公开的实施方案可以用电路来实现,所述包括硬连线电路、数字电路、模拟电路、可编程电路等。它们也可以用计算机程序来实现。这样的计算机程序可以用高级程序性语言或面向对象的编程语言来编写。然而,如果期望的话,也可以用汇编语言或机器语言来实现所述程序。语言可以被编译或解译。另外,这些技术可以用在各种连网环境中。这样的计算机程序可以被存储在通用或专用可编程处理系统可读的存储介质或设备(例如硬盘驱动器、软盘驱动器、只读存储器(ROM)、CD-ROM设备、闪存存储器设备、数字多用途盘(DVD)或其他储存设备)上,用于当所述储存介质或设备由处理系统读取时,配置并运行该处理系统来执行这里所描述的过程。本公开的实施方案还可以被实现为机器可读存储介质,被配置来与处理系统一起使用,其中储存介质被配置为导致处理系统以专门的和预定的方式来运行,以实现这里所描述的功能。
虽然已参考图示说明性的实施方案描述了本公开,但是该描述不想被理解为限制性的。对于本公开所属领域的技术人员来说所清楚的对所述图示说明性实施方案的各种修改以及本公开的其他实施方案都被视为落入本公开的精神和范围内。
Claims (32)
1.一种用于执行RC4加密的装置,包括:
字节阵列储存组件,所述字节阵列储存组件用于储存字节阵列;
缓存,所述缓存用于储存读取自所述字节阵列储存组件的所述字节阵列的多个字节;
密钥生成器,所述密钥生成器用于基于被储存在所述字节阵列储存组件和所述缓存中的数据或者被储存在所述缓存中的数据来生成用于对输入数据进行加密的密钥流,
控制器,所述控制器用于控制所述字节阵列储存组件、所述缓存和所述密钥生成器以流水线化所述密钥流的生成;以及
XOR机制,所述XOR机制用于在控制器的控制下将所述输入数据与所述密钥流以逐字节的方式进行XOR。
2.如权利要求1所述的装置,其中所述字节阵列的初始值是从被网络系统中的接收方和传送方共享的秘密密钥生成的。
3.如权利要求1所述的装置,其中所述字节阵列储存组件包括2-读和1-写寄存器文件。
4.如权利要求1所述的装置,其中将所述输入数据与所述密钥流以逐字节的方式进行XOR,以生成针对所述输入数据的加密版本。
5.如权利要求1所述的装置,其中所述密钥生成器在控制器的控制下以逐字节的方式生成所述密钥流。
6.如权利要求1所述的装置,其中所述控制器在读/写操作期间检测并解决所述字节阵列储存组件和所述缓存之间的冲突。
7.如权利要求1所述的装置,其中所述密钥生成器包括:
第一选择器,所述第一选择器用于基于第一索引从所述缓存选择所述字节阵列中的第一字节;
第一加法器,所述第一加法器用于部分基于所述第一字节的值获得第二索引;
第二选择器,所述第二选择器用于基于所述第二索引从所述字节阵列储存组件或所述缓存选择所述字节阵列中的第二字节;
交换机制,所述交换机制用于交换所述第一字节和所述第二字节的值;
第二加法器,所述第二加法器用于基于所述第一字节和所述第二字节的值获得第三索引;以及
第三选择器,所述第三选择器用于基于所述第三索引从所述字节阵列储存组件或所述缓存中选择所述字节阵列中的第三字节。
8.如权利要求7所述的装置,还包括调度器,所述调度器用于为所述第一索引和所述第二索引提供初始值,为所述第一索引执行递增操作,并且为所述第一加法器提供一个输入数据。
9.如权利要求8所述的装置,其中所述调度器与所述控制器协调来为所述字节阵列储存组件提供读/写地址。
10.如权利要求8所述的装置,其中所述调度器与所述控制器协调来流水线化密钥流生成。
11.如权利要求1所述的装置,还包括缓存写机制,所述缓存写机制用于便于将字节从所述字节阵列储存组件写到所述缓存的操作。
12.一种用于执行RC4加密的方法,包括:
接收输入数据;
将字节阵列中的多个字节从字节阵列储存组件读到缓存;
初始化第一索引和第二索引,所述第一索引用于访问被储存在所述缓存中的所述字节阵列的字节且第二索引用于访问被储存在所述字节阵列储存组件或所述缓存中的所述字节阵列的字节;以及
针对所述输入数据的每个字节:
基于所访问的字节生成密钥流的字节,以及
通过进行XOR,基于所述密钥流的所述字节,产生针对所述输入数据的所述字节的加密字节。
13.如权利要求12所述的方法,其中生成所述密钥流的所述字节的操作包括:
更新所述第一索引;
基于所述第一索引,从所述缓存读取所述字节阵列中的第一字节;
部分基于所述第一字节更新所述第二索引;
基于所述第二索引,从所述字节阵列储存组件或所述缓存中读取所述字节阵列中的第二字节;
交换所述第一字节和所述第二字节;
基于所述第一字节和所述第二字节运算第三索引;以及
基于所述第三索引从所述字节阵列储存组件或所述缓存中读取所述字节阵列中的第三字节。
14.如权利要求13所述的方法,其中更新所述第一索引的操作包括递增所述第一索引在前一迭代期间的值,以所述字节阵列中的字节数量为模。
15.如权利要求13所述的方法,其中更新所述第二索引的操作包括将所述第二索引在前一迭代期间的值与所述第一字节的值相加,以所述字节阵列中的所述字节的数量为模。
16.如权利要求13所述的方法,其中运算所述第三索引的操作包括将所述第一字节的值和所述第二字节的值相加,以所述字节阵列中的所述字节的数量为模。
17.如权利要求13所述的方法,其中交换所述第一字节和所述第二字节的操作包括在所述缓存中写所述第二字节以替代所述第一字节,以及在所述字节阵列储存组件和所述缓存的一个中写所述第一字节以替代所述第二字节。
18.如权利要求13所述的方法,其中产生所述加密字节的操作包括在所述第三字节和所述输入数据的所述字节之间执行XOR操作。
19.如权利要求12所述的方法,还包括在所述缓存中的所述多个字节已经被使用过之后,从所述字节阵列储存组件读取所述字节阵列中另外的多个字节,并且针对所述输入数据的每个剩余字节继续处理。
20.如权利要求12所述的方法,还包括在所述缓存中的所述字节已经被用于更新所述第二索引的值之后,将所述缓存中的字节写回所述字节阵列储存组件。
21.如权利要求12所述的方法,还包括检测并解决在读操作和写操作的至少一种中所述字节阵列储存组件和所述缓存之间的冲突。
22.一种网络系统,包括:
交换结构;
通过所述交换结构互连的多个线卡;以及
多个RC4模块,每个所述RC4模块以可操作的方式与线卡耦合以执行RC4加密,RC4模块包括:
字节阵列储存组件,所述字节阵列储存组件用于储存字节阵列;
缓存,所述缓存用于储存读取自所述字节阵列储存组件的所述字节阵列的多个字节;
密钥生成器,所述密钥生成器用于基于被储存在所述字节阵列储存组件和所述缓存中的数据或者被储存在所述缓存中的数据来生成用于对输入数据进行加密的密钥流,
控制器,所述控制器用于控制所述字节阵列储存组件、所述缓存和所述密钥生成器以流水线化所述密钥流的生成;
XOR机制,所述XOR机制用于在控制器的控制下将所述输入数据与所述密钥流以逐字节的方式进行XOR。
23.如权利要求22所述的网络系统,其中所述字节阵列的初始值是从被所述网络系统中的接收方和传送方共享的秘密密钥生成的。
24.如权利要求22所述的网络系统,其中所述字节阵列储存组件包括2-读和1-写寄存器文件。
25.如权利要求22所述的网络系统,其中将所述输入数据与所述密钥流以逐字节的方式进行XOR,以生成针对所述输入数据的加密版本。
26.如权利要求22所述的网络系统,其中所述密钥生成器在控制器的控制下以逐字节的方式生成所述密钥流。
27.如权利要求22所述的网络系统,其中所述控制器在读/写操作期间检测并解决所述字节阵列储存组件和所述缓存之间的冲突。
28.如权利要求22所述的网络系统,其中所述密钥生成器包括:
第一选择器,所述第一选择器用于基于第一索引从所述缓存选择所述字节阵列中的第一字节;
第一加法器,所述第一加法器用于部分基于所述第一字节的值获得第二索引;
第二选择器,所述第二选择器用于基于所述第二索引从所述字节阵列储存组件或所述缓存中选择所述字节阵列中的第二字节;
交换机制,所述交换机制用于交换所述第一字节和所述第二字节的值;
第二加法器,所述第二加法器用于基于所述第一字节和所述第二字节的值获得第三索引;以及
第三选择器,所述第三选择器用于基于所述第三索引从所述字节阵列储存组件或所述缓存中选择所述字节阵列中的第三字节。
29.如权利要求28所述的网络系统,还包括调度器,所述调度器用于为所述第一索引和所述第二索引提供初始值,为所述第一索引执行递增操作,并且为所述第一加法器提供一个输入数据。
30.如权利要求29所述的网络系统,其中所述调度器与所述控制器协调来为所述字节阵列储存组件提供读/写地址。
31.如权利要求29所述的网络系统,其中所述调度器与所述控制器协调来流水线化密钥流生成。
32.如权利要求22所述的网络系统,还包括缓存写机制,所述缓存写机制用于便于将字节从所述字节阵列储存组件写到所述缓存的操作。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/833,478 US7653196B2 (en) | 2004-04-27 | 2004-04-27 | Apparatus and method for performing RC4 ciphering |
US10/833,478 | 2004-04-27 | ||
PCT/US2005/012071 WO2005107386A2 (en) | 2004-04-27 | 2005-04-08 | Apparatus and method for performing rc4 ciphering |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1973481A CN1973481A (zh) | 2007-05-30 |
CN1973481B true CN1973481B (zh) | 2011-02-16 |
Family
ID=35137832
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005800211069A Expired - Fee Related CN1973481B (zh) | 2004-04-27 | 2005-04-08 | 用于进行rc4加密的装置、网络系统和方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7653196B2 (zh) |
EP (1) | EP1747637A2 (zh) |
JP (1) | JP4486680B2 (zh) |
CN (1) | CN1973481B (zh) |
WO (1) | WO2005107386A2 (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7403615B2 (en) * | 2001-08-24 | 2008-07-22 | Broadcom Corporation | Methods and apparatus for accelerating ARC4 processing |
US7602905B2 (en) * | 2004-09-01 | 2009-10-13 | Texas Instruments Incorporated | Processes, circuits, devices, and systems for encryption and decryption and other purposes, and processes of making |
US7634086B2 (en) * | 2004-12-21 | 2009-12-15 | Electronics And Telecommunications Research Institute | Cipher device using RC4 algorithm and method thereof |
US20100046755A1 (en) * | 2005-12-07 | 2010-02-25 | Fiske Software Llc | Cryptography related to keys with signature |
US8073892B2 (en) | 2005-12-30 | 2011-12-06 | Intel Corporation | Cryptographic system, method and multiplier |
US7725624B2 (en) * | 2005-12-30 | 2010-05-25 | Intel Corporation | System and method for cryptography processing units and multiplier |
US20070157030A1 (en) * | 2005-12-30 | 2007-07-05 | Feghali Wajdi K | Cryptographic system component |
US20080140753A1 (en) * | 2006-12-08 | 2008-06-12 | Vinodh Gopal | Multiplier |
US8719593B2 (en) * | 2009-05-20 | 2014-05-06 | Harris Corporation | Secure processing device with keystream cache and related methods |
CA2822185C (en) | 2009-08-14 | 2014-04-22 | Azuki Systems, Inc. | Method and system for unified mobile content protection |
US8533456B2 (en) | 2010-10-07 | 2013-09-10 | King Saud University | Accelerating stream cipher operations using single and grid systems |
CN102752107B (zh) * | 2011-04-19 | 2015-04-29 | 中国科学院微电子研究所 | 实现rc4加/解密的装置及其方法 |
US9985784B2 (en) | 2014-12-23 | 2018-05-29 | Nxp B.V. | Efficient smooth encodings for modular exponentiation |
US9904516B2 (en) | 2014-12-23 | 2018-02-27 | Nxp B.V. | Modular exponentiation using look-up tables |
US9906368B2 (en) * | 2014-12-23 | 2018-02-27 | Nxp B.V. | General encoding functions for modular exponentiation encryption schemes |
US9652200B2 (en) | 2015-02-18 | 2017-05-16 | Nxp B.V. | Modular multiplication using look-up tables |
US10542110B2 (en) * | 2015-02-19 | 2020-01-21 | International Business Machines Corporation | Data communication in a clustered data processing environment |
CN105721147A (zh) * | 2016-03-09 | 2016-06-29 | 中国电子科技集团公司第三十三研究所 | 一种基于分组加密同步信息的自同步序列密码算法 |
CN107360021A (zh) * | 2017-06-16 | 2017-11-17 | 上海庆科信息技术有限公司 | 一种局域网配网方法及装置 |
CN109194461B (zh) * | 2018-05-11 | 2022-02-22 | 吉林大学 | 基于双密钥流密码的单向链表顺序加密解密方法 |
CN109600620B (zh) * | 2018-12-07 | 2021-03-16 | 四川长虹电器股份有限公司 | 视频文件保护方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5444781A (en) * | 1993-08-23 | 1995-08-22 | Apple Computer Inc. | Method and apparatus for decryption using cache storage |
US6549622B1 (en) * | 1998-11-23 | 2003-04-15 | Compaq Computer Corporation | System and method for a fast hardware implementation of RC4 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6088800A (en) * | 1998-02-27 | 2000-07-11 | Mosaid Technologies, Incorporated | Encryption processor with shared memory interconnect |
US7403615B2 (en) | 2001-08-24 | 2008-07-22 | Broadcom Corporation | Methods and apparatus for accelerating ARC4 processing |
US7295672B2 (en) * | 2003-07-11 | 2007-11-13 | Sun Microsystems, Inc. | Method and apparatus for fast RC4-like encryption |
US7289629B2 (en) * | 2004-02-09 | 2007-10-30 | Microsoft Corporation | Primitives for fast secure hash functions and stream ciphers |
-
2004
- 2004-04-27 US US10/833,478 patent/US7653196B2/en not_active Expired - Fee Related
-
2005
- 2005-04-08 EP EP05734068A patent/EP1747637A2/en not_active Withdrawn
- 2005-04-08 WO PCT/US2005/012071 patent/WO2005107386A2/en active Application Filing
- 2005-04-08 JP JP2007510755A patent/JP4486680B2/ja not_active Expired - Fee Related
- 2005-04-08 CN CN2005800211069A patent/CN1973481B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5444781A (en) * | 1993-08-23 | 1995-08-22 | Apple Computer Inc. | Method and apparatus for decryption using cache storage |
US6549622B1 (en) * | 1998-11-23 | 2003-04-15 | Compaq Computer Corporation | System and method for a fast hardware implementation of RC4 |
Also Published As
Publication number | Publication date |
---|---|
EP1747637A2 (en) | 2007-01-31 |
US7653196B2 (en) | 2010-01-26 |
CN1973481A (zh) | 2007-05-30 |
US20050240764A1 (en) | 2005-10-27 |
JP2007535000A (ja) | 2007-11-29 |
JP4486680B2 (ja) | 2010-06-23 |
WO2005107386A2 (en) | 2005-11-17 |
WO2005107386A3 (en) | 2006-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1973481B (zh) | 用于进行rc4加密的装置、网络系统和方法 | |
KR102447709B1 (ko) | 비트-믹서에 의한 암호 라운드 키의 발생을 위한 방법 및 시스템 | |
CN108073353B (zh) | 一种数据处理的方法及装置 | |
US8983063B1 (en) | Method and system for high throughput blockwise independent encryption/decryption | |
US8879727B2 (en) | Method and apparatus for hardware-accelerated encryption/decryption | |
US6879689B2 (en) | Stream-cipher method and apparatus | |
CA2150681C (en) | A method and apparatus for generating a cipher stream | |
US7336783B2 (en) | Cryptographic systems and methods supporting multiple modes | |
CN111464308B (zh) | 一种实现多种哈希算法可重构的方法和系统 | |
JPH1075240A (ja) | データ送信を保護する方法およびデータを暗号化または解読化する装置 | |
US20040019619A1 (en) | System and method for generating initial vectors | |
EA010611B1 (ru) | Способ (варианты) и устройство для криптографической обработки данных (варианты) | |
WO2008036940A2 (en) | Techniques for merging tables | |
JPH1074044A (ja) | デジタルデータを符号化する方法および装置 | |
CN116488794B (zh) | 基于fpga的高速sm4密码模组实现方法及装置 | |
US20120027198A1 (en) | System and method for cryptographic communications using permutation | |
CN103346878A (zh) | 一种基于fpga高速串行io的保密通信方法 | |
US10797859B2 (en) | Low area optimization for NB-IoT applications | |
CN111832051B (zh) | 一种基于fpga的对称加解密方法及系统 | |
CN105790926A (zh) | 用于wia-pa安全的分组密码算法工作模式实现方法 | |
Wali et al. | Modified MASK algorithm for image encryption | |
CN111049639A (zh) | 一种基于fpga的动态数据加解密实现方法 | |
CN117411727B (zh) | 一种通信传输对称加密的加密方法、装置及存储介质 | |
Mihajloska Trpcheska et al. | Lightweight version of π-cipher | |
CN117828648A (zh) | 一种可信总线交互系统的实现方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110216 Termination date: 20160408 |