基于fpga的luks认证芯片电路及其密码恢复方法

文档序号:10660607阅读:185来源:国知局
基于fpga的luks认证芯片电路及其密码恢复方法
【专利摘要】基于FPGA的LUKS认证芯片电路及其密码恢复方法。芯片电路设控制、密码生成、3个用户密钥PBKDF2、用户密钥选择、AES128密钥扩展、AES128解密、BRAM存储、反取证合并、哈希校验值PBKDF2和比较共12个模块。密码恢复方法:FPGA处理器解析加密的LUKS镜像文件获取认证需要的数据;处理器将认证需要的数据写入控制模块的寄存器;处理器向LUKS认证芯片电路发送启动信号,芯片电路进行密码恢复;处理器启动芯片电路后监测芯片电路控制模块中状态寄存器,获取认证是否完毕及认证是否成功的信息;处理器监测到认证完毕,若成功,向控制台输出认证恢复的密码;若失败,输出密码恢复失败信息。
【专利说明】
基于FPGA的LUKS认证芯片电路及其密码恢复方法
技术领域
[0001]本发明涉及信息安全,尤其是涉及一种基于FPGA的LUKS认证芯片电路及其密码恢复方法。【背景技术】[〇〇〇2] LUKS(Linux Unified Key Setup)是Linux系统下常用的磁盘加密技术之一,通用于Linux的各个版本(Clemens Fruhwirth,LUKS On-Disk Format Specificat1n Vers1n 1.1.1,https://gitlab.com/cryptsetup/cryptsetup/wikis/LUKS-standard/on-disk-format.pdf,0ctober 16,2011)。它是一种数据加密标准,与平台无关,在Android平台都有相关应用,如LUKS Manager。随着Linux操作系统和手机Android操作系统的普及,被广泛使用。
[0003]目前针对LUKS认证机制的分析研究多基于通用CPU或者GPU(Graphic Processing Unit,图形处理器)的硬件平台下,尽管其运行速度较快,但是随着GPU不断的更新迭代,目前的性能已经受制于高功耗的困扰。由于运行速度和能耗比值这个关键指标比较差,使得基于多核CHJ或GPU平台方案的小型化和进一步提高空间受到限制。
[0004]现场可编程门阵列(Field-Programmable Gate Array,FPGA)是在PAL、GAL、CPLD 等可编程器件的基础上进一步发展的产物。它是作为专用集成电路领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。目前,FPGA芯片中还加入了 ARM等处理器,这种处理器系统与可扩展编程逻辑单元的全新组合的设计大大方便了专用芯片电路的应用开发,在具有开发灵活性的同时又具备强大的并行处理能力。近年来,将特定密码算法在FPGA中进行兑现,以提高算法的处理速度是密码领域的一个石开究热点(Reza Rezaeian Farashahi,Bahram Rashidi , Sayed Masoud Sayed1.FPGA based fast and high-throughput 2-slow retiming 128-bit AES encrypt1n algorithm,Microelectronics Journal,vol.45,2014,pp.1014-1025)〇
[0005]中国专利201310310685公开了一种电子系统认证芯片,数据解密采用64位的DES 算法,其认证机制是自行开发并不是一个公开的认证机制规范。相对于被Linux和An droid 操作系统广泛商用的LUKS认证机制而言,其应用范围和实用性都很有限。
[0006]为了满足高性能、低功耗的设计需求,利用具有高度并行计算能力的FPGA芯片,来实现LUKS认证机制电路并应用在其密码恢复上,具有非常广阔的应用市场。然而目前还没有基于这种方案来实现LUKS认证机制的芯片电路及其密码恢复方法。
【发明内容】

[0007]本发明的目的在于提供一种可解决目前缺乏LUKS认证机制专用电路,认证运算速度和能耗比低等问题,可实现快速、低功耗的LUKS密码认证和密码恢复功能的基于FPGA的 LUKS认证芯片电路。
[0008]本发明的另一目的在于提供一种基于FPGA的LUKS认证芯片电路的密码恢复方法。
[0009]所述基于FPGA的LUKS认证芯片电路设有控制模块、密码生成模块、第一用户密钥 PBKDF2模块、第二用户密钥PBKDF2模块、第三用户密钥PBKDF2模块、用户密钥选择模块、 AES128密钥扩展模块、AES128解密模块、BRAM存储模块、反取证合并模块、哈希校验值 PBKDF2模块和比较模块;[〇〇1〇] 通过FPGA内部AXI总线连接FPGA处理器与LUKS认证芯片电路,利用运行在FPGA处理器上的FPGA处理器,输入认证数据、启动LUKS认证芯片电路并实现密码恢复方法;
[0011]所述控制模块分别与密码生成模块、第一用户密钥PBKDF2模块、第二用户密钥 TOKDF2模块、第三用户密钥TOKDF2模块、用户密钥选择模块、AES128密钥扩展模块、AES128 解密模块、BRAM存储模块、反取证合并模块、哈希校验值PBKDF2模块和比较模块连接,控制模块通过输入的状态信号对密码生成模块、第一用户密钥PBKDF2模块、第二用户密钥 TOKDF2模块、第三用户密钥TOKDF2模块、用户密钥选择模块、AES128密钥扩展模块、AES128 解密模块、BRAM存储模块、反取证合并模块、哈希校验值PBKDF2模块和比较模块进行监测, 并生成对应输出控制信号对密码生成模块、第一用户密钥PBKDF2模块、第二用户密钥 TOKDF2模块、第三用户密钥TOKDF2模块、用户密钥选择模块、AES128密钥扩展模块、AES128 解密模块、BRAM存储模块、反取证合并模块、哈希校验值PBKDF2模块和比较模块的工作时序进行控制,实现LUKS认证功能;密码生成模块的输出端分别与第一用户密钥PBKDF2模块、第二用户密钥TOKDF2模块、第三用户密钥TOKDF2模块的输入端连接,为第一用户密钥TOKDF2 模块、第二用户密钥PBKDF2模块、第三用户密钥PBKDF2模块分别提供用户密码;第一用户密钥PBKDF2模块、第二用户密钥PBKDF2模块、第三用户密钥PBKDF2模块的输出端与用户密钥选择模块的输入端连接,用于输出用户密钥;用户密钥选择模块的输出端与AES128密钥扩展模块的输入端连接,根据控制模块的输出控制信号选择输出对应的用户密钥;AES 128密钥扩展模块的输出端与AES 128解密模块的输入端连接,用于输出AES 128解密所需密钥; AES128解密模块的输入端与BRAM存储模块的输出端连接,用于读取BRAM存储模块的加密数据进行解密,AES128解密模块的输出端与反取证合并模块的输入端连接,为反取证合并模块输出待合并的数据;反取证合并模块的输出端与哈希校验值PBKDF2模块输入端连接,用于输出由用户密码计算得来的主密钥;哈希校验值PBKDF2模块的输出端与比较模块的输入端连接,用于输出由用户密码计算的密钥的哈希校验值;比较模块的输入端与控制模块的输出端连接,用于读取主密钥的哈希校验值与生成的哈希校验值进行比较,并将比较结果输出给控制模块。[〇〇12]所述LUKS认证芯片电路中的核心模块是控制模块,该控制模块用于监测和控制其它11个模块,完成LUKS认证功能,同时该控制模块与FPGA处理器进行数据通信,获取LUKS认证所需初始化数据以及配置数据供其他模块调用;密码生成模块,对密码空间内的密码进行遍历,生成用户密码分别给第一用户密钥PBKDF2模块、第二用户密钥PBKDF2模块、第三用户密钥TOKDF2模块;第一用户密钥TOKDF2模块、第二用户密钥TOKDF2模块、第三用户密钥 PBKDF2模块派生出用户密钥;用户密钥选择模块在控制模块的控制下对用户密钥选择输出;AES128密钥扩展模块针对用户密钥进行密钥扩展;AES128解密模块采用AES128密钥扩展模块扩展的密钥,对存储于BRAM存储模块的加密数据进行设定模式的解密,并将解密结果输出给反取证合并模块;反取证合并模块对解密的数据进行合并成主密钥;哈希校验值 PBKDF2模块将反取证合并模块合并的密钥派生出哈希校验值,输出给比较模块;比较模块读取存储在控制模块的主密钥哈希校验值与生成的哈希校验值进行比较,并将比较结果输出给控制模块,控制模块根据其比较结果发出对应控制信号。[0013 ]—种基于FPGA的LUKS认证芯片电路的密码恢复方法,包括以下步骤:[〇〇14]1 )FPGA处理器解析加密的LUKS镜像文件,获取认证需要的数据;
[0015]在步骤1)中,所述认证需要的数据包括迭代次数、盐值和哈希校验值等。
[0016]2)FPGA处理器将认证需要的数据通过AXI总线接口写入LUKS认证芯片电路中控制模块的寄存器;[0〇17]3 )FPGA处理器通过AXI总线接口向LUKS认证芯片电路发送启动信号,LUKS认证芯片电路开始进行密码恢复工作;
[0018]4)FPGA处理器启动LUKS认证芯片电路后通过AXI总线接口监测LUKS认证芯片电路控制模块中状态寄存器,获取认证是否完毕以及认证是否成功的信息;
[0019]5 )FPGA处理器监测到认证完毕,若认证成功,则向控制台输出认证恢复的密码;若认证失败,则输出密码恢复失败信息。
[0020]所述密码恢复方法基于LUKS认证芯片电路设计了密码恢复FPGA处理器。该方法从 LUKS镜像文件的卷头中解析出迭代次数、盐值和哈希校验值,并将这些数据和设置通过AXI 总线输入控制模块2的相应寄存器,之后启动LUKS认证芯片电路。此外,此模块还负责监测 LUKS认证芯片是否认证完毕和认证成功,监测到认证完毕状态后,若认证成功,则向控制台输出恢复的密码,否则输出密码恢复失败信息。
[0021]本发明利用高性能、低功耗、高并行计算能力的FPGA处理器(软件功能模块),给出了一种基于FPGA的LUKS认证芯片电路及其密码恢复方法。它集成了处理器的软件可编程性与FPGA的硬件可编程性,还通过优化的架构提供系统级性能提升,并获得较低系统功耗。 [〇〇22]本发明实现了 LUKS认证的专用芯片电路及其应用开发,在具有开发灵活性的同时又具备强大的并行处理能力,同时具有高性能、低功耗等优点。【附图说明】[〇〇23]图1为本发明所述基于FPGA的LUKS认证芯片电路的结构组成框图。【具体实施方式】[〇〇24]下面结合实施例及附图对本发明作进一步详细的描述。[〇〇25]如图1所示,本发明的基于FPGA的LUKS认证芯片电路及其密码恢复方法,包括FPGA 处理器和LUKS认证芯片电路;LUKS认证芯片电路设有控制模块2、密码生成模块3、第一用户密钥PBKDF2模块4、第二用户密钥TOKDF2模块5、第三用户密钥TOKDF2模块6、用户密钥选择模块7、AES128密钥扩展模块8、AES128解密模块9、BRAM存储模块10、反取证合并模块11、哈希校验值PBKDF2模块12和比较模块13; FPGA处理器1通过AXI总线接口连接LUKS认证芯片电路中控制模块2;LUKS认证芯片电路中控制模块2连接着其它11个模块,通过输入的状态信号对其它11个电路模块进行监测,并生成对应输出控制信号对其它11个电路模块的工作时序进行控制,从而实现LUKS认证功能;密码生成模块3的输出与第一用户密钥PBKDF2模块4、 第二用户密钥PBKDF2模块5、第三用户密钥PBKDF2模块6的输入连接,为第一用户密钥 PBKDF2模块4、第二用户密钥PBKDF2模块5、第三用户密钥PBKDF2模块6分别提供用户密码;第一用户密钥PBKDF2模块4、第二用户密钥PBKDF2模块5、第三用户密钥PBKDF2模块6的输出与用户密钥选择模块7的输入连接,输出用户密钥;用户密钥选择模块7的输出与AES 128密钥扩展模块8的输入连接,根据控制模块2的输出控制信号选择输出对应的用户密钥; AES128密钥扩展模块8的输出与AES128解密模块9的输入连接,输出AES128解密所需密钥; AES 128解密模块9的输入与BRAM存储模块10的输出连接,读取BRAM存储模块10的加密数据进行解密,其输出与反取证合并模块11的输入连接,为反取证合并模块11输出待合并的数据;反取证合并模块11的输出与哈希校验值TOKDF2模块12输入连接,输出由用户密码计算得来的主密钥;哈希校验值PBKDF2模块12的输出与比较模块13的输入连接,输出由用户密码计算的密钥的哈希校验值;比较模块13的输入与控制模块2的输出连接,读取主密钥的哈希校验值与生成的哈希校验值进行比较,并将比较结果输出给控制模块2。[〇〇26]在本发明实施例中,用户密钥PBKDF2模块执行一次计算所需要的时间较长,因此本发明使用并行的第一用户密钥PBKDF2模块4、第二用户密钥PBKDF2模块5和第三用户密钥 PBKDF2模块6来生成用户密钥,以提高整体系统性能。[〇〇27] FPGA处理器1主要实现解析LUKS加密镜像文件获取认证需要的数据,这些数据包括PBKDF2模块需要的迭代次数、盐值和比较模块13需要的哈希校验值;将解析LUKS加密镜像文件得到的数据输入LUKS认证芯片电路中控制模块2的相应寄存器;数据输入完毕后,向 LUKS认证芯片电路输入启动信号,LUKS认证芯片电路开始进行密码恢复工作;通过获取 LUKS认证芯片电路控制模块2中状态寄存器的值监测LUKS认证芯片电路的认证状态;当监测到认证完毕后,若认证成功则向控制台输出恢复的密码,否则输出密码恢复失败信息。 [〇〇28] LUKS认证芯片电路,控制模块2将对应迭代次数,盐值等数据输入到第一用户密钥 PBKDF2模块4、第二用户密钥PBKDF2模块5、第三用户密钥PBKDF2模块6和哈希校验值PBKDF2 模块12,将哈希校验值输入到比较模块13,且控制模块2在接收到FPGA处理器1的启动信号后启动密码生成模块3做密码生成运算。密码生成模块3生成三个密码,同时输出给控制模块2密码已经生成和密码空间是否遍历完成的信息,并将这个三个密码分别输出给第一用户密钥PBKDF2模块4、第二用户密钥PBKDF2模块5、第三用户密钥PBKDF2模块6。控制模块2控制第一用户密钥PBKDF2模块4、第二用户密钥PBKDF2模块5、第三用户密钥PBKDF2模块6接收密码后派生出三个用户密钥,同时第一用户密钥PBKDF2模块4、第二用户密钥PBKDF2模块5、 第三用户密钥PBKDF2模块6输出给控制模块2用户密钥已经生成的信号。控制模块2接收到用户密钥已经生成的信号后,控制用户密钥选择模块7依次选择生成的用户密钥输入 AES128密钥扩展模块8。控制模块2启动AES128密钥扩展模块8进行密钥扩展,AES128密钥扩展模块8扩展出密钥,并输出给控制模块2密钥扩展完毕的信号。控制模块2启动AES128解密模块9,并控制AES128解密模块9用AES128密钥扩展模块8扩展出的密钥循环解密N次(N值根据LUKS认证机制由控制模块2配置),每次从BRAM存储模块10获取128密文数据进行解密得到相应的明文,并将明文输入反取证合并模块11,然后进行下轮解密。控制模块2控制反取证合并模块11处理从AES128解密模块9接收的明文数据,同样需要循环执行N次,最终得到主密钥,将该主密钥输入哈希校验值PBKDF2模块12,同时输出给控制模块2完成N次循环得到主密钥的信号。控制模块2控制哈希校验值PBKDF2模块12派生出哈希校验值,并将该值输入比较模块13,同时输出给控制模块2哈希校验值生成的信号。比较模块13由控制模块2控制将生成的哈希校验值与控制模块2输入的哈希校验值进行比较,两者匹配则认证成功,不匹配则认证失败,并将认证是否成功的信息输出给控制模块2。控制模块2接收比较模块13 的认证结果后,若认证成功则结束认证,且将认证恢复的密码和认证成功的信息写入状态寄存器,等待FPGA处理器1读取;若认证失败,控制模块2判断是否遍历完整个密码空间,若密码遍历完毕则将认证失败的信息写入状态寄存器,否则控制模块2控制LUKS认证芯片电路进入下一个密码认证操作,并将认证未完成的信息写入状态寄存器,等待FPGA处理器1读取。[〇〇29]本发明的基于FPGA的LUKS认证芯片电路的密码恢复方法,包括以下步骤:[〇〇3〇] 1 )FPGA处理器解析加密的LUKS镜像文件,获取认证需要的数据;所述认证需要的数据包括迭代次数、盐值和哈希校验值等;
[0031] 2)FPGA处理器将认证需要的数据通过AXI总线接口写入LUKS认证芯片电路中控制模块的寄存器;[〇〇32] 3)FPGA处理器通过AXI总线接口向LUKS认证芯片电路发送启动信号,LUKS认证芯片电路开始进行密码恢复工作;[〇〇33] 4)FPGA处理器启动LUKS认证芯片电路后通过AXI总线接口监测LUKS认证芯片电路控制模块中状态寄存器,获取认证是否完毕以及认证是否成功的信息;[〇〇34] 5)FPGA处理器监测到认证完毕,若认证成功,则向控制台输出认证恢复的密码;若认证失败,则输出密码恢复失败信息。[〇〇35] 本发明利用FPGA中的可编程逻辑电路部分实现LUKS认证芯片电路,通过FPGA内部 AXI总线连接FPGA处理器与LUKS认证芯片电路,利用运行在FPGA处理器上的FPGA处理器,输入认证数据、启动LUKS认证芯片电路并实现密码恢复方法。本发明实现LUKS认证芯片电路在认证速度以及功耗上具有良好的性能,并具有灵活性、实用性,可用于密码认证和恢复的实际应用中。
【主权项】
1.基于FPGA的LUKS认证芯片电路,其特征在于设有控制模块、密码生成模块、第一用户 密钥TOKDF2模块、第二用户密钥PBKDF2模块、第三用户密钥PBKDF2模块、用户密钥选择模 块、AES128密钥扩展模块、AES128解密模块、BRAM存储模块、反取证合并模块、哈希校验值 PBKDF2模块和比较模块;通过FPGA内部AXI总线连接FPGA处理器与LUKS认证芯片电路,利用运行在FPGA处理器 上的FPGA处理器,输入认证数据、启动LUKS认证芯片电路并实现密码恢复方法;所述控制模块分别与密码生成模块、第一用户密钥PBKDF2模块、第二用户密钥PBKDF2 模块、第三用户密钥PBKDF2模块、用户密钥选择模块、AES128密钥扩展模块、AES128解密模 块、BRAM存储模块、反取证合并模块、哈希校验值PBKDF2模块和比较模块连接,控制模块通 过输入的状态信号对密码生成模块、第一用户密钥PBKDF2模块、第二用户密钥PBKDF2模块、 第三用户密钥PBKDF2模块、用户密钥选择模块、AES128密钥扩展模块、AES128解密模块、 BRAM存储模块、反取证合并模块、哈希校验值PBKDF2模块和比较模块进行监测,并生成对应 输出控制信号对密码生成模块、第一用户密钥PBKDF2模块、第二用户密钥PBKDF2模块、第三 用户密钥TOKDF2模块、用户密钥选择模块、AES128密钥扩展模块、AES128解密模块、BRAM存 储模块、反取证合并模块、哈希校验值PBKDF2模块和比较模块的工作时序进行控制,实现 LUKS认证功能;密码生成模块的输出端分别与第一用户密钥PBKDF2模块、第二用户密钥 PBKDF2模块、第三用户密钥PBKDF2模块的输入端连接,为第一用户密钥PBKDF2模块、第二用 户密钥PBKDF2模块、第三用户密钥PBKDF2模块分别提供用户密码;第一用户密钥PBKDF2模 块、第二用户密钥PBKDF2模块、第三用户密钥PBKDF2模块的输出端与用户密钥选择模块的 输入端连接,用于输出用户密钥;用户密钥选择模块的输出端与AES128密钥扩展模块的输 入端连接,根据控制模块的输出控制信号选择输出对应的用户密钥;AES128密钥扩展模块 的输出端与AES128解密模块的输入端连接,用于输出AES128解密所需密钥;AES128解密模 块的输入端与BRAM存储模块的输出端连接,用于读取BRAM存储模块的加密数据进行解密, AES128解密模块的输出端与反取证合并模块的输入端连接,为反取证合并模块输出待合并 的数据;反取证合并模块的输出端与哈希校验值PBKDF2模块输入端连接,用于输出由用户 密码计算得来的主密钥;哈希校验值TOKDF2模块的输出端与比较模块的输入端连接,用于 输出由用户密码计算的密钥的哈希校验值;比较模块的输入端与控制模块的输出端连接, 用于读取主密钥的哈希校验值与生成的哈希校验值进行比较,并将比较结果输出给控制模 块。2.—种基于FPGA的LUKS认证芯片电路的密码恢复方法,其特征在于包括以下步骤:1 )FPGA处理器解析加密的LUKS镜像文件,获取认证需要的数据;2)FPGA处理器将认证需要的数据通过AXI总线接口写入LUKS认证芯片电路中控制模块 的寄存器;3)FPGA处理器通过AXI总线接口向LUKS认证芯片电路发送启动信号,LUKS认证芯片电 路开始进行密码恢复工作;4 )FPGA处理器启动LUKS认证芯片电路后通过AXI总线接口监测LUKS认证芯片电路控制 模块中状态寄存器,获取认证是否完毕以及认证是否成功的信息;5)FPGA处理器监测到认证完毕,若认证成功,则向控制台输出认证恢复的密码;若认证 失败,则输出密码恢复失败信息。3.如权利要求2所述一种基于FPGA的LUKS认证芯片电路的密码恢复方法,其特征在于 在步骤1)中,所述认证需要的数据包括迭代次数、盐值和哈希校验值。
【文档编号】H04L9/32GK106027261SQ201610329181
【公开日】2016年10月12日
【申请日】2016年5月18日
【发明人】李晓潮, 曹春辉, 吴孔程, 李鹏涛, 李琳, 郭东辉
【申请人】厦门大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1