所有提交的电子邮件系统将被重定向到在线稿件提交系统。请作者将文章直接提交给在线稿件提交系统各自期刊的。

基于FPGA的网络数据安全

Ms.P.Thamarai# 1, Mr.B.Karthik# 2
  1. 印度金奈巴拉特大学欧洲经济学系助理教授。来自印度泰米尔纳德邦
  2. 印度金奈巴拉特大学欧洲经济学系助理教授。来自印度泰米尔纳德邦
相关文章Pubmed谷歌学者

浏览更多相关文章国际电气、电子与仪器工程高级研究杂志

摘要

本文探讨了一种利用FPGA实现RSA算法的简单新技术,该算法可作为安全通信系统的标准器件。该算法在FPGA上通过VHDL语言实现。为了实现RSA操作,使用了一个简单的嵌套循环加法和减法。这导致执行此操作的频率要求非常低,同时考虑到高速,通过减少整个电路的低功耗,多个密钥尺寸支持和与早期方法相比的低成本来减少门数。RSA加密端的信息以语句的形式出现,解密端的信息也以语句的形式出现,并且有效地实现了RSA加密端的实时输入/输出。硬件设计是针对Xilinx Spartan 3E设备,它也支持较低版本。RSA算法设计利用了951个总等效门计数,时钟频率达到35.00MHz。

关键字

密码学,FPGA, VHDL,安全,通信。

介绍

网络技术的巨大进步为改变我们在互联网上交流和做大生意的方式带来了巨大的潜力。但是,在处理机密数据方面,由于公共网络的主要缺点,互联网提供的成本效益和全球化正在慢慢降低。互联网上机密数据流量的急剧增长使得安全问题成为一个根本问题。随着通信信道对安全性的要求越来越高,开发一种新型、简单、高效的硬件安全模块已成为当务之急。
到目前为止,各种各样的工作已经在RSA算法的硬件实现这一特定领域完成,以保护不同格式的数据,但尚未结束。Hani等人提出了RSA方案的硬件实现,其中他们使用Montgomery算法。Kim等人也采取了类似的方式。本设计方案的目标是实现一个1024位RSA密码处理器。但这两种设计都有处理时间较慢的缺点,尽管它们使用更快的时钟和仅以二进制或十六进制格式处理的数据。Chris等人采用了另一种方法。但是,它不能提供使用许多实际应用程序的灵活性,因为它只能使用固定的密钥大小来实现。Ibrahimy等人提出了在低时钟频率下实现灵活密钥大小的RSA算法。但它们也处理二进制或十六进制格式的数据,即没有实现实时输出,门的数量也很高,反过来又增加了功耗。
本文采用模求运算的方法对RSA算法方案进行了硬件实现。简单的嵌套循环加法和减法已经被用来实现模幂运算。为了实现这一点,只使用移位寄存器、xor和lut。通过利用xor的可重复使用特性,避免了NAND门的使用,降低了电路的复杂性。在这里,它根据应用程序需求支持RSA的多个密钥大小。这种新方法有助于减少系统处理时间、门数、频率要求和功耗。此外,系统还可以以语句的形式接收信息,例如word格式(实时输入/输出),而不是像以前的方法那样以二进制或十六进制格式处理。

设计概述

RSA算法[6]中一个明显的特点是,它允许在解密过程中重用加密中使用的大部分积分部分,这可以减少最终的硬件面积。在RSA中,明文块M通过以下方式加密为密文块C:
明文块通过以下方式恢复:
由于模算法中的对称性,RSA加解密是互逆和可交换的,如式(1)和(2)所示。RSA设计的潜在应用之一是安全的数据通信。在本应用中,数据输入可以是一条语句,通过串行通信直接馈送到FPGA板上。加密模块负责安全性。接收端的处理过程与发送端的处理过程相同,只是模块的顺序相反。RSA涵盖了加密和解密的操作。
A. RSA基本流程
RSA算法需要对模幂进行估计,利用求幂查询将其分解为一系列的模乘法。RSA加密过程是数学运算,c = me mod n[6]。这个数学运算涉及到对大整数的模幂、乘法、加减运算等几个模运算。上述操作的硬件实现的详细算法已在以下部分中讨论。
B.模取幂过程
模取幂运算只是一个取幂运算,其中乘法和平方运算是模的。为计算M而开发的求幂运算e适用于计算Me(mod n)。在硬件实现方面,为了获得更高的效率,需要一个巧妙的算法。因此,幂是通过做一些平方和乘法来获得的。
C.模块化乘法过程
模乘法问题定义为给定整数A、B、n,计算P =(A x B) (mod n)。通常假设A、B为正整数,且0≤A, B < n。
模乘法运算是在将幂分解为若干平方和乘法之后进行的。基本上有四种计算乘积的一般方法。先乘后除,交替乘减,布里克的方法和蒙哥马利的方法。
上述所有方法都有一个共同的缺点,即每次乘法都会使位数加倍。例如,当两个32位数字相乘时,会得到一个64位的结果,因此需要一个大的寄存器来存储这个结果。
在此设计中使用了一种改进的算法,将在后面讨论。改进后的算法通过将乘法运算分解为若干模加法运算来克服这个问题。
D.模加法过程
模加法问题定义为给定整数A、B、n,计算S = (A + B) (mod n)。通常假设A、B为正整数,且0≤A, B < n。S最常用的计算方法如下:
1.计算S = A + B。
2.那么S = S - n。
3.若S≥0,则重复步骤2,否则S = S。
注意,步骤2中的模加法涉及减法操作。
E.完整算法
RSA加解密的难点在于c = m的模量计算e对n取模,得到加密消息“c”。为了计算加密消息“c”,它涉及到需要大量组合逻辑的幂运算,它随着被乘以的比特数呈指数增长。
实现这一点的可能方法是使用顺序电路,它将幂运算实现为一系列乘法,乘法也可以实现为一系列移位和条件加法[5],这已经在B节和C节中讨论过,其中幂运算被分成许多乘法和平方。每个乘法都可以通过d节中讨论的一系列加法来实现。为了减小硬件尺寸,在乘法循环中执行模数(mod n)作为若干减法。即,对于每个循环,当参与结果大于除数时,从参与结果中减去除数或模数,并在加密完成时留下模数。在此基础上,开发了用于RSA设计的VHDL代码。开发了数据控制、UART和设备驱动程序的VHDL代码,将数据馈送到FPGA。
F. RSA算法实现步骤

硬件描述语言(VHDL)建模

VHDL (VHSIC硬件描述语言)是一种用于电子设计自动化的硬件描述语言,用于描述数字和混合信号系统,如现场可编程门阵列和集成电路。这种语言完全基于IEEE 1164标准。本文利用VHDL语言对整个系统进行了设计。该方法的RTL模型如图3和图4所示。
A. FPGA中的RSA RTL总体模型
B. FPGA中的UART RTL模型

模拟,综合和讨论

VHDL通常用于编写描述逻辑电路的文本模型。只有当这种模型是逻辑设计的一部分时,才由综合程序处理。仿真程序用于测试逻辑设计,使用仿真模型来表示与设计接口的逻辑电路。这种模拟模型的集合通常称为测试台。VHDL具有文件输入和输出功能,并且可以用作文本处理的通用语言,但是文件更常用于模拟测试台架,用于刺激或验证数据。有一些VHDL编译器可以编译可执行的二进制文件。在这里,VHDL程序用于RSA,数据控制,UART和设备驱动程序编写一个测试台,使用主机上的文件来验证设计的功能,以定义刺激,与用户交互,并将结果与预期的结果进行比较。在生成模拟成功的代码后,可能无法合成成真实的设备,或者太大而不实用。
因此,已经采取了一步,在VHDL IDE中设计硬件,用于使用Xilinx ISE来生成所需电路的RTL原理图。之后,生成的原理图可以使用仿真软件进行验证,仿真软件在生成相应的测试台后显示电路的输入输出波形。最后,将VHDL模型转换为映射到可编程逻辑器件FPGA上的门和线。因此,实际的硬件配置为处理器芯片,而不是用于实现RSA算法的VHDL代码。
合成完成后,输入信息以数据的形式从计算机通过串行通信介质的超级终端或以太网输入到FPGA。该消息以二进制形式移动到FPGA,逐个选择位值。现在,在FPGA中使用VHDL程序实现RSA算法对该消息进行处理,并在超级终端屏幕上产生加密数据作为输出。因此,输出不是可读格式,可以保存在记事本中。现在,可以将加密文件发送给解密过程以获得原始消息。所有这些操作都在Spartan 3E FPGA电子模块中完成,其实时输出可以通过超级终端屏幕看到,而不是二进制或十六进制格式。因此,该FPGA模块可以作为安全封闭网络数据通信系统的标准器件。
A.设备利用率汇总
从设备利用率总结来看,很明显,用于该方法的总等效门只有951个。除了切片数量之外,所有其他使用的组件百分位数都小于10,其中包括xor, lut和移位寄存器。由于总等效门数非常低,因此执行此操作所需的频率非常低,与以前的方法相比,功耗低,成本低。
B.模拟实时结果
上图为Xilinx Spartan 3E FPGA器件的输出。首先,在正常模式下将输入馈送到FPGA器件。然后,可以在加密模式下给出相同的输入,以获得加密的数据。加密后的数据可以保存在便签本中传输到接收端。现在,可以在接收端以解密方式给出加密后的数据,从而得到原始数据。

结论

本研究项目的主要目标是在FPGA上开发RSA算法,该算法可以提供显着的安全性,并且可以提供更快的处理时间。公钥和私钥的最大比特长度都是1024位。除了安全问题外,本研究项目的另一个主要关注点是如何处理作为输入的数据或文件。VHDL的实现表明,该语言提供了一个实用的工具,无需绘制大量的逻辑门来练习算法。虽然目前该RSA算法的密钥大小可以提供足够的安全性,但更大的密钥大小总是可以确保更好的安全性。但是,这会导致处理时间变慢。

数字一览

数字 数字
图1 图2

参考文献











全球科技峰会