[0032] 下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。
[0033] 如图1所示,一种面向安卓智能终端的基于FPGA的数据解密与脱敏设备,包括安卓智能终端模块和基于FPGA的数据解密与脱敏模块(简称FPGA模块)。所述的安卓智能终端模块由具有指纹采集功能的安卓智能终端及对应的应用程序组成。所述的FPGA模块包括处理器模块、解密模块、脱敏模块、密钥存储模块和指纹存储模块。所述安卓智能终端模块通过USB接口和FPGA模块连接,所述的密钥存储模块和指纹存储模块通过QSPI接口与FPGA芯片连接。
[0034] 所述的安卓智能终端模块,用于接收加密以后的密文文件,采集用户的指纹进行鉴权以及数据的展示功能。具体来说,安卓智能终端需要向用户提供易用的交互界面,包括指纹采集、密文数据接收、脱敏后的数据展示、以及与FPGA模块通信等功能。
[0035] 所述的具有指纹识别功能的安卓智能终端,在此安卓智能终端只负责采集指纹,再将指纹数据发送给FPGA模块,FPGA模块对比以后再返回相应的结果。通过利用安卓智能终端的指纹采集以及FPGA模块的指纹识别功能,实现了用户身份的快速鉴权,确保了只有授权的用户才能使用设备,进一步保证了机密数据的安全性。同时减少了单独使用指纹采集模块的成本。
[0036] 安卓端应用程序由JAVA语言开发,用户可以从手机内存选择需要处理的密文文件,也可以将密文文件从别的应用程序分享至本应用程序进行处理。同时用户可以根据不同的加密的算法在应用程序里选择不同的解密算法。最后把解密指令和需要解密的数据发送给FPGA模块。
[0037] 本实施例中,安卓智能终端使用USB接口通过OTG协议与FPGA设备进行连接,此时安卓智能终端处于主机模式,设备处于从机模式。FPGA设备由安卓智能终端进行供电,无需外接电源,方便用户使用设备。
[0038] 所述的FPGA内的处理器模块用于接收上述安卓智能终端发送的数据以及指令,并且实现对应的操作。具体有访问指纹专用存储器,将读取到的指纹数据与存储的用户指纹进行对比,并将对比结果进行返回;访问密钥专用存储器,将收到的密文数据及读取到的密钥通过片内高速总线传送给数据解密模块;内置的脱敏模块用于将解密后的数据进行脱敏处理;负责将脱敏完成的指令以及脱敏后的数据返回。本实施例中在FPGA内嵌入Nios II系列32位RISC嵌入式处理器软核,可以节约单独使用处理器的成本,以及可以通过片内Avalon交换式总线实现高速的数据传输。
[0039] 本实施例中选用的FPGA芯片为Altera公司的CycloneIV系列EP4CE10F17C8,该芯片有超过10K的逻辑单元。可以通过Altera公司的Quartus Ⅱ开发软件工具在此芯片上快速的嵌入Nios II系列32位RISC嵌入式处理器软核,其性能超过200DMIPS。该处理器可以通过Avalon交换式总线与数据处理部分连接,并提供高带宽数据路径、多路和实时处理能力。Avalon交换式总线也可用可以通过调用SOPC Builder设计软件自动生成。
[0040] 本实施例中解密模块调用解密IP核对密文数据进行解密操作。其中解密IP核使用Verilog语言,根据解密算法进行编写并进行封装,包括常用的SM4算法、AES算法以及DES算法,供用户使用时选择,后续可以根据实际情况进行增删。
[0041] 脱敏模块对解密完成以后的明文数据进行脱敏操作。数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。例如,对关键数据采用“***”或利用字典进行转换。由于数据已经进行脱敏处理,可以把数据发送给安卓智能终端进行展示,即使返回的数据在安卓智能终端被窃取,窃取者也无法理解其原本的含义,因为脱敏后的数据只对使用者有意义。
[0042] 本实施例中脱敏模块在处理器内使用软件方式实现,根据脱敏规则编写C函数程序,实现对数据的脱敏处理,可以方便的改写脱敏规则,以适应不同的应用场景。
[0043] 进一步,所述的密钥存储模块用于存储解密时所需要的密钥,在数据处理的过程中由FPGA模块进行调用,这样在整个过程中安卓智能终端始终没有接触到密钥文件,确保了密钥的安全性。所述的指纹存储模块用于存储授权用户的指纹数据,在启动程序时由FPGA模块内的处理器调用并进行对比,这样避免授权用户的指纹数据在安卓终端泄露的风险,确保了使用设备的用户身份的真实性。
[0044] 在本实施例中由于密钥数据大小与指纹数据所需存储空间较小,故采用同一个存储器分不同区分别存储密钥数据与指纹数据。采用QSPI FLASH芯片型号为M25PE16‑VMW6TG,大小为16Mbit。在前1Mbit空间存储密钥数据,2‑16Mbit空间存储指纹数据。FLASH芯片中存储的数据在写入后掉电也不会丢失,并且可以专用工具重复擦写。
[0045] 如图2所示本实施例的实施步骤如下:
[0046] 步骤一,打开安卓应用程序,提示用户进行指纹验证,用户在安卓智能终端上录入指纹后,将指纹数据发送给FPGA模块。
[0047] 步骤二,FPGA模块的处理器从指纹专用存储器里读取授权用户的指纹进行鉴权,并将鉴权结果返回给安卓智能终端模块。
[0048] 步骤三,安卓智能终端的应用程序根据指纹鉴权结果进行下一步动作。若成功,进行步骤四;若失败则关闭应用程序并结束操作。
[0049] 步骤四,安卓应用程序上选择需要解密的密文文件和解密算法,然后将解密指令以及密文数据发送给FPGA模块。
[0050] 步骤五,FPGA模块收到安卓智能终端模块解密指令后,其内部的处理器从密钥存储器中读取解密的密钥,并启动相应的数据解密电路对接收到的密文文件进行解密。接着,FPGA内部的处理器启动相应的脱敏模块,对解密后的明文数据进行脱敏处理。最后,FPGA模块将脱敏后的数据发送给安卓智能终端模块。
[0051] 步骤六,安卓智能终端模块收到脱敏后的明文数据后,将这些数据展示给授权用户。
[0052] 所述步骤二的具体实施步骤如下:
[0053] 当FPGA内处理器接收到指纹对比指令以及用户指纹数据后处理器从指纹专用存储器里逐个调取指纹数据与收到的用户指纹数据进行对比,如果对比成功则结束对比并发送指纹鉴权成功的指令给安卓智能终端,如果对比完所有的指纹数据都失败则返回指纹鉴权失败的指令给安卓智能终端。
[0054] 所述步骤五的具体实施步骤如下:
[0055] FPGA模块收到安卓智能终端模块得解密指令后,处理器根据收到的解密指令选择使用对应的解密算法IP核以及从密钥专用存储器中读取密钥然后把密文数据以及密钥发给数据解密模块进行解密。其中在FPGA中例化一个双口RAM用于实现处理器和FPGA的数据交互,双口RAM一侧通过Avalon总线连接处理器,另一侧与FPGA解密模块相连,可以实现处理器与FPGA的高速全双工传输。当数据解密完以后解密模块将解密后的明文数据返回给处理器,处理器收到解密完成指令后启动数据脱敏模块对明文数据进行脱敏。脱敏完成以后,处理器向安卓智能终端发送数据脱敏完成指令,并把脱敏后的数据发送给安卓智能终端。