首页 / 专利库 / 软件 / 命令行界面 / 一种基于OpenCL的Bitslicing-KLEIN的快速实现方法

一种基于OpenCL的Bitslicing-KLEIN的快速实现方法

阅读:18发布:2020-05-15

专利汇可以提供一种基于OpenCL的Bitslicing-KLEIN的快速实现方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种基于OpenCL的Bitslicing‑KLEIN快速实现方法,包括下述步骤:S1、对需要加/解密的数据进行重排;S2、对重排后的数据执行bitslicing化KLEIN的轮函数,执行次数由密钥长度决定;S3、将处理好的数据还原为正确的明密文格式;S4、将上述步骤写成供OpenCL主程序调用的 内核 函数;S5、根据管道延迟隐藏技术确定分 块 大小及调度策略,编写OpenCL主程序;S6、执行程序,输出加解密结果,释放资源。本发明通过引入重排机制对原有的bitslicing化后的KLEIN版本进行了优化,并使用OpenCL将优化后的 算法 进行并行化实现,不仅使得KLEIN算法具备了抗边信道的缓存和计时攻击的特性,还提高了算法的性能,可用于快速加解密或口令破解机等,同时能使Bitslicing‑KLEIN在支持OpenCL的平台和设备上并行运行并获得最佳性能。,下面是一种基于OpenCL的Bitslicing-KLEIN的快速实现方法专利的具体信息内容。

1.一种基于OpenCL的Bitslicing-KLEIN的快速实现方法,其特征在于,包括下述步骤:
S1、对需要加/解密的数据进行重排,输入数据经过重排后,排列成适合Bitslicing-KLEIN中的SubNibbles和MixNibbles操作的形式;
步骤S1中,对输入数据进行重排的具体方法是:
为了发挥bitslicing技术的并行特性,需要将明文或者密文从s0s1s2s3s4s5s6s7s8s9s1
0s11s12s13s14s15重排为s0s1s8s9s2s3s10s11s4s5s12s13s6s7s14s15,其中si为4比特,对应KLEIN中的第i个S盒的输入,重排时需要同时按照MixNibbles时的输入作为划分,将第i个比特位分配到对应的变量上,MixNibbles将相邻的两个S盒的输入划分为一组,重排时需要将MixNibbles输入的所有第0比特分配到变量v0中,则v0=s1|0s9|0s3|0s11|0s5|0s13|0s7|0s15|0,v1为所有输入的第1比特,v2,v3以此类推,其中si|0为第i个S盒输入的最低位,类似地将MixNibbles所有输入的第4比特分配到变量v4中,则v4=s0|0s8|0s2|0s10|0s4|0s12|0s6|0s14|0,v5为所有输入的第5比特,v6,v7以此类推;
S2、对重排后的数据执行bitslicing化KLEIN的轮函数,执行次数由密钥长度决定;
S3、将处理好的数据还原为正确的明密文格式,轮函数执行过后,对数据进行重排,使其还原成明文或者密文的格式,再将其保存到输出数据所在的存储区域中;
S4、将上述步骤S1-S3写成供OpenCL主程序调用的内核函数,函数的参数包括加/解密用的明/密文数据的地址、轮数、加/解密用的密钥数据的地址以及存放加/解密结果的地址;
S5、根据最优化策略确定分大小及调度策略,编写OpenCL主程序,主程序包括设置分块大小,获取可用平台,获取设备列表并选中目标设备作为运行设备,创建上下文环境,创建内核程序对象并进行编译、创建传输队列和内核执行队列,创建内存空间,设置参数映射,拷贝数据到设备,根据管道延迟隐藏技术安排传输队列和内核队列的执行顺序,从目标设备中拷贝执行结果,释放资源;
S6、运行主程序,输出加/解密结果,释放资源,主程序编写好后,直接运行,目标设备会按照主程序的设置及调度策略合理地循环执行拷贝数据到目标设备,让各个线程运行内核程序,将运行结果从目标设备拷贝回主机三个操作,等所有数据处理结果都完成之后,将结果输出到指定位置并释放资源。
2.根据权利要求1所述的基于OpenCL的Bitslicing-KLEIN的快速实现方法,其特征在于,步骤S2中,需要处理的数据经过重排后,直接执行Bitslicing-KLEIN的轮函数,包括轮密钥加、块替换、块旋转以及块混合四个步骤;
所述轮密钥加,是在待加密数据和密钥重排好之后,直接进行异或运算;
所述块替换,直接使用Bitslicing-KLEIN的块替换中的布尔表达式,不同之处在于,由于数据已经重排好,不需要逐比特提取出来再进行布尔表达式的运算;
所述块旋转,是在KLEIN中,加密的时候是左移两个字节,所以只需将变量的值进行交换即可;
所述块混合,直接使用Bitslicing-KLEIN的块混合中的布尔表达式进行运算,不同之处在于,不需要逐比特提取出来再执行运算。
3.根据权利要求1所述的基于OpenCL的Bitslicing-KLEIN的快速实现方法,其特征在于,步骤S4中,所述加/解密用的明/密文数据地址、加/解密用的密钥数据地址以及加/解密结果的地址均为无符号字符向量全局指针,轮数的类型为整型,编写内核函数的时候,可以用C语言的内置类型,并推荐使用OpenCL提供的内置类型。
4.根据权利要求3所述的基于OpenCL的Bitslicing-KLEIN的快速实现方法,其特征在于,所述内核函数的内容包括获取当前工作节点的位置,获取对应的处理数据,对加/解密用的明/密文数据进行重排,对加/解密用的密钥数据进行重排,根据轮数循环执行轮密钥加、轮密钥生成、块替换、块旋转、块混合,最后再执行一次轮密钥加,然后对数据进行重排还原成恰当的排列,最后将处理好的数据存进保存加/解密结果的数组中。
5.根据权利要求4所述的基于OpenCL的Bitslicing-KLEIN的快速实现方法,其特征在于,步骤S5中,所述根据最优化策略确定分块大小及调度策略,编写OpenCL主程序具体为:
首先要设置global_work_size以及local_work_size两个参数的值;
然后要配置OpenCL的运行环境,具体如下:
先使用clGetPlatformIDs和clGetPlatformInfo两个命令来获取可用的计算平台,并选择AMD环境作为计算平台;然后使用clCreateContextFromType命令生成上下文环境,命令的第二个参数设为CL_DEVICE_TYPE_GPU表示使用GPU作为计算设备;再使用
clGetContextInfo命令获取计算设备的信息,检查所选设备是否正确;接着使用
clCreateProgramWithSource命令创建程序对象,使用clBuildProgram编译程序对象,确保程序对象能被正常执行;然后使用clCreateKernel命令创建内核对象;最后使用
clCreateCommandQueue命令创建执行内核函数以及执行数据传输的两个命令队列;使用clCreateBuffer命令为输入数据、输出数据及轮密钥数据创建内存空间;然后使用clSetKernelArg命令为内核程序设置相应的参数,需要设置的参数个数与内核函数的参数个数一致;
在核心部分 ,需要根据管道延迟隐藏技术的调度策略 ,分多次使用
clEnqueueWriteBuffer命令将待加密的明文以及要使用到的密钥复制到显存中,然后使用clEnqueueNDRangeKernel命令将内核程序放入命令队列中执行然后使用
clEnqueueReadBuffer命令从显存中读取加密结果;
最后的部分,使用clRelease、free命令释放资源。
6.根据权利要求1所述的基于OpenCL的Bitslicing-KLEIN的快速实现方法,其特征在于,在IDE中打开OpenCL主程序,或者使用命令行界面,直接进行编译运行,根据OpenCL主程序,加密结果会输出到屏幕或者指定的文件当中。

说明书全文

一种基于OpenCL的Bitslicing-KLEIN的快速实现方法

技术领域

[0001] 本发明涉及密码算法的技术领域,特别涉及基于OpenCL的Bitslicing-KLEIN的快速实现方法。

背景技术

[0002] 自GPU的概念由Nvidia公司提出以来,GPU的能就被不断提升,并被广泛应用于个人电脑、工作站、嵌入式系统、移动设备之中。由于它是专为处理图形图像数据而设计
的,它具有高度并行的结构。经过多年的发展,其并行运算能力已经远远超越了CPU,这也使
得它得以突破了原先单一的用途,而利用GPU对各种计算进行并行加速也成为了当今的研
究热点,GPGPU(通用计算图形处理器)的概念也应运而生。
[0003] 目前,在利用GPU进行并行化方面使用得最为普遍的是CUDA和OpenCL两种技术。本专利所使用的就是OpenCL技术。OpenCL全称Open Computing Language(开放计算语言),是
由Khronos Group维护的为异构平台提供编写程序(尤其是并行程序)的开放的框架标准。
OpenCL由编写内核程序的语言和定义并控制平台的API两部分组成,可以在多核CPU或者
GPU上编译运行。通过使用OpenCL,软件开发人员便能够高效利用各种异构处理平台,从高
性能计算服务器,到家用计算机再到手持设备,都被OpenCL所支持,并且在OpenCL帮助下,
能够组合工作。
[0004] Bitslicing技术则是由密码学家Eli Biham最初提出并应用在DES的软件性能提升上。该技术能为密码算法提供抗边信道的缓存和计时攻击的特性,因而受到了不少密码
算法设计者的青睐。目前该技术已被应用到Serpent,Rectangle,RoadRunneR-A算法的设计
上,也被用于KLEIN,PRINCE,LED等算法的优化上。

发明内容

[0005] 本发明的主要目的在于克服现有技术的缺点与不足,提供一种基于OpenCL的Bitslicing-KLEIN并行化实现方法,利用OpenCL结合管道延迟隐藏来实现Bitslicing-
KELIN的并行化。
[0006] 为了达到上述目的,本发明采用以下技术方案:
[0007] 本发明一种基于OpenCL的Bitslicing-KLEIN的快速实现方法,包括下述步骤:
[0008] S1、对需要加/解密的数据进行重排,输入数据经过重排后,排列成适合Bitslicing-KLEIN中的SubNibbles和MixNibbles操作的形式;
[0009] S2、对重排后的数据执行bitslicing化KLEIN的轮函数,执行次数由密钥长度决定;
[0010] S3、将处理好的数据还原为正确的明密文格式,轮函数执行过后,对数据进行重排,使其还原成明文或者密文的格式,再将其保存到输出数据所在的存储区域中;
[0011] S4、将上述步骤S1-S3写成供OpenCL主程序调用的内核函数,函数的参数包括加/解密用的明/密文数据的地址、轮数、加/解密用的密钥数据的地址以及存放加/解密结果的
地址;
[0012] S5、根据最优化策略确定分大小及调度策略,编写OpenCL主程序,主程序包括设置分块大小,获取可用平台,获取设备列表并选中目标设备作为运行设备,创建上下文环
境,创建内核程序对象并进行编译、创建传输队列和内核执行队列,创建内存空间,设置参
数映射,拷贝数据到设备,根据管道延迟隐藏技术安排传输队列和内核队列的执行顺序,从
目标设备中拷贝执行结果,释放资源;
[0013] S6、运行主程序,输出加/解密结果,释放资源,主程序编写好后,直接运行,目标设备会按照主程序的设置及调度策略合理地循环执行拷贝数据到目标设备,让各个线程运行
内核程序,将运行结果从目标设备拷贝回主机三个操作,等所有数据处理结果都完成之后,
将结果输出到指定位置并释放资源。
[0014] 作为优选的技术方案,步骤S1中,对输入数据进行重排的具体方法是:
[0015] 为了发挥bitslicing技术的并行特性,需要将明文或者密文从s0s1s2s3s4s5s6s7s8s9s10s11s12s13s14s15重排为s0s1s8s9s2s3s10s11s4s5s12s13s6s7s14s15,其中si为4比特,对应KLEIN中的第i个S盒的输入,重排时需要同时按照MixNibbles时的输入作为划分,将第i个比特位
分配到对应的变量上,MixNibbles将相邻的两个S盒的输入划分为一组,重排时需要将
MixNibbles输入的所有第0比特分配到变量v0中,则v0=s1|0s9|0s3|0s11|0s5|0s13|0s7|0s15|0,v1为所有输入的第1比特,v2,v3以此类推,其中si|0为第i个S盒输入的最低位,类似地将
MixNibbles所有输入的第4比特分配到变量v4中,则v4=s0|0s8|0s2|0s10|0s4|0s12|0s6|0s14|0,v5为所有输入的第5比特,v6,v7以此类推。
[0016] 作为优选的技术方案,步骤S2中,需要处理的数据经过重排后,直接执行Bitslicing-KLEIN的轮函数,包括轮密钥加、块替换、块旋转以及块混合四个步骤;
[0017] 所述轮密钥加,是在待加密数据和密钥重排好之后,直接进行异或运算;
[0018] 所述块替换,直接使用Bitslicing-KLEIN的块替换中的布尔表达式,不同之处在于,由于数据已经重排好,不需要逐比特提取出来再进行布尔表达式的运算;
[0019] 所述块旋转,是在KLEIN中,加密的时候是左移两个字节,所以只需将变量的值进行交换即可;
[0020] 所述块混合,直接使用Bitslicing-KLEIN的块混合中的布尔表达式进行运算,不同之处在于,不需要逐比特提取出来再执行运算。
[0021] 作为优选的技术方案,步骤S4中,所述加/解密用的明/密文数据地址、加/解密用的密钥数据地址以及加/解密结果的地址均为无符号字符向量全局指针,轮数的类型为整
型,编写内核函数的时候,可以用C语言的内置类型,并推荐使用OpenCL提供的内置类型。
[0022] 作为优选的技术方案,所述内核函数的内容包括获取当前工作节点的位置,获取对应的处理数据,对加/解密用的明/密文数据进行重排,对加/解密用的密钥数据进行重
排,根据轮数循环执行轮密钥加、轮密钥生成、块替换、块旋转、块混合,最后再执行一次轮
密钥加,然后对数据进行重排还原成恰当的排列,最后将处理好的数据存进保存加/解密结
果的数组中。
[0023] 作为优选的技术方案,步骤S5中,所述根据最优化策略确定分块大小及调度策略,编写OpenCL主程序具体为:
[0024] 首先要设置global_work_size以及local_work_size两个参数的值;
[0025] 然后要配置OpenCL的运行环境,具体如下:
[0026] 先使用clGetPlatformIDs和clGetPlatformInfo两个命令来获取可用的计算平台,并选择AMD环境作为计算平台;然后使用clCreateContextFromType命令生成上下文环
境,命令的第二个参数设为CL_DEVICE_TYPE_GPU表示使用GPU作为计算设备;再使用
clGetContextInfo命令获取计算设备的信息,检查所选设备是否正确;接着使用
clCreateProgramWithSource命令创建程序对象,使用clBuildProgram编译程序对象,确保
程序对象能被正常执行;然后使用clCreateKernel命令创建内核对象;最后使用
clCreateCommandQueue命令创建执行内核函数以及执行数据传输的两个命令队列;使用
clCreateBuffer命令为输入数据、输出数据及轮密钥数据创建内存空间;然后使用
clSetKernelArg命令为内核程序设置相应的参数,需要设置的参数个数与内核函数的参数
个数一致;
[0027] 在核心部分,需要根据管道延迟隐藏技术的调度策略,分多次使用clEnqueueWriteBuffer命令将待加密的明文以及要使用到的密钥复制到显存中,然后使用
clEnqueueNDRangeKernel命令将内核程序放入命令队列中执行然后使用
clEnqueueReadBuffer命令从显存中读取加密结果;
[0028] 最后的部分,使用clRelease、free命令释放资源。
[0029] 作为优选的技术方案,在IDE中打开OpenCL主程序,或者使用命令行界面,直接进行编译运行,根据OpenCL主程序,加密结果会输出到屏幕或者指定的文件当中。
[0030] 本发明与现有技术相比,具有如下优点和有益效果:
[0031] 1、本发明在原有的Bitslicing-KLEIN的基础上引入了重排的机制,使得bitslicing技术的并行特性能充分发挥出来,同时免去了原有算法中SubNibbles和
MixNibbles中比特提取的过程,从而使算法具有了更好的并行特性。
[0032] 2.本发明综合考虑了并行粒度,内存分配策略并在管道延迟隐藏技术指导下进行了合理的分块,选择了合理的调度策略,可以保证本发明中的Bitslicing-KLEIN在使用GPU
进行并行实现时的性能。
附图说明
[0033] 图1是本发明的KLEIN加/解密流程图
[0034] 图2本发明基于OpenCL的Bitslicing-KLEIN的快速实现方法的流程图。

具体实施方式

[0035] 下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。
[0036] 实施例
[0037] 本实施例基于OpenCL给出了一种Bitslicing-KLEIN的并行化加密的实现方法,使用的是KLEIN-64。如图1、图2所示,根据该实施例的步骤,稍加修改也可用于KLEIN-80/96以
及并行化解密或并行化加解密的实现。
[0038] 1、对需要加/解密的数据进行重排。
[0039] 本实施列中,待加密的数据大小为64比特,在内存中使用8个8比特的变量存放,在OpenCL中使用8比特的向量(含8个元素)来表示。将KLEIN用到的16个S盒的输入标记为s0,
s1,……,s15,其中si为4比特,si|j为第i个s盒输入中的第j比特,待加密的数据以矩阵的方
式来表示,则重排的操作可以表示为:
[0040]
[0041] 设存储输入数据的8个变量为v0,v1,……,v7,则它们重排后为:
[0042] v0=s1|3‖s9|3‖s3|3‖s11|3‖s5|3‖s13|3‖s7|3‖s15|3
[0043] v1=s1|2‖s9|2‖s3|2‖s11|2‖s5|2‖s13|2‖s7|2‖s15|2
[0044] v2=s1|1‖s9|1‖s3|1‖s11|1‖s5|1‖s13|1‖s7|1‖s15|1
[0045] v3=s1|0‖s9|0‖s3|0‖s11|0‖s5|0‖s13|0‖s7|0‖s15|0
[0046] v4=s0|3‖s8|3‖s2|3‖s10|3‖s4|3‖s12|3‖s6|3‖s14|3
[0047] v5=s0|2‖s8|2‖s2|2‖s10|2‖s4|2‖s12|2‖s6|2‖s14|2
[0048] v6=s0|1‖s8|1‖s2|1‖s10|1‖s4|1‖s12|1‖s6|1‖s14|1
[0049] v7=s0|0‖s8|0‖s2|0‖s10|0‖s4|0‖s12|0‖s6|0‖s14|0
[0050] 为了进一步提高重排的效率,可以使用矩阵快速转置算法然后再分别对各个变量进行调整。
[0051] 2、对重排后的数据执行bitslicing化KLEIN的轮函数,执行次数由密钥长度决定。
[0052] 本实施例中,因为输入数据时64比特,按照KLEIN的设计轮数为12轮。由于重排后的数据不能直接执行KLEIN轮函数的操作,所以需要对KLEIN轮函数中的四个操作以及密钥
生成的操作进行修改。以下对各个操作进行介绍:
[0053] 轮密钥加:由于待加密数据和密钥已经重排好,可以直接进行异或运算。
[0054] 块替换:直接使用Bitslicing-KLEIN的块替换中的布尔表达式,不同之处在于,由于已经重排好了,不需要逐比特提取出来再进行布尔表达式的运算,在本实施例中可以直
接进行布尔表达式运算。
[0055] 块旋转:在KLEIN中,加密的时候是左移两个字节,所以只需将变量的值交换一下就可以了。而经过重排之后,需要对各个变量进行旋转的操作,以v0为例:旋转前为v0=s1|3‖
s9|3‖s3|3‖s11|3‖s5|3‖s13|3‖s7|3‖s15|3,旋转后为v0=s5|3‖s13|3‖s7|3‖s15|3‖s9|3‖s1|3‖s11|3‖s3|3。
[0056] 块混合:直接使用Bitslicing-KLEIN的块混合中的布尔表达式进行运算,不同之处在于,不需要逐比特提取出来再执行运算。
[0057] 轮密钥生成算法的修改办法类似,此处不予赘述。
[0058] 3、将处理好的数据还原为正确的明密文格式。
[0059] 此处相当于步骤1重排的逆运算,还原的操作可表示为:
[0060]
[0061] 4、将上述步骤写成供OpenCL主程序调用的内核函数。
[0062] 本实施例中,内核函数参数有四个,分别是存放明文数据的数组的地址(输入数据)、存放密钥数据的数组的地址,加密轮数以及存放加密结果的数组的地址(输出数据)。
[0063] 为了确保工作节点能访问到正确的数据,这里使用整型变量idx来标识工作节点在工作空间中的位置。由于明文分组大小和密钥的大小一致,所以用同一个变量就能访问
对应的明文分组和密钥。
[0064] get_global_id(x)函数可以获取当前执行的工作节点在工作空间中指定维度x上的索引位置。那么,
[0065] int idx=get_global_id(0);
[0066] 有了该索引就可以直接获取到当前工作节点需要处理的明文及使用的密钥。内核函数的伪代码如下:
[0067]
[0068]
[0069] 5、根据最优化策略确定分块大小及调度策略,编写OpenCL主程序。
[0070] 首先要设置global_work_size以及local_work_size两个参数的值:
[0071] 本实施例中,明文分组数量为1310720(10MB),轮密钥分组大小为1,GPU支持的一个维度上工作节点的数量上限为1024,根据管道延迟隐藏模型,单个线程处理的分块为2MB
时最合适,因而需要分5次执行,每次需要处理的分组个数为1310720/5,所以有:
[0072] size_t global_work_size[2]={1310720/5,1}
[0073] size_t local_work_size[2]={1024,1}
[0074] 也就是,执行该内核程序的工作空间为1维,1维中有1310720/5工作节点,其中每1024个工作节点组成一个工作组。
[0075] 然后要配置OpenCL的运行环境:
[0076] 先使用clGetPlatformIDs和clGetPlatformInfo两个命令来获取可用的计算平台,并选择AMD环境作为计算平台;然后使用clCreateContextFromType命令生成上下文环
境,命令的第二个参数设为CL_DEVICE_TYPE_GPU表示使用GPU作为计算设备;再使用
clGetContextInfo命令获取计算设备的信息,检查所选设备是否正确;接着使用
clCreateProgramWithSource命令创建程序对象,使用clBuildProgram编译程序对象,确保
程序对象能被正常执行;然后使用clCreateKernel命令创建内核对象;最后使用
clCreateCommandQueue命令创建执行内核函数以及执行数据传输的两个命令队列。使用
clCreateBuffer命令为输入数据、输出数据及轮密钥数据创建内存空间;然后使用
clSetKernelArg命令为内核程序设置相应的参数,需要设置的参数个数与内核函数的参数
个数一致。
[0077] 在核心部分,需要根据管道延迟隐藏技术的调度策略,分多次使用clEnqueueWriteBuffer命令将待加密的明文以及要使用到的密钥复制到显存中,然后使用
clEnqueueNDRangeKernel命令将内核程序放入命令队列中执行然后使用
clEnqueueReadBuffer命令从显存中读取加密结果。在本实施例中,因为内核函数的执行时
间比两次传输数据需要的时间长。所以按照最优的调度策略,应该是等第一次输传输完毕
后,上进行第一次的内核执行,同时进行第二次的数据传输。等第一次内核执行完毕后,
可以马上执行数据的返回,此时第二次用到的数据也已经传输完毕了,所以可以马上进行
第二次的内核执行。以此类推。若使用的环境与本实施例不同,则应该先自行测出目标设备
的传输时间及内核执行时间,从而根据管道延迟技术的最优调度策略来对传输和内核执行
进行合理安排。
[0078] 最后的部分,使用clRelease、free等命令释放资源。
[0079] 6、运行主程序,输出加/解密结果,释放资源。
[0080] 在IDE中打开OpenCL主程序,或者使用命令行界面,直接对其进行编译运行即可。根据OpenCL主程序,加密结果会输出到屏幕或者指定的文件当中。
[0081] 实验结果
[0082] 本实例运行环境为:CPU型号为Core i5 3210,内存8G,操作系统为Win10.1(64位),GPU型号为Nvidia GT640M,显存2G,所使用的SDK版本为CUDA Toolkit 7.5(OpenCL 
1.2),使用的集成开发环境为Visual Studio 2013。
[0083] 本实例在输入数据大小为10MB时,与原版KLEIN及原版KLEIN经过bitslicing化后的版本BS-KLEIN的性能比较:
[0084]
[0085] 上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,
均应为等效的置换方式,都包含在本发明的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈